@oh-my-pi/pi-ai 13.3.2 → 13.3.4
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/package.json +5 -5
- package/src/models.json +491 -11
- package/src/provider-models/openai-compat.ts +2 -0
- package/src/providers/anthropic.ts +18 -7
- package/src/providers/cursor.ts +24 -0
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.3.
|
|
4
|
+
"version": "13.3.4",
|
|
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",
|
|
@@ -38,19 +38,19 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@anthropic-ai/sdk": "^0.78",
|
|
41
|
-
"@aws-sdk/client-bedrock-runtime": "^3.
|
|
41
|
+
"@aws-sdk/client-bedrock-runtime": "^3.998",
|
|
42
42
|
"@bufbuild/protobuf": "^2.11",
|
|
43
43
|
"@connectrpc/connect": "^2.1",
|
|
44
44
|
"@connectrpc/connect-node": "^2.1",
|
|
45
|
-
"@google/genai": "^1.
|
|
45
|
+
"@google/genai": "^1.43",
|
|
46
46
|
"@mistralai/mistralai": "^1.14",
|
|
47
|
-
"@oh-my-pi/pi-utils": "13.3.
|
|
47
|
+
"@oh-my-pi/pi-utils": "13.3.4",
|
|
48
48
|
"@sinclair/typebox": "^0.34",
|
|
49
49
|
"@smithy/node-http-handler": "^4.4",
|
|
50
50
|
"ajv": "^8.18",
|
|
51
51
|
"ajv-formats": "^3.0",
|
|
52
52
|
"chalk": "^5.6",
|
|
53
|
-
"openai": "^6.
|
|
53
|
+
"openai": "^6.25",
|
|
54
54
|
"partial-json": "^0.1",
|
|
55
55
|
"zod": "^4.3",
|
|
56
56
|
"zod-to-json-schema": "^3.25"
|
package/src/models.json
CHANGED
|
@@ -2664,6 +2664,26 @@
|
|
|
2664
2664
|
"contextWindow": 272000,
|
|
2665
2665
|
"maxTokens": 128000
|
|
2666
2666
|
},
|
|
2667
|
+
"gpt-5.3-codex": {
|
|
2668
|
+
"id": "gpt-5.3-codex",
|
|
2669
|
+
"name": "GPT-5.3 Codex",
|
|
2670
|
+
"api": "openai-responses",
|
|
2671
|
+
"provider": "opencode",
|
|
2672
|
+
"baseUrl": "https://opencode.ai/zen/v1",
|
|
2673
|
+
"reasoning": true,
|
|
2674
|
+
"input": [
|
|
2675
|
+
"text",
|
|
2676
|
+
"image"
|
|
2677
|
+
],
|
|
2678
|
+
"cost": {
|
|
2679
|
+
"input": 1.75,
|
|
2680
|
+
"output": 14,
|
|
2681
|
+
"cacheRead": 0.175,
|
|
2682
|
+
"cacheWrite": 0
|
|
2683
|
+
},
|
|
2684
|
+
"contextWindow": 272000,
|
|
2685
|
+
"maxTokens": 128000
|
|
2686
|
+
},
|
|
2667
2687
|
"kimi-k2": {
|
|
2668
2688
|
"id": "kimi-k2",
|
|
2669
2689
|
"name": "Kimi K2",
|
|
@@ -7581,6 +7601,7 @@
|
|
|
7581
7601
|
"contextWindow": 196608,
|
|
7582
7602
|
"maxTokens": 128000,
|
|
7583
7603
|
"compat": {
|
|
7604
|
+
"supportsStore": false,
|
|
7584
7605
|
"supportsDeveloperRole": false,
|
|
7585
7606
|
"thinkingFormat": "zai",
|
|
7586
7607
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7605,6 +7626,7 @@
|
|
|
7605
7626
|
"contextWindow": 204800,
|
|
7606
7627
|
"maxTokens": 131072,
|
|
7607
7628
|
"compat": {
|
|
7629
|
+
"supportsStore": false,
|
|
7608
7630
|
"supportsDeveloperRole": false,
|
|
7609
7631
|
"thinkingFormat": "zai",
|
|
7610
7632
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7653,6 +7675,7 @@
|
|
|
7653
7675
|
"contextWindow": 204800,
|
|
7654
7676
|
"maxTokens": 131072,
|
|
7655
7677
|
"compat": {
|
|
7678
|
+
"supportsStore": false,
|
|
7656
7679
|
"supportsDeveloperRole": false,
|
|
7657
7680
|
"thinkingFormat": "zai",
|
|
7658
7681
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7677,6 +7700,7 @@
|
|
|
7677
7700
|
"contextWindow": 204800,
|
|
7678
7701
|
"maxTokens": 131072,
|
|
7679
7702
|
"compat": {
|
|
7703
|
+
"supportsStore": false,
|
|
7680
7704
|
"supportsDeveloperRole": false,
|
|
7681
7705
|
"thinkingFormat": "zai",
|
|
7682
7706
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7727,6 +7751,7 @@
|
|
|
7727
7751
|
"contextWindow": 196608,
|
|
7728
7752
|
"maxTokens": 128000,
|
|
7729
7753
|
"compat": {
|
|
7754
|
+
"supportsStore": false,
|
|
7730
7755
|
"supportsDeveloperRole": false,
|
|
7731
7756
|
"thinkingFormat": "zai",
|
|
7732
7757
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7751,6 +7776,7 @@
|
|
|
7751
7776
|
"contextWindow": 204800,
|
|
7752
7777
|
"maxTokens": 131072,
|
|
7753
7778
|
"compat": {
|
|
7779
|
+
"supportsStore": false,
|
|
7754
7780
|
"supportsDeveloperRole": false,
|
|
7755
7781
|
"thinkingFormat": "zai",
|
|
7756
7782
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7799,6 +7825,7 @@
|
|
|
7799
7825
|
"contextWindow": 204800,
|
|
7800
7826
|
"maxTokens": 131072,
|
|
7801
7827
|
"compat": {
|
|
7828
|
+
"supportsStore": false,
|
|
7802
7829
|
"supportsDeveloperRole": false,
|
|
7803
7830
|
"thinkingFormat": "zai",
|
|
7804
7831
|
"reasoningContentField": "reasoning_content"
|
|
@@ -7823,6 +7850,7 @@
|
|
|
7823
7850
|
"contextWindow": 204800,
|
|
7824
7851
|
"maxTokens": 131072,
|
|
7825
7852
|
"compat": {
|
|
7853
|
+
"supportsStore": false,
|
|
7826
7854
|
"supportsDeveloperRole": false,
|
|
7827
7855
|
"thinkingFormat": "zai",
|
|
7828
7856
|
"reasoningContentField": "reasoning_content"
|
|
@@ -8105,6 +8133,25 @@
|
|
|
8105
8133
|
"contextWindow": 222222,
|
|
8106
8134
|
"maxTokens": 8888
|
|
8107
8135
|
},
|
|
8136
|
+
"aion-labs/aion-2.0": {
|
|
8137
|
+
"id": "aion-labs/aion-2.0",
|
|
8138
|
+
"name": "aion-labs/aion-2.0",
|
|
8139
|
+
"api": "openai-completions",
|
|
8140
|
+
"provider": "nanogpt",
|
|
8141
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
8142
|
+
"reasoning": false,
|
|
8143
|
+
"input": [
|
|
8144
|
+
"text"
|
|
8145
|
+
],
|
|
8146
|
+
"cost": {
|
|
8147
|
+
"input": 0,
|
|
8148
|
+
"output": 0,
|
|
8149
|
+
"cacheRead": 0,
|
|
8150
|
+
"cacheWrite": 0
|
|
8151
|
+
},
|
|
8152
|
+
"contextWindow": 222222,
|
|
8153
|
+
"maxTokens": 8888
|
|
8154
|
+
},
|
|
8108
8155
|
"aion-labs/aion-rp-llama-3.1-8b": {
|
|
8109
8156
|
"id": "aion-labs/aion-rp-llama-3.1-8b",
|
|
8110
8157
|
"name": "aion-labs/aion-rp-llama-3.1-8b",
|
|
@@ -12488,6 +12535,25 @@
|
|
|
12488
12535
|
"contextWindow": 222222,
|
|
12489
12536
|
"maxTokens": 8888
|
|
12490
12537
|
},
|
|
12538
|
+
"liquid/lfm-2-24b-a2b": {
|
|
12539
|
+
"id": "liquid/lfm-2-24b-a2b",
|
|
12540
|
+
"name": "liquid/lfm-2-24b-a2b",
|
|
12541
|
+
"api": "openai-completions",
|
|
12542
|
+
"provider": "nanogpt",
|
|
12543
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
12544
|
+
"reasoning": false,
|
|
12545
|
+
"input": [
|
|
12546
|
+
"text"
|
|
12547
|
+
],
|
|
12548
|
+
"cost": {
|
|
12549
|
+
"input": 0,
|
|
12550
|
+
"output": 0,
|
|
12551
|
+
"cacheRead": 0,
|
|
12552
|
+
"cacheWrite": 0
|
|
12553
|
+
},
|
|
12554
|
+
"contextWindow": 222222,
|
|
12555
|
+
"maxTokens": 8888
|
|
12556
|
+
},
|
|
12491
12557
|
"Llama-3.3-70B-Anthrobomination": {
|
|
12492
12558
|
"id": "Llama-3.3-70B-Anthrobomination",
|
|
12493
12559
|
"name": "Llama-3.3-70B-Anthrobomination",
|
|
@@ -15242,6 +15308,25 @@
|
|
|
15242
15308
|
"contextWindow": 400000,
|
|
15243
15309
|
"maxTokens": 128000
|
|
15244
15310
|
},
|
|
15311
|
+
"openai/gpt-5.3-codex": {
|
|
15312
|
+
"id": "openai/gpt-5.3-codex",
|
|
15313
|
+
"name": "openai/gpt-5.3-codex",
|
|
15314
|
+
"api": "openai-completions",
|
|
15315
|
+
"provider": "nanogpt",
|
|
15316
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
15317
|
+
"reasoning": false,
|
|
15318
|
+
"input": [
|
|
15319
|
+
"text"
|
|
15320
|
+
],
|
|
15321
|
+
"cost": {
|
|
15322
|
+
"input": 0,
|
|
15323
|
+
"output": 0,
|
|
15324
|
+
"cacheRead": 0,
|
|
15325
|
+
"cacheWrite": 0
|
|
15326
|
+
},
|
|
15327
|
+
"contextWindow": 272000,
|
|
15328
|
+
"maxTokens": 8888
|
|
15329
|
+
},
|
|
15245
15330
|
"openai/gpt-oss-120b": {
|
|
15246
15331
|
"id": "openai/gpt-oss-120b",
|
|
15247
15332
|
"name": "GPT OSS 120B",
|
|
@@ -16237,6 +16322,158 @@
|
|
|
16237
16322
|
"contextWindow": 222222,
|
|
16238
16323
|
"maxTokens": 8888
|
|
16239
16324
|
},
|
|
16325
|
+
"qwen3.5-122b-a10b": {
|
|
16326
|
+
"id": "qwen3.5-122b-a10b",
|
|
16327
|
+
"name": "qwen3.5-122b-a10b",
|
|
16328
|
+
"api": "openai-completions",
|
|
16329
|
+
"provider": "nanogpt",
|
|
16330
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16331
|
+
"reasoning": false,
|
|
16332
|
+
"input": [
|
|
16333
|
+
"text"
|
|
16334
|
+
],
|
|
16335
|
+
"cost": {
|
|
16336
|
+
"input": 0,
|
|
16337
|
+
"output": 0,
|
|
16338
|
+
"cacheRead": 0,
|
|
16339
|
+
"cacheWrite": 0
|
|
16340
|
+
},
|
|
16341
|
+
"contextWindow": 222222,
|
|
16342
|
+
"maxTokens": 8888
|
|
16343
|
+
},
|
|
16344
|
+
"qwen3.5-122b-a10b:thinking": {
|
|
16345
|
+
"id": "qwen3.5-122b-a10b:thinking",
|
|
16346
|
+
"name": "qwen3.5-122b-a10b:thinking",
|
|
16347
|
+
"api": "openai-completions",
|
|
16348
|
+
"provider": "nanogpt",
|
|
16349
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16350
|
+
"reasoning": false,
|
|
16351
|
+
"input": [
|
|
16352
|
+
"text"
|
|
16353
|
+
],
|
|
16354
|
+
"cost": {
|
|
16355
|
+
"input": 0,
|
|
16356
|
+
"output": 0,
|
|
16357
|
+
"cacheRead": 0,
|
|
16358
|
+
"cacheWrite": 0
|
|
16359
|
+
},
|
|
16360
|
+
"contextWindow": 222222,
|
|
16361
|
+
"maxTokens": 8888
|
|
16362
|
+
},
|
|
16363
|
+
"qwen3.5-27b": {
|
|
16364
|
+
"id": "qwen3.5-27b",
|
|
16365
|
+
"name": "qwen3.5-27b",
|
|
16366
|
+
"api": "openai-completions",
|
|
16367
|
+
"provider": "nanogpt",
|
|
16368
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16369
|
+
"reasoning": false,
|
|
16370
|
+
"input": [
|
|
16371
|
+
"text"
|
|
16372
|
+
],
|
|
16373
|
+
"cost": {
|
|
16374
|
+
"input": 0,
|
|
16375
|
+
"output": 0,
|
|
16376
|
+
"cacheRead": 0,
|
|
16377
|
+
"cacheWrite": 0
|
|
16378
|
+
},
|
|
16379
|
+
"contextWindow": 222222,
|
|
16380
|
+
"maxTokens": 8888
|
|
16381
|
+
},
|
|
16382
|
+
"qwen3.5-27b:thinking": {
|
|
16383
|
+
"id": "qwen3.5-27b:thinking",
|
|
16384
|
+
"name": "qwen3.5-27b:thinking",
|
|
16385
|
+
"api": "openai-completions",
|
|
16386
|
+
"provider": "nanogpt",
|
|
16387
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16388
|
+
"reasoning": false,
|
|
16389
|
+
"input": [
|
|
16390
|
+
"text"
|
|
16391
|
+
],
|
|
16392
|
+
"cost": {
|
|
16393
|
+
"input": 0,
|
|
16394
|
+
"output": 0,
|
|
16395
|
+
"cacheRead": 0,
|
|
16396
|
+
"cacheWrite": 0
|
|
16397
|
+
},
|
|
16398
|
+
"contextWindow": 222222,
|
|
16399
|
+
"maxTokens": 8888
|
|
16400
|
+
},
|
|
16401
|
+
"qwen3.5-35b-a3b": {
|
|
16402
|
+
"id": "qwen3.5-35b-a3b",
|
|
16403
|
+
"name": "qwen3.5-35b-a3b",
|
|
16404
|
+
"api": "openai-completions",
|
|
16405
|
+
"provider": "nanogpt",
|
|
16406
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16407
|
+
"reasoning": false,
|
|
16408
|
+
"input": [
|
|
16409
|
+
"text"
|
|
16410
|
+
],
|
|
16411
|
+
"cost": {
|
|
16412
|
+
"input": 0,
|
|
16413
|
+
"output": 0,
|
|
16414
|
+
"cacheRead": 0,
|
|
16415
|
+
"cacheWrite": 0
|
|
16416
|
+
},
|
|
16417
|
+
"contextWindow": 222222,
|
|
16418
|
+
"maxTokens": 8888
|
|
16419
|
+
},
|
|
16420
|
+
"qwen3.5-35b-a3b:thinking": {
|
|
16421
|
+
"id": "qwen3.5-35b-a3b:thinking",
|
|
16422
|
+
"name": "qwen3.5-35b-a3b:thinking",
|
|
16423
|
+
"api": "openai-completions",
|
|
16424
|
+
"provider": "nanogpt",
|
|
16425
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16426
|
+
"reasoning": false,
|
|
16427
|
+
"input": [
|
|
16428
|
+
"text"
|
|
16429
|
+
],
|
|
16430
|
+
"cost": {
|
|
16431
|
+
"input": 0,
|
|
16432
|
+
"output": 0,
|
|
16433
|
+
"cacheRead": 0,
|
|
16434
|
+
"cacheWrite": 0
|
|
16435
|
+
},
|
|
16436
|
+
"contextWindow": 222222,
|
|
16437
|
+
"maxTokens": 8888
|
|
16438
|
+
},
|
|
16439
|
+
"qwen3.5-flash": {
|
|
16440
|
+
"id": "qwen3.5-flash",
|
|
16441
|
+
"name": "qwen3.5-flash",
|
|
16442
|
+
"api": "openai-completions",
|
|
16443
|
+
"provider": "nanogpt",
|
|
16444
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16445
|
+
"reasoning": false,
|
|
16446
|
+
"input": [
|
|
16447
|
+
"text"
|
|
16448
|
+
],
|
|
16449
|
+
"cost": {
|
|
16450
|
+
"input": 0,
|
|
16451
|
+
"output": 0,
|
|
16452
|
+
"cacheRead": 0,
|
|
16453
|
+
"cacheWrite": 0
|
|
16454
|
+
},
|
|
16455
|
+
"contextWindow": 222222,
|
|
16456
|
+
"maxTokens": 8888
|
|
16457
|
+
},
|
|
16458
|
+
"qwen3.5-flash:thinking": {
|
|
16459
|
+
"id": "qwen3.5-flash:thinking",
|
|
16460
|
+
"name": "qwen3.5-flash:thinking",
|
|
16461
|
+
"api": "openai-completions",
|
|
16462
|
+
"provider": "nanogpt",
|
|
16463
|
+
"baseUrl": "https://nano-gpt.com/api/v1",
|
|
16464
|
+
"reasoning": false,
|
|
16465
|
+
"input": [
|
|
16466
|
+
"text"
|
|
16467
|
+
],
|
|
16468
|
+
"cost": {
|
|
16469
|
+
"input": 0,
|
|
16470
|
+
"output": 0,
|
|
16471
|
+
"cacheRead": 0,
|
|
16472
|
+
"cacheWrite": 0
|
|
16473
|
+
},
|
|
16474
|
+
"contextWindow": 222222,
|
|
16475
|
+
"maxTokens": 8888
|
|
16476
|
+
},
|
|
16240
16477
|
"qwq-32b": {
|
|
16241
16478
|
"id": "qwq-32b",
|
|
16242
16479
|
"name": "qwq-32b",
|
|
@@ -19332,13 +19569,13 @@
|
|
|
19332
19569
|
"text"
|
|
19333
19570
|
],
|
|
19334
19571
|
"cost": {
|
|
19335
|
-
"input": 0.
|
|
19336
|
-
"output": 0.
|
|
19572
|
+
"input": 0.25,
|
|
19573
|
+
"output": 0.39999999999999997,
|
|
19337
19574
|
"cacheRead": 0.13,
|
|
19338
19575
|
"cacheWrite": 0
|
|
19339
19576
|
},
|
|
19340
19577
|
"contextWindow": 163840,
|
|
19341
|
-
"maxTokens":
|
|
19578
|
+
"maxTokens": 163840
|
|
19342
19579
|
},
|
|
19343
19580
|
"deepseek/deepseek-v3.2-exp": {
|
|
19344
19581
|
"id": "deepseek/deepseek-v3.2-exp",
|
|
@@ -19599,6 +19836,26 @@
|
|
|
19599
19836
|
"contextWindow": 1048576,
|
|
19600
19837
|
"maxTokens": 65536
|
|
19601
19838
|
},
|
|
19839
|
+
"google/gemini-3.1-pro-preview-customtools": {
|
|
19840
|
+
"id": "google/gemini-3.1-pro-preview-customtools",
|
|
19841
|
+
"name": "Google: Gemini 3.1 Pro Preview Custom Tools",
|
|
19842
|
+
"api": "openai-completions",
|
|
19843
|
+
"provider": "openrouter",
|
|
19844
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
19845
|
+
"reasoning": true,
|
|
19846
|
+
"input": [
|
|
19847
|
+
"text",
|
|
19848
|
+
"image"
|
|
19849
|
+
],
|
|
19850
|
+
"cost": {
|
|
19851
|
+
"input": 2,
|
|
19852
|
+
"output": 12,
|
|
19853
|
+
"cacheRead": 0.19999999999999998,
|
|
19854
|
+
"cacheWrite": 0.375
|
|
19855
|
+
},
|
|
19856
|
+
"contextWindow": 1048576,
|
|
19857
|
+
"maxTokens": 65536
|
|
19858
|
+
},
|
|
19602
19859
|
"google/gemma-3-27b-it": {
|
|
19603
19860
|
"id": "google/gemma-3-27b-it",
|
|
19604
19861
|
"name": "Gemma-3-27B-IT",
|
|
@@ -19696,6 +19953,25 @@
|
|
|
19696
19953
|
"contextWindow": 256000,
|
|
19697
19954
|
"maxTokens": 128000
|
|
19698
19955
|
},
|
|
19956
|
+
"meituan/longcat-flash-chat": {
|
|
19957
|
+
"id": "meituan/longcat-flash-chat",
|
|
19958
|
+
"name": "Meituan: LongCat Flash Chat",
|
|
19959
|
+
"api": "openai-completions",
|
|
19960
|
+
"provider": "openrouter",
|
|
19961
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
19962
|
+
"reasoning": false,
|
|
19963
|
+
"input": [
|
|
19964
|
+
"text"
|
|
19965
|
+
],
|
|
19966
|
+
"cost": {
|
|
19967
|
+
"input": 0.19999999999999998,
|
|
19968
|
+
"output": 0.7999999999999999,
|
|
19969
|
+
"cacheRead": 0.19999999999999998,
|
|
19970
|
+
"cacheWrite": 0
|
|
19971
|
+
},
|
|
19972
|
+
"contextWindow": 131072,
|
|
19973
|
+
"maxTokens": 32768
|
|
19974
|
+
},
|
|
19699
19975
|
"meta-llama/llama-3-8b-instruct": {
|
|
19700
19976
|
"id": "meta-llama/llama-3-8b-instruct",
|
|
19701
19977
|
"name": "Meta: Llama 3 8B Instruct",
|
|
@@ -21371,6 +21647,26 @@
|
|
|
21371
21647
|
"contextWindow": 400000,
|
|
21372
21648
|
"maxTokens": 128000
|
|
21373
21649
|
},
|
|
21650
|
+
"openai/gpt-5.3-codex": {
|
|
21651
|
+
"id": "openai/gpt-5.3-codex",
|
|
21652
|
+
"name": "OpenAI: GPT-5.3-Codex",
|
|
21653
|
+
"api": "openai-completions",
|
|
21654
|
+
"provider": "openrouter",
|
|
21655
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
21656
|
+
"reasoning": true,
|
|
21657
|
+
"input": [
|
|
21658
|
+
"text",
|
|
21659
|
+
"image"
|
|
21660
|
+
],
|
|
21661
|
+
"cost": {
|
|
21662
|
+
"input": 1.75,
|
|
21663
|
+
"output": 14,
|
|
21664
|
+
"cacheRead": 0.175,
|
|
21665
|
+
"cacheWrite": 0
|
|
21666
|
+
},
|
|
21667
|
+
"contextWindow": 272000,
|
|
21668
|
+
"maxTokens": 128000
|
|
21669
|
+
},
|
|
21374
21670
|
"openai/gpt-oss-120b": {
|
|
21375
21671
|
"id": "openai/gpt-oss-120b",
|
|
21376
21672
|
"name": "GPT OSS 120B",
|
|
@@ -22471,6 +22767,66 @@
|
|
|
22471
22767
|
"contextWindow": 131072,
|
|
22472
22768
|
"maxTokens": 32768
|
|
22473
22769
|
},
|
|
22770
|
+
"qwen/qwen3.5-122b-a10b": {
|
|
22771
|
+
"id": "qwen/qwen3.5-122b-a10b",
|
|
22772
|
+
"name": "Qwen: Qwen3.5-122B-A10B",
|
|
22773
|
+
"api": "openai-completions",
|
|
22774
|
+
"provider": "openrouter",
|
|
22775
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
22776
|
+
"reasoning": true,
|
|
22777
|
+
"input": [
|
|
22778
|
+
"text",
|
|
22779
|
+
"image"
|
|
22780
|
+
],
|
|
22781
|
+
"cost": {
|
|
22782
|
+
"input": 0.39999999999999997,
|
|
22783
|
+
"output": 3.1999999999999997,
|
|
22784
|
+
"cacheRead": 0,
|
|
22785
|
+
"cacheWrite": 0
|
|
22786
|
+
},
|
|
22787
|
+
"contextWindow": 262144,
|
|
22788
|
+
"maxTokens": 65536
|
|
22789
|
+
},
|
|
22790
|
+
"qwen/qwen3.5-27b": {
|
|
22791
|
+
"id": "qwen/qwen3.5-27b",
|
|
22792
|
+
"name": "Qwen: Qwen3.5-27B",
|
|
22793
|
+
"api": "openai-completions",
|
|
22794
|
+
"provider": "openrouter",
|
|
22795
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
22796
|
+
"reasoning": true,
|
|
22797
|
+
"input": [
|
|
22798
|
+
"text",
|
|
22799
|
+
"image"
|
|
22800
|
+
],
|
|
22801
|
+
"cost": {
|
|
22802
|
+
"input": 0.3,
|
|
22803
|
+
"output": 2.4,
|
|
22804
|
+
"cacheRead": 0,
|
|
22805
|
+
"cacheWrite": 0
|
|
22806
|
+
},
|
|
22807
|
+
"contextWindow": 262144,
|
|
22808
|
+
"maxTokens": 65536
|
|
22809
|
+
},
|
|
22810
|
+
"qwen/qwen3.5-35b-a3b": {
|
|
22811
|
+
"id": "qwen/qwen3.5-35b-a3b",
|
|
22812
|
+
"name": "Qwen: Qwen3.5-35B-A3B",
|
|
22813
|
+
"api": "openai-completions",
|
|
22814
|
+
"provider": "openrouter",
|
|
22815
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
22816
|
+
"reasoning": true,
|
|
22817
|
+
"input": [
|
|
22818
|
+
"text",
|
|
22819
|
+
"image"
|
|
22820
|
+
],
|
|
22821
|
+
"cost": {
|
|
22822
|
+
"input": 0.25,
|
|
22823
|
+
"output": 2,
|
|
22824
|
+
"cacheRead": 0,
|
|
22825
|
+
"cacheWrite": 0
|
|
22826
|
+
},
|
|
22827
|
+
"contextWindow": 262144,
|
|
22828
|
+
"maxTokens": 65536
|
|
22829
|
+
},
|
|
22474
22830
|
"qwen/qwen3.5-397b-a17b": {
|
|
22475
22831
|
"id": "qwen/qwen3.5-397b-a17b",
|
|
22476
22832
|
"name": "Qwen: Qwen3.5 397B A17B",
|
|
@@ -22483,14 +22839,34 @@
|
|
|
22483
22839
|
"image"
|
|
22484
22840
|
],
|
|
22485
22841
|
"cost": {
|
|
22486
|
-
"input": 0.
|
|
22487
|
-
"output":
|
|
22488
|
-
"cacheRead": 0.
|
|
22842
|
+
"input": 0.55,
|
|
22843
|
+
"output": 3.5,
|
|
22844
|
+
"cacheRead": 0.55,
|
|
22489
22845
|
"cacheWrite": 0
|
|
22490
22846
|
},
|
|
22491
22847
|
"contextWindow": 262144,
|
|
22492
22848
|
"maxTokens": 65536
|
|
22493
22849
|
},
|
|
22850
|
+
"qwen/qwen3.5-flash-02-23": {
|
|
22851
|
+
"id": "qwen/qwen3.5-flash-02-23",
|
|
22852
|
+
"name": "Qwen: Qwen3.5-Flash",
|
|
22853
|
+
"api": "openai-completions",
|
|
22854
|
+
"provider": "openrouter",
|
|
22855
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
22856
|
+
"reasoning": true,
|
|
22857
|
+
"input": [
|
|
22858
|
+
"text",
|
|
22859
|
+
"image"
|
|
22860
|
+
],
|
|
22861
|
+
"cost": {
|
|
22862
|
+
"input": 0.09999999999999999,
|
|
22863
|
+
"output": 0.39999999999999997,
|
|
22864
|
+
"cacheRead": 0,
|
|
22865
|
+
"cacheWrite": 0
|
|
22866
|
+
},
|
|
22867
|
+
"contextWindow": 1000000,
|
|
22868
|
+
"maxTokens": 65536
|
|
22869
|
+
},
|
|
22494
22870
|
"qwen/qwen3.5-plus-02-15": {
|
|
22495
22871
|
"id": "qwen/qwen3.5-plus-02-15",
|
|
22496
22872
|
"name": "Qwen: Qwen3.5 Plus 2026-02-15",
|
|
@@ -23065,13 +23441,13 @@
|
|
|
23065
23441
|
"text"
|
|
23066
23442
|
],
|
|
23067
23443
|
"cost": {
|
|
23068
|
-
"input": 0.
|
|
23069
|
-
"output": 1.
|
|
23070
|
-
"cacheRead": 0.
|
|
23444
|
+
"input": 0.3,
|
|
23445
|
+
"output": 1.4,
|
|
23446
|
+
"cacheRead": 0.15,
|
|
23071
23447
|
"cacheWrite": 0
|
|
23072
23448
|
},
|
|
23073
23449
|
"contextWindow": 202752,
|
|
23074
|
-
"maxTokens":
|
|
23450
|
+
"maxTokens": 8888
|
|
23075
23451
|
},
|
|
23076
23452
|
"z-ai/glm-4.7-flash": {
|
|
23077
23453
|
"id": "z-ai/glm-4.7-flash",
|
|
@@ -23105,7 +23481,7 @@
|
|
|
23105
23481
|
"cost": {
|
|
23106
23482
|
"input": 0.95,
|
|
23107
23483
|
"output": 2.5500000000000003,
|
|
23108
|
-
"cacheRead": 0,
|
|
23484
|
+
"cacheRead": 0.19999999999999998,
|
|
23109
23485
|
"cacheWrite": 0
|
|
23110
23486
|
},
|
|
23111
23487
|
"contextWindow": 204800,
|
|
@@ -25863,6 +26239,25 @@
|
|
|
25863
26239
|
"contextWindow": 196608,
|
|
25864
26240
|
"maxTokens": 8192
|
|
25865
26241
|
},
|
|
26242
|
+
"hf:MiniMaxAI/MiniMax-M2.5": {
|
|
26243
|
+
"id": "hf:MiniMaxAI/MiniMax-M2.5",
|
|
26244
|
+
"name": "MiniMaxAI/MiniMax-M2.5",
|
|
26245
|
+
"api": "openai-completions",
|
|
26246
|
+
"provider": "synthetic",
|
|
26247
|
+
"baseUrl": "https://api.synthetic.new/openai/v1",
|
|
26248
|
+
"reasoning": false,
|
|
26249
|
+
"input": [
|
|
26250
|
+
"text"
|
|
26251
|
+
],
|
|
26252
|
+
"cost": {
|
|
26253
|
+
"input": 0,
|
|
26254
|
+
"output": 0,
|
|
26255
|
+
"cacheRead": 0,
|
|
26256
|
+
"cacheWrite": 0
|
|
26257
|
+
},
|
|
26258
|
+
"contextWindow": 191488,
|
|
26259
|
+
"maxTokens": 8192
|
|
26260
|
+
},
|
|
25866
26261
|
"hf:moonshotai/Kimi-K2-Instruct-0905": {
|
|
25867
26262
|
"id": "hf:moonshotai/Kimi-K2-Instruct-0905",
|
|
25868
26263
|
"name": "moonshotai/Kimi-K2-Instruct-0905",
|
|
@@ -26464,6 +26859,28 @@
|
|
|
26464
26859
|
"supportsUsageInStreaming": false
|
|
26465
26860
|
}
|
|
26466
26861
|
},
|
|
26862
|
+
"nvidia-nemotron-3-nano-30b-a3b": {
|
|
26863
|
+
"id": "nvidia-nemotron-3-nano-30b-a3b",
|
|
26864
|
+
"name": "nvidia-nemotron-3-nano-30b-a3b",
|
|
26865
|
+
"api": "openai-completions",
|
|
26866
|
+
"provider": "venice",
|
|
26867
|
+
"baseUrl": "https://api.venice.ai/api/v1",
|
|
26868
|
+
"reasoning": false,
|
|
26869
|
+
"input": [
|
|
26870
|
+
"text"
|
|
26871
|
+
],
|
|
26872
|
+
"cost": {
|
|
26873
|
+
"input": 0,
|
|
26874
|
+
"output": 0,
|
|
26875
|
+
"cacheRead": 0,
|
|
26876
|
+
"cacheWrite": 0
|
|
26877
|
+
},
|
|
26878
|
+
"contextWindow": 222222,
|
|
26879
|
+
"maxTokens": 8888,
|
|
26880
|
+
"compat": {
|
|
26881
|
+
"supportsUsageInStreaming": false
|
|
26882
|
+
}
|
|
26883
|
+
},
|
|
26467
26884
|
"olafangensan-glm-4.7-flash-heretic": {
|
|
26468
26885
|
"id": "olafangensan-glm-4.7-flash-heretic",
|
|
26469
26886
|
"name": "GLM 4.7 Flash Heretic",
|
|
@@ -26531,6 +26948,28 @@
|
|
|
26531
26948
|
"supportsUsageInStreaming": false
|
|
26532
26949
|
}
|
|
26533
26950
|
},
|
|
26951
|
+
"openai-gpt-53-codex": {
|
|
26952
|
+
"id": "openai-gpt-53-codex",
|
|
26953
|
+
"name": "openai-gpt-53-codex",
|
|
26954
|
+
"api": "openai-completions",
|
|
26955
|
+
"provider": "venice",
|
|
26956
|
+
"baseUrl": "https://api.venice.ai/api/v1",
|
|
26957
|
+
"reasoning": false,
|
|
26958
|
+
"input": [
|
|
26959
|
+
"text"
|
|
26960
|
+
],
|
|
26961
|
+
"cost": {
|
|
26962
|
+
"input": 0,
|
|
26963
|
+
"output": 0,
|
|
26964
|
+
"cacheRead": 0,
|
|
26965
|
+
"cacheWrite": 0
|
|
26966
|
+
},
|
|
26967
|
+
"contextWindow": 272000,
|
|
26968
|
+
"maxTokens": 8888,
|
|
26969
|
+
"compat": {
|
|
26970
|
+
"supportsUsageInStreaming": false
|
|
26971
|
+
}
|
|
26972
|
+
},
|
|
26534
26973
|
"openai-gpt-oss-120b": {
|
|
26535
26974
|
"id": "openai-gpt-oss-120b",
|
|
26536
26975
|
"name": "OpenAI GPT OSS 120B",
|
|
@@ -26641,6 +27080,28 @@
|
|
|
26641
27080
|
"supportsUsageInStreaming": false
|
|
26642
27081
|
}
|
|
26643
27082
|
},
|
|
27083
|
+
"qwen3-coder-480b-a35b-instruct-turbo": {
|
|
27084
|
+
"id": "qwen3-coder-480b-a35b-instruct-turbo",
|
|
27085
|
+
"name": "qwen3-coder-480b-a35b-instruct-turbo",
|
|
27086
|
+
"api": "openai-completions",
|
|
27087
|
+
"provider": "venice",
|
|
27088
|
+
"baseUrl": "https://api.venice.ai/api/v1",
|
|
27089
|
+
"reasoning": false,
|
|
27090
|
+
"input": [
|
|
27091
|
+
"text"
|
|
27092
|
+
],
|
|
27093
|
+
"cost": {
|
|
27094
|
+
"input": 0,
|
|
27095
|
+
"output": 0,
|
|
27096
|
+
"cacheRead": 0,
|
|
27097
|
+
"cacheWrite": 0
|
|
27098
|
+
},
|
|
27099
|
+
"contextWindow": 222222,
|
|
27100
|
+
"maxTokens": 8888,
|
|
27101
|
+
"compat": {
|
|
27102
|
+
"supportsUsageInStreaming": false
|
|
27103
|
+
}
|
|
27104
|
+
},
|
|
26644
27105
|
"qwen3-next-80b": {
|
|
26645
27106
|
"id": "qwen3-next-80b",
|
|
26646
27107
|
"name": "Qwen 3 Next 80b",
|
|
@@ -28462,6 +28923,25 @@
|
|
|
28462
28923
|
"contextWindow": 272000,
|
|
28463
28924
|
"maxTokens": 64000
|
|
28464
28925
|
},
|
|
28926
|
+
"gpt-5.3-codex-spark-preview": {
|
|
28927
|
+
"id": "gpt-5.3-codex-spark-preview",
|
|
28928
|
+
"name": "GPT-5.3 Codex Spark",
|
|
28929
|
+
"api": "cursor-agent",
|
|
28930
|
+
"provider": "cursor",
|
|
28931
|
+
"baseUrl": "https://api2.cursor.sh",
|
|
28932
|
+
"reasoning": false,
|
|
28933
|
+
"input": [
|
|
28934
|
+
"text"
|
|
28935
|
+
],
|
|
28936
|
+
"cost": {
|
|
28937
|
+
"input": 0,
|
|
28938
|
+
"output": 0,
|
|
28939
|
+
"cacheRead": 0,
|
|
28940
|
+
"cacheWrite": 0
|
|
28941
|
+
},
|
|
28942
|
+
"contextWindow": 200000,
|
|
28943
|
+
"maxTokens": 64000
|
|
28944
|
+
},
|
|
28465
28945
|
"gpt-5.3-codex-xhigh": {
|
|
28466
28946
|
"id": "gpt-5.3-codex-xhigh",
|
|
28467
28947
|
"name": "GPT-5.3 Codex Extra High",
|
|
@@ -1670,6 +1670,7 @@ const MODELS_DEV_PROVIDER_DESCRIPTORS_CODING_PLANS: readonly ModelsDevProviderDe
|
|
|
1670
1670
|
// --- MiniMax Coding Plan ---
|
|
1671
1671
|
openAiCompletionsDescriptor("minimax-coding-plan", "minimax-code", "https://api.minimax.io/v1", {
|
|
1672
1672
|
compat: {
|
|
1673
|
+
supportsStore: false,
|
|
1673
1674
|
supportsDeveloperRole: false,
|
|
1674
1675
|
thinkingFormat: "zai",
|
|
1675
1676
|
reasoningContentField: "reasoning_content",
|
|
@@ -1677,6 +1678,7 @@ const MODELS_DEV_PROVIDER_DESCRIPTORS_CODING_PLANS: readonly ModelsDevProviderDe
|
|
|
1677
1678
|
}),
|
|
1678
1679
|
openAiCompletionsDescriptor("minimax-cn-coding-plan", "minimax-code-cn", "https://api.minimaxi.com/v1", {
|
|
1679
1680
|
compat: {
|
|
1681
|
+
supportsStore: false,
|
|
1680
1682
|
supportsDeveloperRole: false,
|
|
1681
1683
|
thinkingFormat: "zai",
|
|
1682
1684
|
reasoningContentField: "reasoning_content",
|
|
@@ -296,12 +296,18 @@ const PROVIDER_BASE_DELAY_MS = 2000;
|
|
|
296
296
|
* Includes malformed JSON stream-envelope parse errors seen from some
|
|
297
297
|
* Anthropic-compatible proxy endpoints.
|
|
298
298
|
*/
|
|
299
|
+
/** Transient stream corruption errors where the response was truncated mid-JSON. */
|
|
300
|
+
function isTransientStreamParseError(error: unknown): boolean {
|
|
301
|
+
if (!(error instanceof Error)) return false;
|
|
302
|
+
return /json parse error|unterminated string|unexpected end of json input/i.test(error.message);
|
|
303
|
+
}
|
|
304
|
+
|
|
299
305
|
export function isProviderRetryableError(error: unknown): boolean {
|
|
300
306
|
if (!(error instanceof Error)) return false;
|
|
301
307
|
const msg = error.message;
|
|
302
308
|
return (
|
|
303
309
|
/rate.?limit|too many requests|overloaded|service.?unavailable|1302/i.test(msg) ||
|
|
304
|
-
|
|
310
|
+
isTransientStreamParseError(error)
|
|
305
311
|
);
|
|
306
312
|
}
|
|
307
313
|
|
|
@@ -371,9 +377,9 @@ export const streamAnthropic: StreamFunction<"anthropic-messages"> = (
|
|
|
371
377
|
type Block = (ThinkingContent | TextContent | (ToolCall & { partialJson: string })) & { index: number };
|
|
372
378
|
const blocks = output.content as Block[];
|
|
373
379
|
stream.push({ type: "start", partial: output });
|
|
374
|
-
// Retry loop for
|
|
375
|
-
//
|
|
376
|
-
//
|
|
380
|
+
// Retry loop for transient errors from the stream.
|
|
381
|
+
// Rate-limit/overload: only before content starts (safe to restart).
|
|
382
|
+
// Truncated JSON: also after content starts (partial response is unusable).
|
|
377
383
|
let providerRetryAttempt = 0;
|
|
378
384
|
let started = false;
|
|
379
385
|
do {
|
|
@@ -542,12 +548,15 @@ export const streamAnthropic: StreamFunction<"anthropic-messages"> = (
|
|
|
542
548
|
}
|
|
543
549
|
break; // Stream completed successfully
|
|
544
550
|
} catch (streamError) {
|
|
545
|
-
//
|
|
551
|
+
// Transient stream parse errors (truncated JSON) are retryable even after content
|
|
552
|
+
// has started streaming, since the partial response is unusable anyway.
|
|
553
|
+
// Rate-limit/overload errors are only retried before content starts.
|
|
554
|
+
const isTransient = isTransientStreamParseError(streamError);
|
|
546
555
|
if (
|
|
547
556
|
options?.signal?.aborted ||
|
|
548
|
-
firstTokenTime !== undefined ||
|
|
549
557
|
providerRetryAttempt >= PROVIDER_MAX_RETRIES ||
|
|
550
|
-
!
|
|
558
|
+
(!isTransient && firstTokenTime !== undefined) ||
|
|
559
|
+
(!isTransient && !isProviderRetryableError(streamError))
|
|
551
560
|
) {
|
|
552
561
|
throw streamError;
|
|
553
562
|
}
|
|
@@ -557,6 +566,8 @@ export const streamAnthropic: StreamFunction<"anthropic-messages"> = (
|
|
|
557
566
|
// Reset output state for clean retry
|
|
558
567
|
output.content.length = 0;
|
|
559
568
|
output.stopReason = "stop";
|
|
569
|
+
firstTokenTime = undefined;
|
|
570
|
+
started = false;
|
|
560
571
|
}
|
|
561
572
|
} while (!started);
|
|
562
573
|
|
package/src/providers/cursor.ts
CHANGED
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
AssistantMessageSchema,
|
|
38
38
|
BackgroundShellSpawnResultSchema,
|
|
39
39
|
ClientHeartbeatSchema,
|
|
40
|
+
ComputerUseResultSchema,
|
|
40
41
|
ConversationActionSchema,
|
|
41
42
|
type ConversationStateStructure,
|
|
42
43
|
ConversationStateStructureSchema,
|
|
@@ -70,6 +71,7 @@ import {
|
|
|
70
71
|
GrepUnionResultSchema,
|
|
71
72
|
KvClientMessageSchema,
|
|
72
73
|
type KvServerMessage,
|
|
74
|
+
ListMcpResourcesExecResultSchema,
|
|
73
75
|
type LsDirectoryTreeNode,
|
|
74
76
|
type LsDirectoryTreeNode_File,
|
|
75
77
|
LsDirectoryTreeNode_FileSchema,
|
|
@@ -88,9 +90,11 @@ import {
|
|
|
88
90
|
McpToolResultContentItemSchema,
|
|
89
91
|
ModelDetailsSchema,
|
|
90
92
|
ReadErrorSchema,
|
|
93
|
+
ReadMcpResourceExecResultSchema,
|
|
91
94
|
ReadRejectedSchema,
|
|
92
95
|
ReadResultSchema,
|
|
93
96
|
ReadSuccessSchema,
|
|
97
|
+
RecordScreenResultSchema,
|
|
94
98
|
RequestContextResultSchema,
|
|
95
99
|
RequestContextSchema,
|
|
96
100
|
RequestContextSuccessSchema,
|
|
@@ -965,6 +969,26 @@ async function handleExecServerMessage(
|
|
|
965
969
|
sendExecClientMessage(h2Request, execMsg, "mcpResult", execResult);
|
|
966
970
|
return;
|
|
967
971
|
}
|
|
972
|
+
case "listMcpResourcesExecArgs": {
|
|
973
|
+
const execResult = create(ListMcpResourcesExecResultSchema, {});
|
|
974
|
+
sendExecClientMessage(h2Request, execMsg, "listMcpResourcesExecResult", execResult);
|
|
975
|
+
return;
|
|
976
|
+
}
|
|
977
|
+
case "readMcpResourceExecArgs": {
|
|
978
|
+
const execResult = create(ReadMcpResourceExecResultSchema, {});
|
|
979
|
+
sendExecClientMessage(h2Request, execMsg, "readMcpResourceExecResult", execResult);
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
982
|
+
case "recordScreenArgs": {
|
|
983
|
+
const execResult = create(RecordScreenResultSchema, {});
|
|
984
|
+
sendExecClientMessage(h2Request, execMsg, "recordScreenResult", execResult);
|
|
985
|
+
return;
|
|
986
|
+
}
|
|
987
|
+
case "computerUseArgs": {
|
|
988
|
+
const execResult = create(ComputerUseResultSchema, {});
|
|
989
|
+
sendExecClientMessage(h2Request, execMsg, "computerUseResult", execResult);
|
|
990
|
+
return;
|
|
991
|
+
}
|
|
968
992
|
default:
|
|
969
993
|
log("warn", "unhandledExecMessage", { execCase });
|
|
970
994
|
}
|