From 85d190e98c42ea7c6ede767dddfc87823e859985 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 22 Jul 2026 09:41:14 +0200 Subject: [PATCH] fix(diagnostic): Abbrechen macht echten Cancel statt totem doctor --fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der cancel_request-Handler rief openclaw doctor --fix auf dem Container aria-core auf, den es im aktuellen Stack nicht mehr gibt → der laufende claude-Subprozess wurde nie gekillt, ARIA lief weiter. Jetzt sendet er RVS cancel_request{hard:true} → Bridge → Proxy /cancel-all killt den Run. Co-Authored-By: Claude Opus 4.8 --- diagnostic/server.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/diagnostic/server.js b/diagnostic/server.js index 92b0d9f..51cd314 100644 --- a/diagnostic/server.js +++ b/diagnostic/server.js @@ -2499,14 +2499,18 @@ wss.on("connection", (ws) => { }); log("info", "server", `Datei gesendet: ${msg.name} (${msg.type})`); } else if (msg.action === "cancel_request") { - // Laufende Anfrage abbrechen — doctor --fix beendet stuck runs - log("warn", "server", "Anfrage abgebrochen — fuehre doctor --fix aus"); + // Laufende Anfrage abbrechen — ECHTER Cancel: RVS cancel_request (hard) + // an die Bridge, die den Proxy-/cancel-all Side-Channel anruft und den + // laufenden claude-Subprozess killt. Das alte `openclaw doctor --fix` + // zielte auf den Container aria-core, den es nicht mehr gibt — es + // beendete den Run nie (ARIA lief munter weiter). + log("warn", "server", "Anfrage abgebrochen — cancel_request (hard) an Bridge/Proxy"); pendingMessageTime = 0; watchdogWarned = false; watchdogFixAttempted = false; if (traceActive) traceEnd(false, "Vom Benutzer abgebrochen"); broadcast({ type: "agent_activity", activity: "idle" }); - dockerExec("aria-core", "openclaw doctor --fix 2>/dev/null || true").catch(() => {}); + sendToRVS_raw({ type: "cancel_request", payload: { hard: true, source: "diagnostic-cancel" }, timestamp: Date.now() }); } else if (msg.action === "aria_panic_stop") { // NOT-AUS aus ARIA-Live-View: lokales /api/cancel UND Hard-Kill via // Bridge (die wiederum den Proxy-Side-Channel /cancel-all anruft).