fix(agents): deliver stale cron media completions

This commit is contained in:
Peter Steinberger
2026-05-25 18:24:16 +01:00
parent f5d2db2a60
commit f01b2a8eab
2 changed files with 39 additions and 1 deletions
+35 -1
View File
@@ -2385,7 +2385,7 @@ describe("deliverSubagentAnnouncement completion delivery", () => {
);
});
it("no-ops stale isolated cron run media completions", async () => {
it("directly delivers stale isolated cron run media completions", async () => {
const callGateway = createGatewayMock();
const sendMessage = createSendMessageMock();
const queueEmbeddedPiMessageWithOutcome = createQueueOutcomeMock(true);
@@ -2416,6 +2416,40 @@ describe("deliverSubagentAnnouncement completion delivery", () => {
],
});
expectRecordFields(result, {
delivered: true,
path: "direct",
});
expect(queueEmbeddedPiMessageWithOutcome).not.toHaveBeenCalled();
expect(callGateway).not.toHaveBeenCalled();
expect(sendMessage).toHaveBeenCalledWith(
expect.objectContaining({
channel: "slack",
accountId: "acct-1",
to: "channel:C123",
content: "The generated image is ready.",
mediaUrls: ["/tmp/generated-daily.png"],
idempotencyKey: "announce-stale-cron-media:generated-media-direct",
}),
);
});
it("no-ops stale isolated cron run text completions", async () => {
const callGateway = createGatewayMock();
const sendMessage = createSendMessageMock();
const queueEmbeddedPiMessageWithOutcome = createQueueOutcomeMock(true);
const result = await deliverSlackChannelAnnouncement({
callGateway,
sendMessage,
queueEmbeddedPiMessageWithOutcome,
sessionId: "stale-cron-run-session",
isActive: false,
requesterSessionKey: "agent:main:cron:daily-text:run:run-123",
expectsCompletionMessage: true,
directIdempotencyKey: "announce-stale-cron-text",
sourceTool: "subagent_announce",
});
expectRecordFields(result, {
delivered: true,
path: "none",
+4
View File
@@ -913,6 +913,10 @@ async function sendSubagentAnnounceDirectly(params: {
isCronRunSessionKey(canonicalRequesterSessionKey) &&
!resolveRequesterSessionActivity(canonicalRequesterSessionKey).isActive
) {
const generatedMediaDelivery = await tryGeneratedMediaDirectDelivery();
if (generatedMediaDelivery) {
return generatedMediaDelivery;
}
return {
delivered: true,
path: "none",