diff --git a/packages/server/src/server/agent/providers/omp/cli-runtime.test.ts b/packages/server/src/server/agent/providers/omp/cli-runtime.test.ts index cfa874544..da195f057 100644 --- a/packages/server/src/server/agent/providers/omp/cli-runtime.test.ts +++ b/packages/server/src/server/agent/providers/omp/cli-runtime.test.ts @@ -186,6 +186,40 @@ describe("OMP CLI runtime", () => { ]); }); + test("accepts model catalogs with null contextWindow from NVIDIA", async () => { + const child = createOmpChild(); + replyToCommands(child, () => ({ + models: [ + { + provider: "nvidia", + id: "minimaxai/minimax-m3", + name: "MiniMax-M3", + contextWindow: null, + }, + { + provider: "zai", + id: "glm-5.2", + name: "GLM-5.2", + contextWindow: 131_072, + }, + ], + })); + const session = await createRuntime(child).startSession({ cwd: "/workspace/project" }); + + await expect(session.getAvailableModels()).resolves.toEqual([ + expect.objectContaining({ + provider: "nvidia", + id: "minimaxai/minimax-m3", + contextWindow: null, + }), + expect.objectContaining({ + provider: "zai", + id: "glm-5.2", + contextWindow: 131_072, + }), + ]); + }); + test("wraps OMP subagent RPC commands", async () => { const child = createOmpChild(); const commands: Record[] = []; diff --git a/packages/server/src/server/agent/providers/omp/rpc-types.ts b/packages/server/src/server/agent/providers/omp/rpc-types.ts index 33760d480..63aaa7d26 100644 --- a/packages/server/src/server/agent/providers/omp/rpc-types.ts +++ b/packages/server/src/server/agent/providers/omp/rpc-types.ts @@ -103,7 +103,7 @@ export const OmpModelSchema = z name: z.string().optional(), reasoning: z.boolean().optional(), thinking: OmpModelThinkingSchema.optional(), - contextWindow: z.number().optional(), + contextWindow: z.number().nullable().optional(), maxTokens: z.number().nullable().optional(), api: z.string().optional(), baseUrl: z.string().optional(),