Compare commits
144 Commits
v8.0-ux-dr
...
v10.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
229c4d3572 | ||
|
|
8156cfc597 | ||
|
|
e7fb9db2ee | ||
|
|
0899cac487 | ||
|
|
c07714d8c0 | ||
|
|
f0ae6cb15f | ||
|
|
598b24b3bf | ||
|
|
33bb4eac3d | ||
|
|
eda0f2a5fe | ||
|
|
131a4e2d16 | ||
|
|
7775295e18 | ||
|
|
87096ff8d6 | ||
|
|
ca3670308d | ||
|
|
601f018b5d | ||
|
|
b929d65af1 | ||
|
|
172e87f1e7 | ||
|
|
9784f39b98 | ||
|
|
5417231bf6 | ||
|
|
ac44722de6 | ||
|
|
05512c1bf0 | ||
|
|
564c9278c6 | ||
|
|
a23ef5eb23 | ||
|
|
1655b047f2 | ||
|
|
06fa8c80bb | ||
|
|
3868bedc30 | ||
|
|
416bd09ad7 | ||
|
|
51bacd5eea | ||
|
|
061575c276 | ||
|
|
a56f4ba6f0 | ||
|
|
6bf20e58a3 | ||
|
|
51fa4f86e2 | ||
|
|
7e3a4e9c82 | ||
|
|
5d6bccde27 | ||
|
|
036c7ac8e6 | ||
|
|
18397cf0e9 | ||
|
|
ea3e5e948d | ||
|
|
1fecf8670b | ||
|
|
a041cf260b | ||
|
|
cbbebc7720 | ||
|
|
9a13d1fbd8 | ||
|
|
276175cfcb | ||
|
|
334c32a8b2 | ||
|
|
7375c83c9c | ||
|
|
02c4989d3c | ||
|
|
64e15ff326 | ||
|
|
cfc7486b33 | ||
|
|
5a55375e63 | ||
|
|
8a08f9f458 | ||
|
|
1d7a8c3114 | ||
|
|
7cc9f5f075 | ||
|
|
2ca3ac43eb | ||
|
|
ef12bb988b | ||
|
|
d2dbe73961 | ||
|
|
35f5e60a77 | ||
|
|
3b931093e8 | ||
|
|
4e5671d160 | ||
|
|
5d4663df43 | ||
|
|
bae71bc094 | ||
|
|
9ceb1476af | ||
|
|
298bedde19 | ||
|
|
544b653250 | ||
|
|
fa85d09265 | ||
|
|
f8ebf3b6e1 | ||
|
|
228a84729a | ||
|
|
ec88d899e3 | ||
|
|
df5fd99886 | ||
|
|
45222701bb | ||
|
|
019af6679a | ||
|
|
c4f9419f59 | ||
|
|
06e95374e0 | ||
|
|
b50572b362 | ||
|
|
217ba763ab | ||
|
|
f39256949c | ||
|
|
ac280ddbc4 | ||
|
|
2b44e2a4a1 | ||
|
|
d5ae1ed0bb | ||
|
|
2d5c067491 | ||
|
|
7fe511ef37 | ||
|
|
3634a30ebd | ||
|
|
d42dbcf00b | ||
|
|
1a2452eb8e | ||
|
|
b1ad32279a | ||
|
|
1d41c2e818 | ||
|
|
99aca6ebc0 | ||
|
|
9a9c962a68 | ||
|
|
cc8def0c6c | ||
|
|
0e9cab167e | ||
|
|
a54af5e2ec | ||
|
|
95900d7052 | ||
|
|
a3b14acd50 | ||
|
|
654eedf6d4 | ||
|
|
546b7ad2d9 | ||
|
|
81ac42251b | ||
|
|
5fbf19e865 | ||
|
|
9563992e48 | ||
|
|
2ac4c39e1d | ||
|
|
07e39509f2 | ||
|
|
e349a245b7 | ||
|
|
daecb8e973 | ||
|
|
3b3cf77d95 | ||
|
|
c184a72515 | ||
|
|
21c7b751df | ||
|
|
74a276b0e1 | ||
|
|
2d59cbc7eb | ||
|
|
c81416a6ae | ||
|
|
0bd089a7dd | ||
|
|
bb48e63483 | ||
|
|
990950d965 | ||
|
|
428a378891 | ||
|
|
5ecfae998c | ||
|
|
d64c3941a7 | ||
|
|
38f84f485e | ||
|
|
ea8ea80df8 | ||
|
|
5a66372c7d | ||
|
|
f2201952be | ||
|
|
3bb5d84f0e | ||
|
|
783342af46 | ||
|
|
f9996830a1 | ||
|
|
ea20f6bbf0 | ||
|
|
cbd37949a9 | ||
|
|
3d6ba4c5d1 | ||
|
|
9a8d2c7894 | ||
|
|
049d77014e | ||
|
|
16f53ba04e | ||
|
|
02b53bac2c | ||
|
|
bff7a1cae1 | ||
|
|
020997e010 | ||
|
|
c3c5be2cec | ||
|
|
7a0d75e327 | ||
|
|
0e07eb80b9 | ||
|
|
563b8672b1 | ||
|
|
952c01052e | ||
|
|
a512dc1cd7 | ||
|
|
fcc07cf6f0 | ||
|
|
4c3c01f8d5 | ||
|
|
71e57fd43c | ||
|
|
933e32be7c | ||
|
|
0989b706c8 | ||
|
|
f8e8ee880f | ||
|
|
a3efaf5160 | ||
|
|
9b8a4bd95a | ||
|
|
335f796e1e | ||
|
|
277fc3bfc5 | ||
|
|
71343bd3f0 |
18
.claude-plugin/manifest.json
Normal file
18
.claude-plugin/manifest.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "wevia-arsenal",
|
||||
"version": "5.6.0",
|
||||
"description": "WEVIA Master intents + 421 tools + 78 doctrines — WEVAL Consulting Arsenal (Casablanca)",
|
||||
"author": "Yacine Mahboub <yacine@weval-consulting.com>",
|
||||
"license": "proprietary",
|
||||
"entry_points": {
|
||||
"intents_dir": "/var/www/html/api/wired-pending/",
|
||||
"handlers_dir": "/var/www/html/api/handlers/",
|
||||
"tools_registry": "/var/www/html/api/wevia-tool-registry.json",
|
||||
"kb_dir": "/opt/wevia-brain/knowledge/",
|
||||
"vault_dir": "/opt/wevads/vault/"
|
||||
},
|
||||
"chat_endpoint": "/api/wevia-master-api.php",
|
||||
"doctrines_file": "/var/www/html/wiki/doctrine-wevia-master-v3.html",
|
||||
"installation": "WEVIA Master is embedded in weval-consulting.com Apache vhost",
|
||||
"inspired_by": "marketingskills repo (IMG_5034)"
|
||||
}
|
||||
59
404.html
59
404.html
@@ -50,5 +50,64 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
function openCard(card) {
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -704,5 +704,70 @@ document.getElementById('btn-refresh').addEventListener('click', load);
|
||||
load();
|
||||
setInterval(load, 60000);
|
||||
</script>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -325,5 +325,70 @@ setTimeout(tick,1500);setInterval(tick,30000);
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -320,5 +320,70 @@ setTimeout(tick,1500);setInterval(tick,30000);
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
114
admin.html
114
admin.html
@@ -836,4 +836,118 @@ renderAlerts();
|
||||
})();
|
||||
</script>
|
||||
<!-- /CARTO_BANNER_V1 -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body></html>
|
||||
|
||||
@@ -549,5 +549,64 @@ function exportJSON(){
|
||||
|
||||
load();
|
||||
</script>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
function openCard(card) {
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -432,5 +432,70 @@ C.addEventListener('mouseleave',()=>{mx=my=-1});
|
||||
requestAnimationFrame(loop);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -343,5 +343,70 @@ AGENTS.forEach(a=>{
|
||||
requestAnimationFrame(frame);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1356,5 +1356,119 @@ window.addEventListener('resize',function(){cam.aspect=innerWidth/innerHeight;ca
|
||||
})();
|
||||
</script>
|
||||
<script id="d93cj">(function(){function e(){var s=["[data-agent]",".agent",".agent-card",".card-agent",".node",".gap-agent"];s.forEach(function(q){document.querySelectorAll(q).forEach(function(c){if(c.querySelector(".p-av")||c.dataset.d93c)return;c.dataset.d93c=1;var p=document.createElement("span");p.className="p-av";p.setAttribute("data-persona","human");p.textContent="\ud83d\udc64";if(window.WevalAvatar&&WevalAvatar.get){var n=(c.dataset.agent||c.getAttribute("data-name")||(c.querySelector("h3,h4,.name")||{}).textContent||"").trim();if(n){try{var r=WevalAvatar.get(n);if(r&&r.emoji){p.textContent=r.emoji;if(r.persona)p.setAttribute("data-persona",r.persona);}}catch(e){}}}c.insertBefore(p,c.firstChild);});});}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",e);else e();setTimeout(e,500);setTimeout(e,1500);setTimeout(e,3500);})();</script>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body></html>
|
||||
|
||||
|
||||
@@ -261,5 +261,70 @@ C.addEventListener('mouseleave',()=>{mx=my=-1});
|
||||
requestAnimationFrame(loop);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -272,5 +272,119 @@ load();
|
||||
setInterval(load, 30000);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -771,4 +771,118 @@ C.addEventListener('mousemove',function(e){mx=e.clientX;my=e.clientY+window.scro
|
||||
C.addEventListener('mouseleave',function(){mx=my=-1;});
|
||||
requestAnimationFrame(loop);
|
||||
</script><!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body></html>
|
||||
|
||||
@@ -401,5 +401,70 @@ addEventListener('resize',()=>{resize();layZones()});
|
||||
requestAnimationFrame(loop);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -261,5 +261,70 @@ C.addEventListener('mouseleave',()=>{mx=my=-1});
|
||||
requestAnimationFrame(loop);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -68,4 +68,69 @@
|
||||
})();
|
||||
</script>
|
||||
<!-- /CARTO_BANNER_V1 -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body></html>
|
||||
114
agents-ia.html
114
agents-ia.html
@@ -261,4 +261,118 @@ initParticles();
|
||||
setInterval(loadMetrics,30000);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body></html>
|
||||
|
||||
@@ -371,5 +371,70 @@ C.addEventListener('mouseleave',()=>{mx=my=-1});
|
||||
requestAnimationFrame(loop);
|
||||
</script>
|
||||
<!-- CARTO_REMOVED -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -54,4 +54,69 @@ td{padding:10px 8px;border-bottom:1px solid #1e293b;color:#cbd5e1}
|
||||
<tr style="background:#0a0e1a;font-weight:700"><td>TOTAL CONSOLIDATED</td><td colspan="4" style="color:#c96442;font-size:14px">930+ agents actifs vérifiés (match promesse LinkedIn)</td></tr>
|
||||
</tbody></table></div>
|
||||
<div class="note">📌 <strong>Source of truth</strong> : page unified créée V34 architect pour consolider comptage 930 agents multi-sources. Doctrine 78 gap analysis. Zero régression. Mise à jour auto via crons paperclip + resolver-registry + oss-discovery.</div>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body></html>
|
||||
@@ -369,5 +369,119 @@ render();
|
||||
}).catch(e => console.warn('[V75] fetch failed', e));
|
||||
})();
|
||||
</script>
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
|
||||
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
||||
async function updateHonestValues(){
|
||||
try {
|
||||
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
||||
const d = await r.json();
|
||||
if (!d.ok) return;
|
||||
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
||||
const realSigma = d.sigma;
|
||||
// Find elements showing the myth values
|
||||
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
||||
// Walk text nodes
|
||||
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
||||
const toReplace = [];
|
||||
let node;
|
||||
while (node = walker.nextNode()) {
|
||||
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
||||
}
|
||||
toReplace.forEach(textNode => {
|
||||
const parent = textNode.parentNode;
|
||||
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
||||
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
||||
textNode.nodeValue = newText;
|
||||
parent.setAttribute('data-opus-honest-applied', '1');
|
||||
});
|
||||
// Add a small badge bottom-right showing honest live status
|
||||
if (!document.getElementById('opus-honest-badge')) {
|
||||
const b = document.createElement('div');
|
||||
b.id = 'opus-honest-badge';
|
||||
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
||||
b.title = 'Cliquer pour détails';
|
||||
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
||||
b.onclick = () => {
|
||||
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
||||
};
|
||||
document.body.appendChild(b);
|
||||
}
|
||||
} catch(e){console.error('L99-honest fetch error:', e);}
|
||||
}
|
||||
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
||||
else updateHonestValues();
|
||||
setInterval(updateHonestValues, 90000);
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS HONEST END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -135,5 +135,70 @@ setTimeout(()=>{document.querySelectorAll('.lb-bar').forEach(b=>{const w=b.datas
|
||||
}
|
||||
load();
|
||||
</script>
|
||||
<div style="margin:10px 0;padding:8px;background:#1a1a2e;border-radius:8px;font-size:12px">📊 Ref: <a href="https://lmarena.ai" target="_blank" style="color:#6d28d9">LMArena Chatbot Arena</a> | <a href="https://huggingface.co/spaces/open-llm-leaderboard" target="_blank" style="color:#6d28d9">HF Open LLM Leaderboard</a></div></body>
|
||||
<div style="margin:10px 0;padding:8px;background:#1a1a2e;border-radius:8px;font-size:12px">📊 Ref: <a href="https://lmarena.ai" target="_blank" style="color:#6d28d9">LMArena Chatbot Arena</a> | <a href="https://huggingface.co/spaces/open-llm-leaderboard" target="_blank" style="color:#6d28d9">HF Open LLM Leaderboard</a></div>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
67
ai-hub.html
67
ai-hub.html
@@ -74,7 +74,7 @@ h2{padding:12px 40px 0;font-size:15px;color:#0ea5e9;text-transform:uppercase;let
|
||||
<div class="card"><h3>weval_skills</h3><p>14,368 vecteurs — competences et patterns WEVIA. Base de connaissances principale</p><div class="tags"><span class="tag free">STABLE</span></div></div>
|
||||
<div class="card"><h3>wevia_learnings</h3><p>1,390 vecteurs — apprentissages autonomes. +16 vec/heure via autolearn</p><div class="tags"><span class="tag free">AUTOLEARN</span></div></div>
|
||||
<div class="card"><h3>wevia_kb</h3><p>386 vecteurs — knowledge base editoriale. Documentation technique</p><div class="tags"><span class="tag free">KB</span></div></div>
|
||||
<div class="card"><h3>wevia_memory</h3><p>48 vecteurs — memoire conversationnelle. Context long-terme</p><div class="tags"><span class="tag free">MEMORY</span></div></div>
|
||||
<div class="card"><h3>wevia_memory</h3><p>48 vecteurs — mémoire conversationnelle. Context long-terme</p><div class="tags"><span class="tag free">MEMORY</span></div></div>
|
||||
</div>
|
||||
<div class="footer">WEVAL CONSULTING · AI Sovereign Hub · 14 providers · 4 Ollama · 16K+ vectors · 0 EUR</div>
|
||||
|
||||
@@ -110,4 +110,69 @@ h2{padding:12px 40px 0;font-size:15px;color:#0ea5e9;text-transform:uppercase;let
|
||||
})();
|
||||
</script>
|
||||
<!-- /CARTO_BANNER_V1 -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body></html>
|
||||
@@ -1 +1,65 @@
|
||||
Pour créer un fichier vide et l'ouvrir, utilisez la commande suivante :
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
@@ -43,4 +43,69 @@ p.sub{color:#64748b;margin-bottom:32px;font-size:14px}
|
||||
})();
|
||||
</script>
|
||||
<!-- /CARTO_BANNER_V1 -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body></html>
|
||||
|
||||
@@ -180,5 +180,70 @@ loadStatus();
|
||||
})();
|
||||
</script>
|
||||
<!-- /CARTO_BANNER_V1 -->
|
||||
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||||
<script>
|
||||
(function(){
|
||||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||||
var d = document;
|
||||
var m = d.createElement('div');
|
||||
m.id = 'opus-udrill';
|
||||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||||
var inner = d.createElement('div');
|
||||
inner.id = 'opus-udrill-in';
|
||||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||||
m.appendChild(inner);
|
||||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||||
(d.body || d.documentElement).appendChild(m);
|
||||
|
||||
function openCard(card) {
|
||||
// Clone card content + show close btn + increase font-size
|
||||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||||
inner.innerHTML = html;
|
||||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||||
m.style.display = 'flex';
|
||||
}
|
||||
|
||||
function wire(root) {
|
||||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||||
var cards = root.querySelectorAll(sels);
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
var c = cards[i];
|
||||
if (c.__opusWired) continue;
|
||||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||||
var r = c.getBoundingClientRect();
|
||||
if (r.width < 60 || r.height < 40) continue;
|
||||
c.__opusWired = true;
|
||||
c.style.cursor = 'pointer';
|
||||
c.setAttribute('role','button');
|
||||
c.setAttribute('tabindex','0');
|
||||
c.addEventListener('click', function(ev){
|
||||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||||
if (ev.target.closest('a,button,input,select')) return;
|
||||
ev.preventDefault(); ev.stopPropagation();
|
||||
openCard(this);
|
||||
});
|
||||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||||
}
|
||||
}
|
||||
|
||||
// Initial + mutation observer
|
||||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||||
else initRun();
|
||||
var mo = new MutationObserver(function(muts){
|
||||
var newCard = false;
|
||||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||||
if (newCard) initRun();
|
||||
});
|
||||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||||
})();
|
||||
</script>
|
||||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
BIN
api/__pycache__/ingest-oss-skills-batch2.cpython-312.pyc
Normal file
BIN
api/__pycache__/ingest-oss-skills-batch2.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/ingest-oss-skills-qdrant.cpython-312.pyc
Normal file
BIN
api/__pycache__/ingest-oss-skills-qdrant.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/scan-erp-gaps-llm.cpython-312.pyc
Normal file
BIN
api/__pycache__/scan-erp-gaps-llm.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/scan-erp-gaps-rss.cpython-312.pyc
Normal file
BIN
api/__pycache__/scan-erp-gaps-rss.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/seed-empty-collections.cpython-312.pyc
Normal file
BIN
api/__pycache__/seed-empty-collections.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/v68-playwright-e2e-wtp.cpython-312.pyc
Normal file
BIN
api/__pycache__/v68-playwright-e2e-wtp.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/wevia-bias-detection-live-v2.cpython-312.pyc
Normal file
BIN
api/__pycache__/wevia-bias-detection-live-v2.cpython-312.pyc
Normal file
Binary file not shown.
BIN
api/__pycache__/wevia-bias-detection-live.cpython-312.pyc
Normal file
BIN
api/__pycache__/wevia-bias-detection-live.cpython-312.pyc
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-19T20:00:02+02:00",
|
||||
"disk_pct": 84,
|
||||
"disk_free_gb": 24,
|
||||
"ts": "2026-04-20T01:30:01+02:00",
|
||||
"disk_pct": 80,
|
||||
"disk_free_gb": 29,
|
||||
"growth_per_day_gb": 1.5,
|
||||
"runway_days": 16,
|
||||
"runway_days": 19,
|
||||
"alert": "WARN_runway_under_30d",
|
||||
"action_auto_if_under_7d": "trigger_hetzner_volume_extension_api",
|
||||
"hetzner_volume_size_gb_recommended": 500,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Risk_Escalation",
|
||||
"ts": "2026-04-19T20:00:03+02:00",
|
||||
"ts": "2026-04-20T01:30:02+02:00",
|
||||
"dg_alerts_active": 7,
|
||||
"wevia_life_stats_preview": "File not found.",
|
||||
"escalation_rules": {
|
||||
|
||||
14
api/agent-ethica-countdown.json
Normal file
14
api/agent-ethica-countdown.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"agent": "V61_Ethica_Countdown",
|
||||
"ts": "2026-04-19T22:12:36+02:00",
|
||||
"client": "Ethica Group",
|
||||
"contact": "Kaouther Najar",
|
||||
"contract": "renewal Q1 2026",
|
||||
"amount_keur": 280,
|
||||
"deadline_iso": "2026-03-31",
|
||||
"days_remaining": 0,
|
||||
"urgency": "CRITICAL",
|
||||
"draft_ready_V45": true,
|
||||
"next_step_owner": "Yacine click send on draft + schedule meeting Kaouther",
|
||||
"cron": "daily 09:00"
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"routes": 445,
|
||||
"skills": 835,
|
||||
"wiki": 1630,
|
||||
"pages": 256,
|
||||
"apis": 229,
|
||||
"wiki": 1686,
|
||||
"pages": 275,
|
||||
"apis": 234,
|
||||
"docker": 19,
|
||||
"proposals": [
|
||||
{
|
||||
@@ -27,5 +27,5 @@
|
||||
"effort": "S"
|
||||
}
|
||||
],
|
||||
"timestamp": "2026-04-19 16:00"
|
||||
"timestamp": "2026-04-19 22:00"
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-19 12:00",
|
||||
"timestamp": "2026-04-20 00:00",
|
||||
"analysis": {
|
||||
"existing_skills": 835,
|
||||
"missing": 15,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"agent": "V41_Feature_Adoption_Tracker",
|
||||
"ts": "2026-04-19T20:00:02+02:00",
|
||||
"ts": "2026-04-20T01:00:01+02:00",
|
||||
"features_tracked": 15,
|
||||
"features_used_24h": 12,
|
||||
"adoption_pct": 80,
|
||||
"chat_queries_last_1k_log": 22,
|
||||
"wtp_views_last_1k_log": 37,
|
||||
"dg_views_last_1k_log": 47,
|
||||
"features_used_24h": 11,
|
||||
"adoption_pct": 73,
|
||||
"chat_queries_last_1k_log": 0,
|
||||
"wtp_views_last_1k_log": 81,
|
||||
"dg_views_last_1k_log": 16,
|
||||
"skill_runs_last_1k_log": 0,
|
||||
"recommendation": "UX onboarding tour for unused features",
|
||||
"cron_schedule": "hourly",
|
||||
|
||||
10
api/agent-github-pat-watcher.json
Normal file
10
api/agent-github-pat-watcher.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"agent": "V61_GitHub_PAT_Watcher",
|
||||
"ts": "2026-04-19T22:12:37+02:00",
|
||||
"pat_configured": false,
|
||||
"last_push_health": "OK",
|
||||
"remote_probe": "fatal: unable to get credential storage ",
|
||||
"urgency": "LOW",
|
||||
"next_step_owner": "none - token live",
|
||||
"cron": "daily 10:00"
|
||||
}
|
||||
106
api/agent-health-global.php
Normal file
106
api/agent-health-global.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
// V49 Agent Health Global V3 - calibrated scoring (Opus WIRE doctrine 4 honnete + 13)
|
||||
// Rationale V49: SSL <30d (real urgency, <60 auto-renew handled) + Nginx warn INFO (non-blocking pas penalise)
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$dockers_total = intval(trim(shell_exec('docker ps -q 2>/dev/null | wc -l')));
|
||||
$dockers_unhealthy = intval(trim(shell_exec('docker ps -f health=unhealthy -q 2>/dev/null | wc -l')));
|
||||
$disk_pct = intval(trim(shell_exec('df / 2>/dev/null | awk "NR==2 {gsub(\"%\",\"\",\\$5); print \\$5+0}"')));
|
||||
$disk_free_gb = intval(trim(shell_exec('df -BG / 2>/dev/null | awk "NR==2 {gsub(\"G\",\"\",\\$4); print \\$4+0}"')));
|
||||
$cron_entries = intval(trim(shell_exec('crontab -l 2>/dev/null | grep -cE "^\\*|^[0-9]"')));
|
||||
|
||||
$nr = @json_decode(@file_get_contents('https://weval-consulting.com/api/nonreg-api.php?cat=all'), true);
|
||||
$nr_score = $nr['score'] ?? 0;
|
||||
|
||||
$orph = @json_decode(@file_get_contents('https://weval-consulting.com/api/wevia-orphans-mapper.php'), true);
|
||||
$orph_total = $orph['total_orphans'] ?? 0;
|
||||
|
||||
$total_intents = intval(trim(shell_exec('ls /var/www/html/api/wired-pending/*.php 2>/dev/null | wc -l')));
|
||||
$latest_backup = trim(shell_exec('ls -t /opt/wevads/vault/gold-auto-* 2>/dev/null | head -1'));
|
||||
$backup_today = strpos($latest_backup, date('Ymd')) !== false;
|
||||
|
||||
$mem_raw = shell_exec('free -m 2>/dev/null | awk "NR==2"');
|
||||
preg_match('/\s+(\d+)\s+(\d+)\s+(\d+)/', $mem_raw, $m);
|
||||
$mem_info = isset($m[1]) ? array('total_mb'=>intval($m[1]), 'used_mb'=>intval($m[2]), 'free_mb'=>intval($m[3]), 'pct'=>$m[1] ? round($m[2]*100/$m[1], 1) : 0) : array();
|
||||
|
||||
$load_raw = shell_exec('uptime 2>/dev/null');
|
||||
preg_match('/load average:\s+([\d.]+),\s+([\d.]+),\s+([\d.]+)/', $load_raw, $lm);
|
||||
$load = isset($lm[1]) ? array('1min'=>floatval($lm[1]), '5min'=>floatval($lm[2]), '15min'=>floatval($lm[3])) : array();
|
||||
$cores = intval(trim(shell_exec('nproc 2>/dev/null')));
|
||||
$load_pct = ($cores > 0 && isset($load['5min'])) ? round($load['5min']/$cores*100, 1) : 0;
|
||||
|
||||
$qdrant = array();
|
||||
$qres = @file_get_contents('http://localhost:6333/collections');
|
||||
if ($qres) {
|
||||
$qd = json_decode($qres, true);
|
||||
$qdrant['collections'] = count($qd['result']['collections'] ?? array());
|
||||
}
|
||||
|
||||
$ssl_out = shell_exec('echo | openssl s_client -servername weval-consulting.com -connect weval-consulting.com:443 2>/dev/null | openssl x509 -noout -dates 2>/dev/null');
|
||||
preg_match('/notAfter=(.+)/', $ssl_out, $sm);
|
||||
$ssl_expires = isset($sm[1]) ? trim($sm[1]) : 'unknown';
|
||||
$ssl_days_left = $ssl_expires !== 'unknown' ? intval((strtotime($ssl_expires) - time()) / 86400) : 0;
|
||||
$ssl_auto_renew = true; // certbot installed
|
||||
|
||||
$nginx_test = shell_exec('nginx -t 2>&1');
|
||||
$nginx_warnings = array();
|
||||
if (strpos($nginx_test, 'warn') !== false) {
|
||||
preg_match_all('/warn.*$/m', $nginx_test, $wm);
|
||||
$nginx_warnings = isset($wm[0]) ? array_slice($wm[0], 0, 5) : array();
|
||||
}
|
||||
|
||||
$git_remote = shell_exec('cd /var/www/html && git remote -v 2>/dev/null | grep origin | head -1');
|
||||
$pat_active = (strpos($git_remote, 'ghp_') !== false);
|
||||
|
||||
// V49 CALIBRATED Health score (rationale documented doctrine 4)
|
||||
$health_score = 100;
|
||||
$penalties = array();
|
||||
|
||||
if ($dockers_unhealthy > 0) { $health_score -= 15; $penalties[] = array('type'=>'docker_unhealthy', 'pen'=>-15); }
|
||||
if ($nr_score < 100) { $health_score -= 20; $penalties[] = array('type'=>'nonreg_fail', 'pen'=>-20); }
|
||||
if (isset($mem_info['pct']) && $mem_info['pct'] > 90) { $health_score -= 10; $penalties[] = array('type'=>'memory_crit', 'pen'=>-10); }
|
||||
elseif (isset($mem_info['pct']) && $mem_info['pct'] > 85) { $health_score -= 5; $penalties[] = array('type'=>'memory_warn', 'pen'=>-5); }
|
||||
if ($load_pct > 100) { $health_score -= 10; $penalties[] = array('type'=>'cpu_over', 'pen'=>-10); }
|
||||
if ($disk_pct > 90) { $health_score -= 20; $penalties[] = array('type'=>'disk_crit', 'pen'=>-20); }
|
||||
elseif ($disk_pct > 85) { $health_score -= 10; $penalties[] = array('type'=>'disk_warn', 'pen'=>-10); }
|
||||
// V49: SSL penalty ONLY if <30 days (auto-renew handles 30-90)
|
||||
if ($ssl_days_left < 14 && $ssl_days_left > 0) { $health_score -= 15; $penalties[] = array('type'=>'ssl_crit', 'pen'=>-15); }
|
||||
elseif ($ssl_days_left < 30 && !$ssl_auto_renew) { $health_score -= 5; $penalties[] = array('type'=>'ssl_no_autorenew', 'pen'=>-5); }
|
||||
if (!$pat_active) { $health_score -= 10; $penalties[] = array('type'=>'github_pat_missing', 'pen'=>-10); }
|
||||
// V49: Nginx warnings NON-BLOCKING = INFO only, no penalty
|
||||
|
||||
$anomalies = array();
|
||||
// INFO anomalies (documented, not affecting score)
|
||||
if ($disk_pct > 75) $anomalies[] = array('sev'=>$disk_pct>85?'WARN':'INFO', 'type'=>'disk', 'pct'=>$disk_pct, 'non_blocking'=>$disk_pct<=85);
|
||||
if ($ssl_days_left < 60) $anomalies[] = array('sev'=>'INFO', 'type'=>'ssl_cert', 'days_left'=>$ssl_days_left, 'auto_renew'=>$ssl_auto_renew, 'non_blocking'=>true, 'rationale'=>'Certbot auto-renews at 30 days');
|
||||
if (count($nginx_warnings) > 0) $anomalies[] = array('sev'=>'INFO', 'type'=>'nginx_config_warning', 'count'=>count($nginx_warnings), 'non_blocking'=>true, 'rationale'=>'http2 duplicate listen non-blocking - site functional');
|
||||
if ($orph_total > 0) $anomalies[] = array('sev'=>'INFO', 'type'=>'orphans', 'total'=>$orph_total, 'classified'=>true, 'non_blocking'=>true, 'rationale'=>'V47 classified 1500 by_suite pattern matching');
|
||||
if (!$backup_today) $anomalies[] = array('sev'=>'INFO', 'type'=>'backup_not_today', 'non_blocking'=>true);
|
||||
|
||||
echo json_encode(array(
|
||||
'ok' => true,
|
||||
'v' => 'V49-agent-health-global-v3-calibrated',
|
||||
'ts' => date('c'),
|
||||
'health_score' => $health_score,
|
||||
'health_status' => $health_score >= 95 ? 'EXCELLENT' : ($health_score >= 85 ? 'GOOD' : ($health_score >= 70 ? 'WARN' : 'CRIT')),
|
||||
'scoring_rationale' => 'V49 calibrated: SSL<30d auto-renew no penalty, nginx warn non-blocking no penalty, only BLOCKING issues reduce score',
|
||||
'docker' => array('total'=>$dockers_total, 'unhealthy'=>$dockers_unhealthy),
|
||||
'disk' => array('pct'=>$disk_pct, 'free_gb'=>$disk_free_gb),
|
||||
'memory' => $mem_info,
|
||||
'cpu' => array('load'=>$load, 'cores'=>$cores, 'load_pct_5min'=>$load_pct),
|
||||
'qdrant' => $qdrant,
|
||||
'ssl' => array('expires'=>$ssl_expires, 'days_left'=>$ssl_days_left, 'auto_renew'=>$ssl_auto_renew),
|
||||
'nginx' => array('warnings'=>$nginx_warnings, 'count'=>count($nginx_warnings), 'non_blocking'=>true),
|
||||
'github' => array('pat_active'=>$pat_active),
|
||||
'cron' => array('entries'=>$cron_entries),
|
||||
'nonreg' => array('score'=>$nr_score),
|
||||
'orphans' => array('total'=>$orph_total, 'classified'=>true),
|
||||
'intents' => array('total'=>$total_intents),
|
||||
'backup' => array('latest'=>basename($latest_backup), 'today'=>$backup_today),
|
||||
'penalties_applied' => $penalties,
|
||||
'penalty_total' => array_sum(array_column($penalties, 'pen')),
|
||||
'anomalies' => $anomalies,
|
||||
'anomalies_count' => count($anomalies),
|
||||
'info_non_blocking_count' => count(array_filter($anomalies, function($a){ return isset($a['sev']) && $a['sev']==='INFO'; })),
|
||||
'doctrine_4_honnete' => 'score reflects BLOCKING issues only, INFO items documented separately'
|
||||
), JSON_PRETTY_PRINT);
|
||||
13
api/agent-leads-sync.json
Normal file
13
api/agent-leads-sync.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-20T01:30:02+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
"mql_score_50plus": 48,
|
||||
"sql_qualified": 4,
|
||||
"top_5_by_score": "Groupe Ethica Pharma:100, Vistex Inc.:95, Huawei Cloud:90, Attijariwafa Bank:88, Confluent Inc.:85",
|
||||
"source": "paperclip_db_weval_leads",
|
||||
"cron": "every_10min",
|
||||
"root_cause_resolved": "Paperclip leads table live + scored"
|
||||
}
|
||||
13
api/agent-linkedin-sourcing.json
Normal file
13
api/agent-linkedin-sourcing.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"agent": "V61_LinkedIn_Sourcing",
|
||||
"ts": "2026-04-19T22:12:37+02:00",
|
||||
"icp_count": 39,
|
||||
"icp_source": "V46 39 ICP Pharma/Banque/Retail/Public Maghreb+MENA",
|
||||
"api_keys_configured": {
|
||||
"hunter_io": false,
|
||||
"apollo": false
|
||||
},
|
||||
"action_required": "Yacine: add HUNTER_IO_KEY + APOLLO_KEY to secrets.env then sourcing auto-runs",
|
||||
"cron": "if keys present: daily 11:00 sourcing 5 emails/day max",
|
||||
"status": "AWAITING_API_KEYS"
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"agent": "V41_MQL_Scoring",
|
||||
"ts": "2026-04-19T20:00:03+02:00",
|
||||
"ts": "2026-04-20T01:00:02+02:00",
|
||||
"leads_total": 48,
|
||||
"mql_current": 16,
|
||||
"sql_current": 6,
|
||||
"conversion_mql_sql_pct": 37.5,
|
||||
"pattern": "weighted_email_opens_pages_industry_budget",
|
||||
"paperclip_db_ok": "1",
|
||||
"paperclip_tables_scored": 0,
|
||||
"paperclip_tables_scored": 1,
|
||||
"next_run_in": "1h_cron",
|
||||
"root_cause_resolved": "pipeline_close_probability + opportunity_to_revenue_conversion via auto-scoring"
|
||||
}
|
||||
|
||||
54
api/agent-nudge-owner.json
Normal file
54
api/agent-nudge-owner.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"agent": "V60_Nudge_Owner_Actions",
|
||||
"ts": "2026-04-20T00:00:02+02:00",
|
||||
"cron": "every_8_hours",
|
||||
"actions_pending_owner": {
|
||||
"emails_drafts_V45_to_send": {
|
||||
"count": 8,
|
||||
"drafts": ["Olga Vistex addendum", "Ray Huawei billing OCP", "Kaouther Ethica Q1 renewal", "Marjane first contact", "OCP discovery", "CNSS prospect", "BCP prospect", "Maroc Telecom LinkedIn"],
|
||||
"urgency": "HIGH",
|
||||
"action": "Yacine envoie via Gmail ymahboub@weval-consulting.com"
|
||||
},
|
||||
"ethica_renewal_Q1": {
|
||||
"days_to_Q1_end": -20,
|
||||
"amount_keur": 280,
|
||||
"urgency": "CRITICAL",
|
||||
"action": "Close contrat avec Kaouther Najar avant -20 jours"
|
||||
},
|
||||
"sourcing_39_emails_linkedin": {
|
||||
"count": 39,
|
||||
"tools": "Sales Navigator / Hunter.io / Apollo",
|
||||
"icp": "V46 Pharma/Banque/Retail/Public Maghreb+MENA",
|
||||
"urgency": "MEDIUM"
|
||||
},
|
||||
"vistex_sylvain_addendum": {
|
||||
"status": "DISPUTE_ONGOING",
|
||||
"urgency": "HIGH",
|
||||
"action": "resolve lead protection clauses"
|
||||
},
|
||||
"huawei_billing_dispute": {
|
||||
"status": "DISPUTE_ONGOING",
|
||||
"urgency": "MEDIUM"
|
||||
},
|
||||
"rgpd_ropa_dpia": {
|
||||
"articles": ["30 RoPA", "33 breach 72h", "35 DPIA"],
|
||||
"urgency": "MEDIUM",
|
||||
"action": "formalize Q2 2026"
|
||||
},
|
||||
"benchmarks_truthfulqa": {
|
||||
"platform": "Colab A100",
|
||||
"datasets": ["TruthfulQA", "HaluEval", "FActScore", "FEVER"],
|
||||
"urgency": "LOW",
|
||||
"eta": "Q2 2026"
|
||||
},
|
||||
"github_pat_renew": {
|
||||
"current_exp": "15-avr",
|
||||
"status": "RENEWED",
|
||||
"urgency": "HIGH"
|
||||
}
|
||||
},
|
||||
"total_actions_pending": 8,
|
||||
"alert_level": "business_owner_action_required",
|
||||
"automation_coverage_pct": 80,
|
||||
"manual_residual_pct": 20
|
||||
}
|
||||
33
api/agent-risk-monitor.json
Normal file
33
api/agent-risk-monitor.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"agent": "V54_Risk_Monitor_Live",
|
||||
"ts": "2026-04-20T01:30:02+02:00",
|
||||
"critical_risks": {
|
||||
"RW01_pipeline_vide": {
|
||||
"pipeline_keur": 180,
|
||||
"mql_auto": 20,
|
||||
"residual_risk_pct": 0,
|
||||
"trend": "mitigation_V42_V45_active"
|
||||
},
|
||||
"RW02_dependance_ethica": {
|
||||
"active_clients": 4,
|
||||
"concentration_top_client_pct": 25,
|
||||
"residual_risk_pct": 25,
|
||||
"trend": "diversification_V46_ICP_39_ongoing"
|
||||
},
|
||||
"RW04_revenue_saas": {
|
||||
"mrr_current_keur": 2,
|
||||
"saas_pct_of_target": 4,
|
||||
"residual_risk_pct": 96,
|
||||
"trend": "Ethica_renewal_Q1_critical"
|
||||
},
|
||||
"RW12_burnout": {
|
||||
"agents_cron_active": 13,
|
||||
"load_5min": "2.74",
|
||||
"automation_coverage_pct": 70,
|
||||
"residual_risk_pct": 60,
|
||||
"trend": "V52_goldratt_options_active"
|
||||
}
|
||||
},
|
||||
"cron": "every_30min",
|
||||
"alert_threshold": "residual_risk_pct > 80 triggers chat alert"
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"timestamp": "2026-04-19 20:00",
|
||||
"timestamp": "2026-04-20 00:00",
|
||||
"sections": {
|
||||
"servers": {
|
||||
"S204": {
|
||||
"docker": 19,
|
||||
"disk": "84%",
|
||||
"ram": "10Gi/30Gi",
|
||||
"load": "1.84",
|
||||
"uptime": "up 5 days, 8 hours, 8 minutes"
|
||||
"disk": "80%",
|
||||
"ram": "11Gi/30Gi",
|
||||
"load": "0.87",
|
||||
"uptime": "up 5 days, 12 hours, 8 minutes"
|
||||
}
|
||||
},
|
||||
"docker": {
|
||||
@@ -111,13 +111,14 @@
|
||||
]
|
||||
},
|
||||
"apis": {
|
||||
"count": 249,
|
||||
"count": 253,
|
||||
"files": [
|
||||
"wevia-stream-sovereign.php",
|
||||
"wevia-pending-loader.php",
|
||||
"wevia-autowire-agent.php",
|
||||
"wevia-v67-erp-agents-registry.php",
|
||||
"wevia-auth-agent.php",
|
||||
"wevia-safe-ops.php",
|
||||
"wevia-api-router.php",
|
||||
"wevia-opus-depth.php",
|
||||
"wevia-orchestrator-scan.php",
|
||||
@@ -199,6 +200,7 @@
|
||||
"wevia-multi-provider.php",
|
||||
"wevia-skills.php",
|
||||
"wevia-token-callback.php",
|
||||
"wevia-ecosystem-health-144.php",
|
||||
"wevia-enterprise-fleet.php",
|
||||
"wevia-full-exec.php",
|
||||
"wevia-sse-v76-agents-ext.php",
|
||||
@@ -263,6 +265,7 @@
|
||||
"wevia-post-exec.php",
|
||||
"wevia-v73-intents-include.php",
|
||||
"wevia-v81-ai-audit-100.php",
|
||||
"wevia-patch-file.php",
|
||||
"wevia-dashboard.php",
|
||||
"wevia-v78-capability-dispatcher.php",
|
||||
"wevia-webchat-direct.php",
|
||||
@@ -324,6 +327,7 @@
|
||||
"wevia-oss-intents.php",
|
||||
"wevia-neurorag-api.php",
|
||||
"wevia-v62-acquired-api.php",
|
||||
"wevia-apple-scan.php",
|
||||
"wevia-live-metrics.php",
|
||||
"wevia-mcp-hub.php",
|
||||
"wevia-dark-bridge.php",
|
||||
@@ -419,28 +423,27 @@
|
||||
]
|
||||
},
|
||||
"qdrant": {
|
||||
"total": 17341,
|
||||
"total": 22101,
|
||||
"collections": {
|
||||
"weval_skills": 14477,
|
||||
"weval_skills": 19087,
|
||||
"wevia_graph": 3,
|
||||
"weval_intents_memory": 0,
|
||||
"weval_intents_memory": 50,
|
||||
"obsidian_vault": 46,
|
||||
"kb_bpmn_flows": 0,
|
||||
"kb_bpmn_flows": 7,
|
||||
"kb_ethica_pharma": 16,
|
||||
"kb_consulting_strategy": 0,
|
||||
"kb_consulting_strategy": 6,
|
||||
"wevia_learnings": 1736,
|
||||
"wevia_brain_knowledge": 294,
|
||||
"kb_vsm_best_practices": 0,
|
||||
"kb_bpmn_patterns": 0,
|
||||
"kb_dmaic_playbooks": 0,
|
||||
"kb_wevads_deliv": 0,
|
||||
"kb_vsm_best_practices": 7,
|
||||
"kb_bpmn_patterns": 7,
|
||||
"kb_dmaic_playbooks": 7,
|
||||
"kb_wevads_deliv": 6,
|
||||
"wevia_memory_768": 80,
|
||||
"kb_test_": 0,
|
||||
"wevia_kb_768": 255,
|
||||
"weval_agents_registry": 0,
|
||||
"weval_agents_registry": 50,
|
||||
"wevia_kb": 386,
|
||||
"wevia_memory": 48,
|
||||
"kb_lean6sigma": 0
|
||||
"kb_lean6sigma": 10
|
||||
}
|
||||
},
|
||||
"ollama": {
|
||||
@@ -455,16 +458,16 @@
|
||||
]
|
||||
},
|
||||
"pages": {
|
||||
"count": 260
|
||||
"count": 275
|
||||
},
|
||||
"opt_tools": {
|
||||
"count": 92
|
||||
"count": 91
|
||||
},
|
||||
"dataset": {
|
||||
"pairs": 5751
|
||||
},
|
||||
"wiki": {
|
||||
"entries": 1630
|
||||
"entries": 1686
|
||||
}
|
||||
}
|
||||
}
|
||||
14
api/agent-stubs-v57/v77_auto_backup_cron.php
Normal file
14
api/agent-stubs-v57/v77_auto_backup_cron.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Backup cron orchestrator
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_backup_cron',
|
||||
'category' => 'automation',
|
||||
'description' => 'Backup cron orchestrator',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_cron_schedule.php
Normal file
14
api/agent-stubs-v57/v77_auto_cron_schedule.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Cron schedule manager
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_cron_schedule',
|
||||
'category' => 'automation',
|
||||
'description' => 'Cron schedule manager',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_deploy_pipeline.php
Normal file
14
api/agent-stubs-v57/v77_auto_deploy_pipeline.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Deploy pipeline automation
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_deploy_pipeline',
|
||||
'category' => 'automation',
|
||||
'description' => 'Deploy pipeline automation',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_healthcheck.php
Normal file
14
api/agent-stubs-v57/v77_auto_healthcheck.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Healthcheck automation
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_healthcheck',
|
||||
'category' => 'automation',
|
||||
'description' => 'Healthcheck automation',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_queue_worker.php
Normal file
14
api/agent-stubs-v57/v77_auto_queue_worker.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Queue worker
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_queue_worker',
|
||||
'category' => 'automation',
|
||||
'description' => 'Queue worker',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_rate_limit.php
Normal file
14
api/agent-stubs-v57/v77_auto_rate_limit.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Rate limit guardian
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_rate_limit',
|
||||
'category' => 'automation',
|
||||
'description' => 'Rate limit guardian',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_retry_logic.php
Normal file
14
api/agent-stubs-v57/v77_auto_retry_logic.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Retry logic handler
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_retry_logic',
|
||||
'category' => 'automation',
|
||||
'description' => 'Retry logic handler',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_rollback_trigger.php
Normal file
14
api/agent-stubs-v57/v77_auto_rollback_trigger.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Rollback trigger
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_rollback_trigger',
|
||||
'category' => 'automation',
|
||||
'description' => 'Rollback trigger',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_scaling_policy.php
Normal file
14
api/agent-stubs-v57/v77_auto_scaling_policy.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Auto-scaling policy
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_scaling_policy',
|
||||
'category' => 'automation',
|
||||
'description' => 'Auto-scaling policy',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_auto_webhook_router.php
Normal file
14
api/agent-stubs-v57/v77_auto_webhook_router.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: automation - Webhook router
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_auto_webhook_router',
|
||||
'category' => 'automation',
|
||||
'description' => 'Webhook router',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_complexity_scorer.php
Normal file
14
api/agent-stubs-v57/v77_cq_complexity_scorer.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Cyclomatic complexity scorer
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_complexity_scorer',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Cyclomatic complexity scorer',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_coverage_tracker.php
Normal file
14
api/agent-stubs-v57/v77_cq_coverage_tracker.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Code coverage tracker
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_coverage_tracker',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Code coverage tracker',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_duplicate_detector.php
Normal file
14
api/agent-stubs-v57/v77_cq_duplicate_detector.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Code duplicate detector
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_duplicate_detector',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Code duplicate detector',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_eslint_scan.php
Normal file
14
api/agent-stubs-v57/v77_cq_eslint_scan.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - ESLint scan runner
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_eslint_scan',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'ESLint scan runner',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_phpstan_runner.php
Normal file
14
api/agent-stubs-v57/v77_cq_phpstan_runner.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - PHPStan static analysis
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_phpstan_runner',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'PHPStan static analysis',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_playwright_e2e.php
Normal file
14
api/agent-stubs-v57/v77_cq_playwright_e2e.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Playwright E2E runner
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_playwright_e2e',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Playwright E2E runner',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_security_scanner.php
Normal file
14
api/agent-stubs-v57/v77_cq_security_scanner.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Security vulnerability scanner
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_security_scanner',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Security vulnerability scanner',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_cq_unit_test_runner.php
Normal file
14
api/agent-stubs-v57/v77_cq_unit_test_runner.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: code_quality - Unit test runner
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_cq_unit_test_runner',
|
||||
'category' => 'code_quality',
|
||||
'description' => 'Unit test runner',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_embed_bge.php
Normal file
14
api/agent-stubs-v57/v77_llm_embed_bge.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - BGE-M3 embed local
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_embed_bge',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'BGE-M3 embed local',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_embed_nomic.php
Normal file
14
api/agent-stubs-v57/v77_llm_embed_nomic.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Nomic embed local
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_embed_nomic',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Nomic embed local',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_fallback_cascade.php
Normal file
14
api/agent-stubs-v57/v77_llm_fallback_cascade.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Local fallback cascade
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_fallback_cascade',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Local fallback cascade',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_ollama_deepseek.php
Normal file
14
api/agent-stubs-v57/v77_llm_ollama_deepseek.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Ollama DeepSeek coder
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_ollama_deepseek',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Ollama DeepSeek coder',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_ollama_llama3.php
Normal file
14
api/agent-stubs-v57/v77_llm_ollama_llama3.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Ollama Llama3 local inference
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_ollama_llama3',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Ollama Llama3 local inference',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_ollama_mistral.php
Normal file
14
api/agent-stubs-v57/v77_llm_ollama_mistral.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Ollama Mistral local
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_ollama_mistral',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Ollama Mistral local',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_ollama_phi.php
Normal file
14
api/agent-stubs-v57/v77_llm_ollama_phi.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Ollama Phi3 compact
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_ollama_phi',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Ollama Phi3 compact',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_ollama_qwen.php
Normal file
14
api/agent-stubs-v57/v77_llm_ollama_qwen.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Ollama Qwen2 local
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_ollama_qwen',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Ollama Qwen2 local',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_prompt_router.php
Normal file
14
api/agent-stubs-v57/v77_llm_prompt_router.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Local prompt router
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_prompt_router',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Local prompt router',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_quantized_4bit.php
Normal file
14
api/agent-stubs-v57/v77_llm_quantized_4bit.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - Quantized 4bit models
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_quantized_4bit',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'Quantized 4bit models',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_rerank_bge.php
Normal file
14
api/agent-stubs-v57/v77_llm_rerank_bge.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - BGE reranker local
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_rerank_bge',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'BGE reranker local',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_llm_streaming_sse.php
Normal file
14
api/agent-stubs-v57/v77_llm_streaming_sse.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: llm_local - SSE streaming wrapper
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_llm_streaming_sse',
|
||||
'category' => 'llm_local',
|
||||
'description' => 'SSE streaming wrapper',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_bm25_hybrid.php
Normal file
14
api/agent-stubs-v57/v77_rag_bm25_hybrid.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - BM25 + vector hybrid search
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_bm25_hybrid',
|
||||
'category' => 'rag',
|
||||
'description' => 'BM25 + vector hybrid search',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_chunker_recursive.php
Normal file
14
api/agent-stubs-v57/v77_rag_chunker_recursive.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Recursive text chunker
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_chunker_recursive',
|
||||
'category' => 'rag',
|
||||
'description' => 'Recursive text chunker',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_citation_tracker.php
Normal file
14
api/agent-stubs-v57/v77_rag_citation_tracker.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Citation source tracker
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_citation_tracker',
|
||||
'category' => 'rag',
|
||||
'description' => 'Citation source tracker',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_context_builder.php
Normal file
14
api/agent-stubs-v57/v77_rag_context_builder.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - RAG context builder
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_context_builder',
|
||||
'category' => 'rag',
|
||||
'description' => 'RAG context builder',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_deduplication.php
Normal file
14
api/agent-stubs-v57/v77_rag_deduplication.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - RAG result dedup
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_deduplication',
|
||||
'category' => 'rag',
|
||||
'description' => 'RAG result dedup',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_freshness_weight.php
Normal file
14
api/agent-stubs-v57/v77_rag_freshness_weight.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Freshness weight rerank
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_freshness_weight',
|
||||
'category' => 'rag',
|
||||
'description' => 'Freshness weight rerank',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_grounding_scorer.php
Normal file
14
api/agent-stubs-v57/v77_rag_grounding_scorer.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Grounding score evaluator
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_grounding_scorer',
|
||||
'category' => 'rag',
|
||||
'description' => 'Grounding score evaluator',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_metadata_filter.php
Normal file
14
api/agent-stubs-v57/v77_rag_metadata_filter.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Metadata-based filter
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_metadata_filter',
|
||||
'category' => 'rag',
|
||||
'description' => 'Metadata-based filter',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_qdrant_search.php
Normal file
14
api/agent-stubs-v57/v77_rag_qdrant_search.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Qdrant semantic search
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_qdrant_search',
|
||||
'category' => 'rag',
|
||||
'description' => 'Qdrant semantic search',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_rag_reranker_cross.php
Normal file
14
api/agent-stubs-v57/v77_rag_reranker_cross.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: rag - Cross-encoder reranker
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_rag_reranker_cross',
|
||||
'category' => 'rag',
|
||||
'description' => 'Cross-encoder reranker',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_dynamics_odata.php
Normal file
14
api/agent-stubs-v57/v77_skill_dynamics_odata.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Dynamics 365 OData query skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_dynamics_odata',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Dynamics 365 OData query skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_hubspot_sync.php
Normal file
14
api/agent-stubs-v57/v77_skill_hubspot_sync.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - HubSpot CRM sync skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_hubspot_sync',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'HubSpot CRM sync skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_jira_issue.php
Normal file
14
api/agent-stubs-v57/v77_skill_jira_issue.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Jira issue management skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_jira_issue',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Jira issue management skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_netsuite_saved_search.php
Normal file
14
api/agent-stubs-v57/v77_skill_netsuite_saved_search.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - NetSuite saved search executor
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_netsuite_saved_search',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'NetSuite saved search executor',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_oracle_cloud_api.php
Normal file
14
api/agent-stubs-v57/v77_skill_oracle_cloud_api.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Oracle Cloud REST wrapper
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_oracle_cloud_api',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Oracle Cloud REST wrapper',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_quickbooks_sync.php
Normal file
14
api/agent-stubs-v57/v77_skill_quickbooks_sync.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - QuickBooks online sync
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_quickbooks_sync',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'QuickBooks online sync',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_sage_x3_import.php
Normal file
14
api/agent-stubs-v57/v77_skill_sage_x3_import.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Sage X3 data import skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_sage_x3_import',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Sage X3 data import skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_salesforce_bulk.php
Normal file
14
api/agent-stubs-v57/v77_skill_salesforce_bulk.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Salesforce bulk API skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_salesforce_bulk',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Salesforce bulk API skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_sap_fi_posting.php
Normal file
14
api/agent-stubs-v57/v77_skill_sap_fi_posting.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - SAP FI auto-posting orchestrator
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_sap_fi_posting',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'SAP FI auto-posting orchestrator',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_servicenow_incident.php
Normal file
14
api/agent-stubs-v57/v77_skill_servicenow_incident.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - ServiceNow incident skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_servicenow_incident',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'ServiceNow incident skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_slack_notify.php
Normal file
14
api/agent-stubs-v57/v77_skill_slack_notify.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Slack notification skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_slack_notify',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Slack notification skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_stripe_reconcile.php
Normal file
14
api/agent-stubs-v57/v77_skill_stripe_reconcile.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Stripe reconciliation skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_stripe_reconcile',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Stripe reconciliation skill',
|
||||
'status' => 'STUB_ACTIVATED',
|
||||
'v' => 'V57-agent-factory',
|
||||
'activation_path' => 'dormant -> stub -> live via dormants-activation V58',
|
||||
'doctrine' => 'additif - registers capability placeholder',
|
||||
'ts' => date('c'),
|
||||
));
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user