|
5 | 5 | * or override the entire mapping via GROK_MODEL_MAP env var (JSON string): |
6 | 6 | * GROK_MODEL_MAP='{"opus":"grok-4","sonnet":"grok-3","haiku":"grok-3-mini-fast"}' |
7 | 7 | */ |
8 | | -const DEFAULT_MODEL_MAP: Record<string, string> = { |
9 | | - 'claude-sonnet-4-20250514': 'grok-3-mini-fast', |
10 | | - 'claude-sonnet-4-5-20250929': 'grok-3-mini-fast', |
11 | | - 'claude-sonnet-4-6': 'grok-3-mini-fast', |
12 | | - 'claude-opus-4-20250514': 'grok-4.20-reasoning', |
13 | | - 'claude-opus-4-1-20250805': 'grok-4.20-reasoning', |
14 | | - 'claude-opus-4-5-20251101': 'grok-4.20-reasoning', |
15 | | - 'claude-opus-4-6': 'grok-4.20-reasoning', |
16 | | - 'claude-haiku-4-5-20251001': 'grok-3-mini-fast', |
17 | | - 'claude-3-5-haiku-20241022': 'grok-3-mini-fast', |
18 | | - 'claude-3-7-sonnet-20250219': 'grok-3-mini-fast', |
19 | | - 'claude-3-5-sonnet-20241022': 'grok-3-mini-fast', |
| 8 | +function getDefaultModelMap(): Record<string, string> { |
| 9 | + return { |
| 10 | + 'claude-sonnet-4-20250514': 'grok-3-mini-fast', |
| 11 | + 'claude-sonnet-4-5-20250929': 'grok-3-mini-fast', |
| 12 | + 'claude-sonnet-4-6': 'grok-3-mini-fast', |
| 13 | + 'claude-opus-4-20250514': 'grok-4.20-reasoning', |
| 14 | + 'claude-opus-4-1-20250805': 'grok-4.20-reasoning', |
| 15 | + 'claude-opus-4-5-20251101': 'grok-4.20-reasoning', |
| 16 | + 'claude-opus-4-6': 'grok-4.20-reasoning', |
| 17 | + 'claude-haiku-4-5-20251001': 'grok-3-mini-fast', |
| 18 | + 'claude-3-5-haiku-20241022': 'grok-3-mini-fast', |
| 19 | + 'claude-3-7-sonnet-20250219': 'grok-3-mini-fast', |
| 20 | + 'claude-3-5-sonnet-20241022': 'grok-3-mini-fast', |
| 21 | + } |
20 | 22 | } |
21 | 23 |
|
22 | 24 | /** |
23 | 25 | * Family-level mapping defaults (used by GROK_MODEL_MAP). |
24 | 26 | */ |
25 | | -const DEFAULT_FAMILY_MAP: Record<string, string> = { |
26 | | - opus: 'grok-4.20-reasoning', |
27 | | - sonnet: 'grok-3-mini-fast', |
28 | | - haiku: 'grok-3-mini-fast', |
| 27 | +function getDefaultFamilyMap(): Record<string, string> { |
| 28 | + return { |
| 29 | + opus: 'grok-4.20-reasoning', |
| 30 | + sonnet: 'grok-3-mini-fast', |
| 31 | + haiku: 'grok-3-mini-fast', |
| 32 | + } |
29 | 33 | } |
30 | 34 |
|
31 | 35 | function getModelFamily(model: string): 'haiku' | 'sonnet' | 'opus' | null { |
@@ -93,13 +97,13 @@ export function resolveGrokModel(anthropicModel: string): string { |
93 | 97 | } |
94 | 98 |
|
95 | 99 | // 5. Exact model name lookup |
96 | | - if (DEFAULT_MODEL_MAP[cleanModel]) { |
97 | | - return DEFAULT_MODEL_MAP[cleanModel] |
| 100 | + if (getDefaultModelMap()[cleanModel]) { |
| 101 | + return getDefaultModelMap()[cleanModel] |
98 | 102 | } |
99 | 103 |
|
100 | 104 | // 6. Family-level default |
101 | | - if (family && DEFAULT_FAMILY_MAP[family]) { |
102 | | - return DEFAULT_FAMILY_MAP[family] |
| 105 | + if (family && getDefaultFamilyMap()[family]) { |
| 106 | + return getDefaultFamilyMap()[family] |
103 | 107 | } |
104 | 108 |
|
105 | 109 | // 7. Pass through |
|
0 commit comments