From ce681be08446cb325baf278a9ff8eb525de78cba Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 23 Apr 2026 18:34:04 +0100 Subject: [PATCH] test: dedupe subagent announcement fixtures --- src/agents/subagent-announce-delivery.test.ts | 187 ++++++------------ 1 file changed, 60 insertions(+), 127 deletions(-) diff --git a/src/agents/subagent-announce-delivery.test.ts b/src/agents/subagent-announce-delivery.test.ts index 71f22207c58..38525a8d1cf 100644 --- a/src/agents/subagent-announce-delivery.test.ts +++ b/src/agents/subagent-announce-delivery.test.ts @@ -7,6 +7,53 @@ afterEach(() => { __testing.setDepsForTest(); }); +const slackThreadOrigin = { + channel: "slack", + to: "channel:C123", + accountId: "acct-1", + threadId: "171.222", +} as const; + +function createGatewayMock() { + return vi.fn(async () => ({}) as Record) as unknown as typeof runtimeCallGateway; +} + +async function deliverSlackThreadAnnouncement(params: { + callGateway: typeof runtimeCallGateway; + isActive: boolean; + sessionId: string; + expectsCompletionMessage: boolean; + directIdempotencyKey: string; + queueEmbeddedPiMessage?: (sessionId: string, message: string) => boolean; +}) { + __testing.setDepsForTest({ + callGateway: params.callGateway, + getRequesterSessionActivity: () => ({ + sessionId: params.sessionId, + isActive: params.isActive, + }), + loadConfig: () => ({}) as never, + ...(params.queueEmbeddedPiMessage + ? { queueEmbeddedPiMessage: params.queueEmbeddedPiMessage } + : {}), + }); + + return deliverSubagentAnnouncement({ + requesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", + targetRequesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", + triggerMessage: "child done", + steerMessage: "child done", + requesterOrigin: slackThreadOrigin, + requesterSessionOrigin: slackThreadOrigin, + completionDirectOrigin: slackThreadOrigin, + directOrigin: slackThreadOrigin, + requesterIsSubagent: false, + expectsCompletionMessage: params.expectsCompletionMessage, + bestEffortDeliver: true, + directIdempotencyKey: params.directIdempotencyKey, + }); +} + describe("resolveAnnounceOrigin threaded route targets", () => { it("preserves stored thread ids when requester origin omits one for the same chat", () => { expect( @@ -70,53 +117,15 @@ describe("resolveAnnounceOrigin threaded route targets", () => { describe("deliverSubagentAnnouncement completion delivery", () => { it("keeps completion announces session-internal while preserving route context for active requesters", async () => { - const callGateway = vi.fn( - async () => ({}) as Record, - ) as unknown as typeof runtimeCallGateway; + const callGateway = createGatewayMock(); const queueEmbeddedPiMessage = vi.fn(() => true); - __testing.setDepsForTest({ + const result = await deliverSlackThreadAnnouncement({ callGateway, - getRequesterSessionActivity: () => ({ - sessionId: "requester-session-1", - isActive: true, - }), - loadConfig: () => ({}) as never, - queueEmbeddedPiMessage, - }); - - const result = await deliverSubagentAnnouncement({ - requesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - targetRequesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - triggerMessage: "child done", - steerMessage: "child done", - requesterOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterSessionOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - completionDirectOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - directOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterIsSubagent: false, + sessionId: "requester-session-1", + isActive: true, expectsCompletionMessage: true, - bestEffortDeliver: true, directIdempotencyKey: "announce-1", + queueEmbeddedPiMessage, }); expect(result).toEqual( @@ -130,50 +139,12 @@ describe("deliverSubagentAnnouncement completion delivery", () => { }); it("keeps direct external delivery for dormant completion requesters", async () => { - const callGateway = vi.fn( - async () => ({}) as Record, - ) as unknown as typeof runtimeCallGateway; - __testing.setDepsForTest({ + const callGateway = createGatewayMock(); + await deliverSlackThreadAnnouncement({ callGateway, - getRequesterSessionActivity: () => ({ - sessionId: "requester-session-2", - isActive: false, - }), - loadConfig: () => ({}) as never, - }); - - await deliverSubagentAnnouncement({ - requesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - targetRequesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - triggerMessage: "child done", - steerMessage: "child done", - requesterOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterSessionOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - completionDirectOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - directOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterIsSubagent: false, + sessionId: "requester-session-2", + isActive: false, expectsCompletionMessage: true, - bestEffortDeliver: true, directIdempotencyKey: "announce-1b", }); @@ -193,50 +164,12 @@ describe("deliverSubagentAnnouncement completion delivery", () => { }); it("keeps direct external delivery for non-completion announces", async () => { - const callGateway = vi.fn( - async () => ({}) as Record, - ) as unknown as typeof runtimeCallGateway; - __testing.setDepsForTest({ + const callGateway = createGatewayMock(); + await deliverSlackThreadAnnouncement({ callGateway, - getRequesterSessionActivity: () => ({ - sessionId: "requester-session-3", - isActive: false, - }), - loadConfig: () => ({}) as never, - }); - - await deliverSubagentAnnouncement({ - requesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - targetRequesterSessionKey: "agent:main:slack:channel:C123:thread:171.222", - triggerMessage: "child done", - steerMessage: "child done", - requesterOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterSessionOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - completionDirectOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - directOrigin: { - channel: "slack", - to: "channel:C123", - accountId: "acct-1", - threadId: "171.222", - }, - requesterIsSubagent: false, + sessionId: "requester-session-3", + isActive: false, expectsCompletionMessage: false, - bestEffortDeliver: true, directIdempotencyKey: "announce-2", });