vtcode_config/constants/models/
merge_gateway.rs1pub const DEFAULT_ROUTING: &str = "default_routing";
4pub const OPENAI_GPT_5_5: &str = "openai/gpt-5.5";
5pub const ANTHROPIC_CLAUDE_OPUS_5: &str = "anthropic/claude-opus-5";
6pub const ANTHROPIC_CLAUDE_OPUS_5_5: &str = "anthropic/claude-opus-5-5";
7pub const ANTHROPIC_CLAUDE_SONNET_5: &str = "anthropic/claude-sonnet-5";
8pub const ANTHROPIC_CLAUDE_SONNET_5_5: &str = "anthropic/claude-sonnet-5-5";
9pub const GOOGLE_GEMINI_3_6_FLASH: &str = "google/gemini-3.6-flash";
10pub const GOOGLE_GEMINI_3_7_FLASH: &str = "google/gemini-3.7-flash";
11pub const XAI_GROK_4_6: &str = "xai/grok-4.6";
12pub const XAI_GROK_4_7: &str = "xai/grok-4.7";
13pub const MINIMAX_H3: &str = "minimax/minimax-h3";
14pub const MOONSHOT_KIMI_K3: &str = "moonshot/kimi-k3";
15pub const THINKINGMACHINES_INKLING: &str = "thinkingmachines/inkling";
16pub const ZAI_GLM_5_3_FLASH: &str = "zai/glm-5.3-flash";
17pub const ZAI_GLM_5_3_FLASHX: &str = "zai/glm-5.3-flashx";
18pub const OPENAI_GPT_5_6_LUNA: &str = "openai/gpt-5.6-luna";
19pub const OPENAI_GPT_5_6_SOL: &str = "openai/gpt-5.6-sol";
20pub const OPENAI_GPT_5_6_TERRA: &str = "openai/gpt-5.6-terra";
21pub const OPENAI_GPT_6_ASTRA: &str = "openai/gpt-6-astra";
22pub const OPENAI_GPT_6_SOL: &str = "openai/gpt-6-sol";
23pub const OPENAI_GPT_6_1_SOL: &str = "openai/gpt-6.1-sol";
24pub const OPENAI_GPT_6_LUNA: &str = "openai/gpt-6-luna";
25pub const GOOGLE_GEMINI_3_8_FLASH: &str = "google/gemini-3.8-flash";
26pub const GOOGLE_GEMINI_4_ARGON: &str = "google/gemini-4-argon";
27pub const ANTHROPIC_CLAUDE_HAIKU_4_5_20251001: &str = "anthropic/claude-haiku-4-5-20251001";
28pub const ANTHROPIC_CLAUDE_HAIKU_5_5: &str = "anthropic/claude-haiku-5-5";
29pub const ANTHROPIC_CLAUDE_FABLE_5_1: &str = "anthropic/claude-fable-5-1";
30pub const DEEPSEEK_FLASH: &str = "deepseek/deepseek-v4.1-flash";
31pub const XIAOMIMIMO_MIMO_V2_6_PRO: &str = "xiaomimimo/mimo-v2.6-pro";
32pub const XIAOMIMIMO_MIMO_V2_6_FLASH: &str = "xiaomimimo/mimo-v2.6-flash";
33pub const MISTRAL_LARGE_4: &str = "mistral/mistral-large-4-0";
34
35pub const DEFAULT_MODEL: &str = DEFAULT_ROUTING;
36
37pub const SUPPORTED_MODELS: &[&str] = &[
40 DEFAULT_ROUTING,
41 OPENAI_GPT_5_5,
42 ANTHROPIC_CLAUDE_OPUS_5,
43 ANTHROPIC_CLAUDE_OPUS_5_5,
44 ANTHROPIC_CLAUDE_SONNET_5,
45 ANTHROPIC_CLAUDE_SONNET_5_5,
46 ANTHROPIC_CLAUDE_HAIKU_4_5_20251001,
47 ANTHROPIC_CLAUDE_HAIKU_5_5,
48 ANTHROPIC_CLAUDE_FABLE_5_1,
49 GOOGLE_GEMINI_3_6_FLASH,
50 GOOGLE_GEMINI_3_7_FLASH,
51 GOOGLE_GEMINI_3_8_FLASH,
52 GOOGLE_GEMINI_4_ARGON,
53 DEEPSEEK_FLASH,
54 XAI_GROK_4_6,
55 XAI_GROK_4_7,
56 MINIMAX_H3,
57 MOONSHOT_KIMI_K3,
58 THINKINGMACHINES_INKLING,
59 ZAI_GLM_5_3_FLASH,
60 ZAI_GLM_5_3_FLASHX,
61 OPENAI_GPT_5_6_LUNA,
62 OPENAI_GPT_5_6_SOL,
63 OPENAI_GPT_5_6_TERRA,
64 OPENAI_GPT_6_ASTRA,
65 OPENAI_GPT_6_SOL,
66 OPENAI_GPT_6_1_SOL,
67 OPENAI_GPT_6_LUNA,
68 XIAOMIMIMO_MIMO_V2_6_PRO,
69 XIAOMIMIMO_MIMO_V2_6_FLASH,
70 MISTRAL_LARGE_4,
71];
72
73pub const REASONING_EFFORT_ROUTES: &[&str] = &[
76 OPENAI_GPT_5_5,
77 XAI_GROK_4_6,
78 XAI_GROK_4_7,
79 MOONSHOT_KIMI_K3,
80 ZAI_GLM_5_3_FLASH,
81 ZAI_GLM_5_3_FLASHX,
82 OPENAI_GPT_5_6_LUNA,
83 OPENAI_GPT_5_6_SOL,
84 OPENAI_GPT_5_6_TERRA,
85 OPENAI_GPT_6_ASTRA,
86 OPENAI_GPT_6_SOL,
87 OPENAI_GPT_6_1_SOL,
88 OPENAI_GPT_6_LUNA,
89];
90
91pub const THINKING_BUDGET_ROUTES: &[&str] = &[
99 ANTHROPIC_CLAUDE_OPUS_5,
100 ANTHROPIC_CLAUDE_OPUS_5_5,
101 ANTHROPIC_CLAUDE_SONNET_5,
102 ANTHROPIC_CLAUDE_SONNET_5_5,
103 ANTHROPIC_CLAUDE_FABLE_5_1,
104 GOOGLE_GEMINI_3_6_FLASH,
105 GOOGLE_GEMINI_3_7_FLASH,
106 GOOGLE_GEMINI_3_8_FLASH,
107 GOOGLE_GEMINI_4_ARGON,
108 DEEPSEEK_FLASH,
109 MINIMAX_H3,
110 THINKINGMACHINES_INKLING,
111];
112
113pub const REASONING_MODELS: &[&str] = &[
118 ANTHROPIC_CLAUDE_OPUS_5,
119 ANTHROPIC_CLAUDE_OPUS_5_5,
120 ANTHROPIC_CLAUDE_SONNET_5,
121 ANTHROPIC_CLAUDE_SONNET_5_5,
122 ANTHROPIC_CLAUDE_FABLE_5_1,
123 GOOGLE_GEMINI_3_8_FLASH,
124 GOOGLE_GEMINI_4_ARGON,
125 DEEPSEEK_FLASH,
126 XAI_GROK_4_6,
127 XAI_GROK_4_7,
128 MINIMAX_H3,
129 MOONSHOT_KIMI_K3,
130 THINKINGMACHINES_INKLING,
131 ZAI_GLM_5_3_FLASH,
132 ZAI_GLM_5_3_FLASHX,
133 OPENAI_GPT_5_6_LUNA,
134 OPENAI_GPT_5_6_SOL,
135 OPENAI_GPT_5_6_TERRA,
136 OPENAI_GPT_6_ASTRA,
137 OPENAI_GPT_6_SOL,
138 OPENAI_GPT_6_1_SOL,
139 OPENAI_GPT_6_LUNA,
140];
141
142pub fn route_uses_reasoning_effort(model: &str) -> bool {
146 let model = model.trim();
147 model.starts_with("openai/")
148 || model.starts_with("xai/")
149 || model.starts_with("moonshot/")
150 || model.starts_with("zai/")
151}
152
153pub fn route_uses_thinking_budget(model: &str) -> bool {
161 let model = model.trim();
162 if model == ANTHROPIC_CLAUDE_HAIKU_5_5 {
163 return false;
164 }
165 model.starts_with("anthropic/")
166 || model.starts_with("google/gemini-")
167 || model.starts_with("deepseek/")
168 || model.starts_with("minimax/")
169 || model.starts_with("thinkingmachines/")
170}
171
172pub fn route_supports_reasoning(model: &str) -> bool {
175 route_uses_reasoning_effort(model) || route_uses_thinking_budget(model)
176}