From f2aebcbad9bbd90762c282a9cf9d04f214777b15 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 29 Mar 2026 03:04:45 +0200 Subject: [PATCH] fixed, chat messages, reload --- diagnostic/server.js | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/diagnostic/server.js b/diagnostic/server.js index f303c2b..22336a6 100644 --- a/diagnostic/server.js +++ b/diagnostic/server.js @@ -1362,19 +1362,26 @@ async function handleLoadChatHistory(clientWs) { if (!line.trim()) continue; try { const obj = JSON.parse(line); - // User-Nachrichten - if (obj.role === "user" && obj.content) { - const text = typeof obj.content === "string" ? obj.content - : Array.isArray(obj.content) ? obj.content.filter(c => c.type === "text").map(c => c.text).join("\n") - : ""; - if (text) chatMessages.push({ type: "sent", text, meta: "Gateway direkt", ts: obj.timestamp || 0 }); - } - // Assistant-Nachrichten - if (obj.role === "assistant" && obj.content) { - const text = typeof obj.content === "string" ? obj.content - : Array.isArray(obj.content) ? obj.content.filter(c => c.type === "text").map(c => c.text).join("\n") - : ""; - if (text) chatMessages.push({ type: "received", text, meta: "chat:final", ts: obj.timestamp || 0 }); + // OpenClaw Format: {"type":"message","message":{"role":"user|assistant","content":[...]}} + if (obj.type !== "message" || !obj.message) continue; + const msg = obj.message; + const role = msg.role; + if (!role) continue; + + // Text aus content-Array extrahieren + let text = ""; + if (typeof msg.content === "string") text = msg.content; + else if (Array.isArray(msg.content)) text = msg.content.filter(c => c.type === "text").map(c => c.text || "").join("\n"); + if (!text) continue; + + if (role === "user") { + // Metadata-Prefix entfernen: "Sender (untrusted metadata):\n```json\n{...}\n```\n\n[timestamp] " + text = text.replace(/^Sender \(untrusted metadata\):[\s\S]*?```\s*\n*(?:\[.*?\]\s*)?/m, "").trim(); + chatMessages.push({ type: "sent", text, meta: "Gateway direkt", ts: msg.timestamp || obj.timestamp || 0 }); + } else if (role === "assistant") { + // Reply-Prefix entfernen: "[[reply_to_current]] " + text = text.replace(/^\[\[reply_to_\w+\]\]\s*/g, "").trim(); + if (text) chatMessages.push({ type: "received", text, meta: "chat:final", ts: msg.timestamp || obj.timestamp || 0 }); } } catch {} }