fix(routing): preserve explicit cron account and bound message defaults

Co-authored-by: lbo728 <72309817+lbo728@users.noreply.github.com>
Co-authored-by: stakeswky <64798754+stakeswky@users.noreply.github.com>
This commit is contained in:
Peter Steinberger
2026-02-26 02:43:22 +00:00
parent 92eb3dfc9d
commit 1e7ec8bfd2
10 changed files with 114 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ export type CronDeliveryPlan = {
mode: CronDeliveryMode;
channel?: CronMessageChannel;
to?: string;
accountId?: string;
source: "delivery" | "payload";
requested: boolean;
};
@@ -27,6 +28,14 @@ function normalizeTo(value: unknown): string | undefined {
return trimmed ? trimmed : undefined;
}
function normalizeAccountId(value: unknown): string | undefined {
if (typeof value !== "string") {
return undefined;
}
const trimmed = value.trim();
return trimmed ? trimmed : undefined;
}
export function resolveCronDeliveryPlan(job: CronJob): CronDeliveryPlan {
const payload = job.payload.kind === "agentTurn" ? job.payload : null;
const delivery = job.delivery;
@@ -50,6 +59,9 @@ export function resolveCronDeliveryPlan(job: CronJob): CronDeliveryPlan {
(delivery as { channel?: unknown } | undefined)?.channel,
);
const deliveryTo = normalizeTo((delivery as { to?: unknown } | undefined)?.to);
const deliveryAccountId = normalizeAccountId(
(delivery as { accountId?: unknown } | undefined)?.accountId,
);
const channel = deliveryChannel ?? payloadChannel ?? "last";
const to = deliveryTo ?? payloadTo;
@@ -59,6 +71,7 @@ export function resolveCronDeliveryPlan(job: CronJob): CronDeliveryPlan {
mode: resolvedMode,
channel: resolvedMode === "announce" ? channel : undefined,
to,
accountId: deliveryAccountId,
source: "delivery",
requested: resolvedMode === "announce",
};