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).