Skip to content

Commit 69f5444

Browse files
committed
fix(agents): notify stale cron media failures
1 parent 2cfd15c commit 69f5444

2 files changed

Lines changed: 55 additions & 4 deletions

File tree

src/agents/subagent-announce-delivery.test.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2460,6 +2460,55 @@ describe("deliverSubagentAnnouncement completion delivery", () => {
24602460
expect(sendMessage).not.toHaveBeenCalled();
24612461
});
24622462

2463+
it("directly delivers stale isolated cron run media failure completions", async () => {
2464+
const callGateway = createGatewayMock({
2465+
result: {
2466+
payloads: [{ text: "Image generation failed. Provider timed out." }],
2467+
},
2468+
});
2469+
const sendMessage = createSendMessageMock();
2470+
const queueEmbeddedPiMessageWithOutcome = createQueueOutcomeMock(true);
2471+
const result = await deliverSlackChannelAnnouncement({
2472+
callGateway,
2473+
sendMessage,
2474+
queueEmbeddedPiMessageWithOutcome,
2475+
sessionId: "stale-cron-run-session",
2476+
isActive: false,
2477+
requesterSessionKey: "agent:main:cron:daily-media:run:run-123",
2478+
expectsCompletionMessage: true,
2479+
directIdempotencyKey: "announce-stale-cron-media-failure",
2480+
sourceTool: "image_generate",
2481+
internalEvents: [
2482+
{
2483+
type: "task_completion",
2484+
source: "image_generation",
2485+
childSessionKey: "image_generate:task-123",
2486+
childSessionId: "task-123",
2487+
announceType: "image generation task",
2488+
taskLabel: "daily media",
2489+
status: "error",
2490+
statusLabel: "failed",
2491+
result: "Provider timed out.",
2492+
replyInstruction: "Tell the user image generation failed.",
2493+
},
2494+
],
2495+
});
2496+
2497+
expectRecordFields(result, {
2498+
delivered: true,
2499+
path: "direct",
2500+
});
2501+
expect(queueEmbeddedPiMessageWithOutcome).not.toHaveBeenCalled();
2502+
expectGatewayAgentParams(callGateway, {
2503+
deliver: true,
2504+
channel: "slack",
2505+
accountId: "acct-1",
2506+
to: "channel:C123",
2507+
threadId: undefined,
2508+
});
2509+
expect(sendMessage).not.toHaveBeenCalled();
2510+
});
2511+
24632512
it.each([
24642513
{
24652514
name: "legacy Discord channel",

src/agents/subagent-announce-delivery.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -917,10 +917,12 @@ async function sendSubagentAnnounceDirectly(params: {
917917
if (generatedMediaDelivery) {
918918
return generatedMediaDelivery;
919919
}
920-
return {
921-
delivered: true,
922-
path: "none",
923-
};
920+
if (!agentMediatedCompletion) {
921+
return {
922+
delivered: true,
923+
path: "none",
924+
};
925+
}
924926
}
925927
if (params.signal?.aborted) {
926928
return {

0 commit comments

Comments
 (0)