@monotykamary/pi-opencode-provider 1.0.12 → 1.0.14

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
@@ -116,7 +116,7 @@ pi
116
116
  | GPT-5.5 | Responses | Text + Image | 1.1M | 128K | $5.00 | $30.00 |
117
117
  | GPT-5.5 Pro | Responses | Text + Image | 1.1M | 128K | $30.00 | $180.00 |
118
118
  | GPT-5.6 Luna | Responses | Text + Image | 1.1M | 128K | $0.20 | $1.20 |
119
- | GPT-5.6 Sol (50% Off) | Responses | Text + Image | 1.1M | 128K | $2.50 | $15.00 |
119
+ | GPT-5.6 Sol (50% Off) | Responses | Text + Image | 1.1M | 128K | $2.00 | $10.00 |
120
120
  | GPT-5.6 Terra | Responses | Text + Image | 1.1M | 128K | $2.50 | $15.00 |
121
121
  | Grok 4.5 | Responses | Text + Image | 500K | 500K | $2.00 | $6.00 |
122
122
  | Grok 4.6 | Responses | Text + Image | 500K | 500K | $2.00 | $6.00 |
@@ -127,6 +127,7 @@ pi
127
127
  | Kimi K2.6 | Completions | Text + Image | 262K | 66K | $0.95 | $4.00 |
128
128
  | Kimi K2.7 Code | Completions | Text + Image | 262K | 262K | $0.95 | $4.00 |
129
129
  | Kimi K3 | Completions | Text + Image | 1.0M | 131K | $3.00 | $15.00 |
130
+ | Ling 3.0 Flash Fin Free | Completions | Text | 262K | 33K | — | — |
130
131
  | MiMo V2.5 Free | Completions | Text + Image | 200K | 32K | — | — |
131
132
  | MiniMax-M2.5 | Completions | Text | 205K | 131K | $0.30 | $1.20 |
132
133
  | MiniMax-M2.7 | Completions | Text | 205K | 131K | $0.30 | $1.20 |
@@ -135,7 +136,6 @@ pi
135
136
  | Muse Spark 1.2 Free | Responses | Text + Image | 1.0M | 131K | — | — |
136
137
  | Nemotron 3 Ultra Free | Completions | Text | 1.0M | 128K | — | — |
137
138
  | Nemotron 3.5 Lightning Free | Completions | Text | 262K | 262K | — | — |
138
- | Ox Alpha Free (Unlimited) | Completions | Text + Image | 1.0M | 131K | — | — |
139
139
  | Qwen3.5 Plus | Anthropic | Text + Image | 262K | 66K | $0.20 | $1.20 |
140
140
  | Qwen3.6 Plus | Anthropic | Text + Image | 262K | 66K | $0.50 | $3.00 |
141
141
  *Costs are per million tokens. Prices subject to change - check [opencode.ai](https://opencode.ai) for current pricing.*
@@ -1,26 +1,7 @@
1
1
  {
2
- "ling-3.0-flash-free": {
3
- "id": "ling-3.0-flash-free",
4
- "name": "Ling-3.0-flash Free",
5
- "api": "openai-completions",
6
- "baseUrl": "https://opencode.ai/zen/v1",
7
- "reasoning": true,
8
- "input": [
9
- "text"
10
- ],
11
- "cost": {
12
- "input": 0,
13
- "output": 0,
14
- "cacheRead": 0,
15
- "cacheWrite": 0
16
- },
17
- "contextWindow": 262144,
18
- "maxTokens": 32768,
19
- "deprecatedAt": "2026-08-08T02:00:18.268Z"
20
- },
21
- "north-mini-code-free": {
22
- "id": "north-mini-code-free",
23
- "name": "North Mini Code Free",
2
+ "laguna-s-2.1-free": {
3
+ "id": "laguna-s-2.1-free",
4
+ "name": "Laguna S 2.1 Free",
24
5
  "api": "openai-completions",
25
6
  "baseUrl": "https://opencode.ai/zen/v1",
26
7
  "reasoning": true,
@@ -34,50 +15,12 @@
34
15
  "cacheWrite": 0
35
16
  },
36
17
  "contextWindow": 256000,
37
- "maxTokens": 64000,
38
- "deprecatedAt": "2026-08-12T02:00:24.970Z"
39
- },
40
- "longcat-2.0-free": {
41
- "id": "longcat-2.0-free",
42
- "name": "LongCat-2.0 Free",
43
- "api": "openai-completions",
44
- "baseUrl": "https://opencode.ai/zen/v1",
45
- "reasoning": true,
46
- "input": [
47
- "text"
48
- ],
49
- "cost": {
50
- "input": 0,
51
- "output": 0,
52
- "cacheRead": 0,
53
- "cacheWrite": 0
54
- },
55
- "contextWindow": 1000000,
56
- "maxTokens": 131072,
57
- "deprecatedAt": "2026-08-12T06:38:24.559Z"
58
- },
59
- "ling-3.0-tiny-free": {
60
- "id": "ling-3.0-tiny-free",
61
- "name": "Ling-3.0-tiny Free",
62
- "api": "openai-completions",
63
- "baseUrl": "https://opencode.ai/zen/v1",
64
- "reasoning": true,
65
- "input": [
66
- "text"
67
- ],
68
- "cost": {
69
- "input": 0,
70
- "output": 0,
71
- "cacheRead": 0,
72
- "cacheWrite": 0
73
- },
74
- "contextWindow": 262144,
75
- "maxTokens": 32768,
76
- "deprecatedAt": "2026-08-14T02:00:20.260Z"
18
+ "maxTokens": 32000,
19
+ "deprecatedAt": "2026-08-21T02:00:22.698Z"
77
20
  },
78
- "laguna-s-2.1-free": {
79
- "id": "laguna-s-2.1-free",
80
- "name": "Laguna S 2.1 Free",
21
+ "deepseek-v4-flash-free": {
22
+ "id": "deepseek-v4-flash-free",
23
+ "name": "DeepSeek V4 Flash Free",
81
24
  "api": "openai-completions",
82
25
  "baseUrl": "https://opencode.ai/zen/v1",
83
26
  "reasoning": true,
@@ -90,18 +33,28 @@
90
33
  "cacheRead": 0,
91
34
  "cacheWrite": 0
92
35
  },
93
- "contextWindow": 256000,
94
- "maxTokens": 32000,
36
+ "contextWindow": 200000,
37
+ "maxTokens": 128000,
95
38
  "deprecatedAt": "2026-08-21T02:00:22.698Z"
96
39
  },
97
- "deepseek-v4-flash-free": {
98
- "id": "deepseek-v4-flash-free",
99
- "name": "DeepSeek V4 Flash Free",
40
+ "x-preview-f-free": {
41
+ "id": "x-preview-f-free",
42
+ "name": "Ox Alpha Free (Unlimited)",
100
43
  "api": "openai-completions",
101
44
  "baseUrl": "https://opencode.ai/zen/v1",
102
45
  "reasoning": true,
46
+ "thinkingLevelMap": {
47
+ "off": null,
48
+ "minimal": null,
49
+ "low": "low",
50
+ "medium": null,
51
+ "high": "high",
52
+ "xhigh": null,
53
+ "max": "max"
54
+ },
103
55
  "input": [
104
- "text"
56
+ "text",
57
+ "image"
105
58
  ],
106
59
  "cost": {
107
60
  "input": 0,
@@ -109,8 +62,8 @@
109
62
  "cacheRead": 0,
110
63
  "cacheWrite": 0
111
64
  },
112
- "contextWindow": 200000,
113
- "maxTokens": 128000,
114
- "deprecatedAt": "2026-08-21T02:00:22.698Z"
65
+ "contextWindow": 1000000,
66
+ "maxTokens": 131072,
67
+ "deprecatedAt": "2026-08-27T02:00:22.685Z"
115
68
  }
116
69
  }
package/models.json CHANGED
@@ -5,6 +5,15 @@
5
5
  "api": "anthropic-messages",
6
6
  "baseUrl": "https://opencode.ai/zen",
7
7
  "reasoning": true,
8
+ "thinkingLevelMap": {
9
+ "off": null,
10
+ "minimal": null,
11
+ "low": "low",
12
+ "medium": "medium",
13
+ "high": "high",
14
+ "xhigh": "xhigh",
15
+ "max": "max"
16
+ },
8
17
  "input": [
9
18
  "text",
10
19
  "image"
@@ -61,6 +70,15 @@
61
70
  "api": "openai-responses",
62
71
  "baseUrl": "https://opencode.ai/zen/v1",
63
72
  "reasoning": true,
73
+ "thinkingLevelMap": {
74
+ "off": null,
75
+ "minimal": "minimal",
76
+ "low": "low",
77
+ "medium": "medium",
78
+ "high": "high",
79
+ "xhigh": null,
80
+ "max": null
81
+ },
64
82
  "input": [
65
83
  "text",
66
84
  "image"
@@ -80,6 +98,15 @@
80
98
  "api": "openai-completions",
81
99
  "baseUrl": "https://opencode.ai/zen/v1",
82
100
  "reasoning": true,
101
+ "thinkingLevelMap": {
102
+ "off": null,
103
+ "minimal": null,
104
+ "low": null,
105
+ "medium": null,
106
+ "high": null,
107
+ "xhigh": null,
108
+ "max": "max"
109
+ },
83
110
  "input": [
84
111
  "text",
85
112
  "image"
@@ -99,6 +126,15 @@
99
126
  "api": "openai-responses",
100
127
  "baseUrl": "https://opencode.ai/zen/v1",
101
128
  "reasoning": true,
129
+ "thinkingLevelMap": {
130
+ "off": null,
131
+ "minimal": null,
132
+ "low": null,
133
+ "medium": "medium",
134
+ "high": "high",
135
+ "xhigh": "xhigh",
136
+ "max": null
137
+ },
102
138
  "input": [
103
139
  "text",
104
140
  "image"
@@ -118,6 +154,15 @@
118
154
  "api": "openai-completions",
119
155
  "baseUrl": "https://opencode.ai/zen/v1",
120
156
  "reasoning": true,
157
+ "thinkingLevelMap": {
158
+ "off": null,
159
+ "minimal": null,
160
+ "low": "low",
161
+ "medium": null,
162
+ "high": "high",
163
+ "xhigh": null,
164
+ "max": "max"
165
+ },
121
166
  "input": [
122
167
  "text"
123
168
  ],
@@ -136,6 +181,15 @@
136
181
  "api": "anthropic-messages",
137
182
  "baseUrl": "https://opencode.ai/zen",
138
183
  "reasoning": true,
184
+ "thinkingLevelMap": {
185
+ "off": null,
186
+ "minimal": null,
187
+ "low": "low",
188
+ "medium": "medium",
189
+ "high": "high",
190
+ "xhigh": "xhigh",
191
+ "max": "max"
192
+ },
139
193
  "input": [
140
194
  "text",
141
195
  "image"
@@ -155,6 +209,15 @@
155
209
  "api": "google-generative-ai",
156
210
  "baseUrl": "https://opencode.ai/zen/v1",
157
211
  "reasoning": true,
212
+ "thinkingLevelMap": {
213
+ "off": null,
214
+ "minimal": "minimal",
215
+ "low": "low",
216
+ "medium": "medium",
217
+ "high": "high",
218
+ "xhigh": null,
219
+ "max": null
220
+ },
158
221
  "input": [
159
222
  "text",
160
223
  "image"
@@ -174,6 +237,15 @@
174
237
  "api": "google-generative-ai",
175
238
  "baseUrl": "https://opencode.ai/zen/v1",
176
239
  "reasoning": true,
240
+ "thinkingLevelMap": {
241
+ "off": null,
242
+ "minimal": null,
243
+ "low": "low",
244
+ "medium": "medium",
245
+ "high": "high",
246
+ "xhigh": null,
247
+ "max": null
248
+ },
177
249
  "input": [
178
250
  "text",
179
251
  "image"
@@ -193,15 +265,24 @@
193
265
  "api": "openai-responses",
194
266
  "baseUrl": "https://opencode.ai/zen/v1",
195
267
  "reasoning": true,
268
+ "thinkingLevelMap": {
269
+ "off": null,
270
+ "minimal": null,
271
+ "low": "low",
272
+ "medium": "medium",
273
+ "high": "high",
274
+ "xhigh": "xhigh",
275
+ "max": "max"
276
+ },
196
277
  "input": [
197
278
  "text",
198
279
  "image"
199
280
  ],
200
281
  "cost": {
201
- "input": 2.5,
202
- "output": 15,
203
- "cacheRead": 0.25,
204
- "cacheWrite": 3.125
282
+ "input": 2,
283
+ "output": 10,
284
+ "cacheRead": 0.2,
285
+ "cacheWrite": 2.5
205
286
  },
206
287
  "contextWindow": 1050000,
207
288
  "maxTokens": 128000
@@ -212,6 +293,15 @@
212
293
  "api": "openai-responses",
213
294
  "baseUrl": "https://opencode.ai/zen/v1",
214
295
  "reasoning": true,
296
+ "thinkingLevelMap": {
297
+ "off": null,
298
+ "minimal": null,
299
+ "low": "low",
300
+ "medium": "medium",
301
+ "high": "high",
302
+ "xhigh": "xhigh",
303
+ "max": null
304
+ },
215
305
  "input": [
216
306
  "text",
217
307
  "image"
@@ -231,6 +321,15 @@
231
321
  "api": "openai-responses",
232
322
  "baseUrl": "https://opencode.ai/zen/v1",
233
323
  "reasoning": true,
324
+ "thinkingLevelMap": {
325
+ "off": null,
326
+ "minimal": null,
327
+ "low": null,
328
+ "medium": "medium",
329
+ "high": "high",
330
+ "xhigh": "xhigh",
331
+ "max": null
332
+ },
234
333
  "input": [
235
334
  "text",
236
335
  "image"
@@ -268,6 +367,15 @@
268
367
  "api": "openai-responses",
269
368
  "baseUrl": "https://opencode.ai/zen/v1",
270
369
  "reasoning": true,
370
+ "thinkingLevelMap": {
371
+ "off": null,
372
+ "minimal": null,
373
+ "low": "low",
374
+ "medium": "medium",
375
+ "high": "high",
376
+ "xhigh": null,
377
+ "max": null
378
+ },
271
379
  "input": [
272
380
  "text",
273
381
  "image"
@@ -275,7 +383,7 @@
275
383
  "cost": {
276
384
  "input": 2,
277
385
  "output": 6,
278
- "cacheRead": 0.5,
386
+ "cacheRead": 0.3,
279
387
  "cacheWrite": 0
280
388
  },
281
389
  "contextWindow": 500000,
@@ -287,6 +395,15 @@
287
395
  "api": "openai-responses",
288
396
  "baseUrl": "https://opencode.ai/zen/v1",
289
397
  "reasoning": true,
398
+ "thinkingLevelMap": {
399
+ "off": null,
400
+ "minimal": "minimal",
401
+ "low": "low",
402
+ "medium": "medium",
403
+ "high": "high",
404
+ "xhigh": null,
405
+ "max": null
406
+ },
290
407
  "input": [
291
408
  "text",
292
409
  "image"
@@ -306,6 +423,15 @@
306
423
  "api": "openai-completions",
307
424
  "baseUrl": "https://opencode.ai/zen/v1",
308
425
  "reasoning": true,
426
+ "thinkingLevelMap": {
427
+ "off": null,
428
+ "minimal": null,
429
+ "low": null,
430
+ "medium": null,
431
+ "high": "high",
432
+ "xhigh": null,
433
+ "max": "max"
434
+ },
309
435
  "input": [
310
436
  "text"
311
437
  ],
@@ -324,6 +450,15 @@
324
450
  "api": "anthropic-messages",
325
451
  "baseUrl": "https://opencode.ai/zen",
326
452
  "reasoning": true,
453
+ "thinkingLevelMap": {
454
+ "off": null,
455
+ "minimal": null,
456
+ "low": "low",
457
+ "medium": "medium",
458
+ "high": "high",
459
+ "xhigh": "xhigh",
460
+ "max": "max"
461
+ },
327
462
  "input": [
328
463
  "text",
329
464
  "image"
@@ -362,6 +497,15 @@
362
497
  "api": "openai-responses",
363
498
  "baseUrl": "https://opencode.ai/zen/v1",
364
499
  "reasoning": true,
500
+ "thinkingLevelMap": {
501
+ "off": null,
502
+ "minimal": null,
503
+ "low": "low",
504
+ "medium": "medium",
505
+ "high": "high",
506
+ "xhigh": null,
507
+ "max": null
508
+ },
365
509
  "input": [
366
510
  "text",
367
511
  "image"
@@ -381,6 +525,15 @@
381
525
  "api": "openai-responses",
382
526
  "baseUrl": "https://opencode.ai/zen/v1",
383
527
  "reasoning": true,
528
+ "thinkingLevelMap": {
529
+ "off": null,
530
+ "minimal": null,
531
+ "low": "low",
532
+ "medium": "medium",
533
+ "high": "high",
534
+ "xhigh": null,
535
+ "max": null
536
+ },
384
537
  "input": [
385
538
  "text",
386
539
  "image"
@@ -394,12 +547,39 @@
394
547
  "contextWindow": 400000,
395
548
  "maxTokens": 128000
396
549
  },
550
+ {
551
+ "id": "ling-3.0-flash-fin-free",
552
+ "name": "Ling 3.0 Flash Fin Free",
553
+ "api": "openai-completions",
554
+ "baseUrl": "https://opencode.ai/zen/v1",
555
+ "reasoning": true,
556
+ "input": [
557
+ "text"
558
+ ],
559
+ "cost": {
560
+ "input": 0,
561
+ "output": 0,
562
+ "cacheRead": 0,
563
+ "cacheWrite": 0
564
+ },
565
+ "contextWindow": 262144,
566
+ "maxTokens": 32768
567
+ },
397
568
  {
398
569
  "id": "gpt-5.6-luna",
399
570
  "name": "GPT-5.6 Luna",
400
571
  "api": "openai-responses",
401
572
  "baseUrl": "https://opencode.ai/zen/v1",
402
573
  "reasoning": true,
574
+ "thinkingLevelMap": {
575
+ "off": null,
576
+ "minimal": null,
577
+ "low": "low",
578
+ "medium": "medium",
579
+ "high": "high",
580
+ "xhigh": "xhigh",
581
+ "max": "max"
582
+ },
403
583
  "input": [
404
584
  "text",
405
585
  "image"
@@ -474,6 +654,15 @@
474
654
  "api": "openai-completions",
475
655
  "baseUrl": "https://opencode.ai/zen/v1",
476
656
  "reasoning": true,
657
+ "thinkingLevelMap": {
658
+ "off": null,
659
+ "minimal": null,
660
+ "low": "low",
661
+ "medium": "medium",
662
+ "high": "high",
663
+ "xhigh": null,
664
+ "max": null
665
+ },
477
666
  "input": [
478
667
  "text"
479
668
  ],
@@ -492,6 +681,15 @@
492
681
  "api": "openai-responses",
493
682
  "baseUrl": "https://opencode.ai/zen/v1",
494
683
  "reasoning": true,
684
+ "thinkingLevelMap": {
685
+ "off": null,
686
+ "minimal": null,
687
+ "low": "low",
688
+ "medium": "medium",
689
+ "high": "high",
690
+ "xhigh": "xhigh",
691
+ "max": null
692
+ },
495
693
  "input": [
496
694
  "text",
497
695
  "image"
@@ -530,6 +728,15 @@
530
728
  "api": "openai-responses",
531
729
  "baseUrl": "https://opencode.ai/zen/v1",
532
730
  "reasoning": true,
731
+ "thinkingLevelMap": {
732
+ "off": null,
733
+ "minimal": null,
734
+ "low": "low",
735
+ "medium": "medium",
736
+ "high": "high",
737
+ "xhigh": "xhigh",
738
+ "max": null
739
+ },
533
740
  "input": [
534
741
  "text"
535
742
  ],
@@ -548,25 +755,15 @@
548
755
  "api": "openai-responses",
549
756
  "baseUrl": "https://opencode.ai/zen/v1",
550
757
  "reasoning": true,
551
- "input": [
552
- "text",
553
- "image"
554
- ],
555
- "cost": {
556
- "input": 0,
557
- "output": 0,
558
- "cacheRead": 0,
559
- "cacheWrite": 0
758
+ "thinkingLevelMap": {
759
+ "off": null,
760
+ "minimal": "minimal",
761
+ "low": "low",
762
+ "medium": "medium",
763
+ "high": "high",
764
+ "xhigh": "xhigh",
765
+ "max": null
560
766
  },
561
- "contextWindow": 1048576,
562
- "maxTokens": 131072
563
- },
564
- {
565
- "id": "x-preview-f-free",
566
- "name": "Ox Alpha Free (Unlimited)",
567
- "api": "openai-completions",
568
- "baseUrl": "https://opencode.ai/zen/v1",
569
- "reasoning": true,
570
767
  "input": [
571
768
  "text",
572
769
  "image"
@@ -577,7 +774,7 @@
577
774
  "cacheRead": 0,
578
775
  "cacheWrite": 0
579
776
  },
580
- "contextWindow": 1000000,
777
+ "contextWindow": 1048576,
581
778
  "maxTokens": 131072
582
779
  },
583
780
  {
@@ -586,6 +783,15 @@
586
783
  "api": "openai-responses",
587
784
  "baseUrl": "https://opencode.ai/zen/v1",
588
785
  "reasoning": true,
786
+ "thinkingLevelMap": {
787
+ "off": null,
788
+ "minimal": null,
789
+ "low": "low",
790
+ "medium": "medium",
791
+ "high": "high",
792
+ "xhigh": "xhigh",
793
+ "max": null
794
+ },
589
795
  "input": [
590
796
  "text",
591
797
  "image"
@@ -605,6 +811,15 @@
605
811
  "api": "google-generative-ai",
606
812
  "baseUrl": "https://opencode.ai/zen/v1",
607
813
  "reasoning": true,
814
+ "thinkingLevelMap": {
815
+ "off": null,
816
+ "minimal": "minimal",
817
+ "low": "low",
818
+ "medium": "medium",
819
+ "high": "high",
820
+ "xhigh": null,
821
+ "max": null
822
+ },
608
823
  "input": [
609
824
  "text",
610
825
  "image"
@@ -624,6 +839,15 @@
624
839
  "api": "anthropic-messages",
625
840
  "baseUrl": "https://opencode.ai/zen",
626
841
  "reasoning": true,
842
+ "thinkingLevelMap": {
843
+ "off": null,
844
+ "minimal": null,
845
+ "low": "low",
846
+ "medium": "medium",
847
+ "high": "high",
848
+ "xhigh": null,
849
+ "max": null
850
+ },
627
851
  "input": [
628
852
  "text",
629
853
  "image"
@@ -643,6 +867,15 @@
643
867
  "api": "openai-responses",
644
868
  "baseUrl": "https://opencode.ai/zen/v1",
645
869
  "reasoning": true,
870
+ "thinkingLevelMap": {
871
+ "off": null,
872
+ "minimal": null,
873
+ "low": "low",
874
+ "medium": "medium",
875
+ "high": "high",
876
+ "xhigh": "xhigh",
877
+ "max": null
878
+ },
646
879
  "input": [
647
880
  "text",
648
881
  "image"
@@ -662,6 +895,15 @@
662
895
  "api": "anthropic-messages",
663
896
  "baseUrl": "https://opencode.ai/zen",
664
897
  "reasoning": true,
898
+ "thinkingLevelMap": {
899
+ "off": null,
900
+ "minimal": null,
901
+ "low": "low",
902
+ "medium": "medium",
903
+ "high": "high",
904
+ "xhigh": null,
905
+ "max": "max"
906
+ },
665
907
  "input": [
666
908
  "text",
667
909
  "image"
@@ -681,6 +923,15 @@
681
923
  "api": "openai-responses",
682
924
  "baseUrl": "https://opencode.ai/zen/v1",
683
925
  "reasoning": true,
926
+ "thinkingLevelMap": {
927
+ "off": null,
928
+ "minimal": "minimal",
929
+ "low": "low",
930
+ "medium": "medium",
931
+ "high": "high",
932
+ "xhigh": "xhigh",
933
+ "max": null
934
+ },
684
935
  "input": [
685
936
  "text",
686
937
  "image"
@@ -700,6 +951,15 @@
700
951
  "api": "openai-responses",
701
952
  "baseUrl": "https://opencode.ai/zen/v1",
702
953
  "reasoning": true,
954
+ "thinkingLevelMap": {
955
+ "off": null,
956
+ "minimal": null,
957
+ "low": "low",
958
+ "medium": "medium",
959
+ "high": "high",
960
+ "xhigh": "xhigh",
961
+ "max": null
962
+ },
703
963
  "input": [
704
964
  "text",
705
965
  "image"
@@ -738,6 +998,15 @@
738
998
  "api": "openai-responses",
739
999
  "baseUrl": "https://opencode.ai/zen/v1",
740
1000
  "reasoning": true,
1001
+ "thinkingLevelMap": {
1002
+ "off": null,
1003
+ "minimal": null,
1004
+ "low": "low",
1005
+ "medium": "medium",
1006
+ "high": "high",
1007
+ "xhigh": "xhigh",
1008
+ "max": null
1009
+ },
741
1010
  "input": [
742
1011
  "text",
743
1012
  "image"
@@ -776,6 +1045,15 @@
776
1045
  "api": "openai-completions",
777
1046
  "baseUrl": "https://opencode.ai/zen/v1",
778
1047
  "reasoning": true,
1048
+ "thinkingLevelMap": {
1049
+ "off": null,
1050
+ "minimal": null,
1051
+ "low": null,
1052
+ "medium": null,
1053
+ "high": "high",
1054
+ "xhigh": null,
1055
+ "max": "max"
1056
+ },
779
1057
  "input": [
780
1058
  "text"
781
1059
  ],
@@ -831,6 +1109,15 @@
831
1109
  "api": "google-generative-ai",
832
1110
  "baseUrl": "https://opencode.ai/zen/v1",
833
1111
  "reasoning": true,
1112
+ "thinkingLevelMap": {
1113
+ "off": null,
1114
+ "minimal": "minimal",
1115
+ "low": "low",
1116
+ "medium": "medium",
1117
+ "high": "high",
1118
+ "xhigh": null,
1119
+ "max": null
1120
+ },
834
1121
  "input": [
835
1122
  "text",
836
1123
  "image"
@@ -850,6 +1137,15 @@
850
1137
  "api": "openai-responses",
851
1138
  "baseUrl": "https://opencode.ai/zen/v1",
852
1139
  "reasoning": true,
1140
+ "thinkingLevelMap": {
1141
+ "off": null,
1142
+ "minimal": null,
1143
+ "low": "low",
1144
+ "medium": "medium",
1145
+ "high": "high",
1146
+ "xhigh": "xhigh",
1147
+ "max": "max"
1148
+ },
853
1149
  "input": [
854
1150
  "text",
855
1151
  "image"
@@ -869,6 +1165,15 @@
869
1165
  "api": "google-generative-ai",
870
1166
  "baseUrl": "https://opencode.ai/zen/v1",
871
1167
  "reasoning": true,
1168
+ "thinkingLevelMap": {
1169
+ "off": null,
1170
+ "minimal": "minimal",
1171
+ "low": "low",
1172
+ "medium": "medium",
1173
+ "high": "high",
1174
+ "xhigh": null,
1175
+ "max": null
1176
+ },
872
1177
  "input": [
873
1178
  "text",
874
1179
  "image"
@@ -888,6 +1193,15 @@
888
1193
  "api": "openai-responses",
889
1194
  "baseUrl": "https://opencode.ai/zen/v1",
890
1195
  "reasoning": true,
1196
+ "thinkingLevelMap": {
1197
+ "off": null,
1198
+ "minimal": null,
1199
+ "low": "low",
1200
+ "medium": "medium",
1201
+ "high": "high",
1202
+ "xhigh": "xhigh",
1203
+ "max": null
1204
+ },
891
1205
  "input": [
892
1206
  "text",
893
1207
  "image"
@@ -926,6 +1240,15 @@
926
1240
  "api": "anthropic-messages",
927
1241
  "baseUrl": "https://opencode.ai/zen",
928
1242
  "reasoning": true,
1243
+ "thinkingLevelMap": {
1244
+ "off": null,
1245
+ "minimal": null,
1246
+ "low": "low",
1247
+ "medium": "medium",
1248
+ "high": "high",
1249
+ "xhigh": "xhigh",
1250
+ "max": "max"
1251
+ },
929
1252
  "input": [
930
1253
  "text",
931
1254
  "image"
@@ -1000,6 +1323,15 @@
1000
1323
  "api": "openai-responses",
1001
1324
  "baseUrl": "https://opencode.ai/zen/v1",
1002
1325
  "reasoning": true,
1326
+ "thinkingLevelMap": {
1327
+ "off": null,
1328
+ "minimal": null,
1329
+ "low": "low",
1330
+ "medium": "medium",
1331
+ "high": "high",
1332
+ "xhigh": "xhigh",
1333
+ "max": null
1334
+ },
1003
1335
  "input": [
1004
1336
  "text",
1005
1337
  "image"
@@ -1019,6 +1351,15 @@
1019
1351
  "api": "anthropic-messages",
1020
1352
  "baseUrl": "https://opencode.ai/zen",
1021
1353
  "reasoning": true,
1354
+ "thinkingLevelMap": {
1355
+ "off": null,
1356
+ "minimal": null,
1357
+ "low": "low",
1358
+ "medium": "medium",
1359
+ "high": "high",
1360
+ "xhigh": null,
1361
+ "max": "max"
1362
+ },
1022
1363
  "input": [
1023
1364
  "text",
1024
1365
  "image"
@@ -1038,6 +1379,15 @@
1038
1379
  "api": "openai-responses",
1039
1380
  "baseUrl": "https://opencode.ai/zen/v1",
1040
1381
  "reasoning": true,
1382
+ "thinkingLevelMap": {
1383
+ "off": null,
1384
+ "minimal": null,
1385
+ "low": "low",
1386
+ "medium": "medium",
1387
+ "high": "high",
1388
+ "xhigh": null,
1389
+ "max": null
1390
+ },
1041
1391
  "input": [
1042
1392
  "text",
1043
1393
  "image"
@@ -1057,6 +1407,15 @@
1057
1407
  "api": "anthropic-messages",
1058
1408
  "baseUrl": "https://opencode.ai/zen",
1059
1409
  "reasoning": true,
1410
+ "thinkingLevelMap": {
1411
+ "off": null,
1412
+ "minimal": null,
1413
+ "low": "low",
1414
+ "medium": "medium",
1415
+ "high": "high",
1416
+ "xhigh": "xhigh",
1417
+ "max": "max"
1418
+ },
1060
1419
  "input": [
1061
1420
  "text",
1062
1421
  "image"
@@ -1095,6 +1454,15 @@
1095
1454
  "api": "google-generative-ai",
1096
1455
  "baseUrl": "https://opencode.ai/zen/v1",
1097
1456
  "reasoning": true,
1457
+ "thinkingLevelMap": {
1458
+ "off": null,
1459
+ "minimal": null,
1460
+ "low": "low",
1461
+ "medium": "medium",
1462
+ "high": "high",
1463
+ "xhigh": null,
1464
+ "max": null
1465
+ },
1098
1466
  "input": [
1099
1467
  "text",
1100
1468
  "image"
@@ -1114,6 +1482,15 @@
1114
1482
  "api": "openai-responses",
1115
1483
  "baseUrl": "https://opencode.ai/zen/v1",
1116
1484
  "reasoning": true,
1485
+ "thinkingLevelMap": {
1486
+ "off": null,
1487
+ "minimal": null,
1488
+ "low": "low",
1489
+ "medium": "medium",
1490
+ "high": "high",
1491
+ "xhigh": "xhigh",
1492
+ "max": null
1493
+ },
1117
1494
  "input": [
1118
1495
  "text",
1119
1496
  "image"
@@ -1152,6 +1529,15 @@
1152
1529
  "api": "openai-responses",
1153
1530
  "baseUrl": "https://opencode.ai/zen/v1",
1154
1531
  "reasoning": true,
1532
+ "thinkingLevelMap": {
1533
+ "off": null,
1534
+ "minimal": null,
1535
+ "low": "low",
1536
+ "medium": "medium",
1537
+ "high": "high",
1538
+ "xhigh": null,
1539
+ "max": null
1540
+ },
1155
1541
  "input": [
1156
1542
  "text",
1157
1543
  "image"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monotykamary/pi-opencode-provider",
3
- "version": "1.0.12",
3
+ "version": "1.0.14",
4
4
  "description": "Opencode provider extension for pi - Access GPT, Claude, Gemini, GLM, MiniMax, Kimi and more through the opencode.ai API",
5
5
  "type": "module",
6
6
  "main": "index.ts",
package/patch.json CHANGED
@@ -1,4 +1,23 @@
1
1
  {
2
+ "x-preview-f-free": {
3
+ "thinkingLevelMap": {
4
+ "off": null,
5
+ "minimal": null,
6
+ "low": "low",
7
+ "medium": null,
8
+ "high": "high",
9
+ "xhigh": null,
10
+ "max": "max"
11
+ },
12
+ "compat": {
13
+ "supportsStore": false,
14
+ "supportsDeveloperRole": false,
15
+ "maxTokensField": "max_tokens",
16
+ "requiresReasoningContentOnAssistantMessages": true,
17
+ "thinkingFormat": "deepseek",
18
+ "supportsReasoningEffort": true
19
+ }
20
+ },
2
21
  "gpt-5.1-codex-mini": {
3
22
  "thinkingLevelMap": {
4
23
  "off": null,
@@ -66,6 +66,28 @@ function getInputTypes(modalities) {
66
66
  if (!filtered.includes('text')) filtered.unshift('text');
67
67
  return filtered;
68
68
  }
69
+ // Canonical pi thinking levels, in picker order. A null entry excludes a level
70
+ // from the picker; a string maps the pi level to the API effort value (identity
71
+ // here, since models.dev reasoning_options values are the raw effort strings).
72
+ const PI_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
73
+
74
+ // Derive a thinking-level map from models.dev reasoning_options so models that
75
+ // declare effort values (e.g. ox-alpha: low/high/max) get real picker levels
76
+ // without a hand-written patch.json entry. Unadvertised levels and "off" (models
77
+ // that cannot disable thinking, like ox-alpha) map to null.
78
+ function getThinkingLevelMap(model) {
79
+ if (!model.reasoning) return undefined;
80
+ const effort = (model.reasoning_options || []).find((o) => o && o.type === "effort");
81
+ const values = effort && Array.isArray(effort.values) ? effort.values.filter((v) => typeof v === "string") : [];
82
+ if (values.length === 0) return undefined;
83
+ const supported = new Set(values);
84
+ const map = {};
85
+ for (const level of PI_THINKING_LEVELS) {
86
+ map[level] = supported.has(level) ? level : null;
87
+ }
88
+ return map;
89
+ }
90
+
69
91
 
70
92
  // Get API label for display
71
93
  function getApiLabel(api) {
@@ -92,6 +114,9 @@ function convertModel(model) {
92
114
  api,
93
115
  baseUrl,
94
116
  reasoning: model.reasoning || false,
117
+ // JSON.stringify drops undefined-valued keys, so models without effort
118
+ // metadata simply emit no thinkingLevelMap field.
119
+ thinkingLevelMap: getThinkingLevelMap(model),
95
120
  input: inputTypes,
96
121
  cost: {
97
122
  input: cost.input || 0,