pi-ollama-cloud 0.12.0 → 0.12.2
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 +8 -0
- package/models.generated.ts +2 -156
- package/models.ts +15 -5
- package/package.json +1 -1
- package/pricing.generated.ts +2 -5
- package/reasoning.generated.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.12.2] - 2026-09-27
|
|
6
|
+
|
|
7
|
+
- Refresh the model catalog for the September 25, 2026 retirements (`deepseek-v4-flash:0731`, `glm-5.1`, `qwen3.5:397b`): dropped from the generated catalog and pricing, 20 -> 17 models. Recommended replacements per Ollama: `deepseek-v4.1-flash`, `glm-5.3`, and `glm-5.3-flash` / `deepseek-v4.1-flash`.
|
|
8
|
+
|
|
9
|
+
## [0.12.1] - 2026-09-14
|
|
10
|
+
|
|
11
|
+
- Omit empty `openRouterRouting` / `vercelGatewayRouting` from `buildCompat` (set to `undefined`, not `{}`): pi-ai reads the raw `model.compat` and treats `{}` as truthy, sending a stray `provider: {}` on every Ollama chat completion. Fixes #60. Thanks @0xbentang (#61).
|
|
12
|
+
|
|
5
13
|
## [0.12.0] - 2026-09-11
|
|
6
14
|
|
|
7
15
|
- Source per-model thinking levels from models.dev instead of hardcoded maps. `scripts/generate-reasoning.ts` fetches the `ollama-cloud` provider's `reasoning_options` into `reasoning.generated.ts`, and `thinking-levels.ts` maps each model's effort values onto Pi's levels (toggle-only models become a binary on/off map; models with no models.dev entry fall back to `DEFAULT`). The `off` switch is handled by a small override table for models verified not to honor `reasoning_effort:"none"` (`gpt-oss:20b`, `gpt-oss:120b`, `minimax-m2.7`). Removed the now-stale per-family maps and the `docs/think-experiment.md` doc.
|
package/models.generated.ts
CHANGED
|
@@ -1,57 +1,16 @@
|
|
|
1
1
|
// Auto-generated by scripts/generate-models.ts
|
|
2
2
|
// Do not edit manually.
|
|
3
|
-
// Generated: 2026-09-
|
|
4
|
-
// Model count:
|
|
3
|
+
// Generated: 2026-09-27T00:52:07.773Z
|
|
4
|
+
// Model count: 17
|
|
5
5
|
|
|
6
6
|
import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
|
|
7
7
|
|
|
8
8
|
export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
9
|
-
{
|
|
10
|
-
id: "deepseek-v4-flash:0731",
|
|
11
|
-
name: "deepseek-v4-flash:0731",
|
|
12
|
-
compat: {
|
|
13
|
-
maxTokensField: "max_tokens",
|
|
14
|
-
openRouterRouting: {},
|
|
15
|
-
requiresAssistantAfterToolResult: false,
|
|
16
|
-
requiresReasoningContentOnAssistantMessages: false,
|
|
17
|
-
requiresThinkingAsText: false,
|
|
18
|
-
requiresToolResultName: false,
|
|
19
|
-
sendSessionAffinityHeaders: false,
|
|
20
|
-
supportsDeveloperRole: false,
|
|
21
|
-
supportsLongCacheRetention: false,
|
|
22
|
-
supportsReasoningEffort: true,
|
|
23
|
-
supportsStore: false,
|
|
24
|
-
supportsStrictMode: false,
|
|
25
|
-
supportsUsageInStreaming: true,
|
|
26
|
-
thinkingFormat: "openai",
|
|
27
|
-
vercelGatewayRouting: {},
|
|
28
|
-
zaiToolStream: false,
|
|
29
|
-
},
|
|
30
|
-
contextWindow: 1048576,
|
|
31
|
-
cost: {
|
|
32
|
-
cacheRead: 0.014,
|
|
33
|
-
cacheWrite: 0,
|
|
34
|
-
input: 0.44,
|
|
35
|
-
output: 1.32,
|
|
36
|
-
},
|
|
37
|
-
input: ["text"],
|
|
38
|
-
maxTokens: 65536,
|
|
39
|
-
reasoning: true,
|
|
40
|
-
thinkingLevelMap: {
|
|
41
|
-
high: "high",
|
|
42
|
-
low: null,
|
|
43
|
-
medium: null,
|
|
44
|
-
minimal: null,
|
|
45
|
-
off: "none",
|
|
46
|
-
xhigh: "max",
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
9
|
{
|
|
50
10
|
id: "deepseek-v4-pro:0813",
|
|
51
11
|
name: "deepseek-v4-pro:0813",
|
|
52
12
|
compat: {
|
|
53
13
|
maxTokensField: "max_tokens",
|
|
54
|
-
openRouterRouting: {},
|
|
55
14
|
requiresAssistantAfterToolResult: false,
|
|
56
15
|
requiresReasoningContentOnAssistantMessages: false,
|
|
57
16
|
requiresThinkingAsText: false,
|
|
@@ -64,7 +23,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
64
23
|
supportsStrictMode: false,
|
|
65
24
|
supportsUsageInStreaming: true,
|
|
66
25
|
thinkingFormat: "openai",
|
|
67
|
-
vercelGatewayRouting: {},
|
|
68
26
|
zaiToolStream: false,
|
|
69
27
|
},
|
|
70
28
|
contextWindow: 1048576,
|
|
@@ -91,7 +49,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
91
49
|
name: "deepseek-v4.1-flash",
|
|
92
50
|
compat: {
|
|
93
51
|
maxTokensField: "max_tokens",
|
|
94
|
-
openRouterRouting: {},
|
|
95
52
|
requiresAssistantAfterToolResult: false,
|
|
96
53
|
requiresReasoningContentOnAssistantMessages: false,
|
|
97
54
|
requiresThinkingAsText: false,
|
|
@@ -104,7 +61,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
104
61
|
supportsStrictMode: false,
|
|
105
62
|
supportsUsageInStreaming: true,
|
|
106
63
|
thinkingFormat: "openai",
|
|
107
|
-
vercelGatewayRouting: {},
|
|
108
64
|
zaiToolStream: false,
|
|
109
65
|
},
|
|
110
66
|
contextWindow: 1048576,
|
|
@@ -131,7 +87,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
131
87
|
name: "gemma4:31b",
|
|
132
88
|
compat: {
|
|
133
89
|
maxTokensField: "max_tokens",
|
|
134
|
-
openRouterRouting: {},
|
|
135
90
|
requiresAssistantAfterToolResult: false,
|
|
136
91
|
requiresReasoningContentOnAssistantMessages: false,
|
|
137
92
|
requiresThinkingAsText: false,
|
|
@@ -144,7 +99,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
144
99
|
supportsStrictMode: false,
|
|
145
100
|
supportsUsageInStreaming: true,
|
|
146
101
|
thinkingFormat: "openai",
|
|
147
|
-
vercelGatewayRouting: {},
|
|
148
102
|
zaiToolStream: false,
|
|
149
103
|
},
|
|
150
104
|
contextWindow: 262144,
|
|
@@ -166,52 +120,11 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
166
120
|
xhigh: null,
|
|
167
121
|
},
|
|
168
122
|
},
|
|
169
|
-
{
|
|
170
|
-
id: "glm-5.1",
|
|
171
|
-
name: "glm-5.1",
|
|
172
|
-
compat: {
|
|
173
|
-
maxTokensField: "max_tokens",
|
|
174
|
-
openRouterRouting: {},
|
|
175
|
-
requiresAssistantAfterToolResult: false,
|
|
176
|
-
requiresReasoningContentOnAssistantMessages: false,
|
|
177
|
-
requiresThinkingAsText: false,
|
|
178
|
-
requiresToolResultName: false,
|
|
179
|
-
sendSessionAffinityHeaders: false,
|
|
180
|
-
supportsDeveloperRole: false,
|
|
181
|
-
supportsLongCacheRetention: false,
|
|
182
|
-
supportsReasoningEffort: true,
|
|
183
|
-
supportsStore: false,
|
|
184
|
-
supportsStrictMode: false,
|
|
185
|
-
supportsUsageInStreaming: true,
|
|
186
|
-
thinkingFormat: "openai",
|
|
187
|
-
vercelGatewayRouting: {},
|
|
188
|
-
zaiToolStream: false,
|
|
189
|
-
},
|
|
190
|
-
contextWindow: 202752,
|
|
191
|
-
cost: {
|
|
192
|
-
cacheRead: 0.2,
|
|
193
|
-
cacheWrite: 0,
|
|
194
|
-
input: 1,
|
|
195
|
-
output: 3.2,
|
|
196
|
-
},
|
|
197
|
-
input: ["text"],
|
|
198
|
-
maxTokens: 131072,
|
|
199
|
-
reasoning: true,
|
|
200
|
-
thinkingLevelMap: {
|
|
201
|
-
high: null,
|
|
202
|
-
low: null,
|
|
203
|
-
medium: "medium",
|
|
204
|
-
minimal: null,
|
|
205
|
-
off: "none",
|
|
206
|
-
xhigh: null,
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
123
|
{
|
|
210
124
|
id: "glm-5.2",
|
|
211
125
|
name: "glm-5.2",
|
|
212
126
|
compat: {
|
|
213
127
|
maxTokensField: "max_tokens",
|
|
214
|
-
openRouterRouting: {},
|
|
215
128
|
requiresAssistantAfterToolResult: false,
|
|
216
129
|
requiresReasoningContentOnAssistantMessages: false,
|
|
217
130
|
requiresThinkingAsText: false,
|
|
@@ -224,7 +137,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
224
137
|
supportsStrictMode: false,
|
|
225
138
|
supportsUsageInStreaming: true,
|
|
226
139
|
thinkingFormat: "openai",
|
|
227
|
-
vercelGatewayRouting: {},
|
|
228
140
|
zaiToolStream: false,
|
|
229
141
|
},
|
|
230
142
|
contextWindow: 1048576,
|
|
@@ -251,7 +163,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
251
163
|
name: "glm-5.3",
|
|
252
164
|
compat: {
|
|
253
165
|
maxTokensField: "max_tokens",
|
|
254
|
-
openRouterRouting: {},
|
|
255
166
|
requiresAssistantAfterToolResult: false,
|
|
256
167
|
requiresReasoningContentOnAssistantMessages: false,
|
|
257
168
|
requiresThinkingAsText: false,
|
|
@@ -264,7 +175,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
264
175
|
supportsStrictMode: false,
|
|
265
176
|
supportsUsageInStreaming: true,
|
|
266
177
|
thinkingFormat: "openai",
|
|
267
|
-
vercelGatewayRouting: {},
|
|
268
178
|
zaiToolStream: false,
|
|
269
179
|
},
|
|
270
180
|
contextWindow: 1048576,
|
|
@@ -291,7 +201,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
291
201
|
name: "glm-5.3-flash",
|
|
292
202
|
compat: {
|
|
293
203
|
maxTokensField: "max_tokens",
|
|
294
|
-
openRouterRouting: {},
|
|
295
204
|
requiresAssistantAfterToolResult: false,
|
|
296
205
|
requiresReasoningContentOnAssistantMessages: false,
|
|
297
206
|
requiresThinkingAsText: false,
|
|
@@ -304,7 +213,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
304
213
|
supportsStrictMode: false,
|
|
305
214
|
supportsUsageInStreaming: true,
|
|
306
215
|
thinkingFormat: "openai",
|
|
307
|
-
vercelGatewayRouting: {},
|
|
308
216
|
zaiToolStream: false,
|
|
309
217
|
},
|
|
310
218
|
contextWindow: 1048576,
|
|
@@ -331,7 +239,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
331
239
|
name: "gpt-oss:120b",
|
|
332
240
|
compat: {
|
|
333
241
|
maxTokensField: "max_tokens",
|
|
334
|
-
openRouterRouting: {},
|
|
335
242
|
requiresAssistantAfterToolResult: false,
|
|
336
243
|
requiresReasoningContentOnAssistantMessages: false,
|
|
337
244
|
requiresThinkingAsText: false,
|
|
@@ -344,7 +251,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
344
251
|
supportsStrictMode: false,
|
|
345
252
|
supportsUsageInStreaming: true,
|
|
346
253
|
thinkingFormat: "openai",
|
|
347
|
-
vercelGatewayRouting: {},
|
|
348
254
|
zaiToolStream: false,
|
|
349
255
|
},
|
|
350
256
|
contextWindow: 131072,
|
|
@@ -371,7 +277,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
371
277
|
name: "gpt-oss:20b",
|
|
372
278
|
compat: {
|
|
373
279
|
maxTokensField: "max_tokens",
|
|
374
|
-
openRouterRouting: {},
|
|
375
280
|
requiresAssistantAfterToolResult: false,
|
|
376
281
|
requiresReasoningContentOnAssistantMessages: false,
|
|
377
282
|
requiresThinkingAsText: false,
|
|
@@ -384,7 +289,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
384
289
|
supportsStrictMode: false,
|
|
385
290
|
supportsUsageInStreaming: true,
|
|
386
291
|
thinkingFormat: "openai",
|
|
387
|
-
vercelGatewayRouting: {},
|
|
388
292
|
zaiToolStream: false,
|
|
389
293
|
},
|
|
390
294
|
contextWindow: 131072,
|
|
@@ -411,7 +315,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
411
315
|
name: "kimi-k2.6",
|
|
412
316
|
compat: {
|
|
413
317
|
maxTokensField: "max_tokens",
|
|
414
|
-
openRouterRouting: {},
|
|
415
318
|
requiresAssistantAfterToolResult: false,
|
|
416
319
|
requiresReasoningContentOnAssistantMessages: false,
|
|
417
320
|
requiresThinkingAsText: false,
|
|
@@ -424,7 +327,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
424
327
|
supportsStrictMode: false,
|
|
425
328
|
supportsUsageInStreaming: true,
|
|
426
329
|
thinkingFormat: "openai",
|
|
427
|
-
vercelGatewayRouting: {},
|
|
428
330
|
zaiToolStream: false,
|
|
429
331
|
},
|
|
430
332
|
contextWindow: 262144,
|
|
@@ -451,7 +353,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
451
353
|
name: "kimi-k2.7-code",
|
|
452
354
|
compat: {
|
|
453
355
|
maxTokensField: "max_tokens",
|
|
454
|
-
openRouterRouting: {},
|
|
455
356
|
requiresAssistantAfterToolResult: false,
|
|
456
357
|
requiresReasoningContentOnAssistantMessages: false,
|
|
457
358
|
requiresThinkingAsText: false,
|
|
@@ -464,7 +365,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
464
365
|
supportsStrictMode: false,
|
|
465
366
|
supportsUsageInStreaming: true,
|
|
466
367
|
thinkingFormat: "openai",
|
|
467
|
-
vercelGatewayRouting: {},
|
|
468
368
|
zaiToolStream: false,
|
|
469
369
|
},
|
|
470
370
|
contextWindow: 262144,
|
|
@@ -491,7 +391,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
491
391
|
name: "kimi-k3",
|
|
492
392
|
compat: {
|
|
493
393
|
maxTokensField: "max_tokens",
|
|
494
|
-
openRouterRouting: {},
|
|
495
394
|
requiresAssistantAfterToolResult: false,
|
|
496
395
|
requiresReasoningContentOnAssistantMessages: false,
|
|
497
396
|
requiresThinkingAsText: false,
|
|
@@ -504,7 +403,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
504
403
|
supportsStrictMode: false,
|
|
505
404
|
supportsUsageInStreaming: true,
|
|
506
405
|
thinkingFormat: "openai",
|
|
507
|
-
vercelGatewayRouting: {},
|
|
508
406
|
zaiToolStream: false,
|
|
509
407
|
},
|
|
510
408
|
contextWindow: 1048576,
|
|
@@ -531,7 +429,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
531
429
|
name: "minimax-m2.7",
|
|
532
430
|
compat: {
|
|
533
431
|
maxTokensField: "max_tokens",
|
|
534
|
-
openRouterRouting: {},
|
|
535
432
|
requiresAssistantAfterToolResult: false,
|
|
536
433
|
requiresReasoningContentOnAssistantMessages: false,
|
|
537
434
|
requiresThinkingAsText: false,
|
|
@@ -544,7 +441,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
544
441
|
supportsStrictMode: false,
|
|
545
442
|
supportsUsageInStreaming: true,
|
|
546
443
|
thinkingFormat: "openai",
|
|
547
|
-
vercelGatewayRouting: {},
|
|
548
444
|
zaiToolStream: false,
|
|
549
445
|
},
|
|
550
446
|
contextWindow: 196608,
|
|
@@ -571,7 +467,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
571
467
|
name: "minimax-m3",
|
|
572
468
|
compat: {
|
|
573
469
|
maxTokensField: "max_tokens",
|
|
574
|
-
openRouterRouting: {},
|
|
575
470
|
requiresAssistantAfterToolResult: false,
|
|
576
471
|
requiresReasoningContentOnAssistantMessages: false,
|
|
577
472
|
requiresThinkingAsText: false,
|
|
@@ -584,7 +479,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
584
479
|
supportsStrictMode: false,
|
|
585
480
|
supportsUsageInStreaming: true,
|
|
586
481
|
thinkingFormat: "openai",
|
|
587
|
-
vercelGatewayRouting: {},
|
|
588
482
|
zaiToolStream: false,
|
|
589
483
|
},
|
|
590
484
|
contextWindow: 512000,
|
|
@@ -611,7 +505,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
611
505
|
name: "mistral-large-3:675b",
|
|
612
506
|
compat: {
|
|
613
507
|
maxTokensField: "max_tokens",
|
|
614
|
-
openRouterRouting: {},
|
|
615
508
|
requiresAssistantAfterToolResult: false,
|
|
616
509
|
requiresReasoningContentOnAssistantMessages: false,
|
|
617
510
|
requiresThinkingAsText: false,
|
|
@@ -624,7 +517,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
624
517
|
supportsStrictMode: false,
|
|
625
518
|
supportsUsageInStreaming: true,
|
|
626
519
|
thinkingFormat: "openai",
|
|
627
|
-
vercelGatewayRouting: {},
|
|
628
520
|
zaiToolStream: false,
|
|
629
521
|
},
|
|
630
522
|
contextWindow: 262144,
|
|
@@ -643,7 +535,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
643
535
|
name: "nemotron-3-nano:30b",
|
|
644
536
|
compat: {
|
|
645
537
|
maxTokensField: "max_tokens",
|
|
646
|
-
openRouterRouting: {},
|
|
647
538
|
requiresAssistantAfterToolResult: false,
|
|
648
539
|
requiresReasoningContentOnAssistantMessages: false,
|
|
649
540
|
requiresThinkingAsText: false,
|
|
@@ -656,7 +547,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
656
547
|
supportsStrictMode: false,
|
|
657
548
|
supportsUsageInStreaming: true,
|
|
658
549
|
thinkingFormat: "openai",
|
|
659
|
-
vercelGatewayRouting: {},
|
|
660
550
|
zaiToolStream: false,
|
|
661
551
|
},
|
|
662
552
|
contextWindow: 262144,
|
|
@@ -683,7 +573,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
683
573
|
name: "nemotron-3-super",
|
|
684
574
|
compat: {
|
|
685
575
|
maxTokensField: "max_tokens",
|
|
686
|
-
openRouterRouting: {},
|
|
687
576
|
requiresAssistantAfterToolResult: false,
|
|
688
577
|
requiresReasoningContentOnAssistantMessages: false,
|
|
689
578
|
requiresThinkingAsText: false,
|
|
@@ -696,7 +585,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
696
585
|
supportsStrictMode: false,
|
|
697
586
|
supportsUsageInStreaming: true,
|
|
698
587
|
thinkingFormat: "openai",
|
|
699
|
-
vercelGatewayRouting: {},
|
|
700
588
|
zaiToolStream: false,
|
|
701
589
|
},
|
|
702
590
|
contextWindow: 262144,
|
|
@@ -723,7 +611,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
723
611
|
name: "nemotron-3-ultra",
|
|
724
612
|
compat: {
|
|
725
613
|
maxTokensField: "max_tokens",
|
|
726
|
-
openRouterRouting: {},
|
|
727
614
|
requiresAssistantAfterToolResult: false,
|
|
728
615
|
requiresReasoningContentOnAssistantMessages: false,
|
|
729
616
|
requiresThinkingAsText: false,
|
|
@@ -736,7 +623,6 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
736
623
|
supportsStrictMode: false,
|
|
737
624
|
supportsUsageInStreaming: true,
|
|
738
625
|
thinkingFormat: "openai",
|
|
739
|
-
vercelGatewayRouting: {},
|
|
740
626
|
zaiToolStream: false,
|
|
741
627
|
},
|
|
742
628
|
contextWindow: 262144,
|
|
@@ -758,44 +644,4 @@ export const GENERATED_MODELS: ProviderModelConfig[] = [
|
|
|
758
644
|
xhigh: null,
|
|
759
645
|
},
|
|
760
646
|
},
|
|
761
|
-
{
|
|
762
|
-
id: "qwen3.5:397b",
|
|
763
|
-
name: "qwen3.5:397b",
|
|
764
|
-
compat: {
|
|
765
|
-
maxTokensField: "max_tokens",
|
|
766
|
-
openRouterRouting: {},
|
|
767
|
-
requiresAssistantAfterToolResult: false,
|
|
768
|
-
requiresReasoningContentOnAssistantMessages: false,
|
|
769
|
-
requiresThinkingAsText: false,
|
|
770
|
-
requiresToolResultName: false,
|
|
771
|
-
sendSessionAffinityHeaders: false,
|
|
772
|
-
supportsDeveloperRole: false,
|
|
773
|
-
supportsLongCacheRetention: false,
|
|
774
|
-
supportsReasoningEffort: true,
|
|
775
|
-
supportsStore: false,
|
|
776
|
-
supportsStrictMode: false,
|
|
777
|
-
supportsUsageInStreaming: true,
|
|
778
|
-
thinkingFormat: "openai",
|
|
779
|
-
vercelGatewayRouting: {},
|
|
780
|
-
zaiToolStream: false,
|
|
781
|
-
},
|
|
782
|
-
contextWindow: 262144,
|
|
783
|
-
cost: {
|
|
784
|
-
cacheRead: 0.6,
|
|
785
|
-
cacheWrite: 0,
|
|
786
|
-
input: 0.6,
|
|
787
|
-
output: 3.6,
|
|
788
|
-
},
|
|
789
|
-
input: ["text", "image"],
|
|
790
|
-
maxTokens: 65536,
|
|
791
|
-
reasoning: true,
|
|
792
|
-
thinkingLevelMap: {
|
|
793
|
-
high: null,
|
|
794
|
-
low: null,
|
|
795
|
-
medium: "medium",
|
|
796
|
-
minimal: null,
|
|
797
|
-
off: "none",
|
|
798
|
-
xhigh: null,
|
|
799
|
-
},
|
|
800
|
-
},
|
|
801
647
|
];
|
package/models.ts
CHANGED
|
@@ -113,18 +113,28 @@ function buildCompat(): ProviderModelConfig["compat"] {
|
|
|
113
113
|
thinkingFormat: "openai",
|
|
114
114
|
// Ollama does not support tool_choice, so strict mode is unavailable (ollama: docs.ollama.com/api/openai-compatibility, pi: types.ts#supportsStrictMode).
|
|
115
115
|
supportsStrictMode: false,
|
|
116
|
-
// Anthropic cache_control not relevant; Ollama has implicit KV cache only (pi: types.ts#cacheControlFormat).
|
|
117
|
-
// Explicitly undefined: JSON.stringify drops undefined values, keeping
|
|
118
|
-
// models.generated.ts structurally consistent with assembleModels() runtime output.
|
|
119
116
|
// Session affinity headers not relevant for Ollama (pi: types.ts#sendSessionAffinityHeaders).
|
|
120
117
|
sendSessionAffinityHeaders: false,
|
|
121
118
|
// No explicit cache-retention API (pi: types.ts#supportsLongCacheRetention).
|
|
122
119
|
supportsLongCacheRetention: false,
|
|
123
120
|
// Not z.ai (pi: types.ts#zaiToolStream).
|
|
124
121
|
zaiToolStream: false,
|
|
122
|
+
// Anthropic cache_control not relevant; Ollama has implicit KV cache only (pi: types.ts#cacheControlFormat).
|
|
123
|
+
// Explicitly undefined: JSON.stringify drops undefined values, keeping
|
|
124
|
+
// models.generated.ts structurally consistent with assembleModels() runtime output.
|
|
125
125
|
cacheControlFormat: undefined,
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
// OpenRouter / Vercel AI Gateway routing prefs. pi-ai's OpenAI transport
|
|
127
|
+
// truthiness-checks the raw model.compat (not the resolved getCompat() value)
|
|
128
|
+
// and forwards it verbatim: `if (model.compat?.openRouterRouting)
|
|
129
|
+
// params.provider = ...` in packages/ai/src/api/openai-completions.ts. `{}` is
|
|
130
|
+
// truthy, so baking it in sent a stray `provider: {}` on every Ollama request.
|
|
131
|
+
// Express "none" as undefined, never `{}`; undefined is falsy at the wire site
|
|
132
|
+
// and JSON.stringify drops it from models.generated.ts. The boolean flags above
|
|
133
|
+
// stay explicit `false` on purpose: omitting a boolean makes getCompat() fall
|
|
134
|
+
// back to detectCompat's generic-OpenAI defaults, which are wrong for Ollama
|
|
135
|
+
// (e.g. maxTokensField -> "max_completion_tokens", supportsStrictMode -> true).
|
|
136
|
+
openRouterRouting: undefined,
|
|
137
|
+
vercelGatewayRouting: undefined,
|
|
128
138
|
};
|
|
129
139
|
}
|
|
130
140
|
|
package/package.json
CHANGED
package/pricing.generated.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Auto-generated by scripts/generate-pricing.ts
|
|
2
2
|
// Do not edit manually.
|
|
3
|
-
// Generated: 2026-09-
|
|
4
|
-
// Model count:
|
|
3
|
+
// Generated: 2026-09-27T00:52:06.074Z
|
|
4
|
+
// Model count: 17
|
|
5
5
|
|
|
6
6
|
export interface ModelPrice {
|
|
7
7
|
input: number;
|
|
@@ -11,11 +11,9 @@ export interface ModelPrice {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const MODEL_PRICING: Record<string, ModelPrice> = {
|
|
14
|
-
"deepseek-v4-flash:0731": { input: 0.44, output: 1.32, cacheRead: 0.014, cacheWrite: 0 },
|
|
15
14
|
"deepseek-v4-pro:0813": { input: 1.32, output: 3.96, cacheRead: 0.044, cacheWrite: 0 },
|
|
16
15
|
"deepseek-v4.1-flash": { input: 0.3, output: 1.2, cacheRead: 0.006, cacheWrite: 0 },
|
|
17
16
|
"gemma4:31b": { input: 0.14, output: 0.4, cacheRead: 0.05, cacheWrite: 0 },
|
|
18
|
-
"glm-5.1": { input: 1, output: 3.2, cacheRead: 0.2, cacheWrite: 0 },
|
|
19
17
|
"glm-5.2": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
|
|
20
18
|
"glm-5.3": { input: 1.4, output: 4.4, cacheRead: 0.26, cacheWrite: 0 },
|
|
21
19
|
"glm-5.3-flash": { input: 0.15, output: 0.5, cacheRead: 0.03, cacheWrite: 0 },
|
|
@@ -30,5 +28,4 @@ export const MODEL_PRICING: Record<string, ModelPrice> = {
|
|
|
30
28
|
"nemotron-3-nano:30b": { input: 0.06, output: 0.24, cacheRead: 0.06, cacheWrite: 0 },
|
|
31
29
|
"nemotron-3-super": { input: 0.015, output: 0.6, cacheRead: 0.015, cacheWrite: 0 },
|
|
32
30
|
"nemotron-3-ultra": { input: 0.1, output: 3, cacheRead: 0.1, cacheWrite: 0 },
|
|
33
|
-
"qwen3.5:397b": { input: 0.6, output: 3.6, cacheRead: 0.6, cacheWrite: 0 },
|
|
34
31
|
};
|
package/reasoning.generated.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Auto-generated by scripts/generate-reasoning.ts
|
|
2
2
|
// Do not edit manually.
|
|
3
|
-
// Model count:
|
|
3
|
+
// Model count: 23
|
|
4
4
|
|
|
5
5
|
export type ModelsDevReasoningOption =
|
|
6
6
|
| { type: "toggle" }
|
|
@@ -13,6 +13,7 @@ export const MODEL_REASONING_OPTIONS: Record<string, ModelsDevReasoningOption[]>
|
|
|
13
13
|
"deepseek-v4-flash": [{ type: "toggle" }, { type: "effort", values: ["high", "max"] }],
|
|
14
14
|
"deepseek-v4-flash:0731": [{ type: "toggle" }, { type: "effort", values: ["high", "max"] }],
|
|
15
15
|
"deepseek-v4-pro": [{ type: "toggle" }, { type: "effort", values: ["high", "max"] }],
|
|
16
|
+
"deepseek-v4-pro:0813": [{ type: "toggle" }, { type: "effort", values: ["high", "max"] }],
|
|
16
17
|
"deepseek-v4.1-flash": [{ type: "toggle" }, { type: "effort", values: ["low", "high", "max"] }],
|
|
17
18
|
"gemma4:31b": [{ type: "toggle" }],
|
|
18
19
|
"glm-5.1": [{ type: "toggle" }],
|