diff --git a/tool-registry-v2.json b/tool-registry-v2.json index e839ab3..c9db9b6 100644 --- a/tool-registry-v2.json +++ b/tool-registry-v2.json @@ -1,6 +1,6 @@ { - "v": "6.0", - "count": 163, + "v": "7.1", + "count": 258, "tools": [ { "id": "reconcile", @@ -1196,6 +1196,278 @@ "id": "ruflo_agents", "kw": "ruflo.*agent|agent.*swarm|liste.*swarm", "api": "GET:/api/wevia-action-engine.php?action=exec_s204&cmd=cat+/opt/ruflo/.ruflo/agents/*.json+2>/dev/null+|+head+-20+||+echo+no+agents+yet" + }, + { + "id": "trinity_large", + "kw": "trinity|arcee|trinity.*large", + "api": "master", + "msg": "trinity large status" + }, + { + "id": "minimax", + "kw": "minimax|m2\\.5|m2\\.7", + "api": "master", + "msg": "minimax status" + }, + { + "id": "mimo", + "kw": "mimo|xiaomi.*mimo|mimo.*v2|mimo.*omni|mimo.*flash", + "api": "master", + "msg": "mimo status" + }, + { + "id": "or_trinity", + "kw": "trinity|arcee", + "api": "GET:/api/wevia-new-models.php?provider=trinity&msg=", + "msg": "" + }, + { + "id": "or_minimax_m27", + "kw": "minimax.*m27|m2\\.7", + "api": "GET:/api/wevia-new-models.php?provider=minimax-m27&msg=", + "msg": "" + }, + { + "id": "or_mimo_omni", + "kw": "mimo.*omni|omni.*mimo", + "api": "GET:/api/wevia-new-models.php?provider=mimo-omni&msg=", + "msg": "" + }, + { + "id": "maestro", + "kw": "maestro", + "api": "master", + "msg": "maestro status" + }, + { + "id": "airllm", + "kw": "airllm", + "api": "master", + "msg": "airllm status" + }, + { + "id": "kuma_manage", + "kw": "kuma|uptime.*monitor|monitoring.*status|pause.*monitor|resume.*monitor", + "api": "GET:/api/kuma-status.php" + }, + { + "id": "visual_test", + "kw": "visual.*test|playwright.*test|screenshot.*test|selenium.*test|chrome.*test|test.*visuel", + "api": "GET:/api/wevia-action-engine.php?action=exec_s204&cmd=timeout+120+python3+/opt/weval-l99/tools/visual-test-quick.py" + }, + { + "id": "arena", + "kw": "arena|multi-model|consensus|benchmark", + "api": "master", + "msg": "arena status", + "cat": "ai" + }, + { + "id": "resolver", + "kw": "resolver|dynamic|222 tools|sovereign fc", + "api": "master", + "msg": "resolver status", + "cat": "ai" + }, + { + "id": "trinity", + "kw": "trinity|arcee|400b", + "api": "master", + "msg": "trinity", + "cat": "models" + }, + { + "id": "blade-bridge", + "kw": "blade bridge|blade tools|powershell", + "api": "master", + "msg": "blade bridge", + "cat": "infra" + }, + { + "id": "auto-wire", + "kw": "auto-wire|autowire|self-learn", + "api": "master", + "msg": "auto-wire", + "cat": "ai" + }, + { + "id": "ethica-chatbot", + "kw": "ethica chatbot|ethica bot|pharma chat", + "api": "master", + "msg": "ethica chatbot", + "cat": "ethica" + }, + { + "id": "new-models", + "kw": "new model|frontier model|model 2026", + "api": "master", + "msg": "new models", + "cat": "models" + }, + { + "id": "tool-registry", + "kw": "tool registry|registre|tool list", + "api": "master", + "msg": "tool registry list", + "cat": "ai" + }, + { + "id": "growth-agent", + "kw": "growth agent|growth|revenue", + "api": "master", + "msg": "growth agent", + "cat": "business" + }, + { + "id": "vault_search", + "kw": "obsidian.*search|cherche.*obsidian|memoire.*search|memoire.*cherche", + "api": "GET:/api/wevia-vault.php?action=search&q=" + }, + { + "id": "vault_list", + "kw": "obsidian.*list|liste.*obsidian|contenu.*obsidian|memoire.*list", + "api": "GET:/api/wevia-vault.php?action=list" + }, + { + "id": "vault_stats", + "kw": "obsidian.*stats|memoire.*stats|taille.*obsidian", + "api": "GET:/api/wevia-vault.php?action=stats" + }, + { + "id": "vault_read", + "kw": "obsidian.*read|lire.*obsidian|lit.*obsidian|memoire.*read", + "api": "GET:/api/wevia-vault.php?action=read&file=" + }, + { + "id": "paperclip_projects", + "kw": "projet.*paper|paper.*proj|list.*proj", + "api": "exec", + "cmd": "PGPASSWORD=admin123 psql -h 127.0.0.1 -p 5432 -U admin -d paperclip -t -A -c 'SELECT name,status FROM projects ORDER BY name;'" + }, + { + "id": "paperclip_goals", + "kw": "goal.*paper|paper.*goal|objectif.*strat", + "api": "exec", + "cmd": "PGPASSWORD=admin123 psql -h 127.0.0.1 -p 5432 -U admin -d paperclip -t -A -c 'SELECT title,status FROM goals ORDER BY created_at;'" + }, + { + "id": "paperclip_agents_count", + "kw": "agent.*paper|paper.*agent|combien.*agent", + "api": "exec", + "cmd": "PGPASSWORD=admin123 psql -h 127.0.0.1 -p 5432 -U admin -d paperclip -t -A -c 'SELECT COUNT(*) FROM agents;'" + }, + { + "id": "paperclip_issues", + "kw": "issue.*paper|paper.*issue|ticket.*ouvert", + "api": "exec", + "cmd": "PGPASSWORD=admin123 psql -h 127.0.0.1 -p 5432 -U admin -d paperclip -t -A -c 'SELECT COUNT(*),status FROM issues GROUP BY status;'" + }, + { + "id": "ssl_verif", + "kw": "ssl.*verif|certif.*ssl|ssl.*expir|certif.*date", + "api": "exec", + "cmd": "echo | openssl s_client -connect weval-consulting.com:443 -servername weval-consulting.com 2>/dev/null | openssl x509 -noout -dates" + }, + { + "id": "git_modif", + "kw": "git.*modif|modif.*git|git.*dirty|fichier.*change", + "api": "exec", + "cmd": "cd /var/www/html && git status --porcelain | head -20 && echo --- && git log --oneline -3" + }, + { + "id": "git_push_auto", + "kw": "push.*code|pousse.*git|git.*push|deploy.*code", + "api": "exec", + "cmd": "cd /var/www/html && sudo git add -A && sudo git commit -m autopush 2>&1 | tail -3 && sudo git push origin main 2>&1 | tail -3" + }, + { + "id": "test_global", + "kw": "test.*complet|bilan.*global|check.*all|reconcili.*tout", + "api": "exec", + "cmd": "echo PIPELINE=$(curl -sk https://weval-consulting.com/api/weval-unified-pipeline.php | python3 -c 'import sys,json;d=json.load(sys.stdin);print(len(d.get(\"projects\",[])),\"proj\",len(d.get(\"goals\",[])),\"goals\")' 2>&1) && echo DOCKER=$(docker ps -q | wc -l) && echo DISK=$(df / --output=pcent | tail -1) && echo GIT=$(cd /var/www/html && git status --porcelain | wc -l)dirty && echo TOOLS=$(python3 -c 'import json;print(len(json.load(open(\"/opt/wevia-brain/tool-registry-v2.json\")).get(\"tools\",[])))') && echo QDRANT=$(curl -s http://localhost:6333/collections | python3 -c 'import sys,json;print(len(json.load(sys.stdin).get(\"result\",{}).get(\"collections\",[])))')collections" + }, + { + "id": "snap_archiver_log", + "kw": "snap.*log|log.*archiv|archiveur.*log", + "api": "exec", + "cmd": "tail -10 /tmp/wevia-snapshot-archiver.log 2>/dev/null || echo NO_LOG" + }, + { + "id": "snap_archiver_launch", + "kw": "lance.*snap|start.*archiv|relance.*snap", + "api": "exec", + "cmd": "ps aux | grep wevia-snap-archiver | grep -v grep > /dev/null && echo ALREADY_RUNNING || (nohup python3 /opt/weval-l99/wevia-snap-archiver.py archive 356887958 snap2-feb2026 Snap2 > /tmp/wevia-snapshot-archiver.log 2>&1 & echo LAUNCHED)" + }, + { + "id": "ollama_list", + "kw": "ollama.*model|model.*local|llm.*local", + "api": "exec", + "cmd": "curl -s http://localhost:11435/api/tags | python3 -c 'import sys,json;[print(m[\"name\"],round(m.get(\"size\",0)/1e9,1),\"GB\") for m in json.load(sys.stdin).get(\"models\",[])]'" + }, + { + "id": "nginx_domains", + "kw": "nginx.*domain|domain.*actif|vhost|sous.*domain", + "api": "exec", + "cmd": "grep -r server_name /etc/nginx/sites-enabled/ | grep -v '#' | awk '{print $NF}' | sort -u | tr ';' ' '" + }, + { + "id": "cron_actifs", + "kw": "cron.*actif|cron.*list|tache.*planif", + "api": "exec", + "cmd": "crontab -l 2>/dev/null | grep -v '^#' | grep -v '^$' | wc -l && echo crons_actifs" + }, + { + "id": "ram_free", + "kw": "ram|memoire|memory|free", + "api": "exec", + "cmd": "free -m | head -2" + }, + { + "id": "disk_detail", + "kw": "disk.*detail|espace.*disk|df|stockage", + "api": "exec", + "cmd": "df -h / | tail -1 && echo --- && du -sh /var/www/html /opt/weval-l99 /opt/wevia-brain 2>/dev/null" + }, + { + "id": "kb_vectors", + "kw": "kb.*vector|qdrant.*point|vecteur.*kb", + "api": "exec", + "cmd": "curl -s http://localhost:6333/collections/wevia_kb | python3 -c 'import sys,json;d=json.load(sys.stdin);print(d.get(\"result\",{}).get(\"points_count\",\"?\"),\"vectors\")'" + }, + { + "id": "crowdsec_status", + "kw": "crowdsec|ban.*ip|securite.*ip", + "api": "exec", + "cmd": "cscli decisions list -o raw 2>/dev/null | wc -l && echo active_bans" + }, + { + "id": "ethica_count", + "kw": "ethica.*hcp|hcp.*count|pharma.*count", + "api": "exec", + "cmd": "PGPASSWORD=admin123 psql -h 10.1.0.3 -p 5432 -U admin -d adx_system -t -A -c 'SELECT COUNT(*) FROM ethica_hcp_master WHERE email IS NOT NULL;' 2>&1 || echo DB_UNREACHABLE" + }, + { + "id": "s95_check", + "kw": "s95.*status|wevads.*check|brain.*check", + "api": "exec", + "cmd": "curl -s -m 5 http://10.1.0.3:5890/api/sentinel-brain.php?action=exec&cmd=echo+S95_OK 2>&1 | head -3" + }, + { + "id": "uptime_info", + "kw": "uptime|depuis.*quand|up.*time", + "api": "exec", + "cmd": "uptime -p && cat /proc/loadavg" + }, + { + "id": "php_restart_fix", + "kw": "php.*restart|restart.*php|fpm.*fix|502.*repair", + "api": "exec", + "cmd": "systemctl restart php8.5-fpm 2>&1 && echo PHP_RESTARTED || echo NEED_ROOT" + }, + { + "id": "vault_semantic", + "kw": "semantic.*search|recherche.*semantique|obsidian.*semantic", + "api": "GET:/api/wevia-vault-search.php?q=" } ] } \ No newline at end of file diff --git a/wevia-dynamic-resolver.php b/wevia-dynamic-resolver.php index ba3e744..f84f229 100644 --- a/wevia-dynamic-resolver.php +++ b/wevia-dynamic-resolver.php @@ -30,6 +30,11 @@ function wevia_dynamic_resolve($msg) { if ($d) { return ["content" => json_encode($d, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), "tool" => $t["id"], "source" => "dynamic-resolver"]; } + } elseif ($t["api"] === "exec" && !empty($t["cmd"])) { + // Direct shell exec — sovereign tool + $r = trim(@shell_exec($t["cmd"] . " 2>&1")); + if ($r) return ["content" => $r, "tool" => $t["id"], "source" => "dynamic-resolver-exec"]; + } elseif (strpos($t["api"], "POST:") === 0) { $url = "https://weval-consulting.com" . substr($t["api"], 5); $ch = curl_init($url);