diff --git a/packages/types/src/__tests__/google-models.test.ts b/packages/types/src/__tests__/google-models.test.ts new file mode 100644 index 0000000000..674fb5d83c --- /dev/null +++ b/packages/types/src/__tests__/google-models.test.ts @@ -0,0 +1,12 @@ +import { geminiModels } from "../providers/gemini.js" +import { vertexModels } from "../providers/vertex.js" + +describe.each([ + ["Gemini API", geminiModels["gemini-3.7-flash"]], + ["Vertex AI", vertexModels["gemini-3.7-flash"]], +])("Gemini 3.7 Flash on %s", (_provider, model) => { + it("exposes the supported thinking levels and introductory cache storage price", () => { + expect(model.supportsReasoningEffort).toEqual(["low", "medium", "high"]) + expect(model.cacheWritesPrice).toBe(0.5) + }) +}) diff --git a/packages/types/src/providers/gemini.ts b/packages/types/src/providers/gemini.ts index e180be0867..d3051a8229 100644 --- a/packages/types/src/providers/gemini.ts +++ b/packages/types/src/providers/gemini.ts @@ -6,6 +6,19 @@ export type GeminiModelId = keyof typeof geminiModels export const geminiDefaultModelId: GeminiModelId = "gemini-3.1-pro-preview" export const geminiModels = { + "gemini-3.7-flash": { + maxTokens: 65_536, + contextWindow: 1_048_576, + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["low", "medium", "high"], + reasoningEffort: "medium", + inputPrice: 0.75, + outputPrice: 3.75, + cacheReadsPrice: 0.075, + cacheWritesPrice: 0.5, + supportsReasoningBudget: false, + }, "gemini-3.6-flash": { maxTokens: 65_536, contextWindow: 1_048_576, diff --git a/packages/types/src/providers/vertex.ts b/packages/types/src/providers/vertex.ts index 46ff835682..1509f40469 100644 --- a/packages/types/src/providers/vertex.ts +++ b/packages/types/src/providers/vertex.ts @@ -6,6 +6,19 @@ export type VertexModelId = keyof typeof vertexModels export const vertexDefaultModelId: VertexModelId = "claude-sonnet-4-5@20250929" export const vertexModels = { + "gemini-3.7-flash": { + maxTokens: 65_536, + contextWindow: 1_048_576, + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["low", "medium", "high"], + reasoningEffort: "medium", + inputPrice: 0.75, + outputPrice: 3.75, + cacheReadsPrice: 0.075, + cacheWritesPrice: 0.5, + supportsReasoningBudget: false, + }, "gemini-3.6-flash": { maxTokens: 65_536, contextWindow: 1_048_576,