From 8df01a8683de6065691b62afcdbc8bfc69e6a20d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 24 May 2026 03:01:19 +0100 Subject: [PATCH] fix: treat aborted subagent lifecycle events as killed --- src/agents/subagent-registry.test.ts | 4 ++++ src/agents/subagent-registry.ts | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/agents/subagent-registry.test.ts b/src/agents/subagent-registry.test.ts index e954fdba7d02..45bfeb2e1209 100644 --- a/src/agents/subagent-registry.test.ts +++ b/src/agents/subagent-registry.test.ts @@ -1008,6 +1008,7 @@ describe("subagent registry seam flow", () => { phase: "end", startedAt: 10, endedAt: 20, + aborted: true, stopReason: "aborted", }, }); @@ -1037,6 +1038,9 @@ describe("subagent registry seam flow", () => { .find((entry) => entry.runId === "run-aborted-end"); expect(run?.endedReason).toBe("subagent-killed"); expect(run?.outcome?.status).toBe("error"); + + await vi.advanceTimersByTimeAsync(20_000); + expect(mocks.runSubagentAnnounceFlow).toHaveBeenCalledTimes(1); }); it("preserves run-mode keep entries past SESSION_RUN_TTL_MS sweep", async () => { diff --git a/src/agents/subagent-registry.ts b/src/agents/subagent-registry.ts index aad1508529fe..e5464d3877e6 100644 --- a/src/agents/subagent-registry.ts +++ b/src/agents/subagent-registry.ts @@ -1016,13 +1016,6 @@ function ensureListener() { }); return; } - if (evt.data?.aborted) { - schedulePendingLifecycleTimeout({ - runId: evt.runId, - endedAt, - }); - return; - } if (isAbortedAgentStopReason(stopReason)) { clearPendingLifecycleError(evt.runId); clearPendingLifecycleTimeout(evt.runId); @@ -1040,6 +1033,13 @@ function ensureListener() { }); return; } + if (evt.data?.aborted) { + schedulePendingLifecycleTimeout({ + runId: evt.runId, + endedAt, + }); + return; + } if (evt.data?.yielded === true) { if ( markSubagentRunPausedAfterYield({