



















@@ -2318,6 +2318,73 @@ describe("deliverSubagentAnnouncement completion delivery", () => {
23182318expect(sendMessage).not.toHaveBeenCalled();
23192319});
232023202321+it("directly delivers missing generated media after active requester wake failure", async () => {
2322+const callGateway = createGatewayMock({
2323+result: {
2324+payloads: [],
2325+messagingToolSentTargets: [
2326+{
2327+tool: "message",
2328+provider: "slack",
2329+accountId: "acct-1",
2330+to: "channel:C123",
2331+text: "The first image is ready.",
2332+mediaUrls: ["/tmp/generated-robot-1.png"],
2333+},
2334+],
2335+},
2336+});
2337+const queueEmbeddedPiMessageWithOutcome = createQueueOutcomeSequenceMock([
2338+"transcript_commit_wait_unsupported",
2339+"no_active_run",
2340+]);
2341+const sendMessage = createSendMessageMock();
2342+const result = await deliverSlackChannelAnnouncement({
2343+ callGateway,
2344+ sendMessage,
2345+ queueEmbeddedPiMessageWithOutcome,
2346+sessionId: "requester-session-channel",
2347+isActive: true,
2348+expectsCompletionMessage: true,
2349+directIdempotencyKey: "announce-channel-media-active-wake-failed",
2350+sourceTool: "image_generate",
2351+internalEvents: [
2352+{
2353+type: "task_completion",
2354+source: "image_generation",
2355+childSessionKey: "image_generate:task-123",
2356+childSessionId: "task-123",
2357+announceType: "image generation task",
2358+taskLabel: "two proof images",
2359+status: "ok",
2360+statusLabel: "completed successfully",
2361+result:
2362+"Generated 2 images.\nMEDIA:/tmp/generated-robot-1.png\nMEDIA:/tmp/generated-robot-2.png",
2363+mediaUrls: ["/tmp/generated-robot-1.png", "/tmp/generated-robot-2.png"],
2364+replyInstruction:
2365+"Tell the user the images are ready and send them through the message tool.",
2366+},
2367+],
2368+});
2369+2370+expectRecordFields(result, {
2371+delivered: true,
2372+path: "direct",
2373+});
2374+expect(queueEmbeddedPiMessageWithOutcome).toHaveBeenCalledTimes(2);
2375+expect(callGateway).toHaveBeenCalledTimes(1);
2376+expect(sendMessage).toHaveBeenCalledWith(
2377+expect.objectContaining({
2378+channel: "slack",
2379+accountId: "acct-1",
2380+to: "channel:C123",
2381+content: "The generated image is ready.",
2382+mediaUrls: ["/tmp/generated-robot-2.png"],
2383+idempotencyKey: "announce-channel-media-active-wake-failed:generated-media-direct",
2384+}),
2385+);
2386+});
2387+23212388it.each([
23222389{
23232390name: "legacy Discord channel",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。