V9.52 RESTORE WCP WSI MCP from GOLD 31mars - 3 files missing since 2Apr commit 945960260 GODMODE - restored from /opt/wevads/vault/gold-31mar-final - wevia-claude-code-patterns.php 38KB 14 Claude Code patterns (Self-MoA Mama Claude Sovereign routing Dream cron Context collapse Circuit breaker decay) - wevia-sovereign-intelligence.php 17KB WSI v1.0 - wevia-mcp-layer.php 15KB MCP v1.0 - HTTP 200 all 3/3 tests - functions_loaded 635 maintained - conditional require_once still in place defensive v9.51b - complete restoration no more 500 errors - sync html weval mirrors identical
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
430
all-ia-hub.html
Normal file
430
all-ia-hub.html
Normal file
@@ -0,0 +1,430 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>All-IA Hub — Remplacement Claude Code + Opus (Souverain)</title>
|
||||
<meta name="description" content="Hub unifié combinant WEVIA Master streaming, WEVCODE modes, Arena multi-provider. Indépendance Opus.">
|
||||
<style>
|
||||
:root{--bg:#0a0a0f;--bg2:#111119;--bg3:#181825;--rim:#2a2a3a;--t:#e2e8f0;--mu:#94a3b8;--dm:#64748b;--cy:#22d3ee;--gr:#10b981;--vl:#a78bfa;--am:#f59e0b;--rd:#ef4444}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
body{font-family:'JetBrains Mono','Menlo',monospace;background:var(--bg);color:var(--t);min-height:100vh;display:flex;flex-direction:column}
|
||||
.hdr{padding:10px 18px;background:var(--bg2);border-bottom:1px solid var(--rim);display:flex;align-items:center;justify-content:space-between;gap:14px}
|
||||
.hdr .brand{display:flex;align-items:center;gap:10px}
|
||||
.hdr .logo{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,var(--cy),var(--vl));display:flex;align-items:center;justify-content:center;color:var(--bg);font-weight:700;font-size:14px}
|
||||
.hdr h1{font-size:14px;font-weight:700;letter-spacing:.4px}
|
||||
.hdr .sub{font-size:10px;color:var(--mu);letter-spacing:.3px;margin-top:2px}
|
||||
.hdr .stats{display:flex;gap:14px;font-size:10px;color:var(--dm);letter-spacing:.3px}
|
||||
.hdr .stats span b{color:var(--cy);font-weight:700}
|
||||
.tabs{display:flex;gap:2px;padding:0 18px;background:var(--bg2);border-bottom:1px solid var(--rim);overflow-x:auto}
|
||||
.tab{padding:10px 16px;background:transparent;border:0;color:var(--mu);font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;letter-spacing:.4px;border-bottom:2px solid transparent;transition:all .2s;white-space:nowrap}
|
||||
.tab:hover{color:var(--t)}
|
||||
.tab.on{color:var(--cy);border-bottom-color:var(--cy)}
|
||||
main{flex:1;display:flex;flex-direction:column;padding:16px 20px;max-width:1400px;width:100%;margin:0 auto;min-height:0}
|
||||
.view{display:none;flex-direction:column;flex:1;min-height:0}
|
||||
.view.on{display:flex}
|
||||
/* Chat/Code shared layout */
|
||||
.modes{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap}
|
||||
.mode{padding:6px 12px;border:1px solid var(--rim);border-radius:6px;background:transparent;color:var(--mu);font-family:inherit;font-size:10px;font-weight:600;cursor:pointer;transition:all .15s;letter-spacing:.3px}
|
||||
.mode:hover{border-color:var(--cy);color:var(--t)}
|
||||
.mode.on{background:var(--cy);color:var(--bg);border-color:var(--cy)}
|
||||
.stbar{display:flex;gap:14px;margin-bottom:10px;font-size:10px;color:var(--dm);letter-spacing:.4px}
|
||||
.stbar span{display:flex;align-items:center;gap:5px}
|
||||
.stbar .dot{width:6px;height:6px;border-radius:50%;background:var(--gr)}
|
||||
.out{flex:1;background:var(--bg2);border:1px solid var(--rim);border-radius:8px;padding:14px 18px;overflow-y:auto;font-size:12px;line-height:1.65;min-height:240px}
|
||||
.out .msg{margin-bottom:14px}
|
||||
.out .msg.u{color:var(--cy)}
|
||||
.out .msg.a{color:var(--t)}
|
||||
.out .msg.sys{color:var(--dm);font-size:10px;letter-spacing:.3px}
|
||||
.out .msg .meta{font-size:9px;color:var(--dm);letter-spacing:.4px;margin-top:4px}
|
||||
.out .msg pre{background:var(--bg3);padding:10px 12px;border-radius:6px;overflow-x:auto;font-size:11px;margin:6px 0}
|
||||
.inp-wrap{display:flex;gap:8px;margin-top:10px;background:var(--bg2);border:1px solid var(--rim);border-radius:8px;padding:8px}
|
||||
.inp-wrap:focus-within{border-color:var(--cy)}
|
||||
.inp{flex:1;background:transparent;border:0;color:var(--t);font-family:inherit;font-size:12px;padding:8px;resize:none;outline:none;min-height:46px;max-height:140px}
|
||||
.inp-wrap button{background:var(--cy);color:var(--bg);border:0;border-radius:6px;padding:0 18px;font-family:inherit;font-size:11px;font-weight:700;cursor:pointer;letter-spacing:.4px;transition:opacity .15s}
|
||||
.inp-wrap button:hover{opacity:.85}
|
||||
.inp-wrap button:disabled{opacity:.4;cursor:not-allowed}
|
||||
/* Capabilities grid */
|
||||
.caps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;padding:4px 0}
|
||||
.cap{background:var(--bg2);border:1px solid var(--rim);border-radius:8px;padding:14px 16px;transition:all .2s}
|
||||
.cap:hover{border-color:var(--cy);transform:translateY(-1px)}
|
||||
.cap h3{font-size:12px;color:var(--cy);margin-bottom:6px;letter-spacing:.5px}
|
||||
.cap p{font-size:10px;color:var(--mu);line-height:1.55;letter-spacing:.2px}
|
||||
.cap .tag{display:inline-block;margin-top:8px;padding:2px 7px;background:var(--bg3);border:1px solid var(--rim);border-radius:4px;font-size:9px;color:var(--dm);letter-spacing:.4px}
|
||||
.cap .tag.r{color:var(--gr);border-color:var(--gr)}
|
||||
/* Training panel */
|
||||
.train-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:14px}
|
||||
.train-stat{background:var(--bg2);border:1px solid var(--rim);border-radius:8px;padding:12px 14px}
|
||||
.train-stat .k{font-size:9px;color:var(--dm);letter-spacing:.5px;text-transform:uppercase}
|
||||
.train-stat .v{font-size:20px;color:var(--cy);font-weight:700;margin-top:3px}
|
||||
.train-stat .s{font-size:9px;color:var(--mu);margin-top:3px;letter-spacing:.3px}
|
||||
.train-log{background:var(--bg3);border:1px solid var(--rim);border-radius:6px;padding:10px 14px;font-size:10px;line-height:1.6;color:var(--mu);max-height:280px;overflow-y:auto}
|
||||
.train-log b{color:var(--cy)}
|
||||
/* Orchestrator compact */
|
||||
.orch-agents{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px;max-height:280px;overflow-y:auto}
|
||||
.orch-agent{background:var(--bg2);border:1px solid var(--rim);border-radius:5px;padding:6px 9px;font-size:10px;color:var(--mu);display:flex;align-items:center;gap:6px;transition:all .2s}
|
||||
.orch-agent:hover{border-color:var(--cy);color:var(--t)}
|
||||
.orch-agent .d{width:5px;height:5px;border-radius:50%;background:var(--gr);flex-shrink:0}
|
||||
footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);font-size:9px;color:var(--dm);letter-spacing:.3px;display:flex;justify-content:space-between}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header class="hdr">
|
||||
<div class="brand">
|
||||
<div class="logo">A</div>
|
||||
<div>
|
||||
<h1>ALL-IA HUB</h1>
|
||||
<div class="sub">Remplacement Claude Code + Opus · Souverain</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="stats">
|
||||
<span>Agents <b id="h-ag">726</b></span>
|
||||
<span>Providers <b id="h-pr">14</b></span>
|
||||
<span>NonReg <b id="h-nr">201/201</b></span>
|
||||
<span>Mode <b id="h-md">Chat</b></span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="tabs">
|
||||
<button class="tab on" data-view="chat">CHAT MULTIAGENT</button>
|
||||
<button class="tab" data-view="code">CODE (WEVCODE)</button>
|
||||
<button class="tab" data-view="arena">ARENA 14 PROVIDERS</button>
|
||||
<button class="tab" data-view="capabilities">IA CAPABILITIES</button>
|
||||
<button class="tab" data-view="training">TRAINING HUB</button>
|
||||
<button class="tab" data-view="orchestrator">ORCHESTRATOR</button>
|
||||
</nav>
|
||||
|
||||
<main>
|
||||
<!-- CHAT MULTIAGENT (wevia-master pattern) -->
|
||||
<section class="view on" id="v-chat">
|
||||
<div class="stbar">
|
||||
<span><span class="dot"></span>sovereign:4000</span>
|
||||
<span>streaming SSE 1h</span>
|
||||
<span>multi-agent auto</span>
|
||||
<span id="s-chat"></span>
|
||||
</div>
|
||||
<div class="out" id="out-chat">
|
||||
<div class="msg sys">> CHAT multi-agent prêt. Natural language router V103 actif. Tape "orchestrate", "bilan complet", "tous les agents" pour multi-agent parallèle.</div>
|
||||
</div>
|
||||
<div class="inp-wrap">
|
||||
<textarea class="inp" id="inp-chat" placeholder="Décris ce que tu veux faire, orchestrer, analyser..."></textarea>
|
||||
<button onclick="sendChat()" id="btn-chat">ENVOYER</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CODE (wevcode pattern) -->
|
||||
<section class="view" id="v-code">
|
||||
<div class="modes" id="code-modes">
|
||||
<button class="mode on" data-mode="code"></> CODE</button>
|
||||
<button class="mode" data-mode="analyze">ANALYZE</button>
|
||||
<button class="mode" data-mode="plan">PLAN</button>
|
||||
<button class="mode" data-mode="execute">EXECUTE</button>
|
||||
<button class="mode" data-mode="git">GIT</button>
|
||||
<button class="mode" data-mode="rag">RAG</button>
|
||||
</div>
|
||||
<div class="stbar">
|
||||
<span><span class="dot"></span>cerebras qwen-3-235b</span>
|
||||
<span>Qdrant RAG</span>
|
||||
<span>Cognitive 635fn</span>
|
||||
<span id="s-code"></span>
|
||||
</div>
|
||||
<div class="out" id="out-code">
|
||||
<div class="msg sys">> WEVCODE v2 · Sovereign Coding Agent · 6 modes disponibles</div>
|
||||
</div>
|
||||
<div class="inp-wrap">
|
||||
<textarea class="inp" id="inp-code" placeholder="Décris le code à générer, analyser, debug, planifier..."></textarea>
|
||||
<button onclick="sendCode()" id="btn-code">ENVOYER</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ARENA (weval-arena pattern) -->
|
||||
<section class="view" id="v-arena">
|
||||
<div class="stbar">
|
||||
<span><span class="dot"></span>14 providers cascade</span>
|
||||
<span>auto fallback</span>
|
||||
<span id="s-arena"></span>
|
||||
</div>
|
||||
<div class="out" id="out-arena">
|
||||
<div class="msg sys">> ARENA · Multi-provider intelligent routing</div>
|
||||
<div class="msg sys">> Providers: cerebras, groq, gemini, sambanova, nvidia, mistral, hf, openrouter, github, cf, deepseek, anthropic, ollama, maestro</div>
|
||||
</div>
|
||||
<div class="inp-wrap">
|
||||
<textarea class="inp" id="inp-arena" placeholder="Question → routage auto vers meilleur provider disponible"></textarea>
|
||||
<button onclick="sendArena()" id="btn-arena">ENVOYER</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CAPABILITIES -->
|
||||
<section class="view" id="v-caps">
|
||||
<div class="caps-grid" id="caps-grid">
|
||||
<div class="cap">
|
||||
<h3>⚡ WEVIA Master Streaming</h3>
|
||||
<p>fetch+getReader() + AbortSignal.timeout(3600000ms). Pattern identique Claude Code SDK. SSE parsing 5 types événements.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🛠 Multi-Agent Orchestrator</h3>
|
||||
<p>15 agents parallèles SSE · V102 regex étendu · V103 natural language router · 10 patterns détectés.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>💻 WEVCODE 6 Modes</h3>
|
||||
<p>code / analyze / plan / execute / git / rag. CodeAnalyzer + Planner + ToolUseV2 + Cognitive 635 fn.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🌐 Arena Multi-Provider</h3>
|
||||
<p>14 providers cascade: cerebras qwen-3-235b, groq llama 3.3, gemini, sambanova, nvidia nim, mistral large, HF, OpenRouter, GitHub, CF Workers AI, DeepSeek, Anthropic, Ollama, Maestro.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🧠 Qdrant RAG</h3>
|
||||
<p>Knowledge base vectoriel · 14,368 vectors · 1181 files vault · wiki + GOLD indexed.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>📚 HF Fine-Tune</h3>
|
||||
<p>yace222/weval-brain-v4 · continuous training · auto-learning loop via cron.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🌝 Blade IA (Razer)</h3>
|
||||
<p>34 capabilities locales · hamid-fullscreen.php · Selenium + Playwright persistent context.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>👑 Director Agent</h3>
|
||||
<p>312 services monitored · wevia-director.php · wevia-fiability.php · autofix docker.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🏁 NonReg 6sigma</h3>
|
||||
<p>201/201 tests passants · L99 daily · Playwright visual 16/16.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>📡 Tool Use</h3>
|
||||
<p>wevia-full-exec.php · bash exec · file r/w · DB query · git push · cron · CF purge · GOLD.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>👨 Session + Files</h3>
|
||||
<p>Session ID persistant · history 10 last · attachments base64 · long-running tasks.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🔄 Cognitive 635fn</h3>
|
||||
<p>cognitive-opus46 · 635 functions · CoT decompose · Reasoning + Creative + Analysis chains.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- TRAINING -->
|
||||
<section class="view" id="v-train">
|
||||
<div class="train-stats" id="train-stats">
|
||||
<div class="train-stat"><div class="k">HF Model</div><div class="v" style="font-size:13px;color:var(--cy)">weval-brain-v4</div><div class="s">yace222/weval-brain-v4</div></div>
|
||||
<div class="train-stat"><div class="k">Qdrant Vectors</div><div class="v" id="t-qv">14368</div><div class="s">KB indexed</div></div>
|
||||
<div class="train-stat"><div class="k">Wiki entries</div><div class="v" id="t-wi">1861</div><div class="s">markdown files</div></div>
|
||||
<div class="train-stat"><div class="k">Vault files</div><div class="v" id="t-vf">4738</div><div class="s">GOLD: 105</div></div>
|
||||
<div class="train-stat"><div class="k">Agents</div><div class="v" id="t-ag">726</div><div class="s">8 categories</div></div>
|
||||
<div class="train-stat"><div class="k">Cognitive fn</div><div class="v">635</div><div class="s">cognitive-opus46</div></div>
|
||||
</div>
|
||||
<div class="train-log" id="train-log">
|
||||
<div><b>> TRAINING HUB</b> · Continuous learning loop active</div>
|
||||
<div>> Cron WeviaAutoLrn · toutes les 2h</div>
|
||||
<div>> Cron WeviaDream · auto-expansion nocturne</div>
|
||||
<div>> Cron WeviaEmbed · Qdrant embedding auto</div>
|
||||
<div>> Source: chat history + wiki + vault + GOLD backups</div>
|
||||
<div>> Pipeline: collect → dedupe → embed → fine-tune → deploy</div>
|
||||
<div>> Fallback: si HF indispo → LocalAI (Ollama port 11434)</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ORCHESTRATOR -->
|
||||
<section class="view" id="v-orch">
|
||||
<div class="stbar">
|
||||
<span>726 agents dans le catalog</span>
|
||||
<span id="s-orch-cat">8 categories</span>
|
||||
<span id="s-orch-load"></span>
|
||||
</div>
|
||||
<div class="orch-agents" id="orch-agents"></div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<span>All-IA Hub · Souverain · Opus-indépendant</span>
|
||||
<span>© WEVAL Consulting · V107 · 2026</span>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// Tab switching
|
||||
document.querySelectorAll('.tab').forEach(t=>t.addEventListener('click',()=>{
|
||||
document.querySelectorAll('.tab').forEach(x=>x.classList.remove('on'));
|
||||
document.querySelectorAll('.view').forEach(x=>x.classList.remove('on'));
|
||||
t.classList.add('on');
|
||||
const v=t.dataset.view;
|
||||
const map={chat:'v-chat',code:'v-code',arena:'v-arena',capabilities:'v-caps',training:'v-train',orchestrator:'v-orch'};
|
||||
document.getElementById(map[v]).classList.add('on');
|
||||
document.getElementById('h-md').textContent=t.textContent.split(' ')[0];
|
||||
if(v==='orchestrator') loadAgents();
|
||||
}));
|
||||
|
||||
// Code modes
|
||||
let codeMode='code';
|
||||
document.querySelectorAll('#code-modes .mode').forEach(m=>m.addEventListener('click',()=>{
|
||||
document.querySelectorAll('#code-modes .mode').forEach(x=>x.classList.remove('on'));
|
||||
m.classList.add('on');
|
||||
codeMode=m.dataset.mode;
|
||||
}));
|
||||
|
||||
// Add message helper
|
||||
function addMsg(target,txt,cls,meta){
|
||||
const out=document.getElementById(target);
|
||||
const d=document.createElement('div');
|
||||
d.className='msg '+(cls||'a');
|
||||
d.innerHTML='<div>'+txt.replace(/</g,'<').replace(/\n/g,'<br>')+'</div>'+(meta?'<div class="meta">'+meta+'</div>':'');
|
||||
out.appendChild(d);
|
||||
out.scrollTop=out.scrollHeight;
|
||||
}
|
||||
|
||||
// SEND CHAT (wevia-master pattern - streaming SSE)
|
||||
async function sendChat(){
|
||||
const inp=document.getElementById('inp-chat');
|
||||
const text=inp.value.trim();
|
||||
if(!text) return;
|
||||
addMsg('out-chat',text,'u');
|
||||
inp.value='';
|
||||
const btn=document.getElementById('btn-chat');
|
||||
btn.disabled=true;
|
||||
const t0=Date.now();
|
||||
try{
|
||||
const res=await fetch('/api/wevia-master-api.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'application/json'},
|
||||
body:JSON.stringify({message:text,session_id:'all-ia-hub-'+Date.now()}),
|
||||
signal:AbortSignal.timeout(300000)
|
||||
});
|
||||
const d=await res.json();
|
||||
const t=((Date.now()-t0)/1000).toFixed(1);
|
||||
addMsg('out-chat',d.response||JSON.stringify(d),'a',(d.provider||'?')+' · '+t+'s'+(d.agents_count?' · '+d.agents_count+' agents':''));
|
||||
}catch(e){
|
||||
addMsg('out-chat','Error: '+e.message,'a','error');
|
||||
}
|
||||
btn.disabled=false;
|
||||
}
|
||||
|
||||
// SEND CODE (wevcode pattern)
|
||||
async function sendCode(){
|
||||
const inp=document.getElementById('inp-code');
|
||||
const text=inp.value.trim();
|
||||
if(!text) return;
|
||||
addMsg('out-code','['+codeMode+'] '+text,'u');
|
||||
inp.value='';
|
||||
const btn=document.getElementById('btn-code');
|
||||
btn.disabled=true;
|
||||
const t0=Date.now();
|
||||
try{
|
||||
const res=await fetch('/api/wevcode-superclaude.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'application/json'},
|
||||
body:JSON.stringify({action:codeMode,prompt:text,message:text})
|
||||
});
|
||||
const d=await res.json();
|
||||
const t=((Date.now()-t0)/1000).toFixed(1);
|
||||
const out=d.result||d.response||d.text||d.output||JSON.stringify(d);
|
||||
addMsg('out-code',out,'a',codeMode+' · '+t+'s');
|
||||
}catch(e){
|
||||
addMsg('out-code','Error: '+e.message,'a','error');
|
||||
}
|
||||
btn.disabled=false;
|
||||
}
|
||||
|
||||
// SEND ARENA (weval-arena pattern - multi-provider)
|
||||
async function sendArena(){
|
||||
const inp=document.getElementById('inp-arena');
|
||||
const text=inp.value.trim();
|
||||
if(!text) return;
|
||||
addMsg('out-arena',text,'u');
|
||||
inp.value='';
|
||||
const btn=document.getElementById('btn-arena');
|
||||
btn.disabled=true;
|
||||
const t0=Date.now();
|
||||
try{
|
||||
const res=await fetch('/api/wevia-multi-provider.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'application/json'},
|
||||
body:JSON.stringify({message:text,mode:'auto',model:'auto'})
|
||||
});
|
||||
const d=await res.json();
|
||||
const t=((Date.now()-t0)/1000).toFixed(1);
|
||||
const out=d.response||d.result||d.text||JSON.stringify(d);
|
||||
addMsg('out-arena',out,'a',(d.provider||'auto')+' · '+t+'s');
|
||||
}catch(e){
|
||||
// Fallback: try master API
|
||||
try{
|
||||
const r2=await fetch('/api/wevia-master-api.php',{
|
||||
method:'POST',headers:{'Content-Type':'application/json'},
|
||||
body:JSON.stringify({message:text,session_id:'arena-'+Date.now()})
|
||||
});
|
||||
const d=await r2.json();
|
||||
addMsg('out-arena',d.response||JSON.stringify(d),'a','fallback-master');
|
||||
}catch(e2){
|
||||
addMsg('out-arena','All providers failed: '+e.message,'a','error');
|
||||
}
|
||||
}
|
||||
btn.disabled=false;
|
||||
}
|
||||
|
||||
// Load agents for orchestrator view
|
||||
async function loadAgents(){
|
||||
const box=document.getElementById('orch-agents');
|
||||
if(box.children.length>0) return;
|
||||
document.getElementById('s-orch-load').textContent='chargement...';
|
||||
try{
|
||||
const r=await fetch('/api/agents-catalog-api.php');
|
||||
const d=await r.json();
|
||||
document.getElementById('h-ag').textContent=d.total;
|
||||
document.getElementById('t-ag').textContent=d.total;
|
||||
document.getElementById('s-orch-cat').textContent=Object.keys(d.categories).length+' categories · '+d.total+' total';
|
||||
// Show top 60 core + claudecode + skills
|
||||
const priority=d.agents.filter(a=>['core','claudecode','skills','superclaude'].includes(a.cat));
|
||||
priority.slice(0,100).forEach(a=>{
|
||||
const e=document.createElement('div');
|
||||
e.className='orch-agent';
|
||||
e.title=a.desc||a.name;
|
||||
e.innerHTML='<span class="d"></span>'+a.name;
|
||||
box.appendChild(e);
|
||||
});
|
||||
document.getElementById('s-orch-load').textContent='('+priority.length+' priority affichés)';
|
||||
}catch(e){
|
||||
document.getElementById('s-orch-load').textContent='erreur chargement';
|
||||
}
|
||||
}
|
||||
|
||||
// Keyboard shortcuts
|
||||
document.querySelectorAll('.inp').forEach(i=>{
|
||||
i.addEventListener('keydown',e=>{
|
||||
if(e.key==='Enter'&&(e.ctrlKey||e.metaKey)){
|
||||
e.preventDefault();
|
||||
const view=i.closest('.view').id;
|
||||
if(view==='v-chat') sendChat();
|
||||
else if(view==='v-code') sendCode();
|
||||
else if(view==='v-arena') sendArena();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Live stats
|
||||
async function refreshStats(){
|
||||
try{
|
||||
const r=await fetch('/api/l99-honest.php?compact=1',{cache:'no-store'});
|
||||
const d=await r.json();
|
||||
if(d.nonreg) document.getElementById('h-nr').textContent=d.nonreg;
|
||||
}catch(e){}
|
||||
}
|
||||
refreshStats();
|
||||
setInterval(refreshStats,60000);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-21T02:10:02+02:00",
|
||||
"ts": "2026-04-21T02:20:02+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T02:15:02.098892",
|
||||
"generated_at": "2026-04-21T02:20:01.795450",
|
||||
"stats": {
|
||||
"total": 35,
|
||||
"pending": 20,
|
||||
|
||||
@@ -0,0 +1,281 @@
|
||||
{
|
||||
"ts": "2026-04-21T00:20:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 0.65,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 10729,
|
||||
"ram_free_mb": 20605,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "113G",
|
||||
"disk_free": "32G",
|
||||
"disk_pct": "79%",
|
||||
"fpm_workers": 120,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.17,
|
||||
"disk_pct": "82%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 12003
|
||||
},
|
||||
"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": 292,
|
||||
"php_apis": 765,
|
||||
"wiki_entries": 1884,
|
||||
"vault_doctrines": 59,
|
||||
"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": 161730,
|
||||
"with_email": 110548,
|
||||
"with_phone": 155145,
|
||||
"gap_email": 51182,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78459,
|
||||
"with_tel": 119394,
|
||||
"pct_email": 64.1,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19720,
|
||||
"with_email": 15071,
|
||||
"with_tel": 18733,
|
||||
"pct_email": 76.4,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15139,
|
||||
"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 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "listmonk",
|
||||
"status": "Up 4 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 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 4 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 4 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 24 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "0e4d0ca12 auto-sync-0220",
|
||||
"dirty": 4,
|
||||
"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": 3646,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10698
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"agent": "V42_MQL_Scoring_Agent_REAL",
|
||||
"ts": "2026-04-21T00:10:01+00:00",
|
||||
"ts": "2026-04-21T00:20:01+00:00",
|
||||
"status": "DEPLOYED_AUTO",
|
||||
"deployed": true,
|
||||
"algorithm": "weighted_behavioral_signals",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T00:19:02+00:00",
|
||||
"ts": "2026-04-21T00:24:02+00:00",
|
||||
"summary": {
|
||||
"total_categories": 7,
|
||||
"total_kpis": 56,
|
||||
|
||||
Reference in New Issue
Block a user