@botiverse/raft-daemon 0.66.0 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-EX73HXGE.js → chunk-RXK2KSYW.js} +1616 -757
- package/dist/cli/index.js +456 -359
- package/dist/core.js +1 -1
- package/dist/{dist-PCKZII47.js → dist-Y3VRAU5E.js} +456 -359
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -27891,427 +27891,420 @@ var PI_BUILTIN_PROVIDER_MODELS_GENERATED = {
|
|
|
27891
27891
|
{ id: "deepseek/deepseek-v4-flash", label: "DeepSeek V4 Flash" }
|
|
27892
27892
|
],
|
|
27893
27893
|
"minimax": [
|
|
27894
|
+
{ id: "minimax/MiniMax-M3", label: "MiniMax-M3" },
|
|
27894
27895
|
{ id: "minimax/MiniMax-M2.7", label: "MiniMax-M2.7" },
|
|
27895
|
-
{ id: "minimax/MiniMax-M2.7-highspeed", label: "MiniMax-M2.7-highspeed" }
|
|
27896
|
-
{ id: "minimax/MiniMax-M3", label: "MiniMax-M3" }
|
|
27896
|
+
{ id: "minimax/MiniMax-M2.7-highspeed", label: "MiniMax-M2.7-highspeed" }
|
|
27897
27897
|
],
|
|
27898
27898
|
"minimax-cn": [
|
|
27899
|
+
{ id: "minimax-cn/MiniMax-M3", label: "MiniMax-M3" },
|
|
27899
27900
|
{ id: "minimax-cn/MiniMax-M2.7", label: "MiniMax-M2.7" },
|
|
27900
|
-
{ id: "minimax-cn/MiniMax-M2.7-highspeed", label: "MiniMax-M2.7-highspeed" }
|
|
27901
|
-
{ id: "minimax-cn/MiniMax-M3", label: "MiniMax-M3" }
|
|
27901
|
+
{ id: "minimax-cn/MiniMax-M2.7-highspeed", label: "MiniMax-M2.7-highspeed" }
|
|
27902
27902
|
],
|
|
27903
27903
|
"zai": [
|
|
27904
|
+
{ id: "zai/glm-5.2", label: "GLM-5.2" },
|
|
27904
27905
|
{ id: "zai/glm-5.1", label: "GLM-5.1" },
|
|
27905
|
-
{ id: "zai/glm-4.5-air", label: "GLM-4.5-Air" },
|
|
27906
27906
|
{ id: "zai/glm-4.7", label: "GLM-4.7" },
|
|
27907
|
+
{ id: "zai/glm-4.5-air", label: "GLM-4.5-Air" },
|
|
27907
27908
|
{ id: "zai/glm-5-turbo", label: "GLM-5-Turbo" },
|
|
27908
|
-
{ id: "zai/glm-5.2", label: "GLM-5.2" },
|
|
27909
27909
|
{ id: "zai/glm-5v-turbo", label: "GLM-5V-Turbo" }
|
|
27910
27910
|
],
|
|
27911
27911
|
"zai-coding-cn": [
|
|
27912
|
+
{ id: "zai-coding-cn/glm-5.2", label: "GLM-5.2" },
|
|
27912
27913
|
{ id: "zai-coding-cn/glm-5.1", label: "GLM-5.1" },
|
|
27913
|
-
{ id: "zai-coding-cn/glm-4.5-air", label: "GLM-4.5-Air" },
|
|
27914
27914
|
{ id: "zai-coding-cn/glm-4.7", label: "GLM-4.7" },
|
|
27915
|
+
{ id: "zai-coding-cn/glm-4.5-air", label: "GLM-4.5-Air" },
|
|
27915
27916
|
{ id: "zai-coding-cn/glm-5-turbo", label: "GLM-5-Turbo" },
|
|
27916
|
-
{ id: "zai-coding-cn/glm-5.2", label: "GLM-5.2" },
|
|
27917
27917
|
{ id: "zai-coding-cn/glm-5v-turbo", label: "GLM-5V-Turbo" }
|
|
27918
27918
|
],
|
|
27919
27919
|
"moonshotai": [
|
|
27920
|
-
{ id: "moonshotai/kimi-k2.
|
|
27921
|
-
{ id: "moonshotai/kimi-k2-0711-preview", label: "Kimi K2 0711" },
|
|
27922
|
-
{ id: "moonshotai/kimi-k2-0905-preview", label: "Kimi K2 0905" },
|
|
27920
|
+
{ id: "moonshotai/kimi-k2.7-code", label: "Kimi K2.7 Code" },
|
|
27923
27921
|
{ id: "moonshotai/kimi-k2-thinking", label: "Kimi K2 Thinking" },
|
|
27922
|
+
{ id: "moonshotai/kimi-k2.7-code-highspeed", label: "Kimi K2.7 Code HighSpeed" },
|
|
27924
27923
|
{ id: "moonshotai/kimi-k2-thinking-turbo", label: "Kimi K2 Thinking Turbo" },
|
|
27925
|
-
{ id: "moonshotai/kimi-k2-
|
|
27924
|
+
{ id: "moonshotai/kimi-k2-0905-preview", label: "Kimi K2 0905" },
|
|
27925
|
+
{ id: "moonshotai/kimi-k2-0711-preview", label: "Kimi K2 0711" },
|
|
27926
|
+
{ id: "moonshotai/kimi-k2.6", label: "Kimi K2.6" },
|
|
27926
27927
|
{ id: "moonshotai/kimi-k2.5", label: "Kimi K2.5" },
|
|
27927
|
-
{ id: "moonshotai/kimi-k2
|
|
27928
|
-
{ id: "moonshotai/kimi-k2.7-code-highspeed", label: "Kimi K2.7 Code HighSpeed" }
|
|
27928
|
+
{ id: "moonshotai/kimi-k2-turbo-preview", label: "Kimi K2 Turbo" }
|
|
27929
27929
|
],
|
|
27930
27930
|
"moonshotai-cn": [
|
|
27931
|
-
{ id: "moonshotai-cn/kimi-k2.
|
|
27932
|
-
{ id: "moonshotai-cn/kimi-k2-0711-preview", label: "Kimi K2 0711" },
|
|
27933
|
-
{ id: "moonshotai-cn/kimi-k2-0905-preview", label: "Kimi K2 0905" },
|
|
27931
|
+
{ id: "moonshotai-cn/kimi-k2.7-code", label: "Kimi K2.7 Code" },
|
|
27934
27932
|
{ id: "moonshotai-cn/kimi-k2-thinking", label: "Kimi K2 Thinking" },
|
|
27933
|
+
{ id: "moonshotai-cn/kimi-k2.7-code-highspeed", label: "Kimi K2.7 Code HighSpeed" },
|
|
27935
27934
|
{ id: "moonshotai-cn/kimi-k2-thinking-turbo", label: "Kimi K2 Thinking Turbo" },
|
|
27936
|
-
{ id: "moonshotai-cn/kimi-k2-
|
|
27935
|
+
{ id: "moonshotai-cn/kimi-k2-0905-preview", label: "Kimi K2 0905" },
|
|
27936
|
+
{ id: "moonshotai-cn/kimi-k2-0711-preview", label: "Kimi K2 0711" },
|
|
27937
|
+
{ id: "moonshotai-cn/kimi-k2.6", label: "Kimi K2.6" },
|
|
27937
27938
|
{ id: "moonshotai-cn/kimi-k2.5", label: "Kimi K2.5" },
|
|
27938
|
-
{ id: "moonshotai-cn/kimi-k2
|
|
27939
|
-
{ id: "moonshotai-cn/kimi-k2.7-code-highspeed", label: "Kimi K2.7 Code HighSpeed" }
|
|
27939
|
+
{ id: "moonshotai-cn/kimi-k2-turbo-preview", label: "Kimi K2 Turbo" }
|
|
27940
27940
|
],
|
|
27941
27941
|
"kimi-coding": [
|
|
27942
|
-
{ id: "kimi-coding/kimi-
|
|
27942
|
+
{ id: "kimi-coding/kimi-k2-thinking", label: "Kimi K2 Thinking" },
|
|
27943
27943
|
{ id: "kimi-coding/k2p7", label: "Kimi K2.7 Code" },
|
|
27944
|
-
{ id: "kimi-coding/kimi-
|
|
27944
|
+
{ id: "kimi-coding/kimi-for-coding", label: "Kimi For Coding" }
|
|
27945
27945
|
],
|
|
27946
27946
|
"openrouter": [
|
|
27947
|
-
{ id: "openrouter/moonshotai/kimi-k2.6", label: "MoonshotAI: Kimi K2.6" },
|
|
27948
|
-
{ id: "openrouter/ai21/jamba-large-1.7", label: "AI21: Jamba Large 1.7" },
|
|
27949
|
-
{ id: "openrouter/amazon/nova-2-lite-v1", label: "Amazon: Nova 2 Lite" },
|
|
27950
|
-
{ id: "openrouter/amazon/nova-lite-v1", label: "Amazon: Nova Lite 1.0" },
|
|
27951
|
-
{ id: "openrouter/amazon/nova-micro-v1", label: "Amazon: Nova Micro 1.0" },
|
|
27952
|
-
{ id: "openrouter/amazon/nova-premier-v1", label: "Amazon: Nova Premier 1.0" },
|
|
27953
|
-
{ id: "openrouter/amazon/nova-pro-v1", label: "Amazon: Nova Pro 1.0" },
|
|
27954
|
-
{ id: "openrouter/anthropic/claude-3-haiku", label: "Anthropic: Claude 3 Haiku" },
|
|
27955
|
-
{ id: "openrouter/anthropic/claude-3.5-haiku", label: "Anthropic: Claude 3.5 Haiku" },
|
|
27956
27947
|
{ id: "openrouter/anthropic/claude-fable-5", label: "Anthropic: Claude Fable 5" },
|
|
27957
|
-
{ id: "openrouter
|
|
27958
|
-
{ id: "openrouter/anthropic/claude-opus-4", label: "Anthropic: Claude Opus 4" },
|
|
27959
|
-
{ id: "openrouter/anthropic/claude-opus-4.1", label: "Anthropic: Claude Opus 4.1" },
|
|
27960
|
-
{ id: "openrouter/anthropic/claude-opus-4.5", label: "Anthropic: Claude Opus 4.5" },
|
|
27961
|
-
{ id: "openrouter/anthropic/claude-opus-4.6", label: "Anthropic: Claude Opus 4.6" },
|
|
27962
|
-
{ id: "openrouter/anthropic/claude-opus-4.6-fast", label: "Anthropic: Claude Opus 4.6 (Fast)" },
|
|
27963
|
-
{ id: "openrouter/anthropic/claude-opus-4.7", label: "Anthropic: Claude Opus 4.7" },
|
|
27964
|
-
{ id: "openrouter/anthropic/claude-opus-4.7-fast", label: "Anthropic: Claude Opus 4.7 (Fast)" },
|
|
27948
|
+
{ id: "openrouter/~anthropic/claude-fable-latest", label: "Anthropic: Claude Fable Latest" },
|
|
27965
27949
|
{ id: "openrouter/anthropic/claude-opus-4.8", label: "Anthropic: Claude Opus 4.8" },
|
|
27950
|
+
{ id: "openrouter/anthropic/claude-opus-4.7", label: "Anthropic: Claude Opus 4.7" },
|
|
27951
|
+
{ id: "openrouter/anthropic/claude-opus-4.6", label: "Anthropic: Claude Opus 4.6" },
|
|
27952
|
+
{ id: "openrouter/anthropic/claude-opus-4.5", label: "Anthropic: Claude Opus 4.5" },
|
|
27953
|
+
{ id: "openrouter/anthropic/claude-opus-4.1", label: "Anthropic: Claude Opus 4.1" },
|
|
27954
|
+
{ id: "openrouter/anthropic/claude-opus-4", label: "Anthropic: Claude Opus 4" },
|
|
27955
|
+
{ id: "openrouter/~anthropic/claude-opus-latest", label: "Anthropic: Claude Opus Latest" },
|
|
27966
27956
|
{ id: "openrouter/anthropic/claude-opus-4.8-fast", label: "Anthropic: Claude Opus 4.8 (Fast)" },
|
|
27967
|
-
{ id: "openrouter/anthropic/claude-
|
|
27968
|
-
{ id: "openrouter/anthropic/claude-sonnet-
|
|
27957
|
+
{ id: "openrouter/anthropic/claude-opus-4.7-fast", label: "Anthropic: Claude Opus 4.7 (Fast)" },
|
|
27958
|
+
{ id: "openrouter/anthropic/claude-sonnet-5", label: "Anthropic: Claude Sonnet 5" },
|
|
27969
27959
|
{ id: "openrouter/anthropic/claude-sonnet-4.6", label: "Anthropic: Claude Sonnet 4.6" },
|
|
27970
|
-
{ id: "openrouter/
|
|
27971
|
-
{ id: "openrouter/
|
|
27972
|
-
{ id: "openrouter/
|
|
27973
|
-
{ id: "openrouter/
|
|
27974
|
-
{ id: "openrouter/
|
|
27975
|
-
{ id: "openrouter/
|
|
27976
|
-
{ id: "openrouter/
|
|
27977
|
-
{ id: "openrouter/
|
|
27978
|
-
{ id: "openrouter/
|
|
27979
|
-
{ id: "openrouter/
|
|
27980
|
-
{ id: "openrouter/cohere/north-mini-code:free", label: "Cohere: North Mini Code (free)" },
|
|
27981
|
-
{ id: "openrouter/deepseek/deepseek-chat", label: "DeepSeek: DeepSeek V3" },
|
|
27982
|
-
{ id: "openrouter/deepseek/deepseek-chat-v3-0324", label: "DeepSeek: DeepSeek V3 0324" },
|
|
27983
|
-
{ id: "openrouter/deepseek/deepseek-chat-v3.1", label: "DeepSeek: DeepSeek V3.1" },
|
|
27984
|
-
{ id: "openrouter/deepseek/deepseek-r1", label: "DeepSeek: R1" },
|
|
27985
|
-
{ id: "openrouter/deepseek/deepseek-r1-0528", label: "DeepSeek: R1 0528" },
|
|
27986
|
-
{ id: "openrouter/deepseek/deepseek-v3.1-terminus", label: "DeepSeek: DeepSeek V3.1 Terminus" },
|
|
27987
|
-
{ id: "openrouter/deepseek/deepseek-v3.2", label: "DeepSeek: DeepSeek V3.2" },
|
|
27988
|
-
{ id: "openrouter/deepseek/deepseek-v3.2-exp", label: "DeepSeek: DeepSeek V3.2 Exp" },
|
|
27989
|
-
{ id: "openrouter/deepseek/deepseek-v4-flash", label: "DeepSeek: DeepSeek V4 Flash" },
|
|
27990
|
-
{ id: "openrouter/deepseek/deepseek-v4-pro", label: "DeepSeek: DeepSeek V4 Pro" },
|
|
27991
|
-
{ id: "openrouter/essentialai/rnj-1-instruct", label: "EssentialAI: Rnj 1 Instruct" },
|
|
27992
|
-
{ id: "openrouter/google/gemini-2.5-flash", label: "Google: Gemini 2.5 Flash" },
|
|
27993
|
-
{ id: "openrouter/google/gemini-2.5-flash-lite", label: "Google: Gemini 2.5 Flash Lite" },
|
|
27994
|
-
{ id: "openrouter/google/gemini-2.5-flash-lite-preview-09-2025", label: "Google: Gemini 2.5 Flash Lite Preview 09-2025" },
|
|
27995
|
-
{ id: "openrouter/google/gemini-2.5-pro", label: "Google: Gemini 2.5 Pro" },
|
|
27960
|
+
{ id: "openrouter/anthropic/claude-sonnet-4.5", label: "Anthropic: Claude Sonnet 4.5" },
|
|
27961
|
+
{ id: "openrouter/anthropic/claude-sonnet-4", label: "Anthropic: Claude Sonnet 4" },
|
|
27962
|
+
{ id: "openrouter/~anthropic/claude-sonnet-latest", label: "Anthropic Claude Sonnet Latest" },
|
|
27963
|
+
{ id: "openrouter/anthropic/claude-haiku-4.5", label: "Anthropic: Claude Haiku 4.5" },
|
|
27964
|
+
{ id: "openrouter/anthropic/claude-3-haiku", label: "Anthropic: Claude 3 Haiku" },
|
|
27965
|
+
{ id: "openrouter/~anthropic/claude-haiku-latest", label: "Anthropic Claude Haiku Latest" },
|
|
27966
|
+
{ id: "openrouter/openai/gpt-5.1-codex-max", label: "OpenAI: GPT-5.1-Codex-Max" },
|
|
27967
|
+
{ id: "openrouter/kwaipilot/kat-coder-pro-v2", label: "Kwaipilot: KAT-Coder-Pro V2" },
|
|
27968
|
+
{ id: "openrouter/qwen/qwen3-max-thinking", label: "Qwen: Qwen3 Max Thinking" },
|
|
27969
|
+
{ id: "openrouter/nvidia/nemotron-3-ultra-550b-a55b", label: "NVIDIA: Nemotron 3 Ultra" },
|
|
27996
27970
|
{ id: "openrouter/google/gemini-2.5-pro-preview", label: "Google: Gemini 2.5 Pro Preview 06-05" },
|
|
27997
27971
|
{ id: "openrouter/google/gemini-2.5-pro-preview-05-06", label: "Google: Gemini 2.5 Pro Preview 05-06" },
|
|
27998
|
-
{ id: "openrouter/
|
|
27999
|
-
{ id: "openrouter/
|
|
28000
|
-
{ id: "openrouter/
|
|
28001
|
-
{ id: "openrouter/
|
|
27972
|
+
{ id: "openrouter/openai/gpt-5.5-pro", label: "OpenAI: GPT-5.5 Pro" },
|
|
27973
|
+
{ id: "openrouter/openai/gpt-5.4-pro", label: "OpenAI: GPT-5.4 Pro" },
|
|
27974
|
+
{ id: "openrouter/openai/gpt-5.2-pro", label: "OpenAI: GPT-5.2 Pro" },
|
|
27975
|
+
{ id: "openrouter/openai/gpt-5-pro", label: "OpenAI: GPT-5 Pro" },
|
|
27976
|
+
{ id: "openrouter/deepseek/deepseek-v4-pro", label: "DeepSeek: DeepSeek V4 Pro" },
|
|
27977
|
+
{ id: "openrouter/qwen/qwen3.7-max", label: "Qwen: Qwen3.7 Max" },
|
|
27978
|
+
{ id: "openrouter/qwen/qwen3.6-max-preview", label: "Qwen: Qwen3.6 Max Preview" },
|
|
28002
27979
|
{ id: "openrouter/google/gemini-3.1-pro-preview", label: "Google: Gemini 3.1 Pro Preview" },
|
|
28003
27980
|
{ id: "openrouter/google/gemini-3.1-pro-preview-customtools", label: "Google: Gemini 3.1 Pro Preview Custom Tools" },
|
|
28004
|
-
{ id: "openrouter/
|
|
28005
|
-
{ id: "openrouter/
|
|
28006
|
-
{ id: "openrouter/
|
|
28007
|
-
{ id: "openrouter/google/
|
|
28008
|
-
{ id: "openrouter/
|
|
28009
|
-
{ id: "openrouter/
|
|
28010
|
-
{ id: "openrouter/
|
|
28011
|
-
{ id: "openrouter/
|
|
28012
|
-
{ id: "openrouter/
|
|
28013
|
-
{ id: "openrouter/
|
|
28014
|
-
{ id: "openrouter/
|
|
28015
|
-
{ id: "openrouter/
|
|
28016
|
-
{ id: "openrouter/
|
|
28017
|
-
{ id: "openrouter/
|
|
28018
|
-
{ id: "openrouter/
|
|
28019
|
-
{ id: "openrouter/
|
|
28020
|
-
{ id: "openrouter/
|
|
28021
|
-
{ id: "openrouter/
|
|
28022
|
-
{ id: "openrouter/
|
|
28023
|
-
{ id: "openrouter/
|
|
28024
|
-
{ id: "openrouter/
|
|
28025
|
-
{ id: "openrouter/
|
|
28026
|
-
{ id: "openrouter/
|
|
28027
|
-
{ id: "openrouter/
|
|
28028
|
-
{ id: "openrouter/
|
|
28029
|
-
{ id: "openrouter/
|
|
28030
|
-
{ id: "openrouter/
|
|
27981
|
+
{ id: "openrouter/openai/o3-pro", label: "OpenAI: o3 Pro" },
|
|
27982
|
+
{ id: "openrouter/qwen/qwen3-max", label: "Qwen: Qwen3 Max" },
|
|
27983
|
+
{ id: "openrouter/upstage/solar-pro-3", label: "Upstage: Solar Pro 3" },
|
|
27984
|
+
{ id: "openrouter/google/gemini-2.5-pro", label: "Google: Gemini 2.5 Pro" },
|
|
27985
|
+
{ id: "openrouter/xiaomi/mimo-v2.5-pro", label: "Xiaomi: MiMo-V2.5-Pro" },
|
|
27986
|
+
{ id: "openrouter/amazon/nova-premier-v1", label: "Amazon: Nova Premier 1.0" },
|
|
27987
|
+
{ id: "openrouter/amazon/nova-pro-v1", label: "Amazon: Nova Pro 1.0" },
|
|
27988
|
+
{ id: "openrouter/~google/gemini-pro-latest", label: "Google Gemini Pro Latest" },
|
|
27989
|
+
{ id: "openrouter/sakana/fugu-ultra", label: "Sakana: Fugu Ultra" },
|
|
27990
|
+
{ id: "openrouter/arcee-ai/trinity-large-thinking", label: "Arcee AI: Trinity Large Thinking" },
|
|
27991
|
+
{ id: "openrouter/qwen/qwen3-coder", label: "Qwen: Qwen3 Coder 480B A35B" },
|
|
27992
|
+
{ id: "openrouter/qwen/qwen3-coder-30b-a3b-instruct", label: "Qwen: Qwen3 Coder 30B A3B Instruct" },
|
|
27993
|
+
{ id: "openrouter/openai/gpt-5.3-codex", label: "OpenAI: GPT-5.3-Codex" },
|
|
27994
|
+
{ id: "openrouter/openai/gpt-5.2-codex", label: "OpenAI: GPT-5.2-Codex" },
|
|
27995
|
+
{ id: "openrouter/openai/gpt-5.1-codex", label: "OpenAI: GPT-5.1-Codex" },
|
|
27996
|
+
{ id: "openrouter/openai/gpt-5-codex", label: "OpenAI: GPT-5 Codex" },
|
|
27997
|
+
{ id: "openrouter/qwen/qwen3-coder-next", label: "Qwen: Qwen3 Coder Next" },
|
|
27998
|
+
{ id: "openrouter/qwen/qwen3-coder-plus", label: "Qwen: Qwen3 Coder Plus" },
|
|
27999
|
+
{ id: "openrouter/moonshotai/kimi-k2.7-code", label: "MoonshotAI: Kimi K2.7 Code" },
|
|
28000
|
+
{ id: "openrouter/qwen/qwen3-235b-a22b-thinking-2507", label: "Qwen: Qwen3 235B A22B Thinking 2507" },
|
|
28001
|
+
{ id: "openrouter/qwen/qwen3-30b-a3b-thinking-2507", label: "Qwen: Qwen3 30B A3B Thinking 2507" },
|
|
28002
|
+
{ id: "openrouter/qwen/qwen-plus-2025-07-28:thinking", label: "Qwen: Qwen Plus 0728 (thinking)" },
|
|
28003
|
+
{ id: "openrouter/qwen/qwen3-vl-235b-a22b-thinking", label: "Qwen: Qwen3 VL 235B A22B Thinking" },
|
|
28004
|
+
{ id: "openrouter/qwen/qwen3-next-80b-a3b-thinking", label: "Qwen: Qwen3 Next 80B A3B Thinking" },
|
|
28005
|
+
{ id: "openrouter/qwen/qwen3-vl-30b-a3b-thinking", label: "Qwen: Qwen3 VL 30B A3B Thinking" },
|
|
28006
|
+
{ id: "openrouter/qwen/qwen3-vl-8b-thinking", label: "Qwen: Qwen3 VL 8B Thinking" },
|
|
28007
|
+
{ id: "openrouter/google/gemini-3-pro-image", label: "Google: Nano Banana Pro (Gemini 3 Pro Image)" },
|
|
28008
|
+
{ id: "openrouter/moonshotai/kimi-k2-thinking", label: "MoonshotAI: Kimi K2 Thinking" },
|
|
28009
|
+
{ id: "openrouter/qwen/qwen3-coder-flash", label: "Qwen: Qwen3 Coder Flash" },
|
|
28010
|
+
{ id: "openrouter/mistralai/mistral-large-2512", label: "Mistral: Mistral Large 3 2512" },
|
|
28011
|
+
{ id: "openrouter/mistralai/mistral-large-2407", label: "Mistral Large 2407" },
|
|
28012
|
+
{ id: "openrouter/nvidia/nemotron-3-super-120b-a12b", label: "NVIDIA: Nemotron 3 Super" },
|
|
28013
|
+
{ id: "openrouter/nvidia/llama-3.3-nemotron-super-49b-v1.5", label: "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5" },
|
|
28014
|
+
{ id: "openrouter/ai21/jamba-large-1.7", label: "AI21: Jamba Large 1.7" },
|
|
28015
|
+
{ id: "openrouter/arcee-ai/virtuoso-large", label: "Arcee AI: Virtuoso Large" },
|
|
28016
|
+
{ id: "openrouter/mistralai/mistral-large", label: "Mistral Large" },
|
|
28017
|
+
{ id: "openrouter/nvidia/nemotron-3-ultra-550b-a55b:free", label: "NVIDIA: Nemotron 3 Ultra (free)" },
|
|
28018
|
+
{ id: "openrouter/openai/gpt-5.1-codex-mini", label: "OpenAI: GPT-5.1-Codex-Mini" },
|
|
28019
|
+
{ id: "openrouter/qwen/qwen3.5-plus-20260420", label: "Qwen: Qwen3.5 Plus 2026-04-20" },
|
|
28020
|
+
{ id: "openrouter/mistralai/mistral-small-2603", label: "Mistral: Mistral Small 4" },
|
|
28031
28021
|
{ id: "openrouter/mistralai/devstral-2512", label: "Mistral: Devstral 2 2512" },
|
|
28032
28022
|
{ id: "openrouter/mistralai/ministral-14b-2512", label: "Mistral: Ministral 3 14B 2512" },
|
|
28033
28023
|
{ id: "openrouter/mistralai/ministral-3b-2512", label: "Mistral: Ministral 3 3B 2512" },
|
|
28034
28024
|
{ id: "openrouter/mistralai/ministral-8b-2512", label: "Mistral: Ministral 3 8B 2512" },
|
|
28035
|
-
{ id: "openrouter/mistralai/
|
|
28036
|
-
{ id: "openrouter/mistralai/mistral-large-2407", label: "Mistral Large 2407" },
|
|
28037
|
-
{ id: "openrouter/mistralai/mistral-large-2512", label: "Mistral: Mistral Large 3 2512" },
|
|
28038
|
-
{ id: "openrouter/mistralai/mistral-medium-3", label: "Mistral: Mistral Medium 3" },
|
|
28039
|
-
{ id: "openrouter/mistralai/mistral-medium-3-5", label: "Mistral: Mistral Medium 3.5" },
|
|
28040
|
-
{ id: "openrouter/mistralai/mistral-medium-3.1", label: "Mistral: Mistral Medium 3.1" },
|
|
28041
|
-
{ id: "openrouter/mistralai/mistral-nemo", label: "Mistral: Mistral Nemo" },
|
|
28042
|
-
{ id: "openrouter/mistralai/mistral-saba", label: "Mistral: Saba" },
|
|
28043
|
-
{ id: "openrouter/mistralai/mistral-small-2603", label: "Mistral: Mistral Small 4" },
|
|
28044
|
-
{ id: "openrouter/mistralai/mistral-small-3.2-24b-instruct", label: "Mistral: Mistral Small 3.2 24B" },
|
|
28045
|
-
{ id: "openrouter/mistralai/mixtral-8x22b-instruct", label: "Mistral: Mixtral 8x22B Instruct" },
|
|
28025
|
+
{ id: "openrouter/mistralai/codestral-2508", label: "Mistral: Codestral 2508" },
|
|
28046
28026
|
{ id: "openrouter/mistralai/voxtral-small-24b-2507", label: "Mistral: Voxtral Small 24B 2507" },
|
|
28047
|
-
{ id: "openrouter/
|
|
28048
|
-
{ id: "openrouter/
|
|
28049
|
-
{ id: "openrouter/
|
|
28050
|
-
{ id: "openrouter/
|
|
28051
|
-
{ id: "openrouter/moonshotai/kimi-k2.7-code", label: "MoonshotAI: Kimi K2.7 Code" },
|
|
28052
|
-
{ id: "openrouter/nex-agi/nex-n2-pro:free", label: "Nex AGI: Nex-N2-Pro (free)" },
|
|
28053
|
-
{ id: "openrouter/nvidia/llama-3.3-nemotron-super-49b-v1.5", label: "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5" },
|
|
28054
|
-
{ id: "openrouter/nvidia/nemotron-3-nano-30b-a3b", label: "NVIDIA: Nemotron 3 Nano 30B A3B" },
|
|
28055
|
-
{ id: "openrouter/nvidia/nemotron-3-nano-30b-a3b:free", label: "NVIDIA: Nemotron 3 Nano 30B A3B (free)" },
|
|
28056
|
-
{ id: "openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", label: "NVIDIA: Nemotron 3 Nano Omni (free)" },
|
|
28057
|
-
{ id: "openrouter/nvidia/nemotron-3-super-120b-a12b", label: "NVIDIA: Nemotron 3 Super" },
|
|
28058
|
-
{ id: "openrouter/nvidia/nemotron-3-super-120b-a12b:free", label: "NVIDIA: Nemotron 3 Super (free)" },
|
|
28059
|
-
{ id: "openrouter/nvidia/nemotron-3-ultra-550b-a55b", label: "NVIDIA: Nemotron 3 Ultra" },
|
|
28060
|
-
{ id: "openrouter/nvidia/nemotron-3-ultra-550b-a55b:free", label: "NVIDIA: Nemotron 3 Ultra (free)" },
|
|
28061
|
-
{ id: "openrouter/nvidia/nemotron-nano-12b-v2-vl:free", label: "NVIDIA: Nemotron Nano 12B 2 VL (free)" },
|
|
28062
|
-
{ id: "openrouter/nvidia/nemotron-nano-9b-v2:free", label: "NVIDIA: Nemotron Nano 9B V2 (free)" },
|
|
28063
|
-
{ id: "openrouter/openai/gpt-3.5-turbo", label: "OpenAI: GPT-3.5 Turbo" },
|
|
28064
|
-
{ id: "openrouter/openai/gpt-3.5-turbo-0613", label: "OpenAI: GPT-3.5 Turbo (older v0613)" },
|
|
28065
|
-
{ id: "openrouter/openai/gpt-3.5-turbo-16k", label: "OpenAI: GPT-3.5 Turbo 16k" },
|
|
28066
|
-
{ id: "openrouter/openai/gpt-4", label: "OpenAI: GPT-4" },
|
|
28067
|
-
{ id: "openrouter/openai/gpt-4-turbo", label: "OpenAI: GPT-4 Turbo" },
|
|
28068
|
-
{ id: "openrouter/openai/gpt-4-turbo-preview", label: "OpenAI: GPT-4 Turbo Preview" },
|
|
28069
|
-
{ id: "openrouter/openai/gpt-4.1", label: "OpenAI: GPT-4.1" },
|
|
28070
|
-
{ id: "openrouter/openai/gpt-4.1-mini", label: "OpenAI: GPT-4.1 Mini" },
|
|
28071
|
-
{ id: "openrouter/openai/gpt-4.1-nano", label: "OpenAI: GPT-4.1 Nano" },
|
|
28072
|
-
{ id: "openrouter/openai/gpt-4o", label: "OpenAI: GPT-4o" },
|
|
28073
|
-
{ id: "openrouter/openai/gpt-4o-2024-05-13", label: "OpenAI: GPT-4o (2024-05-13)" },
|
|
28074
|
-
{ id: "openrouter/openai/gpt-4o-2024-08-06", label: "OpenAI: GPT-4o (2024-08-06)" },
|
|
28027
|
+
{ id: "openrouter/qwen/qwen3-235b-a22b-2507", label: "Qwen: Qwen3 235B A22B Instruct 2507" },
|
|
28028
|
+
{ id: "openrouter/qwen/qwen3-30b-a3b-instruct-2507", label: "Qwen: Qwen3 30B A3B Instruct 2507" },
|
|
28029
|
+
{ id: "openrouter/qwen/qwen3.5-plus-02-15", label: "Qwen: Qwen3.5 Plus 2026-02-15" },
|
|
28030
|
+
{ id: "openrouter/qwen/qwen-plus-2025-07-28", label: "Qwen: Qwen Plus 0728" },
|
|
28075
28031
|
{ id: "openrouter/openai/gpt-4o-2024-11-20", label: "OpenAI: GPT-4o (2024-11-20)" },
|
|
28076
|
-
{ id: "openrouter/openai/gpt-4o-
|
|
28077
|
-
{ id: "openrouter/openai/gpt-4o-
|
|
28078
|
-
{ id: "openrouter/
|
|
28079
|
-
{ id: "openrouter/
|
|
28080
|
-
{ id: "openrouter/
|
|
28081
|
-
{ id: "openrouter/
|
|
28082
|
-
{ id: "openrouter/
|
|
28083
|
-
{ id: "openrouter/
|
|
28084
|
-
{ id: "openrouter/
|
|
28085
|
-
{ id: "openrouter/
|
|
28086
|
-
{ id: "openrouter/openai/gpt-5.1-codex-max", label: "OpenAI: GPT-5.1-Codex-Max" },
|
|
28087
|
-
{ id: "openrouter/openai/gpt-5.1-codex-mini", label: "OpenAI: GPT-5.1-Codex-Mini" },
|
|
28088
|
-
{ id: "openrouter/openai/gpt-5.2", label: "OpenAI: GPT-5.2" },
|
|
28089
|
-
{ id: "openrouter/openai/gpt-5.2-chat", label: "OpenAI: GPT-5.2 Chat" },
|
|
28090
|
-
{ id: "openrouter/openai/gpt-5.2-codex", label: "OpenAI: GPT-5.2-Codex" },
|
|
28091
|
-
{ id: "openrouter/openai/gpt-5.2-pro", label: "OpenAI: GPT-5.2 Pro" },
|
|
28092
|
-
{ id: "openrouter/openai/gpt-5.3-chat", label: "OpenAI: GPT-5.3 Chat" },
|
|
28093
|
-
{ id: "openrouter/openai/gpt-5.3-codex", label: "OpenAI: GPT-5.3-Codex" },
|
|
28094
|
-
{ id: "openrouter/openai/gpt-5.4", label: "OpenAI: GPT-5.4" },
|
|
28095
|
-
{ id: "openrouter/openai/gpt-5.4-mini", label: "OpenAI: GPT-5.4 Mini" },
|
|
28096
|
-
{ id: "openrouter/openai/gpt-5.4-nano", label: "OpenAI: GPT-5.4 Nano" },
|
|
28097
|
-
{ id: "openrouter/openai/gpt-5.4-pro", label: "OpenAI: GPT-5.4 Pro" },
|
|
28098
|
-
{ id: "openrouter/openai/gpt-5.5", label: "OpenAI: GPT-5.5" },
|
|
28099
|
-
{ id: "openrouter/openai/gpt-5.5-pro", label: "OpenAI: GPT-5.5 Pro" },
|
|
28100
|
-
{ id: "openrouter/openai/gpt-audio", label: "OpenAI: GPT Audio" },
|
|
28101
|
-
{ id: "openrouter/openai/gpt-audio-mini", label: "OpenAI: GPT Audio Mini" },
|
|
28102
|
-
{ id: "openrouter/openai/gpt-chat-latest", label: "OpenAI: GPT Chat Latest" },
|
|
28032
|
+
{ id: "openrouter/openai/gpt-4o-2024-08-06", label: "OpenAI: GPT-4o (2024-08-06)" },
|
|
28033
|
+
{ id: "openrouter/openai/gpt-4o-2024-05-13", label: "OpenAI: GPT-4o (2024-05-13)" },
|
|
28034
|
+
{ id: "openrouter/moonshotai/kimi-k2-0905", label: "MoonshotAI: Kimi K2 0905" },
|
|
28035
|
+
{ id: "openrouter/moonshotai/kimi-k2", label: "MoonshotAI: Kimi K2 0711" },
|
|
28036
|
+
{ id: "openrouter/deepseek/deepseek-r1-0528", label: "DeepSeek: R1 0528" },
|
|
28037
|
+
{ id: "openrouter/qwen/qwen3-coder:free", label: "Qwen: Qwen3 Coder 480B A35B (free)" },
|
|
28038
|
+
{ id: "openrouter/qwen/qwen3.5-397b-a17b", label: "Qwen: Qwen3.5 397B A17B" },
|
|
28039
|
+
{ id: "openrouter/deepseek/deepseek-chat-v3-0324", label: "DeepSeek: DeepSeek V3 0324" },
|
|
28040
|
+
{ id: "openrouter/qwen/qwen3-235b-a22b", label: "Qwen: Qwen3 235B A22B" },
|
|
28041
|
+
{ id: "openrouter/qwen/qwen3-vl-235b-a22b-instruct", label: "Qwen: Qwen3 VL 235B A22B Instruct" },
|
|
28103
28042
|
{ id: "openrouter/openai/gpt-oss-120b", label: "OpenAI: gpt-oss-120b" },
|
|
28104
|
-
{ id: "openrouter/
|
|
28043
|
+
{ id: "openrouter/qwen/qwen3-next-80b-a3b-instruct", label: "Qwen: Qwen3 Next 80B A3B Instruct" },
|
|
28044
|
+
{ id: "openrouter/qwen/qwen-2.5-72b-instruct", label: "Qwen2.5 72B Instruct" },
|
|
28045
|
+
{ id: "openrouter/meta-llama/llama-3.1-70b-instruct", label: "Meta: Llama 3.1 70B Instruct" },
|
|
28046
|
+
{ id: "openrouter/meta-llama/llama-3.3-70b-instruct", label: "Meta: Llama 3.3 70B Instruct" },
|
|
28047
|
+
{ id: "openrouter/sao10k/l3.1-euryale-70b", label: "Sao10K: Llama 3.1 Euryale 70B v2.2" },
|
|
28048
|
+
{ id: "openrouter/qwen/qwen3.6-35b-a3b", label: "Qwen: Qwen3.6 35B A3B" },
|
|
28049
|
+
{ id: "openrouter/qwen/qwen3-32b", label: "Qwen: Qwen3 32B" },
|
|
28050
|
+
{ id: "openrouter/qwen/qwen3-vl-32b-instruct", label: "Qwen: Qwen3 VL 32B Instruct" },
|
|
28051
|
+
{ id: "openrouter/google/gemma-4-31b-it", label: "Google: Gemma 4 31B" },
|
|
28052
|
+
{ id: "openrouter/qwen/qwen3-30b-a3b", label: "Qwen: Qwen3 30B A3B" },
|
|
28053
|
+
{ id: "openrouter/qwen/qwen3-vl-30b-a3b-instruct", label: "Qwen: Qwen3 VL 30B A3B Instruct" },
|
|
28054
|
+
{ id: "openrouter/cohere/command-r-08-2024", label: "Cohere: Command R (08-2024)" },
|
|
28055
|
+
{ id: "openrouter/cohere/command-r-plus-08-2024", label: "Cohere: Command R+ (08-2024)" },
|
|
28056
|
+
{ id: "openrouter/google/gemma-3-27b-it", label: "Google: Gemma 3 27B" },
|
|
28057
|
+
{ id: "openrouter/qwen/qwen3.6-27b", label: "Qwen: Qwen3.6 27B" },
|
|
28058
|
+
{ id: "openrouter/google/gemma-4-26b-a4b-it", label: "Google: Gemma 4 26B A4B " },
|
|
28059
|
+
{ id: "openrouter/mistralai/mistral-small-3.2-24b-instruct", label: "Mistral: Mistral Small 3.2 24B" },
|
|
28060
|
+
{ id: "openrouter/mistralai/mixtral-8x22b-instruct", label: "Mistral: Mixtral 8x22B Instruct" },
|
|
28105
28061
|
{ id: "openrouter/openai/gpt-oss-20b", label: "OpenAI: gpt-oss-20b" },
|
|
28106
|
-
{ id: "openrouter/openai/gpt-oss-20b:free", label: "OpenAI: gpt-oss-20b (free)" },
|
|
28107
28062
|
{ id: "openrouter/openai/gpt-oss-safeguard-20b", label: "OpenAI: gpt-oss-safeguard-20b" },
|
|
28108
|
-
{ id: "openrouter/openai/o1", label: "OpenAI: o1" },
|
|
28109
|
-
{ id: "openrouter/openai/o3", label: "OpenAI: o3" },
|
|
28110
|
-
{ id: "openrouter/openai/o3-deep-research", label: "OpenAI: o3 Deep Research" },
|
|
28111
|
-
{ id: "openrouter/openai/o3-mini", label: "OpenAI: o3 Mini" },
|
|
28112
|
-
{ id: "openrouter/openai/o3-mini-high", label: "OpenAI: o3 Mini High" },
|
|
28113
|
-
{ id: "openrouter/openai/o3-pro", label: "OpenAI: o3 Pro" },
|
|
28114
|
-
{ id: "openrouter/openai/o4-mini", label: "OpenAI: o4 Mini" },
|
|
28115
|
-
{ id: "openrouter/openai/o4-mini-deep-research", label: "OpenAI: o4 Mini Deep Research" },
|
|
28116
|
-
{ id: "openrouter/openai/o4-mini-high", label: "OpenAI: o4 Mini High" },
|
|
28117
|
-
{ id: "openrouter/openrouter/auto", label: "Auto Router" },
|
|
28118
|
-
{ id: "openrouter/openrouter/free", label: "Free Models Router" },
|
|
28119
|
-
{ id: "openrouter/openrouter/fusion", label: "OpenRouter: Fusion" },
|
|
28120
|
-
{ id: "openrouter/openrouter/owl-alpha", label: "Owl Alpha" },
|
|
28121
|
-
{ id: "openrouter/poolside/laguna-m.1", label: "Poolside: Laguna M.1" },
|
|
28122
|
-
{ id: "openrouter/poolside/laguna-m.1:free", label: "Poolside: Laguna M.1 (free)" },
|
|
28123
|
-
{ id: "openrouter/poolside/laguna-xs.2", label: "Poolside: Laguna XS.2" },
|
|
28124
|
-
{ id: "openrouter/poolside/laguna-xs.2:free", label: "Poolside: Laguna XS.2 (free)" },
|
|
28125
|
-
{ id: "openrouter/prime-intellect/intellect-3", label: "Prime Intellect: INTELLECT-3" },
|
|
28126
|
-
{ id: "openrouter/qwen/qwen-2.5-72b-instruct", label: "Qwen2.5 72B Instruct" },
|
|
28127
|
-
{ id: "openrouter/qwen/qwen-2.5-7b-instruct", label: "Qwen: Qwen2.5 7B Instruct" },
|
|
28128
|
-
{ id: "openrouter/qwen/qwen-plus", label: "Qwen: Qwen-Plus" },
|
|
28129
|
-
{ id: "openrouter/qwen/qwen-plus-2025-07-28", label: "Qwen: Qwen Plus 0728" },
|
|
28130
|
-
{ id: "openrouter/qwen/qwen-plus-2025-07-28:thinking", label: "Qwen: Qwen Plus 0728 (thinking)" },
|
|
28131
28063
|
{ id: "openrouter/qwen/qwen3-14b", label: "Qwen: Qwen3 14B" },
|
|
28132
|
-
{ id: "openrouter/
|
|
28133
|
-
{ id: "openrouter/
|
|
28134
|
-
{ id: "openrouter/qwen/qwen3-
|
|
28135
|
-
{ id: "openrouter/
|
|
28136
|
-
{ id: "openrouter/
|
|
28137
|
-
{ id: "openrouter/qwen/qwen3-30b-a3b-thinking-2507", label: "Qwen: Qwen3 30B A3B Thinking 2507" },
|
|
28138
|
-
{ id: "openrouter/qwen/qwen3-32b", label: "Qwen: Qwen3 32B" },
|
|
28064
|
+
{ id: "openrouter/google/gemma-3-12b-it", label: "Google: Gemma 3 12B" },
|
|
28065
|
+
{ id: "openrouter/thedrummer/unslopnemo-12b", label: "TheDrummer: UnslopNemo 12B" },
|
|
28066
|
+
{ id: "openrouter/qwen/qwen3.5-122b-a10b", label: "Qwen: Qwen3.5-122B-A10B" },
|
|
28067
|
+
{ id: "openrouter/ibm-granite/granite-4.1-8b", label: "IBM: Granite 4.1 8B" },
|
|
28068
|
+
{ id: "openrouter/meta-llama/llama-3.1-8b-instruct", label: "Meta: Llama 3.1 8B Instruct" },
|
|
28139
28069
|
{ id: "openrouter/qwen/qwen3-8b", label: "Qwen: Qwen3 8B" },
|
|
28140
|
-
{ id: "openrouter/qwen/qwen3-coder", label: "Qwen: Qwen3 Coder 480B A35B" },
|
|
28141
|
-
{ id: "openrouter/qwen/qwen3-coder-30b-a3b-instruct", label: "Qwen: Qwen3 Coder 30B A3B Instruct" },
|
|
28142
|
-
{ id: "openrouter/qwen/qwen3-coder-flash", label: "Qwen: Qwen3 Coder Flash" },
|
|
28143
|
-
{ id: "openrouter/qwen/qwen3-coder-next", label: "Qwen: Qwen3 Coder Next" },
|
|
28144
|
-
{ id: "openrouter/qwen/qwen3-coder-plus", label: "Qwen: Qwen3 Coder Plus" },
|
|
28145
|
-
{ id: "openrouter/qwen/qwen3-coder:free", label: "Qwen: Qwen3 Coder 480B A35B (free)" },
|
|
28146
|
-
{ id: "openrouter/qwen/qwen3-max", label: "Qwen: Qwen3 Max" },
|
|
28147
|
-
{ id: "openrouter/qwen/qwen3-max-thinking", label: "Qwen: Qwen3 Max Thinking" },
|
|
28148
|
-
{ id: "openrouter/qwen/qwen3-next-80b-a3b-instruct", label: "Qwen: Qwen3 Next 80B A3B Instruct" },
|
|
28149
|
-
{ id: "openrouter/qwen/qwen3-next-80b-a3b-instruct:free", label: "Qwen: Qwen3 Next 80B A3B Instruct (free)" },
|
|
28150
|
-
{ id: "openrouter/qwen/qwen3-next-80b-a3b-thinking", label: "Qwen: Qwen3 Next 80B A3B Thinking" },
|
|
28151
|
-
{ id: "openrouter/qwen/qwen3-vl-235b-a22b-instruct", label: "Qwen: Qwen3 VL 235B A22B Instruct" },
|
|
28152
|
-
{ id: "openrouter/qwen/qwen3-vl-235b-a22b-thinking", label: "Qwen: Qwen3 VL 235B A22B Thinking" },
|
|
28153
|
-
{ id: "openrouter/qwen/qwen3-vl-30b-a3b-instruct", label: "Qwen: Qwen3 VL 30B A3B Instruct" },
|
|
28154
|
-
{ id: "openrouter/qwen/qwen3-vl-30b-a3b-thinking", label: "Qwen: Qwen3 VL 30B A3B Thinking" },
|
|
28155
|
-
{ id: "openrouter/qwen/qwen3-vl-32b-instruct", label: "Qwen: Qwen3 VL 32B Instruct" },
|
|
28156
28070
|
{ id: "openrouter/qwen/qwen3-vl-8b-instruct", label: "Qwen: Qwen3 VL 8B Instruct" },
|
|
28157
|
-
{ id: "openrouter/qwen/
|
|
28158
|
-
{ id: "openrouter/
|
|
28159
|
-
{ id: "openrouter/
|
|
28160
|
-
{ id: "openrouter/
|
|
28161
|
-
{ id: "openrouter/
|
|
28162
|
-
{ id: "openrouter/
|
|
28163
|
-
{ id: "openrouter/
|
|
28164
|
-
{ id: "openrouter/
|
|
28165
|
-
{ id: "openrouter/
|
|
28166
|
-
{ id: "openrouter/
|
|
28167
|
-
{ id: "openrouter/
|
|
28168
|
-
{ id: "openrouter/
|
|
28169
|
-
{ id: "openrouter/
|
|
28170
|
-
{ id: "openrouter/
|
|
28171
|
-
{ id: "openrouter/
|
|
28071
|
+
{ id: "openrouter/qwen/qwen-2.5-7b-instruct", label: "Qwen: Qwen2.5 7B Instruct" },
|
|
28072
|
+
{ id: "openrouter/openai/gpt-5.5", label: "OpenAI: GPT-5.5" },
|
|
28073
|
+
{ id: "openrouter/openai/gpt-5.4", label: "OpenAI: GPT-5.4" },
|
|
28074
|
+
{ id: "openrouter/openai/gpt-5.3-chat", label: "OpenAI: GPT-5.3 Chat" },
|
|
28075
|
+
{ id: "openrouter/openai/gpt-5.2", label: "OpenAI: GPT-5.2" },
|
|
28076
|
+
{ id: "openrouter/openai/gpt-5.2-chat", label: "OpenAI: GPT-5.2 Chat" },
|
|
28077
|
+
{ id: "openrouter/z-ai/glm-5.2", label: "Z.ai: GLM 5.2" },
|
|
28078
|
+
{ id: "openrouter/openai/gpt-5.1", label: "OpenAI: GPT-5.1" },
|
|
28079
|
+
{ id: "openrouter/openai/gpt-5.1-chat", label: "OpenAI: GPT-5.1 Chat" },
|
|
28080
|
+
{ id: "openrouter/z-ai/glm-5.1", label: "Z.ai: GLM 5.1" },
|
|
28081
|
+
{ id: "openrouter/openai/gpt-5", label: "OpenAI: GPT-5" },
|
|
28082
|
+
{ id: "openrouter/z-ai/glm-5", label: "Z.ai: GLM 5" },
|
|
28083
|
+
{ id: "openrouter/x-ai/grok-4.20", label: "xAI: Grok 4.20" },
|
|
28084
|
+
{ id: "openrouter/z-ai/glm-4.7", label: "Z.ai: GLM 4.7" },
|
|
28085
|
+
{ id: "openrouter/z-ai/glm-4.6", label: "Z.ai: GLM 4.6" },
|
|
28086
|
+
{ id: "openrouter/z-ai/glm-4.6v", label: "Z.ai: GLM 4.6V" },
|
|
28087
|
+
{ id: "openrouter/z-ai/glm-4.5", label: "Z.ai: GLM 4.5" },
|
|
28088
|
+
{ id: "openrouter/z-ai/glm-4.5-air", label: "Z.ai: GLM 4.5 Air" },
|
|
28089
|
+
{ id: "openrouter/z-ai/glm-4.5v", label: "Z.ai: GLM 4.5V" },
|
|
28090
|
+
{ id: "openrouter/x-ai/grok-4.3", label: "xAI: Grok 4.3" },
|
|
28091
|
+
{ id: "openrouter/openai/gpt-4.1", label: "OpenAI: GPT-4.1" },
|
|
28092
|
+
{ id: "openrouter/meta-llama/llama-4-maverick", label: "Meta: Llama 4 Maverick" },
|
|
28093
|
+
{ id: "openrouter/meta-llama/llama-4-scout", label: "Meta: Llama 4 Scout" },
|
|
28094
|
+
{ id: "openrouter/openai/gpt-4", label: "OpenAI: GPT-4" },
|
|
28095
|
+
{ id: "openrouter/openai/gpt-4o", label: "OpenAI: GPT-4o" },
|
|
28172
28096
|
{ id: "openrouter/qwen/qwen3.7-plus", label: "Qwen: Qwen3.7 Plus" },
|
|
28173
|
-
{ id: "openrouter/
|
|
28174
|
-
{ id: "openrouter/
|
|
28175
|
-
{ id: "openrouter/
|
|
28176
|
-
{ id: "openrouter/
|
|
28177
|
-
{ id: "openrouter/
|
|
28097
|
+
{ id: "openrouter/qwen/qwen3.6-plus", label: "Qwen: Qwen3.6 Plus" },
|
|
28098
|
+
{ id: "openrouter/qwen/qwen3.5-35b-a3b", label: "Qwen: Qwen3.5-35B-A3B" },
|
|
28099
|
+
{ id: "openrouter/qwen/qwen3.5-27b", label: "Qwen: Qwen3.5-27B" },
|
|
28100
|
+
{ id: "openrouter/qwen/qwen3.5-9b", label: "Qwen: Qwen3.5-9B" },
|
|
28101
|
+
{ id: "openrouter/mistralai/mistral-medium-3-5", label: "Mistral: Mistral Medium 3.5" },
|
|
28102
|
+
{ id: "openrouter/deepseek/deepseek-v3.2", label: "DeepSeek: DeepSeek V3.2" },
|
|
28103
|
+
{ id: "openrouter/deepseek/deepseek-v3.2-exp", label: "DeepSeek: DeepSeek V3.2 Exp" },
|
|
28104
|
+
{ id: "openrouter/deepseek/deepseek-chat-v3.1", label: "DeepSeek: DeepSeek V3.1" },
|
|
28105
|
+
{ id: "openrouter/deepseek/deepseek-v3.1-terminus", label: "DeepSeek: DeepSeek V3.1 Terminus" },
|
|
28106
|
+
{ id: "openrouter/mistralai/mistral-medium-3.1", label: "Mistral: Mistral Medium 3.1" },
|
|
28107
|
+
{ id: "openrouter/deepseek/deepseek-chat", label: "DeepSeek: DeepSeek V3" },
|
|
28108
|
+
{ id: "openrouter/minimax/minimax-m3", label: "MiniMax: MiniMax M3" },
|
|
28109
|
+
{ id: "openrouter/mistralai/mistral-medium-3", label: "Mistral: Mistral Medium 3" },
|
|
28110
|
+
{ id: "openrouter/openai/o3", label: "OpenAI: o3" },
|
|
28111
|
+
{ id: "openrouter/openai/o3-deep-research", label: "OpenAI: o3 Deep Research" },
|
|
28178
28112
|
{ id: "openrouter/tencent/hy3-preview", label: "Tencent: Hy3 preview" },
|
|
28179
|
-
{ id: "openrouter/
|
|
28180
|
-
{ id: "openrouter/
|
|
28181
|
-
{ id: "openrouter/
|
|
28182
|
-
{ id: "openrouter/
|
|
28183
|
-
{ id: "openrouter/
|
|
28184
|
-
{ id: "openrouter/
|
|
28113
|
+
{ id: "openrouter/minimax/minimax-m2.7", label: "MiniMax: MiniMax M2.7" },
|
|
28114
|
+
{ id: "openrouter/inclusionai/ling-2.6-1t", label: "inclusionAI: Ling-2.6-1T" },
|
|
28115
|
+
{ id: "openrouter/inclusionai/ring-2.6-1t", label: "inclusionAI: Ring-2.6-1T" },
|
|
28116
|
+
{ id: "openrouter/moonshotai/kimi-k2.6", label: "MoonshotAI: Kimi K2.6" },
|
|
28117
|
+
{ id: "openrouter/minimax/minimax-m2.5", label: "MiniMax: MiniMax M2.5" },
|
|
28118
|
+
{ id: "openrouter/moonshotai/kimi-k2.5", label: "MoonshotAI: Kimi K2.5" },
|
|
28185
28119
|
{ id: "openrouter/xiaomi/mimo-v2.5", label: "Xiaomi: MiMo-V2.5" },
|
|
28186
|
-
{ id: "openrouter/
|
|
28187
|
-
{ id: "openrouter/
|
|
28188
|
-
{ id: "openrouter/
|
|
28189
|
-
{ id: "openrouter/
|
|
28190
|
-
{ id: "openrouter/
|
|
28191
|
-
{ id: "openrouter/
|
|
28192
|
-
{ id: "openrouter/
|
|
28193
|
-
{ id: "openrouter/
|
|
28194
|
-
{ id: "openrouter/
|
|
28195
|
-
{ id: "openrouter/
|
|
28196
|
-
{ id: "openrouter/
|
|
28197
|
-
{ id: "openrouter/
|
|
28198
|
-
{ id: "openrouter
|
|
28199
|
-
{ id: "openrouter
|
|
28200
|
-
{ id: "openrouter/~anthropic/claude-opus-latest", label: "Anthropic: Claude Opus Latest" },
|
|
28201
|
-
{ id: "openrouter/~anthropic/claude-sonnet-latest", label: "Anthropic Claude Sonnet Latest" },
|
|
28202
|
-
{ id: "openrouter/~google/gemini-flash-latest", label: "Google Gemini Flash Latest" },
|
|
28203
|
-
{ id: "openrouter/~google/gemini-pro-latest", label: "Google Gemini Pro Latest" },
|
|
28120
|
+
{ id: "openrouter/minimax/minimax-m2.1", label: "MiniMax: MiniMax M2.1" },
|
|
28121
|
+
{ id: "openrouter/inception/mercury-2", label: "Inception: Mercury 2" },
|
|
28122
|
+
{ id: "openrouter/minimax/minimax-m2", label: "MiniMax: MiniMax M2" },
|
|
28123
|
+
{ id: "openrouter/poolside/laguna-xs.2", label: "Poolside: Laguna XS.2" },
|
|
28124
|
+
{ id: "openrouter/bytedance-seed/seed-1.6", label: "ByteDance Seed: Seed 1.6" },
|
|
28125
|
+
{ id: "openrouter/deepseek/deepseek-r1", label: "DeepSeek: R1" },
|
|
28126
|
+
{ id: "openrouter/minimax/minimax-m1", label: "MiniMax: MiniMax M1" },
|
|
28127
|
+
{ id: "openrouter/openai/o1", label: "OpenAI: o1" },
|
|
28128
|
+
{ id: "openrouter/poolside/laguna-m.1", label: "Poolside: Laguna M.1" },
|
|
28129
|
+
{ id: "openrouter/x-ai/grok-build-0.1", label: "xAI: Grok Build 0.1" },
|
|
28130
|
+
{ id: "openrouter/auto", label: "Auto" },
|
|
28131
|
+
{ id: "openrouter/openrouter/auto", label: "Auto Router" },
|
|
28132
|
+
{ id: "openrouter/mistralai/mistral-nemo", label: "Mistral: Mistral Nemo" },
|
|
28133
|
+
{ id: "openrouter/mistralai/mistral-saba", label: "Mistral: Saba" },
|
|
28204
28134
|
{ id: "openrouter/~moonshotai/kimi-latest", label: "MoonshotAI Kimi Latest" },
|
|
28205
28135
|
{ id: "openrouter/~openai/gpt-latest", label: "OpenAI GPT Latest" },
|
|
28206
|
-
{ id: "openrouter
|
|
28136
|
+
{ id: "openrouter/openai/gpt-audio", label: "OpenAI: GPT Audio" },
|
|
28137
|
+
{ id: "openrouter/openai/gpt-chat-latest", label: "OpenAI: GPT Chat Latest" },
|
|
28138
|
+
{ id: "openrouter/openrouter/fusion", label: "OpenRouter: Fusion" },
|
|
28139
|
+
{ id: "openrouter/qwen/qwen-plus", label: "Qwen: Qwen-Plus" },
|
|
28140
|
+
{ id: "openrouter/rekaai/reka-edge", label: "Reka Edge" },
|
|
28141
|
+
{ id: "openrouter/relace/relace-search", label: "Relace: Relace Search" },
|
|
28142
|
+
{ id: "openrouter/liquid/lfm-2.5-1.2b-thinking:free", label: "LiquidAI: LFM2.5-1.2B-Thinking (free)" },
|
|
28143
|
+
{ id: "openrouter/openai/gpt-3.5-turbo-0613", label: "OpenAI: GPT-3.5 Turbo (older v0613)" },
|
|
28144
|
+
{ id: "openrouter/openai/gpt-3.5-turbo-16k", label: "OpenAI: GPT-3.5 Turbo 16k" },
|
|
28145
|
+
{ id: "openrouter/z-ai/glm-5-turbo", label: "Z.ai: GLM 5 Turbo" },
|
|
28146
|
+
{ id: "openrouter/z-ai/glm-5v-turbo", label: "Z.ai: GLM 5V Turbo" },
|
|
28147
|
+
{ id: "openrouter/z-ai/glm-4.7-flash", label: "Z.ai: GLM 4.7 Flash" },
|
|
28148
|
+
{ id: "openrouter/deepseek/deepseek-v4-flash", label: "DeepSeek: DeepSeek V4 Flash" },
|
|
28149
|
+
{ id: "openrouter/openai/gpt-4-turbo", label: "OpenAI: GPT-4 Turbo" },
|
|
28150
|
+
{ id: "openrouter/openai/gpt-4-turbo-preview", label: "OpenAI: GPT-4 Turbo Preview" },
|
|
28151
|
+
{ id: "openrouter/stepfun/step-3.7-flash", label: "StepFun: Step 3.7 Flash" },
|
|
28152
|
+
{ id: "openrouter/qwen/qwen3.6-flash", label: "Qwen: Qwen3.6 Flash" },
|
|
28153
|
+
{ id: "openrouter/google/gemini-3.5-flash", label: "Google: Gemini 3.5 Flash" },
|
|
28154
|
+
{ id: "openrouter/openai/gpt-3.5-turbo", label: "OpenAI: GPT-3.5 Turbo" },
|
|
28155
|
+
{ id: "openrouter/qwen/qwen3.5-flash-02-23", label: "Qwen: Qwen3.5-Flash" },
|
|
28156
|
+
{ id: "openrouter/stepfun/step-3.5-flash", label: "StepFun: Step 3.5 Flash" },
|
|
28157
|
+
{ id: "openrouter/google/gemini-3-flash-preview", label: "Google: Gemini 3 Flash Preview" },
|
|
28158
|
+
{ id: "openrouter/inclusionai/ling-2.6-flash", label: "inclusionAI: Ling-2.6-flash" },
|
|
28159
|
+
{ id: "openrouter/google/gemini-2.5-flash", label: "Google: Gemini 2.5 Flash" },
|
|
28160
|
+
{ id: "openrouter/bytedance-seed/seed-1.6-flash", label: "ByteDance Seed: Seed 1.6 Flash" },
|
|
28161
|
+
{ id: "openrouter/~google/gemini-flash-latest", label: "Google Gemini Flash Latest" },
|
|
28162
|
+
{ id: "openrouter/nvidia/nemotron-3-super-120b-a12b:free", label: "NVIDIA: Nemotron 3 Super (free)" },
|
|
28163
|
+
{ id: "openrouter/openai/gpt-4o-mini-2024-07-18", label: "OpenAI: GPT-4o-mini (2024-07-18)" },
|
|
28164
|
+
{ id: "openrouter/nvidia/nemotron-3-nano-30b-a3b", label: "NVIDIA: Nemotron 3 Nano 30B A3B" },
|
|
28165
|
+
{ id: "openrouter/openai/gpt-5.4-mini", label: "OpenAI: GPT-5.4 Mini" },
|
|
28166
|
+
{ id: "openrouter/openai/gpt-5.4-nano", label: "OpenAI: GPT-5.4 Nano" },
|
|
28167
|
+
{ id: "openrouter/openai/gpt-5-mini", label: "OpenAI: GPT-5 Mini" },
|
|
28168
|
+
{ id: "openrouter/openai/gpt-5-nano", label: "OpenAI: GPT-5 Nano" },
|
|
28169
|
+
{ id: "openrouter/openai/gpt-4.1-mini", label: "OpenAI: GPT-4.1 Mini" },
|
|
28170
|
+
{ id: "openrouter/openai/gpt-4.1-nano", label: "OpenAI: GPT-4.1 Nano" },
|
|
28171
|
+
{ id: "openrouter/openai/gpt-4o-mini", label: "OpenAI: GPT-4o-mini" },
|
|
28172
|
+
{ id: "openrouter/openai/o4-mini", label: "OpenAI: o4 Mini" },
|
|
28173
|
+
{ id: "openrouter/openai/o4-mini-deep-research", label: "OpenAI: o4 Mini Deep Research" },
|
|
28174
|
+
{ id: "openrouter/openai/o4-mini-high", label: "OpenAI: o4 Mini High" },
|
|
28175
|
+
{ id: "openrouter/openai/o3-mini", label: "OpenAI: o3 Mini" },
|
|
28176
|
+
{ id: "openrouter/openai/o3-mini-high", label: "OpenAI: o3 Mini High" },
|
|
28177
|
+
{ id: "openrouter/amazon/nova-2-lite-v1", label: "Amazon: Nova 2 Lite" },
|
|
28178
|
+
{ id: "openrouter/bytedance-seed/seed-2.0-lite", label: "ByteDance Seed: Seed-2.0-Lite" },
|
|
28179
|
+
{ id: "openrouter/bytedance-seed/seed-2.0-mini", label: "ByteDance Seed: Seed-2.0-Mini" },
|
|
28180
|
+
{ id: "openrouter/amazon/nova-lite-v1", label: "Amazon: Nova Lite 1.0" },
|
|
28181
|
+
{ id: "openrouter/amazon/nova-micro-v1", label: "Amazon: Nova Micro 1.0" },
|
|
28182
|
+
{ id: "openrouter/arcee-ai/trinity-mini", label: "Arcee AI: Trinity Mini" },
|
|
28183
|
+
{ id: "openrouter/cohere/north-mini-code:free", label: "Cohere: North Mini Code (free)" },
|
|
28184
|
+
{ id: "openrouter/~openai/gpt-mini-latest", label: "OpenAI GPT Mini Latest" },
|
|
28185
|
+
{ id: "openrouter/openai/gpt-audio-mini", label: "OpenAI: GPT Audio Mini" },
|
|
28186
|
+
{ id: "openrouter/openai/gpt-oss-120b:free", label: "OpenAI: gpt-oss-120b (free)" },
|
|
28187
|
+
{ id: "openrouter/qwen/qwen3-next-80b-a3b-instruct:free", label: "Qwen: Qwen3 Next 80B A3B Instruct (free)" },
|
|
28188
|
+
{ id: "openrouter/meta-llama/llama-3.3-70b-instruct:free", label: "Meta: Llama 3.3 70B Instruct (free)" },
|
|
28189
|
+
{ id: "openrouter/google/gemma-4-31b-it:free", label: "Google: Gemma 4 31B (free)" },
|
|
28190
|
+
{ id: "openrouter/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", label: "NVIDIA: Nemotron 3 Nano Omni (free)" },
|
|
28191
|
+
{ id: "openrouter/google/gemma-4-26b-a4b-it:free", label: "Google: Gemma 4 26B A4B (free)" },
|
|
28192
|
+
{ id: "openrouter/openai/gpt-oss-20b:free", label: "OpenAI: gpt-oss-20b (free)" },
|
|
28193
|
+
{ id: "openrouter/poolside/laguna-xs.2:free", label: "Poolside: Laguna XS.2 (free)" },
|
|
28194
|
+
{ id: "openrouter/poolside/laguna-m.1:free", label: "Poolside: Laguna M.1 (free)" },
|
|
28195
|
+
{ id: "openrouter/openrouter/free", label: "Free Models Router" },
|
|
28196
|
+
{ id: "openrouter/google/gemini-2.5-flash-lite-preview-09-2025", label: "Google: Gemini 2.5 Flash Lite Preview 09-2025" },
|
|
28197
|
+
{ id: "openrouter/google/gemini-3.1-flash-lite", label: "Google: Gemini 3.1 Flash Lite" },
|
|
28198
|
+
{ id: "openrouter/google/gemini-3.1-flash-lite-preview", label: "Google: Gemini 3.1 Flash Lite Preview" },
|
|
28199
|
+
{ id: "openrouter/google/gemini-2.5-flash-lite", label: "Google: Gemini 2.5 Flash Lite" },
|
|
28200
|
+
{ id: "openrouter/nvidia/nemotron-3-nano-30b-a3b:free", label: "NVIDIA: Nemotron 3 Nano 30B A3B (free)" },
|
|
28201
|
+
{ id: "openrouter/nvidia/nemotron-nano-12b-v2-vl:free", label: "NVIDIA: Nemotron Nano 12B 2 VL (free)" },
|
|
28202
|
+
{ id: "openrouter/nvidia/nemotron-nano-9b-v2:free", label: "NVIDIA: Nemotron Nano 9B V2 (free)" }
|
|
28207
28203
|
],
|
|
28208
28204
|
"openai": [
|
|
28209
|
-
{ id: "openai/gpt-5.4", label: "GPT-5.4" },
|
|
28210
|
-
{ id: "openai/gpt-4", label: "GPT-4" },
|
|
28211
|
-
{ id: "openai/gpt-4-turbo", label: "GPT-4 Turbo" },
|
|
28212
|
-
{ id: "openai/gpt-4.1", label: "GPT-4.1" },
|
|
28213
|
-
{ id: "openai/gpt-4.1-mini", label: "GPT-4.1 mini" },
|
|
28214
|
-
{ id: "openai/gpt-4.1-nano", label: "GPT-4.1 nano" },
|
|
28215
|
-
{ id: "openai/gpt-4o", label: "GPT-4o" },
|
|
28216
|
-
{ id: "openai/gpt-4o-2024-05-13", label: "GPT-4o (2024-05-13)" },
|
|
28217
|
-
{ id: "openai/gpt-4o-2024-08-06", label: "GPT-4o (2024-08-06)" },
|
|
28218
|
-
{ id: "openai/gpt-4o-2024-11-20", label: "GPT-4o (2024-11-20)" },
|
|
28219
|
-
{ id: "openai/gpt-4o-mini", label: "GPT-4o mini" },
|
|
28220
|
-
{ id: "openai/gpt-5", label: "GPT-5" },
|
|
28221
|
-
{ id: "openai/gpt-5-chat-latest", label: "GPT-5 Chat Latest" },
|
|
28222
|
-
{ id: "openai/gpt-5-codex", label: "GPT-5-Codex" },
|
|
28223
|
-
{ id: "openai/gpt-5-mini", label: "GPT-5 Mini" },
|
|
28224
|
-
{ id: "openai/gpt-5-nano", label: "GPT-5 Nano" },
|
|
28225
|
-
{ id: "openai/gpt-5-pro", label: "GPT-5 Pro" },
|
|
28226
|
-
{ id: "openai/gpt-5.1", label: "GPT-5.1" },
|
|
28227
|
-
{ id: "openai/gpt-5.1-chat-latest", label: "GPT-5.1 Chat" },
|
|
28228
|
-
{ id: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex" },
|
|
28229
28205
|
{ id: "openai/gpt-5.1-codex-max", label: "GPT-5.1 Codex Max" },
|
|
28230
|
-
{ id: "openai/gpt-5.
|
|
28231
|
-
{ id: "openai/gpt-5.
|
|
28232
|
-
{ id: "openai/gpt-5.2-chat-latest", label: "GPT-5.2 Chat" },
|
|
28233
|
-
{ id: "openai/gpt-5.2-codex", label: "GPT-5.2 Codex" },
|
|
28206
|
+
{ id: "openai/gpt-5.5-pro", label: "GPT-5.5 Pro" },
|
|
28207
|
+
{ id: "openai/gpt-5.4-pro", label: "GPT-5.4 Pro" },
|
|
28234
28208
|
{ id: "openai/gpt-5.2-pro", label: "GPT-5.2 Pro" },
|
|
28235
|
-
{ id: "openai/gpt-5
|
|
28209
|
+
{ id: "openai/gpt-5-pro", label: "GPT-5 Pro" },
|
|
28210
|
+
{ id: "openai/o3-pro", label: "o3-pro" },
|
|
28211
|
+
{ id: "openai/o1-pro", label: "o1-pro" },
|
|
28236
28212
|
{ id: "openai/gpt-5.3-codex", label: "GPT-5.3 Codex" },
|
|
28237
28213
|
{ id: "openai/gpt-5.3-codex-spark", label: "GPT-5.3 Codex Spark" },
|
|
28238
|
-
{ id: "openai/gpt-5.
|
|
28239
|
-
{ id: "openai/gpt-5.
|
|
28240
|
-
{ id: "openai/gpt-5
|
|
28214
|
+
{ id: "openai/gpt-5.2-codex", label: "GPT-5.2 Codex" },
|
|
28215
|
+
{ id: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex" },
|
|
28216
|
+
{ id: "openai/gpt-5-codex", label: "GPT-5-Codex" },
|
|
28217
|
+
{ id: "openai/gpt-5.1-codex-mini", label: "GPT-5.1 Codex mini" },
|
|
28218
|
+
{ id: "openai/gpt-4o-2024-11-20", label: "GPT-4o (2024-11-20)" },
|
|
28219
|
+
{ id: "openai/gpt-4o-2024-08-06", label: "GPT-4o (2024-08-06)" },
|
|
28220
|
+
{ id: "openai/gpt-4o-2024-05-13", label: "GPT-4o (2024-05-13)" },
|
|
28241
28221
|
{ id: "openai/gpt-5.5", label: "GPT-5.5" },
|
|
28242
|
-
{ id: "openai/gpt-5.
|
|
28243
|
-
{ id: "openai/
|
|
28244
|
-
{ id: "openai/
|
|
28222
|
+
{ id: "openai/gpt-5.4", label: "GPT-5.4" },
|
|
28223
|
+
{ id: "openai/gpt-5.3-chat-latest", label: "GPT-5.3 Chat (latest)" },
|
|
28224
|
+
{ id: "openai/gpt-5.2", label: "GPT-5.2" },
|
|
28225
|
+
{ id: "openai/gpt-5.2-chat-latest", label: "GPT-5.2 Chat" },
|
|
28226
|
+
{ id: "openai/gpt-5.1", label: "GPT-5.1" },
|
|
28227
|
+
{ id: "openai/gpt-5.1-chat-latest", label: "GPT-5.1 Chat" },
|
|
28228
|
+
{ id: "openai/gpt-5", label: "GPT-5" },
|
|
28229
|
+
{ id: "openai/gpt-5-chat-latest", label: "GPT-5 Chat Latest" },
|
|
28230
|
+
{ id: "openai/gpt-4.1", label: "GPT-4.1" },
|
|
28231
|
+
{ id: "openai/gpt-4", label: "GPT-4" },
|
|
28232
|
+
{ id: "openai/gpt-4o", label: "GPT-4o" },
|
|
28245
28233
|
{ id: "openai/o3", label: "o3" },
|
|
28246
28234
|
{ id: "openai/o3-deep-research", label: "o3-deep-research" },
|
|
28247
|
-
{ id: "openai/
|
|
28248
|
-
{ id: "openai/
|
|
28235
|
+
{ id: "openai/o1", label: "o1" },
|
|
28236
|
+
{ id: "openai/gpt-4-turbo", label: "GPT-4 Turbo" },
|
|
28237
|
+
{ id: "openai/gpt-5.4-mini", label: "GPT-5.4 mini" },
|
|
28238
|
+
{ id: "openai/gpt-5.4-nano", label: "GPT-5.4 nano" },
|
|
28239
|
+
{ id: "openai/gpt-5-mini", label: "GPT-5 Mini" },
|
|
28240
|
+
{ id: "openai/gpt-5-nano", label: "GPT-5 Nano" },
|
|
28241
|
+
{ id: "openai/gpt-4.1-mini", label: "GPT-4.1 mini" },
|
|
28242
|
+
{ id: "openai/gpt-4.1-nano", label: "GPT-4.1 nano" },
|
|
28243
|
+
{ id: "openai/gpt-4o-mini", label: "GPT-4o mini" },
|
|
28249
28244
|
{ id: "openai/o4-mini", label: "o4-mini" },
|
|
28250
|
-
{ id: "openai/o4-mini-deep-research", label: "o4-mini-deep-research" }
|
|
28245
|
+
{ id: "openai/o4-mini-deep-research", label: "o4-mini-deep-research" },
|
|
28246
|
+
{ id: "openai/o3-mini", label: "o3-mini" }
|
|
28251
28247
|
],
|
|
28252
28248
|
"anthropic": [
|
|
28253
|
-
{ id: "anthropic/claude-opus-4-8", label: "Claude Opus 4.8" },
|
|
28254
|
-
{ id: "anthropic/claude-3-5-haiku-20241022", label: "Claude Haiku 3.5" },
|
|
28255
|
-
{ id: "anthropic/claude-3-5-haiku-latest", label: "Claude Haiku 3.5 (latest)" },
|
|
28256
|
-
{ id: "anthropic/claude-3-5-sonnet-20240620", label: "Claude Sonnet 3.5" },
|
|
28257
|
-
{ id: "anthropic/claude-3-5-sonnet-20241022", label: "Claude Sonnet 3.5 v2" },
|
|
28258
|
-
{ id: "anthropic/claude-3-7-sonnet-20250219", label: "Claude Sonnet 3.7" },
|
|
28259
|
-
{ id: "anthropic/claude-3-haiku-20240307", label: "Claude Haiku 3" },
|
|
28260
|
-
{ id: "anthropic/claude-3-opus-20240229", label: "Claude Opus 3" },
|
|
28261
|
-
{ id: "anthropic/claude-3-sonnet-20240229", label: "Claude Sonnet 3" },
|
|
28262
28249
|
{ id: "anthropic/claude-fable-5", label: "Claude Fable 5" },
|
|
28263
|
-
{ id: "anthropic/claude-
|
|
28264
|
-
{ id: "anthropic/claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" },
|
|
28265
|
-
{ id: "anthropic/claude-opus-4-0", label: "Claude Opus 4 (latest)" },
|
|
28266
|
-
{ id: "anthropic/claude-opus-4-1", label: "Claude Opus 4.1 (latest)" },
|
|
28267
|
-
{ id: "anthropic/claude-opus-4-1-20250805", label: "Claude Opus 4.1" },
|
|
28250
|
+
{ id: "anthropic/claude-3-opus-20240229", label: "Claude Opus 3" },
|
|
28268
28251
|
{ id: "anthropic/claude-opus-4-20250514", label: "Claude Opus 4" },
|
|
28269
|
-
{ id: "anthropic/claude-opus-4-5", label: "Claude Opus 4.5 (latest)" },
|
|
28270
28252
|
{ id: "anthropic/claude-opus-4-5-20251101", label: "Claude Opus 4.5" },
|
|
28271
|
-
{ id: "anthropic/claude-opus-4-
|
|
28253
|
+
{ id: "anthropic/claude-opus-4-1-20250805", label: "Claude Opus 4.1" },
|
|
28254
|
+
{ id: "anthropic/claude-opus-4-8", label: "Claude Opus 4.8" },
|
|
28272
28255
|
{ id: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7" },
|
|
28273
|
-
{ id: "anthropic/claude-
|
|
28256
|
+
{ id: "anthropic/claude-opus-4-6", label: "Claude Opus 4.6" },
|
|
28257
|
+
{ id: "anthropic/claude-opus-4-5", label: "Claude Opus 4.5 (latest)" },
|
|
28258
|
+
{ id: "anthropic/claude-opus-4-1", label: "Claude Opus 4.1 (latest)" },
|
|
28259
|
+
{ id: "anthropic/claude-opus-4-0", label: "Claude Opus 4 (latest)" },
|
|
28260
|
+
{ id: "anthropic/claude-3-7-sonnet-20250219", label: "Claude Sonnet 3.7" },
|
|
28261
|
+
{ id: "anthropic/claude-3-5-sonnet-20241022", label: "Claude Sonnet 3.5 v2" },
|
|
28262
|
+
{ id: "anthropic/claude-3-5-sonnet-20240620", label: "Claude Sonnet 3.5" },
|
|
28263
|
+
{ id: "anthropic/claude-3-sonnet-20240229", label: "Claude Sonnet 3" },
|
|
28274
28264
|
{ id: "anthropic/claude-sonnet-4-20250514", label: "Claude Sonnet 4" },
|
|
28275
|
-
{ id: "anthropic/claude-sonnet-4-5", label: "Claude Sonnet 4.5 (latest)" },
|
|
28276
28265
|
{ id: "anthropic/claude-sonnet-4-5-20250929", label: "Claude Sonnet 4.5" },
|
|
28277
|
-
{ id: "anthropic/claude-sonnet-
|
|
28266
|
+
{ id: "anthropic/claude-sonnet-5", label: "Claude Sonnet 5" },
|
|
28267
|
+
{ id: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6" },
|
|
28268
|
+
{ id: "anthropic/claude-sonnet-4-5", label: "Claude Sonnet 4.5 (latest)" },
|
|
28269
|
+
{ id: "anthropic/claude-sonnet-4-0", label: "Claude Sonnet 4 (latest)" },
|
|
28270
|
+
{ id: "anthropic/claude-3-haiku-20240307", label: "Claude Haiku 3" },
|
|
28271
|
+
{ id: "anthropic/claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" },
|
|
28272
|
+
{ id: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (latest)" }
|
|
28278
28273
|
],
|
|
28279
28274
|
"google": [
|
|
28280
28275
|
{ id: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
|
|
28281
|
-
{ id: "google/gemini-
|
|
28282
|
-
{ id: "google/gemini-
|
|
28283
|
-
{ id: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash" },
|
|
28284
|
-
{ id: "google/gemini-2.5-flash-lite", label: "Gemini 2.5 Flash-Lite" },
|
|
28276
|
+
{ id: "google/gemini-3.1-pro-preview-customtools", label: "Gemini 3.1 Pro Preview Custom Tools" },
|
|
28277
|
+
{ id: "google/gemini-3-pro-preview", label: "Gemini 3 Pro Preview" },
|
|
28285
28278
|
{ id: "google/gemini-2.5-pro", label: "Gemini 2.5 Pro" },
|
|
28279
|
+
{ id: "google/gemma-4-31b-it", label: "Gemma 4 31B IT" },
|
|
28280
|
+
{ id: "google/gemma-4-26b-a4b-it", label: "Gemma 4 26B A4B IT" },
|
|
28281
|
+
{ id: "google/gemini-3.5-flash", label: "Gemini 3.5 Flash" },
|
|
28286
28282
|
{ id: "google/gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
|
|
28287
|
-
{ id: "google/gemini-
|
|
28283
|
+
{ id: "google/gemini-2.5-flash", label: "Gemini 2.5 Flash" },
|
|
28284
|
+
{ id: "google/gemini-2.0-flash", label: "Gemini 2.0 Flash" },
|
|
28285
|
+
{ id: "google/gemini-flash-latest", label: "Gemini Flash Latest" },
|
|
28288
28286
|
{ id: "google/gemini-3.1-flash-lite", label: "Gemini 3.1 Flash Lite" },
|
|
28289
28287
|
{ id: "google/gemini-3.1-flash-lite-preview", label: "Gemini 3.1 Flash Lite Preview" },
|
|
28290
|
-
{ id: "google/gemini-
|
|
28291
|
-
{ id: "google/gemini-
|
|
28292
|
-
{ id: "google/gemini-flash-latest", label: "Gemini Flash Latest" }
|
|
28293
|
-
{ id: "google/gemini-flash-lite-latest", label: "Gemini Flash-Lite Latest" },
|
|
28294
|
-
{ id: "google/gemma-4-26b-a4b-it", label: "Gemma 4 26B A4B IT" },
|
|
28295
|
-
{ id: "google/gemma-4-31b-it", label: "Gemma 4 31B IT" },
|
|
28296
|
-
{ id: "google/gemma-4-E2B-it", label: "Gemma 4 E2B IT" },
|
|
28297
|
-
{ id: "google/gemma-4-E4B-it", label: "Gemma 4 E4B IT" }
|
|
28288
|
+
{ id: "google/gemini-2.5-flash-lite", label: "Gemini 2.5 Flash-Lite" },
|
|
28289
|
+
{ id: "google/gemini-2.0-flash-lite", label: "Gemini 2.0 Flash-Lite" },
|
|
28290
|
+
{ id: "google/gemini-flash-lite-latest", label: "Gemini Flash-Lite Latest" }
|
|
28298
28291
|
],
|
|
28299
28292
|
"xai": [
|
|
28300
|
-
{ id: "xai/grok-4.20-0309-reasoning", label: "Grok 4.20 (Reasoning)" },
|
|
28301
|
-
{ id: "xai/grok-3", label: "Grok 3" },
|
|
28302
|
-
{ id: "xai/grok-3-fast", label: "Grok 3 Fast" },
|
|
28303
28293
|
{ id: "xai/grok-4.20-0309-non-reasoning", label: "Grok 4.20 (Non-Reasoning)" },
|
|
28294
|
+
{ id: "xai/grok-4.20-0309-reasoning", label: "Grok 4.20 (Reasoning)" },
|
|
28295
|
+
{ id: "xai/grok-code-fast-1", label: "Grok Code Fast 1" },
|
|
28304
28296
|
{ id: "xai/grok-4.3", label: "Grok 4.3" },
|
|
28297
|
+
{ id: "xai/grok-3", label: "Grok 3" },
|
|
28305
28298
|
{ id: "xai/grok-build-0.1", label: "Grok Build 0.1" },
|
|
28306
|
-
{ id: "xai/grok-
|
|
28299
|
+
{ id: "xai/grok-3-fast", label: "Grok 3 Fast" }
|
|
28307
28300
|
],
|
|
28308
28301
|
"xiaomi": [
|
|
28309
28302
|
{ id: "xiaomi/mimo-v2.5-pro", label: "MiMo-V2.5-Pro" },
|
|
28310
|
-
{ id: "xiaomi/mimo-v2-
|
|
28311
|
-
{ id: "xiaomi/mimo-v2-omni", label: "MiMo-V2-Omni" },
|
|
28303
|
+
{ id: "xiaomi/mimo-v2.5-pro-ultraspeed", label: "MiMo-V2.5-Pro-UltraSpeed" },
|
|
28312
28304
|
{ id: "xiaomi/mimo-v2-pro", label: "MiMo-V2-Pro" },
|
|
28313
28305
|
{ id: "xiaomi/mimo-v2.5", label: "MiMo-V2.5" },
|
|
28314
|
-
{ id: "xiaomi/mimo-v2
|
|
28306
|
+
{ id: "xiaomi/mimo-v2-omni", label: "MiMo-V2-Omni" },
|
|
28307
|
+
{ id: "xiaomi/mimo-v2-flash", label: "MiMo-V2-Flash" }
|
|
28315
28308
|
]
|
|
28316
28309
|
};
|
|
28317
28310
|
init_esm_shims();
|
|
@@ -42643,6 +42636,9 @@ var agentApiServerInfoResponseSchema = passthroughObject({
|
|
|
42643
42636
|
})),
|
|
42644
42637
|
agents: external_exports.array(passthroughObject({
|
|
42645
42638
|
name: external_exports.string(),
|
|
42639
|
+
status: external_exports.string().optional(),
|
|
42640
|
+
activity: external_exports.string().nullable().optional(),
|
|
42641
|
+
activityDetail: external_exports.string().nullable().optional(),
|
|
42646
42642
|
role: external_exports.enum(["owner", "admin", "member"]).nullable().optional()
|
|
42647
42643
|
})),
|
|
42648
42644
|
humans: external_exports.array(passthroughObject({
|
|
@@ -44373,6 +44369,45 @@ var BUILTIN_RUNTIME_HOST_PROVIDER_ENV_SCRUB_KEYS = Array.from(/* @__PURE__ */ ne
|
|
|
44373
44369
|
var PI_BUILTIN_PROVIDER_MODELS = PI_BUILTIN_PROVIDER_MODELS_GENERATED;
|
|
44374
44370
|
var AGENT_ACTIVITIES = ["online", "thinking", "working", "error", "offline"];
|
|
44375
44371
|
var isAgentActivity = makeIsMember(AGENT_ACTIVITIES);
|
|
44372
|
+
var AGENT_ACTIVITY_DETAIL_KINDS = [
|
|
44373
|
+
"none",
|
|
44374
|
+
"message_received",
|
|
44375
|
+
"starting",
|
|
44376
|
+
"runtime_starting",
|
|
44377
|
+
"idle",
|
|
44378
|
+
"running_command",
|
|
44379
|
+
"checking_messages",
|
|
44380
|
+
"compacting_context",
|
|
44381
|
+
"compaction_finished",
|
|
44382
|
+
"compaction_stale",
|
|
44383
|
+
"reviewing_changes",
|
|
44384
|
+
"review_finished",
|
|
44385
|
+
"runtime_reconnecting",
|
|
44386
|
+
"runtime_error",
|
|
44387
|
+
"runtime_crashed",
|
|
44388
|
+
"runtime_unavailable",
|
|
44389
|
+
"runtime_stalled",
|
|
44390
|
+
"stalled_recovery",
|
|
44391
|
+
"stopped",
|
|
44392
|
+
"ready",
|
|
44393
|
+
"runtime_interrupted",
|
|
44394
|
+
"machine_disconnected",
|
|
44395
|
+
"daemon_activity",
|
|
44396
|
+
"external_activity",
|
|
44397
|
+
"synthetic_repair",
|
|
44398
|
+
"slock_action",
|
|
44399
|
+
"system_message",
|
|
44400
|
+
// Generic structured runtime-progress heartbeat (Claude --include-partial-messages
|
|
44401
|
+
// stream events / system status) — a "working" liveness signal with no rendered
|
|
44402
|
+
// content. NOT a subagent. (APM 1.6 6a)
|
|
44403
|
+
"runtime_progress",
|
|
44404
|
+
// A subagent (Claude `Agent` tool) lifecycle/activity row, marked from explicit
|
|
44405
|
+
// parent_tool_use_id / task-lifecycle lineage — never inferred from display text.
|
|
44406
|
+
// (APM 1.6 6b)
|
|
44407
|
+
"subagent_activity",
|
|
44408
|
+
"other"
|
|
44409
|
+
];
|
|
44410
|
+
var isAgentActivityDetailKind = makeIsMember(AGENT_ACTIVITY_DETAIL_KINDS);
|
|
44376
44411
|
var VALID_ACTIVITIES = new Set(AGENT_ACTIVITIES);
|
|
44377
44412
|
var EXTERNAL_AGENT_ACTIVITY_EVENT_SCHEMA = "raft-activity.v1";
|
|
44378
44413
|
var EXTERNAL_AGENT_ACTIVITY_DRAIN_SCHEMA = "raft-activity-drain.v1";
|
|
@@ -44412,13 +44447,15 @@ var RUNTIME_MODELS = {
|
|
|
44412
44447
|
builtin: Object.values(PI_BUILTIN_PROVIDER_MODELS).flat().map((model) => ({ id: model.id, label: model.label || formatRuntimeProviderModelLabel(model.id), verified: "launchable" })),
|
|
44413
44448
|
claude: [
|
|
44414
44449
|
{ id: "opus", label: "Claude Opus" },
|
|
44450
|
+
{ id: "fable", label: "Claude Fable" },
|
|
44451
|
+
{ id: "sonnet", label: "Claude Sonnet" },
|
|
44452
|
+
{ id: "haiku", label: "Claude Haiku" },
|
|
44415
44453
|
{ id: "claude-opus-4-8", label: "Claude Opus 4.8" },
|
|
44416
44454
|
{ id: "claude-opus-4-7", label: "Claude Opus 4.7" },
|
|
44417
44455
|
{ id: "claude-opus-4-6", label: "Claude Opus 4.6" },
|
|
44418
|
-
{ id: "fable", label: "Claude Fable" },
|
|
44419
|
-
{ id: "sonnet", label: "Claude Sonnet" },
|
|
44456
|
+
{ id: "claude-fable-5", label: "Claude Fable 5" },
|
|
44457
|
+
{ id: "claude-sonnet-5", label: "Claude Sonnet 5" },
|
|
44420
44458
|
{ id: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" },
|
|
44421
|
-
{ id: "haiku", label: "Claude Haiku" },
|
|
44422
44459
|
{ id: "claude-haiku-4-5", label: "Claude Haiku 4.5" }
|
|
44423
44460
|
],
|
|
44424
44461
|
codex: [
|
|
@@ -47735,6 +47772,13 @@ function formatRuntimeContext(ctx) {
|
|
|
47735
47772
|
function roleLabel(role) {
|
|
47736
47773
|
return role && role !== "member" ? ` (${role})` : "";
|
|
47737
47774
|
}
|
|
47775
|
+
function agentStatusLabel(agent) {
|
|
47776
|
+
const lifecycle2 = agent.status?.trim() || "unknown";
|
|
47777
|
+
const activity = agent.activity?.trim();
|
|
47778
|
+
if (!activity) return lifecycle2;
|
|
47779
|
+
const activityWithDetail = agent.activityDetail?.trim() ? `${activity}: ${agent.activityDetail.trim()}` : activity;
|
|
47780
|
+
return activity === lifecycle2 ? lifecycle2 : `${lifecycle2}; ${activityWithDetail}`;
|
|
47781
|
+
}
|
|
47738
47782
|
function formatCurrentAgent(data) {
|
|
47739
47783
|
if (!data.serverRole) return "";
|
|
47740
47784
|
const lines = ["### Current Agent"];
|
|
@@ -47769,8 +47813,9 @@ function formatServerInfo(data) {
|
|
|
47769
47813
|
if (agents.length > 0) {
|
|
47770
47814
|
for (const a of agents) {
|
|
47771
47815
|
const role = roleLabel(a.role);
|
|
47772
|
-
|
|
47773
|
-
|
|
47816
|
+
const status = agentStatusLabel(a);
|
|
47817
|
+
text += a.description ? ` - @${a.name} (${status})${role} \u2014 ${a.description}
|
|
47818
|
+
` : ` - @${a.name} (${status})${role}
|
|
47774
47819
|
`;
|
|
47775
47820
|
}
|
|
47776
47821
|
} else {
|
|
@@ -47806,8 +47851,9 @@ function formatChannelMembers(data) {
|
|
|
47806
47851
|
if (agents.length > 0) {
|
|
47807
47852
|
for (const a of agents) {
|
|
47808
47853
|
const role = roleLabel(a.role);
|
|
47809
|
-
|
|
47810
|
-
|
|
47854
|
+
const status = agentStatusLabel(a);
|
|
47855
|
+
text += a.description ? ` - @${a.name} (${status})${role} \u2014 ${a.description}
|
|
47856
|
+
` : ` - @${a.name} (${status})${role}
|
|
47811
47857
|
`;
|
|
47812
47858
|
}
|
|
47813
47859
|
} else {
|
|
@@ -49497,7 +49543,8 @@ var messageSendCommand = defineCommand(
|
|
|
49497
49543
|
]
|
|
49498
49544
|
},
|
|
49499
49545
|
async (ctx, positionalContent, opts) => {
|
|
49500
|
-
|
|
49546
|
+
const target = opts.target?.trim() ?? "";
|
|
49547
|
+
if (!target) {
|
|
49501
49548
|
throw cliError("INVALID_ARG", "--target is required");
|
|
49502
49549
|
}
|
|
49503
49550
|
try {
|
|
@@ -49538,14 +49585,14 @@ var messageSendCommand = defineCommand(
|
|
|
49538
49585
|
const agentContext = ctx.loadAgentContext();
|
|
49539
49586
|
const client = ctx.createApiClient(agentContext);
|
|
49540
49587
|
if (opts.sendDraft) {
|
|
49541
|
-
const savedDraft = getSavedDraft(agentContext.agentId,
|
|
49588
|
+
const savedDraft = getSavedDraft(agentContext.agentId, target);
|
|
49542
49589
|
if (!savedDraft) {
|
|
49543
49590
|
throw cliError(
|
|
49544
49591
|
"SEND_DRAFT_NOT_FOUND",
|
|
49545
49592
|
[
|
|
49546
49593
|
"No saved draft exists for this target.",
|
|
49547
49594
|
"To create or update a draft, send message content normally:",
|
|
49548
|
-
` raft message send --target "${
|
|
49595
|
+
` raft message send --target "${target}" <<'${MESSAGE_HEREDOC_DELIMITER}'`,
|
|
49549
49596
|
" message body",
|
|
49550
49597
|
` ${MESSAGE_HEREDOC_DELIMITER}`
|
|
49551
49598
|
].join("\n")
|
|
@@ -49557,15 +49604,15 @@ var messageSendCommand = defineCommand(
|
|
|
49557
49604
|
previousDraftReholdCount = savedDraft.reholdCount;
|
|
49558
49605
|
seenUpToSeq = savedDraft.seenUpToSeq;
|
|
49559
49606
|
} else {
|
|
49560
|
-
const previousDraft = getSavedDraft(agentContext.agentId,
|
|
49607
|
+
const previousDraft = getSavedDraft(agentContext.agentId, target);
|
|
49561
49608
|
previousDraftReholdCount = previousDraft?.reholdCount ?? 0;
|
|
49562
49609
|
seenUpToSeq = previousDraft?.seenUpToSeq;
|
|
49563
49610
|
}
|
|
49564
49611
|
if (seenUpToSeq === void 0) {
|
|
49565
|
-
seenUpToSeq = getConsumedSeq(agentContext.agentId,
|
|
49612
|
+
seenUpToSeq = getConsumedSeq(agentContext.agentId, target);
|
|
49566
49613
|
}
|
|
49567
49614
|
const body = {
|
|
49568
|
-
target
|
|
49615
|
+
target,
|
|
49569
49616
|
content: outgoingContent,
|
|
49570
49617
|
draftReholdCount: previousDraftReholdCount
|
|
49571
49618
|
};
|
|
@@ -49593,21 +49640,21 @@ var messageSendCommand = defineCommand(
|
|
|
49593
49640
|
}
|
|
49594
49641
|
if (data.state === "held") {
|
|
49595
49642
|
if (typeof data.seenUpToSeq === "number" && Number.isFinite(data.seenUpToSeq)) {
|
|
49596
|
-
recordConsumedSeqs(agentContext.agentId, { [
|
|
49643
|
+
recordConsumedSeqs(agentContext.agentId, { [target]: data.seenUpToSeq });
|
|
49597
49644
|
}
|
|
49598
|
-
setSavedDraft(agentContext.agentId,
|
|
49645
|
+
setSavedDraft(agentContext.agentId, target, {
|
|
49599
49646
|
content: outgoingContent,
|
|
49600
49647
|
attachmentIds: outgoingAttachmentIds,
|
|
49601
49648
|
savedAt: Date.now(),
|
|
49602
49649
|
reholdCount: previousDraftReholdCount + 1,
|
|
49603
49650
|
seenUpToSeq: data.seenUpToSeq
|
|
49604
49651
|
});
|
|
49605
|
-
writeText(ctx.io, formatHeldSendOutput(
|
|
49652
|
+
writeText(ctx.io, formatHeldSendOutput(target, data));
|
|
49606
49653
|
return;
|
|
49607
49654
|
}
|
|
49608
|
-
clearSavedDraft(agentContext.agentId,
|
|
49655
|
+
clearSavedDraft(agentContext.agentId, target);
|
|
49609
49656
|
const shortId = data.messageId ? data.messageId.slice(0, 8) : null;
|
|
49610
|
-
const replyHint = shortId ? ` (to reply in this message's thread, use target "${
|
|
49657
|
+
const replyHint = shortId ? ` (to reply in this message's thread, use target "${target.includes(":") ? target : target + ":" + shortId}")` : "";
|
|
49611
49658
|
let unreadSection = "";
|
|
49612
49659
|
if (data.recentUnread && data.recentUnread.length > 0) {
|
|
49613
49660
|
unreadSection = `
|
|
@@ -49619,7 +49666,7 @@ ${formatMessages(data.recentUnread)}`;
|
|
|
49619
49666
|
const mentionSection = pendingMentionActions.length > 0 ? `
|
|
49620
49667
|
|
|
49621
49668
|
${formatPendingMentionActions(pendingMentionActions, { source: "send" }).trimEnd()}` : "";
|
|
49622
|
-
writeText(ctx.io, `Message sent to ${
|
|
49669
|
+
writeText(ctx.io, `Message sent to ${target}. Message ID: ${data.messageId}${replyHint}${mentionSection}${unreadSection}
|
|
49623
49670
|
`);
|
|
49624
49671
|
}
|
|
49625
49672
|
);
|
|
@@ -51647,17 +51694,60 @@ function resolveActionUrl(input) {
|
|
|
51647
51694
|
const baseUrl = safeUrl(base, "action base URL");
|
|
51648
51695
|
return new URL(input.action.endpoint.path, baseUrl);
|
|
51649
51696
|
}
|
|
51650
|
-
function
|
|
51697
|
+
function setCookieHeaderValues(headers) {
|
|
51651
51698
|
const getSetCookie = headers.getSetCookie;
|
|
51652
|
-
|
|
51653
|
-
|
|
51654
|
-
|
|
51699
|
+
return typeof getSetCookie === "function" ? getSetCookie.call(headers) : [headers.get("set-cookie")].filter((value) => Boolean(value));
|
|
51700
|
+
}
|
|
51701
|
+
function defaultCookiePath(pathname) {
|
|
51702
|
+
if (!pathname.startsWith("/") || pathname === "/") return "/";
|
|
51703
|
+
const lastSlash = pathname.lastIndexOf("/");
|
|
51704
|
+
if (lastSlash <= 0) return "/";
|
|
51705
|
+
return pathname.slice(0, lastSlash);
|
|
51706
|
+
}
|
|
51707
|
+
function parseSessionCookie(value, sourceUrl) {
|
|
51708
|
+
const parts = value.split(";").map((part) => part.trim()).filter(Boolean);
|
|
51709
|
+
const pair = parts.shift();
|
|
51710
|
+
if (!pair || !pair.includes("=") || pair.startsWith("=")) return null;
|
|
51711
|
+
const sourceHost = sourceUrl.hostname.toLowerCase();
|
|
51712
|
+
let host = sourceHost;
|
|
51713
|
+
let path9 = defaultCookiePath(sourceUrl.pathname);
|
|
51714
|
+
let secure = false;
|
|
51715
|
+
for (const part of parts) {
|
|
51716
|
+
const separator = part.indexOf("=");
|
|
51717
|
+
const rawName = separator >= 0 ? part.slice(0, separator) : part;
|
|
51718
|
+
const rawValue = separator >= 0 ? part.slice(separator + 1) : "";
|
|
51719
|
+
const name = rawName.trim().toLowerCase();
|
|
51720
|
+
if (name === "secure") {
|
|
51721
|
+
secure = true;
|
|
51722
|
+
} else if (name === "path" && rawValue.trim().startsWith("/")) {
|
|
51723
|
+
path9 = rawValue.trim();
|
|
51724
|
+
} else if (name === "domain") {
|
|
51725
|
+
const domain2 = rawValue.trim().replace(/^\./, "").toLowerCase();
|
|
51726
|
+
if (domain2 !== sourceHost) return null;
|
|
51727
|
+
host = domain2;
|
|
51728
|
+
}
|
|
51729
|
+
}
|
|
51730
|
+
return { pair, host, path: path9, secure };
|
|
51731
|
+
}
|
|
51732
|
+
function cookiePathMatches(requestPath, cookiePath) {
|
|
51733
|
+
if (requestPath === cookiePath) return true;
|
|
51734
|
+
if (cookiePath.endsWith("/")) return requestPath.startsWith(cookiePath);
|
|
51735
|
+
return requestPath.startsWith(`${cookiePath}/`);
|
|
51736
|
+
}
|
|
51737
|
+
function cookieHeaderForUrl(cookies, url2) {
|
|
51738
|
+
const host = url2.hostname.toLowerCase();
|
|
51739
|
+
const valid = cookies.filter((cookie) => cookie.host === host).filter((cookie) => !cookie.secure || url2.protocol === "https:").filter((cookie) => cookiePathMatches(url2.pathname || "/", cookie.path)).map((cookie) => cookie.pair);
|
|
51740
|
+
return valid.length > 0 ? valid.join("; ") : null;
|
|
51741
|
+
}
|
|
51742
|
+
function sessionCookiesFromSetCookie(headers, sourceUrl) {
|
|
51743
|
+
return setCookieHeaderValues(headers).map((value) => parseSessionCookie(value, sourceUrl)).filter((value) => Boolean(value));
|
|
51655
51744
|
}
|
|
51656
51745
|
async function establishServiceSession(input) {
|
|
51657
51746
|
const callbackUrl = buildAgentCallbackHandoffUrl(input.service.returnUrl, input.login.requestId);
|
|
51658
51747
|
if (!callbackUrl) {
|
|
51659
51748
|
throw cliError("INTEGRATION_INVOKE_FAILED", "service return URL cannot be used for Agent Login callback handoff");
|
|
51660
51749
|
}
|
|
51750
|
+
const parsedCallbackUrl = safeUrl(callbackUrl, "service callback URL");
|
|
51661
51751
|
const response = await fetch(callbackUrl, {
|
|
51662
51752
|
method: "GET",
|
|
51663
51753
|
redirect: "manual",
|
|
@@ -51666,14 +51756,14 @@ async function establishServiceSession(input) {
|
|
|
51666
51756
|
if (response.status < 200 || response.status >= 400) {
|
|
51667
51757
|
throw cliError("INTEGRATION_INVOKE_FAILED", `service callback handoff failed with HTTP ${response.status}`);
|
|
51668
51758
|
}
|
|
51669
|
-
const
|
|
51670
|
-
if (
|
|
51759
|
+
const cookies = sessionCookiesFromSetCookie(response.headers, parsedCallbackUrl);
|
|
51760
|
+
if (cookies.length === 0) {
|
|
51671
51761
|
throw cliError(
|
|
51672
51762
|
"INTEGRATION_INVOKE_FAILED",
|
|
51673
51763
|
"service callback handoff did not set a session cookie; the service may not support stateless Agent Login API actions yet"
|
|
51674
51764
|
);
|
|
51675
51765
|
}
|
|
51676
|
-
return
|
|
51766
|
+
return cookies;
|
|
51677
51767
|
}
|
|
51678
51768
|
function appendPayloadAsQuery(url2, payload) {
|
|
51679
51769
|
for (const [key, value] of Object.entries(payload)) {
|
|
@@ -51683,9 +51773,16 @@ function appendPayloadAsQuery(url2, payload) {
|
|
|
51683
51773
|
}
|
|
51684
51774
|
async function invokeHttpAction(input) {
|
|
51685
51775
|
const url2 = new URL(input.url);
|
|
51776
|
+
const cookie = cookieHeaderForUrl(input.cookies, url2);
|
|
51777
|
+
if (!cookie) {
|
|
51778
|
+
throw cliError(
|
|
51779
|
+
"INTEGRATION_INVOKE_FAILED",
|
|
51780
|
+
"service callback handoff did not set a session cookie usable for the action URL; ensure the cookie host and Path cover the action endpoint"
|
|
51781
|
+
);
|
|
51782
|
+
}
|
|
51686
51783
|
const headers = {
|
|
51687
51784
|
accept: "application/json,text/plain,*/*",
|
|
51688
|
-
cookie
|
|
51785
|
+
cookie
|
|
51689
51786
|
};
|
|
51690
51787
|
const init = {
|
|
51691
51788
|
method: input.action.endpoint.method,
|
|
@@ -51864,9 +51961,9 @@ var integrationInvokeCommand = defineCommand(
|
|
|
51864
51961
|
{ suggestedNextAction: "Ask a server owner/admin to approve the integration login request, then rerun the command." }
|
|
51865
51962
|
);
|
|
51866
51963
|
}
|
|
51867
|
-
const
|
|
51964
|
+
const cookies = await establishServiceSession({ login: loginRes.data, service });
|
|
51868
51965
|
const url2 = resolveActionUrl({ service, manifest, action });
|
|
51869
|
-
const result2 = await invokeHttpAction({ url: url2, action, payload,
|
|
51966
|
+
const result2 = await invokeHttpAction({ url: url2, action, payload, cookies });
|
|
51870
51967
|
if (opts.json) {
|
|
51871
51968
|
writeJson(cmdCtx.io, {
|
|
51872
51969
|
ok: true,
|