From ce38edd0b33ce7e7ab3a75b9c3a70a519673dc3f Mon Sep 17 00:00:00 2001 From: Andrew Kent Date: Tue, 9 Jun 2026 13:32:52 -0600 Subject: [PATCH] make remote eval params zod schema nullish --- js/dev/types.ts | 2 +- js/src/zod/zod-v3-serialization.test.ts | 35 ++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/js/dev/types.ts b/js/dev/types.ts index 6a8684593..da992efea 100644 --- a/js/dev/types.ts +++ b/js/dev/types.ts @@ -109,7 +109,7 @@ export type SerializedParametersContainer = z.infer< >; export const evaluatorDefinitionSchema = z.object({ - parameters: serializedParametersContainerSchema.optional(), + parameters: serializedParametersContainerSchema.nullish(), scores: z.array(z.object({ name: z.string() })).optional(), classifiers: z.array(z.object({ name: z.string() })).optional(), }); diff --git a/js/src/zod/zod-v3-serialization.test.ts b/js/src/zod/zod-v3-serialization.test.ts index 826188421..c4d1097d2 100644 --- a/js/src/zod/zod-v3-serialization.test.ts +++ b/js/src/zod/zod-v3-serialization.test.ts @@ -19,7 +19,10 @@ import { serializeEvalParametersToStaticParametersSchema, serializeRemoteEvalParametersContainer, } from "../framework2"; -import { serializedParametersContainerSchema } from "../../dev/types"; +import { + serializedParametersContainerSchema, + evaluatorDefinitionSchema, +} from "../../dev/types"; // Detect which zod version is installed by checking for v4-specific properties function getInstalledZodVersion(): 3 | 4 { const testSchema = zodModule.z.string(); @@ -199,3 +202,33 @@ describe("serializedParametersContainerSchema parsing", () => { expect(result.success).toBe(true); }); }); + +describe("evaluatorDefinitionSchema parameters nullish", () => { + test("allows parameters: null", () => { + const result = evaluatorDefinitionSchema.safeParse({ + parameters: null, + }); + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.parameters).toBeNull(); + } + }); + + test("allows parameters: undefined", () => { + const result = evaluatorDefinitionSchema.safeParse({ + parameters: undefined, + }); + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.parameters).toBeUndefined(); + } + }); + + test("allows parameters omitted entirely", () => { + const result = evaluatorDefinitionSchema.safeParse({}); + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.parameters).toBeUndefined(); + } + }); +});