diff --git a/src/cron/store-migration.test.ts b/src/cron/store-migration.test.ts index 79f3314c0..1cf433188 100644 --- a/src/cron/store-migration.test.ts +++ b/src/cron/store-migration.test.ts @@ -75,4 +75,25 @@ describe("normalizeStoredCronJobs", () => { channel: "slack", }); }); + + it("does not report legacyPayloadKind for already-normalized payload kinds", () => { + const jobs = [ + { + id: "normalized-agent-turn", + name: "normalized", + enabled: true, + wakeMode: "now", + schedule: { kind: "every", everyMs: 60_000, anchorMs: 1 }, + payload: { kind: "agentTurn", message: "ping" }, + sessionTarget: "isolated", + delivery: { mode: "announce" }, + state: {}, + }, + ] as Array>; + + const result = normalizeStoredCronJobs(jobs); + + expect(result.mutated).toBe(false); + expect(result.issues.legacyPayloadKind).toBeUndefined(); + }); }); diff --git a/src/cron/store-migration.ts b/src/cron/store-migration.ts index 11789422e..260b89cfe 100644 --- a/src/cron/store-migration.ts +++ b/src/cron/store-migration.ts @@ -28,14 +28,21 @@ function incrementIssue(issues: CronStoreIssues, key: CronStoreIssueKey) { } function normalizePayloadKind(payload: Record) { - const raw = typeof payload.kind === "string" ? payload.kind.trim().toLowerCase() : ""; - if (raw === "agentturn") { - payload.kind = "agentTurn"; - return true; + const original = typeof payload.kind === "string" ? payload.kind.trim() : ""; + const lowered = original.toLowerCase(); + if (lowered === "agentturn") { + if (original !== "agentTurn") { + payload.kind = "agentTurn"; + return true; + } + return false; } - if (raw === "systemevent") { - payload.kind = "systemEvent"; - return true; + if (lowered === "systemevent") { + if (original !== "systemEvent") { + payload.kind = "systemEvent"; + return true; + } + return false; } return false; }