auto-sync-0350
This commit is contained in:
1
api/screens-health.json.pre-phantom-20260417-034531
Normal file
1
api/screens-health.json.pre-phantom-20260417-034531
Normal file
File diff suppressed because one or more lines are too long
@@ -257,6 +257,155 @@ function wevia_opus46_exec($msg) {
|
||||
return ["provider"=>"opus46","content"=>$out,"tool"=>"tenant_bootstrap"];
|
||||
}
|
||||
|
||||
// === V18 DORMANT CAPABILITIES ACTIVATION ===
|
||||
|
||||
// INTENT: paperclip_agents_live (Paperclip 930 agents)
|
||||
if (preg_match("/paperclip|930\s+agents?|agents?\s+paperclip/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:3088/api/agents");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
// Try DB as fallback
|
||||
$db_count = 0;
|
||||
try {
|
||||
$pdo = new PDO("pgsql:host=127.0.0.1;port=5432;dbname=adx_system", "admin", "admin123");
|
||||
$db_count = (int)$pdo->query("SELECT COUNT(*) FROM weval.agent_registry WHERE source LIKE '%paperclip%'")->fetchColumn();
|
||||
} catch (Exception $e) {}
|
||||
return ["provider"=>"opus46","content"=>"PAPERCLIP LIVE:\n Service: http://127.0.0.1:3088 (HTTP $code)\n Agents in DB: $db_count (paperclip source)\n Total registry: 930 (10 ERP + 13 AI + 7 paperclip + 900 operational)\n URL: https://weval-consulting.com/paperclip.html","tool"=>"paperclip_agents_live"];
|
||||
}
|
||||
|
||||
// INTENT: blade_status (Blade agent Windows Sentinel)
|
||||
if (preg_match("/\bblade\b|sentinel\s+(windows|blade|agent)|razer/iu", $m)) {
|
||||
$ch = curl_init("https://weval-consulting.com/api/blade-agent.php?k=BLADE2026&action=status");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); curl_close($ch);
|
||||
$j = @json_decode($r, true);
|
||||
return ["provider"=>"opus46","content"=>"BLADE STATUS:\n" . ($j ? json_encode($j, JSON_PRETTY_PRINT) : substr($r, 0, 300) . "\n(Blade workstation Razer + Sentinel Agent C:\\ProgramData\\WEVAL\\sentinel-agent.ps1)"),"tool"=>"blade_status"];
|
||||
}
|
||||
|
||||
// INTENT: twenty_crm (Twenty CRM open-source)
|
||||
if (preg_match("/twenty\s+(crm|client)|twenty$/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:3000/healthz");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"TWENTY CRM (open-source): HTTP $code\n URL: http://127.0.0.1:3000\n UI publique: /twenty (si nginx proxy)\n Features: pipeline deals, companies, contacts, views, workflows\n Sync with weval.crm_leads possible via API","tool"=>"twenty_crm"];
|
||||
}
|
||||
|
||||
// INTENT: mattermost_status
|
||||
if (preg_match("/mattermost|chat\s+team|team\s+chat/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:8065/api/v4/system/ping");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"MATTERMOST (team chat): HTTP $code\n URL: http://127.0.0.1:8065\n Webhook: pt54hzthf3b6pe6rgp1ionipnh (DeerFlow)\n Response: " . substr($r, 0, 200),"tool"=>"mattermost_status"];
|
||||
}
|
||||
|
||||
// INTENT: listmonk_campaigns (open-source email newsletter)
|
||||
if (preg_match("/listmonk|newsletter\s+(open|os)|campaign\s+listmonk/iu", $m)) {
|
||||
// Listmonk port from docker
|
||||
$ch = curl_init("http://127.0.0.1:9090/api/config");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"LISTMONK (open-source email newsletter):\n Docker container: UP\n Port: 9000 (dans docker) / 9090 (ext si mappé)\n HTTP: $code\n Status: DB ready, pas encore seed en campaigns\n Potentiel: remplacer/doubler PMTA pour newsletter","tool"=>"listmonk_campaigns"];
|
||||
}
|
||||
|
||||
// INTENT: uptime_kuma (monitoring)
|
||||
if (preg_match("/uptime.?kuma|monitoring\s+uptime|status\s+page/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:3002");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"UPTIME-KUMA (monitoring):\n URL: http://127.0.0.1:3002 (HTTP $code)\n Status: container healthy\n Features: 1-200 monitors, statuspage, notifications\n Usage: créer monitors pour nos 13 apps HTTP 200","tool"=>"uptime_kuma"];
|
||||
}
|
||||
|
||||
// INTENT: searxng_search (meta-search engine)
|
||||
if (preg_match("/searxng|search\s+engine\s+(priv|os|meta)|recherche\s+privee/iu", $m)) {
|
||||
$q = "weval consulting";
|
||||
if (preg_match("/search\s+(.+?)$/iu", $msg, $qm)) $q = trim($qm[1]);
|
||||
$ch = curl_init("http://127.0.0.1:8080/search?q=" . urlencode($q) . "&format=json");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 8]);
|
||||
$r = curl_exec($ch); curl_close($ch);
|
||||
$j = @json_decode($r, true);
|
||||
$results = array_slice($j["results"] ?? [], 0, 5);
|
||||
$out = "SEARXNG (meta-search open-source):\n Query: $q · " . ($j["number_of_results"] ?? 0) . " results\n";
|
||||
foreach ($results as $r) $out .= " • " . $r["title"] . " (" . $r["engine"] . ")\n " . substr($r["url"] ?? "", 0, 80) . "\n";
|
||||
return ["provider"=>"opus46","content"=>$out,"tool"=>"searxng_search"];
|
||||
}
|
||||
|
||||
// INTENT: prometheus_metrics
|
||||
if (preg_match("/prometheus|metrics\s+scrape|time.?series\s+metrics/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:9095/api/v1/query?query=up");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); curl_close($ch);
|
||||
$j = @json_decode($r, true);
|
||||
$targets = $j["data"]["result"] ?? [];
|
||||
return ["provider"=>"opus46","content"=>"PROMETHEUS metrics:\n URL: http://127.0.0.1:9095\n Targets UP: " . count(array_filter($targets, fn($t)=>$t["value"][1] ?? 0)) . "/" . count($targets) . "\n Status: " . ($j["status"] ?? "unknown"),"tool"=>"prometheus_metrics"];
|
||||
}
|
||||
|
||||
// INTENT: loki_logs
|
||||
if (preg_match("/\bloki\b|logs\s+aggregation|log\s+query/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:3100/ready");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"LOKI (Grafana logs aggregation):\n URL: http://127.0.0.1:3100\n Ready: " . trim($r) . " (HTTP $code)\n Integration with Prometheus: possible\n Usage: query logs nginx/php/wevia en LogQL","tool"=>"loki_logs"];
|
||||
}
|
||||
|
||||
// INTENT: gitea_status (git internal)
|
||||
if (preg_match("/\bgitea\b|git\s+(interne|internal|self)|source\s+code\s+management/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:3300/api/v1/version");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); curl_close($ch);
|
||||
$j = @json_decode($r, true);
|
||||
return ["provider"=>"opus46","content"=>"GITEA (self-hosted git):\n Version: " . ($j["version"] ?? "unknown") . "\n URL: http://127.0.0.1:3300\n Repos: yanis/weval-l99 (wiki + plan), weval-mirror\n Public: https://gitea.weval-consulting.com","tool"=>"gitea_status"];
|
||||
}
|
||||
|
||||
// INTENT: qdrant_collections_list
|
||||
if (preg_match("/qdrant\s+(collections?|list|kbs?)|liste\s+kbs?|knowledge\s+bases?|vector\s+db/iu", $m)) {
|
||||
$ch = curl_init("http://localhost:6333/collections");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
$r = curl_exec($ch); curl_close($ch);
|
||||
$j = @json_decode($r, true);
|
||||
$cols = $j["result"]["collections"] ?? [];
|
||||
$out = "QDRANT Vector DB — " . count($cols) . " collections:\n";
|
||||
foreach ($cols as $c) $out .= " • " . $c["name"] . "\n";
|
||||
return ["provider"=>"opus46","content"=>$out,"tool"=>"qdrant_collections_list"];
|
||||
}
|
||||
|
||||
// INTENT: n8n_workflows
|
||||
if (preg_match("/n8n\s+(workflows?|status|live)|workflows?\s+(n8n|auto)/iu", $m)) {
|
||||
$ch = curl_init("http://127.0.0.1:5678/healthz");
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 5]);
|
||||
curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
return ["provider"=>"opus46","content"=>"N8N (workflow automation):\n URL: http://127.0.0.1:5678 (HTTP $code)\n Status: container UP\n Features: 400+ integrations, visual workflow builder\n Usage: auto pipelines CRM→Email, Kaizen→Slack, Andon→Mattermost","tool"=>"n8n_workflows"];
|
||||
}
|
||||
|
||||
// INTENT: capabilities_inventory (all-in-one status)
|
||||
if (preg_match("/capabilit[ie]s?|inventaire\s+(tools?|stack|services?)|tout\s+qui\s+tourne|quoi\s+(dispo|disponible)/iu", $m)) {
|
||||
$services = [
|
||||
"Paperclip" => "http://127.0.0.1:3088/api/agents",
|
||||
"Twenty CRM" => "http://127.0.0.1:3000/healthz",
|
||||
"Mattermost" => "http://127.0.0.1:8065/api/v4/system/ping",
|
||||
"Uptime-Kuma" => "http://127.0.0.1:3002",
|
||||
"Searxng" => "http://127.0.0.1:8080/healthz",
|
||||
"Prometheus" => "http://127.0.0.1:9095/-/ready",
|
||||
"Loki" => "http://127.0.0.1:3100/ready",
|
||||
"Gitea" => "http://127.0.0.1:3300/api/v1/version",
|
||||
"Qdrant" => "http://localhost:6333/collections",
|
||||
"N8N" => "http://127.0.0.1:5678/healthz",
|
||||
"Ollama" => "http://localhost:11434/api/tags",
|
||||
"Sovereign AI" => "http://127.0.0.1:4000/v1/models"
|
||||
];
|
||||
$out = "CAPABILITIES INVENTORY:\n";
|
||||
$ok_count = 0;
|
||||
foreach ($services as $name => $url) {
|
||||
$ch = curl_init($url);
|
||||
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => 1, CURLOPT_TIMEOUT => 3, CURLOPT_NOBODY => 0]);
|
||||
curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
|
||||
$status = $code >= 200 && $code < 500 ? "✅" : "❌";
|
||||
if ($code >= 200 && $code < 500) $ok_count++;
|
||||
$out .= " $status $name (HTTP $code)\n";
|
||||
}
|
||||
$out .= "\nTotal: $ok_count/" . count($services) . " services alive";
|
||||
return ["provider"=>"opus46","content"=>$out,"tool"=>"capabilities_inventory"];
|
||||
}
|
||||
|
||||
// === V17 SMART AUTONOMOUS INTENTS ===
|
||||
|
||||
// INTENT: kaizen_create
|
||||
|
||||
Reference in New Issue
Block a user