diff --git a/dashboard/src/data/localProvider.ts b/dashboard/src/data/localProvider.ts index db28d75..22974b9 100644 --- a/dashboard/src/data/localProvider.ts +++ b/dashboard/src/data/localProvider.ts @@ -217,7 +217,14 @@ const db = () => })); const keyFor = (bucket: Bucket, id: string) => `${bucket}:${id}`; const recordFor = (bucket: Bucket, id: string, value: T) => { - recordValueSchemas[bucket].parse(value); + const parsed = recordValueSchemas[bucket].parse(value); + if ( + parsed && + typeof parsed === "object" && + "id" in parsed && + parsed.id !== id + ) + throw new Error(`Record key ${id} does not match its value id.`); return recordSchema.parse({ key: keyFor(bucket, id), bucket, id, value }); }; const valueFor = (bucket: Bucket, value: unknown): T => diff --git a/dashboard/tests/localProvider.test.ts b/dashboard/tests/localProvider.test.ts index c4f3ebc..aab9537 100644 --- a/dashboard/tests/localProvider.test.ts +++ b/dashboard/tests/localProvider.test.ts @@ -47,8 +47,15 @@ describe("local IndexedDB provider", () => { expect(seededAgents.map((agent) => agent.id).sort()).toEqual( agentSeedCatalog.map((agent) => agent.id).sort(), ); + // ORIGINAL (preserved, not deleted — disabled by comment): + // await localProvider.put("agents", "codex", { + // ...seededAgents[0], + // name: "Locally customized Codex", + // }); + const codex = seededAgents.find((agent) => agent.id === "codex"); + if (!codex) throw new Error("Expected the seeded Codex agent."); await localProvider.put("agents", "codex", { - ...seededAgents[0], + ...codex, name: "Locally customized Codex", }); await localProvider.initialize();