Skip to content

Commit 465a545

Browse files
committed
fix(agents): preserve disabled subagent delivery state
1 parent ecbd97e commit 465a545

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/agents/subagent-registry-lifecycle.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,7 @@ describe("subagent registry lifecycle hardening", () => {
611611
expect(runSubagentAnnounceFlow).not.toHaveBeenCalled();
612612
expect(hasDeliveredTaskStatusUpdate(entry.runId)).toBe(false);
613613
await vi.waitFor(() => expect(entry.cleanupCompletedAt).toBeTypeOf("number"));
614+
expect(entry.delivery?.status).toBe("not_required");
614615
expect(entry.delivery?.announcedAt).toBeUndefined();
615616
});
616617

src/agents/subagent-registry-lifecycle.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,21 @@ export function createSubagentRegistryLifecycleController(params: {
802802
if (!entry) {
803803
return;
804804
}
805+
if (entry.expectsCompletionMessage === false) {
806+
clearPendingFinalDelivery(entry);
807+
entry.wakeOnDescendantSettle = undefined;
808+
const shouldDeleteAttachments = cleanup === "delete" || !entry.retainAttachmentsOnKeep;
809+
if (shouldDeleteAttachments) {
810+
await safeRemoveAttachmentsDir(entry);
811+
}
812+
completeCleanupBookkeeping({
813+
runId,
814+
entry,
815+
cleanup,
816+
completedAt: Date.now(),
817+
});
818+
return;
819+
}
805820
if (didAnnounce) {
806821
const delivery = ensureDeliveryState(entry);
807822
const shouldCreditDelivery =

0 commit comments

Comments
 (0)