@oh-my-pi/pi-ai 13.18.0 → 13.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 CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [13.19.0] - 2026-04-05
6
+
7
+ ### Fixed
8
+
9
+ - Fixed GitHub Copilot model context window detection by correcting fallback priority for maxContextWindowTokens and maxPromptTokens
10
+ - Fixed Gemini 2.5 Pro context window detection in GitHub Copilot model limits test
11
+ - Fixed Claude Opus 4.6 context window detection in GitHub Copilot model limits test
12
+ - Fixed Anthropic streaming to suppress transient SDK console errors for malformed SSE keep-alive frames so the TUI only shows surfaced provider errors
13
+
14
+ - Added environment-based credential fallback for the OpenAI Codex provider.
5
15
  ## [13.17.6] - 2026-04-01
6
16
 
7
17
  ### Fixed
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-ai",
4
- "version": "13.18.0",
4
+ "version": "13.19.0",
5
5
  "description": "Unified LLM API with automatic model discovery and provider configuration",
6
6
  "homepage": "https://github.com/can1357/oh-my-pi",
7
7
  "author": "Can Boluk",
@@ -41,7 +41,7 @@
41
41
  "@aws-sdk/client-bedrock-runtime": "^3",
42
42
  "@bufbuild/protobuf": "^2.11",
43
43
  "@google/genai": "^1.43",
44
- "@oh-my-pi/pi-utils": "13.18.0",
44
+ "@oh-my-pi/pi-utils": "13.19.0",
45
45
  "@sinclair/typebox": "^0.34",
46
46
  "@smithy/node-http-handler": "^4.4",
47
47
  "ajv": "^8.18",
@@ -289,6 +289,13 @@ function applyAnthropicCatalogPolicy(model: ApiModel<Api>, parsedModel: Anthropi
289
289
  model.cost.cacheWrite = 6.25;
290
290
  }
291
291
 
292
+ // GitHub Copilot Opus 4.6: discovery currently reports a stale 144K prompt window,
293
+ // but the model supports a 1M context window. Keep the bundled catalog truthful
294
+ // until Copilot fixes the upstream metadata.
295
+ if (model.provider === "github-copilot" && parsedModel.kind === "opus" && semverEqual(parsedModel.version, "4.6")) {
296
+ model.contextWindow = 1000000;
297
+ }
298
+
292
299
  // Bedrock Opus 4.6: upstream metadata is stale for cache pricing and context.
293
300
  if (model.provider === "amazon-bedrock" && parsedModel.kind === "opus" && semverEqual(parsedModel.version, "4.6")) {
294
301
  model.cost.cacheRead = 0.5;
package/src/models.json CHANGED
@@ -202,6 +202,34 @@
202
202
  "minLevel": "minimal",
203
203
  "maxLevel": "high"
204
204
  }
205
+ },
206
+ "qwen3.6-plus": {
207
+ "id": "qwen3.6-plus",
208
+ "name": "Qwen3.6 Plus",
209
+ "api": "openai-completions",
210
+ "provider": "alibaba-coding-plan",
211
+ "baseUrl": "https://coding-intl.dashscope.aliyuncs.com/v1",
212
+ "reasoning": true,
213
+ "input": [
214
+ "text",
215
+ "image"
216
+ ],
217
+ "cost": {
218
+ "input": 0,
219
+ "output": 0,
220
+ "cacheRead": 0,
221
+ "cacheWrite": 0
222
+ },
223
+ "contextWindow": 1000000,
224
+ "maxTokens": 65536,
225
+ "compat": {
226
+ "supportsDeveloperRole": false
227
+ },
228
+ "thinking": {
229
+ "mode": "effort",
230
+ "minLevel": "minimal",
231
+ "maxLevel": "high"
232
+ }
205
233
  }
206
234
  },
207
235
  "amazon-bedrock": {
@@ -4605,7 +4633,7 @@
4605
4633
  "cacheRead": 0,
4606
4634
  "cacheWrite": 0
4607
4635
  },
4608
- "contextWindow": 144000,
4636
+ "contextWindow": 1000000,
4609
4637
  "maxTokens": 64000,
4610
4638
  "headers": {
4611
4639
  "User-Agent": "GitHubCopilotChat/0.35.0",
@@ -6290,6 +6318,56 @@
6290
6318
  },
6291
6319
  "contextWindow": 131072,
6292
6320
  "maxTokens": 8192
6321
+ },
6322
+ "gemma-4-26b": {
6323
+ "id": "gemma-4-26b",
6324
+ "name": "Gemma 4 26B",
6325
+ "api": "google-generative-ai",
6326
+ "provider": "google",
6327
+ "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
6328
+ "reasoning": true,
6329
+ "input": [
6330
+ "text",
6331
+ "image"
6332
+ ],
6333
+ "cost": {
6334
+ "input": 0,
6335
+ "output": 0,
6336
+ "cacheRead": 0,
6337
+ "cacheWrite": 0
6338
+ },
6339
+ "contextWindow": 256000,
6340
+ "maxTokens": 8192,
6341
+ "thinking": {
6342
+ "mode": "budget",
6343
+ "minLevel": "minimal",
6344
+ "maxLevel": "high"
6345
+ }
6346
+ },
6347
+ "gemma-4-31b": {
6348
+ "id": "gemma-4-31b",
6349
+ "name": "Gemma 4 31B",
6350
+ "api": "google-generative-ai",
6351
+ "provider": "google",
6352
+ "baseUrl": "https://generativelanguage.googleapis.com/v1beta",
6353
+ "reasoning": true,
6354
+ "input": [
6355
+ "text",
6356
+ "image"
6357
+ ],
6358
+ "cost": {
6359
+ "input": 0,
6360
+ "output": 0,
6361
+ "cacheRead": 0,
6362
+ "cacheWrite": 0
6363
+ },
6364
+ "contextWindow": 256000,
6365
+ "maxTokens": 8192,
6366
+ "thinking": {
6367
+ "mode": "budget",
6368
+ "minLevel": "minimal",
6369
+ "maxLevel": "high"
6370
+ }
6293
6371
  }
6294
6372
  },
6295
6373
  "google-antigravity": {
@@ -6813,6 +6891,31 @@
6813
6891
  "minLevel": "low",
6814
6892
  "maxLevel": "high"
6815
6893
  }
6894
+ },
6895
+ "gemini-3.1-flash-lite-preview": {
6896
+ "id": "gemini-3.1-flash-lite-preview",
6897
+ "name": "Gemini 3.1 Flash Lite Preview",
6898
+ "api": "google-gemini-cli",
6899
+ "provider": "google-gemini-cli",
6900
+ "baseUrl": "https://cloudcode-pa.googleapis.com",
6901
+ "reasoning": true,
6902
+ "input": [
6903
+ "text",
6904
+ "image"
6905
+ ],
6906
+ "cost": {
6907
+ "input": 0,
6908
+ "output": 0,
6909
+ "cacheRead": 0,
6910
+ "cacheWrite": 0
6911
+ },
6912
+ "contextWindow": 1048576,
6913
+ "maxTokens": 65536,
6914
+ "thinking": {
6915
+ "mode": "google-level",
6916
+ "minLevel": "minimal",
6917
+ "maxLevel": "high"
6918
+ }
6816
6919
  }
6817
6920
  },
6818
6921
  "google-vertex": {
@@ -8518,6 +8621,25 @@
8518
8621
  "contextWindow": 222222,
8519
8622
  "maxTokens": 8888
8520
8623
  },
8624
+ "bytedance-seed/dola-seed-2.0-pro:free": {
8625
+ "id": "bytedance-seed/dola-seed-2.0-pro:free",
8626
+ "name": "ByteDance Seed: Dola Seed 2.0 Pro (free)",
8627
+ "api": "openai-completions",
8628
+ "provider": "kilo",
8629
+ "baseUrl": "https://api.kilo.ai/api/gateway",
8630
+ "reasoning": false,
8631
+ "input": [
8632
+ "text"
8633
+ ],
8634
+ "cost": {
8635
+ "input": 0,
8636
+ "output": 0,
8637
+ "cacheRead": 0,
8638
+ "cacheWrite": 0
8639
+ },
8640
+ "contextWindow": 222222,
8641
+ "maxTokens": 8888
8642
+ },
8521
8643
  "bytedance-seed/seed-1.6": {
8522
8644
  "id": "bytedance-seed/seed-1.6",
8523
8645
  "name": "ByteDance Seed: Seed 1.6",
@@ -9504,6 +9626,50 @@
9504
9626
  "contextWindow": 128000,
9505
9627
  "maxTokens": 4096
9506
9628
  },
9629
+ "google/gemma-4-26b-a4b-it": {
9630
+ "id": "google/gemma-4-26b-a4b-it",
9631
+ "name": "Google: Gemma 4 26B A4B",
9632
+ "api": "openai-completions",
9633
+ "provider": "kilo",
9634
+ "baseUrl": "https://api.kilo.ai/api/gateway",
9635
+ "reasoning": false,
9636
+ "input": [
9637
+ "text"
9638
+ ],
9639
+ "cost": {
9640
+ "input": 0,
9641
+ "output": 0,
9642
+ "cacheRead": 0,
9643
+ "cacheWrite": 0
9644
+ },
9645
+ "contextWindow": 222222,
9646
+ "maxTokens": 8888
9647
+ },
9648
+ "google/gemma-4-31b-it": {
9649
+ "id": "google/gemma-4-31b-it",
9650
+ "name": "Gemma-4-31B-IT",
9651
+ "api": "openai-completions",
9652
+ "provider": "kilo",
9653
+ "baseUrl": "https://api.kilo.ai/api/gateway",
9654
+ "reasoning": true,
9655
+ "input": [
9656
+ "text",
9657
+ "image"
9658
+ ],
9659
+ "cost": {
9660
+ "input": 0,
9661
+ "output": 0,
9662
+ "cacheRead": 0,
9663
+ "cacheWrite": 0
9664
+ },
9665
+ "contextWindow": 256000,
9666
+ "maxTokens": 16384,
9667
+ "thinking": {
9668
+ "mode": "effort",
9669
+ "minLevel": "minimal",
9670
+ "maxLevel": "xhigh"
9671
+ }
9672
+ },
9507
9673
  "google/lyria-3-clip-preview": {
9508
9674
  "id": "google/lyria-3-clip-preview",
9509
9675
  "name": "Google: Lyria 3 Clip Preview",
@@ -13889,6 +14055,25 @@
13889
14055
  "contextWindow": 222222,
13890
14056
  "maxTokens": 8888
13891
14057
  },
14058
+ "qwen/qwen3.6-plus:free": {
14059
+ "id": "qwen/qwen3.6-plus:free",
14060
+ "name": "Qwen: Qwen3.6 Plus (free)",
14061
+ "api": "openai-completions",
14062
+ "provider": "kilo",
14063
+ "baseUrl": "https://api.kilo.ai/api/gateway",
14064
+ "reasoning": false,
14065
+ "input": [
14066
+ "text"
14067
+ ],
14068
+ "cost": {
14069
+ "input": 0,
14070
+ "output": 0,
14071
+ "cacheRead": 0,
14072
+ "cacheWrite": 0
14073
+ },
14074
+ "contextWindow": 222222,
14075
+ "maxTokens": 8888
14076
+ },
13892
14077
  "qwen/qwq-32b": {
13893
14078
  "id": "qwen/qwq-32b",
13894
14079
  "name": "Qwen: QwQ 32B",
@@ -14969,13 +15154,14 @@
14969
15154
  },
14970
15155
  "z-ai/glm-5v-turbo": {
14971
15156
  "id": "z-ai/glm-5v-turbo",
14972
- "name": "Z.ai: GLM 5V Turbo",
15157
+ "name": "GLM 5V Turbo",
14973
15158
  "api": "openai-completions",
14974
15159
  "provider": "kilo",
14975
15160
  "baseUrl": "https://api.kilo.ai/api/gateway",
14976
- "reasoning": false,
15161
+ "reasoning": true,
14977
15162
  "input": [
14978
- "text"
15163
+ "text",
15164
+ "image"
14979
15165
  ],
14980
15166
  "cost": {
14981
15167
  "input": 0,
@@ -14983,8 +15169,13 @@
14983
15169
  "cacheRead": 0,
14984
15170
  "cacheWrite": 0
14985
15171
  },
14986
- "contextWindow": 222222,
14987
- "maxTokens": 8888
15172
+ "contextWindow": 200000,
15173
+ "maxTokens": 128000,
15174
+ "thinking": {
15175
+ "mode": "effort",
15176
+ "minLevel": "minimal",
15177
+ "maxLevel": "xhigh"
15178
+ }
14988
15179
  }
14989
15180
  },
14990
15181
  "kimi-code": {
@@ -18257,6 +18448,30 @@
18257
18448
  "contextWindow": 222222,
18258
18449
  "maxTokens": 8888
18259
18450
  },
18451
+ "arcee-ai/trinity-large-thinking": {
18452
+ "id": "arcee-ai/trinity-large-thinking",
18453
+ "name": "Arcee AI: Trinity Large Thinking",
18454
+ "api": "openai-completions",
18455
+ "provider": "nanogpt",
18456
+ "baseUrl": "https://nano-gpt.com/api/v1",
18457
+ "reasoning": true,
18458
+ "input": [
18459
+ "text"
18460
+ ],
18461
+ "cost": {
18462
+ "input": 0.25,
18463
+ "output": 0.8999999999999999,
18464
+ "cacheRead": 0.06,
18465
+ "cacheWrite": 0
18466
+ },
18467
+ "contextWindow": 262144,
18468
+ "maxTokens": 80000,
18469
+ "thinking": {
18470
+ "mode": "effort",
18471
+ "minLevel": "minimal",
18472
+ "maxLevel": "xhigh"
18473
+ }
18474
+ },
18260
18475
  "arcee-ai/trinity-mini": {
18261
18476
  "id": "arcee-ai/trinity-mini",
18262
18477
  "name": "Arcee AI: Trinity Mini",
@@ -21562,6 +21777,25 @@
21562
21777
  "contextWindow": 222222,
21563
21778
  "maxTokens": 8888
21564
21779
  },
21780
+ "glm-4.7-flash-heretic": {
21781
+ "id": "glm-4.7-flash-heretic",
21782
+ "name": "glm-4.7-flash-heretic",
21783
+ "api": "openai-completions",
21784
+ "provider": "nanogpt",
21785
+ "baseUrl": "https://nano-gpt.com/api/v1",
21786
+ "reasoning": false,
21787
+ "input": [
21788
+ "text"
21789
+ ],
21790
+ "cost": {
21791
+ "input": 0,
21792
+ "output": 0,
21793
+ "cacheRead": 0,
21794
+ "cacheWrite": 0
21795
+ },
21796
+ "contextWindow": 222222,
21797
+ "maxTokens": 8888
21798
+ },
21565
21799
  "glm-z1-air": {
21566
21800
  "id": "glm-z1-air",
21567
21801
  "name": "glm-z1-air",
@@ -21847,6 +22081,56 @@
21847
22081
  "contextWindow": 222222,
21848
22082
  "maxTokens": 8888
21849
22083
  },
22084
+ "google/gemma-4-26b-a4b-it": {
22085
+ "id": "google/gemma-4-26b-a4b-it",
22086
+ "name": "Google: Gemma 4 26B A4B",
22087
+ "api": "openai-completions",
22088
+ "provider": "nanogpt",
22089
+ "baseUrl": "https://nano-gpt.com/api/v1",
22090
+ "reasoning": true,
22091
+ "input": [
22092
+ "text",
22093
+ "image"
22094
+ ],
22095
+ "cost": {
22096
+ "input": 0.13,
22097
+ "output": 0.39999999999999997,
22098
+ "cacheRead": 0,
22099
+ "cacheWrite": 0
22100
+ },
22101
+ "contextWindow": 262144,
22102
+ "maxTokens": 262144,
22103
+ "thinking": {
22104
+ "mode": "effort",
22105
+ "minLevel": "minimal",
22106
+ "maxLevel": "xhigh"
22107
+ }
22108
+ },
22109
+ "google/gemma-4-31b-it": {
22110
+ "id": "google/gemma-4-31b-it",
22111
+ "name": "Gemma-4-31B-IT",
22112
+ "api": "openai-completions",
22113
+ "provider": "nanogpt",
22114
+ "baseUrl": "https://nano-gpt.com/api/v1",
22115
+ "reasoning": true,
22116
+ "input": [
22117
+ "text",
22118
+ "image"
22119
+ ],
22120
+ "cost": {
22121
+ "input": 0,
22122
+ "output": 0,
22123
+ "cacheRead": 0,
22124
+ "cacheWrite": 0
22125
+ },
22126
+ "contextWindow": 256000,
22127
+ "maxTokens": 16384,
22128
+ "thinking": {
22129
+ "mode": "effort",
22130
+ "minLevel": "minimal",
22131
+ "maxLevel": "xhigh"
22132
+ }
22133
+ },
21850
22134
  "grok-3-beta": {
21851
22135
  "id": "grok-3-beta",
21852
22136
  "name": "grok-3-beta",
@@ -25945,6 +26229,25 @@
25945
26229
  "contextWindow": 222222,
25946
26230
  "maxTokens": 8888
25947
26231
  },
26232
+ "qwen-3.6-plus": {
26233
+ "id": "qwen-3.6-plus",
26234
+ "name": "qwen-3.6-plus",
26235
+ "api": "openai-completions",
26236
+ "provider": "nanogpt",
26237
+ "baseUrl": "https://nano-gpt.com/api/v1",
26238
+ "reasoning": false,
26239
+ "input": [
26240
+ "text"
26241
+ ],
26242
+ "cost": {
26243
+ "input": 0,
26244
+ "output": 0,
26245
+ "cacheRead": 0,
26246
+ "cacheWrite": 0
26247
+ },
26248
+ "contextWindow": 222222,
26249
+ "maxTokens": 8888
26250
+ },
25948
26251
  "qwen-long": {
25949
26252
  "id": "qwen-long",
25950
26253
  "name": "qwen-long",
@@ -27514,6 +27817,25 @@
27514
27817
  "contextWindow": 222222,
27515
27818
  "maxTokens": 8888
27516
27819
  },
27820
+ "TEE/gemma4-31b": {
27821
+ "id": "TEE/gemma4-31b",
27822
+ "name": "TEE/gemma4-31b",
27823
+ "api": "openai-completions",
27824
+ "provider": "nanogpt",
27825
+ "baseUrl": "https://nano-gpt.com/api/v1",
27826
+ "reasoning": false,
27827
+ "input": [
27828
+ "text"
27829
+ ],
27830
+ "cost": {
27831
+ "input": 0,
27832
+ "output": 0,
27833
+ "cacheRead": 0,
27834
+ "cacheWrite": 0
27835
+ },
27836
+ "contextWindow": 222222,
27837
+ "maxTokens": 8888
27838
+ },
27517
27839
  "TEE/glm-4.6": {
27518
27840
  "id": "TEE/glm-4.6",
27519
27841
  "name": "TEE/glm-4.6",
@@ -28543,22 +28865,28 @@
28543
28865
  },
28544
28866
  "x-ai/grok-4.20": {
28545
28867
  "id": "x-ai/grok-4.20",
28546
- "name": "x-ai/grok-4.20",
28868
+ "name": "xAI: Grok 4.20",
28547
28869
  "api": "openai-completions",
28548
28870
  "provider": "nanogpt",
28549
28871
  "baseUrl": "https://nano-gpt.com/api/v1",
28550
- "reasoning": false,
28872
+ "reasoning": true,
28551
28873
  "input": [
28552
- "text"
28874
+ "text",
28875
+ "image"
28553
28876
  ],
28554
28877
  "cost": {
28555
- "input": 0,
28556
- "output": 0,
28557
- "cacheRead": 0,
28878
+ "input": 2,
28879
+ "output": 6,
28880
+ "cacheRead": 0.19999999999999998,
28558
28881
  "cacheWrite": 0
28559
28882
  },
28560
- "contextWindow": 222222,
28561
- "maxTokens": 8888
28883
+ "contextWindow": 2000000,
28884
+ "maxTokens": 8888,
28885
+ "thinking": {
28886
+ "mode": "effort",
28887
+ "minLevel": "minimal",
28888
+ "maxLevel": "xhigh"
28889
+ }
28562
28890
  },
28563
28891
  "x-ai/grok-4.20-beta-non-reasoning": {
28564
28892
  "id": "x-ai/grok-4.20-beta-non-reasoning",
@@ -28916,6 +29244,31 @@
28916
29244
  "maxLevel": "xhigh"
28917
29245
  }
28918
29246
  },
29247
+ "z-ai/glm-5v-turbo": {
29248
+ "id": "z-ai/glm-5v-turbo",
29249
+ "name": "GLM 5V Turbo",
29250
+ "api": "openai-completions",
29251
+ "provider": "nanogpt",
29252
+ "baseUrl": "https://nano-gpt.com/api/v1",
29253
+ "reasoning": true,
29254
+ "input": [
29255
+ "text",
29256
+ "image"
29257
+ ],
29258
+ "cost": {
29259
+ "input": 0,
29260
+ "output": 0,
29261
+ "cacheRead": 0,
29262
+ "cacheWrite": 0
29263
+ },
29264
+ "contextWindow": 200000,
29265
+ "maxTokens": 128000,
29266
+ "thinking": {
29267
+ "mode": "effort",
29268
+ "minLevel": "minimal",
29269
+ "maxLevel": "xhigh"
29270
+ }
29271
+ },
28919
29272
  "zai-org/glm-4.5": {
28920
29273
  "id": "zai-org/glm-4.5",
28921
29274
  "name": "zai-org/glm-4.5",
@@ -29486,6 +29839,31 @@
29486
29839
  "contextWindow": 128000,
29487
29840
  "maxTokens": 4096
29488
29841
  },
29842
+ "google/gemma-4-31b-it": {
29843
+ "id": "google/gemma-4-31b-it",
29844
+ "name": "Gemma-4-31B-IT",
29845
+ "api": "openai-completions",
29846
+ "provider": "nvidia",
29847
+ "baseUrl": "https://integrate.api.nvidia.com/v1",
29848
+ "reasoning": true,
29849
+ "input": [
29850
+ "text",
29851
+ "image"
29852
+ ],
29853
+ "cost": {
29854
+ "input": 0,
29855
+ "output": 0,
29856
+ "cacheRead": 0,
29857
+ "cacheWrite": 0
29858
+ },
29859
+ "contextWindow": 256000,
29860
+ "maxTokens": 16384,
29861
+ "thinking": {
29862
+ "mode": "effort",
29863
+ "minLevel": "minimal",
29864
+ "maxLevel": "xhigh"
29865
+ }
29866
+ },
29489
29867
  "meta/llama-3.1-405b-instruct": {
29490
29868
  "id": "meta/llama-3.1-405b-instruct",
29491
29869
  "name": "Llama 3.1 405b Instruct",
@@ -32042,12 +32420,61 @@
32042
32420
  "maxLevel": "xhigh"
32043
32421
  }
32044
32422
  },
32423
+ "mimo-v2-omni": {
32424
+ "id": "mimo-v2-omni",
32425
+ "name": "MiMo V2 Omni",
32426
+ "api": "openai-completions",
32427
+ "provider": "opencode-go",
32428
+ "baseUrl": "https://opencode.ai/zen/go/v1",
32429
+ "reasoning": true,
32430
+ "input": [
32431
+ "text",
32432
+ "image"
32433
+ ],
32434
+ "cost": {
32435
+ "input": 0.4,
32436
+ "output": 2,
32437
+ "cacheRead": 0.08,
32438
+ "cacheWrite": 0
32439
+ },
32440
+ "contextWindow": 262144,
32441
+ "maxTokens": 64000,
32442
+ "thinking": {
32443
+ "mode": "effort",
32444
+ "minLevel": "minimal",
32445
+ "maxLevel": "xhigh"
32446
+ }
32447
+ },
32448
+ "mimo-v2-pro": {
32449
+ "id": "mimo-v2-pro",
32450
+ "name": "MiMo V2 Pro",
32451
+ "api": "openai-completions",
32452
+ "provider": "opencode-go",
32453
+ "baseUrl": "https://opencode.ai/zen/go/v1",
32454
+ "reasoning": true,
32455
+ "input": [
32456
+ "text"
32457
+ ],
32458
+ "cost": {
32459
+ "input": 1,
32460
+ "output": 3,
32461
+ "cacheRead": 0.2,
32462
+ "cacheWrite": 0
32463
+ },
32464
+ "contextWindow": 1048576,
32465
+ "maxTokens": 64000,
32466
+ "thinking": {
32467
+ "mode": "effort",
32468
+ "minLevel": "minimal",
32469
+ "maxLevel": "xhigh"
32470
+ }
32471
+ },
32045
32472
  "minimax-m2.5": {
32046
32473
  "id": "minimax-m2.5",
32047
32474
  "name": "MiniMax M2.5",
32048
- "api": "anthropic-messages",
32475
+ "api": "openai-completions",
32049
32476
  "provider": "opencode-go",
32050
- "baseUrl": "https://opencode.ai/zen/go",
32477
+ "baseUrl": "https://opencode.ai/zen/go/v1",
32051
32478
  "reasoning": true,
32052
32479
  "input": [
32053
32480
  "text"
@@ -32061,7 +32488,7 @@
32061
32488
  "contextWindow": 204800,
32062
32489
  "maxTokens": 131072,
32063
32490
  "thinking": {
32064
- "mode": "budget",
32491
+ "mode": "effort",
32065
32492
  "minLevel": "minimal",
32066
32493
  "maxLevel": "xhigh"
32067
32494
  }
@@ -33062,7 +33489,7 @@
33062
33489
  "cacheRead": 0,
33063
33490
  "cacheWrite": 0
33064
33491
  },
33065
- "contextWindow": 1000000,
33492
+ "contextWindow": 204800,
33066
33493
  "maxTokens": 128000,
33067
33494
  "thinking": {
33068
33495
  "mode": "effort",
@@ -33631,13 +34058,13 @@
33631
34058
  "text"
33632
34059
  ],
33633
34060
  "cost": {
33634
- "input": 0.25,
33635
- "output": 0.8999999999999999,
34061
+ "input": 0.22,
34062
+ "output": 0.85,
33636
34063
  "cacheRead": 0.06,
33637
34064
  "cacheWrite": 0
33638
34065
  },
33639
34066
  "contextWindow": 262144,
33640
- "maxTokens": 80000,
34067
+ "maxTokens": 262144,
33641
34068
  "thinking": {
33642
34069
  "mode": "effort",
33643
34070
  "minLevel": "minimal",
@@ -34251,7 +34678,7 @@
34251
34678
  "cacheWrite": 0.08333333333333334
34252
34679
  },
34253
34680
  "contextWindow": 1048576,
34254
- "maxTokens": 65536,
34681
+ "maxTokens": 65535,
34255
34682
  "thinking": {
34256
34683
  "mode": "effort",
34257
34684
  "minLevel": "minimal",
@@ -34523,6 +34950,56 @@
34523
34950
  "contextWindow": 131072,
34524
34951
  "maxTokens": 8192
34525
34952
  },
34953
+ "google/gemma-4-26b-a4b-it": {
34954
+ "id": "google/gemma-4-26b-a4b-it",
34955
+ "name": "Google: Gemma 4 26B A4B",
34956
+ "api": "openai-completions",
34957
+ "provider": "openrouter",
34958
+ "baseUrl": "https://openrouter.ai/api/v1",
34959
+ "reasoning": true,
34960
+ "input": [
34961
+ "text",
34962
+ "image"
34963
+ ],
34964
+ "cost": {
34965
+ "input": 0.13,
34966
+ "output": 0.39999999999999997,
34967
+ "cacheRead": 0,
34968
+ "cacheWrite": 0
34969
+ },
34970
+ "contextWindow": 262144,
34971
+ "maxTokens": 262144,
34972
+ "thinking": {
34973
+ "mode": "effort",
34974
+ "minLevel": "minimal",
34975
+ "maxLevel": "high"
34976
+ }
34977
+ },
34978
+ "google/gemma-4-31b-it": {
34979
+ "id": "google/gemma-4-31b-it",
34980
+ "name": "Gemma-4-31B-IT",
34981
+ "api": "openai-completions",
34982
+ "provider": "openrouter",
34983
+ "baseUrl": "https://openrouter.ai/api/v1",
34984
+ "reasoning": true,
34985
+ "input": [
34986
+ "text",
34987
+ "image"
34988
+ ],
34989
+ "cost": {
34990
+ "input": 0.14,
34991
+ "output": 0.39999999999999997,
34992
+ "cacheRead": 0,
34993
+ "cacheWrite": 0
34994
+ },
34995
+ "contextWindow": 256000,
34996
+ "maxTokens": 16384,
34997
+ "thinking": {
34998
+ "mode": "effort",
34999
+ "minLevel": "minimal",
35000
+ "maxLevel": "high"
35001
+ }
35002
+ },
34526
35003
  "inception/mercury": {
34527
35004
  "id": "inception/mercury",
34528
35005
  "name": "Inception: Mercury",
@@ -34879,9 +35356,9 @@
34879
35356
  "text"
34880
35357
  ],
34881
35358
  "cost": {
34882
- "input": 0.12,
34883
- "output": 1,
34884
- "cacheRead": 0.06,
35359
+ "input": 0.118,
35360
+ "output": 0.9900000000000001,
35361
+ "cacheRead": 0.059,
34885
35362
  "cacheWrite": 0
34886
35363
  },
34887
35364
  "contextWindow": 204800,
@@ -35527,9 +36004,9 @@
35527
36004
  "image"
35528
36005
  ],
35529
36006
  "cost": {
35530
- "input": 0.42,
35531
- "output": 2.2,
35532
- "cacheRead": 0.21,
36007
+ "input": 0.3827,
36008
+ "output": 1.72,
36009
+ "cacheRead": 0.1935,
35533
36010
  "cacheWrite": 0
35534
36011
  },
35535
36012
  "contextWindow": 262144,
@@ -38279,6 +38756,31 @@
38279
38756
  "maxLevel": "high"
38280
38757
  }
38281
38758
  },
38759
+ "qwen/qwen3.6-plus:free": {
38760
+ "id": "qwen/qwen3.6-plus:free",
38761
+ "name": "Qwen: Qwen3.6 Plus (free)",
38762
+ "api": "openai-completions",
38763
+ "provider": "openrouter",
38764
+ "baseUrl": "https://openrouter.ai/api/v1",
38765
+ "reasoning": true,
38766
+ "input": [
38767
+ "text",
38768
+ "image"
38769
+ ],
38770
+ "cost": {
38771
+ "input": 0,
38772
+ "output": 0,
38773
+ "cacheRead": 0,
38774
+ "cacheWrite": 0
38775
+ },
38776
+ "contextWindow": 1000000,
38777
+ "maxTokens": 65536,
38778
+ "thinking": {
38779
+ "mode": "effort",
38780
+ "minLevel": "minimal",
38781
+ "maxLevel": "high"
38782
+ }
38783
+ },
38282
38784
  "qwen/qwq-32b": {
38283
38785
  "id": "qwen/qwq-32b",
38284
38786
  "name": "Qwen: QwQ 32B",
@@ -39174,7 +39676,7 @@
39174
39676
  },
39175
39677
  "z-ai/glm-5v-turbo": {
39176
39678
  "id": "z-ai/glm-5v-turbo",
39177
- "name": "Z.ai: GLM 5V Turbo",
39679
+ "name": "GLM 5V Turbo",
39178
39680
  "api": "openai-completions",
39179
39681
  "provider": "openrouter",
39180
39682
  "baseUrl": "https://openrouter.ai/api/v1",
@@ -39189,8 +39691,8 @@
39189
39691
  "cacheRead": 0.24,
39190
39692
  "cacheWrite": 0
39191
39693
  },
39192
- "contextWindow": 202752,
39193
- "maxTokens": 131072,
39694
+ "contextWindow": 200000,
39695
+ "maxTokens": 128000,
39194
39696
  "thinking": {
39195
39697
  "mode": "effort",
39196
39698
  "minLevel": "minimal",
@@ -39813,6 +40315,28 @@
39813
40315
  "supportsUsageInStreaming": false
39814
40316
  }
39815
40317
  },
40318
+ "arcee-trinity-large-thinking": {
40319
+ "id": "arcee-trinity-large-thinking",
40320
+ "name": "arcee-trinity-large-thinking",
40321
+ "api": "openai-completions",
40322
+ "provider": "venice",
40323
+ "baseUrl": "https://api.venice.ai/api/v1",
40324
+ "reasoning": false,
40325
+ "input": [
40326
+ "text"
40327
+ ],
40328
+ "cost": {
40329
+ "input": 0,
40330
+ "output": 0,
40331
+ "cacheRead": 0,
40332
+ "cacheWrite": 0
40333
+ },
40334
+ "contextWindow": 222222,
40335
+ "maxTokens": 8888,
40336
+ "compat": {
40337
+ "supportsUsageInStreaming": false
40338
+ }
40339
+ },
39816
40340
  "claude-opus-4-5": {
39817
40341
  "id": "claude-opus-4-5",
39818
40342
  "name": "Claude Opus 4.5 (latest)",
@@ -40351,6 +40875,50 @@
40351
40875
  "supportsUsageInStreaming": false
40352
40876
  }
40353
40877
  },
40878
+ "google.gemma-4-26b-a4b-it": {
40879
+ "id": "google.gemma-4-26b-a4b-it",
40880
+ "name": "google.gemma-4-26b-a4b-it",
40881
+ "api": "openai-completions",
40882
+ "provider": "venice",
40883
+ "baseUrl": "https://api.venice.ai/api/v1",
40884
+ "reasoning": false,
40885
+ "input": [
40886
+ "text"
40887
+ ],
40888
+ "cost": {
40889
+ "input": 0,
40890
+ "output": 0,
40891
+ "cacheRead": 0,
40892
+ "cacheWrite": 0
40893
+ },
40894
+ "contextWindow": 222222,
40895
+ "maxTokens": 8888,
40896
+ "compat": {
40897
+ "supportsUsageInStreaming": false
40898
+ }
40899
+ },
40900
+ "google.gemma-4-31b-it": {
40901
+ "id": "google.gemma-4-31b-it",
40902
+ "name": "google.gemma-4-31b-it",
40903
+ "api": "openai-completions",
40904
+ "provider": "venice",
40905
+ "baseUrl": "https://api.venice.ai/api/v1",
40906
+ "reasoning": false,
40907
+ "input": [
40908
+ "text"
40909
+ ],
40910
+ "cost": {
40911
+ "input": 0,
40912
+ "output": 0,
40913
+ "cacheRead": 0,
40914
+ "cacheWrite": 0
40915
+ },
40916
+ "contextWindow": 222222,
40917
+ "maxTokens": 8888,
40918
+ "compat": {
40919
+ "supportsUsageInStreaming": false
40920
+ }
40921
+ },
40354
40922
  "grok-4-20-beta": {
40355
40923
  "id": "grok-4-20-beta",
40356
40924
  "name": "grok-4-20-beta",
@@ -45167,6 +45735,31 @@
45167
45735
  "minLevel": "minimal",
45168
45736
  "maxLevel": "xhigh"
45169
45737
  }
45738
+ },
45739
+ "glm-5v-turbo": {
45740
+ "id": "glm-5v-turbo",
45741
+ "name": "glm-5v-turbo",
45742
+ "api": "anthropic-messages",
45743
+ "provider": "zai",
45744
+ "baseUrl": "https://api.z.ai/api/anthropic",
45745
+ "reasoning": true,
45746
+ "input": [
45747
+ "text",
45748
+ "image"
45749
+ ],
45750
+ "cost": {
45751
+ "input": 0,
45752
+ "output": 0,
45753
+ "cacheRead": 0,
45754
+ "cacheWrite": 0
45755
+ },
45756
+ "contextWindow": 200000,
45757
+ "maxTokens": 131072,
45758
+ "thinking": {
45759
+ "mode": "budget",
45760
+ "minLevel": "minimal",
45761
+ "maxLevel": "xhigh"
45762
+ }
45170
45763
  }
45171
45764
  },
45172
45765
  "zenmux": {
@@ -45514,7 +46107,7 @@
45514
46107
  "cacheRead": 0.056,
45515
46108
  "cacheWrite": 0
45516
46109
  },
45517
- "contextWindow": 128000,
46110
+ "contextWindow": 163840,
45518
46111
  "maxTokens": 8888
45519
46112
  },
45520
46113
  "deepseek/deepseek-r1-0528": {
@@ -46089,7 +46682,7 @@
46089
46682
  },
46090
46683
  "kuaishou/kat-coder-pro-v2": {
46091
46684
  "id": "kuaishou/kat-coder-pro-v2",
46092
- "name": "KwaiKAT: KAT-Coder-Pro-V2",
46685
+ "name": "KAT-Coder-Pro-V2",
46093
46686
  "api": "openai-completions",
46094
46687
  "provider": "zenmux",
46095
46688
  "baseUrl": "https://zenmux.ai/api/v1",
@@ -46104,7 +46697,7 @@
46104
46697
  "cacheWrite": 0
46105
46698
  },
46106
46699
  "contextWindow": 256000,
46107
- "maxTokens": 8888
46700
+ "maxTokens": 80000
46108
46701
  },
46109
46702
  "meta/llama-3.3-70b-instruct": {
46110
46703
  "id": "meta/llama-3.3-70b-instruct",
@@ -46344,7 +46937,7 @@
46344
46937
  "cacheRead": 0.2,
46345
46938
  "cacheWrite": 0.003
46346
46939
  },
46347
- "contextWindow": 128000,
46940
+ "contextWindow": 32768,
46348
46941
  "maxTokens": 8888
46349
46942
  },
46350
46943
  "moonshotai/kimi-k2-0905": {
@@ -47258,6 +47851,30 @@
47258
47851
  "maxLevel": "high"
47259
47852
  }
47260
47853
  },
47854
+ "qwen/qwen3.6-plus": {
47855
+ "id": "qwen/qwen3.6-plus",
47856
+ "name": "Qwen3.6-Plus",
47857
+ "api": "openai-completions",
47858
+ "provider": "zenmux",
47859
+ "baseUrl": "https://zenmux.ai/api/v1",
47860
+ "reasoning": true,
47861
+ "input": [
47862
+ "text"
47863
+ ],
47864
+ "cost": {
47865
+ "input": 0.5,
47866
+ "output": 3,
47867
+ "cacheRead": 0.05,
47868
+ "cacheWrite": 0.625
47869
+ },
47870
+ "contextWindow": 1000000,
47871
+ "maxTokens": 64000,
47872
+ "thinking": {
47873
+ "mode": "effort",
47874
+ "minLevel": "minimal",
47875
+ "maxLevel": "high"
47876
+ }
47877
+ },
47261
47878
  "sapiens-ai/agnes-1.5-lite": {
47262
47879
  "id": "sapiens-ai/agnes-1.5-lite",
47263
47880
  "name": "Sapiens AI: Agnes-1.5-Lite",
@@ -48111,6 +48728,31 @@
48111
48728
  "minLevel": "minimal",
48112
48729
  "maxLevel": "xhigh"
48113
48730
  }
48731
+ },
48732
+ "z-ai/glm-5v-turbo": {
48733
+ "id": "z-ai/glm-5v-turbo",
48734
+ "name": "GLM 5V Turbo",
48735
+ "api": "openai-completions",
48736
+ "provider": "zenmux",
48737
+ "baseUrl": "https://zenmux.ai/api/v1",
48738
+ "reasoning": true,
48739
+ "input": [
48740
+ "text",
48741
+ "image"
48742
+ ],
48743
+ "cost": {
48744
+ "input": 0.726,
48745
+ "output": 3.1946,
48746
+ "cacheRead": 0.1743,
48747
+ "cacheWrite": 0
48748
+ },
48749
+ "contextWindow": 200000,
48750
+ "maxTokens": 128000,
48751
+ "thinking": {
48752
+ "mode": "effort",
48753
+ "minLevel": "minimal",
48754
+ "maxLevel": "xhigh"
48755
+ }
48114
48756
  }
48115
48757
  }
48116
48758
  }
@@ -1519,9 +1519,9 @@ export function githubCopilotModelManagerOptions(config?: GithubCopilotModelMana
1519
1519
  const contextWindow = toPositiveNumber(
1520
1520
  entry.context_length,
1521
1521
  toPositiveNumber(
1522
- copilotLimits.maxPromptTokens,
1522
+ copilotLimits.maxContextWindowTokens,
1523
1523
  toPositiveNumber(
1524
- copilotLimits.maxContextWindowTokens,
1524
+ copilotLimits.maxPromptTokens,
1525
1525
  reference?.contextWindow ?? defaults.contextWindow,
1526
1526
  ),
1527
1527
  ),
@@ -415,6 +415,7 @@ export type AnthropicClientOptionsResult = {
415
415
  maxRetries: number;
416
416
  dangerouslyAllowBrowser: boolean;
417
417
  defaultHeaders: Record<string, string>;
418
+ logLevel: AnthropicSdkClientOptions["logLevel"];
418
419
  fetchOptions?: AnthropicSdkClientOptions["fetchOptions"];
419
420
  };
420
421
 
@@ -557,6 +558,10 @@ function mergeHeaders(...headerSources: (Record<string, string> | undefined)[]):
557
558
  return merged;
558
559
  }
559
560
 
561
+ // The Anthropic SDK logs malformed SSE frames directly before rethrowing them.
562
+ // We surface the resulting provider error ourselves, so keep the SDK quiet.
563
+ const ANTHROPIC_SDK_LOG_LEVEL = "off" as const;
564
+
560
565
  const PROVIDER_MAX_RETRIES = 3;
561
566
  const PROVIDER_BASE_DELAY_MS = 2000;
562
567
 
@@ -1024,6 +1029,7 @@ export function buildAnthropicClientOptions(args: AnthropicClientOptionsArgs): A
1024
1029
  maxRetries: 5,
1025
1030
  dangerouslyAllowBrowser: true,
1026
1031
  defaultHeaders,
1032
+ logLevel: ANTHROPIC_SDK_LOG_LEVEL,
1027
1033
  ...(tlsFetchOptions ? { fetchOptions: tlsFetchOptions } : {}),
1028
1034
  };
1029
1035
  }
@@ -1050,6 +1056,7 @@ export function buildAnthropicClientOptions(args: AnthropicClientOptionsArgs): A
1050
1056
  maxRetries: 5,
1051
1057
  dangerouslyAllowBrowser: true,
1052
1058
  defaultHeaders,
1059
+ logLevel: ANTHROPIC_SDK_LOG_LEVEL,
1053
1060
  ...(tlsFetchOptions ? { fetchOptions: tlsFetchOptions } : {}),
1054
1061
  };
1055
1062
  }
package/src/stream.ts CHANGED
@@ -78,6 +78,7 @@ const serviceProviderMap: Record<string, KeyResolver> = {
78
78
  "opencode-go": "OPENCODE_API_KEY",
79
79
  "opencode-zen": "OPENCODE_API_KEY",
80
80
  cursor: "CURSOR_ACCESS_TOKEN",
81
+ "openai-codex": "OPENAI_CODEX_OAUTH_TOKEN",
81
82
  "azure-openai-responses": "AZURE_OPENAI_API_KEY",
82
83
  exa: "EXA_API_KEY",
83
84
  jina: "JINA_API_KEY",