"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"] ?? []); // V101: Unified catalog total - includes business agents $catalog = @json_decode(@file_get_contents("http://127.0.0.1/api/agents-catalog-api.php"), true); $catalog_total = $catalog["total"] ?? 0; $catalog_categories = $catalog["categories"] ?? []; 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, "catalog_total" => $catalog_total, "catalog_categories" => $catalog_categories, "hcps" => "141K", "grand_total" => count($realtime) + array_sum(array_column($paperclip_roles, "count")) + $tool_count ] ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);