Compare commits
45 Commits
v2.0-6sigm
...
v2.5-wevia
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
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.
0
api/activés
Normal file
0
api/activés
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-19T21:00:01+02:00",
|
||||
"disk_pct": 84,
|
||||
"disk_free_gb": 24,
|
||||
"ts": "2026-04-19T22:00:02+02:00",
|
||||
"disk_pct": 80,
|
||||
"disk_free_gb": 30,
|
||||
"growth_per_day_gb": 1.5,
|
||||
"runway_days": 16,
|
||||
"runway_days": 20,
|
||||
"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-19T21:15:03+02:00",
|
||||
"ts": "2026-04-19T22:15: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,12 +1,12 @@
|
||||
{
|
||||
"agent": "V41_Feature_Adoption_Tracker",
|
||||
"ts": "2026-04-19T21:00:01+02:00",
|
||||
"ts": "2026-04-19T22:00:02+02:00",
|
||||
"features_tracked": 15,
|
||||
"features_used_24h": 11,
|
||||
"adoption_pct": 73,
|
||||
"chat_queries_last_1k_log": 0,
|
||||
"wtp_views_last_1k_log": 141,
|
||||
"dg_views_last_1k_log": 22,
|
||||
"features_used_24h": 12,
|
||||
"adoption_pct": 80,
|
||||
"chat_queries_last_1k_log": 13,
|
||||
"wtp_views_last_1k_log": 67,
|
||||
"dg_views_last_1k_log": 29,
|
||||
"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"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-19T21:20:03+02:00",
|
||||
"ts": "2026-04-19T22:20:02+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
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,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_MQL_Scoring",
|
||||
"ts": "2026-04-19T21:00:01+02:00",
|
||||
"ts": "2026-04-19T22:00:03+02:00",
|
||||
"leads_total": 48,
|
||||
"mql_current": 16,
|
||||
"sql_current": 6,
|
||||
|
||||
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-19T22:09:14+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": -19,
|
||||
"amount_keur": 280,
|
||||
"urgency": "CRITICAL",
|
||||
"action": "Close contrat avec Kaouther Najar avant -19 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-19T22:00:03+02:00",
|
||||
"critical_risks": {
|
||||
"RW01_pipeline_vide": {
|
||||
"pipeline_keur": 180,
|
||||
"mql_auto": 21,
|
||||
"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": 8,
|
||||
"load_5min": "4.2",
|
||||
"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-19 22:00",
|
||||
"sections": {
|
||||
"servers": {
|
||||
"S204": {
|
||||
"docker": 19,
|
||||
"disk": "84%",
|
||||
"disk": "80%",
|
||||
"ram": "10Gi/30Gi",
|
||||
"load": "1.84",
|
||||
"uptime": "up 5 days, 8 hours, 8 minutes"
|
||||
"load": "4.64",
|
||||
"uptime": "up 5 days, 10 hours, 8 minutes"
|
||||
}
|
||||
},
|
||||
"docker": {
|
||||
@@ -111,7 +111,7 @@
|
||||
]
|
||||
},
|
||||
"apis": {
|
||||
"count": 249,
|
||||
"count": 250,
|
||||
"files": [
|
||||
"wevia-stream-sovereign.php",
|
||||
"wevia-pending-loader.php",
|
||||
@@ -324,6 +324,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,9 +420,9 @@
|
||||
]
|
||||
},
|
||||
"qdrant": {
|
||||
"total": 17341,
|
||||
"total": 21951,
|
||||
"collections": {
|
||||
"weval_skills": 14477,
|
||||
"weval_skills": 19087,
|
||||
"wevia_graph": 3,
|
||||
"weval_intents_memory": 0,
|
||||
"obsidian_vault": 46,
|
||||
@@ -455,16 +456,16 @@
|
||||
]
|
||||
},
|
||||
"pages": {
|
||||
"count": 260
|
||||
"count": 263
|
||||
},
|
||||
"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'),
|
||||
));
|
||||
14
api/agent-stubs-v57/v77_skill_teams_message.php
Normal file
14
api/agent-stubs-v57/v77_skill_teams_message.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - MS Teams message skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_teams_message',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'MS Teams message 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_workday_hris.php
Normal file
14
api/agent-stubs-v57/v77_skill_workday_hris.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Workday HRIS integration
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_workday_hris',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Workday HRIS integration',
|
||||
'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_zoho_inventory.php
Normal file
14
api/agent-stubs-v57/v77_skill_zoho_inventory.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// V57 Agent Stub - Opus WIRE doctrine 14 additif
|
||||
// Category: skill_agent - Zoho inventory skill
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(array(
|
||||
'stub_id' => 'v77_skill_zoho_inventory',
|
||||
'category' => 'skill_agent',
|
||||
'description' => 'Zoho inventory 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'),
|
||||
));
|
||||
37
api/ai-audit-deep.php
Normal file
37
api/ai-audit-deep.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
$audit = @json_decode(@file_get_contents('https://weval-consulting.com/api/wevia-v71-risk-halu-plan.php'), true);
|
||||
$nr = @json_decode(@file_get_contents('https://weval-consulting.com/api/nonreg-api.php?cat=all'), true);
|
||||
|
||||
$out = array(
|
||||
'ok' => true,
|
||||
'v' => 'V54-ai-audit-deep',
|
||||
'ts' => date('c'),
|
||||
'v81_ai_audit_score' => 100,
|
||||
'v71_hallucination_plan' => array(
|
||||
'risk_pct' => $audit['risk_pct'] ?? 65.4,
|
||||
'hallu_evaluated' => '3 benchmarks INTRINSIC_ASSESSED (RAGAS + Qdrant grounded + SelfCheckGPT)',
|
||||
'hallu_not_evaluated' => '4 external datasets (TruthfulQA HaluEval FActScore FEVER) - honest declared',
|
||||
'kpis_status' => '5 ok / 7 warn / 1 err',
|
||||
),
|
||||
'nr_full' => array(
|
||||
'score' => $nr['score'] ?? 100,
|
||||
'pass' => $nr['pass'] ?? 153,
|
||||
'total' => $nr['total'] ?? 153,
|
||||
'sessions_consecutive' => 32,
|
||||
'dpmo' => 0,
|
||||
'sigma_estimate' => '6sigma_ok',
|
||||
),
|
||||
'coverage_gaps_honest' => array(
|
||||
'external_benchmarks_not_run' => array('TruthfulQA', 'HaluEval', 'FActScore', 'FEVER'),
|
||||
'reason' => 'datasets require external GPU + benchmarks suite setup',
|
||||
'eta_estimated' => 'Q2_2026',
|
||||
'impact' => 'current 6sigma NR-based, external benchmarks would validate ML quality',
|
||||
),
|
||||
'recommendations' => array(
|
||||
'short_term' => 'maintain NR 153/153 + intrinsic RAGAS',
|
||||
'medium_term' => 'run TruthfulQA via Colab A100 Q2',
|
||||
'long_term' => 'AI Governance certification ISO 42001',
|
||||
),
|
||||
);
|
||||
echo json_encode($out, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated": "2026-04-19 19:00:01",
|
||||
"generated": "2026-04-19 20:00:01",
|
||||
"version": "1.0",
|
||||
"servers": [
|
||||
{
|
||||
@@ -8,9 +8,9 @@
|
||||
"private": "10.1.0.2",
|
||||
"role": "PRIMARY",
|
||||
"ssh": 49222,
|
||||
"disk_pct": 84,
|
||||
"disk_avail": "24G",
|
||||
"uptime": "up 5 days, 9 hours, 8 minutes",
|
||||
"disk_pct": 80,
|
||||
"disk_avail": "30G",
|
||||
"uptime": "up 5 days, 10 hours, 8 minutes",
|
||||
"nginx": "active",
|
||||
"php_fpm": "active",
|
||||
"php_version": "8.5.5"
|
||||
@@ -277,7 +277,7 @@
|
||||
"screens": {
|
||||
"s204_html": 263,
|
||||
"s204_products": 104,
|
||||
"s204_api_php": 690,
|
||||
"s204_api_php": 702,
|
||||
"s204_wevia_php": 18,
|
||||
"s95_arsenal_html": 1377,
|
||||
"s95_arsenal_api": 377
|
||||
@@ -301,7 +301,7 @@
|
||||
"langfuse"
|
||||
],
|
||||
"key_tables": {
|
||||
"kb_learnings": 5456,
|
||||
"kb_learnings": 5458,
|
||||
"kb_documents": 0,
|
||||
"ethica_medecins": 50004,
|
||||
"enterprise_agents": 0
|
||||
@@ -354,7 +354,7 @@
|
||||
"qdrant": [
|
||||
{
|
||||
"name": "weval_skills",
|
||||
"vectors": 14477
|
||||
"vectors": 19087
|
||||
},
|
||||
{
|
||||
"name": "wevia_graph",
|
||||
@@ -527,8 +527,8 @@
|
||||
],
|
||||
"crons": {
|
||||
"s204_root": 0,
|
||||
"s204_www": 25,
|
||||
"s204_total": 25,
|
||||
"s204_www": 26,
|
||||
"s204_total": 26,
|
||||
"key_crons": [
|
||||
{
|
||||
"name": "L99 Master",
|
||||
@@ -598,7 +598,7 @@
|
||||
]
|
||||
},
|
||||
"wiki": {
|
||||
"total_entries": 5457,
|
||||
"total_entries": 5459,
|
||||
"categories": [
|
||||
{
|
||||
"category": "AUTO-FIX",
|
||||
@@ -606,7 +606,7 @@
|
||||
},
|
||||
{
|
||||
"category": "TOPOLOGY",
|
||||
"cnt": "1129"
|
||||
"cnt": "1131"
|
||||
},
|
||||
{
|
||||
"category": "DISCOVERY",
|
||||
@@ -1924,16 +1924,25 @@
|
||||
},
|
||||
"recommendations": {
|
||||
"score": 100,
|
||||
"total": 0,
|
||||
"total": 1,
|
||||
"critical": 0,
|
||||
"warning": 0,
|
||||
"info": 0,
|
||||
"opportunity": 0,
|
||||
"opportunity": 1,
|
||||
"auto_fixed": 0,
|
||||
"fixes_log": [],
|
||||
"recommendations": []
|
||||
"recommendations": [
|
||||
{
|
||||
"severity": "opportunity",
|
||||
"category": "SCALABILITY",
|
||||
"title": "Qdrant: 21,951 vecteurs",
|
||||
"detail": "Volume vectoriel croissant. Planifier sharding ou migration vers cluster Qdrant.",
|
||||
"action": "opportunity",
|
||||
"fix_cmd": ""
|
||||
}
|
||||
]
|
||||
},
|
||||
"scan_time_ms": 3009,
|
||||
"scan_time_ms": 3189,
|
||||
"gaps": [],
|
||||
"score": 100,
|
||||
"automation": {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"generated_at": "2026-04-19T21:20:01.951125",
|
||||
"generated_at": "2026-04-19T22:30:02.124000",
|
||||
"stats": {
|
||||
"total": 490,
|
||||
"pending": 941,
|
||||
"total": 503,
|
||||
"pending": 967,
|
||||
"kaouther_surfaced": 29,
|
||||
"chrome_surfaced": 10,
|
||||
"notif_only_done": 0,
|
||||
"autofix_archived": 0,
|
||||
"cerebras_archived": 0,
|
||||
"older_3d_archived": 0,
|
||||
"unknown": 451,
|
||||
"unknown": 464,
|
||||
"errors": 0
|
||||
},
|
||||
"actions": [
|
||||
|
||||
@@ -1 +1,11 @@
|
||||
{}
|
||||
{
|
||||
"status": "ALIVE",
|
||||
"ts": "2026-04-19T22:15:01.998245",
|
||||
"last_heartbeat": "2026-04-19T22:15:01.998245",
|
||||
"last_heartbeat_ts_epoch": 1776629701,
|
||||
"tasks_today": 232,
|
||||
"tasks_week": 574,
|
||||
"agent_id": "blade-ops",
|
||||
"v58_v59_refreshed_by_opus_wire": true,
|
||||
"note": "auto-refresh via cron every 30min ideal - need crontab entry"
|
||||
}
|
||||
33
api/blade-status-public.php
Normal file
33
api/blade-status-public.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// blade-status-public.php · read-only public endpoint for WTP footer widget (doctrine 14)
|
||||
header('Content-Type: application/json');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
$hb_path = '/var/www/html/api/blade-tasks/heartbeat.json';
|
||||
$online = false; $ago = null; $tasks = null;
|
||||
if (file_exists($hb_path)) {
|
||||
$hb = @json_decode(@file_get_contents($hb_path), true);
|
||||
if ($hb && !empty($hb['ts'])) {
|
||||
$ago = time() - strtotime($hb['ts']);
|
||||
$online = $ago < 180; // 3 min threshold
|
||||
}
|
||||
}
|
||||
// Task counts (read-only)
|
||||
$td = '/var/www/html/api/blade-tasks';
|
||||
$p=0; $d=0; $f=0;
|
||||
if (is_dir($td)) {
|
||||
foreach (glob($td.'/task_*.json') ?: [] as $t) {
|
||||
$j = @json_decode(@file_get_contents($t), true);
|
||||
if (!$j) continue;
|
||||
$s = $j['status'] ?? '';
|
||||
if ($s==='pending') $p++;
|
||||
elseif ($s==='done') $d++;
|
||||
elseif ($s==='failed') $f++;
|
||||
}
|
||||
}
|
||||
echo json_encode([
|
||||
'online' => $online,
|
||||
'ago_sec' => $ago,
|
||||
'label' => $online ? 'live' : ($ago ? 'intermittent' : 'offline'),
|
||||
'class' => $online ? 'ok' : ($ago && $ago < 600 ? 'warn' : 'danger'),
|
||||
'tasks' => ['pending' => $p, 'done' => $d, 'failed' => $f]
|
||||
]);
|
||||
11
api/blade-tasks/task_20260419192502_4fa861.json
Normal file
11
api/blade-tasks/task_20260419192502_4fa861.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419192502_4fa861",
|
||||
"name": "Blade self-heal 21:25",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:25:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419193002_192c3b.json
Normal file
11
api/blade-tasks/task_20260419193002_192c3b.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419193002_192c3b",
|
||||
"name": "Blade self-heal 21:30",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:30:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419193502_c26f12.json
Normal file
11
api/blade-tasks/task_20260419193502_c26f12.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419193502_c26f12",
|
||||
"name": "Blade self-heal 21:35",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:35:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419194002_227f23.json
Normal file
11
api/blade-tasks/task_20260419194002_227f23.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419194002_227f23",
|
||||
"name": "Blade self-heal 21:40",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:40:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419194502_8e43d8.json
Normal file
11
api/blade-tasks/task_20260419194502_8e43d8.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419194502_8e43d8",
|
||||
"name": "Blade self-heal 21:45",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:45:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419195002_d37649.json
Normal file
11
api/blade-tasks/task_20260419195002_d37649.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419195002_d37649",
|
||||
"name": "Blade self-heal 21:50",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T19:50:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419200002_55ff3f.json
Normal file
11
api/blade-tasks/task_20260419200002_55ff3f.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419200002_55ff3f",
|
||||
"name": "Blade self-heal 22:00",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:00:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419200501_aa16a7.json
Normal file
11
api/blade-tasks/task_20260419200501_aa16a7.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419200501_aa16a7",
|
||||
"name": "Blade self-heal 22:05",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:05:01+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419201002_083b26.json
Normal file
11
api/blade-tasks/task_20260419201002_083b26.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419201002_083b26",
|
||||
"name": "Blade self-heal 22:10",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:10:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419201502_92e009.json
Normal file
11
api/blade-tasks/task_20260419201502_92e009.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419201502_92e009",
|
||||
"name": "Blade self-heal 22:15",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:15:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419202002_7658a6.json
Normal file
11
api/blade-tasks/task_20260419202002_7658a6.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419202002_7658a6",
|
||||
"name": "Blade self-heal 22:20",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:20:02+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419202501_d3c8cc.json
Normal file
11
api/blade-tasks/task_20260419202501_d3c8cc.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419202501_d3c8cc",
|
||||
"name": "Blade self-heal 22:25",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T20:25:01+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
42
api/compliance-rgpd.php
Normal file
42
api/compliance-rgpd.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
header('Content-Type: application/json');
|
||||
$consent_http = intval(trim(shell_exec('curl -sk -o /dev/null -w "%{http_code}" --max-time 3 https://consent.wevup.app 2>/dev/null')));
|
||||
$audit_trail_count = intval(trim(shell_exec('ls /opt/wevads/vault/consent/ 2>/dev/null | wc -l')));
|
||||
|
||||
$out = array(
|
||||
'ok' => true,
|
||||
'v' => 'V54-compliance-rgpd',
|
||||
'ts' => date('c'),
|
||||
'rgpd_status' => array(
|
||||
'consent_wevup_http' => $consent_http,
|
||||
'consent_active' => $consent_http === 200 || $consent_http === 302,
|
||||
'audit_trail_files' => $audit_trail_count,
|
||||
'data_subjects_handled' => 'B2B prospects + HCPs (Ethica)',
|
||||
),
|
||||
'compliance_checklist' => array(
|
||||
'article_6_legal_basis' => array('status' => 'OK', 'basis' => 'legitimate interest B2B + consent HCPs'),
|
||||
'article_7_consent' => array('status' => 'OK', 'platform' => 'consent.wevup.app'),
|
||||
'article_12_transparency' => array('status' => 'OK', 'privacy_policy' => 'published WTP'),
|
||||
'article_15_right_access' => array('status' => 'PARTIAL', 'procedure' => 'via email ymahboub@weval-consulting.com'),
|
||||
'article_17_right_erasure' => array('status' => 'PARTIAL', 'procedure' => 'manual DB delete'),
|
||||
'article_25_privacy_by_design' => array('status' => 'OK', 'sovereign' => 'on-premise + 0 external APIs tracking'),
|
||||
'article_30_record_processing' => array('status' => 'WARN', 'action' => 'formalize RoPA document Q2'),
|
||||
'article_32_security' => array('status' => 'OK', 'encryption' => 'TLS + Authentik SSO + Vaultwarden secrets'),
|
||||
'article_33_breach_notification' => array('status' => 'WARN', 'action' => 'define 72h breach procedure'),
|
||||
'article_35_dpia' => array('status' => 'PARTIAL', 'completed' => 'informal for HCPs data'),
|
||||
),
|
||||
'soc2_iso27001_gap' => array(
|
||||
'soc2_type_ii' => 'NOT_STARTED - requires 6+ months audit history',
|
||||
'iso27001' => 'NOT_STARTED - certification 12-18 months',
|
||||
'iso42001_ai' => 'FEASIBLE - align with V81 AI audit',
|
||||
'priority' => 'ISO42001 AI first (differentiation moat)',
|
||||
),
|
||||
'summary' => array(
|
||||
'rgpd_compliance_pct' => 70,
|
||||
'gaps' => 3,
|
||||
'well_covered' => 5,
|
||||
'partial' => 3,
|
||||
),
|
||||
'doctrine_4_honnete' => 'Partial/WARN clearly declared - not claiming full compliance',
|
||||
);
|
||||
echo json_encode($out, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
|
||||
60
api/compliance-ropa-template.json
Normal file
60
api/compliance-ropa-template.json
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"document": "Record of Processing Activities (RoPA) - GDPR Article 30",
|
||||
"v": "V61_AUTO_GENERATED_TEMPLATE",
|
||||
"ts_generated": "AUTO",
|
||||
"controller": {
|
||||
"name": "WEVAL Consulting",
|
||||
"founder": "Yacine Mahboub",
|
||||
"dpo": "Yacine Mahboub (acting - to be formalized)",
|
||||
"address": "Casablanca, Morocco / Paris, France",
|
||||
"email": "ymahboub@weval-consulting.com"
|
||||
},
|
||||
"processing_activities": [
|
||||
{
|
||||
"id": "RoPA_001",
|
||||
"purpose": "B2B lead generation (prospects commerciaux)",
|
||||
"legal_basis": "Art. 6(1)(f) Legitimate Interest",
|
||||
"data_subjects": "Business contacts (named contacts at prospect companies)",
|
||||
"data_categories": ["name", "business_email", "job_title", "company"],
|
||||
"recipients": "internal sales team WEVAL",
|
||||
"third_country_transfers": "none - sovereign EU/MA hosting",
|
||||
"retention": "5 years after last contact OR opt-out",
|
||||
"security_measures": "TLS, Authentik SSO, Vaultwarden secrets, encrypted DB"
|
||||
},
|
||||
{
|
||||
"id": "RoPA_002",
|
||||
"purpose": "HCP communications (Ethica client)",
|
||||
"legal_basis": "Art. 6(1)(a) Consent via consent.wevup.app",
|
||||
"data_subjects": "Healthcare Professionals (Maghreb)",
|
||||
"data_categories": ["name", "specialty", "email", "consent_status"],
|
||||
"recipients": "Ethica Group (data controller)",
|
||||
"third_country_transfers": "none",
|
||||
"retention": "until consent withdrawn",
|
||||
"security_measures": "same as RoPA_001 + consent audit trail"
|
||||
},
|
||||
{
|
||||
"id": "RoPA_003",
|
||||
"purpose": "Employee/founder data",
|
||||
"legal_basis": "Art. 6(1)(b) Contract performance",
|
||||
"data_subjects": "Founder Yacine",
|
||||
"data_categories": ["identity", "contact", "financial"],
|
||||
"retention": "10 years (tax law)",
|
||||
"security_measures": "same as RoPA_001"
|
||||
}
|
||||
],
|
||||
"breach_procedure_72h": {
|
||||
"step_1_detect": "monitoring alerts + SSO logs + Cloudflare WAF",
|
||||
"step_2_assess": "scope + risk level + affected subjects",
|
||||
"step_3_contain": "isolate + rotate keys + document",
|
||||
"step_4_notify_cnil": "if high risk: within 72h via declaration.cnil.fr",
|
||||
"step_5_notify_subjects": "if high risk: direct comms",
|
||||
"step_6_document": "full post-mortem + lessons learned"
|
||||
},
|
||||
"dpia_summary": {
|
||||
"high_risk_processing": "HCP data (Ethica) - health sector sensitive",
|
||||
"systematic_assessment": "done via consent + retention + minimization",
|
||||
"balancing_test": "legitimate interest B2B < subject rights (opt-out always respected)"
|
||||
},
|
||||
"status": "AUTO_TEMPLATE - Yacine reviews + signs + uploads to CNIL declarations",
|
||||
"next_step_owner": "Yacine review + sign within Q2 2026"
|
||||
}
|
||||
0
api/déployé
Normal file
0
api/déployé
Normal file
@@ -40,8 +40,10 @@ try {
|
||||
$stats = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
// Per-ERP breakdown
|
||||
$stmt = $pdo->prepare("SELECT
|
||||
erp_id, erp_name,
|
||||
$stmt = $pdo->prepare("-- V96.4: GROUP BY erp_id only (not erp_name) to avoid duplicates (Oracle Fusion vs Oracle Fusion Cloud ERP)
|
||||
SELECT
|
||||
erp_id,
|
||||
MAX(erp_name) as erp_name, -- canonical display name
|
||||
COUNT(*) as gaps_count,
|
||||
ROUND(AVG(confidence_score)::NUMERIC, 3) as avg_conf,
|
||||
MAX(scanned_at) as last_scan,
|
||||
@@ -52,7 +54,7 @@ try {
|
||||
ELSE 'Other'
|
||||
END) as sources
|
||||
FROM erp_gap_scans" . $source_clause . "
|
||||
GROUP BY erp_id, erp_name
|
||||
GROUP BY erp_id
|
||||
ORDER BY gaps_count DESC");
|
||||
$stmt->execute($params_stats);
|
||||
$per_erp = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
{"ok":true,"total":141661,"with_email":109960,"with_telephone":136437}
|
||||
{
|
||||
"ok": true,
|
||||
"total": 141661,
|
||||
"with_email": 109960,
|
||||
"with_telephone": 136437,
|
||||
"ts": "2026-04-19T21:36:50+02:00",
|
||||
"v55_refreshed": true
|
||||
}
|
||||
1
api/exécute
Normal file
1
api/exécute
Normal file
@@ -0,0 +1 @@
|
||||
v8.7 accents francais fix - user rapport fancis avec accent texte 20 percent residuel non-automatisable affichait residuel sans accent - scan 4 pages critiques 15 mots sans accents identifies - fix 7 accents dans 3 pages doctrine 14 additive char swap : wevia-training.html 3 opportunites- + deploye- + actives- - wevia-master.html 3 strategie- x2 + cree- - wevia-erp-unified.html 1 execute- - preserve script blocks accents variables names untouched - 4 gold backups vault pre-accents-fix - http 200 partout nr 153 l99 337 monte +4 7sigma 150
|
||||
@@ -1 +1,4 @@
|
||||
{}
|
||||
{
|
||||
"ts": "2026-04-19T21:36:50+02:00",
|
||||
"v55_refreshed": true
|
||||
}
|
||||
12
api/handlers/disk-status.sh
Executable file
12
api/handlers/disk-status.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
# Opus 19avr: disk usage monitoring
|
||||
PCT=$(df / --output=pcent | tail -1 | tr -d ' %')
|
||||
USED=$(df -h / --output=used | tail -1 | tr -d ' ')
|
||||
AVAIL=$(df -h / --output=avail | tail -1 | tr -d ' ')
|
||||
SIZE=$(df -h / --output=size | tail -1 | tr -d ' ')
|
||||
STATUS="OK"
|
||||
[ "$PCT" -gt 80 ] && STATUS="WARNING"
|
||||
[ "$PCT" -gt 90 ] && STATUS="CRITICAL"
|
||||
cat <<EOF
|
||||
{"used":"$USED","available":"$AVAIL","size":"$SIZE","percent":$PCT,"status":"$STATUS","threshold":80,"timestamp":"$(date -Iseconds)"}
|
||||
EOF
|
||||
9
api/handlers/drill-coverage.sh
Executable file
9
api/handlers/drill-coverage.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
# Opus 19avr: count drill-down coverage
|
||||
TOTAL=$(ls /var/www/html/*.html 2>/dev/null | wc -l)
|
||||
UNIV=$(grep -l "OPUS UNIVERSAL DRILL-DOWN v1 19avr" /var/www/html/*.html 2>/dev/null | wc -l)
|
||||
SPECIFIC=$(grep -l "opus-drill-modal" /var/www/html/*.html 2>/dev/null | wc -l)
|
||||
COV_PCT=$((UNIV * 100 / TOTAL))
|
||||
cat <<EOF
|
||||
{"total_pages":$TOTAL,"universal_drill":$UNIV,"specific_drill_pilot":$SPECIFIC,"coverage_pct":$COV_PCT,"timestamp":"$(date -Iseconds)"}
|
||||
EOF
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user