Files
html/api/orchestrator-agents.php
2026-04-16 05:31:32 +02:00

69 lines
4.1 KiB
PHP

<?php
header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
// Agents temps réel (SSE orchestrator)
$realtime = [
["id"=>"infra","name"=>"Infra Agent","desc"=>"Load, disk, memory, FPM","icon"=>"🖥️","type"=>"realtime"],
["id"=>"sovereign","name"=>"Sovereign Agent","desc"=>"12 IA providers cascade","icon"=>"🧠","type"=>"realtime"],
["id"=>"nonreg","name"=>"NonReg Agent","desc"=>"152/152 quality tests","icon"=>"🧪","type"=>"realtime"],
["id"=>"ethica","name"=>"Ethica Agent","desc"=>"131K HCPs DZ/MA/TN","icon"=>"🏥","type"=>"realtime"],
["id"=>"git","name"=>"Git Agent","desc"=>"Commit, push, status","icon"=>"📦","type"=>"realtime"],
["id"=>"vault","name"=>"Vault Agent","desc"=>"Credentials, GOLD, wiki","icon"=>"🔐","type"=>"realtime"],
["id"=>"docker","name"=>"Docker Agent","desc"=>"Containers management","icon"=>"🐳","type"=>"realtime"],
["id"=>"scraper","name"=>"Scraper Agent","desc"=>"DabaDoc, CNAM, CROMC","icon"=>"🕷️","type"=>"realtime"],
["id"=>"crons","name"=>"Crons Agent","desc"=>"Scheduled tasks","icon"=>"","type"=>"realtime"],
["id"=>"s95","name"=>"S95 Agent","desc"=>"WEVADS server via SSH","icon"=>"🖧","type"=>"realtime"],
["id"=>"security","name"=>"Security Agent","desc"=>"CrowdSec, SSL, Nuclei","icon"=>"🛡️","type"=>"realtime"],
["id"=>"paperclip","name"=>"Paperclip Agent","desc"=>"890 agents, 2484 skills","icon"=>"📋","type"=>"realtime"],
["id"=>"mirofish","name"=>"MiroFish Agent","desc"=>"CEO workflow engine","icon"=>"🐟","type"=>"realtime"],
["id"=>"registry","name"=>"Registry Agent","desc"=>"382 tools resolver","icon"=>"🔧","type"=>"realtime"],
["id"=>"pages","name"=>"Pages Agent","desc"=>"174 HTML monitoring","icon"=>"📄","type"=>"realtime"],
["id"=>"apps","name"=>"Apps Agent","desc"=>"12 pages HTTP live test","icon"=>"🌐","type"=>"realtime"],
["id"=>"ai_models","name"=>"AI Models Agent","desc"=>"Cascade providers health","icon"=>"","type"=>"realtime"],
["id"=>"qdrant_kb","name"=>"Qdrant KB Agent","desc"=>"5 vector collections","icon"=>"🧬","type"=>"realtime"],
["id"=>"l99","name"=>"L99 Agent","desc"=>"74 layers 957 tests 100%","icon"=>"📊","type"=>"realtime"],
["id"=>"deerflow","name"=>"DeerFlow Agent","desc"=>"14 research skills","icon"=>"🦌","type"=>"realtime"],
["id"=>"subdomains","name"=>"Subdomains Agent","desc"=>"All nginx domains","icon"=>"🌍","type"=>"realtime"],
["id"=>"crons_root","name"=>"Crons Root Agent","desc"=>"54 root cron tasks","icon"=>"⚙️","type"=>"realtime"],
["id"=>"agent_chief","name"=>"Agent Chief","desc"=>"693 agents by role","icon"=>"👑","type"=>"realtime"],
["id"=>"blade_agent","name"=>"Blade Agent","desc"=>"34 tasks, Chrome/Selenium","icon"=>"🖥️","type"=>"realtime"],
];
// Paperclip agents par rôle (depuis DB)
$paperclip_roles = [];
$pg = @pg_connect("host=127.0.0.1 port=5432 dbname=paperclip user=admin password=admin123");
if ($pg) {
$r = pg_query($pg, "SELECT role, COUNT(DISTINCT name) as cnt, array_to_string(array_agg(DISTINCT name ORDER BY name), ', ') as names FROM agents GROUP BY role ORDER BY cnt DESC");
while ($row = pg_fetch_assoc($r)) {
$paperclip_roles[] = [
"id" => "pc_" . $row["role"],
"name" => ucfirst($row["role"]) . " Team",
"desc" => $row["cnt"] . " agents: " . substr($row["names"], 0, 60),
"icon" => "👥",
"type" => "paperclip",
"count" => (int)$row["cnt"],
"role" => $row["role"]
];
}
pg_close($pg);
}
// Registry tools par catégorie
$reg = @json_decode(@file_get_contents("/opt/wevia-brain/tool-registry-v2.json"), true);
$tool_count = count($reg["tools"] ?? []);
echo json_encode([
"ok" => true,
"realtime_agents" => $realtime,
"paperclip_teams" => $paperclip_roles,
"totals" => [
"realtime" => count($realtime),
"paperclip_agents" => array_sum(array_column($paperclip_roles, "count")),
"paperclip_teams" => count($paperclip_roles),
"registry_tools" => $tool_count,
"hcps" => "141K",
"grand_total" => count($realtime) + array_sum(array_column($paperclip_roles, "count")) + $tool_count
]
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);