diff --git a/src/config/schema/athena.test.ts b/src/config/schema/athena.test.ts index b8838bdf..713c1504 100644 --- a/src/config/schema/athena.test.ts +++ b/src/config/schema/athena.test.ts @@ -111,6 +111,17 @@ describe("CouncilMemberSchema", () => { expect(parsed.variant).toBeUndefined() expect(parsed.name).toBeUndefined() }) + + test("rejects member config with unknown fields", () => { + //#given + const config = { model: "openai/gpt-5.3-codex", temperature: 0.2 } + + //#when + const result = CouncilMemberSchema.safeParse(config) + + //#then + expect(result.success).toBe(false) + }) }) describe("CouncilConfigSchema", () => { diff --git a/src/config/schema/athena.ts b/src/config/schema/athena.ts index ec9e135b..b6270b16 100644 --- a/src/config/schema/athena.ts +++ b/src/config/schema/athena.ts @@ -16,7 +16,7 @@ export const CouncilMemberSchema = z.object({ model: ModelStringSchema, variant: z.string().optional(), name: z.string().optional(), -}) +}).strict() export const CouncilConfigSchema = z.object({ members: z.array(CouncilMemberSchema).min(2), @@ -26,7 +26,3 @@ export const AthenaConfigSchema = z.object({ model: z.string().optional(), council: CouncilConfigSchema, }) - -export type CouncilMemberSchemaType = z.infer -export type CouncilConfigSchemaType = z.infer -export type AthenaConfigSchemaType = z.infer