fix(ai,coding-agent): update antigravity gemini 3.1 models and headers

fixes #1761
This commit is contained in:
Mario Zechner 2026-03-03 14:54:25 +01:00
parent be66fe65bc
commit 7bd4c45d81
6 changed files with 49 additions and 35 deletions

View file

@ -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,

View file

@ -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,

View file

@ -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<ThinkingLevel, "xhigh">;
function getGeminiCliThinkingLevel(effort: ClampedThinkingLevel, modelId: string): GoogleThinkingLevel {
if (modelId.includes("3-pro")) {
if (isGemini3ProModel(modelId)) {
switch (effort) {
case "minimal":
case "low":

View file

@ -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

View file

@ -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",

View file

@ -19,7 +19,7 @@ export const defaultModelPerProvider: Record<KnownProvider, string> = {
"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",