From add9a49c40f90353632a9153552cdce0b981bc8d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 5 May 2026 23:06:01 +0100 Subject: [PATCH] test: cover generated media delivery evidence fallback --- src/agents/pi-embedded-subscribe.tools.ts | 4 +- src/agents/subagent-announce-delivery.test.ts | 52 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/agents/pi-embedded-subscribe.tools.ts b/src/agents/pi-embedded-subscribe.tools.ts index 8fc9a971195..9e35cf09b15 100644 --- a/src/agents/pi-embedded-subscribe.tools.ts +++ b/src/agents/pi-embedded-subscribe.tools.ts @@ -554,7 +554,9 @@ export function extractMessagingToolSend( const provider = providerId ?? normalizeOptionalLowercaseString(providerHint) ?? "message"; const to = normalizeTargetForProvider(provider, toRaw); const threadId = normalizeOptionalString(args.threadId); - return to ? { tool: toolName, provider, accountId, to, threadId } : undefined; + return to + ? { tool: toolName, provider, accountId, to, ...(threadId ? { threadId } : {}) } + : undefined; } const providerId = normalizeChannelId(toolName); if (!providerId) { diff --git a/src/agents/subagent-announce-delivery.test.ts b/src/agents/subagent-announce-delivery.test.ts index a859bda773f..46ccb6cb7a2 100644 --- a/src/agents/subagent-announce-delivery.test.ts +++ b/src/agents/subagent-announce-delivery.test.ts @@ -1271,6 +1271,58 @@ describe("deliverSubagentAnnouncement completion delivery", () => { ); }); + it("does not fallback for generated media group completions when message tool evidence exists", async () => { + const callGateway = createGatewayMock({ + result: { + payloads: [], + didSendViaMessagingTool: false, + messagingToolSentTargets: [ + { + tool: "message", + provider: "slack", + accountId: "acct-1", + to: "channel:C123", + text: "The track is ready.", + mediaUrls: ["/tmp/generated-night-drive.mp3"], + }, + ], + }, + }); + const sendMessage = createSendMessageMock(); + const result = await deliverSlackChannelAnnouncement({ + callGateway, + sendMessage, + sessionId: "requester-session-channel", + isActive: false, + expectsCompletionMessage: true, + directIdempotencyKey: "announce-channel-media-message-tool-evidence", + sourceTool: "music_generate", + internalEvents: [ + { + type: "task_completion", + source: "music_generation", + childSessionKey: "music_generate:task-123", + childSessionId: "task-123", + announceType: "music generation task", + taskLabel: "night-drive synthwave", + status: "ok", + statusLabel: "completed successfully", + result: "Generated 1 track.\nMEDIA:/tmp/generated-night-drive.mp3", + mediaUrls: ["/tmp/generated-night-drive.mp3"], + replyInstruction: "Deliver the generated music through the message tool.", + }, + ], + }); + + expect(result).toEqual( + expect.objectContaining({ + delivered: true, + path: "direct", + }), + ); + expect(sendMessage).not.toHaveBeenCalled(); + }); + it("does not fallback while generated media announce-agent run is still pending", async () => { const callGateway = createGatewayMock({ runId: "video_generate:task-123:ok",