feat(cron): include delivery channel/to in finished event

When a cron job with agentTurn payload completes, include the delivery
target fields (channel and to) in the cron.finished event. This enables
gateway clients to deliver cron messages to specific channels instead
of broadcasting to all user platforms.

Use case: When an agent schedules a reminder like "Remind me on Discord: ...",
the external gateway can now deliver the message only to Discord instead
of all channels.

Changes:
- Add channel/to fields to CronEvent type
- Add channel/to fields to CronRunLogEntrySchema
- Include channel/to from job.payload when emitting finished event

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Developer 2026-01-25 17:20:37 +01:00
parent c8063bdcd8
commit 5de932ba26
3 changed files with 11 additions and 0 deletions

View File

@ -10,6 +10,10 @@ export type CronEvent = {
error?: string;
summary?: string;
nextRunAtMs?: number;
/** Delivery channel from the job payload (for agentTurn jobs). */
channel?: string;
/** Delivery target from the job payload (for agentTurn jobs). */
to?: string;
};
export type Logger = {

View File

@ -103,6 +103,9 @@ export async function executeJob(
runAtMs: startedAt,
durationMs: job.state.lastDurationMs,
nextRunAtMs: job.state.nextRunAtMs,
// Include delivery target from payload for agentTurn jobs
channel: job.payload.kind === "agentTurn" ? job.payload.channel : undefined,
to: job.payload.kind === "agentTurn" ? job.payload.to : undefined,
});
if (shouldDelete && state.store) {

View File

@ -240,6 +240,10 @@ export const CronRunLogEntrySchema = Type.Object(
runAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
durationMs: Type.Optional(Type.Integer({ minimum: 0 })),
nextRunAtMs: Type.Optional(Type.Integer({ minimum: 0 })),
/** Delivery channel from the job payload (for agentTurn jobs). */
channel: Type.Optional(Type.String()),
/** Delivery target from the job payload (for agentTurn jobs). */
to: Type.Optional(Type.String()),
},
{ additionalProperties: false },
);