auto-push
This commit is contained in:
@@ -301,7 +301,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -296,7 +296,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -225,7 +225,7 @@ let activeFilter = 'all';
|
||||
async function load() {
|
||||
try {
|
||||
const r = await fetch('/api/agents-status.php');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
allAgents = d.agents || [];
|
||||
document.getElementById('s-total').textContent = d.total;
|
||||
document.getElementById('s-active').textContent = d.active;
|
||||
|
||||
@@ -87,7 +87,7 @@ let statusData = {};
|
||||
async function loadStatus() {
|
||||
try {
|
||||
const res = await fetch('/api/api-key-hub.php');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
statusData = {};
|
||||
(data.providers||[]).forEach(p => statusData[p.name] = p);
|
||||
document.getElementById('kOk').textContent = data.ok || 0;
|
||||
@@ -143,7 +143,7 @@ async function saveKey(keyName, btn) {
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({action: 'update_key', key: 'WEVADS2026', provider: keyName, new_key: newKey})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (data.test && data.test.ok) {
|
||||
result.textContent = '✅ Sauvegardé + Testé OK (HTTP ' + data.test.code + ')';
|
||||
result.style.color = 'var(--cy)';
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
"infra": 90,
|
||||
"ecosystem": 90
|
||||
},
|
||||
"generated": "2026-04-16T20:00:01",
|
||||
"generated": "2026-04-16T22:00:01",
|
||||
"leaderboard": [
|
||||
{
|
||||
"name": "WEVAL_COMBINED",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-04-16 19:50:32",
|
||||
"generated": "2026-04-16 20:00:01",
|
||||
"version": "1.0",
|
||||
"servers": [
|
||||
{
|
||||
@@ -10,7 +10,7 @@
|
||||
"ssh": 49222,
|
||||
"disk_pct": 84,
|
||||
"disk_avail": "24G",
|
||||
"uptime": "up 2 days, 9 hours, 59 minutes",
|
||||
"uptime": "up 2 days, 10 hours, 8 minutes",
|
||||
"nginx": "active",
|
||||
"php_fpm": "active",
|
||||
"php_version": "8.5.5"
|
||||
@@ -66,12 +66,12 @@
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 16 hours",
|
||||
"status": "Up 17 hours",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 16 hours (healthy)",
|
||||
"status": "Up 17 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
@@ -277,7 +277,7 @@
|
||||
"screens": {
|
||||
"s204_html": 185,
|
||||
"s204_products": 88,
|
||||
"s204_api_php": 462,
|
||||
"s204_api_php": 463,
|
||||
"s204_wevia_php": 18,
|
||||
"s95_arsenal_html": 1377,
|
||||
"s95_arsenal_api": 377
|
||||
@@ -301,7 +301,7 @@
|
||||
"langfuse"
|
||||
],
|
||||
"key_tables": {
|
||||
"kb_learnings": 5106,
|
||||
"kb_learnings": 5107,
|
||||
"kb_documents": 0,
|
||||
"ethica_medecins": 50004,
|
||||
"enterprise_agents": 0
|
||||
@@ -539,7 +539,7 @@
|
||||
]
|
||||
},
|
||||
"wiki": {
|
||||
"total_entries": 5106,
|
||||
"total_entries": 5107,
|
||||
"categories": [
|
||||
{
|
||||
"category": "AUTO-FIX",
|
||||
@@ -547,7 +547,7 @@
|
||||
},
|
||||
{
|
||||
"category": "TOPOLOGY",
|
||||
"cnt": "957"
|
||||
"cnt": "958"
|
||||
},
|
||||
{
|
||||
"category": "DISCOVERY",
|
||||
@@ -1874,7 +1874,7 @@
|
||||
"fixes_log": [],
|
||||
"recommendations": []
|
||||
},
|
||||
"scan_time_ms": 542,
|
||||
"scan_time_ms": 1127,
|
||||
"gaps": [],
|
||||
"score": 100,
|
||||
"automation": {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1374,5 +1374,21 @@
|
||||
"avg": 89,
|
||||
"provider": "Cerebras-fast",
|
||||
"latency": 0.46
|
||||
},
|
||||
{
|
||||
"ts": "2026-04-16T22:00:01",
|
||||
"scores": {
|
||||
"conversation": 74,
|
||||
"speed": 93,
|
||||
"code_gen": 90,
|
||||
"diagram": 92,
|
||||
"multilingual": 90,
|
||||
"cost_efficiency": 95,
|
||||
"sovereign_deploy": 92,
|
||||
"model_routing": 90
|
||||
},
|
||||
"avg": 89,
|
||||
"provider": "Cerebras-fast",
|
||||
"latency": 0.46
|
||||
}
|
||||
]
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"ts": "2026-04-16T19:59:56+00:00",
|
||||
"ts": "2026-04-16T20:01:31+00:00",
|
||||
"hostname": "blade",
|
||||
"cpu": "?",
|
||||
"ram": "?",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-16T21:45:18.905268",
|
||||
"timestamp": "2026-04-16T22:00:18.567347",
|
||||
"layers": {
|
||||
"DOCKER": {
|
||||
"n": "DOCKER",
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
"not_wired": 0,
|
||||
"with_readme": 34,
|
||||
"with_docker": 14,
|
||||
"scan_time": "2026-04-16T22:00:01.926567"
|
||||
"scan_time": "2026-04-16T22:00:01.926567",
|
||||
"by_status": {
|
||||
"integrated": 69,
|
||||
"discovered": 0,
|
||||
"evaluated": 0
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"weval-l99": {
|
||||
@@ -57,7 +62,7 @@
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "**Language:** English | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.",
|
||||
"description": "**Language:** English | [Portugu\u00eas (Brasil)](docs/pt-BR/README.md) | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](docs/zh-TW/README.md) | [\u65e5\u672c\u8a9e](docs/ja-JP/README.",
|
||||
"discovered": "2026-04-16T22:00:01.748828"
|
||||
},
|
||||
"open-webui-fresh": {
|
||||
@@ -70,7 +75,7 @@
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "# Open WebUI 👋    | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.p",
|
||||
"description": "English | [\ud55c\uad6d\uc5b4](README.ko.md) | [\u4e2d\u6587](README.zh.md) | [\u65e5\u672c\u8a9e](README.ja.md) | [Espa\u00f1ol](README.es.md) | [Ti\u1ebfng Vi\u1ec7t](README.vi.md) | [Portugu\u00eas](README.p",
|
||||
"discovered": "2026-04-16T22:00:01.828029"
|
||||
},
|
||||
"mxyhi_ok-skills": {
|
||||
@@ -109,7 +114,7 @@
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | ",
|
||||
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [\u7b80\u4f53\u4e2d\u6587](README.zh-CN.md) | [\u7e41\u9ad4\u4e2d\u6587](README.zh-TW.md) | ",
|
||||
"discovered": "2026-04-16T22:00:01.823654"
|
||||
},
|
||||
"SuperClaude_Framework": {
|
||||
@@ -122,7 +127,7 @@
|
||||
"has_node": true,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "<div align=\"center\"> # 🚀 SuperClaude Framework [](https://smithery.ai/skills?ns=",
|
||||
"description": "<div align=\"center\"> # \ud83d\ude80 SuperClaude Framework [](https://smithery.ai/skills?ns=",
|
||||
"discovered": "2026-04-16T22:00:01.621615"
|
||||
},
|
||||
"paperclip-weval": {
|
||||
@@ -135,7 +140,7 @@
|
||||
"has_node": true,
|
||||
"has_docker": true,
|
||||
"wired": true,
|
||||
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip — runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
|
||||
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip \u2014 runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
|
||||
"discovered": "2026-04-16T22:00:01.834057"
|
||||
},
|
||||
"vllm": {
|
||||
@@ -161,7 +166,7 @@
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# 🦌 DeerFlow - 2.0 English | [中文](./README_zh.md) | [日本語](./README_ja.md) | [Français](./README_fr.md) | [Русский](./README_ru.md) [ | [\u65e5\u672c\u8a9e](./README_ja.md) | [Fran\u00e7ais](./README_fr.md) | [\u0420\u0443\u0441\u0441\u043a\u0438\u0439](./README_ru.md) [ | [Français](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
|
||||
"description": "\ud83c\udf0d **English** | [Espa\u00f1ol](docs/translations/README.es.md) | [Fran\u00e7ais](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
|
||||
"discovered": "2026-04-16T22:00:01.605720"
|
||||
},
|
||||
"aios": {
|
||||
@@ -473,7 +478,7 @@
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Claude Code Plugins: Orchestration and Automation > **⚡ Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** — Three-tier model strategy for optimal perf",
|
||||
"description": "# Claude Code Plugins: Orchestration and Automation > **\u26a1 Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** \u2014 Three-tier model strategy for optimal perf",
|
||||
"discovered": "2026-04-16T22:00:01.848962"
|
||||
},
|
||||
"FrancyJGLisboa_agent-skill-creator": {
|
||||
@@ -486,7 +491,7 @@
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools — no spec writing, no prompt engineering, no cod",
|
||||
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools \u2014 no spec writing, no prompt engineering, no cod",
|
||||
"discovered": "2026-04-16T22:00:01.598537"
|
||||
},
|
||||
"obsidian-vault": {
|
||||
@@ -564,7 +569,7 @@
|
||||
"has_node": false,
|
||||
"has_docker": false,
|
||||
"wired": true,
|
||||
"description": "# Writing Style Skill 可复用的写作风格 Skill 模板。**内置自动学习** — 从你的修改中自动提取规则,SKILL.md 越用越准。 兼容 **Claude Code** + **OpenClaw (ClawHub)**。 ## 原理 ``` AI 用 SKILL",
|
||||
"description": "# Writing Style Skill \u53ef\u590d\u7528\u7684\u5199\u4f5c\u98ce\u683c Skill \u6a21\u677f\u3002**\u5185\u7f6e\u81ea\u52a8\u5b66\u4e60** \u2014 \u4ece\u4f60\u7684\u4fee\u6539\u4e2d\u81ea\u52a8\u63d0\u53d6\u89c4\u5219\uff0cSKILL.md \u8d8a\u7528\u8d8a\u51c6\u3002 \u517c\u5bb9 **Claude Code** + **OpenClaw (ClawHub)**\u3002 ## \u539f\u7406 ``` AI \u7528 SKILL",
|
||||
"discovered": "2026-04-16T22:00:01.789051"
|
||||
},
|
||||
"qdrant-data": {
|
||||
@@ -905,5 +910,41 @@
|
||||
"description": "",
|
||||
"discovered": "2026-04-16T22:00:01.922770"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skills": {
|
||||
"total": 6178,
|
||||
"injected": 694
|
||||
},
|
||||
"trending": [
|
||||
{
|
||||
"name": "weval-l99"
|
||||
},
|
||||
{
|
||||
"name": "wevia-brain"
|
||||
},
|
||||
{
|
||||
"name": "skills"
|
||||
},
|
||||
{
|
||||
"name": "everything-claude-code"
|
||||
},
|
||||
{
|
||||
"name": "open-webui-fresh"
|
||||
},
|
||||
{
|
||||
"name": "activepieces"
|
||||
},
|
||||
{
|
||||
"name": "oh-my-claudecode"
|
||||
},
|
||||
{
|
||||
"name": "mxyhi_ok-skills"
|
||||
},
|
||||
{
|
||||
"name": "SuperClaude_Framework"
|
||||
},
|
||||
{
|
||||
"name": "paperclip-weval"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
[{"q": "Aide-moi a comprendre notre architecture serveur en langage simple", "ts": "2026-04-14T21:53:44+00:00"}, {"q": "aide", "ts": "2026-04-14T22:15:06+00:00"}, {"q": "aide: quelles sont les pages ou services qui ne marchent pas actuellement? Liste moi tout ce qui est cassé ou en erreur.", "ts": "2026-04-14T22:17:56+00:00"}, {"q": "Propose moi un plan pour lancer les campagnes Ethica au Maroc", "ts": "2026-04-14T22:20:12+00:00"}, {"q": "Propose moi un plan sur 3 mois pour lancer des campagnes email ciblées vers les médecins au Maghreb", "ts": "2026-04-14T22:20:22+00:00"}, {"q": "aide: quels sont les problèmes en cours et les risques pour demain?", "ts": "2026-04-14T22:20:24+00:00"}, {"q": "aide: explique moi MonDsh et Monitor qui sont en erreur et comment les corriger", "ts": "2026-04-14T22:20:34+00:00"}, {"q": "Propose moi un plan sur 3 mois pour lancer des campagnes email ciblées vers les médecins au Maghreb", "ts": "2026-04-14T22:21:20+00:00"}, {"q": "aide: détaille les tests en echec MonDsh et Monitor", "ts": "2026-04-14T22:28:08+00:00"}, {"q": "aide: détaille les tests en echec MonDsh et Monitor", "ts": "2026-04-14T22:28:12+00:00"}, {"q": "diagnostic wevia.html il y a un message erreur avec des caractères bizarres, corrige le", "ts": "2026-04-15T19:35:22+00:00"}, {"q": "buginv", "ts": "2026-04-16T12:07:00+00:00"}, {"q": "Bonjour, comment vas-tu?", "ts": "2026-04-16T14:09:18+00:00"}]
|
||||
[{"q": "aide", "ts": "2026-04-14T22:15:06+00:00"}, {"q": "aide: quelles sont les pages ou services qui ne marchent pas actuellement? Liste moi tout ce qui est cassé ou en erreur.", "ts": "2026-04-14T22:17:56+00:00"}, {"q": "Propose moi un plan pour lancer les campagnes Ethica au Maroc", "ts": "2026-04-14T22:20:12+00:00"}, {"q": "Propose moi un plan sur 3 mois pour lancer des campagnes email ciblées vers les médecins au Maghreb", "ts": "2026-04-14T22:20:22+00:00"}, {"q": "aide: quels sont les problèmes en cours et les risques pour demain?", "ts": "2026-04-14T22:20:24+00:00"}, {"q": "aide: explique moi MonDsh et Monitor qui sont en erreur et comment les corriger", "ts": "2026-04-14T22:20:34+00:00"}, {"q": "Propose moi un plan sur 3 mois pour lancer des campagnes email ciblées vers les médecins au Maghreb", "ts": "2026-04-14T22:21:20+00:00"}, {"q": "aide: détaille les tests en echec MonDsh et Monitor", "ts": "2026-04-14T22:28:08+00:00"}, {"q": "aide: détaille les tests en echec MonDsh et Monitor", "ts": "2026-04-14T22:28:12+00:00"}, {"q": "diagnostic wevia.html il y a un message erreur avec des caractères bizarres, corrige le", "ts": "2026-04-15T19:35:22+00:00"}, {"q": "buginv", "ts": "2026-04-16T12:07:00+00:00"}, {"q": "Bonjour, comment vas-tu?", "ts": "2026-04-16T14:09:18+00:00"}]
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-16T21:30:06",
|
||||
"timestamp": "2026-04-16T22:00:06",
|
||||
"features": {
|
||||
"total": 36,
|
||||
"pass": 35
|
||||
@@ -13,7 +13,7 @@
|
||||
"score": 97.2,
|
||||
"log": [
|
||||
"=== UX AGENT v1.0 ===",
|
||||
"Time: 2026-04-16 21:30:01",
|
||||
"Time: 2026-04-16 22:00:01",
|
||||
" core: 4/4",
|
||||
" layout: 3/4",
|
||||
" interaction: 6/6",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-16 21:55:05",
|
||||
"timestamp": "2026-04-16 22:00:06",
|
||||
"healthy": true,
|
||||
"issues": [],
|
||||
"fixes": [],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-16 19:55:08",
|
||||
"timestamp": "2026-04-16 20:00:08",
|
||||
"healthy": false,
|
||||
"checks": {
|
||||
"outpost": "DOWN",
|
||||
@@ -19,7 +19,7 @@
|
||||
"docker:authentik-worker": "NOT_FOUND",
|
||||
"docker:authentik-db": "NOT_FOUND",
|
||||
"docker:authentik-redis": "NOT_FOUND",
|
||||
"open_ports": 66,
|
||||
"open_ports": 65,
|
||||
"nginx": "OK"
|
||||
},
|
||||
"flow_ok": 2,
|
||||
@@ -30,62 +30,62 @@
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "Outpost DOWN 9090",
|
||||
"ts": "2026-04-16T19:55:02+00:00"
|
||||
"ts": "2026-04-16T20:00:01+00:00"
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "Outpost STILL DOWN",
|
||||
"ts": "2026-04-16T19:55:07+00:00"
|
||||
"ts": "2026-04-16T20:00:06+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow wevads.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:07+00:00"
|
||||
"ts": "2026-04-16T20:00:06+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow ethica.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:07+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow n8n.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:07+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow crm.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow mm.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow analytics.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Auth flow deerflow.weval-consulting.com: 200",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Callback location missing in nginx",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
}
|
||||
],
|
||||
"fixes": [
|
||||
{
|
||||
"title": "Restart authentik",
|
||||
"ts": "2026-04-16T19:55:02+00:00"
|
||||
"ts": "2026-04-16T20:00:01+00:00"
|
||||
},
|
||||
{
|
||||
"title": "Callback location auto-added",
|
||||
"ts": "2026-04-16T19:55:08+00:00"
|
||||
"ts": "2026-04-16T20:00:07+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"timestamp": "2026-04-16 19:55:02",
|
||||
"timestamp": "2026-04-16 20:00:01",
|
||||
"version": "1.0",
|
||||
"disk": 84,
|
||||
"ram": 27,
|
||||
"ram": 18,
|
||||
"docker": 19,
|
||||
"ssl_days": 354,
|
||||
"ollama_models": 5,
|
||||
@@ -14,26 +14,26 @@
|
||||
{
|
||||
"level": "critical",
|
||||
"msg": "S204:authentik DOWN (:9090)",
|
||||
"time": "19:55:02"
|
||||
"time": "20:00:01"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Token : expired",
|
||||
"time": "19:55:03"
|
||||
"time": "20:00:03"
|
||||
},
|
||||
{
|
||||
"level": "warning",
|
||||
"msg": "Token : expired",
|
||||
"time": "19:55:03"
|
||||
"time": "20:00:03"
|
||||
}
|
||||
],
|
||||
"log": [
|
||||
"19:55:02 Disk: 84%",
|
||||
"19:55:02 SSL: 354d remaining",
|
||||
"19:55:02 Docker: 19 containers",
|
||||
"19:55:02 Ollama: 5 models, 5.2GB",
|
||||
"19:55:02 RAM: 27%",
|
||||
"19:55:03 Arch score: 100\/100"
|
||||
"20:00:01 Disk: 84%",
|
||||
"20:00:01 SSL: 354d remaining",
|
||||
"20:00:01 Docker: 19 containers",
|
||||
"20:00:01 Ollama: 5 models, 5.2GB",
|
||||
"20:00:01 RAM: 18%",
|
||||
"20:00:03 Arch score: 100\/100"
|
||||
],
|
||||
"s204_services": 8,
|
||||
"s95_mta": 5
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"ts":"21:58","status":"offline"}
|
||||
{"ts":"22:00","status":"offline"}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
{
|
||||
"date": "2026-04-16 19:45:02",
|
||||
"date": "2026-04-16 20:00:01",
|
||||
"score": "8\/13 (61.5%)",
|
||||
"passed": 8,
|
||||
"failed": 5,
|
||||
"total": 13,
|
||||
"regressions": [
|
||||
"eng:Code"
|
||||
],
|
||||
"regressions": [],
|
||||
"auto_fixes": [],
|
||||
"tests": [
|
||||
{
|
||||
@@ -32,12 +30,12 @@
|
||||
{
|
||||
"name": "eng:SSL",
|
||||
"ok": true,
|
||||
"detail": "20t 0a"
|
||||
"detail": "28t 0a"
|
||||
},
|
||||
{
|
||||
"name": "eng:Compare",
|
||||
"ok": true,
|
||||
"detail": "178t 3a"
|
||||
"detail": "144t 3a"
|
||||
},
|
||||
{
|
||||
"name": "api:Dream",
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
{"ts":"21:50","disk":"84%","swap":"40%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
{"ts":"22:00","disk":"84%","swap":"40%","docker_dead":"none","http":"200","ssl":"Certificate will not expire
|
||||
ok","alerts":"none","crons":64}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-16 19:50:12",
|
||||
"timestamp": "2026-04-16 20:00:03",
|
||||
"healthy": false,
|
||||
"global_pass": 286,
|
||||
"global_fail": 8,
|
||||
@@ -34,8 +34,8 @@
|
||||
"total": 93
|
||||
},
|
||||
"chat_monitor": {
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"pass": 2,
|
||||
"fail": 1,
|
||||
"total": 3,
|
||||
"caps": {
|
||||
"Lean Six Sigma": {
|
||||
@@ -49,9 +49,9 @@
|
||||
"json": true
|
||||
},
|
||||
"SearXNG": {
|
||||
"ok": true,
|
||||
"code": 200,
|
||||
"json": true
|
||||
"ok": false,
|
||||
"code": 429,
|
||||
"json": false
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -65,8 +65,8 @@
|
||||
},
|
||||
"chatbot_post": {
|
||||
"healthy": false,
|
||||
"provider": "none",
|
||||
"code": 502
|
||||
"provider": "Cerebras-fast",
|
||||
"code": 200
|
||||
},
|
||||
"regression_scan": {
|
||||
"ok": 250,
|
||||
@@ -84,9 +84,10 @@
|
||||
"issues": [
|
||||
"Full NonReg: 6\/28 failures (79%)",
|
||||
"L99 Command: 2 failures",
|
||||
"Chat Monitor: 1 capabilities returning non-JSON",
|
||||
"Auth Agent: unhealthy",
|
||||
"Chatbot POST: returning maintenance\/crash (provider cascade broken)",
|
||||
"L99 Mission: 2 failures (QUALITY, ssl)"
|
||||
],
|
||||
"issues_count": 5
|
||||
"issues_count": 6
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
{"ts": "21:55", "status": "ok"}
|
||||
{"ts": "22:00", "status": "ok"}
|
||||
@@ -243,7 +243,7 @@ async function checkStatus() {
|
||||
const c = new AbortController();
|
||||
setTimeout(() => c.abort(), 8000);
|
||||
const r = await fetch('/api/blade-poll.php?k=BLADE2026&action=status', { signal: c.signal });
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const on = d.heartbeat && d.heartbeat.ts;
|
||||
_fails = 0;
|
||||
|
||||
@@ -344,7 +344,7 @@ async function sendChat() {
|
||||
addChat('user', esc(msg));
|
||||
// Try AI brain first
|
||||
let parsed = null;
|
||||
try { const r = await fetch('/api/blade-brain.php?msg=' + encodeURIComponent(msg)); /* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}} if (d.ok && d.tasks?.length) parsed = d.tasks; } catch(e) {}
|
||||
try { const r = await fetch('/api/blade-brain.php?msg=' + encodeURIComponent(msg)); /* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}} if (d.ok && d.tasks?.length) parsed = d.tasks; } catch(e) {}
|
||||
// Fallback to keyword
|
||||
if (!parsed) { const kp = parseIntent(msg); if (kp) parsed = [kp]; }
|
||||
if (parsed && parsed.length) {
|
||||
@@ -408,7 +408,7 @@ async function pollAndExecute() {
|
||||
if (document.hidden) return;
|
||||
try {
|
||||
const r = await fetch('/api/blade-poll.php?k=BLADE2026&action=poll');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if (d.task && d.task.command) {
|
||||
await fetch('/api/blade-poll.php?k=BLADE2026&action=done&file=' + encodeURIComponent(d.task._file) + '&result=browser_dispatched');
|
||||
if (d.task.name && d.task.name.includes('RELOAD')) location.reload();
|
||||
|
||||
@@ -116,7 +116,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -816,7 +816,7 @@ async function send(){
|
||||
addMsg('user',msg);history.push({role:'user',content:msg});addLoading();
|
||||
try{
|
||||
const _ep=(()=>{const m=currentModel||'auto';const np=['cf-','nim-','or-','groq','cerebras','mistral','ollama','web-'];if(np.some(p=>m.startsWith(p)))return'/api/wevia-multi-provider.php';return'/api/wevia-deepseek-proxy.php';})();const res=await fetch(_ep,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:msg,mode:getMode(),model:currentModel,history:history.slice(-12)})});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
if(data.content){addMsg('bot',data.content,data);history.push({role:'assistant',content:data.content})}
|
||||
else addMsg('bot',data.error||'Erreur','Error');
|
||||
}catch(e){document.getElementById('loading')?.remove();addMsg('bot','Erreur: '+e.message)}
|
||||
@@ -827,7 +827,7 @@ async function masterExec(cmd){
|
||||
addMsg('user','[Master] '+cmd);addLoading();
|
||||
try{
|
||||
const res=await fetch('/api/wevia-full-exec.php?m='+encodeURIComponent(cmd));
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
addMsg('bot',data.response||data.content||'OK',{provider:'WEVIA Master',model:'intent-exec'});
|
||||
}catch(e){document.getElementById('loading')?.remove();addMsg('bot','Erreur Master: '+e.message)}
|
||||
}
|
||||
@@ -837,7 +837,7 @@ async function searchKB(){
|
||||
const div=document.getElementById('kbResults');div.innerHTML='<div style="color:var(--fg3);font-size:11px">Recherche...</div>';
|
||||
try{
|
||||
const res=await fetch('/api/wevia-full-exec.php?m='+encodeURIComponent('cherche kb '+q));
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
div.innerHTML=`<div class="sb-item" style="font-size:11px;white-space:pre-wrap">${(data.response||'Aucun résultat').slice(0,300)}</div>`;
|
||||
}catch(e){div.innerHTML='<div style="color:var(--rd);font-size:11px">Erreur</div>'}
|
||||
}
|
||||
@@ -885,7 +885,7 @@ async function connectDS() {
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({action: 'set_ds_token', token: token})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (data.status === 'token_saved') {
|
||||
document.getElementById('dsConnect').style.background = 'var(--cy)22';
|
||||
document.getElementById('dsConnect').style.borderColor = 'var(--cy)';
|
||||
@@ -906,7 +906,7 @@ async function checkDS() {
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({action: 'ds_token_status'})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (data.has_token) {
|
||||
document.getElementById('dsConnect').style.background = 'var(--cy)22';
|
||||
document.getElementById('dsConnect').style.borderColor = 'var(--cy)';
|
||||
@@ -925,7 +925,7 @@ async function checkArenaHealth() {
|
||||
const ctrl = new AbortController();
|
||||
setTimeout(() => ctrl.abort(), 90000);
|
||||
const r = await fetch("/api/wevia-arena-health.php", {signal: ctrl.signal});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const sel = document.getElementById("modelSelect");
|
||||
if (!sel || !d.models) return;
|
||||
|
||||
|
||||
@@ -433,7 +433,7 @@ setInterval(loadData,30000);
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -235,7 +235,7 @@ async function loadAll() {
|
||||
async function loadFiability() {
|
||||
try {
|
||||
const r = await fetch('/api/wevia-fiability.php?report');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if (d.status === 'no_report') {
|
||||
document.getElementById('fiaScore').textContent = '—';
|
||||
document.getElementById('fiaDetail').textContent = 'Aucun scan';
|
||||
@@ -260,7 +260,7 @@ async function loadFiability() {
|
||||
async function loadStatus() {
|
||||
try {
|
||||
const r = await fetch(API + '?status');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
|
||||
if (d.status === 'never_run') {
|
||||
document.getElementById('liveStatus').textContent = '● NEVER RUN';
|
||||
@@ -315,7 +315,7 @@ async function loadStatus() {
|
||||
async function loadHistory() {
|
||||
try {
|
||||
const r = await fetch(API + '?history&n=30');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (!Array.isArray(data) || !data.length) {
|
||||
document.getElementById('timeline').innerHTML = '<div style="color:var(--t3);text-align:center;padding:40px;">Aucun historique. Lancez un cycle.</div>';
|
||||
document.getElementById('stCycles').textContent = '0';
|
||||
@@ -346,14 +346,14 @@ async function loadHistory() {
|
||||
async function loadHealth() {
|
||||
try {
|
||||
const r = await fetch(API + '?health');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('stUptime').textContent = d.uptime || '?';
|
||||
} catch(e) {}
|
||||
|
||||
// Agents status
|
||||
try {
|
||||
const r2 = await fetch(MASTER_API + '?health');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_h=await r2.text(); const h; {var _q=(_t_h||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){h={error:"[HTTP "+(r2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{h=JSON.parse(_q)}catch(e){h={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_h=await r2.text(); const h=null; {var _q=(_t_h||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){h={error:"[HTTP "+(r2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{h=JSON.parse(_q)}catch(e){h={error:"[JSON] "+e.message}}}}
|
||||
updateAgents(h);
|
||||
} catch(e) {}
|
||||
}
|
||||
@@ -404,7 +404,7 @@ async function triggerCycle(force = false) {
|
||||
try {
|
||||
const url = force ? API + '?run&force=1' : API + '?run';
|
||||
const r = await fetch(url);
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
btn.textContent = d.skipped ? '⏭ Skipped' : '✅ Done';
|
||||
await loadAll();
|
||||
} catch(e) {
|
||||
|
||||
@@ -107,7 +107,7 @@ async function send(){
|
||||
const typing=document.createElement('div');typing.className='typing';typing.textContent='Ethica AI réfléchit...';chat.appendChild(typing);chat.scrollTop=chat.scrollHeight;
|
||||
try{
|
||||
const r=await fetch(API,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:ETHICA_PREFIX+q})});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
typing.remove();
|
||||
addMsg(d.response||d.content||d.error||'Erreur','bot');
|
||||
}catch(e){typing.remove();addMsg('Erreur de connexion','bot')}
|
||||
|
||||
@@ -28,7 +28,7 @@ th{background:#0f172a;font-weight:600}
|
||||
async function loadStats() {
|
||||
try {
|
||||
const r = await fetch('/api/ethica-stats.php');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('subtitle').textContent =
|
||||
`contacts: ${d.total||0} — ${d.countries||3} pays`;
|
||||
document.getElementById('stats').innerHTML =
|
||||
@@ -64,13 +64,13 @@ async function sendWA(){
|
||||
const to=document.getElementById('wa-to').value;
|
||||
const msg=document.getElementById('wa-msg').value;
|
||||
const r=await fetch('/api/whatsapp-api.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'action=send&to='+encodeURIComponent(to)+'&message='+encodeURIComponent(msg)});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('wa-result').innerHTML=d.ok?'<span style="color:#25D366">✅ Envoyé!</span>':'<span style="color:#ff4444">❌ '+JSON.stringify(d.response?.error?.message||d.error)+'</span>';
|
||||
}
|
||||
async function sendWATemplate(){
|
||||
const to=document.getElementById('wa-to').value;
|
||||
const r=await fetch('/api/whatsapp-api.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'action=send&to='+encodeURIComponent(to)+'&template=hello_world&lang=en_US'});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('wa-result').innerHTML=d.ok?'<span style="color:#25D366">✅ Template envoyé!</span>':'<span style="color:#ff4444">❌ '+JSON.stringify(d.response?.error?.message||d.error)+'</span>';
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -94,7 +94,7 @@ h2{padding:12px 40px 0;font-size:15px;color:#7c3aed;text-transform:uppercase;let
|
||||
(async function(){
|
||||
try{
|
||||
const r=await fetch('/api/wevia-action-engine.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'action=ethica_stats'});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if(d.ok){
|
||||
const el=document.getElementById('hcp-count');
|
||||
if(el && d.total) el.textContent=Math.round(d.total/1000)+'K';
|
||||
|
||||
@@ -193,7 +193,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -278,7 +278,7 @@ let lastFeedTs='';
|
||||
async function loadFeed(){
|
||||
try{
|
||||
const r=await fetch('/api/ethica-feed-api.php');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if(!d.feed||!d.feed.length)return;
|
||||
const newTs=d.feed[0].ts;
|
||||
if(newTs===lastFeedTs)return;
|
||||
@@ -299,7 +299,7 @@ setInterval(loadFeed,30000);
|
||||
async function loadData(){
|
||||
try{
|
||||
const r=await fetch('/api/ethica-api.php?action=stats&token=ETHICA_API_2026_SECURE');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if(d.total){
|
||||
document.getElementById('kpi-total').textContent=d.total.toLocaleString();
|
||||
document.getElementById('p-collecte').textContent=d.total.toLocaleString();
|
||||
|
||||
BIN
generated/report-20260416-200048.pdf
Normal file
BIN
generated/report-20260416-200048.pdf
Normal file
Binary file not shown.
@@ -190,7 +190,7 @@ async function send(){
|
||||
|
||||
try{
|
||||
const r=await fetch('/api/wevia-master-api.php',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:q,history:c.msgs.slice(-6)})});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
let reply=d.content||d.response||d.text||'';
|
||||
let prov=d.provider||d.model||'unknown';
|
||||
document.getElementById('ld').classList.remove('on');
|
||||
|
||||
@@ -112,7 +112,7 @@ setInterval(()=>{document.getElementById('clock').textContent=new Date().toLocal
|
||||
async function fetchLive(){
|
||||
try{
|
||||
const r=await fetch('/api/l99-api.php?action=results');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if(d.tests){
|
||||
DATA.tests=d.tests.length;
|
||||
DATA.pass=d.tests.filter(t=>t.status==='P').length;
|
||||
|
||||
@@ -213,7 +213,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -112,7 +112,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -180,7 +180,7 @@ async function runScan(){
|
||||
b.textContent='⏳ Scanning...';b.disabled=true;
|
||||
try{
|
||||
const r=await fetch(API+'&action=auto_run').catch(()=>fetch('/api/oss-cache.json'));
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
b.textContent=`✅ +${d.new_tools} tools`;
|
||||
setTimeout(()=>{b.textContent='⚡ Scan Now';b.disabled=false;load()},3000);
|
||||
}catch(e){b.textContent='❌ Error';setTimeout(()=>{b.textContent='⚡ Scan Now';b.disabled=false},2000)}
|
||||
@@ -192,7 +192,7 @@ async function loadTrending(){
|
||||
box.innerHTML='<div class="card"><div class="card-b" style="text-align:center;padding:30px;color:var(--mu)">Loading trending...</div></div>';
|
||||
try{
|
||||
const r=await fetch('/api/oss-trending.json?t='+Date.now());
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
box.innerHTML=`<div class="card"><div class="card-h"><div class="card-t">📈 GitHub Trending</div><span class="badge b-ac">${(d.trending||[]).length}</span></div>
|
||||
<div class="card-b" style="padding:0;max-height:400px;overflow-y:auto"><table class="tbl"><tr><th>Score</th><th>★</th><th>Repo</th><th>Lang</th><th>Needs</th></tr>
|
||||
${(d.trending||[]).map(t=>`<tr><td class="score" style="color:${t.score>=30?'var(--ac)':t.score>=15?'var(--gn)':'var(--mu2)'}">${t.score}</td><td class="stars">${fmt(t.stars)}</td><td><a href="${t.url}" target="_blank">${t.name.split('/').pop()}</a><br><span style="font-size:9px;color:var(--mu)">${(t.description||'').slice(0,70)}</span></td><td style="font-family:var(--mono);font-size:10px">${t.language||'?'}</td><td>${(t.needs||[]).slice(0,3).map(n=>tag(n)).join('')}</td></tr>`).join('')}
|
||||
|
||||
@@ -50,7 +50,7 @@ const API='/api/secret-scanner-api.php';
|
||||
async function load(){
|
||||
try{
|
||||
const r=await fetch(API+'?action=results');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if(d.error){document.getElementById('history').textContent='No scan yet. Click Scan Now.';return}
|
||||
// KPIs
|
||||
const s=d.summary||{};
|
||||
@@ -118,7 +118,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -387,7 +387,7 @@ async function sendMsg() {
|
||||
headers: {'Content-Type':'application/json'},
|
||||
body: JSON.stringify(webModels.includes(currentModel) ? {service:currentModel.replace('web-',''), message:msg} : {message:msg, mode:currentMode, model:currentModel, history:history.slice(-12)})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await res.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await res.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const content = d.content || d.response || 'Pas de réponse';
|
||||
const prov = d.provider || currentModel;
|
||||
addMsg(content, 'ai', `${prov} · ${d.cost || '0€'}`);
|
||||
|
||||
@@ -829,7 +829,7 @@ async function send(){
|
||||
addMsg('user',msg);history.push({role:'user',content:msg});addLoading();
|
||||
try{
|
||||
const _ep=(()=>{const m=currentModel||'auto';const np=['cf-','nim-','or-','groq','cerebras','mistral','ollama','web-','anthropic','deepseek','sambanova','trinity','minimax','mimo','maestro'];if(np.some(p=>m.startsWith(p)))return'/api/wevia-multi-provider.php';return'/api/wevia-deepseek-proxy.php';})();const res=await fetch(_ep,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message:msg,mode:getMode(),model:currentModel,history:history.slice(-12)})});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
if(data.content){addMsg('bot',data.content,data);history.push({role:'assistant',content:data.content})}
|
||||
else addMsg('bot',data.error||'Erreur','Error');
|
||||
}catch(e){document.getElementById('loading')?.remove();addMsg('bot','Erreur: '+e.message)}
|
||||
@@ -840,7 +840,7 @@ async function masterExec(cmd){
|
||||
addMsg('user','[Master] '+cmd);addLoading();
|
||||
try{
|
||||
const res=await fetch('/api/wevia-full-exec.php?m='+encodeURIComponent(cmd));
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}document.getElementById('loading')?.remove();
|
||||
addMsg('bot',data.response||data.content||'OK',{provider:'WEVIA Master',model:'intent-exec'});
|
||||
}catch(e){document.getElementById('loading')?.remove();addMsg('bot','Erreur Master: '+e.message)}
|
||||
}
|
||||
@@ -850,7 +850,7 @@ async function searchKB(){
|
||||
const div=document.getElementById('kbResults');div.innerHTML='<div style="color:var(--fg3);font-size:11px">Recherche...</div>';
|
||||
try{
|
||||
const res=await fetch('/api/wevia-full-exec.php?m='+encodeURIComponent('cherche kb '+q));
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
div.innerHTML=`<div class="sb-item" style="font-size:11px;white-space:pre-wrap">${(data.response||'Aucun résultat').slice(0,300)}</div>`;
|
||||
}catch(e){div.innerHTML='<div style="color:var(--rd);font-size:11px">Erreur</div>'}
|
||||
}
|
||||
@@ -898,7 +898,7 @@ async function connectDS() {
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({action: 'set_ds_token', token: token})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (data.status === 'token_saved') {
|
||||
document.getElementById('dsConnect').style.background = 'var(--cy)22';
|
||||
document.getElementById('dsConnect').style.borderColor = 'var(--cy)';
|
||||
@@ -919,7 +919,7 @@ async function checkDS() {
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({action: 'ds_token_status'})
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await res.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(res.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (data.has_token) {
|
||||
document.getElementById('dsConnect').style.background = 'var(--cy)22';
|
||||
document.getElementById('dsConnect').style.borderColor = 'var(--cy)';
|
||||
@@ -938,7 +938,7 @@ async function checkArenaHealth() {
|
||||
const ctrl = new AbortController();
|
||||
setTimeout(() => ctrl.abort(), 90000);
|
||||
const r = await fetch("/api/wevia-arena-health.php", {signal: ctrl.signal});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const sel = document.getElementById("modelSelect");
|
||||
if (!sel || !d.models) return;
|
||||
|
||||
|
||||
@@ -336,7 +336,7 @@ async function send() {
|
||||
async function loadStats() {
|
||||
try {
|
||||
const r = await fetch('/api/source-of-truth.json?t=' + Date.now());
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('prov-count').textContent = Object.keys(d.providers || {}).length;
|
||||
document.getElementById('footer-stats').textContent = Object.keys(d.agents || {}).length + ' agents | Sovereign';
|
||||
} catch(e) {}
|
||||
|
||||
@@ -235,7 +235,7 @@ async function loadAll() {
|
||||
async function loadFiability() {
|
||||
try {
|
||||
const r = await fetch('/api/wevia-fiability.php?report');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
if (d.status === 'no_report') {
|
||||
document.getElementById('fiaScore').textContent = '—';
|
||||
document.getElementById('fiaDetail').textContent = 'Aucun scan';
|
||||
@@ -260,7 +260,7 @@ async function loadFiability() {
|
||||
async function loadStatus() {
|
||||
try {
|
||||
const r = await fetch(API + '?status');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
|
||||
if (d.status === 'never_run') {
|
||||
document.getElementById('liveStatus').textContent = '● NEVER RUN';
|
||||
@@ -315,7 +315,7 @@ async function loadStatus() {
|
||||
async function loadHistory() {
|
||||
try {
|
||||
const r = await fetch(API + '?history&n=30');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
if (!Array.isArray(data) || !data.length) {
|
||||
document.getElementById('timeline').innerHTML = '<div style="color:var(--t3);text-align:center;padding:40px;">Aucun historique. Lancez un cycle.</div>';
|
||||
document.getElementById('stCycles').textContent = '0';
|
||||
@@ -346,14 +346,14 @@ async function loadHistory() {
|
||||
async function loadHealth() {
|
||||
try {
|
||||
const r = await fetch(API + '?health');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('stUptime').textContent = d.uptime || '?';
|
||||
} catch(e) {}
|
||||
|
||||
// Agents status
|
||||
try {
|
||||
const r2 = await fetch(MASTER_API + '?health');
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_h=await r2.text(); const h; {var _q=(_t_h||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){h={error:"[HTTP "+(r2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{h=JSON.parse(_q)}catch(e){h={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_h=await r2.text(); const h=null; {var _q=(_t_h||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){h={error:"[HTTP "+(r2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{h=JSON.parse(_q)}catch(e){h={error:"[JSON] "+e.message}}}}
|
||||
updateAgents(h);
|
||||
} catch(e) {}
|
||||
}
|
||||
@@ -404,7 +404,7 @@ async function triggerCycle(force = false) {
|
||||
try {
|
||||
const url = force ? API + '?run&force=1' : API + '?run';
|
||||
const r = await fetch(url);
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
btn.textContent = d.skipped ? '⏭ Skipped' : '✅ Done';
|
||||
await loadAll();
|
||||
} catch(e) {
|
||||
@@ -433,7 +433,7 @@ async function tick(){
|
||||
try{
|
||||
const r=await fetch(U,{cache:'no-cache'});
|
||||
if(!r.ok) return;
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const body=document.getElementById('ulo-body');
|
||||
const ts=document.getElementById('ulo-ts');
|
||||
if(!body) return;
|
||||
|
||||
@@ -356,7 +356,7 @@ async function send(){
|
||||
const s1=addThinkStep(`Lancement agent ${id}...`);
|
||||
const s2=addThinkStep('Exécution des étapes...');
|
||||
const r=await fetch(`${AGENT}?agent=${id}&goal=${encodeURIComponent(goal)}`,{signal:AbortSignal.timeout(120000)});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await r.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
completeStep(s1,`${data.steps_count||'?'} étapes`);
|
||||
completeStep(s2,`${data.total_time_ms||'?'}ms`);
|
||||
setTimeout(()=>{
|
||||
@@ -577,7 +577,7 @@ send = async function() {
|
||||
body: JSON.stringify({ image_base64: imageFile.data.split(',')[1], prompt: msg }),
|
||||
signal: AbortSignal.timeout(30000)
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await resp.text(); const data; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(resp.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_data=await resp.text(); const data=null; {var _q=(_t_data||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){data={error:"[HTTP "+(resp.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{data=JSON.parse(_q)}catch(e){data={error:"[JSON] "+e.message}}}}
|
||||
completeStep(s1, `${data.provider} ${data.latency_ms}ms`);
|
||||
setTimeout(() => {
|
||||
removeThinking();
|
||||
|
||||
@@ -209,7 +209,7 @@ async function apiCall(action, params = '') {
|
||||
document.getElementById('loading').classList.add('show');
|
||||
try {
|
||||
const r = await fetch(`${API}?action=${action}${params}`);
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
document.getElementById('loading').classList.remove('show');
|
||||
return d;
|
||||
} catch (e) {
|
||||
|
||||
@@ -423,7 +423,7 @@ async function runTask(preset){
|
||||
(async function loadAgentFleet() {
|
||||
try {
|
||||
const r = await fetch("/api/agents-catalog-api.php");
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await r.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(r.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const fleet = document.querySelector(".fleet");
|
||||
if (!fleet || !d.agents) return;
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ async function send(){
|
||||
body:JSON.stringify({model:'auto',messages:msgs,max_tokens:1200}),
|
||||
signal:AbortSignal.timeout(15000)
|
||||
});
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await res2.text(); const d; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(res2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
/* HTML_GUARD_V2_BATCH */ const _t_d=await res2.text(); const d=null; {var _q=(_t_d||"").trim();if(_q.startsWith("<!DOCTYPE")||_q.startsWith("<html")){d={error:"[HTTP "+(res2.status||"?")+"] Backend indisponible",isHtmlError:true};}else{try{d=JSON.parse(_q)}catch(e){d={error:"[JSON] "+e.message}}}}
|
||||
const t=d.choices?.[0]?.message?.content||'Service temporairement indisponible.';
|
||||
typing.classList.remove('show');
|
||||
addMsg(t,'a',{provider:d.provider||'sovereign',time:((Date.now()-t0)/1000).toFixed(1)+'s'});
|
||||
|
||||
Reference in New Issue
Block a user