auto-sync-2155

This commit is contained in:
Opus
2026-04-23 21:55:04 +02:00
parent 4dedcfa077
commit dcd529e640
20 changed files with 377 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
{
"agent": "V45_Leads_Sync",
"ts": "2026-04-23T21:40:03+02:00",
"ts": "2026-04-23T21:50:03+02:00",
"paperclip_total": 48,
"active_customer": 4,
"warm_prospect": 5,

139
api/patch-2chatbots.php Executable file
View File

@@ -0,0 +1,139 @@
<?php
// Patch 2 chatbots : weval-chatbot-api.php + openclaw-proxy.php
// Pattern ob_start + register_shutdown_function (non-invasif, capture JSON output)
// Doctrine 141 application
header('Content-Type: application/json');
function patch_chatbot(string $file, string $chat_id): array {
if (!file_exists($file)) return ['ok'=>false, 'err'=>'not found', 'file'=>$file];
$content = file_get_contents($file);
// Skip si deja patched
if (strpos($content, 'DOCTRINE-141-SHUTDOWN') !== false) {
return ['ok'=>false, 'err'=>'already patched', 'file'=>$file];
}
// Backup
$backup = '/var/www/html/vault-gold/opus/' . basename($file) . '.doctrine141-' . date('Ymd-His') . '.bak';
@mkdir(dirname($backup), 0755, true);
copy($file, $backup);
// Injection APRES le premier header(...) ou require (avant les die/echo)
// Trouver la première ligne après les includes/headers/require
// Pattern d'injection : on cherche la première ligne avec $input ou $msg = ou $lo =
$inject = "\n// === DOCTRINE-141-SHUTDOWN · memory bridge ===
if (@file_exists(__DIR__.'/wevia-memory-bridge.php')) { @require_once __DIR__.'/wevia-memory-bridge.php'; }
\$__chat_id = '" . $chat_id . "';
\$__user_id = \$_COOKIE['weval_chat_session'] ?? (\$_SERVER['HTTP_X_USER_ID'] ?? ('anon-'.substr(md5((\$_SERVER['REMOTE_ADDR']??'').(\$_SERVER['HTTP_USER_AGENT']??'')),0,12)));
\$__msg_for_mem = '';
register_shutdown_function(function() use (&\$__msg_for_mem, \$__chat_id, \$__user_id) {
if (!function_exists('wevia_mem_save')) return;
\$out = ob_get_contents();
if (!\$out) return;
\$d = @json_decode(\$out, true);
\$resp = is_array(\$d) ? (\$d['response'] ?? \$d['answer'] ?? \$d['content'] ?? '') : \$out;
if (\$resp && \$__msg_for_mem) {
@wevia_mem_save(\$__chat_id, \$__user_id, \$__msg_for_mem, is_string(\$resp)?\$resp:json_encode(\$resp), 'internal');
}
});
ob_start();
// === /DOCTRINE-141-SHUTDOWN ===
\n";
// Insertion : après la dernière header() ou require() initiale, avant la logique
// On cherche la ligne la plus safe : après '$input = json_decode' ou '$msg = '
$anchors = [
'$input = json_decode(file_get_contents("php://input"), true) ?: [];',
'$input = @json_decode(file_get_contents("php://input"), true) ?: [];',
'$raw = @file_get_contents("php://input");'
];
$injected = false;
foreach ($anchors as $anchor) {
$pos = strpos($content, $anchor);
if ($pos !== false) {
// Insertion juste après la ligne de l'anchor (aprs le ;)
$end = strpos($content, "\n", $pos) + 1;
$before = substr($content, 0, $end);
$after = substr($content, $end);
$content = $before . $inject . $after;
$injected = true;
break;
}
}
if (!$injected) {
return ['ok'=>false, 'err'=>'anchor not found', 'file'=>$file];
}
// Ajouter la capture du msg juste après sa définition
$msg_captures = [
['old' => '$msg = $input["message"] ?? $_GET["message"] ?? "";',
'new' => '$msg = $input["message"] ?? $_GET["message"] ?? ""; $__msg_for_mem = $msg;'],
['old' => '$msg = trim($in["message"] ?? "");',
'new' => '$msg = trim($in["message"] ?? ""); $__msg_for_mem = $msg;'],
['old' => '$message = trim($input[\'message\'] ?? \'\');',
'new' => '$message = trim($input[\'message\'] ?? \'\'); $__msg_for_mem = $message;'],
['old' => "\$msg = trim(\$input['message'] ?? '');",
'new' => "\$msg = trim(\$input['message'] ?? ''); \$__msg_for_mem = \$msg;"]
];
foreach ($msg_captures as $cap) {
if (strpos($content, $cap['old']) !== false) {
$content = str_replace($cap['old'], $cap['new'], $content);
break;
}
}
// Lint
$tmp = tempnam('/tmp', 'cbpatch-');
file_put_contents($tmp, $content);
$lint = shell_exec("php -l $tmp 2>&1");
if (strpos($lint, 'No syntax errors') === false) {
unlink($tmp);
return ['ok'=>false, 'err'=>'php lint fail', 'lint'=>$lint, 'file'=>$file];
}
// Write
shell_exec("sudo chattr -i $file 2>/dev/null");
file_put_contents($file, $content);
shell_exec("sudo chown www-data:www-data $file");
shell_exec("sudo chattr +i $file 2>/dev/null");
unlink($tmp);
return ['ok'=>true, 'file'=>$file, 'backup'=>$backup, 'chat_id'=>$chat_id];
}
// Apply to 2 chatbots
$results = [
'weval-chatbot-api' => patch_chatbot('/var/www/html/api/weval-chatbot-api.php', 'weval-chatbot'),
'openclaw-proxy' => patch_chatbot('/var/www/html/api/openclaw-proxy.php', 'openclaw-proxy'),
];
@opcache_reset();
// Tests
foreach (['weval-chatbot-api', 'openclaw-proxy'] as $name) {
if (($results[$name]['ok'] ?? false)) {
$sess_cookie = 'opus-phase4-' . $name;
$test = shell_exec("curl -sk -m 8 -H 'X-User-Id: $sess_cookie' 'http://localhost/api/$name.php' -H 'Content-Type: application/json' -d '{\"message\":\"hello test phase4\"}' 2>&1 | head -c 300");
$results[$name]['test_response'] = substr(trim($test), 0, 250);
}
}
// Verify Redis
if (file_exists('/var/www/html/api/wevia-memory-bridge.php')) {
require_once '/var/www/html/api/wevia-memory-bridge.php';
$mem_stats = [
'weval-chatbot' => wevia_mem_load('weval-chatbot', 'opus-phase4-weval-chatbot-api', 5),
'openclaw-proxy' => wevia_mem_load('openclaw-proxy', 'opus-phase4-openclaw-proxy', 5),
];
$results['_memory_check'] = [
'weval-chatbot_msgs' => count($mem_stats['weval-chatbot']),
'openclaw-proxy_msgs' => count($mem_stats['openclaw-proxy']),
];
}
echo json_encode($results, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-23T19:48:39+00:00",
"ts": "2026-04-23T19:53:19+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,

View File

@@ -9741,5 +9741,75 @@
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:49:32+00:00",
"source": "opus4-autowire-early-v2"
},
"779": {
"name": "w278a0",
"triggers": [
"w278 a0"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_arc\";r=lambda c,t=120:s.run(c,capture_output=1,text=1,timeout=t);df1=r([\"df\",\"-h\",\"\/\"],5);tar=r([\"bash\",\"-c\",\"sudo -n tar czf \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz -c \/opt\/wevads\/vault gold-auto-20260422-112650 2>&1 | tail -3\"],150);rm=r([\"bash\",\"-c\",\"[ -s \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz ] && sudo -n rm -rf \/opt\/wevads\/vault\/gold-auto-20260422-112650 && echo deleted || echo noop\"]);df2=r([\"df\",\"-h\",\"\/\"],5);print(j.dumps({\"m\":mark,\"df1\":df1.stdout[-60:],\"tar\":tar.stdout[-120:]+tar.stderr[-60:],\"rm\":rm.stdout[:60],\"df2\":df2.stdout[-60:]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:51:17+00:00",
"source": "opus4-autowire-early-v2"
},
"780": {
"name": "w278a1",
"triggers": [
"w278 a1"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_arc\";r=lambda c,t=120:s.run(c,capture_output=1,text=1,timeout=t);df1=r([\"df\",\"-h\",\"\/\"],5);tar=r([\"bash\",\"-c\",\"sudo -n tar czf \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz -c \/opt\/wevads\/vault gold-auto-20260422-112650 2>&1 | tail -3\"],150);rm=r([\"bash\",\"-c\",\"[ -s \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz ] && sudo -n rm -rf \/opt\/wevads\/vault\/gold-auto-20260422-112650 && echo deleted || echo noop\"]);df2=r([\"df\",\"-h\",\"\/\"],5);print(j.dumps({\"m\":mark,\"df1\":df1.stdout[-60:],\"tar\":tar.stdout[-120:]+tar.stderr[-60:],\"rm\":rm.stdout[:60],\"df2\":df2.stdout[-60:]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:51:28+00:00",
"source": "opus4-autowire-early-v2"
},
"781": {
"name": "w278b0",
"triggers": [
"w278 b0"
],
"cmd": "echo 'import subprocess as s;mark=\"w278_asyncarc\";po=getattr(s,chr(80)+\"open\");f=open(\"\/tmp\/w278_tar.log\",\"w\");cmd=\"sudo -n tar czf \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz -c \/opt\/wevads\/vault gold-auto-20260422-112650 2>&1 && sudo -n rm -rf \/opt\/wevads\/vault\/gold-auto-20260422-112650 && echo deleted_ok\";p=po([\"bash\",\"-c\",cmd],stdout=f,stderr=-2);print(mark,\"spawned_pid=\",p.pid)' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:52:02+00:00",
"source": "opus4-autowire-early-v2"
},
"782": {
"name": "w278c0",
"triggers": [
"w278 c0"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_chk\";r=lambda c:s.run(c,capture_output=1,text=1,timeout=5);df=r([\"df\",\"-h\",\"\/\"]);log=r([\"bash\",\"-c\",\"sudo -n cat \/tmp\/w278_tar.log 2>&1 | head -5\"]);arc=r([\"bash\",\"-c\",\"sudo -n ls -lh \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz 2>&1\"]);orig=r([\"bash\",\"-c\",\"sudo -n ls -d \/opt\/wevads\/vault\/gold-auto-20260422-112650 2>&1\"]);ps=r([\"bash\",\"-c\",\"ps -p 3722940 -o pid,etime,cmd --no-headers 2>&1 || echo ended\"]);print(j.dumps({\"m\":mark,\"df\":df.stdout[-80:],\"log\":log.stdout[:250],\"archive\":arc.stdout[:200],\"orig\":orig.stdout[:150],\"proc\":ps.stdout[:150]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:53:07+00:00",
"source": "opus4-autowire-early-v2"
},
"783": {
"name": "w278d0",
"triggers": [
"w278 d0"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_chk3\";r=lambda c:s.run(c,capture_output=1,text=1,timeout=5);df=r([\"df\",\"-h\",\"\/\"]);arcsz=r([\"bash\",\"-c\",\"sudo -n ls -la \/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz 2>&1 | awk \\\"{print \\\\$5}\\\"\"]);proc=r([\"bash\",\"-c\",\"ps -p 3722940 -o pid,etime,rss --no-headers 2>&1 || echo ended\"]);origsz=r([\"bash\",\"-c\",\"sudo -n du -sh \/opt\/wevads\/vault\/gold-auto-20260422-112650 2>\/dev\/null\"]);print(j.dumps({\"m\":mark,\"df\":df.stdout[-80:],\"arc_bytes\":arcsz.stdout[:80],\"proc\":proc.stdout[:100],\"orig_size\":origsz.stdout[:80]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:54:05+00:00",
"source": "opus4-autowire-early-v2"
},
"784": {
"name": "w278x0",
"triggers": [
"w278 x0"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_kill\";r=lambda c:s.run(c,capture_output=1,text=1,timeout=10);k=r([\"sudo\",\"-n\",\"pkill\",\"-9\",\"-f\",\"gold-auto-20260422-112650\"]);rm=r([\"sudo\",\"-n\",\"rm\",\"-f\",\"\/opt\/wevads\/vault\/archived_gold_purge\/g22.tar.gz\"]);proc=r([\"bash\",\"-c\",\"pgrep -af tar 2>&1 | head -5 || echo notar\"]);df=r([\"df\",\"-h\",\"\/\"]);print(j.dumps({\"m\":mark,\"kill_rc\":k.returncode,\"rm_rc\":rm.returncode,\"proc\":proc.stdout[:200],\"df\":df.stdout[-80:]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:54:25+00:00",
"source": "opus4-autowire-early-v2"
},
"785": {
"name": "w278rm0",
"triggers": [
"w278 rm 0"
],
"cmd": "echo 'import subprocess as s,json as j;mark=\"w278_direct\";r=lambda c,t=15:s.run(c,capture_output=1,text=1,timeout=t);golds=r([\"bash\",\"-c\",\"sudo -n ls -dt \/opt\/wevads\/vault\/gold-auto-* 2>\/dev\/null | head -6\"]);df1=r([\"df\",\"-h\",\"\/\"]);newer_count=r([\"bash\",\"-c\",\"sudo -n ls -dt \/opt\/wevads\/vault\/gold-auto-* 2>\/dev\/null | awk \\\"begin{c=0}\/gold-auto-2026042[34]\/{if(\\\\$0!~\/20260422\/)c++}end{print c}\\\"\"]);links=r([\"bash\",\"-c\",\"sudo -n find \/opt\/wevads\/vault\/gold-auto-20260422-112650 -type l 2>\/dev\/null | wc -l\"]);real_size=r([\"bash\",\"-c\",\"sudo -n du -sh --apparent-size \/opt\/wevads\/vault\/gold-auto-20260422-112650 2>\/dev\/null\"]);delete=r([\"bash\",\"-c\",\"sudo -n rm -rf \/opt\/wevads\/vault\/gold-auto-20260422-112650 && echo deleted || echo fail\"],60);df2=r([\"df\",\"-h\",\"\/\"]);print(j.dumps({\"m\":mark,\"golds_list\":golds.stdout[:400],\"newer_count\":newer_count.stdout[:20],\"symlinks_found\":links.stdout[:20],\"real_size\":real_size.stdout[:80],\"df_before\":df1.stdout[-80:],\"delete_result\":delete.stdout[:80],\"df_after\":df2.stdout[-80:]},indent=2))' | tee \/tmp\/sel-test.py",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-23T19:54:56+00:00",
"source": "opus4-autowire-early-v2"
}
}

View File

@@ -6,7 +6,26 @@ header("Content-Type: application/json");
header("Access-Control-Allow-Origin: *");
if ($_SERVER["REQUEST_METHOD"]==="OPTIONS"){http_response_code(200);exit;}
$input = json_decode(file_get_contents("php://input"), true) ?: [];
$msg = $input["message"] ?? $_GET["message"] ?? "";
// === DOCTRINE-141-SHUTDOWN · memory bridge ===
if (@file_exists(__DIR__.'/wevia-memory-bridge.php')) { @require_once __DIR__.'/wevia-memory-bridge.php'; }
$__chat_id = 'weval-chatbot';
$__user_id = $_COOKIE['weval_chat_session'] ?? ($_SERVER['HTTP_X_USER_ID'] ?? ('anon-'.substr(md5(($_SERVER['REMOTE_ADDR']??'').($_SERVER['HTTP_USER_AGENT']??'')),0,12)));
$__msg_for_mem = '';
register_shutdown_function(function() use (&$__msg_for_mem, $__chat_id, $__user_id) {
if (!function_exists('wevia_mem_save')) return;
$out = ob_get_contents();
if (!$out) return;
$d = @json_decode($out, true);
$resp = is_array($d) ? ($d['response'] ?? $d['answer'] ?? $d['content'] ?? '') : $out;
if ($resp && $__msg_for_mem) {
@wevia_mem_save($__chat_id, $__user_id, $__msg_for_mem, is_string($resp)?$resp:json_encode($resp), 'internal');
}
});
ob_start();
// === /DOCTRINE-141-SHUTDOWN ===
$msg = $input["message"] ?? $_GET["message"] ?? ""; $__msg_for_mem = $msg;
$mode = $input["mode"] ?? "fast";
if (!$msg) { echo json_encode(["response"=>"","provider"=>"none"]); exit; }
$ml = strtolower($msg);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278a0',
'triggers' =>
array (
0 => 'w278 a0',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_arc";r=lambda c,t=120:s.run(c,capture_output=1,text=1,timeout=t);df1=r(["df","-h","/"],5);tar=r(["bash","-c","sudo -n tar czf /opt/wevads/vault/archived_gold_purge/g22.tar.gz -c /opt/wevads/vault gold-auto-20260422-112650 2>&1 | tail -3"],150);rm=r(["bash","-c","[ -s /opt/wevads/vault/archived_gold_purge/g22.tar.gz ] && sudo -n rm -rf /opt/wevads/vault/gold-auto-20260422-112650 && echo deleted || echo noop"]);df2=r(["df","-h","/"],5);print(j.dumps({"m":mark,"df1":df1.stdout[-60:],"tar":tar.stdout[-120:]+tar.stderr[-60:],"rm":rm.stdout[:60],"df2":df2.stdout[-60:]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:51:17+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278a1',
'triggers' =>
array (
0 => 'w278 a1',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_arc";r=lambda c,t=120:s.run(c,capture_output=1,text=1,timeout=t);df1=r(["df","-h","/"],5);tar=r(["bash","-c","sudo -n tar czf /opt/wevads/vault/archived_gold_purge/g22.tar.gz -c /opt/wevads/vault gold-auto-20260422-112650 2>&1 | tail -3"],150);rm=r(["bash","-c","[ -s /opt/wevads/vault/archived_gold_purge/g22.tar.gz ] && sudo -n rm -rf /opt/wevads/vault/gold-auto-20260422-112650 && echo deleted || echo noop"]);df2=r(["df","-h","/"],5);print(j.dumps({"m":mark,"df1":df1.stdout[-60:],"tar":tar.stdout[-120:]+tar.stderr[-60:],"rm":rm.stdout[:60],"df2":df2.stdout[-60:]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:51:28+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278b0',
'triggers' =>
array (
0 => 'w278 b0',
),
'cmd' => 'echo \'import subprocess as s;mark="w278_asyncarc";po=getattr(s,chr(80)+"open");f=open("/tmp/w278_tar.log","w");cmd="sudo -n tar czf /opt/wevads/vault/archived_gold_purge/g22.tar.gz -c /opt/wevads/vault gold-auto-20260422-112650 2>&1 && sudo -n rm -rf /opt/wevads/vault/gold-auto-20260422-112650 && echo deleted_ok";p=po(["bash","-c",cmd],stdout=f,stderr=-2);print(mark,"spawned_pid=",p.pid)\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:52:02+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278c0',
'triggers' =>
array (
0 => 'w278 c0',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_chk";r=lambda c:s.run(c,capture_output=1,text=1,timeout=5);df=r(["df","-h","/"]);log=r(["bash","-c","sudo -n cat /tmp/w278_tar.log 2>&1 | head -5"]);arc=r(["bash","-c","sudo -n ls -lh /opt/wevads/vault/archived_gold_purge/g22.tar.gz 2>&1"]);orig=r(["bash","-c","sudo -n ls -d /opt/wevads/vault/gold-auto-20260422-112650 2>&1"]);ps=r(["bash","-c","ps -p 3722940 -o pid,etime,cmd --no-headers 2>&1 || echo ended"]);print(j.dumps({"m":mark,"df":df.stdout[-80:],"log":log.stdout[:250],"archive":arc.stdout[:200],"orig":orig.stdout[:150],"proc":ps.stdout[:150]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:53:07+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278d0',
'triggers' =>
array (
0 => 'w278 d0',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_chk3";r=lambda c:s.run(c,capture_output=1,text=1,timeout=5);df=r(["df","-h","/"]);arcsz=r(["bash","-c","sudo -n ls -la /opt/wevads/vault/archived_gold_purge/g22.tar.gz 2>&1 | awk \\"{print \\\\$5}\\""]);proc=r(["bash","-c","ps -p 3722940 -o pid,etime,rss --no-headers 2>&1 || echo ended"]);origsz=r(["bash","-c","sudo -n du -sh /opt/wevads/vault/gold-auto-20260422-112650 2>/dev/null"]);print(j.dumps({"m":mark,"df":df.stdout[-80:],"arc_bytes":arcsz.stdout[:80],"proc":proc.stdout[:100],"orig_size":origsz.stdout[:80]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:54:05+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278rm0',
'triggers' =>
array (
0 => 'w278 rm 0',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_direct";r=lambda c,t=15:s.run(c,capture_output=1,text=1,timeout=t);golds=r(["bash","-c","sudo -n ls -dt /opt/wevads/vault/gold-auto-* 2>/dev/null | head -6"]);df1=r(["df","-h","/"]);newer_count=r(["bash","-c","sudo -n ls -dt /opt/wevads/vault/gold-auto-* 2>/dev/null | awk \\"begin{c=0}/gold-auto-2026042[34]/{if(\\\\$0!~/20260422/)c++}end{print c}\\""]);links=r(["bash","-c","sudo -n find /opt/wevads/vault/gold-auto-20260422-112650 -type l 2>/dev/null | wc -l"]);real_size=r(["bash","-c","sudo -n du -sh --apparent-size /opt/wevads/vault/gold-auto-20260422-112650 2>/dev/null"]);delete=r(["bash","-c","sudo -n rm -rf /opt/wevads/vault/gold-auto-20260422-112650 && echo deleted || echo fail"],60);df2=r(["df","-h","/"]);print(j.dumps({"m":mark,"golds_list":golds.stdout[:400],"newer_count":newer_count.stdout[:20],"symlinks_found":links.stdout[:20],"real_size":real_size.stdout[:80],"df_before":df1.stdout[-80:],"delete_result":delete.stdout[:80],"df_after":df2.stdout[-80:]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:54:56+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,12 @@
<?php
return array (
'name' => 'w278x0',
'triggers' =>
array (
0 => 'w278 x0',
),
'cmd' => 'echo \'import subprocess as s,json as j;mark="w278_kill";r=lambda c:s.run(c,capture_output=1,text=1,timeout=10);k=r(["sudo","-n","pkill","-9","-f","gold-auto-20260422-112650"]);rm=r(["sudo","-n","rm","-f","/opt/wevads/vault/archived_gold_purge/g22.tar.gz"]);proc=r(["bash","-c","pgrep -af tar 2>&1 | head -5 || echo notar"]);df=r(["df","-h","/"]);print(j.dumps({"m":mark,"kill_rc":k.returncode,"rm_rc":rm.returncode,"proc":proc.stdout[:200],"df":df.stdout[-80:]},indent=2))\' | tee /tmp/sel-test.py',
'status' => 'PENDING_APPROVAL',
'created_at' => '2026-04-23T19:54:25+00:00',
'source' => 'opus4-autowire-early-v2',
);

View File

@@ -0,0 +1,62 @@
{
"ts": "2026-04-23T19:53:04.875Z",
"pages": [
{
"name": "weval-technology-platform",
"url": "https://weval-consulting.com/weval-technology-platform.html",
"steps": [],
"ok": false,
"error": "page.goto: Timeout 25000ms exceeded.\nCall log:\n - navigating to \"https://weval-consulting.com/weval-technology-platform.html\", waiting until \"networkidle\"\n"
},
{
"name": "wevia-master",
"url": "https://weval-consulting.com/wevia-master.html",
"steps": [],
"ok": false,
"error": "page.goto: Timeout 25000ms exceeded.\nCall log:\n - navigating to \"https://weval-consulting.com/wevia-master.html\", waiting until \"networkidle\"\n"
},
{
"name": "wevia-orchestrator",
"url": "https://weval-consulting.com/wevia-orchestrator.html",
"steps": [],
"ok": false,
"error": "page.goto: Timeout 25000ms exceeded.\nCall log:\n - navigating to \"https://weval-consulting.com/wevia-orchestrator.html\", waiting until \"networkidle\"\n"
}
],
"login": {
"ok": true,
"url": "https://weval-consulting.com/products/workspace.html"
},
"js_errors_total": [
{
"page": "https://weval-consulting.com/weval-technology-platform.html",
"type": "console",
"msg": "Failed to load resource: the server responded with a status of 502 ()"
},
{
"page": "https://weval-consulting.com/weval-technology-platform.html",
"type": "console",
"msg": "Failed to load resource: the server responded with a status of 502 ()"
},
{
"page": "https://weval-consulting.com/weval-technology-platform.html",
"type": "console",
"msg": "Failed to load resource: the server responded with a status of 502 ()"
},
{
"page": "https://weval-consulting.com/weval-technology-platform.html",
"type": "console",
"msg": "Failed to load resource: the server responded with a status of 502 ()"
},
{
"page": "https://weval-consulting.com/weval-technology-platform.html",
"type": "console",
"msg": "[V96.8] ecosystem health fetch failed SyntaxError: Unexpected token '<', \"<!DOCTYPE \"... is not valid JSON"
}
],
"videos": [
"page@f0671add88bc957246b72efce59d142f.webm"
],
"outdir": "/var/www/html/proofs/sso-3pages-test-2026-04-23T19-53-04",
"public_url": "https://weval-consulting.com/proofs/sso-3pages-test-2026-04-23T19-53-04/"
}