Compare commits
192 Commits
v9.49-gpu-
...
v9.61-fix-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
195babca8e | ||
|
|
4e975785b8 | ||
|
|
0f654a7611 | ||
|
|
69f35f1f2c | ||
|
|
2e29f3f927 | ||
|
|
e001b340f2 | ||
|
|
35290734ba | ||
|
|
7f412bc77d | ||
|
|
86c8880498 | ||
|
|
3f14756c18 | ||
|
|
89190f10a4 | ||
|
|
6dcd80620f | ||
|
|
6564274dba | ||
|
|
4dd5f94e76 | ||
|
|
97794ddf25 | ||
|
|
e20be2e950 | ||
|
|
70437c56f9 | ||
|
|
44a5b11f0a | ||
|
|
011f48e3a1 | ||
|
|
0c4ce85d5b | ||
|
|
531da9881b | ||
|
|
f3b8b87926 | ||
|
|
10e36b4041 | ||
|
|
15fb75b5da | ||
|
|
db73832a2d | ||
|
|
ee3f4d9bca | ||
|
|
e18ba53c7f | ||
|
|
18a071b6b3 | ||
|
|
d7f023a1f3 | ||
|
|
b08e2cc9be | ||
|
|
2d0df437b6 | ||
|
|
ab3266506d | ||
|
|
6dfe1be628 | ||
|
|
e02e3d38b8 | ||
|
|
66ee745118 | ||
|
|
e5028f8502 | ||
|
|
3d1d773e47 | ||
|
|
03b570195b | ||
|
|
8072ff4e18 | ||
|
|
b3e88bf9f6 | ||
|
|
ae3c060617 | ||
|
|
59f8022a5b | ||
|
|
326c19fd4d | ||
|
|
7c495f3755 | ||
|
|
95568f75e6 | ||
|
|
3310f9068b | ||
|
|
e5272c96f9 | ||
|
|
09ea6b1787 | ||
|
|
f85ba8d3db | ||
|
|
d746406fe5 | ||
|
|
c58132ca03 | ||
|
|
96a69f6f37 | ||
|
|
70e34194fa | ||
|
|
e6ba1a4807 | ||
|
|
4ed0eda85f | ||
|
|
67b2d696eb | ||
|
|
cc6793ac39 | ||
|
|
fba1c85ede | ||
|
|
096bddd981 | ||
|
|
28bf7a4441 | ||
|
|
eef34f6b73 | ||
|
|
9e70ea6f1a | ||
|
|
5393d0404e | ||
|
|
a892608fee | ||
|
|
02f98a285a | ||
|
|
3b7877919c | ||
|
|
5192eeabd5 | ||
|
|
ab121dc73f | ||
|
|
8306403866 | ||
|
|
256688f8bb | ||
|
|
0b421f077b | ||
|
|
df53aee8b9 | ||
|
|
0e7b376cab | ||
|
|
825f3fe836 | ||
|
|
0cc1092bf7 | ||
|
|
1c82ca56ac | ||
|
|
8973623774 | ||
|
|
33b268faeb | ||
|
|
52cbcfa01f | ||
|
|
c15dba4ecb | ||
|
|
6b7d100539 | ||
|
|
dd7bf2a4f9 | ||
|
|
6692e2d753 | ||
|
|
a1a4f5fb3f | ||
|
|
ab5c54ed2a | ||
|
|
ff8f2c34d3 | ||
|
|
553c96cad0 | ||
|
|
5af1c55359 | ||
|
|
0f27affb0a | ||
|
|
1a10703a8e | ||
|
|
58a628cc00 | ||
|
|
600d05d122 | ||
|
|
4538c531d2 | ||
|
|
89d1b50ed5 | ||
|
|
dedeb6f542 | ||
|
|
6d157a5f72 | ||
|
|
cec681682c | ||
|
|
f4c0ffad78 | ||
|
|
95cbbe0469 | ||
|
|
0f7b332938 | ||
|
|
c0fd77f43d | ||
|
|
b793fa1784 | ||
|
|
5f29cc6957 | ||
|
|
f50f7604c1 | ||
|
|
1c14bce55d | ||
|
|
a0880a7d77 | ||
|
|
6794343dfd | ||
|
|
d521716036 | ||
|
|
62ca35576a | ||
|
|
4630ff741a | ||
|
|
42031db6e9 | ||
|
|
469b2cc09c | ||
|
|
f96f2871c5 | ||
|
|
e1c02bdd3e | ||
|
|
1759afc8b9 | ||
|
|
f63e91336b | ||
|
|
f491065974 | ||
|
|
7bbb275400 | ||
|
|
b3dec2b109 | ||
|
|
1b88324806 | ||
|
|
e12dd92d89 | ||
|
|
4ec855dd8a | ||
|
|
2b04dcf4f1 | ||
|
|
11f278815b | ||
|
|
5d809e66a1 | ||
|
|
838d8cc12b | ||
|
|
017cf72638 | ||
|
|
19e311726f | ||
|
|
57058e1d99 | ||
|
|
0e45e736e9 | ||
|
|
8586840793 | ||
|
|
d824afb5ad | ||
|
|
53ac3b6ecf | ||
|
|
08d55c0dd6 | ||
|
|
abb94ba886 | ||
|
|
dcf03cc93b | ||
|
|
8337cce568 | ||
|
|
889583bf48 | ||
|
|
5b8726a099 | ||
|
|
f35c05ec66 | ||
|
|
e45c6e9352 | ||
|
|
813ca3ce9e | ||
|
|
b5018f532a | ||
|
|
924fa0d54b | ||
|
|
17c25b8cea | ||
|
|
e9db14dd2b | ||
|
|
06a5b6f4b8 | ||
|
|
64cb617aff | ||
|
|
09adc9bfe0 | ||
|
|
d6e6ee6ab7 | ||
|
|
85a716853a | ||
|
|
97cc3cd792 | ||
|
|
95f3749152 | ||
|
|
6eadc38e3d | ||
|
|
cd57e9dfe7 | ||
|
|
0e4d0ca124 | ||
|
|
d128a05228 | ||
|
|
08aa9f0514 | ||
|
|
467ad64117 | ||
|
|
432eb89696 | ||
|
|
44b8a8af47 | ||
|
|
4aa72ee59c | ||
|
|
125f3231d3 | ||
|
|
aea466b496 | ||
|
|
d2c4524dbb | ||
|
|
4b3c47f3b2 | ||
|
|
7374b07486 | ||
|
|
79ba348969 | ||
|
|
d86c1983a4 | ||
|
|
6f5467e919 | ||
|
|
bb8867c229 | ||
|
|
16ce72710e | ||
|
|
adfeddf2b5 | ||
|
|
0efffcd218 | ||
|
|
3be4f44c0f | ||
|
|
0d2a57ede8 | ||
|
|
1d83d5cef7 | ||
|
|
96642bdcb1 | ||
|
|
bf0449f235 | ||
|
|
0f82ad3211 | ||
|
|
b254603816 | ||
|
|
befde215c7 | ||
|
|
16cd829bbf | ||
|
|
07280c80ca | ||
|
|
16f1171445 | ||
|
|
897bd56ae0 | ||
|
|
9b948cf4a9 | ||
|
|
f39c129c97 | ||
|
|
10237ae2cd | ||
|
|
feac261572 | ||
|
|
be8f1bd251 | ||
|
|
964a639290 |
@@ -477,11 +477,24 @@ A.forEach(function(a,i){
|
||||
x=0;z=0;
|
||||
} else {
|
||||
const R=(pw[a.t]/2)*0.92;
|
||||
// WAVE 190: Single circle — agents around meeting table
|
||||
const angle=(ti/cnt)*Math.PI*2 - Math.PI/2; // start from top
|
||||
const tableR=R*0.72; // agents sit at 72% of plateau radius
|
||||
let angle, tableR;
|
||||
if(cnt>=15){
|
||||
// WAVE 201: Two concentric rings for overcrowded tiers (T1/T2)
|
||||
// inner ring at 50% radius, outer at 90%, staggered by half-angle
|
||||
const half=Math.ceil(cnt/2);
|
||||
const isOuter=ti>=half;
|
||||
const localI=isOuter?(ti-half):ti;
|
||||
const localCnt=isOuter?(cnt-half):half;
|
||||
angle=(localI/localCnt)*Math.PI*2 - Math.PI/2;
|
||||
if(isOuter) angle+=Math.PI/localCnt; // stagger offset
|
||||
tableR=isOuter?R*0.92:R*0.48;
|
||||
} else {
|
||||
// Single circle for sparse tiers (T0, T3)
|
||||
angle=(ti/cnt)*Math.PI*2 - Math.PI/2;
|
||||
tableR=R*0.72;
|
||||
}
|
||||
x=tableR*Math.cos(angle);
|
||||
z=tableR*Math.sin(angle)*0.65; // 65% Z for perspective
|
||||
z=tableR*Math.sin(angle)*0.65;
|
||||
}
|
||||
|
||||
const url=_pk[a.n]||(a.r?'https://robohash.org/'+encodeURIComponent(a.n)+'?set=set1&size=200x200':'https://api.dicebear.com/9.x/adventurer/svg?seed='+encodeURIComponent(a.n));
|
||||
@@ -1267,7 +1280,7 @@ window.addEventListener('resize',function(){cam.aspect=innerWidth/innerHeight;ca
|
||||
</style>
|
||||
<div class="wtp-gapfill-banner" id="wtpGapFillBanner">
|
||||
<span>🎯 <strong>WEVAL Agents Gap-Fill ERP</strong></span>
|
||||
<span class="pill hot">45 gaps</span>
|
||||
<span class="pill hot" id="gaps-banner-count">17 gaps live</span>
|
||||
<span class="pill">SAP · Oracle · NetSuite · Dynamics</span>
|
||||
<span class="pill new">🆕 Meeting Rooms</span>
|
||||
<span class="pill new">🆕 Lean 6 Sigma</span>
|
||||
@@ -1468,5 +1481,24 @@ window.addEventListener('resize',function(){cam.aspect=innerWidth/innerHeight;ca
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
|
||||
<script>
|
||||
// Opus v9.32 gaps banner live
|
||||
(async function(){
|
||||
try {
|
||||
const r = await fetch('/api/weval-agents-gap-fill-manifest.json');
|
||||
const d = await r.json();
|
||||
const erp = d.erp_gaps_covered || {};
|
||||
let total = 0;
|
||||
for (const k in erp) {
|
||||
const v = erp[k];
|
||||
if (Array.isArray(v)) total += v.length;
|
||||
else if (v && Array.isArray(v.gaps)) total += v.gaps.length;
|
||||
}
|
||||
const el = document.getElementById('gaps-banner-count');
|
||||
if (el && total > 0) el.textContent = total + ' ERP gaps';
|
||||
} catch(e) {}
|
||||
})();
|
||||
</script>
|
||||
</body></html>
|
||||
|
||||
|
||||
836
all-ia-hub.html
Normal file
@@ -0,0 +1,836 @@
|
||||
<!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>
|
||||
<button class="tab" data-view="dashboards">DASHBOARDS</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 style="cursor:pointer;user-select:none;color:var(--vl)" id="human-toggle" onclick="toggleHumanMode()" title="Mode humain: bypass stubs/intents, route vers LLM pure (llm-direct.php) avec prompt /etc/wevia/system-prompt.txt">
|
||||
<input type="checkbox" id="human-chk" style="vertical-align:middle" checked> 💖 Mode Humain (LLM pure)
|
||||
</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">
|
||||
<!-- V111-BLADE-ENRICH: live blade tasks + quick actions -->
|
||||
<div class="cap" style="grid-column:1 / -1;background:linear-gradient(135deg,#1e293b,#0f172a);border-color:var(--cy)">
|
||||
<h3>📸 Blade Tasks Queue — Chrome yacineutt pilote temps-reel</h3>
|
||||
<p style="margin-bottom:10px">Tasks pending: <b id="blade-pending">...</b> · Tasks done: <b id="blade-done">...</b> · MCP port 8765 Bearer actif</p>
|
||||
<div style="display:flex;gap:6px;flex-wrap:wrap;margin-top:8px">
|
||||
<button class="mode" onclick="pushBladeTask('office_create',{})">+ Office Create</button>
|
||||
<button class="mode" onclick="pushBladeTask('deepseek_renew',{})">+ DeepSeek Renew</button>
|
||||
<button class="mode" onclick="pushBladeTask('thuggie_login',{})">+ Thuggie Login</button>
|
||||
<button class="mode" onclick="pushBladeTask('token_github_renew',{})">+ GitHub Token</button>
|
||||
<button class="mode" onclick="pushBladeTask('token_whatsapp_renew',{})">+ WhatsApp Token</button>
|
||||
<button class="mode" onclick="refreshBladeStats()">Refresh</button>
|
||||
</div>
|
||||
<div id="blade-log" style="margin-top:10px;font-size:10px;color:var(--mu);max-height:120px;overflow-y:auto;background:var(--bg3);padding:8px;border-radius:4px;display:none"></div>
|
||||
</div>
|
||||
<!-- V113-QUICK-INTENTS: test any intent from chat -->
|
||||
<div class="cap" style="grid-column:1 / -1;background:linear-gradient(135deg,#1e293b,#0f172a);border-color:var(--vl)">
|
||||
<h3>⚡ Quick Test Any Intent — 2004 intents live</h3>
|
||||
<p style="margin-bottom:10px">Tape un trigger ci-dessous ou choisis un preset. Repond: <b id="intent-latency">-</b></p>
|
||||
<div style="display:flex;gap:6px;margin-bottom:8px">
|
||||
<input id="intent-input" type="text" placeholder="tape un trigger (ex: show tips, bilan complet, tous les agents, tips all, autowire, autoentraine)" style="flex:1;background:var(--bg3);border:1px solid var(--rim);border-radius:4px;padding:6px 10px;color:var(--t);font-family:inherit;font-size:11px"/>
|
||||
<button class="mode" onclick="testIntent()">TEST</button>
|
||||
</div>
|
||||
<div style="display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px">
|
||||
<button class="mode" onclick="setIntent('show tips')">show tips</button>
|
||||
<button class="mode" onclick="setIntent('tips all')">tips all</button>
|
||||
<button class="mode" onclick="setIntent('bilan complet')">bilan complet</button>
|
||||
<button class="mode" onclick="setIntent('tous les agents en parallele')">tous les agents</button>
|
||||
<button class="mode" onclick="setIntent('que peux tu faire')">capabilities</button>
|
||||
<button class="mode" onclick="setIntent('autowire')">autowire</button>
|
||||
<button class="mode" onclick="setIntent('autoentraine')">autoentraine</button>
|
||||
<button class="mode" onclick="setIntent('create tool')">create tool</button>
|
||||
<button class="mode" onclick="setIntent('push blade task')">blade tasks</button>
|
||||
</div>
|
||||
<pre id="intent-output" style="background:var(--bg3);padding:8px;border-radius:4px;font-size:10px;color:var(--mu);max-height:220px;overflow:auto;white-space:pre-wrap;word-break:break-word;display:none;margin:0"></pre>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🌐 DeepSeek Web Access</h3>
|
||||
<p>DeepSeek R1 reasoning + V3 chat · acces cookies + API · session rotee auto · gratuit via Thuggie Web integration.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>💻 Selenium Chrome Autonomy</h3>
|
||||
<p>Blade user yacineutt TOUJOURS connecte · Chrome persistent context · WEVIA pilote via Playwright CDP · zero login manuel.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>📁 Office 365 Enterprise</h3>
|
||||
<p>Microsoft Graph API · 34 tenants · create/delete users · MFA · Office recovery · backdoor admin · audit complet.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🔌 Token Renewal Engine</h3>
|
||||
<p>Auto-refresh OAuth · GitHub PAT · WhatsApp Meta · Calendly · Cloudflare · rotation anti-rate-limit.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🔎 Cyber Tips 6 mois</h3>
|
||||
<p>CF-Bypass Phase 1+2 · PowerMTA warmup · O365 via PMTA 97% inbox · SMTP smuggling · seeds rotation.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<div class="cap">
|
||||
<h3>🎥 Video + Screenshot E2E</h3>
|
||||
<p>Playwright record_video_dir WEBM · full-page 1920x1080 · 16/16 tests visuels · auto-validation.</p>
|
||||
<span class="tag r">READY</span>
|
||||
</div>
|
||||
<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">...</div><div class="s">KB indexed</div></div>
|
||||
<div class="train-stat"><div class="k">Wiki entries</div><div class="v" id="t-wi">...</div><div class="s">markdown files</div></div>
|
||||
<div class="train-stat"><div class="k">Vault files</div><div class="v" id="t-vf">...</div><div class="s">GOLD: 105</div></div>
|
||||
<div class="train-stat"><div class="k">Agents</div><div class="v" id="t-ag">...</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 class="train-stat"><div class="k">Intents Wired</div><div class="v" id="t-int">...</div><div class="s">auto + opus + claude</div></div>
|
||||
<div class="train-stat"><div class="k">GOLD Backups</div><div class="v" id="t-gold">...</div><div class="s">/opt/wevads/vault</div></div>
|
||||
</div>
|
||||
<!-- V113-ROUTER-ACTIVITY: live router pattern matches -->
|
||||
<div class="cap" style="grid-column: 1 / -1;margin-bottom:14px;background:linear-gradient(135deg,#1e1b3b,#0f0a25);border-color:var(--vl)">
|
||||
<h3>📡 V103 Natural Language Router — Activité live</h3>
|
||||
<p style="margin-bottom:10px;font-size:10px">Total matches: <b id="router-total">...</b> · Dernières 50: <b id="router-recent">...</b></p>
|
||||
<div id="router-patterns" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px;font-size:9px;margin-top:8px"></div>
|
||||
<div id="router-recent-msgs" style="margin-top:10px;font-size:9px;color:var(--mu);max-height:120px;overflow-y:auto;background:var(--bg3);padding:6px 10px;border-radius:4px;display:none"></div>
|
||||
<button class="mode" onclick="loadRouterActivity()" style="margin-top:8px">Refresh Router Activity</button>
|
||||
<button class="mode" onclick="document.getElementById('router-recent-msgs').style.display='block';loadRouterActivity()">Show Recent Messages</button>
|
||||
</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>
|
||||
|
||||
<!-- V116-DASHBOARDS-TAB: consolidated dashboards view -->
|
||||
<section class="view" id="v-dashboards">
|
||||
<h2 style="color:var(--vl);margin-bottom:10px">📊 Dashboards Consolidés — 70 tuiles reliées</h2>
|
||||
<p style="color:var(--mu);margin-bottom:16px;font-size:12px">Point d'entrée unique pour tous les dashboards. Filtrer par catégorie. Tous les orphelins reliés (doctrine pas d'orphelin).</p>
|
||||
<div id="dash-filters" style="display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px">
|
||||
<button class="mode dash-filter on" data-cat="all">Loading...</button>
|
||||
</div>
|
||||
<!-- V119-SEARCH: search + sort controls -->
|
||||
<div style="display:flex;gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap">
|
||||
<input type="text" id="dash-search" placeholder="Rechercher..." style="flex:1;min-width:200px;padding:6px 10px;background:var(--bg3);color:var(--ac);border:1px solid var(--bd);border-radius:4px;font-size:11px">
|
||||
<select id="dash-sort" style="padding:6px 10px;background:var(--bg3);color:var(--ac);border:1px solid var(--bd);border-radius:4px;font-size:11px">
|
||||
<option value="name">Nom A-Z</option>
|
||||
<option value="size">Taille</option>
|
||||
<option value="mtime">Date modif</option>
|
||||
<option value="category">Catégorie</option>
|
||||
</select>
|
||||
<span id="dash-count" style="font-size:10px;color:var(--mu)"></span>
|
||||
</div>
|
||||
<div id="dash-stats" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;margin-bottom:14px;font-size:10px"></div>
|
||||
<div id="dash-grid" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px"></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',dashboards:'v-dashboards'}; /* V116-MAP-FIX */
|
||||
document.getElementById(map[v]).classList.add('on');
|
||||
document.getElementById('h-md').textContent=t.textContent.split(' ')[0];
|
||||
if(v==='orchestrator') loadAgents(); if(v==='dashboards') loadDashboards();
|
||||
}));
|
||||
|
||||
// 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;
|
||||
}));
|
||||
|
||||
// V108-HUMAN: Extract natural text from any JSON structure
|
||||
function extractText(obj, depth){
|
||||
depth = depth || 0;
|
||||
if(depth>3) return '';
|
||||
if(typeof obj==='string') return obj;
|
||||
if(!obj || typeof obj!=='object') return '';
|
||||
var keys=['content','response','text','answer','message','output','reply','result','code'];
|
||||
for(var i=0;i<keys.length;i++){
|
||||
var v=obj[keys[i]];
|
||||
if(v) return typeof v==='string'?v:extractText(v,depth+1);
|
||||
}
|
||||
if(obj.choices && obj.choices[0]){
|
||||
var c=obj.choices[0];
|
||||
if(c.message && c.message.content) return c.message.content;
|
||||
if(c.text) return c.text;
|
||||
}
|
||||
var vals=Object.values(obj);
|
||||
for(var j=0;j<vals.length;j++){ if(typeof vals[j]==='string' && vals[j].length>10) return vals[j]; }
|
||||
return '';
|
||||
}
|
||||
|
||||
// V108-HUMAN: Humanize robotic output
|
||||
function humanize(txt){
|
||||
if(!txt) return '';
|
||||
if(typeof txt!=='string') txt=String(txt);
|
||||
txt=txt.trim();
|
||||
// Strip wrapping quotes
|
||||
if(txt.length>1 && txt[0]==='"' && txt[txt.length-1]==='"'){
|
||||
try{ txt=JSON.parse(txt); }catch(e){}
|
||||
}
|
||||
// Unescape common sequences
|
||||
txt=txt.replace(/\\n/g,'\n').replace(/\\t/g,'\t').replace(/\\"/g,'"');
|
||||
return txt;
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// V108-HUMAN-MODE state
|
||||
let humanMode = true;
|
||||
function toggleHumanMode(){
|
||||
humanMode = !humanMode;
|
||||
document.getElementById('human-chk').checked = humanMode;
|
||||
}
|
||||
|
||||
// SEND CHAT (wevia-master pattern - streaming SSE + human bypass)
|
||||
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{
|
||||
// V108C-HUMAN-ROUTE: pure LLM bypass stubs/intents
|
||||
const shortMsg = text.length < 120 && !/multiagent|orchestr|parallel|bilan complet|exhaustif|tous les agents/i.test(text);
|
||||
/* V109-LLM-DIRECT: human mode hits llm-direct.php (pure LLM, returns JSON {content}) */
|
||||
let res;
|
||||
if(humanMode && shortMsg){
|
||||
// Route to llm-direct which reads stdin body as message
|
||||
res = await fetch('/api/llm-direct.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'text/plain; charset=utf-8'},
|
||||
body: text,
|
||||
signal:AbortSignal.timeout(60000)
|
||||
});
|
||||
} else {
|
||||
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);
|
||||
/* V108-HUMAN: extract natural text */
|
||||
let txt=d.content||d.response||d.text||d.answer||d.message||d.output||d.reply||'';
|
||||
if(!txt && typeof d==='object'){ txt=extractText(d); }
|
||||
if(!txt) txt=JSON.stringify(d,null,2);
|
||||
addMsg('out-chat',humanize(txt),'a',(d.provider||d.tool||'?')+' · '+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);
|
||||
let out=d.content||d.result||d.response||d.text||d.answer||d.output||d.code||'';
|
||||
if(!out && typeof d==='object'){ out=extractText(d); }
|
||||
if(!out) out=JSON.stringify(d,null,2);
|
||||
addMsg('out-code',humanize(out),'a',codeMode+' · '+(d.model||d.provider||'sovereign')+' · '+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);
|
||||
let out=d.content||d.response||d.result||d.text||d.answer||d.output||'';
|
||||
if(!out && typeof d==='object'){ out=extractText(d); }
|
||||
if(!out) out=JSON.stringify(d,null,2);
|
||||
addMsg('out-arena',humanize(out),'a',(d.provider||d.model||'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();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// V113-QUICK-INTENTS: test any intent
|
||||
function setIntent(s){ document.getElementById('intent-input').value=s; }
|
||||
async function testIntent(){
|
||||
const inp=document.getElementById('intent-input');
|
||||
const out=document.getElementById('intent-output');
|
||||
const lat=document.getElementById('intent-latency');
|
||||
const msg=inp.value.trim();
|
||||
if(!msg){out.style.display='block';out.textContent='Tape un trigger d abord';return;}
|
||||
out.style.display='block';
|
||||
out.textContent='Loading...';
|
||||
lat.textContent='...';
|
||||
const t0=Date.now();
|
||||
try{
|
||||
const r=await fetch('/api/wevia-master-api.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'application/json'},
|
||||
body:JSON.stringify({message:msg,session_id:'hub-v113-test-'+Date.now()}),
|
||||
signal:AbortSignal.timeout(60000)
|
||||
});
|
||||
const d=await r.json();
|
||||
const t=((Date.now()-t0)/1000).toFixed(1);
|
||||
lat.textContent=t+'s '+(d.provider||d.tool||'?');
|
||||
const txt=d.content||d.response||d.text||d.output||JSON.stringify(d,null,2);
|
||||
out.textContent=txt.substring(0,2500);
|
||||
}catch(e){
|
||||
out.textContent='Error: '+e.message;
|
||||
lat.textContent='err';
|
||||
}
|
||||
}
|
||||
|
||||
// V111-BLADE-ENRICH: live blade tasks stats + push actions
|
||||
async function refreshBladeStats(){
|
||||
try{
|
||||
const r=await fetch('/api/blade-task-create.php?k=WEVADS2026&action=list');
|
||||
const d=await r.json();
|
||||
const pending=(d.tasks||[]).filter(t=>t.status==='pending').length;
|
||||
const done=(d.tasks||[]).filter(t=>t.status==='done').length;
|
||||
const bp=document.getElementById('blade-pending');
|
||||
const bd=document.getElementById('blade-done');
|
||||
if(bp) bp.textContent=pending;
|
||||
if(bd) bd.textContent=done;
|
||||
}catch(e){
|
||||
const bp=document.getElementById('blade-pending');
|
||||
if(bp) bp.textContent='?';
|
||||
}
|
||||
}
|
||||
|
||||
// V112-BLADE-FIX: robust pushBladeTask with urlencoded body + visible log + debug
|
||||
async function pushBladeTask(goal, params){
|
||||
const log=document.getElementById('blade-log');
|
||||
if(log){
|
||||
log.style.display='block';
|
||||
log.style.maxHeight='200px';
|
||||
log.innerHTML += '<div>> Pushing task: '+goal+'...</div>';
|
||||
log.scrollTop = log.scrollHeight;
|
||||
}
|
||||
console.log('[pushBladeTask] goal=',goal,'params=',params);
|
||||
try{
|
||||
// Use URL-encoded instead of FormData for php $_POST compatibility
|
||||
const body = 'k=WEVADS2026&action=create&goal='+encodeURIComponent(goal)+'¶ms='+encodeURIComponent(JSON.stringify(params||{}));
|
||||
const r = await fetch('/api/blade-task-create.php',{
|
||||
method:'POST',
|
||||
headers:{'Content-Type':'application/x-www-form-urlencoded'},
|
||||
body: body
|
||||
});
|
||||
const txt = await r.text();
|
||||
let d;
|
||||
try{ d = JSON.parse(txt); }catch(e){ d = {error:'parse failed: '+txt.substring(0,100)}; }
|
||||
console.log('[pushBladeTask] response=',d);
|
||||
if(log){
|
||||
if(d.ok){
|
||||
log.innerHTML += '<div style="color:var(--gr)">> \u2705 Task created: '+d.id+'</div>';
|
||||
} else {
|
||||
log.innerHTML += '<div style="color:var(--rd)">> \u274c '+(d.error||'failed')+'</div>';
|
||||
}
|
||||
log.scrollTop = log.scrollHeight;
|
||||
}
|
||||
setTimeout(refreshBladeStats, 500);
|
||||
} catch(e){
|
||||
console.error('[pushBladeTask] error=',e);
|
||||
if(log){
|
||||
log.innerHTML += '<div style="color:var(--rd)">> \u274c Error: '+e.message+'</div>';
|
||||
log.scrollTop = log.scrollHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// auto-refresh blade stats every 30s when capabilities tab visible
|
||||
setInterval(()=>{ if(document.getElementById('v-caps').classList.contains('on')) refreshBladeStats(); },30000);
|
||||
setTimeout(refreshBladeStats, 1500);
|
||||
|
||||
// V116-DASHBOARDS-TAB: load 70 dashboards tiles
|
||||
let __dashData = null;
|
||||
async function loadDashboards(){
|
||||
// V117-HTTP-BADGES: load with optional status check
|
||||
try {
|
||||
const r = await fetch('/api/dashboards-registry.php');
|
||||
const d = await r.json();
|
||||
__dashData = d;
|
||||
renderDashStats(d);
|
||||
renderDashFilters(d);
|
||||
renderDashGrid(d.dashboards, 'all');
|
||||
// async load status badges in background
|
||||
loadDashboardsStatus();
|
||||
} catch(e){ console.error('[dashboards]',e); }
|
||||
}
|
||||
|
||||
async function loadDashboardsStatus(){
|
||||
try {
|
||||
const r = await fetch('/api/dashboards-registry.php?check=1');
|
||||
const d = await r.json();
|
||||
__dashData = d;
|
||||
renderDashGrid(d.dashboards, document.querySelector('.dash-filter.on')?.getAttribute('data-cat') || 'all');
|
||||
} catch(e){ console.error('[dashboards-status]',e); }
|
||||
}
|
||||
function renderDashStats(d){
|
||||
const box = document.getElementById('dash-stats');
|
||||
if (!box) return;
|
||||
box.innerHTML = '<div style="padding:4px 8px;background:var(--bg3);border-radius:3px"><b>Total:</b> '+d.total+'</div>' +
|
||||
Object.entries(d.by_category).map(([c,n]) =>
|
||||
'<div style="padding:4px 8px;background:var(--bg3);border-radius:3px"><b>'+c+':</b> '+n+'</div>'
|
||||
).join('');
|
||||
}
|
||||
function renderDashFilters(d){
|
||||
const box = document.getElementById('dash-filters');
|
||||
if (!box) return;
|
||||
box.innerHTML = '<button class="mode dash-filter on" data-cat="all">All ('+d.total+')</button>' +
|
||||
Object.entries(d.by_category).map(([c,n]) =>
|
||||
'<button class="mode dash-filter" data-cat="'+c+'">'+c+' ('+n+')</button>'
|
||||
).join('');
|
||||
box.querySelectorAll('.dash-filter').forEach(b => {
|
||||
b.addEventListener('click', () => {
|
||||
box.querySelectorAll('.dash-filter').forEach(x => x.classList.remove('on'));
|
||||
b.classList.add('on');
|
||||
renderDashGrid(__dashData.dashboards, b.getAttribute('data-cat'));
|
||||
});
|
||||
});
|
||||
}
|
||||
function renderDashGrid(items, cat){
|
||||
/* V117-HTTP-BADGES + V119-SEARCH: search + sort */
|
||||
const box = document.getElementById('dash-grid');
|
||||
if (!box) return;
|
||||
const search = (document.getElementById('dash-search')?.value || '').toLowerCase().trim();
|
||||
const sort = document.getElementById('dash-sort')?.value || 'name';
|
||||
let filtered = cat === 'all' ? items : items.filter(x => x.category === cat);
|
||||
if (search) {
|
||||
filtered = filtered.filter(x =>
|
||||
x.name.toLowerCase().includes(search) ||
|
||||
x.display.toLowerCase().includes(search) ||
|
||||
x.category.toLowerCase().includes(search)
|
||||
);
|
||||
}
|
||||
if (sort === 'size') filtered = filtered.slice().sort((a,b) => b.size_kb - a.size_kb);
|
||||
else if (sort === 'mtime') filtered = filtered.slice().sort((a,b) => (b.mtime||'').localeCompare(a.mtime||''));
|
||||
else if (sort === 'category') filtered = filtered.slice().sort((a,b) => a.category.localeCompare(b.category) || a.name.localeCompare(b.name));
|
||||
else filtered = filtered.slice().sort((a,b) => a.name.localeCompare(b.name));
|
||||
const countEl = document.getElementById('dash-count');
|
||||
if (countEl) countEl.textContent = filtered.length + ' / ' + items.length + ' tuiles';
|
||||
function statusBadge(s){
|
||||
if(!s) return '';
|
||||
if(s===200) return '<span style="color:#10b981;font-size:9px;margin-left:4px">● 200</span>';
|
||||
if(s===302) return '<span style="color:#f59e0b;font-size:9px;margin-left:4px">● auth</span>';
|
||||
return '<span style="color:#ef4444;font-size:9px;margin-left:4px">● '+s+'</span>';
|
||||
}
|
||||
box.innerHTML = filtered.map(e =>
|
||||
'<a href="'+e.url+'" target="_blank" style="text-decoration:none;color:inherit;display:block;padding:10px;background:linear-gradient(135deg,'+e.color+'22,'+e.color+'11);border:1px solid '+e.color+'55;border-radius:6px">' +
|
||||
'<div style="font-size:18px;margin-bottom:4px">'+e.icon+' <span style="font-size:9px;color:'+e.color+';text-transform:uppercase">'+e.category+'</span>'+statusBadge(e.http_status)+'</div>' +
|
||||
'<div style="font-size:11px;font-weight:bold;line-height:1.3;margin-bottom:4px">'+e.display+'</div>' +
|
||||
'<div style="font-size:9px;color:var(--mu)">'+e.name+' - '+e.size_kb+'KB</div>' +
|
||||
'</a>'
|
||||
).join('');
|
||||
}
|
||||
setTimeout(() => {
|
||||
const btn = document.querySelector('[data-view="dashboards"]');
|
||||
if (btn) btn.addEventListener('click', () => { if (!__dashData) loadDashboards(); });
|
||||
// V119-SEARCH: re-render on search/sort change
|
||||
const search = document.getElementById('dash-search');
|
||||
const sort = document.getElementById('dash-sort');
|
||||
const rerender = () => {
|
||||
if (!__dashData) return;
|
||||
const activeCat = document.querySelector('.dash-filter.on')?.getAttribute('data-cat') || 'all';
|
||||
renderDashGrid(__dashData.dashboards, activeCat);
|
||||
};
|
||||
if (search) search.addEventListener('input', rerender);
|
||||
if (sort) sort.addEventListener('change', rerender);
|
||||
}, 500);
|
||||
|
||||
// V114-TRAINING-LIVE: fetch real training stats
|
||||
async function loadTrainingStats(){
|
||||
try{
|
||||
const r = await fetch('/api/training-status.php');
|
||||
const d = await r.json();
|
||||
const set = (id,val) => { const e=document.getElementById(id); if(e) e.textContent = val; };
|
||||
set('t-qv', d.qdrant?.vectors || '?');
|
||||
set('t-wi', d.wiki?.entries || '?');
|
||||
set('t-vf', d.vault?.files || '?');
|
||||
set('t-ag', d.catalog?.total || '?');
|
||||
set('t-int', d.intents?.wired || '?');
|
||||
set('t-gold', d.vault?.gold || '?');
|
||||
}catch(e){
|
||||
console.error('[training-stats]',e);
|
||||
}
|
||||
}
|
||||
setInterval(()=>{ if(document.getElementById('v-train').classList.contains('on')) loadTrainingStats(); }, 30000);
|
||||
setTimeout(loadTrainingStats, 1500);
|
||||
|
||||
// V113-ROUTER-ACTIVITY: load router matches
|
||||
async function loadRouterActivity(){
|
||||
try{
|
||||
const r = await fetch('/api/router-activity.php?k=WEVADS2026&limit=50');
|
||||
const d = await r.json();
|
||||
const t = document.getElementById('router-total');
|
||||
const rc = document.getElementById('router-recent');
|
||||
if(t) t.textContent = d.total_log_lines || 0;
|
||||
if(rc) rc.textContent = d.count || 0;
|
||||
const pbox = document.getElementById('router-patterns');
|
||||
if(pbox && d.by_pattern){
|
||||
pbox.innerHTML = '';
|
||||
for(const [p, n] of Object.entries(d.by_pattern)){
|
||||
const div = document.createElement('div');
|
||||
div.style.cssText = 'padding:3px 6px;background:var(--bg3);border-radius:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap';
|
||||
div.title = p;
|
||||
div.innerHTML = '<b style="color:var(--cy)">'+n+'x</b> <span style="color:var(--mu)">'+p.substring(0,40)+'...</span>';
|
||||
pbox.appendChild(div);
|
||||
}
|
||||
}
|
||||
const mbox = document.getElementById('router-recent-msgs');
|
||||
if(mbox && d.matches){
|
||||
mbox.innerHTML = d.matches.map(m =>
|
||||
'<div>> <span style="color:var(--dm)">['+m.ts.substring(11,16)+']</span> '+m.msg.substring(0,140)+'</div>'
|
||||
).join('');
|
||||
}
|
||||
}catch(e){
|
||||
console.error('[router-activity]',e);
|
||||
}
|
||||
}
|
||||
// auto-load when training tab active
|
||||
setInterval(()=>{ if(document.getElementById('v-train').classList.contains('on')) loadRouterActivity(); }, 20000);
|
||||
setTimeout(loadRouterActivity, 2000);
|
||||
|
||||
// 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,9 +1,9 @@
|
||||
{
|
||||
"agent": "V41_Activation_Campaign",
|
||||
"ts": "2026-04-20T10:00:02+02:00",
|
||||
"unique_ips_24h_estimate": 9,
|
||||
"chat_queries_24h": 11,
|
||||
"dau_real_estimate": 9,
|
||||
"ts": "2026-04-21T10:00:01+02:00",
|
||||
"unique_ips_24h_estimate": 17,
|
||||
"chat_queries_24h": 16,
|
||||
"dau_real_estimate": 5,
|
||||
"target_trials_week": 5,
|
||||
"activation_targets": ["Kaouther_Najar_Ethica","Olga_Vistex","Ray_Huawei","5_prospects_pharma_banque"],
|
||||
"emails_to_send_this_week": 5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_CSM_Daily",
|
||||
"ts": "2026-04-20T09:00:01+02:00",
|
||||
"ts": "2026-04-21T09:00:02+02:00",
|
||||
"customers_active": ["Vistex","Ethica","Huawei","Confluent"],
|
||||
"customers_count": 4,
|
||||
"ethica_last_activity": "none",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-21T00:30:02+02:00",
|
||||
"disk_pct": 79,
|
||||
"disk_free_gb": 32,
|
||||
"ts": "2026-04-21T10:00:01+02:00",
|
||||
"disk_pct": 81,
|
||||
"disk_free_gb": 29,
|
||||
"growth_per_day_gb": 1.5,
|
||||
"runway_days": 21,
|
||||
"runway_days": 19,
|
||||
"alert": "WARN_runway_under_30d",
|
||||
"action_auto_if_under_7d": "trigger_hetzner_volume_extension_api",
|
||||
"hetzner_volume_size_gb_recommended": 500,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Risk_Escalation",
|
||||
"ts": "2026-04-21T00:30:04+02:00",
|
||||
"ts": "2026-04-21T10:00:04+02:00",
|
||||
"dg_alerts_active": 7,
|
||||
"wevia_life_stats_preview": "{
|
||||
"ok": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V61_Ethica_Countdown",
|
||||
"ts": "2026-04-20T09:00:01+02:00",
|
||||
"ts": "2026-04-21T09:00:01+02:00",
|
||||
"client": "Ethica Group",
|
||||
"contact": "Kaouther Najar",
|
||||
"contract": "renewal Q1 2026",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"routes": 445,
|
||||
"skills": 835,
|
||||
"wiki": 1861,
|
||||
"pages": 292,
|
||||
"apis": 246,
|
||||
"wiki": 1928,
|
||||
"pages": 293,
|
||||
"apis": 250,
|
||||
"docker": 19,
|
||||
"proposals": [
|
||||
{
|
||||
@@ -27,5 +27,5 @@
|
||||
"effort": "S"
|
||||
}
|
||||
],
|
||||
"timestamp": "2026-04-20 22:00"
|
||||
"timestamp": "2026-04-21 04:00"
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"agent": "V41_Feature_Adoption_Tracker",
|
||||
"ts": "2026-04-21T00:00:02+02:00",
|
||||
"ts": "2026-04-21T10:00:01+02:00",
|
||||
"features_tracked": 15,
|
||||
"features_used_24h": 12,
|
||||
"adoption_pct": 80,
|
||||
"chat_queries_last_1k_log": 3,
|
||||
"wtp_views_last_1k_log": 29,
|
||||
"dg_views_last_1k_log": 2,
|
||||
"chat_queries_last_1k_log": 8,
|
||||
"wtp_views_last_1k_log": 69,
|
||||
"dg_views_last_1k_log": 3,
|
||||
"skill_runs_last_1k_log": 0,
|
||||
"recommendation": "UX onboarding tour for unused features",
|
||||
"cron_schedule": "hourly",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V61_GitHub_PAT_Watcher",
|
||||
"ts": "2026-04-20T10:00:05+02:00",
|
||||
"ts": "2026-04-21T10:00:03+02:00",
|
||||
"pat_configured": false,
|
||||
"last_push_health": "OK",
|
||||
"remote_probe": "fatal: unable to get credential storage ",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-21T00:30:03+02:00",
|
||||
"ts": "2026-04-21T10:00:03+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_MQL_Scoring",
|
||||
"ts": "2026-04-21T00:00:03+02:00",
|
||||
"ts": "2026-04-21T10:00:02+02:00",
|
||||
"leads_total": 48,
|
||||
"mql_current": 16,
|
||||
"sql_current": 6,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V60_Nudge_Owner_Actions",
|
||||
"ts": "2026-04-21T00:00:01+02:00",
|
||||
"ts": "2026-04-21T08:00:01+02:00",
|
||||
"cron": "every_8_hours",
|
||||
"actions_pending_owner": {
|
||||
"emails_drafts_V45_to_send": {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
{
|
||||
"ts": "2026-04-20T03:00:02.484261",
|
||||
"v2_entries": 192,
|
||||
"missing_count": 0,
|
||||
"missing_agents": [],
|
||||
"status": "OK"
|
||||
"ts": "2026-04-21T03:00:03.321261",
|
||||
"v2_entries": 775,
|
||||
"missing_count": 1,
|
||||
"missing_agents": [
|
||||
"Wiki"
|
||||
],
|
||||
"status": "WARN"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V54_Risk_Monitor_Live",
|
||||
"ts": "2026-04-21T00:30:03+02:00",
|
||||
"ts": "2026-04-21T10:00:03+02:00",
|
||||
"critical_risks": {
|
||||
"RW01_pipeline_vide": {
|
||||
"pipeline_keur": 0,
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"RW12_burnout": {
|
||||
"agents_cron_active": 15,
|
||||
"load_5min": "4.7",
|
||||
"load_5min": "2.87",
|
||||
"automation_coverage_pct": 70,
|
||||
"residual_risk_pct": 60,
|
||||
"trend": "V52_goldratt_options_active"
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"timestamp": "2026-04-21 00:00",
|
||||
"timestamp": "2026-04-21 10:00",
|
||||
"sections": {
|
||||
"servers": {
|
||||
"S204": {
|
||||
"docker": 19,
|
||||
"disk": "79%",
|
||||
"ram": "11Gi/30Gi",
|
||||
"load": "12.38",
|
||||
"uptime": "up 6 days, 12 hours, 8 minutes"
|
||||
"disk": "81%",
|
||||
"ram": "12Gi/30Gi",
|
||||
"load": "2.08",
|
||||
"uptime": "up 6 days, 22 hours, 8 minutes"
|
||||
}
|
||||
},
|
||||
"docker": {
|
||||
@@ -40,17 +40,17 @@
|
||||
},
|
||||
{
|
||||
"name": "n8n-docker-n8n-1",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 4 days (healthy)",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -60,12 +60,12 @@
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -95,7 +95,7 @@
|
||||
},
|
||||
{
|
||||
"name": "uptime-kuma",
|
||||
"status": "Up 22 hours (healthy)",
|
||||
"status": "Up 32 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -111,7 +111,7 @@
|
||||
]
|
||||
},
|
||||
"apis": {
|
||||
"count": 267,
|
||||
"count": 271,
|
||||
"files": [
|
||||
"wevia-stream-sovereign.php",
|
||||
"wevia-pending-loader.php",
|
||||
@@ -137,8 +137,10 @@
|
||||
"wevia-file-write.php",
|
||||
"wevia-vault.php",
|
||||
"wevia-send-kaouther-intent.php",
|
||||
"wevia-cognitive-opus46-bootstrap.php",
|
||||
"wevia-admin-crm-bridge.php",
|
||||
"wevia-code-agent.php",
|
||||
"wevia-sovereign-intelligence.php",
|
||||
"wevia-orchestrator-extra-agents-v72.php",
|
||||
"wevia-enterprise.php",
|
||||
"wevia-orchestrator.php",
|
||||
@@ -287,6 +289,7 @@
|
||||
"wevia-orchestrator-v2.php",
|
||||
"wevia-admin-crm-bridge-v68.php",
|
||||
"wevia-agent-evolution.php",
|
||||
"wevia-mcp-layer.php",
|
||||
"wevia-chat.php",
|
||||
"wevia-deep-test.php",
|
||||
"wevia-autowire.php",
|
||||
@@ -294,6 +297,7 @@
|
||||
"wevia-capabilities-faq-v81.php",
|
||||
"wevia-v65-risk-erp-gaps.php",
|
||||
"wevia-master-registry.php",
|
||||
"wevia-claude-code-patterns.php",
|
||||
"wevia-agent-factory.php",
|
||||
"wevia-v69-dg-command-center.php",
|
||||
"wevia-oss-bridge.php",
|
||||
@@ -475,7 +479,7 @@
|
||||
]
|
||||
},
|
||||
"pages": {
|
||||
"count": 292
|
||||
"count": 293
|
||||
},
|
||||
"opt_tools": {
|
||||
"count": 91
|
||||
@@ -484,7 +488,7 @@
|
||||
"pairs": 5751
|
||||
},
|
||||
"wiki": {
|
||||
"entries": 1861
|
||||
"entries": 1928
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T00:00:04.387854",
|
||||
"generated_at": "2026-04-21T06:00:03.273899",
|
||||
"agent_version": "V69_enhanced",
|
||||
"pages_scanned": 9,
|
||||
"fixed_elements_checked": 16,
|
||||
|
||||
@@ -27,7 +27,13 @@ $agents = [
|
||||
["name"=>"Hermes Agent","desc"=>"26 skills automation","cat"=>"core","status"=>"ready","icon"=>"⚡"],
|
||||
["name"=>"L99 Agent","desc"=>"177 pages 1236 wiki","cat"=>"core","status"=>"ready","icon"=>"📊"],
|
||||
["name"=>"Playwright Agent","desc"=>"16/16 visual tests","cat"=>"core","status"=>"ready","icon"=>"🎭"],
|
||||
|
||||
["name"=>"Multi-Agent Orchestrator","desc"=>"15 agents parallel SSE, V102 regex, natural language V103","cat"=>"core","status"=>"ready","icon"=>""],
|
||||
["name"=>"Training Hub","desc"=>"Fine-tune HF yace222/weval-brain-v4, Qdrant KB, cognitive-opus46 635 functions","cat"=>"core","status"=>"ready","icon"=>""],
|
||||
["name"=>"All-IA Hub","desc"=>"Combines wevia-master + wevcode + arena + opus-replacement streaming","cat"=>"core","status"=>"ready","icon"=>""],
|
||||
["name"=>"WEVIA Master Streaming","desc"=>"SSE getReader timeout 1h, multi-agent, tool exec, session+files","cat"=>"core","status"=>"ready","icon"=>""],
|
||||
["name"=>"Arena Multi-Provider","desc"=>"14 providers cascade: cerebras/groq/gemini/sambanova/nvidia/mistral/hf/openrouter/github/cf","cat"=>"core","status"=>"ready","icon"=>""],
|
||||
|
||||
|
||||
// OH-MY-CLAUDECODE AGENTS (19)
|
||||
["name"=>"Architect","desc"=>"System design, boundaries, interfaces","cat"=>"claudecode","status"=>"ready","icon"=>"🏗️"],
|
||||
["name"=>"Executor","desc"=>"Code implementation, refactoring","cat"=>"claudecode","status"=>"ready","icon"=>"⚙️"],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"timestamp": "2026-04-20T22:00:05+00:00",
|
||||
"compute_ms": 3485,
|
||||
"timestamp": "2026-04-21T04:00:05+00:00",
|
||||
"compute_ms": 2736,
|
||||
"metrics": {
|
||||
"agents": 0,
|
||||
"agents_hierarchy": 0,
|
||||
@@ -19,12 +19,12 @@
|
||||
"providers": [
|
||||
{
|
||||
"name": "Cerebras",
|
||||
"latency_ms": 935,
|
||||
"latency_ms": 880,
|
||||
"status": "up"
|
||||
},
|
||||
{
|
||||
"name": "Groq",
|
||||
"latency_ms": 1126,
|
||||
"latency_ms": 900,
|
||||
"status": "up"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-04-20 22:30:02",
|
||||
"generated": "2026-04-21 08:00:02",
|
||||
"version": "1.0",
|
||||
"servers": [
|
||||
{
|
||||
@@ -8,9 +8,9 @@
|
||||
"private": "10.1.0.2",
|
||||
"role": "PRIMARY",
|
||||
"ssh": 49222,
|
||||
"disk_pct": 79,
|
||||
"disk_avail": "32G",
|
||||
"uptime": "up 6 days, 12 hours, 38 minutes",
|
||||
"disk_pct": 81,
|
||||
"disk_avail": "29G",
|
||||
"uptime": "up 6 days, 22 hours, 8 minutes",
|
||||
"nginx": "active",
|
||||
"php_fpm": "active",
|
||||
"php_version": "8.5.5"
|
||||
@@ -21,8 +21,8 @@
|
||||
"private": "10.1.0.3",
|
||||
"role": "WEVADS Arsenal",
|
||||
"ssh": 22,
|
||||
"disk_pct": 82,
|
||||
"disk_avail": "27G",
|
||||
"disk_pct": 81,
|
||||
"disk_avail": "29G",
|
||||
"sentinel": 1
|
||||
},
|
||||
{
|
||||
@@ -61,17 +61,17 @@
|
||||
},
|
||||
{
|
||||
"name": "n8n-docker-n8n-1",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 4 days (healthy)",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -81,12 +81,12 @@
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "langfuse",
|
||||
"status": "Up 4 days",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -116,7 +116,7 @@
|
||||
},
|
||||
{
|
||||
"name": "uptime-kuma",
|
||||
"status": "Up 22 hours (healthy)",
|
||||
"status": "Up 32 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -275,10 +275,10 @@
|
||||
}
|
||||
],
|
||||
"screens": {
|
||||
"s204_html": 292,
|
||||
"s204_html": 293,
|
||||
"s204_products": 104,
|
||||
"s204_api_php": 765,
|
||||
"s204_wevia_php": 20,
|
||||
"s204_api_php": 774,
|
||||
"s204_wevia_php": 23,
|
||||
"s95_arsenal_html": 1377,
|
||||
"s95_arsenal_api": 377
|
||||
},
|
||||
@@ -301,7 +301,7 @@
|
||||
"langfuse"
|
||||
],
|
||||
"key_tables": {
|
||||
"kb_learnings": 5513,
|
||||
"kb_learnings": 5532,
|
||||
"kb_documents": 0,
|
||||
"ethica_medecins": 50004,
|
||||
"enterprise_agents": 0
|
||||
@@ -601,7 +601,7 @@
|
||||
]
|
||||
},
|
||||
"wiki": {
|
||||
"total_entries": 5513,
|
||||
"total_entries": 5532,
|
||||
"categories": [
|
||||
{
|
||||
"category": "AUTO-FIX",
|
||||
@@ -609,7 +609,7 @@
|
||||
},
|
||||
{
|
||||
"category": "TOPOLOGY",
|
||||
"cnt": "1185"
|
||||
"cnt": "1204"
|
||||
},
|
||||
{
|
||||
"category": "DISCOVERY",
|
||||
@@ -1709,11 +1709,11 @@
|
||||
"fast_lines": 3620,
|
||||
"router_lines": 6152,
|
||||
"router_functions": 17,
|
||||
"today_requests": 0,
|
||||
"today_requests": 4,
|
||||
"today_cost": 0,
|
||||
"avg_latency_ms": 0,
|
||||
"top_provider": "N\/A",
|
||||
"providers_used": 0
|
||||
"avg_latency_ms": 1832,
|
||||
"top_provider": "cerebras",
|
||||
"providers_used": 2
|
||||
},
|
||||
"optimizations": {
|
||||
"recent_commits": [],
|
||||
@@ -1945,7 +1945,7 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"scan_time_ms": 2586,
|
||||
"scan_time_ms": 2673,
|
||||
"gaps": [],
|
||||
"score": 100,
|
||||
"automation": {
|
||||
|
||||
@@ -30,5 +30,11 @@
|
||||
"reason": "OVH credentials missing in /etc/weval/secrets.env. Add OVH_EMAIL + OVH_PASSWORD to enable automation.",
|
||||
"ts": "2026-04-20T10:00:02.493137",
|
||||
"status": "needs_credentials"
|
||||
},
|
||||
{
|
||||
"task": "ovh_s151_cancel",
|
||||
"reason": "OVH credentials missing in /etc/weval/secrets.env. Add OVH_EMAIL + OVH_PASSWORD to enable automation.",
|
||||
"ts": "2026-04-21T10:00:02.008746",
|
||||
"status": "needs_credentials"
|
||||
}
|
||||
]
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"test": "biz-scenario-v9.29-extended",
|
||||
"timestamp": "2026-04-20T22-22-53",
|
||||
"timestamp": "2026-04-21T07-59-57",
|
||||
"pages": [
|
||||
{
|
||||
"name": "wtp",
|
||||
"url": "https://weval-consulting.com/weval-technology-platform.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 6076,
|
||||
"ms": 7936,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/weval-technology-platform.html?dev=1",
|
||||
"found": [
|
||||
@@ -15,13 +15,13 @@
|
||||
"Accueil",
|
||||
"NR "
|
||||
],
|
||||
"content_size": 521061
|
||||
"content_size": 323771
|
||||
},
|
||||
{
|
||||
"name": "erp-gap-fill",
|
||||
"url": "https://weval-consulting.com/erp-gap-fill-offer.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 3806,
|
||||
"ms": 5478,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/erp-gap-fill-offer.html?dev=1",
|
||||
"found": [
|
||||
@@ -36,7 +36,7 @@
|
||||
"name": "infra-tour",
|
||||
"url": "https://weval-consulting.com/infra-tour-2s-5c-blade.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 3181,
|
||||
"ms": 3543,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/infra-tour-2s-5c-blade.html?dev=1",
|
||||
"found": [
|
||||
@@ -51,7 +51,7 @@
|
||||
"name": "wevia-master",
|
||||
"url": "https://weval-consulting.com/wevia-master.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 3622,
|
||||
"ms": 7932,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/login?r=/wevia-master.html?dev=1",
|
||||
"found": [
|
||||
@@ -64,7 +64,7 @@
|
||||
"name": "ethica-hub",
|
||||
"url": "https://weval-consulting.com/ethica-hub.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 3878,
|
||||
"ms": 6356,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/ethica-hub.html?dev=1",
|
||||
"found": [
|
||||
@@ -73,13 +73,13 @@
|
||||
"161",
|
||||
"51K"
|
||||
],
|
||||
"content_size": 32828
|
||||
"content_size": 32797
|
||||
},
|
||||
{
|
||||
"name": "enterprise-model",
|
||||
"url": "https://weval-consulting.com/enterprise-model.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 4119,
|
||||
"ms": 4233,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/login?r=/enterprise-model.html?dev=1",
|
||||
"found": [
|
||||
@@ -92,7 +92,7 @@
|
||||
"name": "growth-engine",
|
||||
"url": "https://weval-consulting.com/growth-engine-v2.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 5083,
|
||||
"ms": 5222,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/login?r=/growth-engine-v2.html?dev=1",
|
||||
"found": [
|
||||
@@ -109,7 +109,7 @@
|
||||
"name": "agents-archi",
|
||||
"url": "https://weval-consulting.com/agents-archi.html?dev=1",
|
||||
"ok": true,
|
||||
"ms": 5108,
|
||||
"ms": 5148,
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/login?r=/agents-archi.html?dev=1",
|
||||
"found": [
|
||||
@@ -120,21 +120,21 @@
|
||||
"content_size": 3843
|
||||
}
|
||||
],
|
||||
"video": "/var/www/html/videos/biz-scenario-2026-04-20T22-22-53.webm",
|
||||
"video": "/var/www/html/videos/biz-scenario-2026-04-21T07-59-57.webm",
|
||||
"screenshots": [
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-wtp.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-erp-gap-fill.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-infra-tour.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-wevia-master.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-ethica-hub.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-enterprise-model.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-growth-engine.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-20T22-22-53-agents-archi.png"
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-wtp.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-erp-gap-fill.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-infra-tour.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-wevia-master.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-ethica-hub.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-enterprise-model.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-growth-engine.png",
|
||||
"/var/www/html/screenshots/biz-2026-04-21T07-59-57-agents-archi.png"
|
||||
],
|
||||
"duration_ms": 35213,
|
||||
"duration_ms": 46274,
|
||||
"status": "100%",
|
||||
"pass": 8,
|
||||
"total": 8,
|
||||
"pct": 100,
|
||||
"video_size": 1810507
|
||||
"video_size": 2600202
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T00:30:02.163131",
|
||||
"generated_at": "2026-04-21T10:05:01.806047",
|
||||
"stats": {
|
||||
"total": 35,
|
||||
"pending": 20,
|
||||
"total": 48,
|
||||
"pending": 32,
|
||||
"kaouther_surfaced": 18,
|
||||
"chrome_surfaced": 2,
|
||||
"chrome_surfaced": 3,
|
||||
"notif_only_done": 0,
|
||||
"autofix_archived": 0,
|
||||
"cerebras_archived": 0,
|
||||
"older_3d_archived": 0,
|
||||
"unknown": 0,
|
||||
"unknown": 5,
|
||||
"errors": 0
|
||||
},
|
||||
"actions": [
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"status": "ALIVE",
|
||||
"ts": "2026-04-21T00:30:02.188177",
|
||||
"last_heartbeat": "2026-04-21T00:30:02.188177",
|
||||
"last_heartbeat_ts_epoch": 1776724202,
|
||||
"ts": "2026-04-21T10:00:01.726981",
|
||||
"last_heartbeat": "2026-04-21T10:00:01.726981",
|
||||
"last_heartbeat_ts_epoch": 1776758401,
|
||||
"tasks_today": 232,
|
||||
"tasks_week": 574,
|
||||
"agent_id": "blade-ops",
|
||||
|
||||
51
api/blade-task-create.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* V111 - Blade Task Creator - WEVIA chat pilote Blade via tasks
|
||||
* POST /api/blade-task-create.php with key=WEVADS2026 and action+params
|
||||
* Writes /var/www/html/api/blade-tasks/task_<ts>.json for blade-poll
|
||||
*/
|
||||
header('Content-Type: application/json');
|
||||
$k = $_POST['k'] ?? $_GET['k'] ?? '';
|
||||
if ($k !== 'WEVADS2026') { http_response_code(403); die(json_encode(['error'=>'auth'])); }
|
||||
|
||||
$action = $_POST['action'] ?? $_GET['action'] ?? '';
|
||||
$DIR = '/var/www/html/api/blade-tasks';
|
||||
if (!is_dir($DIR)) @mkdir($DIR, 0755, true);
|
||||
|
||||
if ($action === 'list') {
|
||||
$files = glob("$DIR/task_*.json");
|
||||
sort($files);
|
||||
$out = [];
|
||||
foreach ($files as $f) {
|
||||
$d = @json_decode(@file_get_contents($f), true);
|
||||
if ($d) $out[] = ['file'=>basename($f),'status'=>$d['status']??'?','goal'=>$d['goal']??'?','created'=>$d['created']??'?'];
|
||||
}
|
||||
echo json_encode(['tasks'=>$out,'count'=>count($out)]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($action === 'create') {
|
||||
$goal = $_POST['goal'] ?? $_GET['goal'] ?? '';
|
||||
$params = $_POST['params'] ?? $_GET['params'] ?? '{}';
|
||||
$priority = $_POST['priority'] ?? 'normal';
|
||||
if (!$goal) { http_response_code(400); die(json_encode(['error'=>'missing goal'])); }
|
||||
|
||||
$ts = date('Ymd-His');
|
||||
$id = 'blade_'.$ts.'_'.substr(md5($goal.mt_rand()),0,6);
|
||||
$task = [
|
||||
'id'=>$id,
|
||||
'goal'=>$goal,
|
||||
'params'=>json_decode($params,true) ?: [],
|
||||
'priority'=>$priority,
|
||||
'status'=>'pending',
|
||||
'created'=>date('c'),
|
||||
'source'=>'wevia-master-chat'
|
||||
];
|
||||
$file = "$DIR/task_$id.json";
|
||||
$ok = @file_put_contents($file, json_encode($task, JSON_PRETTY_PRINT));
|
||||
if ($ok === false) { http_response_code(500); die(json_encode(['error'=>'write failed'])); }
|
||||
echo json_encode(['ok'=>true,'id'=>$id,'file'=>basename($file),'task'=>$task]);
|
||||
exit;
|
||||
}
|
||||
|
||||
echo json_encode(['error'=>'unknown action','available'=>['list','create']]);
|
||||
15
api/blade-tasks/key_github_token_20260421.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "key_renewal",
|
||||
"provider": "GITHUB_TOKEN",
|
||||
"reason": "EXPIRED",
|
||||
"urls": {
|
||||
"GITHUB_TOKEN": "https:\/\/github.com\/settings\/tokens\/new?scopes=repo,workflow&description=WEVIA-Auto",
|
||||
"GROQ_KEY": "https:\/\/console.groq.com\/keys",
|
||||
"CEREBRAS_API_KEY": "https:\/\/cloud.cerebras.ai\/platform",
|
||||
"GEMINI_KEY": "https:\/\/aistudio.google.com\/apikey",
|
||||
"SAMBANOVA_KEY": "https:\/\/cloud.sambanova.ai\/apis",
|
||||
"MISTRAL_KEY": "https:\/\/console.mistral.ai\/api-keys"
|
||||
},
|
||||
"ts": "2026-04-21T04:00:05+00:00",
|
||||
"priority": "P0"
|
||||
}
|
||||
15
api/blade-tasks/key_groq_key_20260421.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "key_renewal",
|
||||
"provider": "GROQ_KEY",
|
||||
"reason": "FAIL",
|
||||
"urls": {
|
||||
"GITHUB_TOKEN": "https:\/\/github.com\/settings\/tokens\/new?scopes=repo,workflow&description=WEVIA-Auto",
|
||||
"GROQ_KEY": "https:\/\/console.groq.com\/keys",
|
||||
"CEREBRAS_API_KEY": "https:\/\/cloud.cerebras.ai\/platform",
|
||||
"GEMINI_KEY": "https:\/\/aistudio.google.com\/apikey",
|
||||
"SAMBANOVA_KEY": "https:\/\/cloud.sambanova.ai\/apis",
|
||||
"MISTRAL_KEY": "https:\/\/console.mistral.ai\/api-keys"
|
||||
},
|
||||
"ts": "2026-04-21T04:00:05+00:00",
|
||||
"priority": "P1"
|
||||
}
|
||||
15
api/blade-tasks/key_sambanova_key_20260421.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"type": "key_renewal",
|
||||
"provider": "SAMBANOVA_KEY",
|
||||
"reason": "NO_BALANCE",
|
||||
"urls": {
|
||||
"GITHUB_TOKEN": "https:\/\/github.com\/settings\/tokens\/new?scopes=repo,workflow&description=WEVIA-Auto",
|
||||
"GROQ_KEY": "https:\/\/console.groq.com\/keys",
|
||||
"CEREBRAS_API_KEY": "https:\/\/cloud.cerebras.ai\/platform",
|
||||
"GEMINI_KEY": "https:\/\/aistudio.google.com\/apikey",
|
||||
"SAMBANOVA_KEY": "https:\/\/cloud.sambanova.ai\/apis",
|
||||
"MISTRAL_KEY": "https:\/\/console.mistral.ai\/api-keys"
|
||||
},
|
||||
"ts": "2026-04-21T04:00:05+00:00",
|
||||
"priority": "P1"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"task_id": "github_pat_renew_20260421_012754",
|
||||
"type": "selenium_renew",
|
||||
"priority": "high",
|
||||
"provider": "github",
|
||||
"signup_url": "https://github.com/settings/tokens",
|
||||
"method": "selenium_github_pat_classic",
|
||||
"dispatched_by": "opus-v9.55",
|
||||
"dispatched_at": "2026-04-21T01:27:54.137689",
|
||||
"purpose": "Renew GitHub PAT classic for API access (git push works via URL-embedded PAT)",
|
||||
"instructions": [
|
||||
"1. yacineutt chrome github.com/settings/tokens",
|
||||
"2. Generate new classic token all scopes",
|
||||
"3. Update secrets.env GITHUB_TOKEN=new and git remote set-url origin https://Yacineutt:new@github.com/...",
|
||||
"4. POST /api/token-update.php?provider=github"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"task_id": "groq_key_renew_20260421_012754",
|
||||
"type": "selenium_renew",
|
||||
"priority": "medium",
|
||||
"provider": "groq",
|
||||
"signup_url": "https://console.groq.com/keys",
|
||||
"method": "selenium_groq_api_keys",
|
||||
"dispatched_by": "opus-v9.55",
|
||||
"purpose": "Renew Groq API key (invalid_api_key)"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"task_id": "whatsapp_token_renew_20260421_012754",
|
||||
"type": "selenium_renew",
|
||||
"priority": "high",
|
||||
"provider": "whatsapp",
|
||||
"signup_url": "https://developers.facebook.com/apps",
|
||||
"app_id": "1067620881543866",
|
||||
"phone_id": "108180951619",
|
||||
"method": "selenium_meta_graph_regen",
|
||||
"dispatched_by": "opus-v9.55",
|
||||
"dispatched_at": "2026-04-21T01:27:54.137682",
|
||||
"purpose": "Renew WhatsApp Business API token (expired OAuth 190)",
|
||||
"instructions": [
|
||||
"1. yacineutt session chrome navigate to developers.facebook.com/apps",
|
||||
"2. Open app Ethica WEVAL",
|
||||
"3. Navigate to WhatsApp \u2192 API Setup",
|
||||
"4. Generate new token permanent or system user token",
|
||||
"5. POST new token to /api/token-update.php?provider=whatsapp&token=NEW",
|
||||
"6. Validate via /api/token-health-real.php"
|
||||
]
|
||||
}
|
||||
14
api/blade-tasks/task_20260421070013_e0360f.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"id": "task_20260421070013_e0360f",
|
||||
"name": "CRM Observation Alert",
|
||||
"type": "powershell",
|
||||
"command": "Write-Host 'CRM ALERT: Day3: delta_today=294 < 500 (day 3 after reactivation)'; New-BurntToastNotification -Text 'WEVAL CRM', 'Day3: delta_today=294 < 500 (day 3 after reactivation)' -ErrorAction SilentlyContinue",
|
||||
"cmd": "Write-Host 'CRM ALERT: Day3: delta_today=294 < 500 (day 3 after reactivation)'; New-BurntToastNotification -Text 'WEVAL CRM', 'Day3: delta_today=294 < 500 (day 3 after reactivation)' -ErrorAction SilentlyContinue",
|
||||
"priority": "high",
|
||||
"status": "done",
|
||||
"created": "2026-04-21T07:00:13+00:00",
|
||||
"created_by": "blade-control-ui",
|
||||
"completed_by": "s204-reconciler",
|
||||
"completed_at": "2026-04-21T09:05:01.476024",
|
||||
"reconciler_reason": "notification-only, no action needed"
|
||||
}
|
||||
17
api/blade-tasks/task_20260421073837_42f28b.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"id": "task_20260421073837_42f28b",
|
||||
"name": "Renew GitHub PAT classic",
|
||||
"type": "powershell",
|
||||
"priority": "high",
|
||||
"command": "# WEVIA via Blade - GitHub PAT renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] GitHub PAT renewal START $(Get-Date)\"\nStart-Process chrome -ArgumentList 'https:\/\/github.com\/settings\/tokens'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened GitHub tokens page\"\nWrite-Host \"ACTION: Yacine 'Generate new token classic' all scopes + copy + POST \/api\/token-update.php?provider=github&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL GitHub PAT', 'Generate new token classic all scopes' -ErrorAction SilentlyContinue\n",
|
||||
"cmd": "# WEVIA via Blade - GitHub PAT renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] GitHub PAT renewal START $(Get-Date)\"\nStart-Process chrome -ArgumentList 'https:\/\/github.com\/settings\/tokens'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened GitHub tokens page\"\nWrite-Host \"ACTION: Yacine 'Generate new token classic' all scopes + copy + POST \/api\/token-update.php?provider=github&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL GitHub PAT', 'Generate new token classic all scopes' -ErrorAction SilentlyContinue\n",
|
||||
"status": "failed_timeout",
|
||||
"created_at": "2026-04-21T07:38:37.431658",
|
||||
"created_by": "opus-v9.59",
|
||||
"provider": "github",
|
||||
"callback_url": "https:\/\/weval-consulting.com\/api\/token-update.php?provider=github&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE",
|
||||
"instructions": "Chrome opens URL; Yacine clicks generate; POST token to callback_url",
|
||||
"dispatched_at": "2026-04-21T07:38:38+00:00",
|
||||
"failed_at": "2026-04-21T07:50:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
17
api/blade-tasks/task_20260421073837_50b495.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"id": "task_20260421073837_50b495",
|
||||
"name": "Renew Groq API key",
|
||||
"type": "powershell",
|
||||
"priority": "high",
|
||||
"command": "# WEVIA via Blade - Groq key renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] Groq key renewal START $(Get-Date)\"\nStart-Process chrome -ArgumentList 'https:\/\/console.groq.com\/keys'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened Groq console keys\"\nWrite-Host \"ACTION: Yacine 'Create API Key' + copy + POST \/api\/token-update.php?provider=groq&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL Groq Key', 'Create new API key + callback' -ErrorAction SilentlyContinue\n",
|
||||
"cmd": "# WEVIA via Blade - Groq key renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] Groq key renewal START $(Get-Date)\"\nStart-Process chrome -ArgumentList 'https:\/\/console.groq.com\/keys'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened Groq console keys\"\nWrite-Host \"ACTION: Yacine 'Create API Key' + copy + POST \/api\/token-update.php?provider=groq&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL Groq Key', 'Create new API key + callback' -ErrorAction SilentlyContinue\n",
|
||||
"status": "failed_timeout",
|
||||
"created_at": "2026-04-21T07:38:37.665014",
|
||||
"created_by": "opus-v9.59",
|
||||
"provider": "groq",
|
||||
"callback_url": "https:\/\/weval-consulting.com\/api\/token-update.php?provider=groq&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE",
|
||||
"instructions": "Chrome opens URL; Yacine clicks generate; POST token to callback_url",
|
||||
"dispatched_at": "2026-04-21T07:38:59+00:00",
|
||||
"failed_at": "2026-04-21T07:50:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
17
api/blade-tasks/task_20260421073837_60d144.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"id": "task_20260421073837_60d144",
|
||||
"name": "Renew WhatsApp Business API token",
|
||||
"type": "powershell",
|
||||
"priority": "high",
|
||||
"command": "# WEVIA via Blade - WhatsApp token renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] WhatsApp token renewal START $(Get-Date)\"\n# Open Meta Developers portal with WhatsApp app\nStart-Process chrome -ArgumentList 'https:\/\/developers.facebook.com\/apps\/1067620881543866\/whatsapp-business\/wa-settings\/'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened Meta WhatsApp settings page\"\nWrite-Host \"ACTION: Yacine click 'Generate Access Token' + copy + POST to \/api\/token-update.php?provider=whatsapp&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL WhatsApp Token', 'Generate new token + callback \/api\/token-update.php' -ErrorAction SilentlyContinue\n",
|
||||
"cmd": "# WEVIA via Blade - WhatsApp token renewal\n$ErrorActionPreference = \"Continue\"\nWrite-Host \"[BLADE] WhatsApp token renewal START $(Get-Date)\"\n# Open Meta Developers portal with WhatsApp app\nStart-Process chrome -ArgumentList 'https:\/\/developers.facebook.com\/apps\/1067620881543866\/whatsapp-business\/wa-settings\/'\nStart-Sleep -Seconds 3\nWrite-Host \"Chrome opened Meta WhatsApp settings page\"\nWrite-Host \"ACTION: Yacine click 'Generate Access Token' + copy + POST to \/api\/token-update.php?provider=whatsapp&token=NEW&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE\"\nNew-BurntToastNotification -Text 'WEVAL WhatsApp Token', 'Generate new token + callback \/api\/token-update.php' -ErrorAction SilentlyContinue\n",
|
||||
"status": "failed_timeout",
|
||||
"created_at": "2026-04-21T07:38:37.205444",
|
||||
"created_by": "opus-v9.59",
|
||||
"provider": "whatsapp",
|
||||
"callback_url": "https:\/\/weval-consulting.com\/api\/token-update.php?provider=whatsapp&k=TOKEN_UPDATE_KEY_2026_WEVAL_BLADE",
|
||||
"instructions": "Chrome opens URL; Yacine clicks generate; POST token to callback_url",
|
||||
"dispatched_at": "2026-04-21T07:39:13+00:00",
|
||||
"failed_at": "2026-04-21T07:50:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
14
api/blade-tasks/task_20260421080003_2b6016.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"id": "task_20260421080003_2b6016",
|
||||
"name": "OVH S151 cancel review",
|
||||
"type": "powershell",
|
||||
"command": "\n# OVH S151 cancel via Blade Windows browser\n$url = 'https://www.ovh.com/manager/dedicated/#/configuration/server'\nWrite-Host \"Opening OVH manager for S151 cancel review...\"\nStart-Process chrome -ArgumentList '--app=' + $url\nStart-Sleep 5\n# Notification\nNew-BurntToastNotification -Text 'WEVAL Auto', 'OVH S151 cancel - review needed. Log into OVH manager.' -ErrorAction SilentlyContinue\n",
|
||||
"cmd": "\n# OVH S151 cancel via Blade Windows browser\n$url = 'https://www.ovh.com/manager/dedicated/#/configuration/server'\nWrite-Host \"Opening OVH manager for S151 cancel review...\"\nStart-Process chrome -ArgumentList '--app=' + $url\nStart-Sleep 5\n# Notification\nNew-BurntToastNotification -Text 'WEVAL Auto', 'OVH S151 cancel - review needed. Log into OVH manager.' -ErrorAction SilentlyContinue\n",
|
||||
"priority": "normal",
|
||||
"status": "done",
|
||||
"created": "2026-04-21T08:00:03+00:00",
|
||||
"created_by": "blade-control-ui",
|
||||
"completed_by": "s204-reconciler",
|
||||
"completed_at": "2026-04-21T10:05:01.805186",
|
||||
"reconciler_reason": "surfaced Chrome URL"
|
||||
}
|
||||
12
api/blade-tasks/task_blade_20260421-010303_88fb24.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "blade_20260421-010303_88fb24",
|
||||
"goal": "v111_test_office_create",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "failed_timeout",
|
||||
"created": "2026-04-21T01:03:03+00:00",
|
||||
"source": "wevia-master-chat",
|
||||
"dispatched_at": "2026-04-21T01:03:12+00:00",
|
||||
"failed_at": "2026-04-21T01:15:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
12
api/blade-tasks/task_blade_20260421-011410_236bdf.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "blade_20260421-011410_236bdf",
|
||||
"goal": "v112_direct_test",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "failed_timeout",
|
||||
"created": "2026-04-21T01:14:10+00:00",
|
||||
"source": "wevia-master-chat",
|
||||
"dispatched_at": "2026-04-21T07:39:26+00:00",
|
||||
"failed_at": "2026-04-21T07:50:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
12
api/blade-tasks/task_blade_20260421-011410_889db9.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "blade_20260421-011410_889db9",
|
||||
"goal": "v112_via_fn",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "failed_timeout",
|
||||
"created": "2026-04-21T01:14:10+00:00",
|
||||
"source": "wevia-master-chat",
|
||||
"dispatched_at": "2026-04-21T07:40:42+00:00",
|
||||
"failed_at": "2026-04-21T07:55:01+00:00",
|
||||
"error": "Agent Blade did not callback task_done within 10min"
|
||||
}
|
||||
9
api/blade-tasks/task_blade_20260421-011412_01ccca.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "blade_20260421-011412_01ccca",
|
||||
"goal": "office_create",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:14:12+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
9
api/blade-tasks/task_blade_20260421-011848_7e2919.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "blade_20260421-011848_7e2919",
|
||||
"goal": "office_create",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:18:48+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
9
api/blade-tasks/task_blade_20260421-011853_080d50.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "blade_20260421-011853_080d50",
|
||||
"goal": "deepseek_renew",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:18:53+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
9
api/blade-tasks/task_blade_20260421-012459_53f1fc.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "blade_20260421-012459_53f1fc",
|
||||
"goal": "office_create",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:24:59+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
9
api/blade-tasks/task_blade_20260421-012701_752d22.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"id": "blade_20260421-012701_752d22",
|
||||
"goal": "token_github_renew",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:27:01+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
BIN
api/blade-tasks/v107-all-ia-hub-proof/01-hub-loaded.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
45
api/blade-tasks/v107-all-ia-hub-proof/proof.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"hub_diag": {
|
||||
"title": "All-IA Hub \u2014 Remplacement Claude Code + Opus (Souverain)",
|
||||
"tabs_count": 6,
|
||||
"views_count": 6,
|
||||
"stats_agents": "726",
|
||||
"stats_providers": "14",
|
||||
"has_chat": true,
|
||||
"has_code": true,
|
||||
"has_arena": true,
|
||||
"has_caps": true,
|
||||
"has_train": true,
|
||||
"has_orch": true,
|
||||
"code_modes_count": 6,
|
||||
"caps_cards_count": 12,
|
||||
"train_stats_count": 6
|
||||
},
|
||||
"tabs_tested": [
|
||||
{
|
||||
"tab": "code",
|
||||
"active_view": "v-code"
|
||||
},
|
||||
{
|
||||
"tab": "arena",
|
||||
"active_view": "v-arena"
|
||||
},
|
||||
{
|
||||
"tab": "capabilities",
|
||||
"active_view": "v-caps"
|
||||
},
|
||||
{
|
||||
"tab": "training",
|
||||
"active_view": "v-train"
|
||||
},
|
||||
{
|
||||
"tab": "orchestrator",
|
||||
"active_view": "v-orch"
|
||||
}
|
||||
],
|
||||
"wtp_link": {
|
||||
"has_all_ia_hub_link": false,
|
||||
"link_text": null
|
||||
},
|
||||
"ts": "V107 proof"
|
||||
}
|
||||
BIN
api/blade-tasks/v107-all-ia-hub-proof/tab-arena.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
api/blade-tasks/v107-all-ia-hub-proof/tab-capabilities.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
api/blade-tasks/v107-all-ia-hub-proof/tab-code.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
api/blade-tasks/v107-all-ia-hub-proof/tab-orchestrator.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
api/blade-tasks/v107-all-ia-hub-proof/tab-training.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
api/blade-tasks/v107-all-ia-hub-proof/wtp-with-link.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
api/blade-tasks/v108-human-proof/01-hub-loaded-v108.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
api/blade-tasks/v108-human-proof/02-chat-hi-response.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
api/blade-tasks/v108-human-proof/03-capabilities-enriched.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
32
api/blade-tasks/v108-human-proof/proof.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"v108": "human-text-extraction",
|
||||
"capabilities": {
|
||||
"total_cards": 18,
|
||||
"cards": [
|
||||
"\ud83c\udf10 DeepSeek Web Access",
|
||||
"\ud83d\udcbb Selenium Chrome Autonomy",
|
||||
"\ud83d\udcc1 Office 365 Enterprise",
|
||||
"\ud83d\udd0c Token Renewal Engine",
|
||||
"\ud83d\udd0e Cyber Tips 6 mois",
|
||||
"\ud83c\udfa5 Video + Screenshot E2E",
|
||||
"\u26a1 WEVIA Master Streaming",
|
||||
"\ud83d\udee0 Multi-Agent Orchestrator",
|
||||
"\ud83d\udcbb WEVCODE 6 Modes",
|
||||
"\ud83c\udf10 Arena Multi-Provider",
|
||||
"\ud83e\udde0 Qdrant RAG",
|
||||
"\ud83d\udcda HF Fine-Tune",
|
||||
"\ud83c\udf1d Blade IA (Razer)",
|
||||
"\ud83d\udc51 Director Agent",
|
||||
"\ud83c\udfc1 NonReg 6sigma",
|
||||
"\ud83d\udce1 Tool Use",
|
||||
"\ud83d\udc68 Session + Files",
|
||||
"\ud83d\udd04 Cognitive 635fn"
|
||||
]
|
||||
},
|
||||
"chat_output_count": 3,
|
||||
"chat_has_json_raw": false,
|
||||
"chat_last_msg": {
|
||||
"cls": "msg a",
|
||||
"text": "Intent 'wevia_greetings' executed (trigger: bonjour)salut yacine ! wevia op\u00e9rationnelle - nr 153/153 - l99 322/322 - 7 sigma 150/150 - 1236 intents wired - 1528 stubs executed - autonomie 92 pourcent - tout live - tu veux quoi maintenantopus5-stub-dispatcher-v2 \u00b7 0.1s"
|
||||
}
|
||||
}
|
||||
BIN
api/blade-tasks/v109-human-final/01-salut-response.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
api/blade-tasks/v109-human-final/02-comment-ca-va.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
31
api/blade-tasks/v109-human-final/proof.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"v109": "human-mode-via-llm-direct",
|
||||
"human_state": {
|
||||
"toggle_exists": true,
|
||||
"toggle_checked": true,
|
||||
"toggle_label_text": "\ud83d\udc96 Mode Humain (LLM pure)"
|
||||
},
|
||||
"chat_msgs_salut": [
|
||||
{
|
||||
"cls": "msg sys",
|
||||
"text": "> CHAT multi-agent pr\u00eat. Natural language router V103 actif. Tape \"orchestrate\", \"bilan complet\", \"tous les agents\" pour multi-agent parall\u00e8le."
|
||||
},
|
||||
{
|
||||
"cls": "msg u",
|
||||
"text": "salut wevia"
|
||||
}
|
||||
],
|
||||
"chat_msgs_comment": [
|
||||
{
|
||||
"cls": "msg u",
|
||||
"text": "comment ca va aujourd hui"
|
||||
},
|
||||
{
|
||||
"cls": "msg a",
|
||||
"text": "Bonjour ! Je suis WEVIA, votre IA souveraine de WEVAL Consulting. Je suis pr\u00eate \u00e0 vous aider et \u00e0 r\u00e9pondre \u00e0 vos questions de mani\u00e8re utile et intelligente. Puis-je vous aider avec quelque chose en particulier ou souhaitez-vous discuter d'un sujet sp\u00e9cifique ? Je suis \u00e0 votre \u00e9coute et pr\u00eate \u00e0 vous fournir des conseils, des analyses ou des solutions concr\u00e8tes. Si vous avez besoin d'informations sur l'\u00e9tat du syst\u00e8me, vous pouvez me demander de vous fournir des d\u00e9tails sur les serveurs, les conte"
|
||||
}
|
||||
],
|
||||
"has_raw_json": false,
|
||||
"has_intent_echo": false,
|
||||
"VERDICT": "HUMAN"
|
||||
}
|
||||
BIN
api/blade-tasks/v110-multi-agent-tips-proof/01-multi-agent.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
api/blade-tasks/v110-multi-agent-tips-proof/02-cyber-tips.png
Normal file
|
After Width: | Height: | Size: 499 KiB |
BIN
api/blade-tasks/v110-multi-agent-tips-proof/03-capabilities.png
Normal file
|
After Width: | Height: | Size: 572 KiB |
7
api/blade-tasks/v110-multi-agent-tips-proof/proof.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"v110": "multi-agent-tips-capabilities",
|
||||
"multi_agent_real_exec": true,
|
||||
"cyber_tips_intent_wired": true,
|
||||
"capabilities_intent_wired": true,
|
||||
"VERDICT": "ALL_WIRED"
|
||||
}
|
||||
BIN
api/blade-tasks/v111-blade-actions-proof/b1-blade-card.png
Normal file
|
After Width: | Height: | Size: 236 KiB |
BIN
api/blade-tasks/v111-blade-actions-proof/b2-office.png
Normal file
|
After Width: | Height: | Size: 237 KiB |
BIN
api/blade-tasks/v111-blade-actions-proof/b3-deepseek.png
Normal file
|
After Width: | Height: | Size: 237 KiB |
8
api/blade-tasks/v111-blade-actions-proof/proof.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"v111": "blade-task-push-from-hub-E2E",
|
||||
"blade_card_present": true,
|
||||
"buttons_count": 5,
|
||||
"office_create_ok": false,
|
||||
"deepseek_renew_ok": false,
|
||||
"VERDICT": "PARTIAL"
|
||||
}
|
||||
BIN
api/blade-tasks/v112-blade-fix-proof/01-office-clicked.png
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
api/blade-tasks/v112-blade-fix-proof/02-deepseek-clicked.png
Normal file
|
After Width: | Height: | Size: 254 KiB |
18
api/blade-tasks/v112-blade-fix-proof/proof.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"v112": "blade-fix-urlencoded",
|
||||
"initial": {
|
||||
"pending": "3",
|
||||
"done": "20"
|
||||
},
|
||||
"office_result": {
|
||||
"pending": "4",
|
||||
"log_visible": "block",
|
||||
"log_html": "<div>> Pushing task: office_create...</div><div style=\"color:var(--gr)\">> \u2705 Task created: blade_20260421-011848_7e2919</div>"
|
||||
},
|
||||
"deepseek_result": {
|
||||
"pending": "5",
|
||||
"log_html": "<div>> Pushing task: office_create...</div><div style=\"color:var(--gr)\">> \u2705 Task created: blade_20260421-011848_7e2919</div><div>> Pushing task: deepseek_renew...</div><div style=\"color:var(--gr)\">> \u2705 Task created: blade_20260421-011853_080d50</div>"
|
||||
},
|
||||
"console_msgs_count": 4,
|
||||
"VERDICT": "WIRED"
|
||||
}
|
||||
31
api/blade-tasks/v112-debug-blade-push/debug.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"direct_fetch": {
|
||||
"status": 200,
|
||||
"ok": true,
|
||||
"body": {
|
||||
"ok": true,
|
||||
"id": "blade_20260421-011410_236bdf",
|
||||
"file": "task_blade_20260421-011410_236bdf.json",
|
||||
"task": {
|
||||
"id": "blade_20260421-011410_236bdf",
|
||||
"goal": "v112_direct_test",
|
||||
"params": [],
|
||||
"priority": "normal",
|
||||
"status": "pending",
|
||||
"created": "2026-04-21T01:14:10+00:00",
|
||||
"source": "wevia-master-chat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fn_call": {
|
||||
"log_exists": true,
|
||||
"log_display": "block",
|
||||
"log_text": "> Pushing task: v112_via_fn...\n> \u2705 Task created: blade_20260421-011410_889db9"
|
||||
},
|
||||
"after_click": {
|
||||
"log_display": "block",
|
||||
"log_html": "\n> Pushing task: v112_via_fn...\n> \u2705 Task created: blade_20260421-011410_889db9\n> Pushing task: office_create...\n> \u2705 Task created: blade_20260421-011412_01ccca",
|
||||
"log_text": "\n> Pushing task: v112_via_fn...\n> \u2705 Task created: blade_20260421-011410_889db9\n> Pushing task: office_create...\n> \u2705 Task created: blade_20260421-011412_01ccca"
|
||||
},
|
||||
"console": []
|
||||
}
|
||||
BIN
api/blade-tasks/v112-debug-blade-push/debug.png
Normal file
|
After Width: | Height: | Size: 251 KiB |
10
api/blade-tasks/v112-wtp-enriched/proof.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"v112_wtp": "enriched-authed",
|
||||
"title": "WEVAL Technology Platform \u2014 All-in-One ERP Portal",
|
||||
"total_links": 95,
|
||||
"all_ia_hub_link": true,
|
||||
"orchestrator_link": true,
|
||||
"master_link": true,
|
||||
"body_len": 13524,
|
||||
"VERDICT": "OK"
|
||||
}
|
||||
BIN
api/blade-tasks/v112-wtp-enriched/wtp-full-authed.png
Normal file
|
After Width: | Height: | Size: 662 KiB |
BIN
api/blade-tasks/v112-wtp-enriched/wtp-full.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
api/blade-tasks/v113-quick-intents-proof/01-show-tips.png
Normal file
|
After Width: | Height: | Size: 367 KiB |
BIN
api/blade-tasks/v113-quick-intents-proof/02-bilan.png
Normal file
|
After Width: | Height: | Size: 350 KiB |
11
api/blade-tasks/v113-quick-intents-proof/proof.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"v113": "quick-intents-panel",
|
||||
"panel_check": {
|
||||
"has_input": true,
|
||||
"has_output": true,
|
||||
"preset_btns": 9
|
||||
},
|
||||
"show_tips_ok": true,
|
||||
"bilan_ok": true,
|
||||
"VERDICT": "WORKING"
|
||||
}
|
||||
BIN
api/blade-tasks/v116-dashboards-tab-proof/01-all-70-tiles.png
Normal file
|
After Width: | Height: | Size: 733 KiB |
BIN
api/blade-tasks/v116-dashboards-tab-proof/02-filter-pharma.png
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
api/blade-tasks/v116-dashboards-tab-proof/03-filter-infra.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
8
api/blade-tasks/v116-dashboards-tab-proof/proof.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"v116": "dashboards-tab-70-tiles",
|
||||
"tiles_shown": 70,
|
||||
"filters_shown": 12,
|
||||
"stats_shown": 12,
|
||||
"view_active": true,
|
||||
"VERDICT": "WIRED"
|
||||
}
|
||||
BIN
api/blade-tasks/v117-badges-proof/01-badges.png
Normal file
|
After Width: | Height: | Size: 814 KiB |
10
api/blade-tasks/v117-badges-proof/proof.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"v117": "badges",
|
||||
"state": {
|
||||
"tiles": 69,
|
||||
"badges_200": 5,
|
||||
"badges_auth": 5,
|
||||
"badges_error": 5
|
||||
},
|
||||
"VERDICT": "PARTIAL"
|
||||
}
|
||||
BIN
api/blade-tasks/v119-search-proof/01-initial.png
Normal file
|
After Width: | Height: | Size: 818 KiB |
BIN
api/blade-tasks/v119-search-proof/02-search-ethica.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
api/blade-tasks/v119-search-proof/03-search-kpi.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
api/blade-tasks/v119-search-proof/04-sort-size.png
Normal file
|
After Width: | Height: | Size: 862 KiB |
8
api/blade-tasks/v119-search-proof/proof.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"v119": "search-sort-ux",
|
||||
"initial_tiles": 69,
|
||||
"search_ethica_tiles": 2,
|
||||
"search_kpi_tiles": 5,
|
||||
"sort_size_working": true,
|
||||
"VERDICT": "WIRED"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
Playwright import OK
|
||||
Launching chromium headless...
|
||||
Navigating...
|
||||
ERROR: TimeoutError: Locator.screenshot: Timeout 30000ms exceeded.
|
||||
Call log:
|
||||
- waiting for locator("#cognitive-opus46-v94-section")
|
||||
|
||||