From 85db9c8d78753ad3cdeeffa1479643d25e307d92 Mon Sep 17 00:00:00 2001 From: Evan Date: Wed, 15 Apr 2026 00:46:51 +0900 Subject: [PATCH] feat(providers): add supports_thinking to thinking-capable models (#53) * feat(providers): add supports_thinking field to thinking-capable models Mark models that support extended thinking / reasoning with supports_thinking = true so the dashboard can conditionally show thinking toggles. Providers updated: anthropic (8), codex-cli (7), gemini (6), openai (3), qwen (2), deepseek (1). Schema updated accordingly. * feat(providers): add supports_thinking to remaining thinking-capable models Cover 19 additional providers: alibaba-coding-plan, allenai, arcee-ai, fireworks, gemini-cli, groq, liquid, nvidia-nim, ollama, openai (codex), openrouter, perplexity, qwen-code, replicate, sambanova, tngtech, venice, vertex-ai, xai. Total: 62 models across 24 providers now have supports_thinking = true. * feat(providers): add supports_thinking to chutes, huggingface, together Missed in prior commits: DeepSeek-R1 on chutes/huggingface/together, Qwen3-235B on chutes. Total now 66 models across 27 providers. * feat(providers): add supports_thinking to bedrock, claude-code, aider, moonshot, stepfun - bedrock: all 5 Claude models - claude-code: all 3 models (opus/sonnet/haiku wrappers) - aider: aider/sonnet (Claude-backed) - moonshot: kimi-k2.5 (reasoning mode) - stepfun: step-1o-turbo-vision (reasoning model) Total: 77 models across 32 providers. * feat(providers): add supports_thinking to alibaba kimi-k2.5, openrouter claude-sonnet-4 --- providers/aider.toml | 1 + providers/alibaba-coding-plan.toml | 6 ++++++ providers/allenai.toml | 2 ++ providers/anthropic.toml | 7 +++++++ providers/arcee-ai.toml | 1 + providers/bedrock.toml | 5 +++++ providers/chutes.toml | 2 ++ providers/claude-code.toml | 3 +++ providers/codex-cli.toml | 6 ++++++ providers/deepseek.toml | 1 + providers/fireworks.toml | 1 + providers/gemini-cli.toml | 2 ++ providers/gemini.toml | 6 ++++++ providers/groq.toml | 1 + providers/huggingface.toml | 1 + providers/liquid.toml | 1 + providers/moonshot.toml | 1 + providers/nvidia-nim.toml | 3 +++ providers/ollama.toml | 1 + providers/openai.toml | 4 ++++ providers/openrouter.toml | 6 ++++++ providers/perplexity.toml | 2 ++ providers/qwen-code.toml | 2 ++ providers/qwen.toml | 2 ++ providers/replicate.toml | 1 + providers/sambanova.toml | 1 + providers/stepfun.toml | 1 + providers/tngtech.toml | 1 + providers/together.toml | 1 + providers/venice.toml | 1 + providers/vertex-ai.toml | 2 ++ providers/xai.toml | 2 ++ schema.toml | 6 ++++++ 33 files changed, 83 insertions(+) diff --git a/providers/aider.toml b/providers/aider.toml index 489ed60..62a273f 100644 --- a/providers/aider.toml +++ b/providers/aider.toml @@ -17,6 +17,7 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = false +supports_thinking = true aliases = ["aider-sonnet"] [[models]] diff --git a/providers/alibaba-coding-plan.toml b/providers/alibaba-coding-plan.toml index 5089c6a..f780752 100644 --- a/providers/alibaba-coding-plan.toml +++ b/providers/alibaba-coding-plan.toml @@ -21,6 +21,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -34,6 +35,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -47,6 +49,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -60,6 +63,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -73,6 +77,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -125,4 +130,5 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] diff --git a/providers/allenai.toml b/providers/allenai.toml index f0890ff..8350f4c 100644 --- a/providers/allenai.toml +++ b/providers/allenai.toml @@ -26,6 +26,7 @@ max_output_tokens = 65536 input_cost_per_m = 0.15 output_cost_per_m = 0.5 supports_streaming = true +supports_thinking = true [[models]] id = "olmo-3.1-32b-instruct" @@ -46,3 +47,4 @@ max_output_tokens = 65536 input_cost_per_m = 0.15 output_cost_per_m = 0.5 supports_streaming = true +supports_thinking = true diff --git a/providers/anthropic.toml b/providers/anthropic.toml index 24fd015..1ef56d5 100644 --- a/providers/anthropic.toml +++ b/providers/anthropic.toml @@ -19,6 +19,7 @@ output_cost_per_m = 25.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["opus", "claude-opus"] [[models]] @@ -32,6 +33,7 @@ output_cost_per_m = 15.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["sonnet", "claude-sonnet"] [[models]] @@ -45,6 +47,7 @@ output_cost_per_m = 75.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -58,6 +61,7 @@ output_cost_per_m = 15.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -71,6 +75,7 @@ output_cost_per_m = 1.25 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["haiku", "claude-haiku"] [[models]] @@ -84,6 +89,7 @@ output_cost_per_m = 15.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -97,4 +103,5 @@ output_cost_per_m = 15.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] diff --git a/providers/arcee-ai.toml b/providers/arcee-ai.toml index 684cdd9..b5560e5 100644 --- a/providers/arcee-ai.toml +++ b/providers/arcee-ai.toml @@ -26,6 +26,7 @@ max_output_tokens = 32000 input_cost_per_m = 0.9 output_cost_per_m = 3.3 supports_streaming = true +supports_thinking = true [[models]] id = "spotlight" diff --git a/providers/bedrock.toml b/providers/bedrock.toml index 9afe975..e8be1bd 100644 --- a/providers/bedrock.toml +++ b/providers/bedrock.toml @@ -19,6 +19,7 @@ output_cost_per_m = 25.00 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -32,6 +33,7 @@ output_cost_per_m = 15.00 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -45,6 +47,7 @@ output_cost_per_m = 75.00 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -58,6 +61,7 @@ output_cost_per_m = 15.00 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -71,6 +75,7 @@ output_cost_per_m = 1.25 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/chutes.toml b/providers/chutes.toml index b405e3f..8c9057f 100644 --- a/providers/chutes.toml +++ b/providers/chutes.toml @@ -32,6 +32,7 @@ output_cost_per_m = 2.19 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["chutes-deepseek-r1"] [[models]] @@ -58,6 +59,7 @@ output_cost_per_m = 0.35 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["chutes-qwen3"] [[models]] diff --git a/providers/claude-code.toml b/providers/claude-code.toml index 9061dbd..b86a6d3 100644 --- a/providers/claude-code.toml +++ b/providers/claude-code.toml @@ -19,6 +19,7 @@ output_cost_per_m = 25.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["claude-code-opus"] [[models]] @@ -32,6 +33,7 @@ output_cost_per_m = 15.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["claude-code", "claude-code-sonnet"] [[models]] @@ -45,4 +47,5 @@ output_cost_per_m = 1.25 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["claude-code-haiku"] diff --git a/providers/codex-cli.toml b/providers/codex-cli.toml index d240bdd..05e3bfc 100644 --- a/providers/codex-cli.toml +++ b/providers/codex-cli.toml @@ -23,6 +23,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.4"] [[models]] @@ -37,6 +38,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.3-codex"] [[models]] @@ -51,6 +53,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.2"] [[models]] @@ -65,6 +68,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.2-codex"] [[models]] @@ -79,6 +83,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.1-codex-max"] [[models]] @@ -93,4 +98,5 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-cli-gpt-5.1-codex-mini"] diff --git a/providers/deepseek.toml b/providers/deepseek.toml index 40f6574..51f7ff0 100644 --- a/providers/deepseek.toml +++ b/providers/deepseek.toml @@ -32,6 +32,7 @@ output_cost_per_m = 2.19 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["deepseek-r1"] [[models]] diff --git a/providers/fireworks.toml b/providers/fireworks.toml index 2f4bc8b..a38d85c 100644 --- a/providers/fireworks.toml +++ b/providers/fireworks.toml @@ -45,6 +45,7 @@ output_cost_per_m = 8.00 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/gemini-cli.toml b/providers/gemini-cli.toml index a67b6f7..5301f35 100644 --- a/providers/gemini-cli.toml +++ b/providers/gemini-cli.toml @@ -17,6 +17,7 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = false +supports_thinking = true aliases = ["gemini-cli-pro"] [[models]] @@ -31,4 +32,5 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = false +supports_thinking = true aliases = ["gemini-cli-flash"] diff --git a/providers/gemini.toml b/providers/gemini.toml index e4e5eb2..64d1055 100644 --- a/providers/gemini.toml +++ b/providers/gemini.toml @@ -20,6 +20,7 @@ output_cost_per_m = 12.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["gemini-pro"] [[models]] @@ -33,6 +34,7 @@ output_cost_per_m = 3.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["gemini-flash"] [[models]] @@ -46,6 +48,7 @@ output_cost_per_m = 1.5 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -59,6 +62,7 @@ output_cost_per_m = 0.39999999999999997 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -72,6 +76,7 @@ output_cost_per_m = 10.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -85,6 +90,7 @@ output_cost_per_m = 2.5 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["flash"] [[models]] diff --git a/providers/groq.toml b/providers/groq.toml index f79e61b..52c2958 100644 --- a/providers/groq.toml +++ b/providers/groq.toml @@ -123,6 +123,7 @@ output_cost_per_m = 0.20 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/huggingface.toml b/providers/huggingface.toml index a0bad61..fa2a333 100644 --- a/providers/huggingface.toml +++ b/providers/huggingface.toml @@ -32,6 +32,7 @@ output_cost_per_m = 0.30 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/liquid.toml b/providers/liquid.toml index 4f83e32..2fa73f6 100644 --- a/providers/liquid.toml +++ b/providers/liquid.toml @@ -46,6 +46,7 @@ max_output_tokens = 8192 input_cost_per_m = 0.0 output_cost_per_m = 0.0 supports_streaming = true +supports_thinking = true [[models]] id = "lfm2-8b-a1b" diff --git a/providers/moonshot.toml b/providers/moonshot.toml index a1c7dbb..16e2ee1 100644 --- a/providers/moonshot.toml +++ b/providers/moonshot.toml @@ -71,4 +71,5 @@ output_cost_per_m = 1.72 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["kimi-k2.5-0711"] diff --git a/providers/nvidia-nim.toml b/providers/nvidia-nim.toml index f73759e..0e1fdeb 100644 --- a/providers/nvidia-nim.toml +++ b/providers/nvidia-nim.toml @@ -222,6 +222,7 @@ output_cost_per_m = 0.10 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["deepseek-r1-32b"] # ── Qwen models ────────────────────────────────────────────────── @@ -237,6 +238,7 @@ output_cost_per_m = 2.34 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["qwen3.5"] [[models]] @@ -263,6 +265,7 @@ output_cost_per_m = 0.58 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] # ── Google Gemma models ────────────────────────────────────────── diff --git a/providers/ollama.toml b/providers/ollama.toml index a6453b9..b14d510 100644 --- a/providers/ollama.toml +++ b/providers/ollama.toml @@ -84,4 +84,5 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] diff --git a/providers/openai.toml b/providers/openai.toml index d47a449..45ad83a 100644 --- a/providers/openai.toml +++ b/providers/openai.toml @@ -85,6 +85,7 @@ output_cost_per_m = 8.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -98,6 +99,7 @@ output_cost_per_m = 4.40 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -111,6 +113,7 @@ output_cost_per_m = 4.4 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -243,4 +246,5 @@ output_cost_per_m = 4.40 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["codex-o4"] diff --git a/providers/openrouter.toml b/providers/openrouter.toml index 8f364ef..fb3f870 100644 --- a/providers/openrouter.toml +++ b/providers/openrouter.toml @@ -22,6 +22,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -35,6 +36,7 @@ output_cost_per_m = 0.60 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -48,6 +50,7 @@ output_cost_per_m = 15.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -113,6 +116,7 @@ output_cost_per_m = 10.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -152,6 +156,7 @@ output_cost_per_m = 2.19 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] # Free models — verified against openrouter.ai/api/v1/models on 2026-04-10. @@ -184,6 +189,7 @@ output_cost_per_m = 0.0 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/perplexity.toml b/providers/perplexity.toml index 5ca0f42..2d1fd29 100644 --- a/providers/perplexity.toml +++ b/providers/perplexity.toml @@ -32,6 +32,7 @@ output_cost_per_m = 8.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -45,6 +46,7 @@ output_cost_per_m = 8.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/qwen-code.toml b/providers/qwen-code.toml index d0dc9a3..0c0d515 100644 --- a/providers/qwen-code.toml +++ b/providers/qwen-code.toml @@ -19,6 +19,7 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["qwen-code"] [[models]] @@ -45,4 +46,5 @@ output_cost_per_m = 0.0 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["qwen-code-qwq"] diff --git a/providers/qwen.toml b/providers/qwen.toml index b04261c..79ba436 100644 --- a/providers/qwen.toml +++ b/providers/qwen.toml @@ -104,6 +104,7 @@ output_cost_per_m = 1.82 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["qwen3"] [[models]] @@ -117,6 +118,7 @@ output_cost_per_m = 0.28 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/replicate.toml b/providers/replicate.toml index 3f32b76..90ef153 100644 --- a/providers/replicate.toml +++ b/providers/replicate.toml @@ -32,6 +32,7 @@ output_cost_per_m = 0.40 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/sambanova.toml b/providers/sambanova.toml index 7e081e3..7b86cea 100644 --- a/providers/sambanova.toml +++ b/providers/sambanova.toml @@ -32,6 +32,7 @@ output_cost_per_m = 0.06 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/stepfun.toml b/providers/stepfun.toml index 20b2bac..7a7f3bc 100644 --- a/providers/stepfun.toml +++ b/providers/stepfun.toml @@ -58,4 +58,5 @@ output_cost_per_m = 1.14 supports_tools = false supports_vision = true supports_streaming = true +supports_thinking = true aliases = ["stepfun-vision"] diff --git a/providers/tngtech.toml b/providers/tngtech.toml index 15b9e5b..a771214 100644 --- a/providers/tngtech.toml +++ b/providers/tngtech.toml @@ -16,3 +16,4 @@ max_output_tokens = 163840 input_cost_per_m = 0.3 output_cost_per_m = 1.1 supports_streaming = true +supports_thinking = true diff --git a/providers/together.toml b/providers/together.toml index 069cdb5..ea5dd83 100644 --- a/providers/together.toml +++ b/providers/together.toml @@ -71,6 +71,7 @@ output_cost_per_m = 7.00 supports_tools = false supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/venice.toml b/providers/venice.toml index bcba2d7..c6cb2d0 100644 --- a/providers/venice.toml +++ b/providers/venice.toml @@ -45,4 +45,5 @@ output_cost_per_m = 0.90 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] diff --git a/providers/vertex-ai.toml b/providers/vertex-ai.toml index 5f5525e..4c98e62 100644 --- a/providers/vertex-ai.toml +++ b/providers/vertex-ai.toml @@ -18,6 +18,7 @@ output_cost_per_m = 10.0 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -32,6 +33,7 @@ output_cost_per_m = 0.6 supports_tools = true supports_vision = true supports_streaming = true +supports_thinking = true aliases = [] [[models]] diff --git a/providers/xai.toml b/providers/xai.toml index 39a1485..993ea87 100644 --- a/providers/xai.toml +++ b/providers/xai.toml @@ -32,6 +32,7 @@ output_cost_per_m = 5.0 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = [] [[models]] @@ -58,6 +59,7 @@ output_cost_per_m = 0.50 supports_tools = true supports_vision = false supports_streaming = true +supports_thinking = true aliases = ["grok-fast"] [[models]] diff --git a/schema.toml b/schema.toml index 95a6ba6..155ab43 100644 --- a/schema.toml +++ b/schema.toml @@ -114,6 +114,12 @@ required = false description = "Streaming response support" default = true +[provider.sections.models.fields.supports_thinking] +type = "bool" +required = false +description = "Extended thinking / reasoning support" +default = false + [provider.sections.models.fields.aliases] type = "array" required = false