fix(regression): preserve session tool event metadata

This commit is contained in:
Tak Hoffman
2026-03-27 20:42:09 -05:00
parent 86d8b06da9
commit 9a57bdfdf1
2 changed files with 30 additions and 1 deletions

View File

@@ -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({

View File

@@ -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 {