From 7bd4c45d819e22864265f4622fe1c0b43debc198 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 3 Mar 2026 14:54:25 +0100 Subject: [PATCH] fix(ai,coding-agent): update antigravity gemini 3.1 models and headers fixes #1761 --- packages/ai/scripts/generate-models.ts | 8 ++-- packages/ai/src/models.generated.ts | 44 +++++++++---------- .../ai/src/providers/google-gemini-cli.ts | 18 ++++++-- packages/ai/test/stream.test.ts | 8 ++-- .../extensions/antigravity-image-gen.ts | 4 +- .../coding-agent/src/core/model-resolver.ts | 2 +- 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index b0b201f5..471bf73e 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -1032,8 +1032,8 @@ async function generateModels() { const ANTIGRAVITY_ENDPOINT = "https://daily-cloudcode-pa.sandbox.googleapis.com"; const antigravityModels: Model<"google-gemini-cli">[] = [ { - id: "gemini-3-pro-high", - name: "Gemini 3 Pro High (Antigravity)", + id: "gemini-3.1-pro-high", + name: "Gemini 3.1 Pro High (Antigravity)", api: "google-gemini-cli", provider: "google-antigravity", baseUrl: ANTIGRAVITY_ENDPOINT, @@ -1045,8 +1045,8 @@ async function generateModels() { maxTokens: 65535, }, { - id: "gemini-3-pro-low", - name: "Gemini 3 Pro Low (Antigravity)", + id: "gemini-3.1-pro-low", + name: "Gemini 3.1 Pro Low (Antigravity)", api: "google-gemini-cli", provider: "google-antigravity", baseUrl: ANTIGRAVITY_ENDPOINT, diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 7890d6a4..63be723b 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -3360,9 +3360,9 @@ export const MODELS = { contextWindow: 1048576, maxTokens: 65535, } satisfies Model<"google-gemini-cli">, - "gemini-3-pro-high": { - id: "gemini-3-pro-high", - name: "Gemini 3 Pro High (Antigravity)", + "gemini-3.1-pro-high": { + id: "gemini-3.1-pro-high", + name: "Gemini 3.1 Pro High (Antigravity)", api: "google-gemini-cli", provider: "google-antigravity", baseUrl: "https://daily-cloudcode-pa.sandbox.googleapis.com", @@ -3377,9 +3377,9 @@ export const MODELS = { contextWindow: 1048576, maxTokens: 65535, } satisfies Model<"google-gemini-cli">, - "gemini-3-pro-low": { - id: "gemini-3-pro-low", - name: "Gemini 3 Pro Low (Antigravity)", + "gemini-3.1-pro-low": { + id: "gemini-3.1-pro-low", + name: "Gemini 3.1 Pro Low (Antigravity)", api: "google-gemini-cli", provider: "google-antigravity", baseUrl: "https://daily-cloudcode-pa.sandbox.googleapis.com", @@ -9548,9 +9548,9 @@ export const MODELS = { reasoning: true, input: ["text", "image"], cost: { - input: 0.39999999999999997, - output: 3.1999999999999997, - cacheRead: 0, + input: 0.3, + output: 2.4, + cacheRead: 0.3, cacheWrite: 0, }, contextWindow: 262144, @@ -9565,9 +9565,9 @@ export const MODELS = { reasoning: true, input: ["text", "image"], cost: { - input: 0.3, - output: 2.4, - cacheRead: 0, + input: 0.27, + output: 2.16, + cacheRead: 0.27, cacheWrite: 0, }, contextWindow: 262144, @@ -9582,13 +9582,13 @@ export const MODELS = { reasoning: true, input: ["text", "image"], cost: { - input: 0.25, - output: 1, - cacheRead: 0, + input: 0.22499999999999998, + output: 1.7999999999999998, + cacheRead: 0.22499999999999998, cacheWrite: 0, }, contextWindow: 262144, - maxTokens: 262144, + maxTokens: 65536, } satisfies Model<"openai-completions">, "qwen/qwen3.5-397b-a17b": { id: "qwen/qwen3.5-397b-a17b", @@ -9794,18 +9794,18 @@ export const MODELS = { contextWindow: 163840, maxTokens: 163840, } satisfies Model<"openai-completions">, - "upstage/solar-pro-3:free": { - id: "upstage/solar-pro-3:free", - name: "Upstage: Solar Pro 3 (free)", + "upstage/solar-pro-3": { + id: "upstage/solar-pro-3", + name: "Upstage: Solar Pro 3", api: "openai-completions", provider: "openrouter", baseUrl: "https://openrouter.ai/api/v1", reasoning: true, input: ["text"], cost: { - input: 0, - output: 0, - cacheRead: 0, + input: 0.15, + output: 0.6, + cacheRead: 0.015, cacheWrite: 0, }, contextWindow: 128000, diff --git a/packages/ai/src/providers/google-gemini-cli.ts b/packages/ai/src/providers/google-gemini-cli.ts index 7a877ddb..411daac8 100644 --- a/packages/ai/src/providers/google-gemini-cli.ts +++ b/packages/ai/src/providers/google-gemini-cli.ts @@ -72,7 +72,7 @@ const GEMINI_CLI_HEADERS = { }; // Headers for Antigravity (sandbox endpoint) - requires specific User-Agent -const DEFAULT_ANTIGRAVITY_VERSION = "1.15.8"; +const DEFAULT_ANTIGRAVITY_VERSION = "1.18.3"; function getAntigravityHeaders() { const version = process.env.PI_AI_ANTIGRAVITY_VERSION || DEFAULT_ANTIGRAVITY_VERSION; @@ -209,6 +209,18 @@ function isClaudeThinkingModel(modelId: string): boolean { return normalized.includes("claude") && normalized.includes("thinking"); } +function isGemini3ProModel(modelId: string): boolean { + return /gemini-3(?:\.1)?-pro/.test(modelId.toLowerCase()); +} + +function isGemini3FlashModel(modelId: string): boolean { + return /gemini-3(?:\.1)?-flash/.test(modelId.toLowerCase()); +} + +function isGemini3Model(modelId: string): boolean { + return isGemini3ProModel(modelId) || isGemini3FlashModel(modelId); +} + /** * Check if an error is retryable (rate limit, server error, network error, etc.) */ @@ -794,7 +806,7 @@ export const streamSimpleGoogleGeminiCli: StreamFunction<"google-gemini-cli", Si } const effort = clampReasoning(options.reasoning)!; - if (model.id.includes("3-pro") || model.id.includes("3-flash")) { + if (isGemini3Model(model.id)) { return streamGoogleGeminiCli(model, context, { ...base, thinking: { @@ -917,7 +929,7 @@ export function buildRequest( type ClampedThinkingLevel = Exclude; function getGeminiCliThinkingLevel(effort: ClampedThinkingLevel, modelId: string): GoogleThinkingLevel { - if (modelId.includes("3-pro")) { + if (isGemini3ProModel(modelId)) { switch (effort) { case "minimal": case "low": diff --git a/packages/ai/test/stream.test.ts b/packages/ai/test/stream.test.ts index 1582ca7d..eea71ba4 100644 --- a/packages/ai/test/stream.test.ts +++ b/packages/ai/test/stream.test.ts @@ -1032,8 +1032,8 @@ describe("Generate E2E Tests", () => { }); }); - describe("Google Antigravity Provider (gemini-3-pro-high)", () => { - const llm = getModel("google-antigravity", "gemini-3-pro-high"); + describe("Google Antigravity Provider (gemini-3.1-pro-high)", () => { + const llm = getModel("google-antigravity", "gemini-3.1-pro-high"); it.skipIf(!antigravityToken)("should complete basic text generation", { retry: 3 }, async () => { await basicTextGeneration(llm, { apiKey: antigravityToken }); @@ -1064,8 +1064,8 @@ describe("Generate E2E Tests", () => { }); }); - describe("Google Antigravity Provider (gemini-3-pro-high with thinkingLevel)", () => { - const llm = getModel("google-antigravity", "gemini-3-pro-high"); + describe("Google Antigravity Provider (gemini-3.1-pro-high with thinkingLevel)", () => { + const llm = getModel("google-antigravity", "gemini-3.1-pro-high"); it.skipIf(!antigravityToken)("should handle thinking with thinkingLevel HIGH", { retry: 3 }, async () => { // gemini-3-pro only supports LOW/HIGH diff --git a/packages/coding-agent/examples/extensions/antigravity-image-gen.ts b/packages/coding-agent/examples/extensions/antigravity-image-gen.ts index 9ba08b20..9eb47c68 100644 --- a/packages/coding-agent/examples/extensions/antigravity-image-gen.ts +++ b/packages/coding-agent/examples/extensions/antigravity-image-gen.ts @@ -49,8 +49,10 @@ type SaveMode = (typeof SAVE_MODES)[number]; const ANTIGRAVITY_ENDPOINT = "https://daily-cloudcode-pa.sandbox.googleapis.com"; +const DEFAULT_ANTIGRAVITY_VERSION = "1.18.3"; + const ANTIGRAVITY_HEADERS = { - "User-Agent": "antigravity/1.15.8 darwin/arm64", + "User-Agent": `antigravity/${process.env.PI_AI_ANTIGRAVITY_VERSION || DEFAULT_ANTIGRAVITY_VERSION} darwin/arm64`, "X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1", "Client-Metadata": JSON.stringify({ ideType: "IDE_UNSPECIFIED", diff --git a/packages/coding-agent/src/core/model-resolver.ts b/packages/coding-agent/src/core/model-resolver.ts index 6c103edc..9307297d 100644 --- a/packages/coding-agent/src/core/model-resolver.ts +++ b/packages/coding-agent/src/core/model-resolver.ts @@ -19,7 +19,7 @@ export const defaultModelPerProvider: Record = { "openai-codex": "gpt-5.3-codex", google: "gemini-2.5-pro", "google-gemini-cli": "gemini-2.5-pro", - "google-antigravity": "gemini-3-pro-high", + "google-antigravity": "gemini-3.1-pro-high", "google-vertex": "gemini-3-pro-preview", "github-copilot": "gpt-4o", openrouter: "openai/gpt-5.1-codex",