From eb5c178139f30e4e80cc7de62bae559ade679a12 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 17 May 2026 21:56:17 +0200 Subject: [PATCH] fix(proxy): tool_result Events ueber generic 'message' statt nicht-existentem 'user' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der claude-max-api-proxy Subprocess-Manager emittiert nur 'message', 'assistant', 'content_delta', 'result', 'error', 'close', 'raw' — KEIN 'user'. tool_result-Blocks landen daher ausschliesslich im generischen 'message'-Event mit type==='user'. Filter darauf statt auf einen Event-Namen der nicht existiert, sonst kam in der ARIA-Live- View nichts an. Co-Authored-By: Claude Opus 4.7 (1M context) --- proxy-patches/routes.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/proxy-patches/routes.js b/proxy-patches/routes.js index 626b2f8..da9ed7c 100644 --- a/proxy-patches/routes.js +++ b/proxy-patches/routes.js @@ -122,9 +122,15 @@ function _attachToolHook(subprocess, requestId) { } } catch (_) { /* fail-open */ } }); - // user-Events enthalten tool_result-Blocks - subprocess.on("user", (message) => { + // tool_result Blocks kommen in user-Messages — die werden vom + // subprocess-Manager NICHT als 'user'-Event emittiert (gibt's nicht), + // sondern nur ueber das generische 'message'-Event mit type:'user'. + // 'message' feuert auch fuer assistant/result — wir filtern auf user + // damit wir nicht doppelt rendern (assistant geht ueber den eigenen + // assistant-Handler oben). + subprocess.on("message", (message) => { try { + if (message?.type !== "user") return; const blocks = message?.message?.content || []; for (const b of blocks) { if (b && b.type === "tool_result") {