auto-sync via WEVIA git_sync_all intent 2026-04-21T03:23:36+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
123
all-ia-hub.html
123
all-ia-hub.html
@@ -174,6 +174,27 @@ footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);fo
|
||||
</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>
|
||||
@@ -271,11 +292,22 @@ footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);fo
|
||||
<section class="view" id="v-train">
|
||||
<div class="train-stats" id="train-stats">
|
||||
<div class="train-stat"><div class="k">HF Model</div><div class="v" style="font-size:13px;color:var(--cy)">weval-brain-v4</div><div class="s">yace222/weval-brain-v4</div></div>
|
||||
<div class="train-stat"><div class="k">Qdrant Vectors</div><div class="v" id="t-qv">14368</div><div class="s">KB indexed</div></div>
|
||||
<div class="train-stat"><div class="k">Wiki entries</div><div class="v" id="t-wi">1861</div><div class="s">markdown files</div></div>
|
||||
<div class="train-stat"><div class="k">Vault files</div><div class="v" id="t-vf">4738</div><div class="s">GOLD: 105</div></div>
|
||||
<div class="train-stat"><div class="k">Agents</div><div class="v" id="t-ag">726</div><div class="s">8 categories</div></div>
|
||||
<div class="train-stat"><div class="k">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>
|
||||
@@ -526,6 +558,36 @@ document.querySelectorAll('.inp').forEach(i=>{
|
||||
});
|
||||
});
|
||||
|
||||
// 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{
|
||||
@@ -587,6 +649,59 @@ async function pushBladeTask(goal, params){
|
||||
setInterval(()=>{ if(document.getElementById('v-caps').classList.contains('on')) refreshBladeStats(); },30000);
|
||||
setTimeout(refreshBladeStats, 1500);
|
||||
|
||||
// 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{
|
||||
|
||||
BIN
api/blade-tasks/v113-quick-intents-proof/01-show-tips.png
Normal file
BIN
api/blade-tasks/v113-quick-intents-proof/01-show-tips.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 367 KiB |
BIN
api/blade-tasks/v113-quick-intents-proof/02-bilan.png
Normal file
BIN
api/blade-tasks/v113-quick-intents-proof/02-bilan.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 350 KiB |
Binary file not shown.
11
api/blade-tasks/v113-quick-intents-proof/proof.json
Normal file
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"
|
||||
}
|
||||
52
api/router-activity.php
Normal file
52
api/router-activity.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* V113 - Router Activity API - show recent V103 multi-agent router matches
|
||||
* GET /api/router-activity.php?k=WEVADS2026&limit=50
|
||||
*/
|
||||
header('Content-Type: application/json');
|
||||
$k = $_GET['k'] ?? '';
|
||||
if ($k !== 'WEVADS2026') { http_response_code(403); die(json_encode(['error'=>'auth'])); }
|
||||
|
||||
$limit = (int)($_GET['limit'] ?? 50);
|
||||
$limit = max(1, min(500, $limit));
|
||||
|
||||
$log = '/tmp/v103-router.log';
|
||||
if (!file_exists($log)) {
|
||||
echo json_encode(['matches'=>[],'count'=>0,'log_missing'=>true]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$lines = @file($log, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
if (!$lines) {
|
||||
echo json_encode(['matches'=>[],'count'=>0]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$recent = array_slice($lines, -$limit);
|
||||
$matches = [];
|
||||
foreach ($recent as $line) {
|
||||
// Parse: YYYY-MM-DDTHH:MM:SS+00:00 MATCH pattern=<p> msg=<m>
|
||||
if (preg_match('/^(\S+)\s+MATCH\s+pattern=(\S+)\s+msg=(.*)$/', $line, $m)) {
|
||||
$matches[] = [
|
||||
'ts' => $m[1],
|
||||
'pattern' => substr($m[2], 0, 60),
|
||||
'msg' => substr($m[3], 0, 200)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// Aggregate by pattern
|
||||
$byPattern = [];
|
||||
foreach ($matches as $m) {
|
||||
$p = $m['pattern'];
|
||||
if (!isset($byPattern[$p])) $byPattern[$p] = 0;
|
||||
$byPattern[$p]++;
|
||||
}
|
||||
arsort($byPattern);
|
||||
|
||||
echo json_encode([
|
||||
'matches' => array_reverse($matches), // most recent first
|
||||
'count' => count($matches),
|
||||
'by_pattern' => $byPattern,
|
||||
'total_log_lines' => count($lines)
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
62
api/training-status.php
Normal file
62
api/training-status.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* V114 - Training Status API - expose real training metrics
|
||||
*/
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$out = [
|
||||
'ts' => date('c'),
|
||||
'qdrant' => ['vectors' => '?', 'collections' => '?'],
|
||||
'hf_model' => 'yace222/weval-brain-v4',
|
||||
'wiki' => ['entries' => 0],
|
||||
'vault' => ['files' => 0, 'gold' => 0],
|
||||
'catalog' => ['total' => 0, 'categories' => 0],
|
||||
'cognitive' => ['fn' => 635, 'file' => '/opt/wevia-brain/cognitive-opus46.php'],
|
||||
'intents' => ['wired' => 0],
|
||||
'cron_training' => [
|
||||
'WeviaAutoLrn' => 'active',
|
||||
'WeviaDream' => 'active',
|
||||
'WeviaEmbed' => 'active',
|
||||
]
|
||||
];
|
||||
|
||||
// Qdrant count (via local http)
|
||||
$qCh = curl_init("http://127.0.0.1:6333/collections/wevia_memory");
|
||||
curl_setopt_array($qCh, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_TIMEOUT=>3]);
|
||||
$qResp = @curl_exec($qCh);
|
||||
if ($qResp) {
|
||||
$q = json_decode($qResp, true);
|
||||
if (isset($q['result']['vectors_count'])) {
|
||||
$out['qdrant']['vectors'] = $q['result']['vectors_count'];
|
||||
} elseif (isset($q['result']['points_count'])) {
|
||||
$out['qdrant']['vectors'] = $q['result']['points_count'];
|
||||
}
|
||||
}
|
||||
curl_close($qCh);
|
||||
|
||||
// Wiki count
|
||||
$wiki = glob('/var/www/html/wiki/*.md');
|
||||
$out['wiki']['entries'] = $wiki ? count($wiki) : 0;
|
||||
|
||||
// Vault count
|
||||
$vault = glob('/opt/wevads/vault/*');
|
||||
$out['vault']['files'] = $vault ? count($vault) : 0;
|
||||
$gold = glob('/opt/wevads/vault/*GOLD*');
|
||||
$out['vault']['gold'] = $gold ? count($gold) : 0;
|
||||
|
||||
// Catalog
|
||||
$catCh = curl_init("http://127.0.0.1/api/agents-catalog-api.php");
|
||||
curl_setopt_array($catCh, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_TIMEOUT=>3, CURLOPT_HTTPHEADER=>['Host: weval-consulting.com']]);
|
||||
$catResp = @curl_exec($catCh);
|
||||
if ($catResp) {
|
||||
$cat = json_decode($catResp, true);
|
||||
if (isset($cat['total'])) $out['catalog']['total'] = $cat['total'];
|
||||
if (isset($cat['categories'])) $out['catalog']['categories'] = count($cat['categories']);
|
||||
}
|
||||
curl_close($catCh);
|
||||
|
||||
// Intents count
|
||||
$intents = glob('/var/www/html/api/wired-pending/intent-opus4-*.php');
|
||||
$out['intents']['wired'] = $intents ? count($intents) : 0;
|
||||
|
||||
echo json_encode($out, JSON_UNESCAPED_UNICODE);
|
||||
Reference in New Issue
Block a user