diff --git a/packages/catalog/CHANGELOG.md b/packages/catalog/CHANGELOG.md index 50018ad2e..ae456c4e2 100644 --- a/packages/catalog/CHANGELOG.md +++ b/packages/catalog/CHANGELOG.md @@ -2,6 +2,42 @@ ## [Unreleased] +### Added + +- Added MiniMax M3 model with reasoning and multi-modal support +- Added Gemini 3.5 Flash Lite model across multiple providers +- Added Gemini 3.6 Flash model across multiple providers with thinking support +- Added Hy3 model with reasoning and effort-based thinking +- Added Doubao-Seed-Character model with image input support +- Added LongCat 2.0 model across multiple providers +- Added Laguna S 2.1 model (free and paid tiers) across multiple providers +- Added Qwen 3.6 35B A3B model with thinking support +- Added SWE-1.6 Slow model to devin agent catalog +- Added XiaomiMiMo/MiMo-V2.5 model with reasoning support + +### Changed + +- Changed Grok 4.5 API type from "openai-completions" to "openai-responses" +- Changed thinking format for "o3-mini" from "zai" to "kimi" +- Renamed "Auto Router (Beta)" to "OpenRouter Auto Router (Beta)" +- Renamed "Body Builder (beta)" to "OpenRouter Body Builder (beta)" +- Renamed "Pareto Code Router" to "OpenRouter Pareto Code Router" +- Updated numerous model context window sizes, costs, and token limits +- Updated "o3-mini" model to support thinking capabilities + +### Removed + +- Removed Claude Fable 5 family of models from devin catalog +- Removed Claude Opus 4.6 and 4.7 model families from devin catalog +- Removed Claude Sonnet 4.6 and 5 model families from devin catalog +- Removed DeepSeek V4 Pro from devin catalog +- Removed Gemini 3.1 Pro and Gemini 3.5 Flash families from devin catalog +- Removed GLM-5.2 and GLM-5.2 1M from devin catalog +- Removed GPT-5 through GPT-5.3 Codex variants from openai-codex catalog +- Removed GPT-5.4 nano from openai-codex catalog +- Removed SWE-1.6 family models from devin catalog +- Removed Nemotron 3 Ultra from devin catalog + ## [17.0.6] - 2026-07-20 ### Added diff --git a/packages/catalog/src/models.json b/packages/catalog/src/models.json index 81bdfa2a0..7ff298032 100644 --- a/packages/catalog/src/models.json +++ b/packages/catalog/src/models.json @@ -12886,7 +12886,7 @@ "cacheRead": 0.16999999999999998, "cacheWrite": 0 }, - "contextWindow": 131000, + "contextWindow": 1048576, "maxTokens": 32768 }, "zai-org/GLM-4.7": { @@ -12989,7 +12989,7 @@ "cost": { "input": 1.4, "output": 4.4, - "cacheRead": 0.26, + "cacheRead": 0.14, "cacheWrite": 0 }, "contextWindow": 256000, @@ -14651,6 +14651,36 @@ "requiresEffort": true } }, + "MiniMaxAI/MiniMax-M3": { + "id": "MiniMaxAI/MiniMax-M3", + "name": "MiniMax M3", + "api": "openai-completions", + "provider": "coreweave", + "baseUrl": "https://api.inference.wandb.ai/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.29, + "output": 1.2, + "cacheRead": 0.06, + "cacheWrite": 0 + }, + "contextWindow": 262144, + "maxTokens": 262144, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "moonshotai/Kimi-K2.5": { "id": "moonshotai/Kimi-K2.5", "name": "Kimi K2.5", @@ -16218,114 +16248,9 @@ } }, "devin": { - "claude-5-fable-high": { - "id": "claude-5-fable-high", - "name": "Claude Fable 5 High", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-5-fable-low": { - "id": "claude-5-fable-low", - "name": "Claude Fable 5 Low", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-5-fable-max": { - "id": "claude-5-fable-max", - "name": "Claude Fable 5 Max", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-5-fable-medium": { - "id": "claude-5-fable-medium", - "name": "Claude Fable 5 Medium", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-5-fable-xhigh": { - "id": "claude-5-fable-xhigh", - "name": "Claude Fable 5 XHigh", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-opus-4-6": { - "id": "claude-opus-4-6", - "name": "Claude Opus 4.6", + "swe-1-6-slow": { + "id": "swe-1-6-slow", + "name": "SWE-1.6 Slow", "api": "devin-agent", "provider": "devin", "baseUrl": "https://server.codeium.com", @@ -16342,1445 +16267,6 @@ "cacheWrite": 0 }, "contextWindow": 200000, - "maxTokens": 64000, - "thinking": { - "mode": "budget", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "effortRouting": { - "off": "claude-opus-4-6", - "minimal": "claude-opus-4-6-thinking", - "low": "claude-opus-4-6-thinking", - "medium": "claude-opus-4-6-thinking", - "high": "claude-opus-4-6-thinking" - } - } - }, - "claude-opus-4-6-1m": { - "id": "claude-opus-4-6-1m", - "name": "Claude Opus 4.6 1M", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "budget", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "effortRouting": { - "off": "claude-opus-4-6-1m", - "minimal": "claude-opus-4-6-thinking-1m", - "low": "claude-opus-4-6-thinking-1m", - "medium": "claude-opus-4-6-thinking-1m", - "high": "claude-opus-4-6-thinking-1m" - } - } - }, - "claude-opus-4-7": { - "id": "claude-opus-4-7", - "name": "Claude Opus 4.7", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "requiresEffort": true, - "effortRouting": { - "low": "claude-opus-4-7-low", - "medium": "claude-opus-4-7-medium", - "high": "claude-opus-4-7-high", - "xhigh": "claude-opus-4-7-xhigh", - "max": "claude-opus-4-7-max" - } - }, - "requestModelId": "claude-opus-4-7-low" - }, - "claude-opus-4-7-fast": { - "id": "claude-opus-4-7-fast", - "name": "Claude Opus 4.7 Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "requiresEffort": true, - "effortRouting": { - "low": "claude-opus-4-7-low-fast", - "medium": "claude-opus-4-7-medium-fast", - "high": "claude-opus-4-7-high-fast", - "xhigh": "claude-opus-4-7-xhigh-fast", - "max": "claude-opus-4-7-max-fast" - } - }, - "requestModelId": "claude-opus-4-7-low-fast" - }, - "claude-opus-4-8": { - "id": "claude-opus-4-8", - "name": "Claude Opus 4.8", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "requiresEffort": true, - "effortRouting": { - "low": "claude-opus-4-8-low", - "medium": "claude-opus-4-8-medium", - "high": "claude-opus-4-8-high", - "xhigh": "claude-opus-4-8-xhigh", - "max": "claude-opus-4-8-max" - } - }, - "requestModelId": "claude-opus-4-8-low" - }, - "claude-opus-4-8-fast": { - "id": "claude-opus-4-8-fast", - "name": "Claude Opus 4.8 Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "requiresEffort": true, - "effortRouting": { - "low": "claude-opus-4-8-low-fast", - "medium": "claude-opus-4-8-medium-fast", - "high": "claude-opus-4-8-high-fast", - "xhigh": "claude-opus-4-8-xhigh-fast", - "max": "claude-opus-4-8-max-fast" - } - }, - "requestModelId": "claude-opus-4-8-low-fast" - }, - "claude-sonnet-4-6": { - "id": "claude-sonnet-4-6", - "name": "Claude Sonnet 4.6", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000, - "thinking": { - "mode": "budget", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "effortRouting": { - "off": "claude-sonnet-4-6", - "minimal": "claude-sonnet-4-6-thinking", - "low": "claude-sonnet-4-6-thinking", - "medium": "claude-sonnet-4-6-thinking", - "high": "claude-sonnet-4-6-thinking" - } - } - }, - "claude-sonnet-4-6-1m": { - "id": "claude-sonnet-4-6-1m", - "name": "Claude Sonnet 4.6 1M", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "budget", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "effortRouting": { - "off": "claude-sonnet-4-6-1m", - "minimal": "claude-sonnet-4-6-thinking-1m", - "low": "claude-sonnet-4-6-thinking-1m", - "medium": "claude-sonnet-4-6-thinking-1m", - "high": "claude-sonnet-4-6-thinking-1m" - } - } - }, - "claude-sonnet-5-high": { - "id": "claude-sonnet-5-high", - "name": "Claude Sonnet 5 High", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-sonnet-5-low": { - "id": "claude-sonnet-5-low", - "name": "Claude Sonnet 5 Low", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-sonnet-5-max": { - "id": "claude-sonnet-5-max", - "name": "Claude Sonnet 5 Max", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-sonnet-5-medium": { - "id": "claude-sonnet-5-medium", - "name": "Claude Sonnet 5 Medium", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "claude-sonnet-5-xhigh": { - "id": "claude-sonnet-5-xhigh", - "name": "Claude Sonnet 5 XHigh", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000 - }, - "deepseek-v4": { - "id": "deepseek-v4", - "name": "DeepSeek V4 Pro", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1048576, - "maxTokens": 64000 - }, - "gemini-3-1-pro": { - "id": "gemini-3-1-pro", - "name": "Gemini 3.1 Pro", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1048576, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "high" - ], - "requiresEffort": true, - "effortRouting": { - "low": "gemini-3-1-pro-low", - "high": "gemini-3-1-pro-high" - } - }, - "requestModelId": "gemini-3-1-pro-low" - }, - "gemini-3-5-flash": { - "id": "gemini-3-5-flash", - "name": "Gemini 3.5 Flash", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1048576, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "requiresEffort": true, - "effortRouting": { - "minimal": "gemini-3-5-flash-minimal", - "low": "gemini-3-5-flash-low", - "medium": "gemini-3-5-flash-medium", - "high": "gemini-3-5-flash-high" - } - }, - "requestModelId": "gemini-3-5-flash-minimal" - }, - "gemini-3-flash": { - "id": "gemini-3-flash", - "name": "Gemini 3 Flash", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1048576, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ], - "requiresEffort": true, - "effortRouting": { - "minimal": "MODEL_GOOGLE_GEMINI_3_0_FLASH_MINIMAL", - "low": "MODEL_GOOGLE_GEMINI_3_0_FLASH_LOW", - "medium": "MODEL_GOOGLE_GEMINI_3_0_FLASH_MEDIUM", - "high": "MODEL_GOOGLE_GEMINI_3_0_FLASH_HIGH" - } - }, - "requestModelId": "MODEL_GOOGLE_GEMINI_3_0_FLASH_MINIMAL" - }, - "glm-5-2": { - "id": "glm-5-2", - "name": "GLM-5.2", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "high", - "xhigh" - ], - "requiresEffort": true, - "effortRouting": { - "high": "glm-5-2", - "xhigh": "glm-5-2" - } - } - }, - "glm-5-2-1m": { - "id": "glm-5-2-1m", - "name": "GLM-5.2 1M", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "high", - "xhigh" - ], - "effortRouting": { - "off": "glm-5-2-none-1m", - "high": "glm-5-2-1m", - "xhigh": "glm-5-2-max-1m" - } - }, - "requestModelId": "glm-5-2-none-1m" - }, - "gpt-5-2": { - "id": "gpt-5-2", - "name": "GPT-5.2", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 384000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "MODEL_GPT_5_2_NONE", - "low": "MODEL_GPT_5_2_LOW", - "medium": "MODEL_GPT_5_2_MEDIUM", - "high": "MODEL_GPT_5_2_HIGH", - "xhigh": "MODEL_GPT_5_2_XHIGH" - } - }, - "requestModelId": "MODEL_GPT_5_2_NONE" - }, - "gpt-5-3-codex": { - "id": "gpt-5-3-codex", - "name": "GPT-5.3 Codex", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 400000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "requiresEffort": true, - "effortRouting": { - "low": "gpt-5-3-codex-low", - "medium": "gpt-5-3-codex-medium", - "high": "gpt-5-3-codex-high", - "xhigh": "gpt-5-3-codex-xhigh" - } - }, - "requestModelId": "gpt-5-3-codex-low" - }, - "gpt-5-3-codex-fast": { - "id": "gpt-5-3-codex-fast", - "name": "GPT-5.3 Codex Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 400000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "requiresEffort": true, - "effortRouting": { - "low": "gpt-5-3-codex-low-priority", - "medium": "gpt-5-3-codex-medium-priority", - "high": "gpt-5-3-codex-high-priority", - "xhigh": "gpt-5-3-codex-xhigh-priority" - } - }, - "requestModelId": "gpt-5-3-codex-low-priority" - }, - "gpt-5-4": { - "id": "gpt-5-4", - "name": "GPT-5.4", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-4-none", - "low": "gpt-5-4-low", - "medium": "gpt-5-4-medium", - "high": "gpt-5-4-high", - "xhigh": "gpt-5-4-xhigh" - } - }, - "requestModelId": "gpt-5-4-none" - }, - "gpt-5-4-fast": { - "id": "gpt-5-4-fast", - "name": "GPT-5.4 Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-4-none-priority", - "low": "gpt-5-4-low-priority", - "medium": "gpt-5-4-medium-priority", - "high": "gpt-5-4-high-priority", - "xhigh": "gpt-5-4-xhigh-priority" - } - }, - "requestModelId": "gpt-5-4-none-priority" - }, - "gpt-5-4-mini": { - "id": "gpt-5-4-mini", - "name": "GPT-5.4 Mini", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 400000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "requiresEffort": true, - "effortRouting": { - "low": "gpt-5-4-mini-low", - "medium": "gpt-5-4-mini-medium", - "high": "gpt-5-4-mini-high", - "xhigh": "gpt-5-4-mini-xhigh" - } - }, - "requestModelId": "gpt-5-4-mini-low" - }, - "gpt-5-5": { - "id": "gpt-5-5", - "name": "GPT-5.5", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-5-none", - "low": "gpt-5-5-low", - "medium": "gpt-5-5-medium", - "high": "gpt-5-5-high", - "xhigh": "gpt-5-5-xhigh" - } - }, - "requestModelId": "gpt-5-5-none" - }, - "gpt-5-5-fast": { - "id": "gpt-5-5-fast", - "name": "GPT-5.5 Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-5-none-priority", - "low": "gpt-5-5-low-priority", - "medium": "gpt-5-5-medium-priority", - "high": "gpt-5-5-high-priority", - "xhigh": "gpt-5-5-xhigh-priority" - } - }, - "requestModelId": "gpt-5-5-none-priority" - }, - "gpt-5-6-luna": { - "id": "gpt-5-6-luna", - "name": "GPT-5.6 Luna", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "effortRouting": { - "off": "gpt-5-6-luna-none", - "low": "gpt-5-6-luna-low", - "medium": "gpt-5-6-luna-medium", - "high": "gpt-5-6-luna-high", - "xhigh": "gpt-5-6-luna-xhigh", - "max": "gpt-5-6-luna-max" - } - }, - "requestModelId": "gpt-5-6-luna-none" - }, - "gpt-5-6-luna-fast": { - "id": "gpt-5-6-luna-fast", - "name": "GPT-5.6 Luna Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-6-luna-none-priority", - "low": "gpt-5-6-luna-low-priority", - "medium": "gpt-5-6-luna-medium-priority", - "high": "gpt-5-6-luna-high-priority", - "xhigh": "gpt-5-6-luna-xhigh-priority" - } - }, - "requestModelId": "gpt-5-6-luna-none-priority" - }, - "gpt-5-6-sol": { - "id": "gpt-5-6-sol", - "name": "GPT-5.6 Sol", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "effortRouting": { - "off": "gpt-5-6-sol-none", - "low": "gpt-5-6-sol-low", - "medium": "gpt-5-6-sol-medium", - "high": "gpt-5-6-sol-high", - "xhigh": "gpt-5-6-sol-xhigh", - "max": "gpt-5-6-sol-max" - } - }, - "requestModelId": "gpt-5-6-sol-none" - }, - "gpt-5-6-sol-fast": { - "id": "gpt-5-6-sol-fast", - "name": "GPT-5.6 Sol Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-6-sol-none-priority", - "low": "gpt-5-6-sol-low-priority", - "medium": "gpt-5-6-sol-medium-priority", - "high": "gpt-5-6-sol-high-priority", - "xhigh": "gpt-5-6-sol-xhigh-priority" - } - }, - "requestModelId": "gpt-5-6-sol-none-priority" - }, - "gpt-5-6-terra": { - "id": "gpt-5-6-terra", - "name": "GPT-5.6 Terra", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh", - "max" - ], - "effortRouting": { - "off": "gpt-5-6-terra-none", - "low": "gpt-5-6-terra-low", - "medium": "gpt-5-6-terra-medium", - "high": "gpt-5-6-terra-high", - "xhigh": "gpt-5-6-terra-xhigh", - "max": "gpt-5-6-terra-max" - } - }, - "requestModelId": "gpt-5-6-terra-none" - }, - "gpt-5-6-terra-fast": { - "id": "gpt-5-6-terra-fast", - "name": "GPT-5.6 Terra Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 1000000, - "maxTokens": 64000, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ], - "effortRouting": { - "off": "gpt-5-6-terra-none-priority", - "low": "gpt-5-6-terra-low-priority", - "medium": "gpt-5-6-terra-medium-priority", - "high": "gpt-5-6-terra-high-priority", - "xhigh": "gpt-5-6-terra-xhigh-priority" - } - }, - "requestModelId": "gpt-5-6-terra-none-priority" - }, - "grok-4-5-high": { - "id": "grok-4-5-high", - "name": "Grok 4.5 High", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 500000, - "maxTokens": 64000 - }, - "grok-4-5-low": { - "id": "grok-4-5-low", - "name": "Grok 4.5 Low", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 500000, - "maxTokens": 64000 - }, - "grok-4-5-medium": { - "id": "grok-4-5-medium", - "name": "Grok 4.5 Medium", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 500000, - "maxTokens": 64000 - }, - "kimi-k2-6": { - "id": "kimi-k2-6", - "name": "Kimi K2.6", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 262144, - "maxTokens": 64000 - }, - "kimi-k2-7": { - "id": "kimi-k2-7", - "name": "Kimi K2.7", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 262144, - "maxTokens": 64000 - }, - "MODEL_CLAUDE_4_5_OPUS": { - "id": "MODEL_CLAUDE_4_5_OPUS", - "name": "Claude Opus 4.5", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": false, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "MODEL_CLAUDE_4_5_OPUS_THINKING": { - "id": "MODEL_CLAUDE_4_5_OPUS_THINKING", - "name": "Claude Opus 4.5 Thinking", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "MODEL_PRIVATE_11": { - "id": "MODEL_PRIVATE_11", - "name": "Claude Haiku 4.5", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": false, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "MODEL_PRIVATE_2": { - "id": "MODEL_PRIVATE_2", - "name": "Claude Sonnet 4.5", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": false, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "MODEL_PRIVATE_3": { - "id": "MODEL_PRIVATE_3", - "name": "Claude Sonnet 4.5 Thinking", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "nemotron-3-ultra-nvfp4": { - "id": "nemotron-3-ultra-nvfp4", - "name": "Nemotron 3 Ultra", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 262144, - "maxTokens": 64000 - }, - "swe-1-6": { - "id": "swe-1-6", - "name": "SWE-1.6", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "swe-1-6-fast": { - "id": "swe-1-6-fast", - "name": "SWE-1.6 Fast", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 200000, - "maxTokens": 64000 - }, - "swe-1-7": { - "id": "swe-1-7", - "name": "SWE-1.7 Max", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 262000, - "maxTokens": 64000 - }, - "swe-1-7-lightning": { - "id": "swe-1-7-lightning", - "name": "SWE-1.7 Lightning", - "api": "devin-agent", - "provider": "devin", - "baseUrl": "https://server.codeium.com", - "reasoning": true, - "input": [ - "text", - "image" - ], - "supportsTools": true, - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 202752, "maxTokens": 64000 } }, @@ -20862,6 +19348,66 @@ "requiresEffort": true } }, + "gemini-3.5-flash-lite": { + "id": "gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "google-generative-ai", + "provider": "google", + "baseUrl": "https://generativelanguage.googleapis.com/v1beta", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 2.5, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "gemini-3.6-flash": { + "id": "gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "google-generative-ai", + "provider": "google", + "baseUrl": "https://generativelanguage.googleapis.com/v1beta", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "gemini-flash-latest": { "id": "gemini-flash-latest", "name": "Gemini Flash Latest", @@ -21639,6 +20185,43 @@ "suppressWhenOff": true } }, + "gemini-3.6-flash": { + "id": "gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "google-gemini-cli", + "provider": "google-antigravity", + "baseUrl": "https://daily-cloudcode-pa.googleapis.com", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "requestModelId": "gemini-3.6-flash-low", + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true, + "effortRouting": { + "minimal": "gemini-3.6-flash-low", + "low": "gemini-3.6-flash-low", + "medium": "gemini-3.6-flash-medium", + "high": "gemini-3.6-flash-high" + } + } + }, "gpt-oss-120b": { "id": "gpt-oss-120b", "name": "GPT OSS 120B", @@ -22438,6 +21021,66 @@ "requiresEffort": true } }, + "gemini-3.5-flash-lite": { + "id": "gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "google-vertex", + "provider": "google-vertex", + "baseUrl": "https://{location}-aiplatform.googleapis.com", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 2.5, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "gemini-3.6-flash": { + "id": "gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "google-vertex", + "provider": "google-vertex", + "baseUrl": "https://{location}-aiplatform.googleapis.com", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "gemini-flash-latest": { "id": "gemini-flash-latest", "name": "Gemini Flash Latest", @@ -24198,6 +22841,33 @@ ] } }, + "XiaomiMiMo/MiMo-V2.5": { + "id": "XiaomiMiMo/MiMo-V2.5", + "name": "MiMo-V2.5", + "api": "openai-completions", + "provider": "huggingface", + "baseUrl": "https://router.huggingface.co/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.4, + "output": 2, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 262144, + "maxTokens": 131072, + "thinking": { + "mode": "effort", + "efforts": [ + "low", + "medium", + "high" + ] + } + }, "XiaomiMiMo/MiMo-V2.5-Pro": { "id": "XiaomiMiMo/MiMo-V2.5-Pro", "name": "MiMo-V2.5-Pro", @@ -26720,7 +25390,7 @@ }, "deepseek/deepseek-v4-flash:discounted": { "id": "deepseek/deepseek-v4-flash:discounted", - "name": "DeepSeek V4 Flash", + "name": "DeepSeek V4 Flash (lowest price)", "api": "openai-completions", "provider": "kilo", "baseUrl": "https://api.kilo.ai/api/gateway", @@ -26784,7 +25454,7 @@ }, "deepseek/deepseek-v4-pro:discounted": { "id": "deepseek/deepseek-v4-pro:discounted", - "name": "DeepSeek V4 Pro", + "name": "DeepSeek V4 Pro (lowest price)", "api": "openai-completions", "provider": "kilo", "baseUrl": "https://api.kilo.ai/api/gateway", @@ -27420,6 +26090,44 @@ "requiresEffort": true } }, + "google/gemini-3.5-flash-lite": { + "id": "google/gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536 + }, + "google/gemini-3.6-flash": { + "id": "google/gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536 + }, "google/gemma-2-27b-it": { "id": "google/gemma-2-27b-it", "name": "Gemma 2 27B", @@ -28285,6 +26993,25 @@ "contextWindow": null, "maxTokens": null }, + "meituan/longcat-2.0": { + "id": "meituan/longcat-2.0", + "name": "LongCat 2.0", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": null, + "maxTokens": null + }, "meituan/longcat-flash-chat": { "id": "meituan/longcat-flash-chat", "name": "LongCat Flash Chat", @@ -32083,7 +30810,7 @@ }, "openrouter/auto-beta": { "id": "openrouter/auto-beta", - "name": "Auto Router (Beta)", + "name": "OpenRouter Auto Router (Beta)", "api": "openai-completions", "provider": "kilo", "baseUrl": "https://api.kilo.ai/api/gateway", @@ -32102,7 +30829,7 @@ }, "openrouter/bodybuilder": { "id": "openrouter/bodybuilder", - "name": "Body Builder (beta)", + "name": "OpenRouter Body Builder (beta)", "api": "openai-completions", "provider": "kilo", "baseUrl": "https://api.kilo.ai/api/gateway", @@ -32256,7 +30983,7 @@ }, "openrouter/pareto-code": { "id": "openrouter/pareto-code", - "name": "Pareto Code Router", + "name": "OpenRouter Pareto Code Router", "api": "openai-completions", "provider": "kilo", "baseUrl": "https://api.kilo.ai/api/gateway", @@ -32444,6 +31171,44 @@ ] } }, + "poolside/laguna-s-2.1": { + "id": "poolside/laguna-s-2.1", + "name": "Laguna S 2.1", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 131072 + }, + "poolside/laguna-s-2.1:free": { + "id": "poolside/laguna-s-2.1:free", + "name": "Laguna S 2.1 (free)", + "api": "openai-completions", + "provider": "kilo", + "baseUrl": "https://api.kilo.ai/api/gateway", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 131072 + }, "poolside/laguna-xs-2.1": { "id": "poolside/laguna-xs-2.1", "name": "Laguna XS 2.1", @@ -35734,7 +34499,7 @@ ] }, "compat": { - "thinkingFormat": "zai", + "thinkingFormat": "kimi", "reasoningContentField": "reasoning_content", "supportsDeveloperRole": false } @@ -39515,6 +38280,36 @@ "contextWindow": 256000, "maxTokens": null }, + "bytedance/doubao-seed-character": { + "id": "bytedance/doubao-seed-character", + "name": "Doubao-Seed-Character", + "api": "openai-completions", + "provider": "nanogpt", + "baseUrl": "https://nano-gpt.com/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.1179, + "output": 0.2947, + "cacheRead": 0.0236, + "cacheWrite": 0.0025 + }, + "contextWindow": 128000, + "maxTokens": null, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "chutesai/Mistral-Small-3.2-24B-Instruct-2506": { "id": "chutesai/Mistral-Small-3.2-24B-Instruct-2506", "name": "chutesai/Mistral-Small-3.2-24B-Instruct-2506", @@ -43664,6 +42459,44 @@ "requiresEffort": true } }, + "google/gemini-3.5-flash-lite": { + "id": "google/gemini-3.5-flash-lite", + "name": "google/gemini-3.5-flash-lite", + "api": "openai-completions", + "provider": "nanogpt", + "baseUrl": "https://nano-gpt.com/api/v1", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536 + }, + "google/gemini-3.6-flash": { + "id": "google/gemini-3.6-flash", + "name": "google/gemini-3.6-flash", + "api": "openai-completions", + "provider": "nanogpt", + "baseUrl": "https://nano-gpt.com/api/v1", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536 + }, "google/gemini-flash-1.5": { "id": "google/gemini-flash-1.5", "name": "google/gemini-flash-1.5", @@ -45613,7 +44446,7 @@ "api": "openai-completions", "provider": "nanogpt", "baseUrl": "https://nano-gpt.com/api/v1", - "reasoning": false, + "reasoning": true, "input": [ "text" ], @@ -45624,7 +44457,17 @@ "cacheWrite": 0 }, "contextWindow": null, - "maxTokens": null + "maxTokens": null, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } }, "Magistral-Small-2506": { "id": "Magistral-Small-2506", @@ -49613,6 +48456,35 @@ ] } }, + "poolside/laguna-s-2.1": { + "id": "poolside/laguna-s-2.1", + "name": "poolside/laguna-s-2.1", + "api": "openai-completions", + "provider": "nanogpt", + "baseUrl": "https://nano-gpt.com/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 131072, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "poolside/laguna-xs.2": { "id": "poolside/laguna-xs.2", "name": "Laguna XS.2", @@ -51308,6 +50180,25 @@ ] } }, + "qwen3.8-max-preview": { + "id": "qwen3.8-max-preview", + "name": "qwen3.8-max-preview", + "api": "openai-completions", + "provider": "nanogpt", + "baseUrl": "https://nano-gpt.com/api/v1", + "reasoning": false, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": null, + "maxTokens": null + }, "qwq-32b": { "id": "qwq-32b", "name": "qwq-32b", @@ -57301,9 +56192,9 @@ "text" ], "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, + "input": 0.14, + "output": 0.58, + "cacheRead": 0.035, "cacheWrite": 0 }, "contextWindow": 262144, @@ -63849,355 +62740,6 @@ ] } }, - "gpt-5": { - "id": "gpt-5", - "name": "GPT-5", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.25, - "output": 10, - "cacheRead": 0.125, - "cacheWrite": 0 - }, - "contextWindow": 400000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 16, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5-codex": { - "id": "gpt-5-codex", - "name": "GPT-5-Codex", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.25, - "output": 10, - "cacheRead": 0.125, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 15, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5-codex-mini": { - "id": "gpt-5-codex-mini", - "name": "gpt-5-codex-mini", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 0, - "output": 0, - "cacheRead": 0, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 20, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.1": { - "id": "gpt-5.1", - "name": "GPT-5.1", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.25, - "output": 10, - "cacheRead": 0.13, - "cacheWrite": 0 - }, - "contextWindow": 400000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 12, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.1-codex": { - "id": "gpt-5.1-codex", - "name": "GPT-5.1 Codex", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.25, - "output": 10, - "cacheRead": 0.125, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 11, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.1-codex-max": { - "id": "gpt-5.1-codex-max", - "name": "GPT-5.1 Codex Max", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.25, - "output": 10, - "cacheRead": 0.125, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 10, - "thinking": { - "mode": "effort", - "efforts": [ - "minimal", - "low", - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.1-codex-mini": { - "id": "gpt-5.1-codex-mini", - "name": "GPT-5.1 Codex mini", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 0.25, - "output": 2, - "cacheRead": 0.025, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 19, - "thinking": { - "mode": "effort", - "efforts": [ - "medium", - "high" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.2": { - "id": "gpt-5.2", - "name": "GPT-5.2", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.75, - "output": 14, - "cacheRead": 0.175, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 29, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.2-codex": { - "id": "gpt-5.2-codex", - "name": "GPT-5.2 Codex", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.75, - "output": 14, - "cacheRead": 0.175, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 8, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.3-codex": { - "id": "gpt-5.3-codex", - "name": "GPT-5.3 Codex", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 1.75, - "output": 14, - "cacheRead": 0.175, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 25, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "applyPatchToolType": "freeform" - }, - "gpt-5.3-codex-spark": { - "id": "gpt-5.3-codex-spark", - "name": "GPT-5.3 Codex Spark", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "preferWebsockets": true, - "input": [ - "text" - ], - "cost": { - "input": 1.75, - "output": 14, - "cacheRead": 0.175, - "cacheWrite": 0 - }, - "contextWindow": 128000, - "maxTokens": 128000, - "contextPromotionTarget": "openai-codex/gpt-5.5", - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "applyPatchToolType": "freeform" - }, "gpt-5.4": { "id": "gpt-5.4", "name": "GPT-5.4", @@ -64272,38 +62814,6 @@ ] } }, - "gpt-5.4-nano": { - "id": "gpt-5.4-nano", - "name": "GPT-5.4 nano", - "api": "openai-codex-responses", - "provider": "openai-codex", - "baseUrl": "https://chatgpt.com/backend-api", - "reasoning": true, - "input": [ - "text", - "image" - ], - "cost": { - "input": 0.2, - "output": 1.25, - "cacheRead": 0.02, - "cacheWrite": 0 - }, - "contextWindow": 272000, - "maxTokens": 128000, - "preferWebsockets": true, - "priority": 2, - "thinking": { - "mode": "effort", - "efforts": [ - "low", - "medium", - "high", - "xhigh" - ] - }, - "applyPatchToolType": "freeform" - }, "gpt-5.5": { "id": "gpt-5.5", "name": "GPT-5.5", @@ -64762,7 +63272,7 @@ "grok-4.5": { "id": "grok-4.5", "name": "Grok 4.5", - "api": "openai-completions", + "api": "openai-responses", "provider": "opencode-go", "baseUrl": "https://opencode.ai/zen/go/v1", "reasoning": true, @@ -64789,6 +63299,35 @@ ] } }, + "hy3": { + "id": "hy3", + "name": "Hy3", + "api": "openai-completions", + "provider": "opencode-go", + "baseUrl": "https://opencode.ai/zen/go/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.14, + "output": 0.58, + "cacheRead": 0.035, + "cacheWrite": 0 + }, + "contextWindow": 256000, + "maxTokens": 64000, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "kimi-k2.5": { "id": "kimi-k2.5", "name": "Kimi K2.5", @@ -65818,6 +64357,66 @@ "requiresEffort": true } }, + "gemini-3.5-flash-lite": { + "id": "gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "google-generative-ai", + "provider": "opencode-zen", + "baseUrl": "https://opencode.ai/zen/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 2.5, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "gemini-3.6-flash": { + "id": "gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "google-generative-ai", + "provider": "opencode-zen", + "baseUrl": "https://opencode.ai/zen/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "google-level", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "glm-4.6": { "id": "glm-4.6", "name": "GLM-4.6", @@ -66549,7 +65148,7 @@ "grok-4.5": { "id": "grok-4.5", "name": "Grok 4.5", - "api": "openai-completions", + "api": "openai-responses", "provider": "opencode-zen", "baseUrl": "https://opencode.ai/zen/v1", "reasoning": true, @@ -66791,6 +65390,35 @@ ] } }, + "laguna-s-2.1-free": { + "id": "laguna-s-2.1-free", + "name": "Laguna S 2.1 Free", + "api": "openai-completions", + "provider": "opencode-zen", + "baseUrl": "https://opencode.ai/zen/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 256000, + "maxTokens": 32000, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "ling-2.6-flash-free": { "id": "ling-2.6-flash-free", "name": "Ling 2.6 Flash Free", @@ -67451,7 +66079,7 @@ ], "cost": { "input": 1.5, - "output": 9, + "output": 7.5, "cacheRead": 0.15, "cacheWrite": 0.08333333333333334 }, @@ -67597,7 +66225,7 @@ "cost": { "input": 2, "output": 6, - "cacheRead": 0.5, + "cacheRead": 0.3, "cacheWrite": 0 }, "contextWindow": 500000, @@ -68924,7 +67552,7 @@ "cacheRead": 0.15, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 163840, "maxTokens": 16000 }, "deepseek/deepseek-chat-v3-0324": { @@ -69037,7 +67665,7 @@ "cacheRead": 0.135, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 163840, "maxTokens": 32768, "thinking": { "mode": "effort", @@ -69508,7 +68136,7 @@ "cacheRead": 0.19999999999999998, "cacheWrite": 0.375 }, - "contextWindow": 65536, + "contextWindow": 131072, "maxTokens": 32768, "thinking": { "mode": "effort", @@ -69642,7 +68270,7 @@ "cacheRead": 0.19999999999999998, "cacheWrite": 0.375 }, - "contextWindow": 1048756, + "contextWindow": 1048576, "maxTokens": 65536, "thinking": { "mode": "effort", @@ -69683,6 +68311,66 @@ "requiresEffort": true } }, + "google/gemini-3.5-flash-lite": { + "id": "google/gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "openrouter", + "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, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "google/gemini-3.6-flash": { + "id": "google/gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "openrouter", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0.08333333333333334 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "google/gemma-3-12b-it": { "id": "google/gemma-3-12b-it", "name": "Gemma 3 12B", @@ -69720,7 +68408,7 @@ "cacheRead": 0.04, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 262144, "maxTokens": 131072 }, "google/gemma-3-27b-it:free": { @@ -69755,13 +68443,13 @@ "image" ], "cost": { - "input": 0.09999999999999999, - "output": 0.3, + "input": 0.07, + "output": 0.33999999999999997, "cacheRead": 0.04, "cacheWrite": 0 }, "contextWindow": 262144, - "maxTokens": 256000, + "maxTokens": 16384, "thinking": { "mode": "effort", "efforts": [ @@ -69814,12 +68502,12 @@ ], "cost": { "input": 0.12, - "output": 0.37, - "cacheRead": 0.12, + "output": 0.35, + "cacheRead": 0.09, "cacheWrite": 0 }, "contextWindow": 262144, - "maxTokens": 16384, + "maxTokens": 262144, "thinking": { "mode": "effort", "efforts": [ @@ -70130,7 +68818,7 @@ "cacheRead": 0.06, "cacheWrite": 0 }, - "contextWindow": 256000, + "contextWindow": 262144, "maxTokens": 80000 }, "kwaipilot/kat-coder-pro-v2.5": { @@ -70181,6 +68869,34 @@ "requiresEffort": true } }, + "meituan/longcat-2.0": { + "id": "meituan/longcat-2.0", + "name": "LongCat 2.0", + "api": "openrouter", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.3, + "output": 1.2, + "cacheRead": 0.006, + "cacheWrite": 0 + }, + "contextWindow": 1048756, + "maxTokens": 262144, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ] + } + }, "meituan/longcat-flash-chat": { "id": "meituan/longcat-flash-chat", "name": "LongCat Flash Chat", @@ -70351,7 +69067,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 10000000, + "contextWindow": 1310720, "maxTokens": 16384 }, "meta/muse-spark-1.1": { @@ -70422,8 +69138,8 @@ "text" ], "cost": { - "input": 0.255, - "output": 1.02, + "input": 0.3, + "output": 1.2, "cacheRead": 0.03, "cacheWrite": 0 }, @@ -71008,7 +69724,7 @@ "cacheRead": 0.01, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 256000, "maxTokens": 16384 }, "mistralai/mistral-small-creative": { @@ -71234,9 +69950,9 @@ "image" ], "cost": { - "input": 0.95, - "output": 4, - "cacheRead": 0.16, + "input": 0.684, + "output": 3.42, + "cacheRead": 0.144, "cacheWrite": 0 }, "contextWindow": 262144, @@ -71292,9 +70008,9 @@ "image" ], "cost": { - "input": 1, - "output": 4.4, - "cacheRead": 0.19999999999999998, + "input": 0.82, + "output": 3.75, + "cacheRead": 0.16, "cacheWrite": 0 }, "contextWindow": 262144, @@ -71648,8 +70364,8 @@ "text" ], "cost": { - "input": 0.21, - "output": 0.45499999999999996, + "input": 0.08, + "output": 0.44999999999999996, "cacheRead": 0.06, "cacheWrite": 0 }, @@ -71681,7 +70397,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 1000000, + "contextWindow": 262144, "maxTokens": 262144, "thinking": { "mode": "effort", @@ -71709,7 +70425,7 @@ "cacheRead": 0.19999999999999998, "cacheWrite": 0 }, - "contextWindow": 1000000, + "contextWindow": 512288, "maxTokens": 16384, "thinking": { "mode": "effort", @@ -73820,6 +72536,62 @@ ] } }, + "poolside/laguna-s-2.1": { + "id": "poolside/laguna-s-2.1", + "name": "Laguna S 2.1", + "api": "openrouter", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.09999999999999999, + "output": 0.19999999999999998, + "cacheRead": 0.01, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 131072, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ] + } + }, + "poolside/laguna-s-2.1:free": { + "id": "poolside/laguna-s-2.1:free", + "name": "Laguna S 2.1 (free)", + "api": "openrouter", + "provider": "openrouter", + "baseUrl": "https://openrouter.ai/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 262144, + "maxTokens": 32768, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ] + } + }, "poolside/laguna-xs-2.1": { "id": "poolside/laguna-xs-2.1", "name": "Laguna XS 2.1", @@ -73976,7 +72748,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 32768, "maxTokens": 16384 }, "qwen/qwen-2.5-7b-instruct": { @@ -73995,7 +72767,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 32768, "maxTokens": 32768 }, "qwen/qwen-max": { @@ -74133,13 +72905,13 @@ "text" ], "cost": { - "input": 0.22749999999999998, - "output": 0.9099999999999999, + "input": 0.12, + "output": 0.24, "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 131702, - "maxTokens": 8192, + "contextWindow": 131072, + "maxTokens": 16384, "thinking": { "mode": "effort", "efforts": [ @@ -74208,13 +72980,13 @@ "text" ], "cost": { - "input": 0.14950000000000002, - "output": 1.495, + "input": 0.3, + "output": 3, "cacheRead": 0.09999999999999999, "cacheWrite": 0 }, "contextWindow": 262144, - "maxTokens": 262144, + "maxTokens": 32768, "thinking": { "mode": "effort", "efforts": [ @@ -74289,7 +73061,7 @@ "cacheRead": 0.08, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 81920, "maxTokens": 32768, "thinking": { "mode": "effort", @@ -74430,7 +73202,7 @@ "cacheRead": 0.09999999999999999, "cacheWrite": 0 }, - "contextWindow": 1048576, + "contextWindow": 262144, "maxTokens": 65536 }, "qwen/qwen3-coder-30b-a3b-instruct": { @@ -74449,7 +73221,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 160000, + "contextWindow": 262144, "maxTokens": 32768 }, "qwen/qwen3-coder-flash": { @@ -74679,7 +73451,7 @@ "cacheRead": 0.09999999999999999, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 262144, "maxTokens": 32768 }, "qwen/qwen3-vl-235b-a22b-thinking": { @@ -74749,7 +73521,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 131072, + "contextWindow": 262144, "maxTokens": 32768, "thinking": { "mode": "effort", @@ -74779,7 +73551,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 262144, + "contextWindow": 131072, "maxTokens": 32768 }, "qwen/qwen3-vl-8b-instruct": { @@ -74799,7 +73571,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 256000, + "contextWindow": 262144, "maxTokens": 32768 }, "qwen/qwen3-vl-8b-thinking": { @@ -74819,7 +73591,7 @@ "cacheRead": 0, "cacheWrite": 0 }, - "contextWindow": 256000, + "contextWindow": 131072, "maxTokens": 32768, "thinking": { "mode": "effort", @@ -75555,7 +74327,7 @@ "cacheRead": 0.04, "cacheWrite": 0 }, - "contextWindow": 256000, + "contextWindow": 262144, "maxTokens": 256000, "thinking": { "mode": "effort", @@ -75581,13 +74353,13 @@ "text" ], "cost": { - "input": 0.19999999999999998, - "output": 0.7999999999999999, - "cacheRead": 0.049999999999999996, + "input": 0.14, + "output": 0.58, + "cacheRead": 0.035, "cacheWrite": 0 }, "contextWindow": 262144, - "maxTokens": 131072, + "maxTokens": 262144, "thinking": { "mode": "effort", "efforts": [ @@ -75737,7 +74509,7 @@ "cacheRead": 0.16999999999999998, "cacheWrite": 0 }, - "contextWindow": 1048576, + "contextWindow": 524288, "maxTokens": 65536, "thinking": { "mode": "effort", @@ -76140,7 +74912,7 @@ "cost": { "input": 2, "output": 6, - "cacheRead": 0.5, + "cacheRead": 0.3, "cacheWrite": 0 }, "contextWindow": 500000, @@ -76311,7 +75083,7 @@ "cacheRead": 0.0028, "cacheWrite": 0 }, - "contextWindow": 1048576, + "contextWindow": 1050000, "maxTokens": 131072, "thinking": { "mode": "effort", @@ -76338,7 +75110,7 @@ "cacheRead": 0.0036, "cacheWrite": 0 }, - "contextWindow": 1048576, + "contextWindow": 1050000, "maxTokens": 131072, "thinking": { "mode": "effort", @@ -76497,7 +75269,7 @@ "cacheRead": 0.09999999999999999, "cacheWrite": 0 }, - "contextWindow": 202752, + "contextWindow": 204800, "maxTokens": 131072, "thinking": { "mode": "effort", @@ -76582,7 +75354,7 @@ "cacheRead": 0.08, "cacheWrite": 0 }, - "contextWindow": 202752, + "contextWindow": 204800, "maxTokens": 131072, "thinking": { "mode": "effort", @@ -76610,7 +75382,7 @@ "cacheRead": 0.01, "cacheWrite": 0 }, - "contextWindow": 200000, + "contextWindow": 202752, "maxTokens": 131072, "thinking": { "mode": "effort", @@ -76634,12 +75406,12 @@ ], "cost": { "input": 0.95, - "output": 3.15, - "cacheRead": 0.19, + "output": 2.5500000000000003, + "cacheRead": 0.19999999999999998, "cacheWrite": 0 }, - "contextWindow": 202752, - "maxTokens": 202752, + "contextWindow": 204800, + "maxTokens": 131072, "thinking": { "mode": "effort", "efforts": [ @@ -76685,7 +75457,7 @@ "cacheRead": 0.1794, "cacheWrite": 0 }, - "contextWindow": 202752, + "contextWindow": 204800, "maxTokens": 128000, "thinking": { "mode": "effort", @@ -76708,9 +75480,9 @@ "text" ], "cost": { - "input": 0.3024, - "output": 0.9504, - "cacheRead": 0.05616, + "input": 0.798, + "output": 2.508, + "cacheRead": 0.1482, "cacheWrite": 0 }, "contextWindow": 1048576, @@ -76911,7 +75683,7 @@ "synthetic": { "hf:MiniMaxAI/MiniMax-M3": { "id": "hf:MiniMaxAI/MiniMax-M3", - "name": "MiniMax-M3", + "name": "MiniMaxAI/MiniMax-M3", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -76926,7 +75698,7 @@ "cacheRead": 0.6, "cacheWrite": 0 }, - "contextWindow": 524288, + "contextWindow": 262144, "maxTokens": 65536, "thinking": { "mode": "effort", @@ -76941,7 +75713,7 @@ }, "hf:moonshotai/Kimi-K2.7-Code": { "id": "hf:moonshotai/Kimi-K2.7-Code", - "name": "Kimi K2.7 Code", + "name": "moonshotai/Kimi-K2.7-Code", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -76971,7 +75743,7 @@ }, "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4": { "id": "hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4", - "name": "Nemotron 3 Super 120B A12B", + "name": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -77000,7 +75772,7 @@ }, "hf:openai/gpt-oss-120b": { "id": "hf:openai/gpt-oss-120b", - "name": "GPT OSS 120B", + "name": "openai/gpt-oss-120b", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -77027,7 +75799,7 @@ }, "hf:Qwen/Qwen3.6-27B": { "id": "hf:Qwen/Qwen3.6-27B", - "name": "Qwen3.6 27B", + "name": "Qwen/Qwen3.6-27B", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -77056,7 +75828,7 @@ }, "hf:zai-org/GLM-4.7-Flash": { "id": "hf:zai-org/GLM-4.7-Flash", - "name": "GLM-4.7-Flash", + "name": "zai-org/GLM-4.7-Flash", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -77085,7 +75857,7 @@ }, "hf:zai-org/GLM-5.2": { "id": "hf:zai-org/GLM-5.2", - "name": "GLM-5.2", + "name": "zai-org/GLM-5.2", "api": "openai-completions", "provider": "synthetic", "baseUrl": "https://api.synthetic.new/openai/v1", @@ -79138,7 +77910,7 @@ "cacheWrite": 0 }, "contextWindow": 32000, - "maxTokens": null, + "maxTokens": 65536, "compat": { "supportsUsageInStreaming": false } @@ -79269,6 +78041,66 @@ ] } }, + "gemini-3-5-flash-lite": { + "id": "gemini-3-5-flash-lite", + "name": "Gemini 3.5 Flash-Lite", + "api": "openai-completions", + "provider": "venice", + "baseUrl": "https://api.venice.ai/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.375, + "output": 3.125, + "cacheRead": 0.0375, + "cacheWrite": 0 + }, + "contextWindow": 1000000, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, + "gemini-3-6-flash": { + "id": "gemini-3-6-flash", + "name": "Gemini 3.6 Flash", + "api": "openai-completions", + "provider": "venice", + "baseUrl": "https://api.venice.ai/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.875, + "output": 9.375, + "cacheRead": 0.1875, + "cacheWrite": 0 + }, + "contextWindow": 1000000, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "gemini-3-flash-preview": { "id": "gemini-3-flash-preview", "name": "Gemini 3 Flash Preview", @@ -79614,7 +78446,7 @@ "cost": { "input": 2.27, "output": 6.8, - "cacheRead": 0.57, + "cacheRead": 0.34, "cacheWrite": 0 }, "contextWindow": 500000, @@ -81095,6 +79927,34 @@ ] } }, + "qwen3-6-35b-a3b": { + "id": "qwen3-6-35b-a3b", + "name": "Qwen 3.6 35B A3B", + "api": "openai-completions", + "provider": "venice", + "baseUrl": "https://api.venice.ai/api/v1", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.15, + "output": 1, + "cacheRead": 0.05, + "cacheWrite": 0 + }, + "contextWindow": 256000, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ] + } + }, "qwen3-coder-480b-a35b-instruct": { "id": "qwen3-coder-480b-a35b-instruct", "name": "Qwen 3 Coder 480b", @@ -83526,6 +82386,66 @@ "requiresEffort": true } }, + "google/gemini-3.5-flash-lite": { + "id": "google/gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "anthropic-messages", + "provider": "vercel-ai-gateway", + "baseUrl": "https://ai-gateway.vercel.sh", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 2.5, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 1000000, + "maxTokens": 65000, + "thinking": { + "mode": "budget", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "google/gemini-3.6-flash": { + "id": "google/gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "anthropic-messages", + "provider": "vercel-ai-gateway", + "baseUrl": "https://ai-gateway.vercel.sh", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0 + }, + "contextWindow": 1000000, + "maxTokens": 64000, + "thinking": { + "mode": "budget", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "google/gemma-4-26b-a4b-it": { "id": "google/gemma-4-26b-a4b-it", "name": "Gemma 4 26B A4B", @@ -86240,6 +85160,64 @@ "contextWindow": 200000, "maxTokens": 8000 }, + "poolside/laguna-s-2.1": { + "id": "poolside/laguna-s-2.1", + "name": "Laguna S 2.1", + "api": "anthropic-messages", + "provider": "vercel-ai-gateway", + "baseUrl": "https://ai-gateway.vercel.sh", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.09999999999999999, + "output": 0.19999999999999998, + "cacheRead": 0.01, + "cacheWrite": 0 + }, + "contextWindow": 1000000, + "maxTokens": 131072, + "thinking": { + "mode": "budget", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, + "poolside/laguna-s-2.1-free": { + "id": "poolside/laguna-s-2.1-free", + "name": "Laguna S 2.1 Free", + "api": "anthropic-messages", + "provider": "vercel-ai-gateway", + "baseUrl": "https://ai-gateway.vercel.sh", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0, + "output": 0, + "cacheRead": 0, + "cacheWrite": 0 + }, + "contextWindow": 256000, + "maxTokens": 32768, + "thinking": { + "mode": "budget", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "prime-intellect/intellect-3": { "id": "prime-intellect/intellect-3", "name": "INTELLECT-3", @@ -86358,6 +85336,35 @@ ] } }, + "tencent/hy3": { + "id": "tencent/hy3", + "name": "Hy3", + "api": "anthropic-messages", + "provider": "vercel-ai-gateway", + "baseUrl": "https://ai-gateway.vercel.sh", + "reasoning": true, + "input": [ + "text" + ], + "cost": { + "input": 0.14, + "output": 0.58, + "cacheRead": 0.035, + "cacheWrite": 0 + }, + "contextWindow": 262144, + "maxTokens": 262144, + "thinking": { + "mode": "budget", + "efforts": [ + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, "thinkingmachines/inkling": { "id": "thinkingmachines/inkling", "name": "Inkling", @@ -86862,7 +85869,7 @@ "cost": { "input": 2, "output": 6, - "cacheRead": 0.5, + "cacheRead": 0.3, "cacheWrite": 0 }, "contextWindow": 500000, @@ -88475,7 +87482,7 @@ "cost": { "input": 2, "output": 6, - "cacheRead": 0.5, + "cacheRead": 0.3, "cacheWrite": 0 }, "contextWindow": 500000, @@ -88666,16 +87673,6 @@ }, "contextWindow": 2000000, "maxTokens": 2000000, - "compat": { - "reasoningEffortMap": { - "minimal": "low" - }, - "includeEncryptedReasoning": false, - "filterReasoningHistory": true, - "supportsImageDetailOriginal": false, - "omitReasoningEffort": false, - "supportsReasoningEffort": true - }, "thinking": { "mode": "effort", "efforts": [ @@ -88688,6 +87685,16 @@ "effortMap": { "minimal": "low" } + }, + "compat": { + "reasoningEffortMap": { + "minimal": "low" + }, + "includeEncryptedReasoning": false, + "filterReasoningHistory": true, + "supportsImageDetailOriginal": false, + "omitReasoningEffort": false, + "supportsReasoningEffort": true } }, "grok-4.3": { @@ -88709,16 +87716,6 @@ }, "contextWindow": 1000000, "maxTokens": 1000000, - "compat": { - "reasoningEffortMap": { - "minimal": "low" - }, - "includeEncryptedReasoning": false, - "filterReasoningHistory": true, - "supportsImageDetailOriginal": false, - "omitReasoningEffort": false, - "supportsReasoningEffort": true - }, "thinking": { "mode": "effort", "efforts": [ @@ -88731,6 +87728,16 @@ "effortMap": { "minimal": "low" } + }, + "compat": { + "reasoningEffortMap": { + "minimal": "low" + }, + "includeEncryptedReasoning": false, + "filterReasoningHistory": true, + "supportsImageDetailOriginal": false, + "omitReasoningEffort": false, + "supportsReasoningEffort": true } }, "grok-4.5": { @@ -88752,16 +87759,6 @@ }, "contextWindow": 500000, "maxTokens": 500000, - "compat": { - "reasoningEffortMap": { - "minimal": "low" - }, - "includeEncryptedReasoning": false, - "filterReasoningHistory": true, - "supportsImageDetailOriginal": false, - "omitReasoningEffort": false, - "supportsReasoningEffort": true - }, "thinking": { "mode": "effort", "efforts": [ @@ -88774,6 +87771,16 @@ "effortMap": { "minimal": "low" } + }, + "compat": { + "reasoningEffortMap": { + "minimal": "low" + }, + "includeEncryptedReasoning": false, + "filterReasoningHistory": true, + "supportsImageDetailOriginal": false, + "omitReasoningEffort": false, + "supportsReasoningEffort": true } }, "grok-build": { @@ -91306,6 +90313,66 @@ "requiresEffort": true } }, + "google/gemini-3.5-flash-lite": { + "id": "google/gemini-3.5-flash-lite", + "name": "Gemini 3.5 Flash Lite", + "api": "openai-completions", + "provider": "zenmux", + "baseUrl": "https://zenmux.ai/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 0.3, + "output": 2.5, + "cacheRead": 0.03, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, + "google/gemini-3.6-flash": { + "id": "google/gemini-3.6-flash", + "name": "Gemini 3.6 Flash", + "api": "openai-completions", + "provider": "zenmux", + "baseUrl": "https://zenmux.ai/api/v1", + "reasoning": true, + "input": [ + "text", + "image" + ], + "cost": { + "input": 1.5, + "output": 7.5, + "cacheRead": 0.15, + "cacheWrite": 0 + }, + "contextWindow": 1048576, + "maxTokens": 65536, + "thinking": { + "mode": "effort", + "efforts": [ + "minimal", + "low", + "medium", + "high" + ], + "requiresEffort": true + } + }, "google/gemini-embedding-2": { "id": "google/gemini-embedding-2", "name": "Gemini Embedding 2", @@ -95478,4 +94545,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/catalog/src/variant-collapse.ts b/packages/catalog/src/variant-collapse.ts index 15532c861..e7b8e571f 100644 --- a/packages/catalog/src/variant-collapse.ts +++ b/packages/catalog/src/variant-collapse.ts @@ -227,13 +227,12 @@ const GEMINI_3_PRO_FAMILY_BUDGETS: Readonly>> = { }; /** - * The two Cloud Code Assist providers share the same Antigravity discovery list - * but disagree on the thinking transport: `google-antigravity` (daily-cloudcode-pa) - * sends an explicit `thinkingBudget` (verified against captured requests), while - * `google-gemini-cli` (cloudcode-pa) follows the official Gemini CLI and uses - * `thinkingLevel`. The Gemini 3.x families therefore differ only in thinking - * transport (and, for Flash, the per-tier wire-id routing); everything else is - * shared verbatim. + * Cloud Code Assist's legacy Gemini 3.5 Flash and 3.1 Pro families use + * different thinking transports: `google-antigravity` (daily-cloudcode-pa) + * sends captured `thinkingBudget` values, while `google-gemini-cli` + * (cloudcode-pa) follows the official Gemini CLI and uses `thinkingLevel`. + * Gemini 3.6 exposes one wire id per level and uses `thinkingLevel` on both + * endpoints. */ function geminiFlashFamily(mode: "budget" | "google-level"): EffortVariantFamily { const budget = mode === "budget"; @@ -266,6 +265,23 @@ function geminiFlashFamily(mode: "budget" | "google-level"): EffortVariantFamily }; } +const GEMINI_36_FLASH_FAMILY: EffortVariantFamily = { + id: "gemini-3.6-flash", + name: "Gemini 3.6 Flash", + members: ["gemini-3.6-flash-low", "gemini-3.6-flash-medium", "gemini-3.6-flash-high", "gemini-3.6-flash-tiered"], + routing: { + [Effort.Minimal]: "gemini-3.6-flash-low", + [Effort.Low]: "gemini-3.6-flash-low", + [Effort.Medium]: "gemini-3.6-flash-medium", + [Effort.High]: "gemini-3.6-flash-high", + }, + thinking: { + mode: "google-level", + efforts: GEMINI_3_FLASH_FAMILY_EFFORTS, + requiresEffort: true, + }, +}; + function geminiProFamily(mode: "budget" | "google-level"): EffortVariantFamily { const budget = mode === "budget"; return { @@ -346,14 +362,19 @@ const SHARED_CCA_FAMILIES: readonly EffortVariantFamily[] = [ thinkingPair("gemini-2.5-flash", "Gemini 2.5 Flash"), ]; -/** `google-antigravity` (daily-cloudcode-pa): Gemini 3.x on the budget transport. */ +/** `google-antigravity` Gemini families, using each generation's native transport. */ export const ANTIGRAVITY_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = { - families: [geminiFlashFamily("budget"), geminiProFamily("budget"), ...SHARED_CCA_FAMILIES], + families: [GEMINI_36_FLASH_FAMILY, geminiFlashFamily("budget"), geminiProFamily("budget"), ...SHARED_CCA_FAMILIES], }; -/** `google-gemini-cli` (cloudcode-pa): Gemini 3.x on the level transport (official CLI parity). */ +/** `google-gemini-cli` Gemini families on the official CLI's level transport. */ export const GEMINI_CLI_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = { - families: [geminiFlashFamily("google-level"), geminiProFamily("google-level"), ...SHARED_CCA_FAMILIES], + families: [ + GEMINI_36_FLASH_FAMILY, + geminiFlashFamily("google-level"), + geminiProFamily("google-level"), + ...SHARED_CCA_FAMILIES, + ], }; export const DEVIN_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = { families: [ diff --git a/packages/catalog/test/variant-collapse.test.ts b/packages/catalog/test/variant-collapse.test.ts index 365505393..6b1724808 100644 --- a/packages/catalog/test/variant-collapse.test.ts +++ b/packages/catalog/test/variant-collapse.test.ts @@ -109,6 +109,41 @@ describe("collapseEffortVariants", () => { }); }); + it("collapses Gemini 3.6 Flash tiers into one routed logical spec", () => { + const out = collapseEffortVariants( + [ + memberSpec("gemini-3.6-flash-high"), + memberSpec("gemini-3.6-flash-low"), + memberSpec("gemini-3.6-flash-medium"), + memberSpec("gemini-3.6-flash-tiered"), + ], + ANTIGRAVITY_VARIANT_COLLAPSE_TABLE, + ); + + expect(out).toHaveLength(1); + const flash = out[0]; + expect(flash?.id).toBe("gemini-3.6-flash"); + expect(flash?.name).toBe("Gemini 3.6 Flash"); + expect(flash?.requestModelId).toBe("gemini-3.6-flash-low"); + expect(flash?.thinking).toEqual({ + mode: "google-level", + efforts: [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High], + requiresEffort: true, + effortRouting: { + minimal: "gemini-3.6-flash-low", + low: "gemini-3.6-flash-low", + medium: "gemini-3.6-flash-medium", + high: "gemini-3.6-flash-high", + }, + }); + + const model = buildModel(flash as ModelSpec<"google-gemini-cli">); + expect(resolveWireModelId(model, Effort.Minimal)).toBe("gemini-3.6-flash-low"); + expect(resolveWireModelId(model, Effort.Low)).toBe("gemini-3.6-flash-low"); + expect(resolveWireModelId(model, Effort.Medium)).toBe("gemini-3.6-flash-medium"); + expect(resolveWireModelId(model, Effort.High)).toBe("gemini-3.6-flash-high"); + }); + it("drops routes whose target member is absent", () => { const out = collapseEffortVariants( [memberSpec("gemini-3.5-flash-extra-low")],