From 6bdf5e563451e85e4bd154fd41764ec6ce3a7ae3 Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Thu, 26 Mar 2026 10:38:23 -0500 Subject: [PATCH] fix: preserve reset spawn depth --- .../server.sessions.gateway-server-sessions-a.test.ts | 7 +++++-- src/gateway/session-reset-service.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gateway/server.sessions.gateway-server-sessions-a.test.ts b/src/gateway/server.sessions.gateway-server-sessions-a.test.ts index 18dd1ee45ad..da0cb02d80d 100644 --- a/src/gateway/server.sessions.gateway-server-sessions-a.test.ts +++ b/src/gateway/server.sessions.gateway-server-sessions-a.test.ts @@ -1013,6 +1013,7 @@ describe("gateway server sessions", () => { updatedAt: Date.now(), spawnedBy: "agent:main:main", parentSessionKey: "agent:main:main", + spawnDepth: 2, label: "owned child", }, }, @@ -1022,20 +1023,22 @@ describe("gateway server sessions", () => { const reset = await rpcReq<{ ok: true; key: string; - entry: { spawnedBy?: string; parentSessionKey?: string; label?: string }; + entry: { spawnedBy?: string; parentSessionKey?: string; spawnDepth?: number; label?: string }; }>(ws, "sessions.reset", { key: "subagent:child" }); expect(reset.ok).toBe(true); expect(reset.payload?.entry.spawnedBy).toBe("agent:main:main"); expect(reset.payload?.entry.parentSessionKey).toBe("agent:main:main"); + expect(reset.payload?.entry.spawnDepth).toBe(2); expect(reset.payload?.entry.label).toBe("owned child"); const store = JSON.parse(await fs.readFile(storePath, "utf-8")) as Record< string, - { spawnedBy?: string; parentSessionKey?: string; label?: string } + { spawnedBy?: string; parentSessionKey?: string; spawnDepth?: number; label?: string } >; expect(store["agent:main:subagent:child"]?.spawnedBy).toBe("agent:main:main"); expect(store["agent:main:subagent:child"]?.parentSessionKey).toBe("agent:main:main"); + expect(store["agent:main:subagent:child"]?.spawnDepth).toBe(2); expect(store["agent:main:subagent:child"]?.label).toBe("owned child"); ws.close(); diff --git a/src/gateway/session-reset-service.ts b/src/gateway/session-reset-service.ts index 5c0210e728f..c6c98e3a409 100644 --- a/src/gateway/session-reset-service.ts +++ b/src/gateway/session-reset-service.ts @@ -322,6 +322,7 @@ export async function performGatewaySessionReset(params: { sendPolicy: currentEntry?.sendPolicy, spawnedBy: currentEntry?.spawnedBy, parentSessionKey: currentEntry?.parentSessionKey, + spawnDepth: currentEntry?.spawnDepth, label: currentEntry?.label, origin: snapshotSessionOrigin(currentEntry), lastChannel: currentEntry?.lastChannel,