From 3656ca730456adac056dc0c3f673d45486437dfe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 00:46:14 +0000 Subject: [PATCH 01/10] chore(release): release version 1.24.0 --- Cargo.lock | 14 +- Cargo.toml | 2 +- .../data/canonical_mapping_report.json | 2443 ++++++++++++----- .../canonical/data/canonical_models.json | 438 ++- ui/desktop/openapi.json | 2 +- ui/desktop/package-lock.json | 4 +- ui/desktop/package.json | 2 +- 7 files changed, 2252 insertions(+), 653 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c907e3516d2..7d5dcffd5172 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4112,7 +4112,7 @@ dependencies = [ [[package]] name = "goose" -version = "1.23.0" +version = "1.24.0" dependencies = [ "ahash", "anyhow", @@ -4207,7 +4207,7 @@ dependencies = [ [[package]] name = "goose-acp" -version = "1.23.0" +version = "1.24.0" dependencies = [ "anyhow", "assert-json-diff", @@ -4241,7 +4241,7 @@ dependencies = [ [[package]] name = "goose-cli" -version = "1.23.0" +version = "1.24.0" dependencies = [ "anstream", "anyhow", @@ -4287,7 +4287,7 @@ dependencies = [ [[package]] name = "goose-mcp" -version = "1.23.0" +version = "1.24.0" dependencies = [ "anyhow", "base64 0.22.1", @@ -4336,7 +4336,7 @@ dependencies = [ [[package]] name = "goose-server" -version = "1.23.0" +version = "1.24.0" dependencies = [ "anyhow", "axum 0.8.8", @@ -4382,7 +4382,7 @@ dependencies = [ [[package]] name = "goose-test" -version = "1.23.0" +version = "1.24.0" dependencies = [ "clap", "serde_json", @@ -4390,7 +4390,7 @@ dependencies = [ [[package]] name = "goose-test-support" -version = "1.23.0" +version = "1.24.0" dependencies = [ "axum 0.7.9", "rmcp 0.14.0", diff --git a/Cargo.toml b/Cargo.toml index c8d41b498eec..32bd5f2aa97d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "1.23.0" +version = "1.24.0" authors = ["Block "] license = "Apache-2.0" repository = "https://github.com/block/goose" diff --git a/crates/goose/src/providers/canonical/data/canonical_mapping_report.json b/crates/goose/src/providers/canonical/data/canonical_mapping_report.json index 381405467fa5..73dc889774b8 100644 --- a/crates/goose/src/providers/canonical/data/canonical_mapping_report.json +++ b/crates/goose/src/providers/canonical/data/canonical_mapping_report.json @@ -1,17 +1,17 @@ { - "timestamp": "2026-02-03T00:38:43.150867902+00:00", + "timestamp": "2026-02-10T00:46:11.029713069+00:00", "unmapped_models": [ { - "provider": "google", - "model": "aqa" + "provider": "anthropic", + "model": "claude-opus-4-6" }, { "provider": "google", - "model": "deep-research-pro-preview-12-2025" + "model": "aqa" }, { "provider": "google", - "model": "embedding-001" + "model": "deep-research-pro-preview-12-2025" }, { "provider": "google", @@ -105,10 +105,6 @@ "provider": "google", "model": "nano-banana-pro-preview" }, - { - "provider": "google", - "model": "text-embedding-004" - }, { "provider": "google", "model": "veo-2.0-generate-001" @@ -2497,10 +2493,6 @@ "provider": "openrouter", "model": "ai21/jamba-large-1.7" }, - { - "provider": "openrouter", - "model": "ai21/jamba-mini-1.7" - }, { "provider": "openrouter", "model": "alibaba/tongyi-deepresearch-30b-a3b" @@ -2541,6 +2533,10 @@ "provider": "openrouter", "model": "anthropic/claude-3.7-sonnet:thinking" }, + { + "provider": "openrouter", + "model": "anthropic/claude-opus-4.6" + }, { "provider": "openrouter", "model": "arcee-ai/trinity-mini" @@ -2573,18 +2569,6 @@ "provider": "openrouter", "model": "cohere/command-r-plus-08-2024" }, - { - "provider": "openrouter", - "model": "deepcogito/cogito-v2-preview-llama-109b-moe" - }, - { - "provider": "openrouter", - "model": "deepcogito/cogito-v2-preview-llama-405b" - }, - { - "provider": "openrouter", - "model": "deepcogito/cogito-v2-preview-llama-70b" - }, { "provider": "openrouter", "model": "deepseek/deepseek-chat" @@ -2749,18 +2733,6 @@ "provider": "openrouter", "model": "nvidia/nemotron-3-nano-30b-a3b" }, - { - "provider": "openrouter", - "model": "nvidia/nemotron-3-nano-30b-a3b:free" - }, - { - "provider": "openrouter", - "model": "nvidia/nemotron-nano-12b-v2-vl:free" - }, - { - "provider": "openrouter", - "model": "nvidia/nemotron-nano-9b-v2:free" - }, { "provider": "openrouter", "model": "openai/gpt-3.5-turbo" @@ -2825,14 +2797,6 @@ "provider": "openrouter", "model": "openai/gpt-5-image-mini" }, - { - "provider": "openrouter", - "model": "openai/gpt-oss-120b:free" - }, - { - "provider": "openrouter", - "model": "openai/gpt-oss-20b:free" - }, { "provider": "openrouter", "model": "openai/o1" @@ -2865,6 +2829,10 @@ "provider": "openrouter", "model": "openai/o4-mini-high" }, + { + "provider": "openrouter", + "model": "openrouter/aurora-alpha" + }, { "provider": "openrouter", "model": "openrouter/auto" @@ -2873,6 +2841,10 @@ "provider": "openrouter", "model": "openrouter/free" }, + { + "provider": "openrouter", + "model": "openrouter/pony-alpha" + }, { "provider": "openrouter", "model": "prime-intellect/intellect-3" @@ -2931,11 +2903,11 @@ }, { "provider": "openrouter", - "model": "qwen/qwen3-4b:free" + "model": "qwen/qwen3-8b" }, { "provider": "openrouter", - "model": "qwen/qwen3-8b" + "model": "qwen/qwen3-coder-next" }, { "provider": "openrouter", @@ -2943,7 +2915,7 @@ }, { "provider": "openrouter", - "model": "qwen/qwen3-next-80b-a3b-instruct:free" + "model": "qwen/qwen3-max-thinking" }, { "provider": "openrouter", @@ -2985,10 +2957,6 @@ "provider": "openrouter", "model": "sao10k/l3.1-euryale-70b" }, - { - "provider": "openrouter", - "model": "stepfun-ai/step3" - }, { "provider": "openrouter", "model": "stepfun/step-3.5-flash:free" @@ -3009,10 +2977,6 @@ "provider": "openrouter", "model": "tngtech/tng-r1t-chimera" }, - { - "provider": "openrouter", - "model": "tngtech/tng-r1t-chimera:free" - }, { "provider": "openrouter", "model": "upstage/solar-pro-3:free" @@ -3030,8 +2994,264 @@ "model": "z-ai/glm-4.6v" }, { - "provider": "openrouter", - "model": "z-ai/glm-4.7-flash" + "provider": "tetrate", + "model": "claude-opus-4-6" + }, + { + "provider": "tetrate", + "model": "deepinfra/MiniMaxAI/MiniMax-M2" + }, + { + "provider": "tetrate", + "model": "deepinfra/NousResearch/Hermes-3-Llama-3.1-405B" + }, + { + "provider": "tetrate", + "model": "deepinfra/NousResearch/Hermes-3-Llama-3.1-70B" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen2.5-72B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-14B" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-235B-A22B-Instruct-2507" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-235B-A22B-Thinking-2507" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-30B-A3B" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-32B" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-Next-80B-A3B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-VL-235B-A22B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/Qwen/Qwen3-VL-30B-A3B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-R1-0528" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-R1-0528-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-V3" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-V3-0324" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-V3.1" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus" + }, + { + "provider": "tetrate", + "model": "deepinfra/deepseek-ai/DeepSeek-V3.2" + }, + { + "provider": "tetrate", + "model": "deepinfra/google/gemini-2.0-flash-001" + }, + { + "provider": "tetrate", + "model": "deepinfra/google/gemma-3-12b-it" + }, + { + "provider": "tetrate", + "model": "deepinfra/google/gemma-3-27b-it" + }, + { + "provider": "tetrate", + "model": "deepinfra/google/gemma-3-4b-it" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Llama-3.2-3B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Llama-3.3-70B-Instruct-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Meta-Llama-3-8B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/mistralai/Mistral-Nemo-Instruct-2407" + }, + { + "provider": "tetrate", + "model": "deepinfra/mistralai/Mistral-Small-24B-Instruct-2501" + }, + { + "provider": "tetrate", + "model": "deepinfra/mistralai/Mistral-Small-3.2-24B-Instruct-2506" + }, + { + "provider": "tetrate", + "model": "deepinfra/mistralai/Mixtral-8x7B-Instruct-v0.1" + }, + { + "provider": "tetrate", + "model": "deepinfra/moonshotai/Kimi-K2-Instruct-0905" + }, + { + "provider": "tetrate", + "model": "deepinfra/moonshotai/Kimi-K2-Thinking" + }, + { + "provider": "tetrate", + "model": "deepinfra/nvidia/Llama-3.1-Nemotron-70B-Instruct" + }, + { + "provider": "tetrate", + "model": "deepinfra/nvidia/Llama-3.3-Nemotron-Super-49B-v1.5" + }, + { + "provider": "tetrate", + "model": "deepinfra/nvidia/NVIDIA-Nemotron-Nano-9B-v2" + }, + { + "provider": "tetrate", + "model": "deepinfra/nvidia/Nemotron-3-Nano-30B-A3B" + }, + { + "provider": "tetrate", + "model": "deepinfra/openai/gpt-oss-120b" + }, + { + "provider": "tetrate", + "model": "deepinfra/openai/gpt-oss-120b-Turbo" + }, + { + "provider": "tetrate", + "model": "deepinfra/openai/gpt-oss-20b" + }, + { + "provider": "tetrate", + "model": "deepinfra/zai-org/GLM-4.6" + }, + { + "provider": "tetrate", + "model": "deepinfra/zai-org/GLM-4.6V" + }, + { + "provider": "tetrate", + "model": "gemini-2.0-flash-001" + }, + { + "provider": "tetrate", + "model": "gemini-2.0-flash-exp" + }, + { + "provider": "tetrate", + "model": "gemini-2.0-flash-lite-001" + }, + { + "provider": "tetrate", + "model": "groq/llama-3.1-8b-instant" + }, + { + "provider": "tetrate", + "model": "groq/llama-3.3-70b-versatile" + }, + { + "provider": "tetrate", + "model": "groq/meta-llama/llama-4-maverick-17b-128e-instruct" + }, + { + "provider": "tetrate", + "model": "groq/meta-llama/llama-4-scout-17b-16e-instruct" + }, + { + "provider": "tetrate", + "model": "groq/moonshotai/kimi-k2-instruct-0905" + }, + { + "provider": "tetrate", + "model": "groq/openai/gpt-oss-120b" + }, + { + "provider": "tetrate", + "model": "groq/openai/gpt-oss-20b" + }, + { + "provider": "tetrate", + "model": "groq/qwen/qwen3-32b" + }, + { + "provider": "tetrate", + "model": "xai/grok-3-beta" + }, + { + "provider": "tetrate", + "model": "xai/grok-3-fast-beta" + }, + { + "provider": "tetrate", + "model": "xai/grok-3-mini-beta" + }, + { + "provider": "tetrate", + "model": "xai/grok-3-mini-fast-beta" + }, + { + "provider": "tetrate", + "model": "xai/grok-code-fast" }, { "provider": "xai", @@ -3041,6 +3261,10 @@ "provider": "xai", "model": "grok-imagine-image" }, + { + "provider": "xai", + "model": "grok-imagine-image-pro" + }, { "provider": "xai", "model": "grok-imagine-video" @@ -3578,10 +3802,22 @@ "provider_model": "nousresearch/hermes-4-70b", "canonical_model": "openrouter/nousresearch/hermes-4-70b" }, + { + "provider_model": "nvidia/nemotron-3-nano-30b-a3b:free", + "canonical_model": "openrouter/nvidia/nemotron-3-nano-30b-a3b:free" + }, + { + "provider_model": "nvidia/nemotron-nano-12b-v2-vl:free", + "canonical_model": "openrouter/nvidia/nemotron-nano-12b-v2-vl:free" + }, { "provider_model": "nvidia/nemotron-nano-9b-v2", "canonical_model": "openrouter/nvidia/nemotron-nano-9b-v2" }, + { + "provider_model": "nvidia/nemotron-nano-9b-v2:free", + "canonical_model": "openrouter/nvidia/nemotron-nano-9b-v2:free" + }, { "provider_model": "openai/gpt-4.1", "canonical_model": "openrouter/openai/gpt-4.1" @@ -3666,10 +3902,18 @@ "provider_model": "openai/gpt-oss-120b:exacto", "canonical_model": "openrouter/openai/gpt-oss-120b:exacto" }, + { + "provider_model": "openai/gpt-oss-120b:free", + "canonical_model": "openrouter/openai/gpt-oss-120b:free" + }, { "provider_model": "openai/gpt-oss-20b", "canonical_model": "openrouter/openai/gpt-oss-20b" }, + { + "provider_model": "openai/gpt-oss-20b:free", + "canonical_model": "openrouter/openai/gpt-oss-20b:free" + }, { "provider_model": "openai/gpt-oss-safeguard-20b", "canonical_model": "openrouter/openai/gpt-oss-safeguard-20b" @@ -3690,6 +3934,10 @@ "provider_model": "qwen/qwen3-30b-a3b-thinking-2507", "canonical_model": "openrouter/qwen/qwen3-30b-a3b-thinking" }, + { + "provider_model": "qwen/qwen3-4b:free", + "canonical_model": "openrouter/qwen/qwen3-4b:free" + }, { "provider_model": "qwen/qwen3-coder", "canonical_model": "openrouter/qwen/qwen3-coder" @@ -3718,10 +3966,18 @@ "provider_model": "qwen/qwen3-next-80b-a3b-instruct", "canonical_model": "openrouter/qwen/qwen3-next-80b-a3b-instruct" }, + { + "provider_model": "qwen/qwen3-next-80b-a3b-instruct:free", + "canonical_model": "openrouter/qwen/qwen3-next-80b-a3b-instruct:free" + }, { "provider_model": "qwen/qwen3-next-80b-a3b-thinking", "canonical_model": "openrouter/qwen/qwen3-next-80b-a3b-thinking" }, + { + "provider_model": "tngtech/tng-r1t-chimera:free", + "canonical_model": "openrouter/tngtech/tng-r1t-chimera:free" + }, { "provider_model": "x-ai/grok-3", "canonical_model": "openrouter/x-ai/grok-3" @@ -3781,1134 +4037,2053 @@ { "provider_model": "z-ai/glm-4.7", "canonical_model": "openrouter/z-ai/glm-4.7" + }, + { + "provider_model": "z-ai/glm-4.7-flash", + "canonical_model": "openrouter/z-ai/glm-4.7-flash" } ], - "tetrate": [], - "venice": [], - "xai": [ + "tetrate": [ { - "provider_model": "grok-2-vision-1212", - "canonical_model": "x-ai/grok-2-vision" + "provider_model": "claude-3-5-haiku-20241022", + "canonical_model": "anthropic/claude-3.5-haiku" }, { - "provider_model": "grok-3", - "canonical_model": "x-ai/grok-3" + "provider_model": "claude-3-5-haiku-latest", + "canonical_model": "anthropic/claude-3.5-haiku" }, { - "provider_model": "grok-3-mini", - "canonical_model": "x-ai/grok-3-mini" + "provider_model": "claude-3-7-sonnet-20250219", + "canonical_model": "anthropic/claude-3.7-sonnet" }, { - "provider_model": "grok-4-0709", - "canonical_model": "x-ai/grok-4" + "provider_model": "claude-3-7-sonnet-latest", + "canonical_model": "anthropic/claude-3.7-sonnet" }, { - "provider_model": "grok-4-1-fast-non-reasoning", - "canonical_model": "x-ai/grok-4.1-fast-non" + "provider_model": "claude-3-haiku-20240307", + "canonical_model": "anthropic/claude-3-haiku" }, { - "provider_model": "grok-4-1-fast-reasoning", - "canonical_model": "x-ai/grok-4.1-fast" + "provider_model": "claude-3-opus-20240229", + "canonical_model": "anthropic/claude-3-opus" }, { - "provider_model": "grok-4-fast-non-reasoning", - "canonical_model": "x-ai/grok-4-fast-non" + "provider_model": "claude-haiku-4-5", + "canonical_model": "anthropic/claude-haiku-4.5" }, { - "provider_model": "grok-4-fast-reasoning", - "canonical_model": "x-ai/grok-4-fast" + "provider_model": "claude-haiku-4-5-20251001", + "canonical_model": "anthropic/claude-haiku-4.5" }, { - "provider_model": "grok-code-fast-1", - "canonical_model": "x-ai/grok-code-fast-1" - } - ] - }, - "mapped_models": [ - { - "provider": "anthropic", - "model": "claude-3-5-haiku-20241022", - "canonical": "anthropic/claude-3.5-haiku", - "recommended": true - }, - { - "provider": "anthropic", - "model": "claude-3-7-sonnet-20250219", - "canonical": "anthropic/claude-3.7-sonnet", - "recommended": true - }, - { - "provider": "anthropic", - "model": "claude-3-haiku-20240307", - "canonical": "anthropic/claude-3-haiku", + "provider_model": "claude-opus-4-0", + "canonical_model": "anthropic/claude-opus-4.0" + }, + { + "provider_model": "claude-opus-4-1", + "canonical_model": "anthropic/claude-opus-4.1" + }, + { + "provider_model": "claude-opus-4-1-20250805", + "canonical_model": "anthropic/claude-opus-4.1" + }, + { + "provider_model": "claude-opus-4-20250514", + "canonical_model": "anthropic/claude-opus-4" + }, + { + "provider_model": "claude-opus-4-5", + "canonical_model": "anthropic/claude-opus-4.5" + }, + { + "provider_model": "claude-opus-4-5-20251101", + "canonical_model": "anthropic/claude-opus-4.5" + }, + { + "provider_model": "claude-sonnet-4-0", + "canonical_model": "anthropic/claude-sonnet-4.0" + }, + { + "provider_model": "claude-sonnet-4-20250514", + "canonical_model": "anthropic/claude-sonnet-4" + }, + { + "provider_model": "claude-sonnet-4-5", + "canonical_model": "anthropic/claude-sonnet-4.5" + }, + { + "provider_model": "claude-sonnet-4-5-20250929", + "canonical_model": "anthropic/claude-sonnet-4.5" + }, + { + "provider_model": "deepinfra/anthropic/claude-3-7-sonnet-latest", + "canonical_model": "anthropic/claude-3.7-sonnet" + }, + { + "provider_model": "deepinfra/anthropic/claude-4-opus", + "canonical_model": "anthropic/claude-opus-4" + }, + { + "provider_model": "deepinfra/anthropic/claude-4-sonnet", + "canonical_model": "anthropic/claude-sonnet-4" + }, + { + "provider_model": "deepinfra/google/gemini-2.5-flash", + "canonical_model": "google/gemini-2.5-flash" + }, + { + "provider_model": "deepinfra/google/gemini-2.5-pro", + "canonical_model": "google/gemini-2.5-pro" + }, + { + "provider_model": "gemini-2.0-flash", + "canonical_model": "google/gemini-2.0-flash" + }, + { + "provider_model": "gemini-2.0-flash-lite", + "canonical_model": "google/gemini-2.0-flash-lite" + }, + { + "provider_model": "gemini-2.5-flash", + "canonical_model": "google/gemini-2.5-flash" + }, + { + "provider_model": "gemini-2.5-flash-lite", + "canonical_model": "google/gemini-2.5-flash-lite" + }, + { + "provider_model": "gemini-2.5-flash-lite-preview-09-2025", + "canonical_model": "google/gemini-2.5-flash-lite-preview-09" + }, + { + "provider_model": "gemini-2.5-flash-preview-09-2025", + "canonical_model": "google/gemini-2.5-flash-preview-09" + }, + { + "provider_model": "gemini-2.5-pro", + "canonical_model": "google/gemini-2.5-pro" + }, + { + "provider_model": "gemini-3-pro-preview", + "canonical_model": "google/gemini-3-pro-preview" + }, + { + "provider_model": "gpt-4-turbo", + "canonical_model": "openai/gpt-4-turbo" + }, + { + "provider_model": "gpt-4-turbo-2024-04-09", + "canonical_model": "openai/gpt-4-turbo" + }, + { + "provider_model": "gpt-4.1", + "canonical_model": "openai/gpt-4.1" + }, + { + "provider_model": "gpt-4.1-2025-04-14", + "canonical_model": "openai/gpt-4.1" + }, + { + "provider_model": "gpt-4.1-mini", + "canonical_model": "openai/gpt-4.1-mini" + }, + { + "provider_model": "gpt-4.1-mini-2025-04-14", + "canonical_model": "openai/gpt-4.1-mini" + }, + { + "provider_model": "gpt-4.1-nano", + "canonical_model": "openai/gpt-4.1-nano" + }, + { + "provider_model": "gpt-4.1-nano-2025-04-14", + "canonical_model": "openai/gpt-4.1-nano" + }, + { + "provider_model": "gpt-4o", + "canonical_model": "openai/gpt-4o" + }, + { + "provider_model": "gpt-4o-2024-05-13", + "canonical_model": "openai/gpt-4o" + }, + { + "provider_model": "gpt-4o-2024-08-06", + "canonical_model": "openai/gpt-4o" + }, + { + "provider_model": "gpt-4o-2024-11-20", + "canonical_model": "openai/gpt-4o" + }, + { + "provider_model": "gpt-4o-mini", + "canonical_model": "openai/gpt-4o-mini" + }, + { + "provider_model": "gpt-4o-mini-2024-07-18", + "canonical_model": "openai/gpt-4o-mini" + }, + { + "provider_model": "gpt-5", + "canonical_model": "openai/gpt-5" + }, + { + "provider_model": "gpt-5-2025-08-07", + "canonical_model": "openai/gpt-5" + }, + { + "provider_model": "gpt-5-chat-latest", + "canonical_model": "openai/gpt-5-chat" + }, + { + "provider_model": "gpt-5-mini", + "canonical_model": "openai/gpt-5-mini" + }, + { + "provider_model": "gpt-5-mini-2025-08-07", + "canonical_model": "openai/gpt-5-mini" + }, + { + "provider_model": "gpt-5-nano", + "canonical_model": "openai/gpt-5-nano" + }, + { + "provider_model": "gpt-5-nano-2025-08-07", + "canonical_model": "openai/gpt-5-nano" + }, + { + "provider_model": "gpt-5.1", + "canonical_model": "openai/gpt-5.1" + }, + { + "provider_model": "gpt-5.1-2025-11-13", + "canonical_model": "openai/gpt-5.1" + }, + { + "provider_model": "gpt-5.1-chat-latest", + "canonical_model": "openai/gpt-5.1-chat" + }, + { + "provider_model": "gpt-5.2", + "canonical_model": "openai/gpt-5.2" + }, + { + "provider_model": "gpt-5.2-2025-12-11", + "canonical_model": "openai/gpt-5.2" + }, + { + "provider_model": "o1", + "canonical_model": "openai/o1" + }, + { + "provider_model": "o1-2024-12-17", + "canonical_model": "openai/o1" + }, + { + "provider_model": "o3", + "canonical_model": "openai/o3" + }, + { + "provider_model": "o3-2025-04-16", + "canonical_model": "openai/o3" + }, + { + "provider_model": "o3-mini", + "canonical_model": "openai/o3-mini" + }, + { + "provider_model": "o3-mini-2025-01-31", + "canonical_model": "openai/o3-mini" + }, + { + "provider_model": "o4-mini", + "canonical_model": "openai/o4-mini" + }, + { + "provider_model": "o4-mini-2025-04-16", + "canonical_model": "openai/o4-mini" + }, + { + "provider_model": "xai/grok-2-vision", + "canonical_model": "x-ai/grok-2-vision" + }, + { + "provider_model": "xai/grok-2-vision-1212", + "canonical_model": "x-ai/grok-2-vision" + }, + { + "provider_model": "xai/grok-2-vision-latest", + "canonical_model": "x-ai/grok-2-vision" + }, + { + "provider_model": "xai/grok-3", + "canonical_model": "x-ai/grok-3" + }, + { + "provider_model": "xai/grok-3-fast", + "canonical_model": "x-ai/grok-3-fast" + }, + { + "provider_model": "xai/grok-3-fast-latest", + "canonical_model": "x-ai/grok-3-fast" + }, + { + "provider_model": "xai/grok-3-latest", + "canonical_model": "x-ai/grok-3" + }, + { + "provider_model": "xai/grok-3-mini", + "canonical_model": "x-ai/grok-3-mini" + }, + { + "provider_model": "xai/grok-3-mini-fast", + "canonical_model": "x-ai/grok-3-mini-fast" + }, + { + "provider_model": "xai/grok-3-mini-fast-latest", + "canonical_model": "x-ai/grok-3-mini-fast" + }, + { + "provider_model": "xai/grok-3-mini-latest", + "canonical_model": "x-ai/grok-3-mini" + }, + { + "provider_model": "xai/grok-4", + "canonical_model": "x-ai/grok-4" + }, + { + "provider_model": "xai/grok-4-0709", + "canonical_model": "x-ai/grok-4" + }, + { + "provider_model": "xai/grok-4-fast", + "canonical_model": "x-ai/grok-4-fast" + }, + { + "provider_model": "xai/grok-4-fast-non-reasoning", + "canonical_model": "x-ai/grok-4-fast-non" + }, + { + "provider_model": "xai/grok-4-fast-non-reasoning-latest", + "canonical_model": "x-ai/grok-4-fast-non" + }, + { + "provider_model": "xai/grok-4-fast-reasoning", + "canonical_model": "x-ai/grok-4-fast" + }, + { + "provider_model": "xai/grok-4-fast-reasoning-latest", + "canonical_model": "x-ai/grok-4-fast" + }, + { + "provider_model": "xai/grok-4-latest", + "canonical_model": "x-ai/grok-4" + }, + { + "provider_model": "xai/grok-code-fast-1", + "canonical_model": "x-ai/grok-code-fast-1" + }, + { + "provider_model": "xai/grok-code-fast-1-0825", + "canonical_model": "x-ai/grok-code-fast-1" + } + ], + "venice": [], + "xai": [ + { + "provider_model": "grok-2-vision-1212", + "canonical_model": "x-ai/grok-2-vision" + }, + { + "provider_model": "grok-3", + "canonical_model": "x-ai/grok-3" + }, + { + "provider_model": "grok-3-mini", + "canonical_model": "x-ai/grok-3-mini" + }, + { + "provider_model": "grok-4-0709", + "canonical_model": "x-ai/grok-4" + }, + { + "provider_model": "grok-4-1-fast-non-reasoning", + "canonical_model": "x-ai/grok-4.1-fast-non" + }, + { + "provider_model": "grok-4-1-fast-reasoning", + "canonical_model": "x-ai/grok-4.1-fast" + }, + { + "provider_model": "grok-4-fast-non-reasoning", + "canonical_model": "x-ai/grok-4-fast-non" + }, + { + "provider_model": "grok-4-fast-reasoning", + "canonical_model": "x-ai/grok-4-fast" + }, + { + "provider_model": "grok-code-fast-1", + "canonical_model": "x-ai/grok-code-fast-1" + } + ] + }, + "mapped_models": [ + { + "provider": "anthropic", + "model": "claude-3-5-haiku-20241022", + "canonical": "anthropic/claude-3.5-haiku", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-3-7-sonnet-20250219", + "canonical": "anthropic/claude-3.7-sonnet", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-3-haiku-20240307", + "canonical": "anthropic/claude-3-haiku", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-haiku-4-5-20251001", + "canonical": "anthropic/claude-haiku-4.5", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-opus-4-1-20250805", + "canonical": "anthropic/claude-opus-4.1", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-opus-4-20250514", + "canonical": "anthropic/claude-opus-4", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-opus-4-5-20251101", + "canonical": "anthropic/claude-opus-4.5", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-sonnet-4-20250514", + "canonical": "anthropic/claude-sonnet-4", + "recommended": true + }, + { + "provider": "anthropic", + "model": "claude-sonnet-4-5-20250929", + "canonical": "anthropic/claude-sonnet-4.5", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.0-flash", + "canonical": "google/gemini-2.0-flash", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.0-flash-lite", + "canonical": "google/gemini-2.0-flash-lite", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash", + "canonical": "google/gemini-2.5-flash", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash-image", + "canonical": "google/gemini-2.5-flash-image", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash-lite", + "canonical": "google/gemini-2.5-flash-lite", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash-lite-preview-09-2025", + "canonical": "google/gemini-2.5-flash-lite-preview-09", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash-preview-09-2025", + "canonical": "google/gemini-2.5-flash-preview-09", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-flash-preview-tts", + "canonical": "google/gemini-2.5-flash-preview-tts", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-pro", + "canonical": "google/gemini-2.5-pro", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-2.5-pro-preview-tts", + "canonical": "google/gemini-2.5-pro-preview-tts", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-3-flash-preview", + "canonical": "google/gemini-3-flash-preview", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-3-pro-preview", + "canonical": "google/gemini-3-pro-preview", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-embedding-001", + "canonical": "google/gemini-embedding-001", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-flash-latest", + "canonical": "google/gemini-flash", + "recommended": true + }, + { + "provider": "google", + "model": "gemini-flash-lite-latest", + "canonical": "google/gemini-flash-lite", + "recommended": true + }, + { + "provider": "openai", + "model": "codex-mini-latest", + "canonical": "openai/codex-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-3.5-turbo", + "canonical": "openai/gpt-3.5-turbo", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-3.5-turbo-0125", + "canonical": "openai/gpt-3.5-turbo", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-3.5-turbo-1106", + "canonical": "openai/gpt-3.5-turbo", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4", + "canonical": "openai/gpt-4", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4-0314", + "canonical": "openai/gpt-4", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4-0613", + "canonical": "openai/gpt-4", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4-turbo", + "canonical": "openai/gpt-4-turbo", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4-turbo-2024-04-09", + "canonical": "openai/gpt-4-turbo", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1", + "canonical": "openai/gpt-4.1", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1-2025-04-14", + "canonical": "openai/gpt-4.1", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1-mini", + "canonical": "openai/gpt-4.1-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1-mini-2025-04-14", + "canonical": "openai/gpt-4.1-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1-nano", + "canonical": "openai/gpt-4.1-nano", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4.1-nano-2025-04-14", + "canonical": "openai/gpt-4.1-nano", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o", + "canonical": "openai/gpt-4o", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o-2024-05-13", + "canonical": "openai/gpt-4o", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o-2024-08-06", + "canonical": "openai/gpt-4o", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o-2024-11-20", + "canonical": "openai/gpt-4o", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o-mini", + "canonical": "openai/gpt-4o-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-4o-mini-2024-07-18", + "canonical": "openai/gpt-4o-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5", + "canonical": "openai/gpt-5", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-2025-08-07", + "canonical": "openai/gpt-5", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-chat-latest", + "canonical": "openai/gpt-5-chat", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-codex", + "canonical": "openai/gpt-5-codex", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-mini", + "canonical": "openai/gpt-5-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-mini-2025-08-07", + "canonical": "openai/gpt-5-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-nano", + "canonical": "openai/gpt-5-nano", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-nano-2025-08-07", + "canonical": "openai/gpt-5-nano", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-pro", + "canonical": "openai/gpt-5-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5-pro-2025-10-06", + "canonical": "openai/gpt-5-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1", + "canonical": "openai/gpt-5.1", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1-2025-11-13", + "canonical": "openai/gpt-5.1", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1-chat-latest", + "canonical": "openai/gpt-5.1-chat", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1-codex", + "canonical": "openai/gpt-5.1-codex", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1-codex-max", + "canonical": "openai/gpt-5.1-codex-max", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.1-codex-mini", + "canonical": "openai/gpt-5.1-codex-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2", + "canonical": "openai/gpt-5.2", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2-2025-12-11", + "canonical": "openai/gpt-5.2", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2-chat-latest", + "canonical": "openai/gpt-5.2-chat", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2-codex", + "canonical": "openai/gpt-5.2-codex", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2-pro", + "canonical": "openai/gpt-5.2-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "gpt-5.2-pro-2025-12-11", + "canonical": "openai/gpt-5.2-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "o1", + "canonical": "openai/o1", + "recommended": true + }, + { + "provider": "openai", + "model": "o1-2024-12-17", + "canonical": "openai/o1", + "recommended": true + }, + { + "provider": "openai", + "model": "o1-pro", + "canonical": "openai/o1-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "o1-pro-2025-03-19", + "canonical": "openai/o1-pro", + "recommended": true + }, + { + "provider": "openai", + "model": "o3", + "canonical": "openai/o3", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-2025-04-16", + "canonical": "openai/o3", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-deep-research", + "canonical": "openai/o3-deep-research", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-deep-research-2025-06-26", + "canonical": "openai/o3-deep-research", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-mini", + "canonical": "openai/o3-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-mini-2025-01-31", + "canonical": "openai/o3-mini", + "recommended": true + }, + { + "provider": "openai", + "model": "o3-pro", + "canonical": "openai/o3-pro", "recommended": true }, { - "provider": "anthropic", - "model": "claude-haiku-4-5-20251001", - "canonical": "anthropic/claude-haiku-4.5", + "provider": "openai", + "model": "o3-pro-2025-06-10", + "canonical": "openai/o3-pro", "recommended": true }, { - "provider": "anthropic", - "model": "claude-opus-4-1-20250805", - "canonical": "anthropic/claude-opus-4.1", + "provider": "openai", + "model": "o4-mini", + "canonical": "openai/o4-mini", "recommended": true }, { - "provider": "anthropic", - "model": "claude-opus-4-20250514", - "canonical": "anthropic/claude-opus-4", + "provider": "openai", + "model": "o4-mini-2025-04-16", + "canonical": "openai/o4-mini", "recommended": true }, { - "provider": "anthropic", - "model": "claude-opus-4-5-20251101", - "canonical": "anthropic/claude-opus-4.5", + "provider": "openai", + "model": "o4-mini-deep-research", + "canonical": "openai/o4-mini-deep-research", "recommended": true }, { - "provider": "anthropic", - "model": "claude-sonnet-4-20250514", - "canonical": "anthropic/claude-sonnet-4", + "provider": "openai", + "model": "o4-mini-deep-research-2025-06-26", + "canonical": "openai/o4-mini-deep-research", "recommended": true }, { - "provider": "anthropic", - "model": "claude-sonnet-4-5-20250929", - "canonical": "anthropic/claude-sonnet-4.5", + "provider": "openai", + "model": "text-embedding-3-large", + "canonical": "openai/text-embedding-3-large", "recommended": true }, { - "provider": "google", - "model": "gemini-2.0-flash", - "canonical": "google/gemini-2.0-flash", + "provider": "openai", + "model": "text-embedding-3-small", + "canonical": "openai/text-embedding-3-small", "recommended": true }, { - "provider": "google", - "model": "gemini-2.0-flash-lite", - "canonical": "google/gemini-2.0-flash-lite", + "provider": "openai", + "model": "text-embedding-ada-002", + "canonical": "openai/text-embedding-ada-002", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash", - "canonical": "google/gemini-2.5-flash", + "provider": "openrouter", + "model": "anthropic/claude-3.5-haiku", + "canonical": "openrouter/anthropic/claude-3.5-haiku", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash-image", - "canonical": "google/gemini-2.5-flash-image", + "provider": "openrouter", + "model": "anthropic/claude-3.7-sonnet", + "canonical": "openrouter/anthropic/claude-3.7-sonnet", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash-lite", - "canonical": "google/gemini-2.5-flash-lite", + "provider": "openrouter", + "model": "anthropic/claude-haiku-4.5", + "canonical": "openrouter/anthropic/claude-haiku-4.5", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash-lite-preview-09-2025", - "canonical": "google/gemini-2.5-flash-lite-preview-09", + "provider": "openrouter", + "model": "anthropic/claude-opus-4", + "canonical": "openrouter/anthropic/claude-opus-4", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash-preview-09-2025", - "canonical": "google/gemini-2.5-flash-preview-09", + "provider": "openrouter", + "model": "anthropic/claude-opus-4.1", + "canonical": "openrouter/anthropic/claude-opus-4.1", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-flash-preview-tts", - "canonical": "google/gemini-2.5-flash-preview-tts", + "provider": "openrouter", + "model": "anthropic/claude-opus-4.5", + "canonical": "openrouter/anthropic/claude-opus-4.5", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-pro", - "canonical": "google/gemini-2.5-pro", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-4", + "canonical": "openrouter/anthropic/claude-sonnet-4", "recommended": true }, { - "provider": "google", - "model": "gemini-2.5-pro-preview-tts", - "canonical": "google/gemini-2.5-pro-preview-tts", + "provider": "openrouter", + "model": "anthropic/claude-sonnet-4.5", + "canonical": "openrouter/anthropic/claude-sonnet-4.5", "recommended": true }, { - "provider": "google", - "model": "gemini-3-flash-preview", - "canonical": "google/gemini-3-flash-preview", + "provider": "openrouter", + "model": "arcee-ai/trinity-large-preview:free", + "canonical": "openrouter/arcee-ai/trinity-large-preview:free", "recommended": true }, { - "provider": "google", - "model": "gemini-3-pro-preview", - "canonical": "google/gemini-3-pro-preview", + "provider": "openrouter", + "model": "arcee-ai/trinity-mini:free", + "canonical": "openrouter/arcee-ai/trinity-mini:free", "recommended": true }, { - "provider": "google", - "model": "gemini-embedding-001", - "canonical": "google/gemini-embedding-001", + "provider": "openrouter", + "model": "deepseek/deepseek-chat-v3-0324", + "canonical": "openrouter/deepseek/deepseek-chat-v3", "recommended": true }, { - "provider": "google", - "model": "gemini-flash-latest", - "canonical": "google/gemini-flash", + "provider": "openrouter", + "model": "deepseek/deepseek-chat-v3.1", + "canonical": "openrouter/deepseek/deepseek-chat-v3.1", "recommended": true }, { - "provider": "google", - "model": "gemini-flash-lite-latest", - "canonical": "google/gemini-flash-lite", + "provider": "openrouter", + "model": "deepseek/deepseek-v3.1-terminus", + "canonical": "openrouter/deepseek/deepseek-v3.1-terminus", "recommended": true }, { - "provider": "openai", - "model": "codex-mini-latest", - "canonical": "openai/codex-mini", + "provider": "openrouter", + "model": "deepseek/deepseek-v3.1-terminus:exacto", + "canonical": "openrouter/deepseek/deepseek-v3.1-terminus:exacto", "recommended": true }, { - "provider": "openai", - "model": "gpt-3.5-turbo", - "canonical": "openai/gpt-3.5-turbo", + "provider": "openrouter", + "model": "deepseek/deepseek-v3.2", + "canonical": "openrouter/deepseek/deepseek-v3.2", "recommended": true }, { - "provider": "openai", - "model": "gpt-3.5-turbo-0125", - "canonical": "openai/gpt-3.5-turbo", + "provider": "openrouter", + "model": "google/gemini-2.0-flash-001", + "canonical": "openrouter/google/gemini-2.0-flash-001", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-flash", + "canonical": "openrouter/google/gemini-2.5-flash", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-flash-lite", + "canonical": "openrouter/google/gemini-2.5-flash-lite", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-flash-lite-preview-09-2025", + "canonical": "openrouter/google/gemini-2.5-flash-lite-preview-09", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-flash-preview-09-2025", + "canonical": "openrouter/google/gemini-2.5-flash-preview-09", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-pro", + "canonical": "openrouter/google/gemini-2.5-pro", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-2.5-pro-preview-05-06", + "canonical": "openrouter/google/gemini-2.5-pro-preview-05-06", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-3-flash-preview", + "canonical": "openrouter/google/gemini-3-flash-preview", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemini-3-pro-preview", + "canonical": "openrouter/google/gemini-3-pro-preview", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemma-3-27b-it", + "canonical": "openrouter/google/gemma-3-27b-it", + "recommended": true + }, + { + "provider": "openrouter", + "model": "google/gemma-3-27b-it:free", + "canonical": "openrouter/google/gemma-3-27b-it:free", + "recommended": true + }, + { + "provider": "openrouter", + "model": "meta-llama/llama-3.3-70b-instruct:free", + "canonical": "openrouter/meta-llama/llama-3.3-70b-instruct:free", + "recommended": true + }, + { + "provider": "openrouter", + "model": "minimax/minimax-m1", + "canonical": "openrouter/minimax/minimax-m1", + "recommended": true + }, + { + "provider": "openrouter", + "model": "minimax/minimax-m2", + "canonical": "openrouter/minimax/minimax-m2", + "recommended": true + }, + { + "provider": "openrouter", + "model": "minimax/minimax-m2.1", + "canonical": "openrouter/minimax/minimax-m2.1", + "recommended": true + }, + { + "provider": "openrouter", + "model": "mistralai/codestral-2508", + "canonical": "openrouter/mistralai/codestral", + "recommended": true + }, + { + "provider": "openrouter", + "model": "mistralai/devstral-2512", + "canonical": "openrouter/mistralai/devstral", + "recommended": true + }, + { + "provider": "openrouter", + "model": "mistralai/devstral-medium", + "canonical": "openrouter/mistralai/devstral-medium", + "recommended": true + }, + { + "provider": "openrouter", + "model": "mistralai/devstral-small", + "canonical": "openrouter/mistralai/devstral-small", + "recommended": true + }, + { + "provider": "openrouter", + "model": "mistralai/mistral-medium-3", + "canonical": "openrouter/mistralai/mistral-medium-3", "recommended": true }, { - "provider": "openai", - "model": "gpt-3.5-turbo-1106", - "canonical": "openai/gpt-3.5-turbo", + "provider": "openrouter", + "model": "mistralai/mistral-medium-3.1", + "canonical": "openrouter/mistralai/mistral-medium-3.1", "recommended": true }, { - "provider": "openai", - "model": "gpt-4", - "canonical": "openai/gpt-4", + "provider": "openrouter", + "model": "mistralai/mistral-small-3.1-24b-instruct", + "canonical": "openrouter/mistralai/mistral-small-3.1-24b-instruct", "recommended": true }, { - "provider": "openai", - "model": "gpt-4-0314", - "canonical": "openai/gpt-4", + "provider": "openrouter", + "model": "mistralai/mistral-small-3.2-24b-instruct", + "canonical": "openrouter/mistralai/mistral-small-3.2-24b-instruct", "recommended": true }, { - "provider": "openai", - "model": "gpt-4-0613", - "canonical": "openai/gpt-4", + "provider": "openrouter", + "model": "moonshotai/kimi-k2", + "canonical": "openrouter/moonshotai/kimi-k2", "recommended": true }, { - "provider": "openai", - "model": "gpt-4-turbo", - "canonical": "openai/gpt-4-turbo", + "provider": "openrouter", + "model": "moonshotai/kimi-k2-0905", + "canonical": "openrouter/moonshotai/kimi-k2", "recommended": true }, { - "provider": "openai", - "model": "gpt-4-turbo-2024-04-09", - "canonical": "openai/gpt-4-turbo", + "provider": "openrouter", + "model": "moonshotai/kimi-k2-0905:exacto", + "canonical": "openrouter/moonshotai/kimi-k2-0905:exacto", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1", - "canonical": "openai/gpt-4.1", + "provider": "openrouter", + "model": "moonshotai/kimi-k2-thinking", + "canonical": "openrouter/moonshotai/kimi-k2-thinking", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1-2025-04-14", - "canonical": "openai/gpt-4.1", + "provider": "openrouter", + "model": "moonshotai/kimi-k2.5", + "canonical": "openrouter/moonshotai/kimi-k2.5", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1-mini", - "canonical": "openai/gpt-4.1-mini", + "provider": "openrouter", + "model": "nousresearch/hermes-4-70b", + "canonical": "openrouter/nousresearch/hermes-4-70b", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1-mini-2025-04-14", - "canonical": "openai/gpt-4.1-mini", + "provider": "openrouter", + "model": "nvidia/nemotron-3-nano-30b-a3b:free", + "canonical": "openrouter/nvidia/nemotron-3-nano-30b-a3b:free", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1-nano", - "canonical": "openai/gpt-4.1-nano", + "provider": "openrouter", + "model": "nvidia/nemotron-nano-12b-v2-vl:free", + "canonical": "openrouter/nvidia/nemotron-nano-12b-v2-vl:free", "recommended": true }, { - "provider": "openai", - "model": "gpt-4.1-nano-2025-04-14", - "canonical": "openai/gpt-4.1-nano", + "provider": "openrouter", + "model": "nvidia/nemotron-nano-9b-v2", + "canonical": "openrouter/nvidia/nemotron-nano-9b-v2", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o", - "canonical": "openai/gpt-4o", + "provider": "openrouter", + "model": "nvidia/nemotron-nano-9b-v2:free", + "canonical": "openrouter/nvidia/nemotron-nano-9b-v2:free", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o-2024-05-13", - "canonical": "openai/gpt-4o", + "provider": "openrouter", + "model": "openai/gpt-4.1", + "canonical": "openrouter/openai/gpt-4.1", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o-2024-08-06", - "canonical": "openai/gpt-4o", + "provider": "openrouter", + "model": "openai/gpt-4.1-mini", + "canonical": "openrouter/openai/gpt-4.1-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o-2024-11-20", - "canonical": "openai/gpt-4o", + "provider": "openrouter", + "model": "openai/gpt-4o-mini", + "canonical": "openrouter/openai/gpt-4o-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o-mini", - "canonical": "openai/gpt-4o-mini", + "provider": "openrouter", + "model": "openai/gpt-4o-mini-2024-07-18", + "canonical": "openrouter/openai/gpt-4o-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-4o-mini-2024-07-18", - "canonical": "openai/gpt-4o-mini", + "provider": "openrouter", + "model": "openai/gpt-5", + "canonical": "openrouter/openai/gpt-5", "recommended": true }, { - "provider": "openai", - "model": "gpt-5", - "canonical": "openai/gpt-5", + "provider": "openrouter", + "model": "openai/gpt-5-codex", + "canonical": "openrouter/openai/gpt-5-codex", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-2025-08-07", - "canonical": "openai/gpt-5", + "provider": "openrouter", + "model": "openai/gpt-5-image", + "canonical": "openrouter/openai/gpt-5-image", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-chat-latest", - "canonical": "openai/gpt-5-chat", + "provider": "openrouter", + "model": "openai/gpt-5-mini", + "canonical": "openrouter/openai/gpt-5-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-codex", - "canonical": "openai/gpt-5-codex", + "provider": "openrouter", + "model": "openai/gpt-5-nano", + "canonical": "openrouter/openai/gpt-5-nano", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-mini", - "canonical": "openai/gpt-5-mini", + "provider": "openrouter", + "model": "openai/gpt-5-pro", + "canonical": "openrouter/openai/gpt-5-pro", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-mini-2025-08-07", - "canonical": "openai/gpt-5-mini", + "provider": "openrouter", + "model": "openai/gpt-5.1", + "canonical": "openrouter/openai/gpt-5.1", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-nano", - "canonical": "openai/gpt-5-nano", + "provider": "openrouter", + "model": "openai/gpt-5.1-chat", + "canonical": "openrouter/openai/gpt-5.1-chat", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-nano-2025-08-07", - "canonical": "openai/gpt-5-nano", + "provider": "openrouter", + "model": "openai/gpt-5.1-codex", + "canonical": "openrouter/openai/gpt-5.1-codex", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-pro", - "canonical": "openai/gpt-5-pro", + "provider": "openrouter", + "model": "openai/gpt-5.1-codex-max", + "canonical": "openrouter/openai/gpt-5.1-codex-max", "recommended": true }, { - "provider": "openai", - "model": "gpt-5-pro-2025-10-06", - "canonical": "openai/gpt-5-pro", + "provider": "openrouter", + "model": "openai/gpt-5.1-codex-mini", + "canonical": "openrouter/openai/gpt-5.1-codex-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1", - "canonical": "openai/gpt-5.1", + "provider": "openrouter", + "model": "openai/gpt-5.2", + "canonical": "openrouter/openai/gpt-5.2", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1-2025-11-13", - "canonical": "openai/gpt-5.1", + "provider": "openrouter", + "model": "openai/gpt-5.2-chat", + "canonical": "openrouter/openai/gpt-5.2-chat", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1-chat-latest", - "canonical": "openai/gpt-5.1-chat", + "provider": "openrouter", + "model": "openai/gpt-5.2-codex", + "canonical": "openrouter/openai/gpt-5.2-codex", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1-codex", - "canonical": "openai/gpt-5.1-codex", + "provider": "openrouter", + "model": "openai/gpt-5.2-pro", + "canonical": "openrouter/openai/gpt-5.2-pro", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1-codex-max", - "canonical": "openai/gpt-5.1-codex-max", + "provider": "openrouter", + "model": "openai/gpt-oss-120b", + "canonical": "openrouter/openai/gpt-oss-120b", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.1-codex-mini", - "canonical": "openai/gpt-5.1-codex-mini", + "provider": "openrouter", + "model": "openai/gpt-oss-120b:exacto", + "canonical": "openrouter/openai/gpt-oss-120b:exacto", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2", - "canonical": "openai/gpt-5.2", + "provider": "openrouter", + "model": "openai/gpt-oss-120b:free", + "canonical": "openrouter/openai/gpt-oss-120b:free", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2-2025-12-11", - "canonical": "openai/gpt-5.2", + "provider": "openrouter", + "model": "openai/gpt-oss-20b", + "canonical": "openrouter/openai/gpt-oss-20b", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2-chat-latest", - "canonical": "openai/gpt-5.2-chat", + "provider": "openrouter", + "model": "openai/gpt-oss-20b:free", + "canonical": "openrouter/openai/gpt-oss-20b:free", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2-codex", - "canonical": "openai/gpt-5.2-codex", + "provider": "openrouter", + "model": "openai/gpt-oss-safeguard-20b", + "canonical": "openrouter/openai/gpt-oss-safeguard-20b", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2-pro", - "canonical": "openai/gpt-5.2-pro", + "provider": "openrouter", + "model": "openai/o4-mini", + "canonical": "openrouter/openai/o4-mini", "recommended": true }, { - "provider": "openai", - "model": "gpt-5.2-pro-2025-12-11", - "canonical": "openai/gpt-5.2-pro", + "provider": "openrouter", + "model": "qwen/qwen3-235b-a22b-thinking-2507", + "canonical": "openrouter/qwen/qwen3-235b-a22b-thinking", "recommended": true }, { - "provider": "openai", - "model": "o1", - "canonical": "openai/o1", + "provider": "openrouter", + "model": "qwen/qwen3-30b-a3b-instruct-2507", + "canonical": "openrouter/qwen/qwen3-30b-a3b-instruct", "recommended": true }, { - "provider": "openai", - "model": "o1-2024-12-17", - "canonical": "openai/o1", + "provider": "openrouter", + "model": "qwen/qwen3-30b-a3b-thinking-2507", + "canonical": "openrouter/qwen/qwen3-30b-a3b-thinking", "recommended": true }, { - "provider": "openai", - "model": "o1-pro", - "canonical": "openai/o1-pro", + "provider": "openrouter", + "model": "qwen/qwen3-4b:free", + "canonical": "openrouter/qwen/qwen3-4b:free", "recommended": true }, { - "provider": "openai", - "model": "o1-pro-2025-03-19", - "canonical": "openai/o1-pro", + "provider": "openrouter", + "model": "qwen/qwen3-coder", + "canonical": "openrouter/qwen/qwen3-coder", "recommended": true }, { - "provider": "openai", - "model": "o3", - "canonical": "openai/o3", + "provider": "openrouter", + "model": "qwen/qwen3-coder-30b-a3b-instruct", + "canonical": "openrouter/qwen/qwen3-coder-30b-a3b-instruct", "recommended": true }, { - "provider": "openai", - "model": "o3-2025-04-16", - "canonical": "openai/o3", + "provider": "openrouter", + "model": "qwen/qwen3-coder-flash", + "canonical": "openrouter/qwen/qwen3-coder-flash", "recommended": true }, { - "provider": "openai", - "model": "o3-deep-research", - "canonical": "openai/o3-deep-research", + "provider": "openrouter", + "model": "qwen/qwen3-coder:exacto", + "canonical": "openrouter/qwen/qwen3-coder:exacto", "recommended": true }, { - "provider": "openai", - "model": "o3-deep-research-2025-06-26", - "canonical": "openai/o3-deep-research", + "provider": "openrouter", + "model": "qwen/qwen3-coder:free", + "canonical": "openrouter/qwen/qwen3-coder:free", "recommended": true }, { - "provider": "openai", - "model": "o3-mini", - "canonical": "openai/o3-mini", + "provider": "openrouter", + "model": "qwen/qwen3-max", + "canonical": "openrouter/qwen/qwen3-max", "recommended": true }, { - "provider": "openai", - "model": "o3-mini-2025-01-31", - "canonical": "openai/o3-mini", + "provider": "openrouter", + "model": "qwen/qwen3-next-80b-a3b-instruct", + "canonical": "openrouter/qwen/qwen3-next-80b-a3b-instruct", "recommended": true }, { - "provider": "openai", - "model": "o3-pro", - "canonical": "openai/o3-pro", + "provider": "openrouter", + "model": "qwen/qwen3-next-80b-a3b-instruct:free", + "canonical": "openrouter/qwen/qwen3-next-80b-a3b-instruct:free", "recommended": true }, { - "provider": "openai", - "model": "o3-pro-2025-06-10", - "canonical": "openai/o3-pro", + "provider": "openrouter", + "model": "qwen/qwen3-next-80b-a3b-thinking", + "canonical": "openrouter/qwen/qwen3-next-80b-a3b-thinking", "recommended": true }, { - "provider": "openai", - "model": "o4-mini", - "canonical": "openai/o4-mini", + "provider": "openrouter", + "model": "tngtech/tng-r1t-chimera:free", + "canonical": "openrouter/tngtech/tng-r1t-chimera:free", "recommended": true }, { - "provider": "openai", - "model": "o4-mini-2025-04-16", - "canonical": "openai/o4-mini", + "provider": "openrouter", + "model": "x-ai/grok-3", + "canonical": "openrouter/x-ai/grok-3", "recommended": true }, { - "provider": "openai", - "model": "o4-mini-deep-research", - "canonical": "openai/o4-mini-deep-research", + "provider": "openrouter", + "model": "x-ai/grok-3-beta", + "canonical": "openrouter/x-ai/grok-3-beta", "recommended": true }, { - "provider": "openai", - "model": "o4-mini-deep-research-2025-06-26", - "canonical": "openai/o4-mini-deep-research", + "provider": "openrouter", + "model": "x-ai/grok-3-mini", + "canonical": "openrouter/x-ai/grok-3-mini", "recommended": true }, { - "provider": "openai", - "model": "text-embedding-3-large", - "canonical": "openai/text-embedding-3-large", + "provider": "openrouter", + "model": "x-ai/grok-3-mini-beta", + "canonical": "openrouter/x-ai/grok-3-mini-beta", "recommended": true }, { - "provider": "openai", - "model": "text-embedding-3-small", - "canonical": "openai/text-embedding-3-small", + "provider": "openrouter", + "model": "x-ai/grok-4", + "canonical": "openrouter/x-ai/grok-4", "recommended": true }, { - "provider": "openai", - "model": "text-embedding-ada-002", - "canonical": "openai/text-embedding-ada-002", + "provider": "openrouter", + "model": "x-ai/grok-4-fast", + "canonical": "openrouter/x-ai/grok-4-fast", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-3.5-haiku", - "canonical": "openrouter/anthropic/claude-3.5-haiku", + "model": "x-ai/grok-4.1-fast", + "canonical": "openrouter/x-ai/grok-4.1-fast", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-3.7-sonnet", - "canonical": "openrouter/anthropic/claude-3.7-sonnet", + "model": "x-ai/grok-code-fast-1", + "canonical": "openrouter/x-ai/grok-code-fast-1", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-haiku-4.5", - "canonical": "openrouter/anthropic/claude-haiku-4.5", + "model": "z-ai/glm-4.5", + "canonical": "openrouter/z-ai/glm-4.5", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-opus-4", - "canonical": "openrouter/anthropic/claude-opus-4", + "model": "z-ai/glm-4.5-air", + "canonical": "openrouter/z-ai/glm-4.5-air", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-opus-4.1", - "canonical": "openrouter/anthropic/claude-opus-4.1", + "model": "z-ai/glm-4.5-air:free", + "canonical": "openrouter/z-ai/glm-4.5-air:free", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-opus-4.5", - "canonical": "openrouter/anthropic/claude-opus-4.5", + "model": "z-ai/glm-4.5v", + "canonical": "openrouter/z-ai/glm-4.5v", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-sonnet-4", - "canonical": "openrouter/anthropic/claude-sonnet-4", + "model": "z-ai/glm-4.6", + "canonical": "openrouter/z-ai/glm-4.6", "recommended": true }, { "provider": "openrouter", - "model": "anthropic/claude-sonnet-4.5", - "canonical": "openrouter/anthropic/claude-sonnet-4.5", + "model": "z-ai/glm-4.6:exacto", + "canonical": "openrouter/z-ai/glm-4.6:exacto", "recommended": true }, { "provider": "openrouter", - "model": "arcee-ai/trinity-large-preview:free", - "canonical": "openrouter/arcee-ai/trinity-large-preview:free", + "model": "z-ai/glm-4.7", + "canonical": "openrouter/z-ai/glm-4.7", "recommended": true }, { "provider": "openrouter", - "model": "arcee-ai/trinity-mini:free", - "canonical": "openrouter/arcee-ai/trinity-mini:free", + "model": "z-ai/glm-4.7-flash", + "canonical": "openrouter/z-ai/glm-4.7-flash", "recommended": true }, { - "provider": "openrouter", - "model": "deepseek/deepseek-chat-v3-0324", - "canonical": "openrouter/deepseek/deepseek-chat-v3", + "provider": "tetrate", + "model": "claude-3-5-haiku-20241022", + "canonical": "anthropic/claude-3.5-haiku", "recommended": true }, { - "provider": "openrouter", - "model": "deepseek/deepseek-chat-v3.1", - "canonical": "openrouter/deepseek/deepseek-chat-v3.1", + "provider": "tetrate", + "model": "claude-3-5-haiku-latest", + "canonical": "anthropic/claude-3.5-haiku", "recommended": true }, { - "provider": "openrouter", - "model": "deepseek/deepseek-v3.1-terminus", - "canonical": "openrouter/deepseek/deepseek-v3.1-terminus", + "provider": "tetrate", + "model": "claude-3-7-sonnet-20250219", + "canonical": "anthropic/claude-3.7-sonnet", "recommended": true }, { - "provider": "openrouter", - "model": "deepseek/deepseek-v3.1-terminus:exacto", - "canonical": "openrouter/deepseek/deepseek-v3.1-terminus:exacto", + "provider": "tetrate", + "model": "claude-3-7-sonnet-latest", + "canonical": "anthropic/claude-3.7-sonnet", "recommended": true }, { - "provider": "openrouter", - "model": "deepseek/deepseek-v3.2", - "canonical": "openrouter/deepseek/deepseek-v3.2", + "provider": "tetrate", + "model": "claude-3-haiku-20240307", + "canonical": "anthropic/claude-3-haiku", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.0-flash-001", - "canonical": "openrouter/google/gemini-2.0-flash-001", + "provider": "tetrate", + "model": "claude-3-opus-20240229", + "canonical": "anthropic/claude-3-opus", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-flash", - "canonical": "openrouter/google/gemini-2.5-flash", + "provider": "tetrate", + "model": "claude-haiku-4-5", + "canonical": "anthropic/claude-haiku-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-flash-lite", - "canonical": "openrouter/google/gemini-2.5-flash-lite", + "provider": "tetrate", + "model": "claude-haiku-4-5-20251001", + "canonical": "anthropic/claude-haiku-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-flash-lite-preview-09-2025", - "canonical": "openrouter/google/gemini-2.5-flash-lite-preview-09", + "provider": "tetrate", + "model": "claude-opus-4-0", + "canonical": "anthropic/claude-opus-4.0", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-flash-preview-09-2025", - "canonical": "openrouter/google/gemini-2.5-flash-preview-09", + "provider": "tetrate", + "model": "claude-opus-4-1", + "canonical": "anthropic/claude-opus-4.1", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-pro", - "canonical": "openrouter/google/gemini-2.5-pro", + "provider": "tetrate", + "model": "claude-opus-4-1-20250805", + "canonical": "anthropic/claude-opus-4.1", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-2.5-pro-preview-05-06", - "canonical": "openrouter/google/gemini-2.5-pro-preview-05-06", + "provider": "tetrate", + "model": "claude-opus-4-20250514", + "canonical": "anthropic/claude-opus-4", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-3-flash-preview", - "canonical": "openrouter/google/gemini-3-flash-preview", + "provider": "tetrate", + "model": "claude-opus-4-5", + "canonical": "anthropic/claude-opus-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemini-3-pro-preview", - "canonical": "openrouter/google/gemini-3-pro-preview", + "provider": "tetrate", + "model": "claude-opus-4-5-20251101", + "canonical": "anthropic/claude-opus-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemma-3-27b-it", - "canonical": "openrouter/google/gemma-3-27b-it", + "provider": "tetrate", + "model": "claude-sonnet-4-0", + "canonical": "anthropic/claude-sonnet-4.0", "recommended": true }, { - "provider": "openrouter", - "model": "google/gemma-3-27b-it:free", - "canonical": "openrouter/google/gemma-3-27b-it:free", + "provider": "tetrate", + "model": "claude-sonnet-4-20250514", + "canonical": "anthropic/claude-sonnet-4", "recommended": true }, { - "provider": "openrouter", - "model": "meta-llama/llama-3.3-70b-instruct:free", - "canonical": "openrouter/meta-llama/llama-3.3-70b-instruct:free", + "provider": "tetrate", + "model": "claude-sonnet-4-5", + "canonical": "anthropic/claude-sonnet-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "minimax/minimax-m1", - "canonical": "openrouter/minimax/minimax-m1", + "provider": "tetrate", + "model": "claude-sonnet-4-5-20250929", + "canonical": "anthropic/claude-sonnet-4.5", "recommended": true }, { - "provider": "openrouter", - "model": "minimax/minimax-m2", - "canonical": "openrouter/minimax/minimax-m2", + "provider": "tetrate", + "model": "deepinfra/anthropic/claude-3-7-sonnet-latest", + "canonical": "anthropic/claude-3.7-sonnet", "recommended": true }, { - "provider": "openrouter", - "model": "minimax/minimax-m2.1", - "canonical": "openrouter/minimax/minimax-m2.1", + "provider": "tetrate", + "model": "deepinfra/anthropic/claude-4-opus", + "canonical": "anthropic/claude-opus-4", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/codestral-2508", - "canonical": "openrouter/mistralai/codestral", + "provider": "tetrate", + "model": "deepinfra/anthropic/claude-4-sonnet", + "canonical": "anthropic/claude-sonnet-4", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/devstral-2512", - "canonical": "openrouter/mistralai/devstral", + "provider": "tetrate", + "model": "deepinfra/google/gemini-2.5-flash", + "canonical": "google/gemini-2.5-flash", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/devstral-medium", - "canonical": "openrouter/mistralai/devstral-medium", + "provider": "tetrate", + "model": "deepinfra/google/gemini-2.5-pro", + "canonical": "google/gemini-2.5-pro", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/devstral-small", - "canonical": "openrouter/mistralai/devstral-small", + "provider": "tetrate", + "model": "gemini-2.0-flash", + "canonical": "google/gemini-2.0-flash", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/mistral-medium-3", - "canonical": "openrouter/mistralai/mistral-medium-3", + "provider": "tetrate", + "model": "gemini-2.0-flash-lite", + "canonical": "google/gemini-2.0-flash-lite", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/mistral-medium-3.1", - "canonical": "openrouter/mistralai/mistral-medium-3.1", + "provider": "tetrate", + "model": "gemini-2.5-flash", + "canonical": "google/gemini-2.5-flash", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/mistral-small-3.1-24b-instruct", - "canonical": "openrouter/mistralai/mistral-small-3.1-24b-instruct", + "provider": "tetrate", + "model": "gemini-2.5-flash-lite", + "canonical": "google/gemini-2.5-flash-lite", "recommended": true }, { - "provider": "openrouter", - "model": "mistralai/mistral-small-3.2-24b-instruct", - "canonical": "openrouter/mistralai/mistral-small-3.2-24b-instruct", + "provider": "tetrate", + "model": "gemini-2.5-flash-lite-preview-09-2025", + "canonical": "google/gemini-2.5-flash-lite-preview-09", "recommended": true }, { - "provider": "openrouter", - "model": "moonshotai/kimi-k2", - "canonical": "openrouter/moonshotai/kimi-k2", + "provider": "tetrate", + "model": "gemini-2.5-flash-preview-09-2025", + "canonical": "google/gemini-2.5-flash-preview-09", + "recommended": true + }, + { + "provider": "tetrate", + "model": "gemini-2.5-pro", + "canonical": "google/gemini-2.5-pro", "recommended": true }, { - "provider": "openrouter", - "model": "moonshotai/kimi-k2-0905", - "canonical": "openrouter/moonshotai/kimi-k2", + "provider": "tetrate", + "model": "gemini-3-pro-preview", + "canonical": "google/gemini-3-pro-preview", "recommended": true }, { - "provider": "openrouter", - "model": "moonshotai/kimi-k2-0905:exacto", - "canonical": "openrouter/moonshotai/kimi-k2-0905:exacto", + "provider": "tetrate", + "model": "gpt-4-turbo", + "canonical": "openai/gpt-4-turbo", "recommended": true }, { - "provider": "openrouter", - "model": "moonshotai/kimi-k2-thinking", - "canonical": "openrouter/moonshotai/kimi-k2-thinking", + "provider": "tetrate", + "model": "gpt-4-turbo-2024-04-09", + "canonical": "openai/gpt-4-turbo", "recommended": true }, { - "provider": "openrouter", - "model": "moonshotai/kimi-k2.5", - "canonical": "openrouter/moonshotai/kimi-k2.5", + "provider": "tetrate", + "model": "gpt-4.1", + "canonical": "openai/gpt-4.1", "recommended": true }, { - "provider": "openrouter", - "model": "nousresearch/hermes-4-70b", - "canonical": "openrouter/nousresearch/hermes-4-70b", + "provider": "tetrate", + "model": "gpt-4.1-2025-04-14", + "canonical": "openai/gpt-4.1", "recommended": true }, { - "provider": "openrouter", - "model": "nvidia/nemotron-nano-9b-v2", - "canonical": "openrouter/nvidia/nemotron-nano-9b-v2", + "provider": "tetrate", + "model": "gpt-4.1-mini", + "canonical": "openai/gpt-4.1-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-4.1", - "canonical": "openrouter/openai/gpt-4.1", + "provider": "tetrate", + "model": "gpt-4.1-mini-2025-04-14", + "canonical": "openai/gpt-4.1-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-4.1-mini", - "canonical": "openrouter/openai/gpt-4.1-mini", + "provider": "tetrate", + "model": "gpt-4.1-nano", + "canonical": "openai/gpt-4.1-nano", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-4o-mini", - "canonical": "openrouter/openai/gpt-4o-mini", + "provider": "tetrate", + "model": "gpt-4.1-nano-2025-04-14", + "canonical": "openai/gpt-4.1-nano", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-4o-mini-2024-07-18", - "canonical": "openrouter/openai/gpt-4o-mini", + "provider": "tetrate", + "model": "gpt-4o", + "canonical": "openai/gpt-4o", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5", - "canonical": "openrouter/openai/gpt-5", + "provider": "tetrate", + "model": "gpt-4o-2024-05-13", + "canonical": "openai/gpt-4o", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5-codex", - "canonical": "openrouter/openai/gpt-5-codex", + "provider": "tetrate", + "model": "gpt-4o-2024-08-06", + "canonical": "openai/gpt-4o", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5-image", - "canonical": "openrouter/openai/gpt-5-image", + "provider": "tetrate", + "model": "gpt-4o-2024-11-20", + "canonical": "openai/gpt-4o", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5-mini", - "canonical": "openrouter/openai/gpt-5-mini", + "provider": "tetrate", + "model": "gpt-4o-mini", + "canonical": "openai/gpt-4o-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5-nano", - "canonical": "openrouter/openai/gpt-5-nano", + "provider": "tetrate", + "model": "gpt-4o-mini-2024-07-18", + "canonical": "openai/gpt-4o-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5-pro", - "canonical": "openrouter/openai/gpt-5-pro", + "provider": "tetrate", + "model": "gpt-5", + "canonical": "openai/gpt-5", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.1", - "canonical": "openrouter/openai/gpt-5.1", + "provider": "tetrate", + "model": "gpt-5-2025-08-07", + "canonical": "openai/gpt-5", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.1-chat", - "canonical": "openrouter/openai/gpt-5.1-chat", + "provider": "tetrate", + "model": "gpt-5-chat-latest", + "canonical": "openai/gpt-5-chat", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.1-codex", - "canonical": "openrouter/openai/gpt-5.1-codex", + "provider": "tetrate", + "model": "gpt-5-mini", + "canonical": "openai/gpt-5-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.1-codex-max", - "canonical": "openrouter/openai/gpt-5.1-codex-max", + "provider": "tetrate", + "model": "gpt-5-mini-2025-08-07", + "canonical": "openai/gpt-5-mini", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.1-codex-mini", - "canonical": "openrouter/openai/gpt-5.1-codex-mini", + "provider": "tetrate", + "model": "gpt-5-nano", + "canonical": "openai/gpt-5-nano", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.2", - "canonical": "openrouter/openai/gpt-5.2", + "provider": "tetrate", + "model": "gpt-5-nano-2025-08-07", + "canonical": "openai/gpt-5-nano", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.2-chat", - "canonical": "openrouter/openai/gpt-5.2-chat", + "provider": "tetrate", + "model": "gpt-5.1", + "canonical": "openai/gpt-5.1", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.2-codex", - "canonical": "openrouter/openai/gpt-5.2-codex", + "provider": "tetrate", + "model": "gpt-5.1-2025-11-13", + "canonical": "openai/gpt-5.1", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-5.2-pro", - "canonical": "openrouter/openai/gpt-5.2-pro", + "provider": "tetrate", + "model": "gpt-5.1-chat-latest", + "canonical": "openai/gpt-5.1-chat", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-oss-120b", - "canonical": "openrouter/openai/gpt-oss-120b", + "provider": "tetrate", + "model": "gpt-5.2", + "canonical": "openai/gpt-5.2", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-oss-120b:exacto", - "canonical": "openrouter/openai/gpt-oss-120b:exacto", + "provider": "tetrate", + "model": "gpt-5.2-2025-12-11", + "canonical": "openai/gpt-5.2", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-oss-20b", - "canonical": "openrouter/openai/gpt-oss-20b", + "provider": "tetrate", + "model": "o1", + "canonical": "openai/o1", "recommended": true }, { - "provider": "openrouter", - "model": "openai/gpt-oss-safeguard-20b", - "canonical": "openrouter/openai/gpt-oss-safeguard-20b", + "provider": "tetrate", + "model": "o1-2024-12-17", + "canonical": "openai/o1", "recommended": true }, { - "provider": "openrouter", - "model": "openai/o4-mini", - "canonical": "openrouter/openai/o4-mini", + "provider": "tetrate", + "model": "o3", + "canonical": "openai/o3", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-235b-a22b-thinking-2507", - "canonical": "openrouter/qwen/qwen3-235b-a22b-thinking", + "provider": "tetrate", + "model": "o3-2025-04-16", + "canonical": "openai/o3", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-30b-a3b-instruct-2507", - "canonical": "openrouter/qwen/qwen3-30b-a3b-instruct", + "provider": "tetrate", + "model": "o3-mini", + "canonical": "openai/o3-mini", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-30b-a3b-thinking-2507", - "canonical": "openrouter/qwen/qwen3-30b-a3b-thinking", + "provider": "tetrate", + "model": "o3-mini-2025-01-31", + "canonical": "openai/o3-mini", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-coder", - "canonical": "openrouter/qwen/qwen3-coder", + "provider": "tetrate", + "model": "o4-mini", + "canonical": "openai/o4-mini", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-coder-30b-a3b-instruct", - "canonical": "openrouter/qwen/qwen3-coder-30b-a3b-instruct", + "provider": "tetrate", + "model": "o4-mini-2025-04-16", + "canonical": "openai/o4-mini", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-coder-flash", - "canonical": "openrouter/qwen/qwen3-coder-flash", + "provider": "tetrate", + "model": "xai/grok-2-vision", + "canonical": "x-ai/grok-2-vision", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-coder:exacto", - "canonical": "openrouter/qwen/qwen3-coder:exacto", + "provider": "tetrate", + "model": "xai/grok-2-vision-1212", + "canonical": "x-ai/grok-2-vision", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-coder:free", - "canonical": "openrouter/qwen/qwen3-coder:free", + "provider": "tetrate", + "model": "xai/grok-2-vision-latest", + "canonical": "x-ai/grok-2-vision", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-max", - "canonical": "openrouter/qwen/qwen3-max", + "provider": "tetrate", + "model": "xai/grok-3", + "canonical": "x-ai/grok-3", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-next-80b-a3b-instruct", - "canonical": "openrouter/qwen/qwen3-next-80b-a3b-instruct", + "provider": "tetrate", + "model": "xai/grok-3-fast", + "canonical": "x-ai/grok-3-fast", "recommended": true }, { - "provider": "openrouter", - "model": "qwen/qwen3-next-80b-a3b-thinking", - "canonical": "openrouter/qwen/qwen3-next-80b-a3b-thinking", + "provider": "tetrate", + "model": "xai/grok-3-fast-latest", + "canonical": "x-ai/grok-3-fast", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-3", - "canonical": "openrouter/x-ai/grok-3", + "provider": "tetrate", + "model": "xai/grok-3-latest", + "canonical": "x-ai/grok-3", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-3-beta", - "canonical": "openrouter/x-ai/grok-3-beta", + "provider": "tetrate", + "model": "xai/grok-3-mini", + "canonical": "x-ai/grok-3-mini", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-3-mini", - "canonical": "openrouter/x-ai/grok-3-mini", + "provider": "tetrate", + "model": "xai/grok-3-mini-fast", + "canonical": "x-ai/grok-3-mini-fast", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-3-mini-beta", - "canonical": "openrouter/x-ai/grok-3-mini-beta", + "provider": "tetrate", + "model": "xai/grok-3-mini-fast-latest", + "canonical": "x-ai/grok-3-mini-fast", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-4", - "canonical": "openrouter/x-ai/grok-4", + "provider": "tetrate", + "model": "xai/grok-3-mini-latest", + "canonical": "x-ai/grok-3-mini", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-4-fast", - "canonical": "openrouter/x-ai/grok-4-fast", + "provider": "tetrate", + "model": "xai/grok-4", + "canonical": "x-ai/grok-4", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-4.1-fast", - "canonical": "openrouter/x-ai/grok-4.1-fast", + "provider": "tetrate", + "model": "xai/grok-4-0709", + "canonical": "x-ai/grok-4", "recommended": true }, { - "provider": "openrouter", - "model": "x-ai/grok-code-fast-1", - "canonical": "openrouter/x-ai/grok-code-fast-1", + "provider": "tetrate", + "model": "xai/grok-4-fast", + "canonical": "x-ai/grok-4-fast", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.5", - "canonical": "openrouter/z-ai/glm-4.5", + "provider": "tetrate", + "model": "xai/grok-4-fast-non-reasoning", + "canonical": "x-ai/grok-4-fast-non", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.5-air", - "canonical": "openrouter/z-ai/glm-4.5-air", + "provider": "tetrate", + "model": "xai/grok-4-fast-non-reasoning-latest", + "canonical": "x-ai/grok-4-fast-non", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.5-air:free", - "canonical": "openrouter/z-ai/glm-4.5-air:free", + "provider": "tetrate", + "model": "xai/grok-4-fast-reasoning", + "canonical": "x-ai/grok-4-fast", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.5v", - "canonical": "openrouter/z-ai/glm-4.5v", + "provider": "tetrate", + "model": "xai/grok-4-fast-reasoning-latest", + "canonical": "x-ai/grok-4-fast", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.6", - "canonical": "openrouter/z-ai/glm-4.6", + "provider": "tetrate", + "model": "xai/grok-4-latest", + "canonical": "x-ai/grok-4", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.6:exacto", - "canonical": "openrouter/z-ai/glm-4.6:exacto", + "provider": "tetrate", + "model": "xai/grok-code-fast-1", + "canonical": "x-ai/grok-code-fast-1", "recommended": true }, { - "provider": "openrouter", - "model": "z-ai/glm-4.7", - "canonical": "openrouter/z-ai/glm-4.7", + "provider": "tetrate", + "model": "xai/grok-code-fast-1-0825", + "canonical": "x-ai/grok-code-fast-1", "recommended": true }, { @@ -4967,27 +6142,30 @@ } ], "model_counts": { - "anthropic": 9, + "anthropic": 10, "aws_bedrock": 0, "azure_openai": 0, "databricks": 0, "gcp_vertex_ai": 0, - "google": 47, + "google": 45, "openai": 653, "openrouter": 230, - "tetrate": 0, + "tetrate": 151, "venice": 0, - "xai": 12 + "xai": 13 }, "canonical_models_used": [ "anthropic/claude-3-haiku", + "anthropic/claude-3-opus", "anthropic/claude-3.5-haiku", "anthropic/claude-3.7-sonnet", "anthropic/claude-haiku-4.5", "anthropic/claude-opus-4", + "anthropic/claude-opus-4.0", "anthropic/claude-opus-4.1", "anthropic/claude-opus-4.5", "anthropic/claude-sonnet-4", + "anthropic/claude-sonnet-4.0", "anthropic/claude-sonnet-4.5", "google/gemini-2.0-flash", "google/gemini-2.0-flash-lite", @@ -5082,7 +6260,10 @@ "openrouter/moonshotai/kimi-k2-thinking", "openrouter/moonshotai/kimi-k2.5", "openrouter/nousresearch/hermes-4-70b", + "openrouter/nvidia/nemotron-3-nano-30b-a3b:free", + "openrouter/nvidia/nemotron-nano-12b-v2-vl:free", "openrouter/nvidia/nemotron-nano-9b-v2", + "openrouter/nvidia/nemotron-nano-9b-v2:free", "openrouter/openai/gpt-4.1", "openrouter/openai/gpt-4.1-mini", "openrouter/openai/gpt-4o-mini", @@ -5103,12 +6284,15 @@ "openrouter/openai/gpt-5.2-pro", "openrouter/openai/gpt-oss-120b", "openrouter/openai/gpt-oss-120b:exacto", + "openrouter/openai/gpt-oss-120b:free", "openrouter/openai/gpt-oss-20b", + "openrouter/openai/gpt-oss-20b:free", "openrouter/openai/gpt-oss-safeguard-20b", "openrouter/openai/o4-mini", "openrouter/qwen/qwen3-235b-a22b-thinking", "openrouter/qwen/qwen3-30b-a3b-instruct", "openrouter/qwen/qwen3-30b-a3b-thinking", + "openrouter/qwen/qwen3-4b:free", "openrouter/qwen/qwen3-coder", "openrouter/qwen/qwen3-coder-30b-a3b-instruct", "openrouter/qwen/qwen3-coder-flash", @@ -5116,7 +6300,9 @@ "openrouter/qwen/qwen3-coder:free", "openrouter/qwen/qwen3-max", "openrouter/qwen/qwen3-next-80b-a3b-instruct", + "openrouter/qwen/qwen3-next-80b-a3b-instruct:free", "openrouter/qwen/qwen3-next-80b-a3b-thinking", + "openrouter/tngtech/tng-r1t-chimera:free", "openrouter/x-ai/grok-3", "openrouter/x-ai/grok-3-beta", "openrouter/x-ai/grok-3-mini", @@ -5132,9 +6318,12 @@ "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.6:exacto", "openrouter/z-ai/glm-4.7", + "openrouter/z-ai/glm-4.7-flash", "x-ai/grok-2-vision", "x-ai/grok-3", + "x-ai/grok-3-fast", "x-ai/grok-3-mini", + "x-ai/grok-3-mini-fast", "x-ai/grok-4", "x-ai/grok-4-fast", "x-ai/grok-4-fast-non", diff --git a/crates/goose/src/providers/canonical/data/canonical_models.json b/crates/goose/src/providers/canonical/data/canonical_models.json index f99c6a9b8aca..6a970a541c8d 100644 --- a/crates/goose/src/providers/canonical/data/canonical_models.json +++ b/crates/goose/src/providers/canonical/data/canonical_models.json @@ -654,6 +654,39 @@ "output": 64000 } }, + { + "id": "amazon-bedrock/anthropic.claude-opus-4.6-v1", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "amazon-bedrock/anthropic.claude-sonnet-4-20250514-v1:0", "name": "Claude Sonnet 4", @@ -1010,14 +1043,47 @@ "cost": { "input": 5.0, "output": 25.0, - "cache_read": 1.5, - "cache_write": 18.75 + "cache_read": 0.5, + "cache_write": 6.25 }, "limit": { "context": 200000, "output": 64000 } }, + { + "id": "amazon-bedrock/eu.anthropic.claude-opus-4.6-v1", + "name": "Claude Opus 4.6 (EU)", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "amazon-bedrock/eu.anthropic.claude-sonnet-4-20250514-v1:0", "name": "Claude Sonnet 4 (EU)", @@ -1150,6 +1216,39 @@ "output": 64000 } }, + { + "id": "amazon-bedrock/global.anthropic.claude-opus-4.6-v1", + "name": "Claude Opus 4.6 (Global)", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "amazon-bedrock/global.anthropic.claude-sonnet-4-20250514-v1:0", "name": "Claude Sonnet 4 (Global)", @@ -1238,8 +1337,8 @@ }, "open_weights": false, "cost": { - "input": 0.05, - "output": 0.1 + "input": 0.049999999999999996, + "output": 0.09999999999999999 }, "limit": { "context": 131072, @@ -2347,14 +2446,47 @@ "cost": { "input": 5.0, "output": 25.0, - "cache_read": 1.5, - "cache_write": 18.75 + "cache_read": 0.5, + "cache_write": 6.25 }, "limit": { "context": 200000, "output": 64000 } }, + { + "id": "amazon-bedrock/us.anthropic.claude-opus-4.6-v1", + "name": "Claude Opus 4.6 (US)", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "amazon-bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0", "name": "Claude Sonnet 4 (US)", @@ -2784,6 +2916,39 @@ "output": 64000 } }, + { + "id": "anthropic/claude-opus-4.6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 200000, + "output": 128000 + } + }, { "id": "anthropic/claude-sonnet-4", "name": "Claude Sonnet 4", @@ -2982,6 +3147,39 @@ "output": 64000 } }, + { + "id": "azure/claude-opus-4.6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 200000, + "output": 128000 + } + }, { "id": "azure/claude-sonnet-4.5", "name": "Claude Sonnet 4.5", @@ -4376,6 +4574,36 @@ "output": 262144 } }, + { + "id": "azure/kimi-k2.5", + "name": "Kimi K2.5", + "family": "kimi", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-01", + "release_date": "2026-02-06", + "last_updated": "2026-02-06", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.6, + "output": 3.0 + }, + "limit": { + "context": 262144, + "output": 262144 + } + }, { "id": "azure/llama-3.2-11b-vision-instruct", "name": "Llama-3.2-11B-Vision-Instruct", @@ -8767,6 +8995,38 @@ "output": 128000 } }, + { + "id": "openai/gpt-5.3-codex", + "name": "GPT-5.3 Codex", + "family": "gpt-codex", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": false, + "knowledge": "2025-08-31", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 1.75, + "output": 14.0, + "cache_read": 0.175 + }, + "limit": { + "context": 400000, + "output": 128000 + } + }, { "id": "openai/o1", "name": "o1", @@ -9165,7 +9425,7 @@ "family": "allenai", "attachment": false, "reasoning": true, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2025-06", "release_date": "2026-01-09", @@ -9388,6 +9648,39 @@ "output": 32000 } }, + { + "id": "openrouter/anthropic/claude-opus-4.6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2025-05-30", + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image", + "pdf" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 5.0, + "output": 25.0, + "cache_read": 0.5, + "cache_write": 6.25 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "openrouter/anthropic/claude-sonnet-4", "name": "Claude Sonnet 4", @@ -9673,7 +9966,7 @@ "family": "mistral", "attachment": false, "reasoning": false, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2025-06", "release_date": "2025-07-09", @@ -10831,7 +11124,7 @@ "family": "liquid", "attachment": false, "reasoning": false, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2025-06", "release_date": "2026-01-20", @@ -10860,7 +11153,7 @@ "family": "liquid", "attachment": false, "reasoning": true, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2025-06", "release_date": "2026-01-20", @@ -10889,7 +11182,7 @@ "family": "llama", "attachment": true, "reasoning": false, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2024-08", "release_date": "2024-07-23", @@ -10948,7 +11241,7 @@ "family": "llama", "attachment": true, "reasoning": false, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2023-12", "release_date": "2024-09-25", @@ -11770,7 +12063,7 @@ "family": "hermes", "attachment": false, "reasoning": true, - "tool_call": true, + "tool_call": false, "temperature": true, "knowledge": "2023-12", "release_date": "2024-08-16", @@ -12752,6 +13045,34 @@ "output": 100000 } }, + { + "id": "openrouter/openrouter/pony-alpha", + "name": "Pony Alpha", + "family": "pony", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-02-06", + "last_updated": "2026-02-06", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 0.0, + "output": 0.0 + }, + "limit": { + "context": 200000, + "output": 131000 + } + }, { "id": "openrouter/openrouter/sherlock-dash-alpha", "name": "Sherlock Dash Alpha", @@ -13782,7 +14103,7 @@ "family": "tngtech", "attachment": false, "reasoning": true, - "tool_call": false, + "tool_call": true, "temperature": true, "knowledge": "2025-07", "release_date": "2025-11-26", @@ -14054,6 +14375,36 @@ "output": 10000 } }, + { + "id": "openrouter/xiaomi/mimo-v2-flash", + "name": "MiMo-V2-Flash", + "family": "mimo", + "attachment": false, + "reasoning": true, + "tool_call": true, + "temperature": true, + "knowledge": "2024-12", + "release_date": "2025-12-14", + "last_updated": "2025-12-14", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.1, + "output": 0.3, + "cache_read": 0.01 + }, + "limit": { + "context": 262144, + "output": 65536 + } + }, { "id": "openrouter/z-ai/glm-4.5", "name": "GLM 4.5", @@ -14290,6 +14641,37 @@ "output": 65535 } }, + { + "id": "venice/claude-opus-4.6", + "name": "Claude Opus 4.6", + "family": "claude-opus", + "attachment": true, + "reasoning": true, + "tool_call": true, + "temperature": true, + "release_date": "2026-02-05", + "last_updated": "2026-02-05", + "modalities": { + "input": [ + "text", + "image" + ], + "output": [ + "text" + ] + }, + "open_weights": false, + "cost": { + "input": 6.0, + "output": 30.0, + "cache_read": 0.6, + "cache_write": 7.5 + }, + "limit": { + "context": 1000000, + "output": 128000 + } + }, { "id": "venice/claude-opus-45", "name": "Claude Opus 4.5", @@ -15072,6 +15454,34 @@ "output": 49500 } }, + { + "id": "venice/zai-org-glm-4.7-flash", + "name": "GLM 4.7 Flash", + "family": "glm-flash", + "attachment": false, + "reasoning": false, + "tool_call": true, + "temperature": true, + "release_date": "2026-01-29", + "last_updated": "2026-01-30", + "modalities": { + "input": [ + "text" + ], + "output": [ + "text" + ] + }, + "open_weights": true, + "cost": { + "input": 0.125, + "output": 0.5 + }, + "limit": { + "context": 128000, + "output": 32000 + } + }, { "id": "x-ai/grok-2", "name": "Grok 2 (1212)", diff --git a/ui/desktop/openapi.json b/ui/desktop/openapi.json index 14ef0fb18c7c..2e8c448b3490 100644 --- a/ui/desktop/openapi.json +++ b/ui/desktop/openapi.json @@ -10,7 +10,7 @@ "license": { "name": "Apache-2.0" }, - "version": "1.23.0" + "version": "1.24.0" }, "paths": { "/action-required/tool-confirmation": { diff --git a/ui/desktop/package-lock.json b/ui/desktop/package-lock.json index 2daf742f95cb..f8106ca1047f 100644 --- a/ui/desktop/package-lock.json +++ b/ui/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "goose-app", - "version": "1.23.0", + "version": "1.24.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "goose-app", - "version": "1.23.0", + "version": "1.24.0", "license": "Apache-2.0", "dependencies": { "@mcp-ui/client": "^5.17.3", diff --git a/ui/desktop/package.json b/ui/desktop/package.json index 1912239493d6..11b627b60ae8 100644 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -1,7 +1,7 @@ { "name": "goose-app", "productName": "Goose", - "version": "1.23.0", + "version": "1.24.0", "description": "Goose App", "engines": { "node": "^24.10.0", From 46af953153bdfa8f66f125656cdbfcca0d9ed3ac Mon Sep 17 00:00:00 2001 From: Lifei Zhou Date: Tue, 10 Feb 2026 21:31:12 +1100 Subject: [PATCH 02/10] fix: fix windows bundle random failure and optimise canary build (#7105) (#7119) --- .github/workflows/build-cli.yml | 1 - .github/workflows/bundle-desktop-intel.yml | 1 - .github/workflows/bundle-desktop-linux.yml | 1 - .github/workflows/bundle-desktop-windows.yml | 8 +- .github/workflows/bundle-desktop.yml | 1 - .github/workflows/canary.yml | 2 +- .github/workflows/nightly.yml | 129 ------------------- 7 files changed, 8 insertions(+), 135 deletions(-) delete mode 100644 .github/workflows/nightly.yml diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index e434f51910b8..81738336e5d3 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -65,7 +65,6 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ inputs.ref }} - fetch-depth: 0 - name: Update version in Cargo.toml if: ${{ inputs.version != '' }} diff --git a/.github/workflows/bundle-desktop-intel.yml b/.github/workflows/bundle-desktop-intel.yml index 6b48b6aca0ec..7fb6fdb74bbe 100644 --- a/.github/workflows/bundle-desktop-intel.yml +++ b/.github/workflows/bundle-desktop-intel.yml @@ -48,7 +48,6 @@ jobs: with: # Only pass ref if it's explicitly set, otherwise let checkout action use its default behavior ref: ${{ inputs.ref != '' && inputs.ref || '' }} - fetch-depth: 0 # Update versions before build - name: Update versions diff --git a/.github/workflows/bundle-desktop-linux.yml b/.github/workflows/bundle-desktop-linux.yml index cae4cf052f93..bf2ca021ad62 100644 --- a/.github/workflows/bundle-desktop-linux.yml +++ b/.github/workflows/bundle-desktop-linux.yml @@ -28,7 +28,6 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ inputs.ref }} - fetch-depth: 0 - name: Update versions if: ${{ inputs.version != '' }} diff --git a/.github/workflows/bundle-desktop-windows.yml b/.github/workflows/bundle-desktop-windows.yml index 08f9090672e9..e82ab3d5ad4b 100644 --- a/.github/workflows/bundle-desktop-windows.yml +++ b/.github/workflows/bundle-desktop-windows.yml @@ -41,7 +41,6 @@ jobs: uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 with: ref: ${{ inputs.ref != '' && inputs.ref || '' }} - fetch-depth: 0 - name: Configure AWS credentials if: inputs.signing && inputs.signing == true @@ -123,6 +122,13 @@ jobs: echo "Windows-specific files copied successfully" fi + - name: Force GitHub HTTPS for npm git dependencies + shell: bash + run: | + git config --global url."https://github.com/".insteadOf "ssh://git@github.com/" + git config --global url."https://github.com/".insteadOf "git@github.com:" + git config --global url."https://github.com/".insteadOf "git+ssh://git@github.com/" + - name: Build desktop UI with npm shell: bash env: diff --git a/.github/workflows/bundle-desktop.yml b/.github/workflows/bundle-desktop.yml index 18e3be6fbb68..fb13e6eecaa7 100644 --- a/.github/workflows/bundle-desktop.yml +++ b/.github/workflows/bundle-desktop.yml @@ -76,7 +76,6 @@ jobs: with: # Only pass ref if it's explicitly set, otherwise let checkout action use its default behavior ref: ${{ inputs.ref != '' && inputs.ref || '' }} - fetch-depth: 0 - name: Debug git status run: | diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index f192006c2942..050e36097441 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -119,7 +119,7 @@ jobs: Goose*.zip *.deb *.rpm - **/*.flatpak + *.flatpak download_cli.sh allowUpdates: true omitBody: true diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml deleted file mode 100644 index 5a0fa68fb1a5..000000000000 --- a/.github/workflows/nightly.yml +++ /dev/null @@ -1,129 +0,0 @@ -# A release from main. Automatically triggered at midnight US Eastern. - -name: Nightly Build - -on: - schedule: - # Run at midnight US Eastern (0500 UTC) - - cron: '0 5 * * *' - workflow_dispatch: # Allow manual triggering - inputs: - branch: - description: 'Branch to build from' - required: false - default: 'main' - - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - prepare-version: - name: Prepare Version - runs-on: ubuntu-latest - outputs: - version: ${{ steps.set-version.outputs.version }} - commit_sha: ${{ steps.get-commit.outputs.commit_sha }} - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - with: - ref: main # Ensure we're building from latest main - fetch-depth: 0 - - - name: Get commit info - id: get-commit - run: | - echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - echo "Building from commit: $(git rev-parse HEAD)" - echo "Latest commit: $(git log -1 --oneline)" - - - name: Generate a nightly version - id: set-version - run: | - # Extract the version from Cargo.toml and add nightly tag with date and short commit - VERSION=$(grep '^version\s*=' Cargo.toml | head -n 1 | cut -d\" -f2) - DATE=$(date -u +%Y%m%d) - SHORT_SHA=$(git rev-parse --short HEAD) - VERSION="${VERSION}-nightly.${DATE}.${SHORT_SHA}" - echo "version=$VERSION" >> $GITHUB_OUTPUT - echo "Generated version: $VERSION" - - build-cli: - needs: [prepare-version] - uses: ./.github/workflows/build-cli.yml - with: - version: ${{ needs.prepare-version.outputs.version }} - - install-script: - name: Upload Install Script - runs-on: ubuntu-latest - needs: [build-cli] - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 - with: - name: download_cli.sh - path: download_cli.sh - - bundle-desktop: - needs: [prepare-version] - uses: ./.github/workflows/bundle-desktop.yml - permissions: - id-token: write - contents: read - with: - version: ${{ needs.prepare-version.outputs.version }} - signing: true - secrets: - OSX_CODESIGN_ROLE: ${{ secrets.OSX_CODESIGN_ROLE }} - - bundle-desktop-linux: - needs: [prepare-version] - uses: ./.github/workflows/bundle-desktop-linux.yml - with: - version: ${{ needs.prepare-version.outputs.version }} - - bundle-desktop-windows: - needs: [prepare-version] - uses: ./.github/workflows/bundle-desktop-windows.yml - with: - version: ${{ needs.prepare-version.outputs.version }} - signing: true - secrets: - WINDOW_SIGNING_ROLE: ${{ secrets.WINDOW_SIGNING_ROLE }} - WINDOW_SIGNING_ROLE_TAG: ${{ secrets.WINDOW_SIGNING_ROLE_TAG }} - WINDOWS_CODESIGN_CERTIFICATE: ${{ secrets.WINDOWS_CODESIGN_CERTIFICATE }} - - release: - name: Release - runs-on: ubuntu-latest - needs: [prepare-version, build-cli, install-script, bundle-desktop, bundle-desktop-linux, bundle-desktop-windows] - permissions: - contents: write - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - - name: Download all artifacts - uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 - with: - merge-multiple: true - - # Create/update the nightly release - - name: Release nightly - uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0 - with: - tag: ${{ needs.prepare-version.outputs.version }} - name: "Nightly ${{ needs.prepare-version.outputs.version }}" - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: | - goose-*.tar.bz2 - Goose*.zip - *.deb - *.rpm - **/*.flatpak - download_cli.sh - allowUpdates: true - omitBody: true - prerelease: true - makeLatest: false From b72690b52c039071de417a17f3ed13ecbdb72e03 Mon Sep 17 00:00:00 2001 From: Zane <75694352+zanesq@users.noreply.github.com> Date: Tue, 10 Feb 2026 08:47:19 -0800 Subject: [PATCH 03/10] fix: strip empty extensions array when deeplink also (#7096) --- ui/desktop/src/App.tsx | 20 +++----------- .../BottomMenuExtensionSelection.tsx | 6 +++++ .../src/components/recipes/RecipesView.tsx | 9 ++++--- ui/desktop/src/constants/events.ts | 1 + ui/desktop/src/main.ts | 27 ++++--------------- ui/desktop/src/preload.ts | 6 ++--- ui/desktop/src/recipe/index.ts | 15 ++++++++++- ui/desktop/src/sessions.ts | 17 +++++------- 8 files changed, 44 insertions(+), 57 deletions(-) diff --git a/ui/desktop/src/App.tsx b/ui/desktop/src/App.tsx index 2531c3940805..ba03ed6dc576 100644 --- a/ui/desktop/src/App.tsx +++ b/ui/desktop/src/App.tsx @@ -83,23 +83,17 @@ const PairRouteWrapper = ({ const [isCreatingSession, setIsCreatingSession] = useState(false); const resumeSessionId = searchParams.get('resumeSessionId') ?? undefined; - const recipeId = searchParams.get('recipeId') ?? undefined; const recipeDeeplinkFromConfig = window.appConfig?.get('recipeDeeplink') as string | undefined; const initialMessage = routeState.initialMessage; - // Create session if we have an initialMessage, recipeId, or recipeDeeplink but no sessionId + // Create session if we have an initialMessage or recipeDeeplink but no sessionId useEffect(() => { - if ( - (initialMessage || recipeId || recipeDeeplinkFromConfig) && - !resumeSessionId && - !isCreatingSession - ) { + if ((initialMessage || recipeDeeplinkFromConfig) && !resumeSessionId && !isCreatingSession) { setIsCreatingSession(true); (async () => { try { const newSession = await createSession(getInitialWorkingDir(), { - recipeId, recipeDeeplink: recipeDeeplinkFromConfig, allExtensions: extensionsList, }); @@ -115,7 +109,6 @@ const PairRouteWrapper = ({ setSearchParams((prev) => { prev.set('resumeSessionId', newSession.id); - prev.delete('recipeId'); return prev; }); } catch (error) { @@ -133,14 +126,7 @@ const PairRouteWrapper = ({ // Note: isCreatingSession is intentionally NOT in the dependency array // It's only used as a guard to prevent concurrent session creation // eslint-disable-next-line react-hooks/exhaustive-deps - }, [ - initialMessage, - recipeId, - recipeDeeplinkFromConfig, - resumeSessionId, - setSearchParams, - extensionsList, - ]); + }, [initialMessage, recipeDeeplinkFromConfig, resumeSessionId, setSearchParams, extensionsList]); // Add resumed session to active sessions if not already there useEffect(() => { diff --git a/ui/desktop/src/components/bottom_menu/BottomMenuExtensionSelection.tsx b/ui/desktop/src/components/bottom_menu/BottomMenuExtensionSelection.tsx index dc2266f59a4b..d4368ac6b9d2 100644 --- a/ui/desktop/src/components/bottom_menu/BottomMenuExtensionSelection.tsx +++ b/ui/desktop/src/components/bottom_menu/BottomMenuExtensionSelection.tsx @@ -40,11 +40,17 @@ export const BottomMenuExtensionSelection = ({ sessionId }: BottomMenuExtensionS }, 500); }; + const handleExtensionsLoaded = () => { + setRefreshTrigger((prev) => prev + 1); + }; + window.addEventListener(AppEvents.SESSION_CREATED, handleSessionLoaded); + window.addEventListener(AppEvents.SESSION_EXTENSIONS_LOADED, handleExtensionsLoaded); window.addEventListener(AppEvents.MESSAGE_STREAM_FINISHED, handleSessionLoaded); return () => { window.removeEventListener(AppEvents.SESSION_CREATED, handleSessionLoaded); + window.removeEventListener(AppEvents.SESSION_EXTENSIONS_LOADED, handleExtensionsLoaded); window.removeEventListener(AppEvents.MESSAGE_STREAM_FINISHED, handleSessionLoaded); }; }, []); diff --git a/ui/desktop/src/components/recipes/RecipesView.tsx b/ui/desktop/src/components/recipes/RecipesView.tsx index 5390c5984e5f..b7c2a8138024 100644 --- a/ui/desktop/src/components/recipes/RecipesView.tsx +++ b/ui/desktop/src/components/recipes/RecipesView.tsx @@ -32,7 +32,7 @@ import { } from '../../api'; import ImportRecipeForm, { ImportRecipeButton } from './ImportRecipeForm'; import CreateEditRecipeModal from './CreateEditRecipeModal'; -import { generateDeepLink, Recipe, stripEmptyExtensions } from '../../recipe'; +import { generateDeepLink, encodeRecipe, Recipe, stripEmptyExtensions } from '../../recipe'; import { useNavigation } from '../../hooks/useNavigation'; import { CronPicker } from '../schedule/CronPicker'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/dialog'; @@ -165,15 +165,16 @@ export default function RecipesView() { } }; - const handleStartRecipeChatInNewWindow = (recipeId: string) => { + const handleStartRecipeChatInNewWindow = async (recipe: Recipe) => { try { + const encodedRecipe = await encodeRecipe(stripEmptyExtensions(recipe) as Recipe); window.electron.createChatWindow( undefined, getInitialWorkingDir(), undefined, undefined, 'pair', - recipeId + encodedRecipe ); trackRecipeStarted(true, undefined, true); } catch (error) { @@ -521,7 +522,7 @@ export default function RecipesView() {