From 140994386388df7c171b25b1cac625d64987430a Mon Sep 17 00:00:00 2001 From: Tyler Yust Date: Tue, 3 Feb 2026 16:55:27 -0800 Subject: [PATCH] feat(cron): set default enabled state for cron jobs - Added logic to default the `enabled` property to `true` if not explicitly set as a boolean in the cron job input. - Updated job creation and store functions to ensure consistent handling of the `enabled` state across the application. - Enhanced input normalization to improve job configuration reliability. This update ensures that cron jobs are enabled by default, enhancing user experience and reducing potential misconfigurations. --- src/cron/normalize.ts | 3 +++ src/cron/service/jobs.ts | 3 ++- src/cron/service/store.ts | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cron/normalize.ts b/src/cron/normalize.ts index bed25c312..733be718c 100644 --- a/src/cron/normalize.ts +++ b/src/cron/normalize.ts @@ -206,6 +206,9 @@ export function normalizeCronJobInput( if (!next.wakeMode) { next.wakeMode = "next-heartbeat"; } + if (typeof next.enabled !== "boolean") { + next.enabled = true; + } if (!next.sessionTarget && isRecord(next.payload)) { const kind = typeof next.payload.kind === "string" ? next.payload.kind : ""; if (kind === "systemEvent") { diff --git a/src/cron/service/jobs.ts b/src/cron/service/jobs.ts index 4c5596a4c..bd39237f7 100644 --- a/src/cron/service/jobs.ts +++ b/src/cron/service/jobs.ts @@ -105,12 +105,13 @@ export function createJob(state: CronServiceState, input: CronJobCreate): CronJo : input.schedule.kind === "at" ? true : undefined; + const enabled = typeof input.enabled === "boolean" ? input.enabled : true; const job: CronJob = { id, agentId: normalizeOptionalAgentId(input.agentId), name: normalizeRequiredName(input.name), description: normalizeOptionalText(input.description), - enabled: input.enabled, + enabled, deleteAfterRun, createdAtMs: now, updatedAtMs: now, diff --git a/src/cron/service/store.ts b/src/cron/service/store.ts index 40ea830bb..5797f2ee1 100644 --- a/src/cron/service/store.ts +++ b/src/cron/service/store.ts @@ -101,6 +101,11 @@ export async function ensureLoaded(state: CronServiceState) { mutated = true; } + if (typeof raw.enabled !== "boolean") { + raw.enabled = true; + mutated = true; + } + const payload = raw.payload; if (payload && typeof payload === "object" && !Array.isArray(payload)) { if (migrateLegacyCronPayload(payload as Record)) {