diff --git a/cli/src/cli/menus/providers.js b/cli/src/cli/menus/providers.js index 8baff269..d98e9d64 100644 --- a/cli/src/cli/menus/providers.js +++ b/cli/src/cli/menus/providers.js @@ -55,6 +55,7 @@ const PROVIDER_MODELS = { ag: [ { id: "gemini-3-flash-agent" }, { id: "gemini-3.5-flash-low" }, + { id: "gemini-3.5-flash-extra-low" }, { id: "gemini-pro-agent" }, { id: "gemini-3.1-pro-low" }, { id: "claude-sonnet-4-6" }, diff --git a/open-sse/config/providerModels.js b/open-sse/config/providerModels.js index 11e5ebe4..4d7c6747 100644 --- a/open-sse/config/providerModels.js +++ b/open-sse/config/providerModels.js @@ -82,9 +82,9 @@ export const PROVIDER_MODELS = { { id: "iflow-rome-30ba3b", name: "iFlow ROME" }, ], ag: [ // Antigravity - special case: models call different backends - { id: "gemini-3.5-flash-extra-low", name: "Gemini 3.5 Flash (Extra Low)" }, { id: "gemini-3-flash-agent", name: "Gemini 3.5 Flash (High)" }, { id: "gemini-3.5-flash-low", name: "Gemini 3.5 Flash (Medium)" }, + { id: "gemini-3.5-flash-extra-low", name: "Gemini 3.5 Flash (Low)" }, { id: "gemini-pro-agent", name: "Gemini 3.1 Pro (High)" }, { id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro (Low)" }, { id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Thinking)" }, diff --git a/open-sse/services/usage.js b/open-sse/services/usage.js index c0391b93..1441d2e3 100644 --- a/open-sse/services/usage.js +++ b/open-sse/services/usage.js @@ -399,6 +399,7 @@ async function getAntigravityUsage(accessToken, providerSpecificData, proxyOptio const importantModels = [ 'gemini-3-flash-agent', 'gemini-3.5-flash-low', + 'gemini-3.5-flash-extra-low', 'gemini-pro-agent', 'gemini-3.1-pro-low', 'claude-sonnet-4-6', diff --git a/src/mitm/config.js b/src/mitm/config.js index eb8aefc9..492874f7 100644 --- a/src/mitm/config.js +++ b/src/mitm/config.js @@ -32,6 +32,9 @@ const URL_PATTERNS = { const MODEL_SYNONYMS = { antigravity: { "gemini-default": "gemini-3.5-flash-low", + "gemini-3.5-flash-high": "gemini-3-flash-agent", + "gemini-3.5-flash-medium": "gemini-3.5-flash-low", + "gemini-3.5-flash-extra-low": "gemini-3.5-flash-extra-low", "gemini-3.1-pro-high": "gemini-pro-agent", "gemini-3-pro-high": "gemini-pro-agent", "gemini-3-pro-low": "gemini-3.1-pro-low", @@ -42,7 +45,8 @@ const MODEL_SYNONYMS = { // Order matters: more specific patterns first. Catches AG renamed variants (e.g. gemini-pro-agent) const MODEL_PATTERNS = { antigravity: [ - { match: /flash.*low|low.*flash|flash.*medium|medium.*flash/i, alias: "gemini-3.5-flash-low" }, + { match: /flash.*extra.*low|extra.*low.*flash|flash.*low|low.*flash/i, alias: "gemini-3.5-flash-extra-low" }, + { match: /flash.*medium|medium.*flash/i, alias: "gemini-3.5-flash-low" }, { match: /flash.*agent|agent.*flash|flash/i, alias: "gemini-3-flash-agent" }, { match: /pro.*low|low.*pro/i, alias: "gemini-3.1-pro-low" }, { match: /gemini.*pro|pro.*gemini/i, alias: "gemini-pro-agent" }, diff --git a/src/mitm/server.js b/src/mitm/server.js index 47b23268..bdb8c20d 100644 --- a/src/mitm/server.js +++ b/src/mitm/server.js @@ -109,8 +109,9 @@ function getMappedModel(tool, model) { try { const aliases = getMitmAlias(tool); if (!aliases) return null; - // Normalize via synonym map (e.g., gemini-default → gemini-3-flash) - const lookup = MODEL_SYNONYMS?.[tool]?.[model] || model; + // Normalize via synonym map (e.g., public AG names -> backend model ids) + const normalizedModel = String(model).replace(/^models\//, ""); + const lookup = MODEL_SYNONYMS?.[tool]?.[normalizedModel] || normalizedModel; if (aliases[lookup]) return aliases[lookup]; // Prefix match fallback const prefixKey = Object.keys(aliases).find(k => k && aliases[k] && (lookup.startsWith(k) || k.startsWith(lookup))); diff --git a/src/shared/constants/cliTools.js b/src/shared/constants/cliTools.js index 9f8b23bf..ee0f334f 100644 --- a/src/shared/constants/cliTools.js +++ b/src/shared/constants/cliTools.js @@ -8,7 +8,7 @@ export const MITM_TOOLS = { description: "Google Antigravity IDE with MITM", configType: "mitm", mitmDomain: "daily-cloudcode-pa.googleapis.com", - modelAliases: ["gemini-3.5-flash-low", "gemini-3-flash-agent", "gemini-3.5-flash-extra-low", "gemini-3.1-pro-low", "gemini-pro-agent", "claude-sonnet-4-6", "claude-opus-4-6-thinking", "gpt-oss-120b-medium", "gemini-3-flash"], + modelAliases: ["gemini-3-flash-agent", "gemini-3.5-flash-low", "gemini-3.5-flash-extra-low", "gemini-3.1-pro-low", "gemini-pro-agent", "claude-sonnet-4-6", "claude-opus-4-6-thinking", "gpt-oss-120b-medium", "gemini-3-flash"], defaultModels: [ { id: "gemini-3.5-flash-low", name: "Gemini 3.5 Flash (Medium) / Default", alias: "gemini-3.5-flash-low" }, { id: "gemini-3-flash-agent", name: "Gemini 3.5 Flash (High)", alias: "gemini-3-flash-agent" }, diff --git a/src/shared/constants/pricing.js b/src/shared/constants/pricing.js index fb87a407..e2b6c04e 100644 --- a/src/shared/constants/pricing.js +++ b/src/shared/constants/pricing.js @@ -63,6 +63,7 @@ export const MODEL_PRICING = { "gemini-pro-agent": { input: 4.00, output: 18.00, cached: 0.50, reasoning: 27.00, cache_creation: 4.00 }, "gemini-3-flash-agent": { input: 0.50, output: 3.00, cached: 0.03, reasoning: 4.50, cache_creation: 0.50 }, "gemini-3.5-flash-low": { input: 0.50, output: 3.00, cached: 0.03, reasoning: 4.50, cache_creation: 0.50 }, + "gemini-3.5-flash-extra-low": { input: 0.50, output: 3.00, cached: 0.03, reasoning: 4.50, cache_creation: 0.50 }, "gemini-3-flash": { input: 0.50, output: 3.00, cached: 0.03, reasoning: 4.50, cache_creation: 0.50 }, "gemini-2.5-pro": { input: 2.00, output: 12.00, cached: 0.25, reasoning: 18.00, cache_creation: 2.00 }, "gemini-2.5-flash": { input: 0.30, output: 2.50, cached: 0.03, reasoning: 3.75, cache_creation: 0.30 },