@link-assistant/hive-mind 2.18.0 → 2.19.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/CHANGELOG.md +17 -0
- package/README.hi.md +2 -0
- package/README.md +2 -0
- package/README.ru.md +2 -0
- package/README.zh.md +2 -0
- package/package.json +3 -2
- package/src/agentic-cli-freshness.lib.mjs +118 -0
- package/src/agentic-cli-updater.lib.mjs +8 -4
- package/src/docker-sidecar.lib.mjs +17 -1
- package/src/hive-models.lib.mjs +181 -0
- package/src/hive-models.mjs +20 -0
- package/src/locales/en.lino +2 -1
- package/src/locales/hi.lino +2 -1
- package/src/locales/ru.lino +2 -1
- package/src/locales/zh.lino +2 -1
- package/src/model-catalogue-fetch.lib.mjs +333 -0
- package/src/model-catalogue-render.lib.mjs +191 -0
- package/src/model-catalogue-sources.lib.mjs +224 -0
- package/src/model-catalogue.lib.mjs +385 -0
- package/src/models/catalog.mjs +408 -0
- package/src/models/index.mjs +23 -362
- package/src/router-isolation.lib.mjs +103 -19
- package/src/router-routes.lib.mjs +250 -0
- package/src/router-sidecar.lib.mjs +33 -13
- package/src/solve.config.lib.mjs +5 -0
- package/src/solve.escalate.lib.mjs +3 -0
- package/src/solve.mjs +12 -0
- package/src/task.config.lib.mjs +5 -0
- package/src/task.mjs +12 -0
- package/src/telegram-bot.mjs +4 -1
- package/src/telegram-models-command.lib.mjs +157 -0
- package/src/telegram-ui-messages.lib.mjs +1 -1
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Bundled model catalogue for hive-mind.
|
|
5
|
+
*
|
|
6
|
+
* The alias maps, defaults and capability lists that ship with an installation,
|
|
7
|
+
* with no behaviour attached: every function that maps, validates or describes a
|
|
8
|
+
* model lives in ./index.mjs, which re-exports this module so the public surface
|
|
9
|
+
* is unchanged.
|
|
10
|
+
*
|
|
11
|
+
* Split out of ./index.mjs when the new-model additions of issue #2202 pushed it
|
|
12
|
+
* over the 1350-line early-warning threshold of
|
|
13
|
+
* scripts/check-file-line-limits.sh, following the extraction precedent of issue
|
|
14
|
+
* #2198. Keeping the catalogue in a leaf module also gives the live catalogue
|
|
15
|
+
* (issue #2202) one obvious thing to merge against: this file is the "bundled
|
|
16
|
+
* with the installation" half of that merge.
|
|
17
|
+
*
|
|
18
|
+
* @see https://github.com/link-assistant/hive-mind/issues/1473
|
|
19
|
+
* @see https://github.com/link-assistant/hive-mind/issues/2202
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { FORMAL_AI_MODEL_ALIAS, FORMAL_AI_PROVIDER_MODEL_ID } from '../formal-ai-model.lib.mjs';
|
|
23
|
+
|
|
24
|
+
const formalAiNativeModelAliases = {
|
|
25
|
+
[FORMAL_AI_MODEL_ALIAS]: FORMAL_AI_MODEL_ALIAS,
|
|
26
|
+
[FORMAL_AI_PROVIDER_MODEL_ID]: FORMAL_AI_MODEL_ALIAS,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const formalAiProviderModelAliases = {
|
|
30
|
+
[FORMAL_AI_MODEL_ALIAS]: FORMAL_AI_PROVIDER_MODEL_ID,
|
|
31
|
+
[FORMAL_AI_PROVIDER_MODEL_ID]: FORMAL_AI_PROVIDER_MODEL_ID,
|
|
32
|
+
};
|
|
33
|
+
// Claude models (Anthropic API)
|
|
34
|
+
// Updated for Opus 4.5/4.6/4.7/4.8/5, Sonnet 4.6/5, and Fable 5/5.1 / Mythos 5/5.1 support
|
|
35
|
+
// (Issue #1221, Issue #1238, Issue #1329, Issue #1433, Issue #1620, Issue #1832, Issue #1875, Issue #2003, Issue #2096, Issue #2202)
|
|
36
|
+
export const claudeModels = {
|
|
37
|
+
...formalAiNativeModelAliases,
|
|
38
|
+
sonnet: 'claude-sonnet-5', // Sonnet 5 (Issue #2003)
|
|
39
|
+
opus: 'claude-opus-5', // Opus 5 (default, Issue #2096)
|
|
40
|
+
haiku: 'claude-haiku-4-5-20251001', // Haiku 4.5
|
|
41
|
+
'haiku-3-5': 'claude-3-5-haiku-20241022', // Haiku 3.5
|
|
42
|
+
'haiku-3': 'claude-3-haiku-20240307', // Haiku 3
|
|
43
|
+
opusplan: 'opusplan', // Special mode: Opus for planning, Sonnet for execution (Issue #1223)
|
|
44
|
+
// Claude Fable 5.1 — the current Mythos-class flagship; Fable 5 moved to the
|
|
45
|
+
// legacy list when 5.1 shipped, so the bare `fable` alias follows the vendor
|
|
46
|
+
// (same precedent as `opus` → Opus 5 in Issue #2096) while `fable-5` stays
|
|
47
|
+
// pinned for anyone who asked for that exact generation (Issue #2202)
|
|
48
|
+
fable: 'claude-fable-5-1', // Fable 5.1 alias (Issue #2202)
|
|
49
|
+
'fable-5-1': 'claude-fable-5-1', // Fable 5.1 short alias (Issue #2202)
|
|
50
|
+
'claude-fable-5-1': 'claude-fable-5-1', // Fable 5.1 full ID (Issue #2202)
|
|
51
|
+
// Claude Fable 5 — Anthropic's most capable widely released (Mythos-class) model, GA 2026-06-09 (Issue #1875)
|
|
52
|
+
'fable-5': 'claude-fable-5', // Fable 5 short alias
|
|
53
|
+
'claude-fable-5': 'claude-fable-5', // Fable 5 full ID
|
|
54
|
+
// Claude Mythos 5.1 — Fable 5.1's capabilities without safety classifiers; invite only (Project Glasswing) (Issue #2202)
|
|
55
|
+
'mythos-5-1': 'claude-mythos-5-1', // Mythos 5.1 short alias (Issue #2202)
|
|
56
|
+
'claude-mythos-5-1': 'claude-mythos-5-1', // Mythos 5.1 full ID (Issue #2202)
|
|
57
|
+
// Claude Mythos 5 — shares Fable 5's capabilities without safety classifiers; limited availability (Project Glasswing) (Issue #1875)
|
|
58
|
+
'mythos-5': 'claude-mythos-5', // Mythos 5 short alias
|
|
59
|
+
'claude-mythos-5': 'claude-mythos-5', // Mythos 5 full ID
|
|
60
|
+
// Shorter version aliases (Issue #1221, Issue #1329 - PR comment feedback)
|
|
61
|
+
'sonnet-5': 'claude-sonnet-5', // Sonnet 5 short alias (Issue #2003)
|
|
62
|
+
'sonnet-4-6': 'claude-sonnet-4-6', // Sonnet 4.6 short alias (Issue #1329)
|
|
63
|
+
'opus-5': 'claude-opus-5', // Opus 5 short alias (Issue #2096)
|
|
64
|
+
'opus-4-8': 'claude-opus-4-8', // Opus 4.8 short alias (Issue #1832)
|
|
65
|
+
'opus-4-7': 'claude-opus-4-7', // Opus 4.7 short alias (backward compatibility)
|
|
66
|
+
'opus-4-6': 'claude-opus-4-6', // Opus 4.6 short alias (backward compatibility)
|
|
67
|
+
'opus-4-5': 'claude-opus-4-5-20251101', // Opus 4.5 short alias
|
|
68
|
+
'sonnet-4-5': 'claude-sonnet-4-5-20250929', // Sonnet 4.5 short alias (backward compatibility)
|
|
69
|
+
'haiku-4-5': 'claude-haiku-4-5-20251001', // Haiku 4.5 short alias
|
|
70
|
+
// Version aliases for backward compatibility (Issue #1221, Issue #1329, Issue #1620, Issue #1832, Issue #2096)
|
|
71
|
+
'claude-opus-5': 'claude-opus-5', // Opus 5 (Issue #2096)
|
|
72
|
+
'claude-opus-4-8': 'claude-opus-4-8', // Opus 4.8 (Issue #1832)
|
|
73
|
+
'claude-opus-4-7': 'claude-opus-4-7', // Opus 4.7 (backward compatibility)
|
|
74
|
+
'claude-sonnet-5': 'claude-sonnet-5', // Sonnet 5 (Issue #2003)
|
|
75
|
+
'claude-sonnet-4-6': 'claude-sonnet-4-6', // Sonnet 4.6 (Issue #1329)
|
|
76
|
+
'claude-opus-4-6': 'claude-opus-4-6', // Opus 4.6 (backward compatibility)
|
|
77
|
+
'claude-opus-4-5': 'claude-opus-4-5-20251101', // Opus 4.5
|
|
78
|
+
'claude-sonnet-4-5': 'claude-sonnet-4-5-20250929', // Sonnet 4.5 (backward compatibility)
|
|
79
|
+
'claude-haiku-4-5': 'claude-haiku-4-5-20251001', // Haiku 4.5
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// Agent models (OpenCode API and Kilo Gateway via agent CLI)
|
|
83
|
+
// Issue #1300: Updated free models to match agent PR #191
|
|
84
|
+
// Issue #1543: Added qwen3.6-plus-free (former default) and nemotron-3-super-free per agent PR #234
|
|
85
|
+
// Issue #1563: qwen3.6-plus-free free promotion ended (April 2026), nemotron-3-super-free is now default per agent PR #243
|
|
86
|
+
export const agentModels = {
|
|
87
|
+
...formalAiProviderModelAliases,
|
|
88
|
+
// OpenCode Zen free models (current)
|
|
89
|
+
grok: 'opencode/grok-code',
|
|
90
|
+
'grok-code': 'opencode/grok-code',
|
|
91
|
+
'grok-code-fast-1': 'opencode/grok-code',
|
|
92
|
+
'big-pickle': 'opencode/big-pickle',
|
|
93
|
+
'gpt-5-nano': 'opencode/gpt-5-nano',
|
|
94
|
+
'minimax-m2.5-free': 'opencode/minimax-m2.5-free', // Upgraded from M2.1 (Issue #1391)
|
|
95
|
+
'nemotron-3-super-free': 'opencode/nemotron-3-super-free', // Default: NVIDIA hybrid Mamba-Transformer (Issue #1563)
|
|
96
|
+
// Kilo Gateway free models (Issue #1282, updated in #1300)
|
|
97
|
+
// Short names for Kilo-exclusive models (Issue #1300)
|
|
98
|
+
'glm-5-free': 'kilo/glm-5-free', // Kilo-exclusive
|
|
99
|
+
'glm-4.5-air-free': 'kilo/glm-4.5-air-free', // Kilo-exclusive: agent-centric model
|
|
100
|
+
'deepseek-r1-free': 'kilo/deepseek-r1-free', // Kilo-exclusive: reasoning model
|
|
101
|
+
'giga-potato-free': 'kilo/giga-potato-free', // Kilo-exclusive
|
|
102
|
+
'trinity-large-preview': 'kilo/trinity-large-preview', // Kilo-exclusive
|
|
103
|
+
// Full names with kilo/ prefix
|
|
104
|
+
'kilo/glm-5-free': 'kilo/glm-5-free',
|
|
105
|
+
'kilo/glm-4.5-air-free': 'kilo/glm-4.5-air-free',
|
|
106
|
+
'kilo/minimax-m2.5-free': 'kilo/minimax-m2.5-free', // Also on OpenCode Zen
|
|
107
|
+
'kilo/deepseek-r1-free': 'kilo/deepseek-r1-free',
|
|
108
|
+
'kilo/giga-potato-free': 'kilo/giga-potato-free',
|
|
109
|
+
'kilo/trinity-large-preview': 'kilo/trinity-large-preview',
|
|
110
|
+
// Deprecated free models (kept for backward compatibility)
|
|
111
|
+
'qwen3.6-plus-free': 'opencode/qwen3.6-plus-free', // Deprecated: free promotion ended April 2026 (Issue #1563)
|
|
112
|
+
'kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated: not supported (Issue #1391)
|
|
113
|
+
'glm-4.7-free': 'opencode/glm-4.7-free', // Deprecated: no longer free
|
|
114
|
+
'minimax-m2.1-free': 'opencode/minimax-m2.1-free', // Deprecated: replaced by m2.5
|
|
115
|
+
'kilo/glm-4.7-free': 'kilo/glm-4.7-free', // Deprecated: replaced by glm-4.5-air-free
|
|
116
|
+
'kilo/kimi-k2.5-free': 'kilo/kimi-k2.5-free', // Deprecated: not recommended
|
|
117
|
+
'kilo/minimax-m2.1-free': 'kilo/minimax-m2.1-free', // Deprecated: replaced by m2.5
|
|
118
|
+
// Premium models
|
|
119
|
+
sonnet: 'anthropic/claude-3-5-sonnet',
|
|
120
|
+
haiku: 'anthropic/claude-3-5-haiku',
|
|
121
|
+
opus: 'anthropic/claude-3-opus',
|
|
122
|
+
'gemini-3-pro': 'google/gemini-3-pro',
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// OpenCode models (OpenCode API)
|
|
126
|
+
export const opencodeModels = {
|
|
127
|
+
...formalAiProviderModelAliases,
|
|
128
|
+
gpt4: 'openai/gpt-4',
|
|
129
|
+
gpt4o: 'openai/gpt-4o',
|
|
130
|
+
claude: 'anthropic/claude-3-5-sonnet',
|
|
131
|
+
sonnet: 'anthropic/claude-3-5-sonnet',
|
|
132
|
+
opus: 'anthropic/claude-3-opus',
|
|
133
|
+
gemini: 'google/gemini-pro',
|
|
134
|
+
grok: 'opencode/grok-code',
|
|
135
|
+
'grok-code': 'opencode/grok-code',
|
|
136
|
+
'grok-code-fast-1': 'opencode/grok-code',
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Codex models (OpenAI API)
|
|
140
|
+
export const codexModels = {
|
|
141
|
+
...formalAiNativeModelAliases,
|
|
142
|
+
// GPT-6 Astra — the first GPT-6 model, limited preview from 2026-09-03 (Issue #2202)
|
|
143
|
+
'gpt-6-astra': 'gpt-6-astra',
|
|
144
|
+
gpt5: 'gpt-5',
|
|
145
|
+
'gpt-5': 'gpt-5',
|
|
146
|
+
'gpt-5.5': 'gpt-5.5',
|
|
147
|
+
'gpt-5.5-mini': 'gpt-5.5-mini',
|
|
148
|
+
'gpt-5.5-nano': 'gpt-5.5-nano',
|
|
149
|
+
'gpt-5.6-sol': 'gpt-5.6-sol',
|
|
150
|
+
'gpt-5.6-terra': 'gpt-5.6-terra',
|
|
151
|
+
'gpt-5.6-luna': 'gpt-5.6-luna',
|
|
152
|
+
'gpt-5.6-cyber': 'gpt-5.6-cyber', // Daybreak-program security model (Issue #2202)
|
|
153
|
+
'gpt-5.4': 'gpt-5.4',
|
|
154
|
+
'gpt-5.4-mini': 'gpt-5.4-mini',
|
|
155
|
+
'gpt-5.4-nano': 'gpt-5.4-nano',
|
|
156
|
+
'gpt-5.2': 'gpt-5.2',
|
|
157
|
+
'gpt-5.2-codex': 'gpt-5.2-codex',
|
|
158
|
+
'gpt-5.3-codex': 'gpt-5.3-codex',
|
|
159
|
+
'gpt-5.3-codex-spark': 'gpt-5.3-codex-spark',
|
|
160
|
+
'gpt-5.1-codex-max': 'gpt-5.1-codex-max',
|
|
161
|
+
// Daybreak aliases already advertised by the installed Codex CLI (Issue #2202)
|
|
162
|
+
'gpt-daybreak-blue-latest': 'gpt-daybreak-blue-latest',
|
|
163
|
+
'gpt-daybreak-red-latest': 'gpt-daybreak-red-latest',
|
|
164
|
+
'openai.gpt-5.5': 'openai.gpt-5.5',
|
|
165
|
+
'openai.gpt-5.4': 'openai.gpt-5.4',
|
|
166
|
+
'openai.gpt-5.6-sol': 'openai.gpt-5.6-sol',
|
|
167
|
+
'openai.gpt-5.6-terra': 'openai.gpt-5.6-terra',
|
|
168
|
+
'openai.gpt-5.6-luna': 'openai.gpt-5.6-luna',
|
|
169
|
+
'codex-auto-review': 'codex-auto-review',
|
|
170
|
+
'o3-mini': 'o3-mini',
|
|
171
|
+
gpt4: 'gpt-4',
|
|
172
|
+
'gpt-4': 'gpt-4',
|
|
173
|
+
gpt4o: 'gpt-4o',
|
|
174
|
+
'gpt-4o': 'gpt-4o',
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
const CODEX_GENERATION_ALIAS_PATTERN = /^gpt-(\d+(?:\.\d+)?)-(sol|terra|luna)$/;
|
|
178
|
+
const OPENAI_MODEL_PREFIX_PATTERN = /^openai([/.])/;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Resolve sol/terra/luna to the newest generation that contains the complete
|
|
182
|
+
* alias family. A complete family prevents a partially rolled-out catalog from
|
|
183
|
+
* moving only some aliases to a newer generation.
|
|
184
|
+
*/
|
|
185
|
+
export const getLatestCodexGenerationAliases = (models = codexModels) => {
|
|
186
|
+
const generations = new Map();
|
|
187
|
+
|
|
188
|
+
for (const modelId of Object.values(models)) {
|
|
189
|
+
const bareModelId = modelId.replace(OPENAI_MODEL_PREFIX_PATTERN, '');
|
|
190
|
+
const match = bareModelId.match(CODEX_GENERATION_ALIAS_PATTERN);
|
|
191
|
+
if (!match) continue;
|
|
192
|
+
|
|
193
|
+
const [, generation, alias] = match;
|
|
194
|
+
if (!generations.has(generation)) generations.set(generation, {});
|
|
195
|
+
generations.get(generation)[alias] = bareModelId;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const latestCompleteGeneration = [...generations.entries()].filter(([, aliases]) => ['sol', 'terra', 'luna'].every(alias => aliases[alias])).sort(([left], [right]) => right.localeCompare(left, undefined, { numeric: true }))[0];
|
|
199
|
+
|
|
200
|
+
return latestCompleteGeneration?.[1] || {};
|
|
201
|
+
};
|
|
202
|
+
const getCodexModelVariants = () => {
|
|
203
|
+
const bareModels = [...new Set(Object.values(codexModels).map(modelId => modelId.replace(OPENAI_MODEL_PREFIX_PATTERN, '')))];
|
|
204
|
+
const aliases = getLatestCodexGenerationAliases();
|
|
205
|
+
const variants = { ...codexModels, ...aliases };
|
|
206
|
+
|
|
207
|
+
for (const [name, modelId] of Object.entries({ ...Object.fromEntries(bareModels.map(modelId => [modelId, modelId])), ...aliases })) {
|
|
208
|
+
variants[`openai/${name}`] = `openai/${modelId}`;
|
|
209
|
+
variants[`openai.${name}`] = `openai.${modelId}`;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return variants;
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export const CODEX_MODEL_VARIANTS = getCodexModelVariants();
|
|
216
|
+
|
|
217
|
+
// Qwen Code models
|
|
218
|
+
export const qwenModels = {
|
|
219
|
+
...formalAiNativeModelAliases,
|
|
220
|
+
qwen: 'qwen3-coder-plus',
|
|
221
|
+
'qwen-coder': 'qwen3-coder-plus',
|
|
222
|
+
qwen3: 'qwen3-coder-plus',
|
|
223
|
+
'qwen3-coder': 'qwen3-coder',
|
|
224
|
+
'qwen3-coder-plus': 'qwen3-coder-plus',
|
|
225
|
+
'qwen3-coder-flash': 'qwen3-coder-flash',
|
|
226
|
+
'qwen3.6-plus': 'qwen3.6-plus',
|
|
227
|
+
'qwen3.6-coder-plus': 'qwen3.6-coder-plus',
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
// Gemini models (Google Gemini CLI)
|
|
231
|
+
// Keep aliases aligned with the Gemini CLI model aliases documented in
|
|
232
|
+
// docs/cli/cli-reference.md: auto, pro, flash, and flash-lite.
|
|
233
|
+
export const geminiModels = {
|
|
234
|
+
...formalAiNativeModelAliases,
|
|
235
|
+
auto: 'auto',
|
|
236
|
+
gemini: 'gemini-2.5-flash',
|
|
237
|
+
flash: 'gemini-2.5-flash',
|
|
238
|
+
'2.5-flash': 'gemini-2.5-flash',
|
|
239
|
+
pro: 'gemini-2.5-pro',
|
|
240
|
+
'2.5-pro': 'gemini-2.5-pro',
|
|
241
|
+
lite: 'gemini-2.5-flash-lite',
|
|
242
|
+
'2.5-lite': 'gemini-2.5-flash-lite',
|
|
243
|
+
'flash-lite': 'gemini-2.5-flash-lite',
|
|
244
|
+
'3-flash': 'gemini-3-flash-preview',
|
|
245
|
+
'3-pro': 'gemini-3-pro-preview',
|
|
246
|
+
'gemini-flash': 'gemini-2.5-flash',
|
|
247
|
+
'gemini-pro': 'gemini-2.5-pro',
|
|
248
|
+
'gemini-2.5-flash': 'gemini-2.5-flash',
|
|
249
|
+
'gemini-2.5-pro': 'gemini-2.5-pro',
|
|
250
|
+
'gemini-2.5-flash-lite': 'gemini-2.5-flash-lite',
|
|
251
|
+
'gemini-3-flash-preview': 'gemini-3-flash-preview',
|
|
252
|
+
'gemini-3-pro-preview': 'gemini-3-pro-preview',
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// Default model for each tool (Issue #1473: centralized to avoid scattered hardcoded defaults)
|
|
256
|
+
export const defaultModels = {
|
|
257
|
+
claude: 'opus', // Issue #2033: Opus is the preferred default for Claude; sonnet remains available explicitly. Opus now maps to Opus 5 (Issue #2096)
|
|
258
|
+
agent: 'nemotron-3-super-free', // Issue #1563: changed from qwen3.6-plus-free (free promotion ended) per agent PR #243
|
|
259
|
+
opencode: 'grok-code-fast-1',
|
|
260
|
+
codex: 'gpt-5.6-sol', // Issue #2027: GPT-5.6 Sol is the released Codex flagship; runtime falls back to gpt-5.5 when Sol is not in the local catalog
|
|
261
|
+
qwen: 'qwen3-coder-plus',
|
|
262
|
+
gemini: 'flash',
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// Models that support 1M token context window via [1m] suffix (Issue #1221, Issue #1238, Issue #1329, Issue #1832)
|
|
266
|
+
// See: https://code.claude.com/docs/en/model-config
|
|
267
|
+
export const MODELS_SUPPORTING_1M_CONTEXT = [
|
|
268
|
+
'claude-fable-5-1', // Fable 5.1 — 1M context by default (Issue #2202)
|
|
269
|
+
'claude-mythos-5-1', // Mythos 5.1 — 1M context by default (Issue #2202)
|
|
270
|
+
'fable-5-1', // Fable 5.1 short alias (Issue #2202)
|
|
271
|
+
'mythos-5-1', // Mythos 5.1 short alias (Issue #2202)
|
|
272
|
+
'claude-fable-5', // Fable 5 — 1M context by default (Issue #1875)
|
|
273
|
+
'claude-mythos-5', // Mythos 5 — 1M context by default (Issue #1875)
|
|
274
|
+
'fable', // Fable alias — now resolves to Fable 5.1 (Issue #2202)
|
|
275
|
+
'fable-5', // Fable 5 short alias (Issue #1875)
|
|
276
|
+
'mythos-5', // Mythos 5 short alias (Issue #1875)
|
|
277
|
+
'claude-opus-4-8', // Opus 4.8 (Issue #1832)
|
|
278
|
+
'claude-opus-4-7', // Opus 4.7 (Issue #1620)
|
|
279
|
+
'claude-opus-4-6',
|
|
280
|
+
'claude-opus-4-5-20251101',
|
|
281
|
+
'claude-sonnet-5', // Sonnet 5 — 1M context (Issue #2003)
|
|
282
|
+
'claude-sonnet-4-6', // Sonnet 4.6 (Issue #1329)
|
|
283
|
+
'claude-sonnet-4-5-20250929',
|
|
284
|
+
'claude-sonnet-4-5',
|
|
285
|
+
'claude-opus-5', // Opus 5 — 1M context (Issue #2096)
|
|
286
|
+
'sonnet', // Now maps to Sonnet 5 (Issue #2003)
|
|
287
|
+
'sonnet-5', // Short alias (Issue #2003)
|
|
288
|
+
'sonnet-4-6', // Short alias (Issue #1329)
|
|
289
|
+
'opus', // Now maps to Opus 5 (Issue #2096)
|
|
290
|
+
'opus-5', // Short alias (Issue #2096)
|
|
291
|
+
'opus-4-8', // Short alias (Issue #1832)
|
|
292
|
+
'opus-4-7', // Short alias (Issue #1620)
|
|
293
|
+
'opus-4-6', // Short alias (Issue #1221 - PR comment feedback)
|
|
294
|
+
'opus-4-5', // Short alias (Issue #1238)
|
|
295
|
+
'sonnet-4-5', // Short alias (Issue #1221 - PR comment feedback)
|
|
296
|
+
];
|
|
297
|
+
|
|
298
|
+
// Free model to base model mapping for pricing lookup (Issue #1250, Issue #1473)
|
|
299
|
+
// Free models like "kimi-k2.5-free" should use pricing from base model "kimi-k2.5"
|
|
300
|
+
export const freeToBaseModelMap = {
|
|
301
|
+
'kimi-k2.5-free': 'kimi-k2.5',
|
|
302
|
+
'glm-4.7-free': 'glm-4.7',
|
|
303
|
+
'minimax-m2.1-free': 'minimax-m2.1',
|
|
304
|
+
'minimax-m2.5-free': 'minimax-m2.5',
|
|
305
|
+
'qwen3.6-plus-free': 'qwen3.6-plus', // Issue #1543
|
|
306
|
+
'nemotron-3-super-free': 'nemotron-3-super', // Issue #1543
|
|
307
|
+
'glm-5-free': 'glm-5',
|
|
308
|
+
'glm-4.5-air-free': 'glm-4.5-air',
|
|
309
|
+
'deepseek-r1-free': 'deepseek-r1',
|
|
310
|
+
'giga-potato-free': 'giga-potato',
|
|
311
|
+
'trinity-large-preview-free': 'trinity-large-preview',
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// ─── VALIDATION-EXTENDED MODEL MAPS ──────────────────────────────────────────
|
|
315
|
+
// These extend the base maps with full model ID identity entries for validation
|
|
316
|
+
// (e.g., 'claude-sonnet-4-5-20250929' → 'claude-sonnet-4-5-20250929')
|
|
317
|
+
// so that full model IDs are also accepted as valid inputs
|
|
318
|
+
export const CLAUDE_MODELS = {
|
|
319
|
+
...claudeModels,
|
|
320
|
+
'claude-fable-5-1': 'claude-fable-5-1', // Fable 5.1 full ID (Issue #2202)
|
|
321
|
+
'claude-mythos-5-1': 'claude-mythos-5-1', // Mythos 5.1 full ID (Issue #2202)
|
|
322
|
+
'claude-fable-5': 'claude-fable-5', // Fable 5 full ID (Issue #1875)
|
|
323
|
+
'claude-mythos-5': 'claude-mythos-5', // Mythos 5 full ID (Issue #1875)
|
|
324
|
+
'claude-opus-5': 'claude-opus-5', // Opus 5 full ID (Issue #2096)
|
|
325
|
+
'claude-opus-4-8': 'claude-opus-4-8', // Opus 4.8 full ID (Issue #1832)
|
|
326
|
+
'claude-opus-4-7': 'claude-opus-4-7', // Opus 4.7 full ID (Issue #1620)
|
|
327
|
+
'claude-sonnet-4-5-20250929': 'claude-sonnet-4-5-20250929',
|
|
328
|
+
'claude-opus-4-5-20251101': 'claude-opus-4-5-20251101',
|
|
329
|
+
'claude-haiku-4-5-20251001': 'claude-haiku-4-5-20251001',
|
|
330
|
+
'claude-3-5-haiku-20241022': 'claude-3-5-haiku-20241022',
|
|
331
|
+
'claude-3-haiku-20240307': 'claude-3-haiku-20240307',
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
export const OPENCODE_MODELS = {
|
|
335
|
+
...opencodeModels,
|
|
336
|
+
'openai/gpt-4': 'openai/gpt-4',
|
|
337
|
+
'openai/gpt-4o': 'openai/gpt-4o',
|
|
338
|
+
'anthropic/claude-3-5-sonnet': 'anthropic/claude-3-5-sonnet',
|
|
339
|
+
'anthropic/claude-3-opus': 'anthropic/claude-3-opus',
|
|
340
|
+
'google/gemini-pro': 'google/gemini-pro',
|
|
341
|
+
'opencode/grok-code': 'opencode/grok-code',
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
export const CODEX_MODELS = {
|
|
345
|
+
...CODEX_MODEL_VARIANTS,
|
|
346
|
+
'gpt-6-astra': 'gpt-6-astra', // Issue #2202
|
|
347
|
+
'gpt-5': 'gpt-5',
|
|
348
|
+
'gpt-5.5': 'gpt-5.5',
|
|
349
|
+
'gpt-5.5-mini': 'gpt-5.5-mini',
|
|
350
|
+
'gpt-5.5-nano': 'gpt-5.5-nano',
|
|
351
|
+
'gpt-5.6-sol': 'gpt-5.6-sol',
|
|
352
|
+
'gpt-5.6-terra': 'gpt-5.6-terra',
|
|
353
|
+
'gpt-5.6-luna': 'gpt-5.6-luna',
|
|
354
|
+
'gpt-5.6-cyber': 'gpt-5.6-cyber', // Issue #2202
|
|
355
|
+
'gpt-5.4': 'gpt-5.4',
|
|
356
|
+
'gpt-5.4-mini': 'gpt-5.4-mini',
|
|
357
|
+
'gpt-5.4-nano': 'gpt-5.4-nano',
|
|
358
|
+
'gpt-5.2': 'gpt-5.2',
|
|
359
|
+
'gpt-5.2-codex': 'gpt-5.2-codex',
|
|
360
|
+
'gpt-5.3-codex': 'gpt-5.3-codex',
|
|
361
|
+
'gpt-5.3-codex-spark': 'gpt-5.3-codex-spark',
|
|
362
|
+
'gpt-5.1-codex-max': 'gpt-5.1-codex-max',
|
|
363
|
+
'gpt-daybreak-blue-latest': 'gpt-daybreak-blue-latest', // Issue #2202
|
|
364
|
+
'gpt-daybreak-red-latest': 'gpt-daybreak-red-latest', // Issue #2202
|
|
365
|
+
'openai.gpt-5.5': 'openai.gpt-5.5',
|
|
366
|
+
'openai.gpt-5.4': 'openai.gpt-5.4',
|
|
367
|
+
'openai.gpt-5.6-sol': 'openai.gpt-5.6-sol',
|
|
368
|
+
'openai.gpt-5.6-terra': 'openai.gpt-5.6-terra',
|
|
369
|
+
'openai.gpt-5.6-luna': 'openai.gpt-5.6-luna',
|
|
370
|
+
'codex-auto-review': 'codex-auto-review',
|
|
371
|
+
'gpt-4': 'gpt-4',
|
|
372
|
+
'gpt-4o': 'gpt-4o',
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
export const QWEN_MODELS = {
|
|
376
|
+
...qwenModels,
|
|
377
|
+
'qwen3-coder': 'qwen3-coder',
|
|
378
|
+
'qwen3-coder-plus': 'qwen3-coder-plus',
|
|
379
|
+
'qwen3-coder-flash': 'qwen3-coder-flash',
|
|
380
|
+
'qwen3.6-plus': 'qwen3.6-plus',
|
|
381
|
+
'qwen3.6-coder-plus': 'qwen3.6-coder-plus',
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
export const GEMINI_MODELS = {
|
|
385
|
+
...geminiModels,
|
|
386
|
+
'gemini-2.5-flash': 'gemini-2.5-flash',
|
|
387
|
+
'gemini-2.5-pro': 'gemini-2.5-pro',
|
|
388
|
+
'gemini-2.5-flash-lite': 'gemini-2.5-flash-lite',
|
|
389
|
+
'gemini-3-flash-preview': 'gemini-3-flash-preview',
|
|
390
|
+
'gemini-3-pro-preview': 'gemini-3-pro-preview',
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
export const AGENT_MODELS = {
|
|
394
|
+
...agentModels,
|
|
395
|
+
'opencode/grok-code': 'opencode/grok-code',
|
|
396
|
+
'opencode/big-pickle': 'opencode/big-pickle',
|
|
397
|
+
'opencode/gpt-5-nano': 'opencode/gpt-5-nano',
|
|
398
|
+
'opencode/minimax-m2.5-free': 'opencode/minimax-m2.5-free',
|
|
399
|
+
'opencode/nemotron-3-super-free': 'opencode/nemotron-3-super-free', // Issue #1563: now default
|
|
400
|
+
'opencode/qwen3.6-plus-free': 'opencode/qwen3.6-plus-free', // Deprecated: free promotion ended (Issue #1563)
|
|
401
|
+
'opencode/kimi-k2.5-free': 'opencode/kimi-k2.5-free', // Deprecated
|
|
402
|
+
'opencode/glm-4.7-free': 'opencode/glm-4.7-free', // Deprecated
|
|
403
|
+
'opencode/minimax-m2.1-free': 'opencode/minimax-m2.1-free', // Deprecated
|
|
404
|
+
'anthropic/claude-3-5-sonnet': 'anthropic/claude-3-5-sonnet',
|
|
405
|
+
'anthropic/claude-3-5-haiku': 'anthropic/claude-3-5-haiku',
|
|
406
|
+
'anthropic/claude-3-opus': 'anthropic/claude-3-opus',
|
|
407
|
+
'google/gemini-3-pro': 'google/gemini-3-pro',
|
|
408
|
+
};
|