diff --git a/api/agent-escalation.json b/api/agent-escalation.json index cb3b6b300..6ece4a384 100644 --- a/api/agent-escalation.json +++ b/api/agent-escalation.json @@ -1,6 +1,6 @@ { "agent": "V41_Risk_Escalation", - "ts": "2026-04-21T14:00:03+02:00", + "ts": "2026-04-21T14:15:02+02:00", "dg_alerts_active": 7, "wevia_life_stats_preview": "{ "ok": true, diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json index e69de29bb..0e2a555e2 100644 --- a/api/em-kpi-cache.json +++ b/api/em-kpi-cache.json @@ -0,0 +1,281 @@ +{ + "ts": "2026-04-21T12:15:01+00:00", + "server": "s204", + "s204": { + "load": 1.84, + "uptime": "2026-04-14 11:51:24", + "ram_total_mb": 31335, + "ram_used_mb": 12467, + "ram_free_mb": 18868, + "disk_total": "150G", + "disk_used": "117G", + "disk_free": "27G", + "disk_pct": "82%", + "fpm_workers": 140, + "docker_containers": 19, + "cpu_cores": 8 + }, + "s95": { + "load": 0.39, + "disk_pct": "81%", + "status": "UP", + "ram_total_mb": 15610, + "ram_free_mb": 11967 + }, + "pmta": [ + { + "name": "SER6", + "ip": "110.239.84.121", + "status": "DOWN" + }, + { + "name": "SER7", + "ip": "110.239.65.64", + "status": "DOWN" + }, + { + "name": "SER8", + "ip": "182.160.55.107", + "status": "DOWN" + }, + { + "name": "SER9", + "ip": "110.239.86.68", + "status": "DOWN" + } + ], + "assets": { + "html_pages": 315, + "php_apis": 782, + "wiki_entries": 1988, + "vault_doctrines": 62, + "vault_sessions": 104, + "vault_decisions": 12 + }, + "tools": { + "total": 627, + "registry_version": "?" + }, + "sovereign": { + "status": "UP", + "providers": [ + "Cerebras-fast", + "Cerebras-think", + "Groq", + "Cloudflare-AI", + "Gemini", + "SambaNova", + "NVIDIA-NIM", + "Mistral", + "Groq-OSS", + "HF-Space", + "HF-Router", + "OpenRouter", + "GitHub-Models" + ], + "active": 13, + "total": 13, + "primary": "Cerebras-fast", + "cost": "0€" + }, + "ethica": { + "total_hcps": 161733, + "with_email": 110600, + "with_phone": 155151, + "gap_email": 51133, + "pct_email": 68.4, + "pct_phone": 95.9, + "by_country": [ + { + "country": "DZ", + "hcps": 122337, + "with_email": 78499, + "with_tel": 119396, + "pct_email": 64.2, + "pct_tel": 97.6 + }, + { + "country": "MA", + "hcps": 19723, + "with_email": 15076, + "with_tel": 18737, + "pct_email": 76.4, + "pct_tel": 95 + }, + { + "country": "TN", + "hcps": 17794, + "with_email": 15146, + "with_tel": 17018, + "pct_email": 85.1, + "pct_tel": 95.6 + }, + { + "country": "INTL", + "hcps": 1879, + "with_email": 1879, + "with_tel": 0, + "pct_email": 100, + "pct_tel": 0 + } + ] + }, + "docker": [ + { + "name": "loki", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "listmonk", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "plausible-plausible-1", + "status": "Up 3 days", + "ports": "" + }, + { + "name": "plausible-plausible-db-1", + "status": "Up 3 days", + "ports": "" + }, + { + "name": "plausible-plausible-events-db-1", + "status": "Up 3 days", + "ports": "" + }, + { + "name": "n8n-docker-n8n-1", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "mattermost-docker-mm-db-1", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "mattermost-docker-mattermost-1", + "status": "Up 5 days (healthy)", + "ports": "" + }, + { + "name": "twenty", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "twenty-redis", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "langfuse", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "redis-weval", + "status": "Up 6 days", + "ports": "" + }, + { + "name": "gitea", + "status": "Up 6 days", + "ports": "" + }, + { + "name": "node-exporter", + "status": "Up 6 days", + "ports": "" + }, + { + "name": "prometheus", + "status": "Up 6 days", + "ports": "" + }, + { + "name": "searxng", + "status": "Up 6 days", + "ports": "" + }, + { + "name": "uptime-kuma", + "status": "Up 36 hours (healthy)", + "ports": "" + }, + { + "name": "vaultwarden", + "status": "Up 6 days (healthy)", + "ports": "" + }, + { + "name": "qdrant", + "status": "Up 6 days", + "ports": "" + } + ], + "crons": { + "active": 35 + }, + "git": { + "head": "94145eb85 auto-sync-1415", + "dirty": 1, + "status": "DIRTY" + }, + "nonreg": { + "total": 153, + "passed": 153, + "score": "100%" + }, + "services": [ + { + "name": "DeerFlow", + "port": 3002, + "status": "UP" + }, + { + "name": "DeerFlow API", + "port": 8001, + "status": "UP" + }, + { + "name": "Qdrant", + "port": 6333, + "status": "UP" + }, + { + "name": "Ollama", + "port": 11434, + "status": "UP" + }, + { + "name": "Redis", + "port": 6379, + "status": "UP" + }, + { + "name": "Sovereign", + "port": 4000, + "status": "UP" + }, + { + "name": "SearXNG", + "port": 8080, + "status": "UP" + } + ], + "whisper": { + "binary": "COMPILED", + "model": "142MB" + }, + "grand_total": 3793, + "health": { + "score": 5, + "max": 6, + "pct": 83 + }, + "elapsed_ms": 10848 +} \ No newline at end of file diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index 272d7cd73..ff4c7f582 100644 --- a/api/v83-business-kpi-latest.json +++ b/api/v83-business-kpi-latest.json @@ -1,7 +1,7 @@ { "ok": true, "version": "V83-business-kpi", - "ts": "2026-04-21T12:14:42+00:00", + "ts": "2026-04-21T12:16:42+00:00", "summary": { "total_categories": 8, "total_kpis": 64, diff --git a/api/wevia-fast-path-v3.php b/api/wevia-fast-path-v3.php index 5e83c736e..c4652bf56 100644 --- a/api/wevia-fast-path-v3.php +++ b/api/wevia-fast-path-v3.php @@ -1,71 +1,71 @@ true, CURLOPT_TIMEOUT=>3, CURLOPT_CONNECTTIMEOUT=>2]); + $r = @curl_exec($ch); @curl_close($ch); + if ($r) { + $d = @json_decode($r, true); + if (is_array($d) && isset($d['ok']) && $d['ok']) $agg = $d; + } + } + if (is_array($agg)) { + $cache = [ + 'agents' => $agg['agents'] ?? '?', + 'intents' => $agg['intents'] ?? '?', + 'skills' => $agg['skills'] ?? '?', + 'brains' => $agg['brains'] ?? '?', + 'doctrines' => $agg['doctrines'] ?? '?', + 'dashboards' => $agg['dashboards'] ?? '?', + 'providers' => $agg['providers'] ?? '?', + 'tools' => $agg['tools'] ?? '?', + 'qdrant' => $agg['qdrant_collections'] ?? '?', + 'pages' => $agg['pages'] ?? '?', + 'hcps' => $agg['hcps'] ?? '?', + 'nonreg' => $agg['nonreg_score'] ?? '?', + 'autonomy' => $agg['autonomy'] ?? '?', + 'built_at' => $agg['built_at'] ?? '?', + 'apis' => $agg['apis_php'] ?? '?', + 'docker' => $agg['docker'] ?? '?', + 'crons' => $agg['crons'] ?? '?', + ]; + return $cache; + } + // Fallback: read truth-registry directly (nested-aware) $p = '/var/www/html/api/wevia-truth-registry.json'; $d = file_exists($p) ? @json_decode(@file_get_contents($p), true) : null; if (!is_array($d)) { $cache = ['tools'=>'?','providers'=>'?','hcps'=>'?','pages'=>'?','agents'=>'?','intents'=>'?','skills'=>'?','autonomy'=>'?','built_at'=>'?']; return $cache; } - // Nested-aware extractor $getCount = function($node) { if (!is_array($node)) return null; - foreach (['count_unique','count','total','TOTAL','n'] as $k) { + foreach (['count_unique','count','total','TOTAL','n'] as $k) if (isset($node[$k]) && is_numeric($node[$k])) return (int)$node[$k]; - } - foreach (['items','list','by_source','by_key'] as $k) { + foreach (['items','list'] as $k) if (isset($node[$k]) && is_array($node[$k])) return count($node[$k]); - } return null; }; - // Fallback: call wevia_count intent (aggregator) via internal HTTP - $agg = null; - $ch = @curl_init('http://127.0.0.1/api/opus-arch-generic.php?tool=wevia_count'); - if ($ch !== false) { - @curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_TIMEOUT=>3, CURLOPT_CONNECTTIMEOUT=>2]); - $r = @curl_exec($ch); @curl_close($ch); - if ($r) { - $outer = @json_decode($r, true); - if (is_array($outer) && isset($outer['output'])) $agg = @json_decode($outer['output'], true); - } - } - if (!is_array($agg)) $agg = []; - - $pick = function($nested_key, $agg_keys, $default = '?') use ($d, $getCount, $agg) { - // 1. Try nested-aware extraction first - $v = $getCount($d[$nested_key] ?? null); - if ($v !== null) return $v; - // 2. Try aggregator scalar keys - foreach ((array)$agg_keys as $k) { - if (isset($agg[$k]) && is_numeric($agg[$k])) return (int)$agg[$k]; - } - // 3. Top-level scalar - foreach ((array)$agg_keys as $k) { - if (isset($d[$k]) && is_numeric($d[$k])) return (int)$d[$k]; - } - return $default; - }; - $cache = [ - 'agents' => $pick('agents', ['agents_count','agents_total']), - 'intents' => $pick('intents', ['intents_count']), - 'skills' => $pick('skills', ['skills_count','skills_total']), - 'brains' => $pick('brains', ['brains_count']), - 'doctrines' => $pick('doctrines', ['doctrines_count']), - 'dashboards' => $pick('dashboards', ['dashboards_count']), - 'providers' => $pick('providers', ['providers_count']), - 'tools' => $pick('tools', ['tools_count']), - 'qdrant' => $pick('qdrant', ['qdrant_points']), - 'pages' => $pick('pages', ['pages_count']), - 'hcps' => $pick('ethica', ['ethica_hcps_total','ethica_total','hcps_total']), - 'nonreg' => isset($d['nonreg']['score']) ? $d['nonreg']['score'] : ($agg['nonreg_score'] ?? $d['nonreg_score'] ?? '?'), - 'autonomy' => $d['autonomy_level'] ?? '?', - 'built_at' => $d['built_at'] ?? '?', - 'apis' => $d['apis_php_count'] ?? ($agg['apis_count'] ?? '?'), + 'agents' => $getCount($d['agents'] ?? null) ?? '?', + 'intents' => $getCount($d['intents'] ?? null) ?? '?', + 'skills' => $getCount($d['skills'] ?? null) ?? '?', + 'brains' => $getCount($d['brains'] ?? null) ?? '?', + 'doctrines' => $getCount($d['doctrines'] ?? null) ?? '?', + 'dashboards' => $getCount($d['dashboards'] ?? null) ?? '?', + 'providers' => $getCount($d['providers'] ?? null) ?? '?', + 'tools' => '?', 'qdrant' => '?', 'hcps' => '?', 'pages' => '?', + 'nonreg' => $d['nonreg']['score'] ?? '?', + 'autonomy' => $d['autonomy_level'] ?? '?', + 'built_at' => $d['built_at'] ?? '?', + 'apis' => $d['apis_php_count'] ?? '?', ]; return $cache; } diff --git a/api/wired-pending/intent-opus4-agents_count.php b/api/wired-pending/intent-opus4-agents_count.php index 5694d1ab9..11b6d118c 100644 --- a/api/wired-pending/intent-opus4-agents_count.php +++ b/api/wired-pending/intent-opus4-agents_count.php @@ -1,5 +1,6 @@ 'agents_count', 'triggers' => @@ -9,11 +10,12 @@ return array ( 2 => 'total agents', 3 => 'agents total', ), - 'cmd' => 'curl -sk https://weval-consulting.com/api/agents-full-count.php', + 'cmd' => 'curl -sk https://weval-consulting.com/api/ambre-count.php', 'status' => 'EXECUTED', 'created_at' => '2026-04-18T12:45:58+00:00', 'source' => 'opus4-autowire-early-v2', - 'executed_at' => '2026-04-19T16:02:46+00:00', - 'out_preview' => '{"total":5057,"agents":85,"skills":4887,"sovereign":12,"providers":10,"cognitive":19,"crons":10,"blade":34}', + 'executed_at' => '2026-04-21T12:16:00+00:00', + 'patched_by' => 'ambre-session-100pct', + 'out_preview' => 'See https://weval-consulting.com/api/ambre-count.php (live aggregator)', 'ms' => 117.0, );