From 9a57bdfdf14b865dff79d0a0844c0ce0e2a99d66 Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 27 Mar 2026 20:42:09 -0500 Subject: [PATCH] fix(regression): preserve session tool event metadata --- src/gateway/server-chat.agent-events.test.ts | 24 ++++++++++++++++++++ src/gateway/server-chat.ts | 7 +++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/gateway/server-chat.agent-events.test.ts b/src/gateway/server-chat.agent-events.test.ts index 721d69a3924..20bb874b1cc 100644 --- a/src/gateway/server-chat.agent-events.test.ts +++ b/src/gateway/server-chat.agent-events.test.ts @@ -655,6 +655,21 @@ describe("agent event handler", () => { resolveSessionKeyForRun: () => "session-1", }); + vi.mocked(loadGatewaySessionRow).mockReturnValue({ + key: "session-1", + kind: "direct", + spawnedBy: "agent:main:main", + spawnedWorkspaceDir: "/tmp/subagent", + forkedFromParent: true, + spawnDepth: 2, + subagentRole: "orchestrator", + subagentControlScope: "children", + lastThreadId: 42, + fastMode: true, + verboseLevel: "on", + updatedAt: 1_200, + }); + registerAgentRunContext("run-session-tool", { sessionKey: "session-1", verboseLevel: "off" }); sessionEventSubscribers.subscribe("conn-session"); @@ -677,6 +692,15 @@ describe("agent event handler", () => { expect.objectContaining({ runId: "run-session-tool", sessionKey: "session-1", + spawnedBy: "agent:main:main", + spawnedWorkspaceDir: "/tmp/subagent", + forkedFromParent: true, + spawnDepth: 2, + subagentRole: "orchestrator", + subagentControlScope: "children", + lastThreadId: 42, + fastMode: true, + verboseLevel: "on", stream: "tool", ts: 1_234, data: expect.objectContaining({ diff --git a/src/gateway/server-chat.ts b/src/gateway/server-chat.ts index fb221ff7192..8f81e4b6754 100644 --- a/src/gateway/server-chat.ts +++ b/src/gateway/server-chat.ts @@ -780,7 +780,12 @@ export function createAgentEventHandler({ if (sessionKey) { const sessionSubscribers = sessionEventSubscribers.getAll(); if (sessionSubscribers.size > 0) { - broadcastToConnIds("session.tool", toolPayload, sessionSubscribers, { dropIfSlow: true }); + broadcastToConnIds( + "session.tool", + { ...toolPayload, ...buildSessionEventSnapshot(sessionKey) }, + sessionSubscribers, + { dropIfSlow: true }, + ); } } } else {