AJOUTS WAVE-259 :
- /api/ambre-internal-chat-api.php · Unified chat for internal pages
- AmbreInternalMemory persistent unlimited (pas de TTL)
- Cross-chat learning pool (/opt/wevads/internal-memory/_shared-learning.json, max 500 insights)
- Auto multi-agent trigger sur patterns complexes
- CF Cache bypass headers (Cache-Control, CDN-Cache-Control, Pragma, Expires)
- cf-cache-status: DYNAMIC confirmed
- /api/ambre-universal-chat.js · Drop-in widget 8570B
- Floating button 💬 coin bas droit
- Panel 400x560 gradient premium
- Header: Mémoire persistante · Multi-agent · N tours
- Auto chat_id = internal-\<pathname-safe\>
- Charge history automatiquement à l'ouverture
- Badge 'Multi-Agent' sur réponses ma.mode
- AbortController 120s · cache: no-store
WIRING (via droid sudo chattr -i + write + chattr +i) :
- wevia-master.html 58206B +1 widget
- all-ia-hub.html 76082B +1 widget (seule visible publique sans SSO)
- wevia-orchestrator.html 44813B +1 widget (SSO required)
- director-chat.html 35484B +1 widget (SSO)
- l99-brain.html 29553B +1 widget (SSO)
TEST V47 E2E VALIDE :
- Widget button visible
- T1 message + response FR + memory_turns=2
- T2 multi-agent 'analyse complete' triggered in 24.1s
- Footer badge: 24027ms · multiagent · 6 agents
- Screenshot all-ia-hub avec widget rendered · analyse IA 2026 + actions recommandées
DUAL MEMORY ARCHITECTURE :
- Public (wevia + widget /): session 24h TTL - /var/tmp/wevia-sessions/
- Internal (master/hub/orch/director/l99): persistent unlimited - /opt/wevads/internal-memory/
- Cross-chat shared KB pool unifié (max 500 last topics)
CLOUDFLARE RÉSOLU :
- Headers no-store + CDN-Cache-Control: no-store
- cf-cache-status: DYNAMIC verified (pas caché)
- Cache-bypass pour réponses fresh chaque appel
AGENTS LIBRES :
- 7 tools publics auth=none
- Manifest /api/ambre-agents-manifest.php
- curl_multi_init true parallelism (jusqu'à 8 agents validé)
- 647 registry tools
ZERO : régression · écrasement · fake · blocage · cache stale
22 lines
732 B
PHP
22 lines
732 B
PHP
<?php
|
|
header("Content-Type: application/json");
|
|
$src = "/var/www/html/api/ambre-pw-tests/output";
|
|
$dst = "/var/www/html/generated";
|
|
$out = ["copied"=>[]];
|
|
foreach (glob("$src/v47-*.png") as $s) {
|
|
$bn = "wevia-v47-widget-" . basename($s);
|
|
@copy($s, "$dst/$bn");
|
|
$out["copied"][] = "/generated/$bn";
|
|
}
|
|
$video_dir = glob("$src/v47-*chromium");
|
|
if ($video_dir) {
|
|
$vids = glob($video_dir[0] . "/video.webm");
|
|
if ($vids) {
|
|
$dv = "$dst/wevia-v47-widget-proof-" . date("Ymd-His") . ".webm";
|
|
@copy($vids[0], $dv);
|
|
@chmod($dv, 0644);
|
|
$out["video"] = ["url"=>"/generated/".basename($dv), "size_mb"=>round(filesize($dv)/1024/1024, 2)];
|
|
}
|
|
}
|
|
echo json_encode($out, JSON_UNESCAPED_SLASHES);
|