test: cover generated media delivery evidence fallback

This commit is contained in:
Peter Steinberger
2026-05-05 23:06:01 +01:00
parent a0ea07e462
commit add9a49c40
2 changed files with 55 additions and 1 deletions

View File

@@ -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) {

View File

@@ -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",