fix: add gemini 3.1 flash-lite support

This commit is contained in:
Peter Steinberger
2026-03-08 05:12:48 +00:00
parent 06ffef8465
commit 59102a1ff7
13 changed files with 167 additions and 24 deletions

View File

@@ -125,6 +125,17 @@ describe("model-selection", () => {
});
});
it("normalizes gemini 3.1 flash-lite to the preview model id", () => {
expect(parseModelRef("google/gemini-3.1-flash-lite", "openai")).toEqual({
provider: "google",
model: "gemini-3.1-flash-lite-preview",
});
expect(parseModelRef("gemini-3.1-flash-lite", "google")).toEqual({
provider: "google",
model: "gemini-3.1-flash-lite-preview",
});
});
it("keeps openai gpt-5.3 codex refs on the openai provider", () => {
expect(parseModelRef("openai/gpt-5.3-codex", "anthropic")).toEqual({
provider: "openai",

View File

@@ -53,6 +53,10 @@ describe("normalizeGoogleModelId", () => {
expect(normalizeGoogleModelId("gemini-3.1-flash")).toBe("gemini-3-flash-preview");
expect(normalizeGoogleModelId("gemini-3.1-flash-preview")).toBe("gemini-3-flash-preview");
});
it("adds the preview suffix for gemini 3.1 flash-lite", () => {
expect(normalizeGoogleModelId("gemini-3.1-flash-lite")).toBe("gemini-3.1-flash-lite-preview");
});
});
describe("google-antigravity provider normalization", () => {

View File

@@ -547,6 +547,9 @@ export function normalizeGoogleModelId(id: string): string {
if (id === "gemini-3.1-pro") {
return "gemini-3.1-pro-preview";
}
if (id === "gemini-3.1-flash-lite") {
return "gemini-3.1-flash-lite-preview";
}
// Preserve compatibility with earlier OpenClaw docs/config that pointed at a
// non-existent Gemini Flash preview ID. Google's current Flash text model is
// `gemini-3-flash-preview`.

View File

@@ -89,6 +89,19 @@ describe("pi embedded model e2e smoke", () => {
});
});
it("builds a google-gemini-cli forward-compat fallback for gemini-3.1-flash-lite-preview", () => {
mockGoogleGeminiCliFlashTemplateModel();
const result = resolveModel("google-gemini-cli", "gemini-3.1-flash-lite-preview", "/tmp/agent");
expect(result.error).toBeUndefined();
expect(result.model).toMatchObject({
...GOOGLE_GEMINI_CLI_FLASH_TEMPLATE_MODEL,
id: "gemini-3.1-flash-lite-preview",
name: "gemini-3.1-flash-lite-preview",
reasoning: true,
});
});
it("keeps unknown-model errors for unrecognized google-gemini-cli model IDs", () => {
const result = resolveModel("google-gemini-cli", "gemini-4-unknown", "/tmp/agent");
expect(result.model).toBeUndefined();