Werte werden in /shared/config/runtime.json persistiert und
- ueberschreiben die ENV-Variablen aus aria.env. Bridge liest
- sie beim naechsten Start — nach Aenderung Bridge-Container neu starten
- (Diagnostic-Container bleibt auf ENV).
+ ueberschreiben die ENV-Variablen aus der .env. Bridge und Brain
+ lesen sie beim Start — nach Aenderung den jeweiligen Container neu starten
+ (Reparatur-Section oben).
@@ -696,7 +696,11 @@
-
+
+
+
+ Konversation zurücksetzen: leert ARIAs Rolling-Window (Brain "vergisst" die letzten Turns)
+ UND die Chat-Anzeige hier (chat_backup.jsonl). Destillierte Facts + restliche Memories bleiben.
@@ -993,7 +997,16 @@
ws.onopen = () => {
addLog('info', 'browser', 'Verbunden mit Diagnostic Server');
send({ action: 'load_chat_history' });
+ // Brain-Card initial laden (sonst zeigt sie "Lade...")
+ try { loadBrainStatus(); } catch {}
};
+
+ // Brain-Status periodisch refreshen damit die Card live bleibt
+ if (!window.__brainStatusInterval) {
+ window.__brainStatusInterval = setInterval(() => {
+ try { loadBrainStatus(); } catch {}
+ }, 15000);
+ }
ws.onclose = () => {
addLog('warn', 'browser', 'Verbindung zum Diagnostic Server verloren — Reconnect in 2s');
setTimeout(connectWS, 2000);
@@ -1471,15 +1484,8 @@
}
function updateState(state) {
- // Brain-Status (loest die alte gw-* Gateway-Card ab — wenn loadBrainStatus
- // gleich danach laeuft, kriegt es die korrekten Werte; hier nur Default)
- const brainDot = document.getElementById('brain-dot');
- const brainShort = document.getElementById('brain-status-short');
- const brainErr = document.getElementById('brain-error');
- const gw = state.gateway || {};
- if (brainDot) brainDot.className = `dot ${gw.status === 'connected' ? 'connected' : 'disconnected'}`;
- if (brainShort) brainShort.textContent = gw.status === 'disabled' ? 'aria-core entfernt — Brain-Loop' : (STATUS_LABELS[gw.status] || gw.status || '-');
- if (brainErr) brainErr.textContent = gw.lastError || '';
+ // Brain-Card holt ihre Daten via loadBrainStatus() (fetch /api/brain/health).
+ // state.gateway ist Reststruktur aus OpenClaw-Zeit — wir ignorieren das hier.
// RVS
const rvs = state.rvs || {};
@@ -2895,14 +2901,23 @@
}
async function resetConversation() {
- if (!confirm('Konversation leeren?\n\nDer Rolling-Window-Verlauf wird komplett verworfen. Destillierte Facts bleiben in der DB.')) return;
+ if (!confirm('Konversation komplett zurücksetzen?\n\n• ARIAs Rolling-Window (Brain) wird geleert — sie "vergisst" die letzten Turns\n• Chat-Anzeige in der Diagnostic wird geleert\n\nDestillierte Facts + andere Memories bleiben in der Vector-DB.')) return;
try {
- const r = await fetch('/api/brain/conversation/reset', { method: 'POST' });
- const d = await r.json();
- if (d.ok) {
+ // Beides parallel — Brain Window + Diagnostic chat_backup
+ const [brainR, histR] = await Promise.all([
+ fetch('/api/brain/conversation/reset', { method: 'POST' }),
+ fetch('/api/chat-history-clear', { method: 'POST' }),
+ ]);
+ const brainOk = brainR.ok;
+ const histOk = histR.ok;
+ if (brainOk && histOk) {
+ // Chat-View leeren (Server broadcasted das eh, aber sicherheitshalber)
+ if (chatBox) chatBox.innerHTML = '';
+ const fsBox = document.getElementById('chat-box-fs');
+ if (fsBox) fsBox.innerHTML = '';
loadBrainStatus();
} else {
- alert('Reset fehlgeschlagen');
+ alert(`Reset teilweise fehlgeschlagen — Brain: ${brainOk ? 'OK' : 'fail'}, History: ${histOk ? 'OK' : 'fail'}`);
}
} catch (e) {
alert('Reset fehlgeschlagen: ' + e.message);
diff --git a/diagnostic/server.js b/diagnostic/server.js
index 6ede9aa..aac30d5 100644
--- a/diagnostic/server.js
+++ b/diagnostic/server.js
@@ -1448,6 +1448,23 @@ const server = http.createServer((req, res) => {
}
});
return;
+ } else if (req.url === "/api/chat-history-clear" && req.method === "POST") {
+ // Leert die Diagnostic-Anzeige-History (chat_backup.jsonl).
+ // Brain's Rolling-Window (conversation.jsonl) ist davon unabhaengig —
+ // der Caller sollte zusaetzlich /api/brain/conversation/reset triggern.
+ log("warn", "server", "HTTP /api/chat-history-clear");
+ try {
+ const file = "/shared/config/chat_backup.jsonl";
+ if (fs.existsSync(file)) fs.unlinkSync(file);
+ // Broadcast: alle Browser-Clients sollen ihre lokale Chat-View leeren
+ broadcast({ type: "chat_history", messages: [] });
+ res.writeHead(200, { "Content-Type": "application/json" });
+ res.end(JSON.stringify({ ok: true }));
+ } catch (err) {
+ res.writeHead(500, { "Content-Type": "application/json" });
+ res.end(JSON.stringify({ ok: false, error: err.message }));
+ }
+ return;
} else if (req.url === "/api/wipe-all" && req.method === "POST") {
// Komplett-Reset — Gedaechtnis, Stimmen, Config alle weg. SSH-Keys
// und .env bleiben, RVS-Anbindung bleibt. Brain + Qdrant werden