import { describe, expect, it } from "vitest"; import { OPENCODE_MODEL_DEFINITIONS } from "./models"; const getModel = (name: string) => { const model = OPENCODE_MODEL_DEFINITIONS[name]; if (!model) { throw new Error(`Missing model definition for ${name}`); } return model; }; describe("OPENCODE_MODEL_DEFINITIONS", () => { it("includes the full set of configured models", () => { const modelNames = Object.keys(OPENCODE_MODEL_DEFINITIONS).sort(); expect(modelNames).toEqual([ "antigravity-claude-opus-4-6-thinking", "antigravity-claude-sonnet-4-6", "antigravity-gemini-3-flash", "antigravity-gemini-3-pro", "antigravity-gemini-3.1-pro", "gemini-2.5-flash", "gemini-2.5-pro", "gemini-3-flash-preview", "gemini-3-pro-preview", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools", ]); }); it("defines Gemini 3 variants for Antigravity models", () => { expect(getModel("antigravity-gemini-3-pro").variants).toEqual({ low: { thinkingLevel: "low" }, high: { thinkingLevel: "high" }, }); expect(getModel("antigravity-gemini-3.1-pro").variants).toEqual({ low: { thinkingLevel: "low" }, high: { thinkingLevel: "high" }, }); expect(getModel("antigravity-gemini-3-flash").variants).toEqual({ minimal: { thinkingLevel: "minimal" }, low: { thinkingLevel: "low" }, medium: { thinkingLevel: "medium" }, high: { thinkingLevel: "high" }, }); }); it("defines thinking budget variants for Claude thinking models", () => { expect(getModel("antigravity-claude-opus-4-6-thinking").variants).toEqual({ low: { thinkingConfig: { thinkingBudget: 8192 } }, max: { thinkingConfig: { thinkingBudget: 32768 } }, }); }); });