diff --git a/src/cron/service/jobs.ts b/src/cron/service/jobs.ts index c8fcdce43e3..9b11dbfa883 100644 --- a/src/cron/service/jobs.ts +++ b/src/cron/service/jobs.ts @@ -47,7 +47,20 @@ function assertDeliverySupport(job: Pick) } export function findJobOrThrow(state: CronServiceState, id: string) { - const job = state.store?.jobs.find((j) => j.id === id); + // Exact match first + let job = state.store?.jobs.find((j) => j.id === id); + if (!job) { + // Prefix match (like git short hashes) + const matches = state.store?.jobs.filter((j) => j.id.startsWith(id)) ?? []; + if (matches.length === 1) { + job = matches[0]; + } else if (matches.length > 1) { + const ids = matches.map((j) => j.id).join(", "); + throw new Error( + `ambiguous cron job id prefix "${id}" matches ${matches.length} jobs: ${ids}`, + ); + } + } if (!job) { throw new Error(`unknown cron job id: ${id}`); }