modelmix 5.2.2 → 5.3.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/README.md CHANGED
@@ -160,7 +160,9 @@ ModelMix provides convenient shorthand methods for quickly accessing different A
160
160
  | Method | Provider | Model | Input / 1M | Output / 1M |
161
161
  | --- | --- | --- | ---: | ---: |
162
162
  | `gpt6astra()` | OpenAI | gpt-6-astra | [\$10.00][1] | [\$50.00][1] |
163
- | `gpt56sol()` | OpenAI | gpt-5.6-sol | [\$5.00][1] | [\$30.00][1] |
163
+ | `gpt6sol()` | OpenAI | gpt-6-sol | [\$2.00][1] | [\$10.00][1] |
164
+ | `gpt6luna()` | OpenAI | gpt-6-luna | [\$0.10][1] | [\$0.50][1] |
165
+ | `gpt56sol()` | OpenAI | gpt-5.6-sol | [\$4.00][1] | [\$20.00][1] |
164
166
  | `gpt56terra()` | OpenAI | gpt-5.6-terra | [\$2.00][1] | [\$12.00][1] |
165
167
  | `gpt56luna()` | OpenAI | gpt-5.6-luna | [\$0.20][1] | [\$1.20][1] |
166
168
  | `gpt55()` | OpenAI | gpt-5.5 | [\$5.00][1] | [\$30.00][1] |
@@ -179,6 +181,7 @@ ModelMix provides convenient shorthand methods for quickly accessing different A
179
181
  | `gptOss()` | Multi-provider | gpt-oss-120B | [\$0.15][7] | [\$0.60][7] |
180
182
  | `fable51()` | Anthropic | claude-fable-5-1 | [\$10.00][2] | [\$50.00][2] |
181
183
  | `fable5()` | Anthropic | claude-fable-5 | [\$10.00][2] | [\$50.00][2] |
184
+ | `opus55()` | Anthropic | claude-opus-5-5 | [\$5.00][2] | [\$25.00][2] |
182
185
  | `opus5()` | Anthropic | claude-opus-5 | [\$5.00][2] | [\$25.00][2] |
183
186
  | `opus48()` | Anthropic | claude-opus-4-8 | [\$5.00][2] | [\$25.00][2] |
184
187
  | `opus47()` | Anthropic | claude-opus-4-7 | [\$5.00][2] | [\$25.00][2] |
@@ -219,6 +222,7 @@ ModelMix provides convenient shorthand methods for quickly accessing different A
219
222
  | `GLM52()` | Together | zai-org/GLM-5.2 | [\$1.40][7] | [\$4.40][7] |
220
223
  | `minimaxM3()` | MiniMax | MiniMax-M3 | [\$0.30][9] | [\$1.20][9] |
221
224
  | `minimaxM27()` | MiniMax | MiniMax-M2.7 | [\$0.30][9] | [\$1.20][9] |
225
+ | `mimo26pro()` | MiMo | mimo-v2.6-pro | — | — |
222
226
  | `sonar()` | Perplexity | sonar | [\$1.00][4] | [\$1.00][4] |
223
227
  | `sonarPro()` | Perplexity | sonar-pro | [\$3.00][4] | [\$15.00][4] |
224
228
  | `hermes470b()` | OpenRouter | nousresearch/hermes-4-70b | [\$0.13][13] | [\$0.40][13] |
@@ -318,6 +322,7 @@ ModelMix.new().effort(-1).minimaxM3().addText('...').message();
318
322
 
319
323
  - **Gemini:** Gemini 3+ uses bands 0–24 / 25–49 / 50–74 / 75–100. Gemini 3.8 Flash and 3.7 Flash clamp these bands to `low` / `low` / `medium` / `high`; `-1` leaves their native `medium` default unchanged. Gemini 2.5 maps 0–100 to `thinkingBudget`.
320
324
  - **GPT-6 Astra:** 0–39 maps to `low`, 40–59 to `medium`, 60–79 to `high`, 80–99 to `xhigh`, and 100 to `max`. [Model details](https://developers.openai.com/api/docs/models/gpt-6-astra). Cache reads cost $1.00 and cache writes $12.50 per 1M tokens; requests over 272K input tokens apply 2× input/cache and 1.5× output rates.
325
+ - **GPT-6 Sol and GPT-6 Luna:** `100` maps to `max`; the remaining bands match OpenAI, so 0–19 is `none` and 80–99 is `xhigh`. [Sol model details](https://developers.openai.com/api/docs/models/gpt-6-sol), [Luna model details](https://developers.openai.com/api/docs/models/gpt-6-luna). Cache reads cost $0.20 and $0.01 and cache writes $2.50 and $0.125 per 1M tokens; requests over 272K input tokens apply the same 2× input/cache and 1.5× output rates as Astra.
321
326
  - **GPT-5.6:** `100` maps to `max`; 80–99 remains `xhigh`.
322
327
  - **Qwen 3.8 27B and Flash:** 0–39 / 40–79 / 80–100 map to `low` / `medium` / `xhigh`; `-1` leaves the native `xhigh` default unchanged. Qwen 3.8 Flash is the managed production version based on the open-weight Flash-Next architecture.
323
328
  - **GLM 5.3 and GLM 5.3 Flash:** reasoning is mandatory; 0–39 / 40–79 / 80–100 map to `low` / `high` / `max`; `-1` leaves the native `max` default unchanged.
@@ -829,9 +834,9 @@ await ask('Summarize support ticket 456.');
829
834
 
830
835
  The contents of `support.md` and the cache key stay the same between calls; only the final question changes. The first request may report `cacheWrite > 0`, while later requests confirm reuse with `cached > 0`. For GPT-5.6, the stable prefix must contain at least 1,024 tokens. Keep all variable content after the breakpoint, and change `prompt_cache_key` when the stable instructions change.
831
836
 
832
- ### GPT-5.6 prompt caching
837
+ ### GPT-5.6 and GPT-6 prompt caching
833
838
 
834
- GPT-5.6 supports implicit or explicit caching through `prompt_cache_options`. Put the explicit breakpoint at the end of the stable prefix; the provider only caches prompts with at least 1,024 tokens.
839
+ GPT-5.6 and the GPT-6 models (Astra, Sol, and Luna) support implicit or explicit caching through `prompt_cache_options`. Put the explicit breakpoint at the end of the stable prefix; the provider only caches prompts with at least 1,024 tokens.
835
840
 
836
841
  ```javascript
837
842
  const model = ModelMix.new()
@@ -852,16 +857,18 @@ console.log(result.tokens.cached, result.tokens.cacheWrite, result.tokens.cost);
852
857
 
853
858
  The provider-neutral `cache: { breakpoint: true }` option is accepted by `addTextFromFile()`, `addImage()`, `addImageFromUrl()`, and `addImageFromBuffer()`. Responses-native `input_text`, `input_image`, and `input_file` blocks preserve the native `prompt_cache_breakpoint` field when supplied directly through `options.messages`.
854
859
 
855
- GPT-5.6 uses `prompt_cache_options.ttl`; `prompt_cache_retention` remains available for earlier OpenAI models. ModelMix rejects the incompatible control instead of silently dropping it. For GPT-5.6 requests over 272K input tokens, the cost calculation applies the documented 2× input and 1.5× output multipliers to the complete request, including cache reads and writes.
860
+ GPT-5.6 and GPT-6 use `prompt_cache_options.ttl`; `prompt_cache_retention` remains available for earlier OpenAI models. ModelMix rejects the incompatible control instead of silently dropping it. For GPT-5.6 requests over 272K input tokens, the cost calculation applies the documented 2× input and 1.5× output multipliers to the complete request, including cache reads and writes.
856
861
 
857
862
  GPT-5.6 prices per 1M tokens:
858
863
 
859
864
  | Model | Input | Cached input | Cache write | Output |
860
865
  | --- | ---: | ---: | ---: | ---: |
861
- | `gpt-5.6-sol` | $5.00 | $0.50 | $6.25 | $30.00 |
866
+ | `gpt-5.6-sol` | $4.00 | $0.40 | $5.00 | $20.00 |
862
867
  | `gpt-5.6-terra` | $2.00 | $0.20 | $2.50 | $12.00 |
863
868
  | `gpt-5.6-luna` | $0.20 | $0.02 | $0.25 | $1.20 |
864
869
 
870
+ GPT-5.6 Sol's $4.00 input and $20.00 output rates are promotional and available at least through November 21, 2026.
871
+
865
872
  ### Cross-provider cache fallback
866
873
 
867
874
  Neutral breakpoints are translated at the last moment by each provider adapter. Native request policies remain scoped to their model, so they cannot leak into a fallback request:
@@ -883,7 +890,7 @@ const model = ModelMix.new()
883
890
  .addText('Answer this variable request.');
884
891
  ```
885
892
 
886
- GPT-5.6 receives `prompt_cache_breakpoint`; Anthropic receives `cache_control`; older OpenAI models and providers without an equivalent omit the marker. When a neutral explicit breakpoint is present for Anthropic, its model-scoped `cache_control` becomes that block's policy instead of adding an automatic breakpoint after the variable suffix.
893
+ GPT-5.6 and GPT-6 receive `prompt_cache_breakpoint`; Anthropic receives `cache_control`; older OpenAI models and providers without an equivalent omit the marker. When a neutral explicit breakpoint is present for Anthropic, its model-scoped `cache_control` becomes that block's policy instead of adding an automatic breakpoint after the variable suffix.
887
894
 
888
895
  ## 🔧 Model Context Protocol (MCP) Integration
889
896
 
@@ -1053,7 +1060,7 @@ Pass `mix` to `benchmark()` to select providers for the criteria model, particip
1053
1060
 
1054
1061
  JSON parsing accepts a Markdown code block or a lone closing triple-backtick delimiter after valid JSON. Other extra content, malformed JSON, and invalid evaluation scores remain errors.
1055
1062
 
1056
- Run `node demo/benchmark.js` for a complete five-model comparison. It allows up to 32,768 output tokens per call, prints intermediate progress, a final ranking and error details, then saves each response as Markdown together with the full JSON report under `demo/results/`.
1063
+ Run `node demo/benchmark.js` for a complete model comparison. It allows up to 32,768 output tokens per call, prints intermediate progress, a final ranking and error details, then saves each response as Markdown together with the full JSON report under `demo/results/`.
1057
1064
 
1058
1065
  ### Recursive Language Model plugin
1059
1066
 
package/demo/benchmark.js CHANGED
@@ -11,16 +11,13 @@ const { benchmark } = benchmarkPlugin;
11
11
  const task = await readFile(process.argv[2] || new URL('./prompts/story.txt', import.meta.url), 'utf8');
12
12
 
13
13
  const models = [
14
- // 'opus50@20',
15
- 'gpt6astra@0',
16
- 'gpt6astra@20',
14
+ 'gpt6sol@40',
15
+ 'gpt6luna@40',
17
16
  'gpt56sol@40',
18
- // 'gemini38flash@20',
19
- // 'grok46@20',
20
- 'deepseekV41Flash@60'
17
+ 'gpt56luna@40'
21
18
  ];
22
19
 
23
- console.log(`Running benchmark: ${models.length} models, 26 sequential model calls.`);
20
+ console.log(`Running benchmark: ${models.length} models, 17 sequential model calls.`);
24
21
 
25
22
  const report = await ModelMix.new({
26
23
  config: { debug: 1 },
@@ -0,0 +1,516 @@
1
+ {
2
+ "name": "demo",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "demo",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "dotenv": "^17.2.3",
13
+ "isolated-vm": "^6.0.2",
14
+ "lemonlog": "^1.1.4",
15
+ "pathmix": "^1.0.0"
16
+ }
17
+ },
18
+ ".api/apis/pplx": {
19
+ "name": "@api/pplx",
20
+ "version": "0.1.0",
21
+ "extraneous": true,
22
+ "dependencies": {
23
+ "api": "^6.1.1",
24
+ "json-schema-to-ts": "^2.8.0-beta.0",
25
+ "oas": "^20.10.3"
26
+ }
27
+ },
28
+ "node_modules/base64-js": {
29
+ "version": "1.5.1",
30
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
31
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
32
+ "funding": [
33
+ {
34
+ "type": "github",
35
+ "url": "https://github.com/sponsors/feross"
36
+ },
37
+ {
38
+ "type": "patreon",
39
+ "url": "https://www.patreon.com/feross"
40
+ },
41
+ {
42
+ "type": "consulting",
43
+ "url": "https://feross.org/support"
44
+ }
45
+ ],
46
+ "license": "MIT"
47
+ },
48
+ "node_modules/bl": {
49
+ "version": "4.1.0",
50
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
51
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
52
+ "license": "MIT",
53
+ "dependencies": {
54
+ "buffer": "^5.5.0",
55
+ "inherits": "^2.0.4",
56
+ "readable-stream": "^3.4.0"
57
+ }
58
+ },
59
+ "node_modules/buffer": {
60
+ "version": "5.7.1",
61
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
62
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
63
+ "funding": [
64
+ {
65
+ "type": "github",
66
+ "url": "https://github.com/sponsors/feross"
67
+ },
68
+ {
69
+ "type": "patreon",
70
+ "url": "https://www.patreon.com/feross"
71
+ },
72
+ {
73
+ "type": "consulting",
74
+ "url": "https://feross.org/support"
75
+ }
76
+ ],
77
+ "license": "MIT",
78
+ "dependencies": {
79
+ "base64-js": "^1.3.1",
80
+ "ieee754": "^1.1.13"
81
+ }
82
+ },
83
+ "node_modules/chownr": {
84
+ "version": "1.1.4",
85
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
86
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
87
+ "license": "ISC"
88
+ },
89
+ "node_modules/debug": {
90
+ "version": "4.4.1",
91
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
92
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
93
+ "license": "MIT",
94
+ "dependencies": {
95
+ "ms": "^2.1.3"
96
+ },
97
+ "engines": {
98
+ "node": ">=6.0"
99
+ },
100
+ "peerDependenciesMeta": {
101
+ "supports-color": {
102
+ "optional": true
103
+ }
104
+ }
105
+ },
106
+ "node_modules/decompress-response": {
107
+ "version": "6.0.0",
108
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
109
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
110
+ "license": "MIT",
111
+ "dependencies": {
112
+ "mimic-response": "^3.1.0"
113
+ },
114
+ "engines": {
115
+ "node": ">=10"
116
+ },
117
+ "funding": {
118
+ "url": "https://github.com/sponsors/sindresorhus"
119
+ }
120
+ },
121
+ "node_modules/deep-extend": {
122
+ "version": "0.6.0",
123
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
124
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
125
+ "license": "MIT",
126
+ "engines": {
127
+ "node": ">=4.0.0"
128
+ }
129
+ },
130
+ "node_modules/detect-libc": {
131
+ "version": "2.1.2",
132
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
133
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
134
+ "license": "Apache-2.0",
135
+ "engines": {
136
+ "node": ">=8"
137
+ }
138
+ },
139
+ "node_modules/dotenv": {
140
+ "version": "17.2.3",
141
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
142
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
143
+ "license": "BSD-2-Clause",
144
+ "engines": {
145
+ "node": ">=12"
146
+ },
147
+ "funding": {
148
+ "url": "https://dotenvx.com"
149
+ }
150
+ },
151
+ "node_modules/end-of-stream": {
152
+ "version": "1.4.5",
153
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
154
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
155
+ "license": "MIT",
156
+ "dependencies": {
157
+ "once": "^1.4.0"
158
+ }
159
+ },
160
+ "node_modules/expand-template": {
161
+ "version": "2.0.3",
162
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
163
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
164
+ "license": "(MIT OR WTFPL)",
165
+ "engines": {
166
+ "node": ">=6"
167
+ }
168
+ },
169
+ "node_modules/fs-constants": {
170
+ "version": "1.0.0",
171
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
172
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
173
+ "license": "MIT"
174
+ },
175
+ "node_modules/github-from-package": {
176
+ "version": "0.0.0",
177
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
178
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
179
+ "license": "MIT"
180
+ },
181
+ "node_modules/ieee754": {
182
+ "version": "1.2.1",
183
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
184
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
185
+ "funding": [
186
+ {
187
+ "type": "github",
188
+ "url": "https://github.com/sponsors/feross"
189
+ },
190
+ {
191
+ "type": "patreon",
192
+ "url": "https://www.patreon.com/feross"
193
+ },
194
+ {
195
+ "type": "consulting",
196
+ "url": "https://feross.org/support"
197
+ }
198
+ ],
199
+ "license": "BSD-3-Clause"
200
+ },
201
+ "node_modules/inherits": {
202
+ "version": "2.0.4",
203
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
204
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
205
+ "license": "ISC"
206
+ },
207
+ "node_modules/ini": {
208
+ "version": "1.3.8",
209
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
210
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
211
+ "license": "ISC"
212
+ },
213
+ "node_modules/isolated-vm": {
214
+ "version": "6.0.2",
215
+ "resolved": "https://registry.npmjs.org/isolated-vm/-/isolated-vm-6.0.2.tgz",
216
+ "integrity": "sha512-Qw6AJuagG/VJuh2AIcSWmQPsAArti/L+lKhjXU+lyhYkbt3J57XZr+ZjgfTnOr4NJcY1r3f8f0eePS7MRGp+pg==",
217
+ "hasInstallScript": true,
218
+ "license": "ISC",
219
+ "dependencies": {
220
+ "prebuild-install": "^7.1.3"
221
+ },
222
+ "engines": {
223
+ "node": ">=22.0.0"
224
+ }
225
+ },
226
+ "node_modules/lemonlog": {
227
+ "version": "1.1.4",
228
+ "resolved": "https://registry.npmjs.org/lemonlog/-/lemonlog-1.1.4.tgz",
229
+ "integrity": "sha512-NWcXK7Nl+K5E0xxzcux9ktR9hiRSSjK0xpFbuAm/qy/wg5TuIYGfg+lIDWthVvFscrSsYCPLyPk/AvxY+w7n6A==",
230
+ "license": "MIT",
231
+ "dependencies": {
232
+ "debug": "^4.1.1"
233
+ }
234
+ },
235
+ "node_modules/mimic-response": {
236
+ "version": "3.1.0",
237
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
238
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
239
+ "license": "MIT",
240
+ "engines": {
241
+ "node": ">=10"
242
+ },
243
+ "funding": {
244
+ "url": "https://github.com/sponsors/sindresorhus"
245
+ }
246
+ },
247
+ "node_modules/minimist": {
248
+ "version": "1.2.8",
249
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
250
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
251
+ "license": "MIT",
252
+ "funding": {
253
+ "url": "https://github.com/sponsors/ljharb"
254
+ }
255
+ },
256
+ "node_modules/mkdirp-classic": {
257
+ "version": "0.5.3",
258
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
259
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
260
+ "license": "MIT"
261
+ },
262
+ "node_modules/ms": {
263
+ "version": "2.1.3",
264
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
265
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
266
+ },
267
+ "node_modules/napi-build-utils": {
268
+ "version": "2.0.0",
269
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
270
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
271
+ "license": "MIT"
272
+ },
273
+ "node_modules/node-abi": {
274
+ "version": "3.85.0",
275
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz",
276
+ "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==",
277
+ "license": "MIT",
278
+ "dependencies": {
279
+ "semver": "^7.3.5"
280
+ },
281
+ "engines": {
282
+ "node": ">=10"
283
+ }
284
+ },
285
+ "node_modules/once": {
286
+ "version": "1.4.0",
287
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
288
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
289
+ "license": "ISC",
290
+ "dependencies": {
291
+ "wrappy": "1"
292
+ }
293
+ },
294
+ "node_modules/pathmix": {
295
+ "version": "1.0.0",
296
+ "resolved": "https://registry.npmjs.org/pathmix/-/pathmix-1.0.0.tgz",
297
+ "integrity": "sha512-oLbvoOKuyV6TjkKLEYqH5O+q+d+qZwtRNzMrBI93IsCYN0liDw8W8aZq3BPvIaF4jJU+igeO/1p6lCwFfy8E5Q==",
298
+ "license": "ISC",
299
+ "engines": {
300
+ "node": ">=16.0.0"
301
+ }
302
+ },
303
+ "node_modules/prebuild-install": {
304
+ "version": "7.1.3",
305
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
306
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
307
+ "license": "MIT",
308
+ "dependencies": {
309
+ "detect-libc": "^2.0.0",
310
+ "expand-template": "^2.0.3",
311
+ "github-from-package": "0.0.0",
312
+ "minimist": "^1.2.3",
313
+ "mkdirp-classic": "^0.5.3",
314
+ "napi-build-utils": "^2.0.0",
315
+ "node-abi": "^3.3.0",
316
+ "pump": "^3.0.0",
317
+ "rc": "^1.2.7",
318
+ "simple-get": "^4.0.0",
319
+ "tar-fs": "^2.0.0",
320
+ "tunnel-agent": "^0.6.0"
321
+ },
322
+ "bin": {
323
+ "prebuild-install": "bin.js"
324
+ },
325
+ "engines": {
326
+ "node": ">=10"
327
+ }
328
+ },
329
+ "node_modules/pump": {
330
+ "version": "3.0.3",
331
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
332
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
333
+ "license": "MIT",
334
+ "dependencies": {
335
+ "end-of-stream": "^1.1.0",
336
+ "once": "^1.3.1"
337
+ }
338
+ },
339
+ "node_modules/rc": {
340
+ "version": "1.2.8",
341
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
342
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
343
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
344
+ "dependencies": {
345
+ "deep-extend": "^0.6.0",
346
+ "ini": "~1.3.0",
347
+ "minimist": "^1.2.0",
348
+ "strip-json-comments": "~2.0.1"
349
+ },
350
+ "bin": {
351
+ "rc": "cli.js"
352
+ }
353
+ },
354
+ "node_modules/readable-stream": {
355
+ "version": "3.6.2",
356
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
357
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
358
+ "license": "MIT",
359
+ "dependencies": {
360
+ "inherits": "^2.0.3",
361
+ "string_decoder": "^1.1.1",
362
+ "util-deprecate": "^1.0.1"
363
+ },
364
+ "engines": {
365
+ "node": ">= 6"
366
+ }
367
+ },
368
+ "node_modules/safe-buffer": {
369
+ "version": "5.2.1",
370
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
371
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
372
+ "funding": [
373
+ {
374
+ "type": "github",
375
+ "url": "https://github.com/sponsors/feross"
376
+ },
377
+ {
378
+ "type": "patreon",
379
+ "url": "https://www.patreon.com/feross"
380
+ },
381
+ {
382
+ "type": "consulting",
383
+ "url": "https://feross.org/support"
384
+ }
385
+ ],
386
+ "license": "MIT"
387
+ },
388
+ "node_modules/semver": {
389
+ "version": "7.7.3",
390
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
391
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
392
+ "license": "ISC",
393
+ "bin": {
394
+ "semver": "bin/semver.js"
395
+ },
396
+ "engines": {
397
+ "node": ">=10"
398
+ }
399
+ },
400
+ "node_modules/simple-concat": {
401
+ "version": "1.0.1",
402
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
403
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
404
+ "funding": [
405
+ {
406
+ "type": "github",
407
+ "url": "https://github.com/sponsors/feross"
408
+ },
409
+ {
410
+ "type": "patreon",
411
+ "url": "https://www.patreon.com/feross"
412
+ },
413
+ {
414
+ "type": "consulting",
415
+ "url": "https://feross.org/support"
416
+ }
417
+ ],
418
+ "license": "MIT"
419
+ },
420
+ "node_modules/simple-get": {
421
+ "version": "4.0.1",
422
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
423
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
424
+ "funding": [
425
+ {
426
+ "type": "github",
427
+ "url": "https://github.com/sponsors/feross"
428
+ },
429
+ {
430
+ "type": "patreon",
431
+ "url": "https://www.patreon.com/feross"
432
+ },
433
+ {
434
+ "type": "consulting",
435
+ "url": "https://feross.org/support"
436
+ }
437
+ ],
438
+ "license": "MIT",
439
+ "dependencies": {
440
+ "decompress-response": "^6.0.0",
441
+ "once": "^1.3.1",
442
+ "simple-concat": "^1.0.0"
443
+ }
444
+ },
445
+ "node_modules/string_decoder": {
446
+ "version": "1.3.0",
447
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
448
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
449
+ "license": "MIT",
450
+ "dependencies": {
451
+ "safe-buffer": "~5.2.0"
452
+ }
453
+ },
454
+ "node_modules/strip-json-comments": {
455
+ "version": "2.0.1",
456
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
457
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
458
+ "license": "MIT",
459
+ "engines": {
460
+ "node": ">=0.10.0"
461
+ }
462
+ },
463
+ "node_modules/tar-fs": {
464
+ "version": "2.1.4",
465
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
466
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
467
+ "license": "MIT",
468
+ "dependencies": {
469
+ "chownr": "^1.1.1",
470
+ "mkdirp-classic": "^0.5.2",
471
+ "pump": "^3.0.0",
472
+ "tar-stream": "^2.1.4"
473
+ }
474
+ },
475
+ "node_modules/tar-stream": {
476
+ "version": "2.2.0",
477
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
478
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
479
+ "license": "MIT",
480
+ "dependencies": {
481
+ "bl": "^4.0.3",
482
+ "end-of-stream": "^1.4.1",
483
+ "fs-constants": "^1.0.0",
484
+ "inherits": "^2.0.3",
485
+ "readable-stream": "^3.1.1"
486
+ },
487
+ "engines": {
488
+ "node": ">=6"
489
+ }
490
+ },
491
+ "node_modules/tunnel-agent": {
492
+ "version": "0.6.0",
493
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
494
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
495
+ "license": "Apache-2.0",
496
+ "dependencies": {
497
+ "safe-buffer": "^5.0.1"
498
+ },
499
+ "engines": {
500
+ "node": "*"
501
+ }
502
+ },
503
+ "node_modules/util-deprecate": {
504
+ "version": "1.0.2",
505
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
506
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
507
+ "license": "MIT"
508
+ },
509
+ "node_modules/wrappy": {
510
+ "version": "1.0.2",
511
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
512
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
513
+ "license": "ISC"
514
+ }
515
+ }
516
+ }
package/effort.js CHANGED
@@ -43,6 +43,8 @@ const GLM53_BANDS = [
43
43
  /** Exact model → supported OpenAI reasoning_effort values */
44
44
  const OPENAI_MODEL_LEVELS = {
45
45
  'gpt-6-astra': ['low', 'medium', 'high', 'xhigh', 'max'],
46
+ 'gpt-6-sol': ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
47
+ 'gpt-6-luna': ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
46
48
  'gpt-5.6-sol': ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
47
49
  'gpt-5.6-terra': ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
48
50
  'gpt-5.6-luna': ['none', 'low', 'medium', 'high', 'xhigh', 'max'],
package/index.d.ts CHANGED
@@ -457,6 +457,8 @@ export declare class ModelMix {
457
457
  gpt55(args?: ModelAttachArgs): this;
458
458
  gpt55pro(args?: ModelAttachArgs): this;
459
459
  gpt6astra(args?: ModelAttachArgs): this;
460
+ gpt6sol(args?: ModelAttachArgs): this;
461
+ gpt6luna(args?: ModelAttachArgs): this;
460
462
  gpt56sol(args?: ModelAttachArgs): this;
461
463
  gpt56terra(args?: ModelAttachArgs): this;
462
464
  gpt56luna(args?: ModelAttachArgs): this;
@@ -470,6 +472,7 @@ export declare class ModelMix {
470
472
  fable51(args?: ModelAttachArgs): this;
471
473
  fable50(args?: ModelAttachArgs): this;
472
474
  fable5(args?: ModelAttachArgs): this;
475
+ opus55(args?: ModelAttachArgs): this;
473
476
  opus50(args?: ModelAttachArgs): this;
474
477
  opus5(args?: ModelAttachArgs): this;
475
478
  opus48(args?: ModelAttachArgs): this;
@@ -527,6 +530,7 @@ export declare class ModelMix {
527
530
  minimaxM3(args?: ModelAttachArgs): this;
528
531
  mimo25(args?: ModelAttachArgs): this;
529
532
  mimo25pro(args?: ModelAttachArgs): this;
533
+ mimo26pro(args?: ModelAttachArgs): this;
530
534
  deepseekV4Pro(args?: ModelAttachArgs): this;
531
535
  /** Uses deepseek/deepseek-v4-pro-0813 through OpenRouter. */
532
536
  deepseekPro(args?: ModelAttachArgs): this;