1use crate::preset::PresetModel;
6pub const OPENAI: &[PresetModel] = &[
7 PresetModel {
8 id: "gpt-5.4",
9 display_name: "GPT-5.4",
10 context_window: 1_050_000,
11 max_output_tokens: Some(128_000),
12 supports_images: true,
13 },
14 PresetModel {
15 id: "gpt-5-mini",
16 display_name: "GPT-5 Mini",
17 context_window: 400_000,
18 max_output_tokens: Some(128_000),
19 supports_images: true,
20 },
21];
22pub const ANTHROPIC: &[PresetModel] = &[
23 PresetModel {
24 id: "claude-opus-4-6",
25 display_name: "Claude Opus 4.6",
26 context_window: 1_000_000,
27 max_output_tokens: Some(128_000),
28 supports_images: true,
29 },
30 PresetModel {
31 id: "claude-sonnet-4-6",
32 display_name: "Claude Sonnet 4.6",
33 context_window: 1_000_000,
34 max_output_tokens: Some(128_000),
35 supports_images: true,
36 },
37 PresetModel {
38 id: "claude-haiku-4-5",
39 display_name: "Claude Haiku 4.5",
40 context_window: 200_000,
41 max_output_tokens: Some(64_000),
42 supports_images: true,
43 },
44];
45pub const CLAUDE_OAUTH: &[PresetModel] = &[
46 PresetModel {
47 id: "claude-opus-4-6",
48 display_name: "Claude Opus 4.6 (subscription)",
49 context_window: 1_000_000,
50 max_output_tokens: Some(128_000),
51 supports_images: true,
52 },
53 PresetModel {
54 id: "claude-sonnet-4-6",
55 display_name: "Claude Sonnet 4.6 (subscription)",
56 context_window: 1_000_000,
57 max_output_tokens: Some(128_000),
58 supports_images: true,
59 },
60 PresetModel {
61 id: "claude-haiku-4-5",
62 display_name: "Claude Haiku 4.5 (subscription)",
63 context_window: 200_000,
64 max_output_tokens: Some(64_000),
65 supports_images: true,
66 },
67];
68pub const DEEPSEEK: &[PresetModel] = &[
69 PresetModel {
70 id: "deepseek-v4-pro",
71 display_name: "DeepSeek V4 Pro",
72 context_window: 1_048_576,
73 max_output_tokens: Some(393_216),
74 supports_images: false,
75 },
76 PresetModel {
77 id: "deepseek-flash",
78 display_name: "DeepSeek V4.1 Flash 1017",
79 context_window: 1_048_576,
80 max_output_tokens: Some(393_216),
81 supports_images: true,
82 },
83];
84pub const GROQ: &[PresetModel] = &[
85 PresetModel {
86 id: "openai/gpt-oss-120b",
87 display_name: "GPT OSS 120B",
88 context_window: 131_072,
89 max_output_tokens: Some(65_536),
90 supports_images: false,
91 },
92 PresetModel {
93 id: "qwen/qwen3.8-27b",
94 display_name: "Qwen3.8 27B",
95 context_window: 131_072,
96 max_output_tokens: Some(16_384),
97 supports_images: true,
98 },
99];
100pub const CEREBRAS: &[PresetModel] = &[
101 PresetModel {
102 id: "gpt-oss-120b",
103 display_name: "GPT OSS 120B",
104 context_window: 131_072,
105 max_output_tokens: Some(40_960),
106 supports_images: false,
107 },
108 PresetModel {
109 id: "qwen-3.8-27b",
110 display_name: "Qwen3.8 27B",
111 context_window: 131_072,
112 max_output_tokens: Some(40_960),
113 supports_images: true,
114 },
115];
116pub const XAI: &[PresetModel] = &[
117 PresetModel {
118 id: "grok-4.6",
119 display_name: "Grok 4.6",
120 context_window: 500_000,
121 max_output_tokens: Some(500_000),
122 supports_images: true,
123 },
124 PresetModel {
125 id: "grok-4.7",
126 display_name: "Grok 4.7",
127 context_window: 500_000,
128 max_output_tokens: Some(500_000),
129 supports_images: true,
130 },
131];
132pub const MISTRAL: &[PresetModel] = &[
133 PresetModel {
134 id: "mistral-large-latest",
135 display_name: "Mistral Large",
136 context_window: 262_144,
137 max_output_tokens: Some(262_144),
138 supports_images: true,
139 },
140 PresetModel {
141 id: "codestral-latest",
142 display_name: "Codestral",
143 context_window: 256_000,
144 max_output_tokens: Some(4_096),
145 supports_images: false,
146 },
147];
148pub const GEMINI: &[PresetModel] = &[
149 PresetModel {
150 id: "gemini-2.5-pro",
151 display_name: "Gemini 2.5 Pro",
152 context_window: 1_048_576,
153 max_output_tokens: Some(65_536),
154 supports_images: true,
155 },
156 PresetModel {
157 id: "gemini-2.5-flash",
158 display_name: "Gemini 2.5 Flash",
159 context_window: 1_048_576,
160 max_output_tokens: Some(65_536),
161 supports_images: true,
162 },
163];
164pub const TOGETHER: &[PresetModel] = &[
165 PresetModel {
166 id: "moonshotai/Kimi-K3",
167 display_name: "Kimi K3",
168 context_window: 1_048_576,
169 max_output_tokens: Some(131_072),
170 supports_images: true,
171 },
172 PresetModel {
173 id: "Qwen/Qwen3.6-Plus",
174 display_name: "Qwen3.6 Plus",
175 context_window: 1_000_000,
176 max_output_tokens: Some(65_536),
177 supports_images: false,
178 },
179];
180pub const FIREWORKS: &[PresetModel] = &[
181 PresetModel {
182 id: "accounts/fireworks/models/kimi-k3",
183 display_name: "Kimi K3",
184 context_window: 1_048_576,
185 max_output_tokens: Some(131_072),
186 supports_images: true,
187 },
188 PresetModel {
189 id: "accounts/fireworks/models/deepseek-v4p1-flash",
190 display_name: "DeepSeek V4.1 Flash",
191 context_window: 1_000_000,
192 max_output_tokens: Some(384_000),
193 supports_images: true,
194 },
195];
196pub const OPENROUTER: &[PresetModel] = &[
197 PresetModel {
198 id: "anthropic/claude-sonnet-4.6",
199 display_name: "Claude Sonnet 4.6",
200 context_window: 1_000_000,
201 max_output_tokens: Some(128_000),
202 supports_images: true,
203 },
204 PresetModel {
205 id: "openai/gpt-5.4",
206 display_name: "GPT-5.4",
207 context_window: 1_050_000,
208 max_output_tokens: Some(128_000),
209 supports_images: true,
210 },
211 PresetModel {
212 id: "qwen/qwen3-coder",
213 display_name: "Qwen3 Coder 480B A35B",
214 context_window: 262_144,
215 max_output_tokens: Some(65_536),
216 supports_images: false,
217 },
218];
219pub const NVIDIA: &[PresetModel] = &[PresetModel {
220 id: "deepseek-ai/deepseek-v4.1-flash",
221 display_name: "DeepSeek V4.1 Flash",
222 context_window: 1_000_000,
223 max_output_tokens: Some(384_000),
224 supports_images: true,
225}];
226pub const MOONSHOT: &[PresetModel] = &[
227 PresetModel {
228 id: "kimi-k2.7-code",
229 display_name: "Kimi K2.7 Code",
230 context_window: 262_144,
231 max_output_tokens: Some(262_144),
232 supports_images: true,
233 },
234 PresetModel {
235 id: "kimi-k3",
236 display_name: "Kimi K3",
237 context_window: 1_048_576,
238 max_output_tokens: Some(1_048_576),
239 supports_images: true,
240 },
241];
242pub const ZAI: &[PresetModel] = &[
243 PresetModel {
244 id: "glm-4.6",
245 display_name: "GLM-4.6",
246 context_window: 204_800,
247 max_output_tokens: Some(131_072),
248 supports_images: false,
249 },
250 PresetModel {
251 id: "glm-5",
252 display_name: "GLM-5",
253 context_window: 204_800,
254 max_output_tokens: Some(131_072),
255 supports_images: false,
256 },
257];
258pub const MINIMAX: &[PresetModel] = &[
259 PresetModel {
260 id: "MiniMax-M3",
261 display_name: "MiniMax-M3",
262 context_window: 1_000_000,
263 max_output_tokens: Some(524_288),
264 supports_images: true,
265 },
266 PresetModel {
267 id: "MiniMax-M3.1-Flash",
268 display_name: "MiniMax-M3.1-Flash",
269 context_window: 1_000_000,
270 max_output_tokens: Some(524_288),
271 supports_images: true,
272 },
273];
274pub const QWEN: &[PresetModel] = &[
275 PresetModel {
276 id: "qwen3-coder-flash",
277 display_name: "Qwen3 Coder Flash",
278 context_window: 1_000_000,
279 max_output_tokens: Some(65_536),
280 supports_images: false,
281 },
282 PresetModel {
283 id: "qwen-max",
284 display_name: "Qwen Max",
285 context_window: 32_768,
286 max_output_tokens: Some(8_192),
287 supports_images: false,
288 },
289];
290pub const HUGGINGFACE: &[PresetModel] = &[PresetModel {
291 id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
292 display_name: "Qwen3-Coder-480B-A35B-Instruct",
293 context_window: 262_144,
294 max_output_tokens: Some(65_536),
295 supports_images: false,
296}];
297pub const VERCEL_GATEWAY: &[PresetModel] = &[PresetModel {
298 id: "anthropic/claude-sonnet-4.6",
299 display_name: "Claude Sonnet 4.6",
300 context_window: 1_000_000,
301 max_output_tokens: Some(128_000),
302 supports_images: true,
303}];
304pub const OPENCODE_ZEN: &[PresetModel] = &[PresetModel {
305 id: "claude-sonnet-4-6",
306 display_name: "Claude Sonnet 4.6",
307 context_window: 1_000_000,
308 max_output_tokens: Some(64_000),
309 supports_images: true,
310}];
311pub const AZURE: &[PresetModel] = &[PresetModel {
312 id: "gpt-5.4",
313 display_name: "GPT-5.4",
314 context_window: 1_050_000,
315 max_output_tokens: Some(128_000),
316 supports_images: true,
317}];