This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-20T23:00:01+02:00",
|
||||
"ts": "2026-04-20T23:30:01+02:00",
|
||||
"disk_pct": 79,
|
||||
"disk_free_gb": 32,
|
||||
"growth_per_day_gb": 1.5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Risk_Escalation",
|
||||
"ts": "2026-04-20T23:15:03+02:00",
|
||||
"ts": "2026-04-20T23:30:04+02:00",
|
||||
"dg_alerts_active": 7,
|
||||
"wevia_life_stats_preview": "{
|
||||
"ok": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-20T23:20:02+02:00",
|
||||
"ts": "2026-04-20T23:30:03+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V54_Risk_Monitor_Live",
|
||||
"ts": "2026-04-20T23:00:02+02:00",
|
||||
"ts": "2026-04-20T23:30:02+02:00",
|
||||
"critical_risks": {
|
||||
"RW01_pipeline_vide": {
|
||||
"pipeline_keur": 0,
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"RW12_burnout": {
|
||||
"agents_cron_active": 15,
|
||||
"load_5min": "3.69",
|
||||
"load_5min": "3.47",
|
||||
"automation_coverage_pct": 70,
|
||||
"residual_risk_pct": 60,
|
||||
"trend": "V52_goldratt_options_active"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"status": "ALIVE",
|
||||
"ts": "2026-04-20T23:15:01.849687",
|
||||
"last_heartbeat": "2026-04-20T23:15:01.849687",
|
||||
"last_heartbeat_ts_epoch": 1776719701,
|
||||
"ts": "2026-04-20T23:30:01.693376",
|
||||
"last_heartbeat": "2026-04-20T23:30:01.693376",
|
||||
"last_heartbeat_ts_epoch": 1776720601,
|
||||
"tasks_today": 232,
|
||||
"tasks_week": 574,
|
||||
"agent_id": "blade-ops",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"agent": "V42_MQL_Scoring_Agent_REAL",
|
||||
"ts": "2026-04-20T21:20:01+00:00",
|
||||
"ts": "2026-04-20T21:30:01+00:00",
|
||||
"status": "DEPLOYED_AUTO",
|
||||
"deployed": true,
|
||||
"algorithm": "weighted_behavioral_signals",
|
||||
|
||||
14
api/playwright-wtp-dev/results-wait.json
Normal file
14
api/playwright-wtp-dev/results-wait.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"tests": [
|
||||
{
|
||||
"test": "tree_loaded",
|
||||
"status": "FAIL",
|
||||
"modules": 0
|
||||
}
|
||||
],
|
||||
"summary": {
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"total": 1
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"timestamp": "2026-04-20T23:00:04",
|
||||
"timestamp": "2026-04-20T23:30:03",
|
||||
"features": {
|
||||
"total": 36,
|
||||
"pass": 35
|
||||
@@ -13,7 +13,7 @@
|
||||
"score": 97.2,
|
||||
"log": [
|
||||
"=== UX AGENT v1.0 ===",
|
||||
"Time: 2026-04-20 23:00:01",
|
||||
"Time: 2026-04-20 23:30:01",
|
||||
" core: 4/4",
|
||||
" layout: 3/4",
|
||||
" interaction: 6/6",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-20T21:29:34+00:00",
|
||||
"ts": "2026-04-20T21:33:06+00:00",
|
||||
"summary": {
|
||||
"total_categories": 7,
|
||||
"total_kpis": 56,
|
||||
|
||||
@@ -99,50 +99,63 @@ if (isset($_mam) && $_mam) {
|
||||
}
|
||||
// === V103-NATURAL-MULTI-AGENT-ROUTER END ===
|
||||
|
||||
// === OPUS5-STUB-DISPATCHER-v1 (17avr) ===
|
||||
// === OPUS5-STUB-DISPATCHER-v2 (20avr) greedy-fixed by Opus ===
|
||||
// Route messages to opus4-wired stubs BEFORE fast-path/dynamic-resolver capture.
|
||||
// This unlocks WEVIA autonomy: user types a stub trigger, the cmd executes immediately.
|
||||
// v2 FIX: pre-score by trigger length DESC so longest/most-specific trigger wins.
|
||||
// Doctrine #6 strike-rule: root cause was greedy first-match without specificity scoring.
|
||||
if (isset($_mam) && $_mam) {
|
||||
$__sd_msg = mb_strtolower(trim($_mam));
|
||||
$__sd_stubs = @glob('/var/www/html/api/wired-pending/intent-opus4-*.php') ?: [];
|
||||
$__sd_scored = [];
|
||||
foreach ($__sd_stubs as $__sd_s) {
|
||||
ob_start(); $__sd_info = @include $__sd_s; @ob_end_clean();
|
||||
if (!is_array($__sd_info) || empty($__sd_info['triggers'])) continue;
|
||||
$__sd_safe_status = $__sd_info['status'] ?? '';
|
||||
if (!in_array($__sd_safe_status, ['EXECUTED', 'PENDING_APPROVAL'])) continue;
|
||||
$__sd_best_len = 0; $__sd_best_trg = null;
|
||||
foreach ($__sd_info['triggers'] as $__sd_trg) {
|
||||
$__sd_trg = trim($__sd_trg);
|
||||
$__sd_trg = trim((string)$__sd_trg);
|
||||
if ($__sd_trg === '') continue;
|
||||
$__sd_trg_lc = mb_strtolower($__sd_trg);
|
||||
// ROOT-CAUSE-FIX 19avr v96: word boundary for short triggers (doctrine #13)
|
||||
if (mb_strlen($__sd_trg_lc) <= 4) {
|
||||
$__sd_match = (bool) preg_match('/\b' . preg_quote($__sd_trg_lc, '/') . '\b/ui', $__sd_msg);
|
||||
$__sd_match = (bool) preg_match('/\\b' . preg_quote($__sd_trg_lc, '/') . '\\b/ui', $__sd_msg);
|
||||
} else {
|
||||
$__sd_match = (stripos($__sd_msg, $__sd_trg_lc) !== false);
|
||||
}
|
||||
if ($__sd_match) {
|
||||
$__sd_cmd = $__sd_info['cmd'] ?? '';
|
||||
$__sd_safe = false;
|
||||
foreach (['/var/www/html/', 'echo ', 'curl ', 'php8.4 ', 'grep ', 'psql ', 'cat /var/log/'] as $__sd_p) {
|
||||
if (stripos($__sd_cmd, $__sd_p) === 0 || stripos($__sd_cmd, " $__sd_p") !== false) { $__sd_safe = true; break; }
|
||||
}
|
||||
if (!$__sd_safe) continue;
|
||||
$__sd_out = @shell_exec('timeout 15 ' . $__sd_cmd . ' 2>&1');
|
||||
// ROOT-CAUSE-FIX-19avr: skip if output empty (doctrine #13, let cascade handle)
|
||||
if (trim((string)$__sd_out) === '') continue;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'response' => "Intent '{$__sd_info['name']}' executed (trigger: $__sd_trg)\n" . trim((string)$__sd_out),
|
||||
'executed' => true,
|
||||
'provider' => 'opus5-stub-dispatcher',
|
||||
'intent' => $__sd_info['name'],
|
||||
'trigger_matched' => $__sd_trg,
|
||||
'output' => trim((string)$__sd_out)
|
||||
]);
|
||||
@file_put_contents('/tmp/opus5-dispatcher.log', date('c') . " MATCH intent={$__sd_info['name']} trg=$__sd_trg\n", FILE_APPEND);
|
||||
exit;
|
||||
if ($__sd_match && mb_strlen($__sd_trg_lc) > $__sd_best_len) {
|
||||
$__sd_best_len = mb_strlen($__sd_trg_lc);
|
||||
$__sd_best_trg = $__sd_trg;
|
||||
}
|
||||
}
|
||||
if ($__sd_best_trg !== null) {
|
||||
$__sd_scored[] = ['stub'=>$__sd_s, 'info'=>$__sd_info, 'len'=>$__sd_best_len, 'trg'=>$__sd_best_trg];
|
||||
}
|
||||
}
|
||||
// Sort DESC by trigger length - most specific wins
|
||||
usort($__sd_scored, function($a, $b) { return $b['len'] - $a['len']; });
|
||||
foreach ($__sd_scored as $__sd_w) {
|
||||
$__sd_info = $__sd_w['info'];
|
||||
$__sd_trg = $__sd_w['trg'];
|
||||
$__sd_cmd = $__sd_info['cmd'] ?? '';
|
||||
$__sd_safe = false;
|
||||
foreach (['/var/www/html/', 'echo ', 'curl ', 'php8.4 ', 'grep ', 'psql ', 'cat /var/log/'] as $__sd_p) {
|
||||
if (stripos($__sd_cmd, $__sd_p) === 0 || stripos($__sd_cmd, " $__sd_p") !== false) { $__sd_safe = true; break; }
|
||||
}
|
||||
if (!$__sd_safe) continue;
|
||||
$__sd_out = @shell_exec('timeout 15 ' . $__sd_cmd . ' 2>&1');
|
||||
if (trim((string)$__sd_out) === '') continue;
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'response' => "Intent '{$__sd_info['name']}' executed (trigger: $__sd_trg)\n" . trim((string)$__sd_out),
|
||||
'executed' => true,
|
||||
'provider' => 'opus5-stub-dispatcher-v2',
|
||||
'intent' => $__sd_info['name'],
|
||||
'trigger_matched' => $__sd_trg,
|
||||
'trigger_score_len' => $__sd_w['len'],
|
||||
'output' => trim((string)$__sd_out)
|
||||
]);
|
||||
@file_put_contents('/tmp/opus5-dispatcher.log', date('c') . " v2_MATCH intent={$__sd_info['name']} trg=$__sd_trg len={$__sd_w['len']}\n", FILE_APPEND);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// === OPUS5-STUB-DISPATCHER-v1 END ===
|
||||
|
||||
Reference in New Issue
Block a user