V169 Opus wevia code-artifact-preview convergence autres Claudes - Yacine autre Claude handle mermaid Opus focus on PDF code React front artifact preview SSE memory apprentissage - state audit 8 generations tested PDF Premium Mermaid Image QR TTS Calc Web Search LIVE Code Agent no HTTP wrapper - cause racine SSE stream V5 pattern writes fullResponse to textContent not innerHTML artifact renderer scanAndAddButtons looks at pre code elements so code in LLM response never detected no preview buttons - V169 fix injected AFTER AMBRE-V5-MERMAID-RENDER wave-263 by autre Claude regex triple-backtick lang CODE pattern detection skip mermaid autre Claude handles wrap in pre code class language-LANG dark theme trigger window scanAndAddButtons add preview buttons supports html jsx react svg python bash sql etc - artifact renderer exists wevia-artifact-renderer.js openArtifact html mermaid svg jsx react preview new window buildArtifactContent embed inline iframe scanAndAddButtons auto-detect buttons - convergence wave-263 mermaid wave-265 banner wave-262 shield wave-261 leak fix - mon V169 additif complement mermaid - GOLD vault v169-code-artifact chattr discipline - NR 153 sur 153 L99 153 sur 153 preserved - doctrines 1 scan 3 GOLD 4 honnete 14 zero ecrasement additif 16 zero regression - wiki /opt/weval-ops/wiki/v169-code-artifact-preview
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
Opus
2026-04-22 11:11:52 +02:00
parent 3a24dc48f9
commit 98d99bfe4d
3 changed files with 31 additions and 2 deletions

View File

@@ -1,6 +1,6 @@
{
"agent": "V45_Leads_Sync",
"ts": "2026-04-22T11:00:04+02:00",
"ts": "2026-04-22T11:10:03+02:00",
"paperclip_total": 48,
"active_customer": 4,
"warm_prospect": 5,

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-22T09:09:57+00:00",
"ts": "2026-04-22T09:11:34+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,

View File

@@ -1475,6 +1475,35 @@ function send() {
}
} catch(eMermaid) { console.warn('[V5-MERMAID-RENDER]', eMermaid); }
// === END AMBRE-V5-MERMAID-RENDER ===
// V169 code-artifact-preview · detect code blocks + wrap <pre><code> + trigger artifact renderer
try {
if (currentChunkEl && fullResponse) {
var _v169_codeRegex = /```(\w+)?\s*\n?([\s\S]+?)```/g;
var _v169_match;
var _v169_hasCode = false;
var _v169_html = fullResponse;
while ((_v169_match = _v169_codeRegex.exec(fullResponse)) !== null) {
var _v169_lang = (_v169_match[1] || "text").toLowerCase();
// Skip mermaid (autre Claude handle)
if (_v169_lang === "mermaid") continue;
_v169_hasCode = true;
var _v169_code = _v169_match[2].trim();
var _v169_escaped = _v169_code.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
var _v169_replacement = "<pre style=\"background:#1a1a2e;color:#e5e7eb;padding:14px;border-radius:8px;overflow-x:auto;font-family:Consolas,Monaco,monospace;font-size:12px;line-height:1.5\"><code class=\"language-" + _v169_lang + "\">" + _v169_escaped + "</code></pre>";
_v169_html = _v169_html.replace(_v169_match[0], _v169_replacement);
}
if (_v169_hasCode) {
currentChunkEl.innerHTML = _v169_html;
// Trigger artifact renderer scan
setTimeout(function() {
if (typeof window.scanAndAddButtons === "function") {
window.scanAndAddButtons();
}
}, 100);
}
}
} catch(_v169_err) { console.warn("V169 code-artifact-preview err:", _v169_err); }
// === END V169 code-artifact-preview ===
// Format final response with link if present
if (currentChunkEl && finalFileUrl) {
var _u = finalFileUrl; var linkHtml = fullResponse.split(_u).join('<a href="'+_u+'" target="_blank" style="color:#2563eb;font-weight:600">'+finalFileUrl+'</a>');