diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index ce6d38a7..3deda493 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -1093,6 +1093,18 @@ async function generateModels() { contextWindow: 200000, maxTokens: 64000, }, + { + id: "claude-opus-4-6-thinking", + name: "Claude Opus 4.6 Thinking (Antigravity)", + api: "google-gemini-cli", + provider: "google-antigravity", + baseUrl: ANTIGRAVITY_ENDPOINT, + reasoning: true, + input: ["text", "image"], + cost: { input: 5, output: 25, cacheRead: 0.5, cacheWrite: 6.25 }, + contextWindow: 200000, + maxTokens: 128000, + }, { id: "gpt-oss-120b-medium", name: "GPT-OSS 120B Medium (Antigravity)", @@ -1122,6 +1134,18 @@ async function generateModels() { contextWindow: 1000000, maxTokens: 64000, }, + { + id: "gemini-3.1-pro-preview", + name: "Gemini 3.1 Pro Preview (Vertex)", + api: "google-vertex", + provider: "google-vertex", + baseUrl: VERTEX_BASE_URL, + reasoning: true, + input: ["text", "image"], + cost: { input: 2, output: 12, cacheRead: 0.2, cacheWrite: 0 }, + contextWindow: 1048576, + maxTokens: 65536, + }, { id: "gemini-3-flash-preview", name: "Gemini 3 Flash Preview (Vertex)", diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 9804e042..f23f3605 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -362,6 +362,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"bedrock-converse-stream">, + "anthropic.claude-sonnet-4-6": { + id: "anthropic.claude-sonnet-4-6", + name: "Claude Sonnet 4.6", + api: "bedrock-converse-stream", + provider: "amazon-bedrock", + baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 3, + output: 15, + cacheRead: 0.3, + cacheWrite: 3.75, + }, + contextWindow: 200000, + maxTokens: 64000, + } satisfies Model<"bedrock-converse-stream">, "cohere.command-r-plus-v1:0": { id: "cohere.command-r-plus-v1:0", name: "Command R+", @@ -532,6 +549,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"bedrock-converse-stream">, + "eu.anthropic.claude-sonnet-4-6": { + id: "eu.anthropic.claude-sonnet-4-6", + name: "Claude Sonnet 4.6 (EU)", + api: "bedrock-converse-stream", + provider: "amazon-bedrock", + baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 3, + output: 15, + cacheRead: 0.3, + cacheWrite: 3.75, + }, + contextWindow: 200000, + maxTokens: 64000, + } satisfies Model<"bedrock-converse-stream">, "global.anthropic.claude-haiku-4-5-20251001-v1:0": { id: "global.anthropic.claude-haiku-4-5-20251001-v1:0", name: "Claude Haiku 4.5 (Global)", @@ -617,6 +651,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"bedrock-converse-stream">, + "global.anthropic.claude-sonnet-4-6": { + id: "global.anthropic.claude-sonnet-4-6", + name: "Claude Sonnet 4.6 (Global)", + api: "bedrock-converse-stream", + provider: "amazon-bedrock", + baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 3, + output: 15, + cacheRead: 0.3, + cacheWrite: 3.75, + }, + contextWindow: 200000, + maxTokens: 64000, + } satisfies Model<"bedrock-converse-stream">, "google.gemma-3-27b-it": { id: "google.gemma-3-27b-it", name: "Google Gemma 3 27B Instruct", @@ -1280,6 +1331,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"bedrock-converse-stream">, + "us.anthropic.claude-sonnet-4-6": { + id: "us.anthropic.claude-sonnet-4-6", + name: "Claude Sonnet 4.6 (US)", + api: "bedrock-converse-stream", + provider: "amazon-bedrock", + baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 3, + output: 15, + cacheRead: 0.3, + cacheWrite: 3.75, + }, + contextWindow: 200000, + maxTokens: 64000, + } satisfies Model<"bedrock-converse-stream">, "writer.palmyra-x4-v1:0": { id: "writer.palmyra-x4-v1:0", name: "Palmyra X4", @@ -2517,6 +2585,24 @@ export const MODELS = { contextWindow: 128000, maxTokens: 32000, } satisfies Model<"anthropic-messages">, + "claude-sonnet-4.6": { + id: "claude-sonnet-4.6", + name: "Claude Sonnet 4.6", + api: "anthropic-messages", + provider: "github-copilot", + baseUrl: "https://api.individual.githubcopilot.com", + headers: {"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"}, + reasoning: true, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 128000, + maxTokens: 32000, + } satisfies Model<"anthropic-messages">, "gemini-2.5-pro": { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", @@ -3066,6 +3152,40 @@ export const MODELS = { contextWindow: 1000000, maxTokens: 64000, } satisfies Model<"google-generative-ai">, + "gemini-3.1-pro-preview": { + id: "gemini-3.1-pro-preview", + name: "Gemini 3.1 Pro Preview", + api: "google-generative-ai", + provider: "google", + baseUrl: "https://generativelanguage.googleapis.com/v1beta", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.2, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 65536, + } satisfies Model<"google-generative-ai">, + "gemini-3.1-pro-preview-customtools": { + id: "gemini-3.1-pro-preview-customtools", + name: "Gemini 3.1 Pro Preview Custom Tools", + api: "google-generative-ai", + provider: "google", + baseUrl: "https://generativelanguage.googleapis.com/v1beta", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.2, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 65536, + } satisfies Model<"google-generative-ai">, "gemini-flash-latest": { id: "gemini-flash-latest", name: "Gemini Flash Latest", @@ -3153,6 +3273,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"google-gemini-cli">, + "claude-opus-4-6-thinking": { + id: "claude-opus-4-6-thinking", + name: "Claude Opus 4.6 Thinking (Antigravity)", + api: "google-gemini-cli", + provider: "google-antigravity", + baseUrl: "https://daily-cloudcode-pa.sandbox.googleapis.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 5, + output: 25, + cacheRead: 0.5, + cacheWrite: 6.25, + }, + contextWindow: 200000, + maxTokens: 128000, + } satisfies Model<"google-gemini-cli">, "claude-sonnet-4-5": { id: "claude-sonnet-4-5", name: "Claude Sonnet 4.5 (Antigravity)", @@ -3531,6 +3668,23 @@ export const MODELS = { contextWindow: 1000000, maxTokens: 64000, } satisfies Model<"google-vertex">, + "gemini-3.1-pro-preview": { + id: "gemini-3.1-pro-preview", + name: "Gemini 3.1 Pro Preview (Vertex)", + api: "google-vertex", + provider: "google-vertex", + baseUrl: "https://{location}-aiplatform.googleapis.com", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.2, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 65536, + } satisfies Model<"google-vertex">, }, "groq": { "deepseek-r1-distill-llama-70b": { @@ -5457,9 +5611,9 @@ export const MODELS = { "big-pickle": { id: "big-pickle", name: "Big Pickle", - api: "openai-completions", + api: "anthropic-messages", provider: "opencode", - baseUrl: "https://opencode.ai/zen/v1", + baseUrl: "https://opencode.ai/zen", reasoning: true, input: ["text"], cost: { @@ -5470,7 +5624,7 @@ export const MODELS = { }, contextWindow: 200000, maxTokens: 128000, - } satisfies Model<"openai-completions">, + } satisfies Model<"anthropic-messages">, "claude-3-5-haiku": { id: "claude-3-5-haiku", name: "Claude Haiku 3.5", @@ -5590,6 +5744,23 @@ export const MODELS = { contextWindow: 200000, maxTokens: 64000, } satisfies Model<"anthropic-messages">, + "claude-sonnet-4-6": { + id: "claude-sonnet-4-6", + name: "Claude Sonnet 4.6", + api: "anthropic-messages", + provider: "opencode", + baseUrl: "https://opencode.ai/zen", + reasoning: true, + input: ["text", "image"], + cost: { + input: 3, + output: 15, + cacheRead: 0.3, + cacheWrite: 3.75, + }, + contextWindow: 1000000, + maxTokens: 64000, + } satisfies Model<"anthropic-messages">, "gemini-3-flash": { id: "gemini-3-flash", name: "Gemini 3 Flash", @@ -5624,6 +5795,23 @@ export const MODELS = { contextWindow: 1048576, maxTokens: 65536, } satisfies Model<"google-generative-ai">, + "gemini-3.1-pro": { + id: "gemini-3.1-pro", + name: "Gemini 3.1 Pro Preview", + api: "google-generative-ai", + provider: "opencode", + baseUrl: "https://opencode.ai/zen/v1", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.2, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 65536, + } satisfies Model<"google-generative-ai">, "glm-4.6": { id: "glm-4.6", name: "GLM-4.6", @@ -5896,23 +6084,6 @@ export const MODELS = { contextWindow: 262144, maxTokens: 262144, } satisfies Model<"openai-completions">, - "kimi-k2.5-free": { - id: "kimi-k2.5-free", - name: "Kimi K2.5 Free", - api: "openai-completions", - provider: "opencode", - baseUrl: "https://opencode.ai/zen/v1", - reasoning: true, - input: ["text", "image"], - cost: { - input: 0, - output: 0, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 262144, - maxTokens: 262144, - } satisfies Model<"openai-completions">, "minimax-m2.1": { id: "minimax-m2.1", name: "MiniMax M2.1", @@ -5950,9 +6121,9 @@ export const MODELS = { "minimax-m2.5-free": { id: "minimax-m2.5-free", name: "MiniMax M2.5 Free", - api: "openai-completions", + api: "anthropic-messages", provider: "opencode", - baseUrl: "https://opencode.ai/zen/v1", + baseUrl: "https://opencode.ai/zen", reasoning: true, input: ["text"], cost: { @@ -5963,6 +6134,23 @@ export const MODELS = { }, contextWindow: 204800, maxTokens: 131072, + } satisfies Model<"anthropic-messages">, + "trinity-large-preview-free": { + id: "trinity-large-preview-free", + name: "Trinity Large Preview", + api: "openai-completions", + provider: "opencode", + baseUrl: "https://opencode.ai/zen/v1", + reasoning: false, + input: ["text"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 131072, + maxTokens: 131072, } satisfies Model<"openai-completions">, }, "openrouter": { @@ -6147,8 +6335,8 @@ export const MODELS = { cost: { input: 6, output: 30, - cacheRead: 0, - cacheWrite: 0, + cacheRead: 0.6, + cacheWrite: 7.5, }, contextWindow: 200000, maxTokens: 8192, @@ -6519,9 +6707,9 @@ export const MODELS = { reasoning: false, input: ["text"], cost: { - input: 0.3, - output: 1.2, - cacheRead: 0.15, + input: 0.32, + output: 0.8899999999999999, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 163840, @@ -6748,23 +6936,6 @@ export const MODELS = { contextWindow: 1048576, maxTokens: 65535, } satisfies Model<"openai-completions">, - "google/gemini-2.5-flash-preview-09-2025": { - id: "google/gemini-2.5-flash-preview-09-2025", - name: "Google: Gemini 2.5 Flash Preview 09-2025", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text", "image"], - cost: { - input: 0.3, - output: 2.5, - cacheRead: 0.03, - cacheWrite: 0.08333333333333334, - }, - contextWindow: 1048576, - maxTokens: 65536, - } satisfies Model<"openai-completions">, "google/gemini-2.5-pro": { id: "google/gemini-2.5-pro", name: "Google: Gemini 2.5 Pro", @@ -6850,6 +7021,23 @@ export const MODELS = { contextWindow: 1048576, maxTokens: 65536, } satisfies Model<"openai-completions">, + "google/gemini-3.1-pro-preview": { + id: "google/gemini-3.1-pro-preview", + name: "Google: Gemini 3.1 Pro Preview", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.19999999999999998, + cacheWrite: 0.375, + }, + contextWindow: 1048576, + maxTokens: 65536, + } satisfies Model<"openai-completions">, "google/gemma-3-27b-it": { id: "google/gemma-3-27b-it", name: "Google: Gemma 3 27B", @@ -7165,13 +7353,13 @@ export const MODELS = { reasoning: false, input: ["text"], cost: { - input: 0.049999999999999996, - output: 0.22, - cacheRead: 0.024999999999999998, + input: 0.39999999999999997, + output: 2, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 262144, - maxTokens: 65536, + maxTokens: 4096, } satisfies Model<"openai-completions">, "mistralai/devstral-medium": { id: "mistralai/devstral-medium", @@ -7411,23 +7599,6 @@ export const MODELS = { contextWindow: 32768, maxTokens: 16384, } satisfies Model<"openai-completions">, - "mistralai/mistral-small-3.1-24b-instruct": { - id: "mistralai/mistral-small-3.1-24b-instruct", - name: "Mistral: Mistral Small 3.1 24B", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: false, - input: ["text", "image"], - cost: { - input: 0.03, - output: 0.11, - cacheRead: 0.015, - cacheWrite: 0, - }, - contextWindow: 131072, - maxTokens: 131072, - } satisfies Model<"openai-completions">, "mistralai/mistral-small-3.1-24b-instruct:free": { id: "mistralai/mistral-small-3.1-24b-instruct:free", name: "Mistral: Mistral Small 3.1 24B (free)", @@ -7607,13 +7778,13 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.39999999999999997, - output: 1.75, - cacheRead: 0.19999999999999998, + input: 0.47, + output: 2, + cacheRead: 0.14100000000000001, cacheWrite: 0, }, - contextWindow: 262144, - maxTokens: 65535, + contextWindow: 131072, + maxTokens: 4096, } satisfies Model<"openai-completions">, "moonshotai/kimi-k2.5": { id: "moonshotai/kimi-k2.5", @@ -7649,40 +7820,6 @@ export const MODELS = { contextWindow: 131072, maxTokens: 163840, } satisfies Model<"openai-completions">, - "nousresearch/deephermes-3-mistral-24b-preview": { - id: "nousresearch/deephermes-3-mistral-24b-preview", - name: "Nous: DeepHermes 3 Mistral 24B Preview", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 0.02, - output: 0.09999999999999999, - cacheRead: 0.01, - cacheWrite: 0, - }, - contextWindow: 32768, - maxTokens: 32768, - } satisfies Model<"openai-completions">, - "nousresearch/hermes-4-70b": { - id: "nousresearch/hermes-4-70b", - name: "Nous: Hermes 4 70B", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 0.11, - output: 0.38, - cacheRead: 0.055, - cacheWrite: 0, - }, - contextWindow: 131072, - maxTokens: 131072, - } satisfies Model<"openai-completions">, "nvidia/llama-3.1-nemotron-70b-instruct": { id: "nvidia/llama-3.1-nemotron-70b-instruct", name: "NVIDIA: Llama 3.1 Nemotron 70B Instruct", @@ -8865,9 +9002,9 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.049999999999999996, - output: 0.22, - cacheRead: 0.024999999999999998, + input: 0.06, + output: 0.24, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 40960, @@ -8882,13 +9019,13 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.3, - output: 1.2, - cacheRead: 0.15, + input: 0.45499999999999996, + output: 1.8199999999999998, + cacheRead: 0, cacheWrite: 0, }, - contextWindow: 40960, - maxTokens: 40960, + contextWindow: 131072, + maxTokens: 8192, } satisfies Model<"openai-completions">, "qwen/qwen3-235b-a22b-2507": { id: "qwen/qwen3-235b-a22b-2507", @@ -8933,9 +9070,9 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.06, - output: 0.22, - cacheRead: 0.03, + input: 0.08, + output: 0.28, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 40960, @@ -8950,9 +9087,9 @@ export const MODELS = { reasoning: false, input: ["text"], cost: { - input: 0.08, - output: 0.33, - cacheRead: 0.04, + input: 0.09, + output: 0.3, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 262144, @@ -8992,23 +9129,6 @@ export const MODELS = { contextWindow: 40960, maxTokens: 40960, } satisfies Model<"openai-completions">, - "qwen/qwen3-4b": { - id: "qwen/qwen3-4b", - name: "Qwen: Qwen3 4B", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 0.0715, - output: 0.273, - cacheRead: 0, - cacheWrite: 0, - }, - contextWindow: 131072, - maxTokens: 8192, - } satisfies Model<"openai-completions">, "qwen/qwen3-4b:free": { id: "qwen/qwen3-4b:free", name: "Qwen: Qwen3 4B (free)", @@ -9553,23 +9673,6 @@ export const MODELS = { contextWindow: 163840, maxTokens: 163840, } satisfies Model<"openai-completions">, - "tngtech/tng-r1t-chimera": { - id: "tngtech/tng-r1t-chimera", - name: "TNG: R1T Chimera", - api: "openai-completions", - provider: "openrouter", - baseUrl: "https://openrouter.ai/api/v1", - reasoning: true, - input: ["text"], - cost: { - input: 0.25, - output: 0.85, - cacheRead: 0.125, - cacheWrite: 0, - }, - contextWindow: 163840, - maxTokens: 65536, - } satisfies Model<"openai-completions">, "upstage/solar-pro-3:free": { id: "upstage/solar-pro-3:free", name: "Upstage: Solar Pro 3 (free)", @@ -9766,13 +9869,13 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.35, - output: 1.55, - cacheRead: 0.175, + input: 0.55, + output: 2, + cacheRead: 0, cacheWrite: 0, }, - contextWindow: 131072, - maxTokens: 65536, + contextWindow: 131000, + maxTokens: 131000, } satisfies Model<"openai-completions">, "z-ai/glm-4.5-air": { id: "z-ai/glm-4.5-air", @@ -9834,13 +9937,13 @@ export const MODELS = { reasoning: true, input: ["text"], cost: { - input: 0.33999999999999997, - output: 1.7, - cacheRead: 0.16999999999999998, + input: 0.35, + output: 1.71, + cacheRead: 0, cacheWrite: 0, }, contextWindow: 202752, - maxTokens: 65536, + maxTokens: 131072, } satisfies Model<"openai-completions">, "z-ai/glm-4.6:exacto": { id: "z-ai/glm-4.6:exacto", @@ -10369,7 +10472,7 @@ export const MODELS = { cacheWrite: 3.75, }, contextWindow: 1000000, - maxTokens: 64000, + maxTokens: 128000, } satisfies Model<"anthropic-messages">, "arcee-ai/trinity-large-preview": { id: "arcee-ai/trinity-large-preview", @@ -10626,6 +10729,23 @@ export const MODELS = { contextWindow: 1000000, maxTokens: 64000, } satisfies Model<"anthropic-messages">, + "google/gemini-3.1-pro-preview": { + id: "google/gemini-3.1-pro-preview", + name: "Gemini 3.1 Pro Preview", + api: "anthropic-messages", + provider: "vercel-ai-gateway", + baseUrl: "https://ai-gateway.vercel.sh", + reasoning: true, + input: ["text", "image"], + cost: { + input: 2, + output: 12, + cacheRead: 0.19999999999999998, + cacheWrite: 0, + }, + contextWindow: 1000000, + maxTokens: 64000, + } satisfies Model<"anthropic-messages">, "inception/mercury-coder-small": { id: "inception/mercury-coder-small", name: "Mercury Coder Small Beta", diff --git a/packages/ai/test/total-tokens.test.ts b/packages/ai/test/total-tokens.test.ts index 6b1ff237..1d9d0da4 100644 --- a/packages/ai/test/total-tokens.test.ts +++ b/packages/ai/test/total-tokens.test.ts @@ -480,10 +480,10 @@ describe("totalTokens field", () => { ); it( - "mistralai/mistral-small-3.1-24b-instruct - should return totalTokens equal to sum of components", + "mistralai/mistral-small-3.2-24b-instruct - should return totalTokens equal to sum of components", { retry: 3, timeout: 60000 }, async () => { - const llm = getModel("openrouter", "mistralai/mistral-small-3.1-24b-instruct"); + const llm = getModel("openrouter", "mistralai/mistral-small-3.2-24b-instruct"); console.log(`\nOpenRouter / ${llm.id}:`); const { first, second } = await testTotalTokensWithCache(llm, { apiKey: process.env.OPENROUTER_API_KEY }); diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 0c24d042..855d2b37 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,11 @@ ## [Unreleased] +### Changed + +- Updated bundled model catalog to add Gemini 3.1 Pro Preview for Google Vertex and keep Google Gemini CLI and Antigravity Gemini catalogs aligned with currently exposed models. +- Added Claude Opus 4.6 Thinking to the Google Antigravity model catalog. + ## [0.53.0] - 2026-02-17 ### Breaking Changes