@@ -53,13 +53,16 @@ export const PROVIDERS: ProviderDef[] = [
5353 subtitle : "Claude Opus 4, Sonnet 4.5, Haiku" ,
5454 docsUrl : "https://console.anthropic.com/settings/keys" ,
5555 models : [
56+ { label : "Claude Opus 4.6" , value : "claude-opus-4-6" } ,
5657 { label : "Claude Opus 4" , value : "claude-opus-4" } ,
5758 { label : "Claude Opus 4 (2025-05-14)" , value : "claude-opus-4-20250514" } ,
5859 { label : "Claude Sonnet 4.5" , value : "claude-sonnet-4-5" } ,
60+ { label : "Claude Sonnet 4.5" , value : "claude-sonnet-4-5-20250929" } ,
5961 { label : "Claude Sonnet 4.5 (2025-04-14)" , value : "claude-sonnet-4-5-20250414" } ,
6062 { label : "Claude Sonnet 4" , value : "claude-sonnet-4" } ,
6163 { label : "Claude Sonnet 4 (2025-05-14)" , value : "claude-sonnet-4-20250514" } ,
6264 { label : "Claude Haiku 4.5" , value : "claude-haiku-4-5" } ,
65+ { label : "Claude Haiku 4.5 (2025-10-01)" , value : "claude-haiku-4-5-20251001" } ,
6366 { label : "Claude 3.5 Sonnet" , value : "claude-3-5-sonnet-latest" } ,
6467 { label : "Claude 3.5 Sonnet (2024-10-22)" , value : "claude-3-5-sonnet-20241022" } ,
6568 { label : "Claude 3.5 Sonnet (2024-06-20)" , value : "claude-3-5-sonnet-20240620" } ,
@@ -108,8 +111,10 @@ export const PROVIDERS: ProviderDef[] = [
108111 docsUrl : "https://platform.deepseek.com/api_keys" ,
109112 models : [
110113 { label : "DeepSeek V3" , value : "deepseek-chat" } ,
114+ { label : "DeepSeek V3" , value : "deepseek-v3" } ,
111115 { label : "DeepSeek V3 (0324)" , value : "deepseek-chat-0324" } ,
112116 { label : "DeepSeek R1" , value : "deepseek-reasoner" } ,
117+ { label : "DeepSeek R1" , value : "deepseek-r1" } ,
113118 { label : "DeepSeek R1 (0528)" , value : "deepseek-reasoner-0528" } ,
114119 { label : "DeepSeek Coder V2" , value : "deepseek-coder" } ,
115120 { label : "DeepSeek R1 Distill Qwen 32B" , value : "deepseek-r1-distill-qwen-32b" } ,
@@ -127,11 +132,14 @@ export const PROVIDERS: ProviderDef[] = [
127132 subtitle : "Mistral Large, Codestral, Pixtral" ,
128133 docsUrl : "https://console.mistral.ai/api-keys" ,
129134 models : [
135+ { label : "Mistral Large" , value : "mistral-large" } ,
130136 { label : "Mistral Large (25.01)" , value : "mistral-large-latest" } ,
131137 { label : "Mistral Large (24.11)" , value : "mistral-large-2411" } ,
138+ { label : "Mistral Small" , value : "mistral-small" } ,
132139 { label : "Mistral Small (25.01)" , value : "mistral-small-latest" } ,
133140 { label : "Mistral Small (24.09)" , value : "mistral-small-2409" } ,
134141 { label : "Mistral Medium" , value : "mistral-medium-latest" } ,
142+ { label : "Codestral" , value : "codestral" } ,
135143 { label : "Codestral (25.01)" , value : "codestral-latest" } ,
136144 { label : "Codestral Mamba" , value : "codestral-mamba-latest" } ,
137145 { label : "Mistral Nemo" , value : "open-mistral-nemo" } ,
@@ -178,8 +186,10 @@ export const PROVIDERS: ProviderDef[] = [
178186 { label : "Qwen3 1.7B" , value : "qwen3-1.7b" } ,
179187 { label : "Qwen3 0.6B" , value : "qwen3-0.6b" } ,
180188 { label : "Qwen2.5 72B Instruct" , value : "qwen2.5-72b-instruct" } ,
189+ { label : "Qwen2.5 72B Instruct" , value : "qwen-2.5-72b-instruct" } ,
181190 { label : "Qwen2.5 32B Instruct" , value : "qwen2.5-32b-instruct" } ,
182191 { label : "Qwen2.5 Coder 32B" , value : "qwen2.5-coder-32b-instruct" } ,
192+ { label : "Qwen2.5 Coder 32B" , value : "qwen-2.5-coder-32b-instruct" } ,
183193 { label : "QwQ 32B (Reasoning)" , value : "qwq-32b" } ,
184194 ] ,
185195 } ,
@@ -306,8 +316,19 @@ export function getProvider(id: string): ProviderDef | undefined {
306316export function getModelLabel ( providerId : string , modelValue : string ) : string {
307317 const prov = getProvider ( providerId ) ;
308318 if ( ! prov ) return modelValue ;
309- const m = prov . models . find ( ( m ) => m . value === modelValue ) ;
310- return m ?. label ?? modelValue ;
319+ // Exact match
320+ const exact = prov . models . find ( ( m ) => m . value === modelValue ) ;
321+ if ( exact ) return exact . label ;
322+ // Strip date suffix (e.g. "-20250929") and try again
323+ const stripped = modelValue . replace ( / - \d { 8 } $ / , "" ) ;
324+ if ( stripped !== modelValue ) {
325+ const m = prov . models . find ( ( m ) => m . value === stripped ) ;
326+ if ( m ) return m . label ;
327+ }
328+ // Prefix match: modelValue starts with a known value
329+ const prefix = prov . models . find ( ( m ) => modelValue . startsWith ( m . value + "-" ) ) ;
330+ if ( prefix ) return prefix . label ;
331+ return modelValue ;
311332}
312333
313334/* ── Auto-assignment ─────────────────────────────── */
0 commit comments