diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index d7a3d6bec94..50cfd61fd52 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -721,6 +721,43 @@ const _REGISTRY_EAGER: Record = { }, models: [ { id: "gemini-2.0-flash", name: "Gemini 2.0 Flash", toolCalling: true, supportsVision: true }, + { + id: "gemini-3.1-pro-preview", + name: "Gemini 3.1 Pro Preview", + toolCalling: true, + supportsVision: true, + }, + { + id: "gemini-3-flash-preview", + name: "Gemini 3 Flash Preview", + toolCalling: true, + supportsVision: true, + }, + { + id: "gemini-3.1-flash-lite-preview", + name: "Gemini 3.1 Flash Lite Preview", + toolCalling: true, + supportsVision: true, + }, + { + id: "gemini-3.5-flash", + name: "Gemini 3.5 Flash", + toolCalling: true, + supportsVision: true, + }, + { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", toolCalling: true, supportsVision: true }, + { + id: "gemini-2.5-flash", + name: "Gemini 2.5 Flash", + toolCalling: true, + supportsVision: true, + }, + { + id: "gemini-2.5-flash-lite", + name: "Gemini 2.5 Flash Lite", + toolCalling: true, + supportsVision: true, + }, { id: "gemini-2.0-flash-thinking-exp-01-21", name: "Gemini 2.0 Flash Thinking", diff --git a/tests/unit/t28-model-catalog-updates.test.ts b/tests/unit/t28-model-catalog-updates.test.ts index 121dfca2773..c046364d105 100644 --- a/tests/unit/t28-model-catalog-updates.test.ts +++ b/tests/unit/t28-model-catalog-updates.test.ts @@ -5,12 +5,18 @@ import { getModelInfoCore } from "../../open-sse/services/model.ts"; import { REGISTRY } from "../../open-sse/config/providerRegistry.ts"; import { getStaticModelsForProvider } from "../../src/lib/providers/staticModels.ts"; -test("T28: gemini-cli catalog includes preview models, gemini provides a static fallback", () => { +test("T28: gemini AI Studio catalog includes current preview models", () => { // Gemini (AI Studio) carries a small hardcoded fallback for first-run UX when no // API key has been added yet; the full catalog is populated by API sync via // /api/providers/:id/models with pageSize=1000 once a key exists. const geminiIds = REGISTRY.gemini.models.map((m) => m.id); - assert.ok(geminiIds.length >= 1, "gemini static fallback should expose at least one model"); + assert.ok(geminiIds.includes("gemini-3.1-pro-preview")); + assert.ok(geminiIds.includes("gemini-3-flash-preview")); + assert.ok(geminiIds.includes("gemini-3.1-flash-lite-preview")); + assert.ok(geminiIds.includes("gemini-3.5-flash")); + assert.ok(geminiIds.includes("gemini-2.5-flash")); + assert.ok(geminiIds.includes("gemini-2.5-pro")); + assert.equal(geminiIds[0], "gemini-2.0-flash", "preserve the existing Gemini default"); // gemini-cli still has hardcoded models (Cloud Code doesn't have a models API) const geminiCliIds = REGISTRY["gemini-cli"].models.map((m) => m.id);