@code-yeongyu/senpi 2026.5.24 → 2026.5.29-3

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/cli/args.d.ts +0 -6
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +1 -2
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +15 -2
  8. package/dist/config.js.map +1 -1
  9. package/dist/core/agent-session.d.ts +4 -0
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +117 -81
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/compaction/compaction.d.ts.map +1 -1
  14. package/dist/core/compaction/compaction.js +18 -24
  15. package/dist/core/compaction/compaction.js.map +1 -1
  16. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts.map +1 -1
  17. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js +4 -2
  18. package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js.map +1 -1
  19. package/dist/core/extensions/builtin/session-observer/overlay.d.ts.map +1 -1
  20. package/dist/core/extensions/builtin/session-observer/overlay.js +0 -5
  21. package/dist/core/extensions/builtin/session-observer/overlay.js.map +1 -1
  22. package/dist/core/extensions/builtin/session-observer/scanner.d.ts.map +1 -1
  23. package/dist/core/extensions/builtin/session-observer/scanner.js +2 -0
  24. package/dist/core/extensions/builtin/session-observer/scanner.js.map +1 -1
  25. package/dist/core/extensions/loader.d.ts.map +1 -1
  26. package/dist/core/extensions/loader.js +21 -9
  27. package/dist/core/extensions/loader.js.map +1 -1
  28. package/dist/core/output-guard.d.ts +1 -0
  29. package/dist/core/output-guard.d.ts.map +1 -1
  30. package/dist/core/output-guard.js +52 -22
  31. package/dist/core/output-guard.js.map +1 -1
  32. package/dist/core/session-work-barrier.d.ts +9 -0
  33. package/dist/core/session-work-barrier.d.ts.map +1 -0
  34. package/dist/core/session-work-barrier.js +50 -0
  35. package/dist/core/session-work-barrier.js.map +1 -0
  36. package/dist/main.d.ts.map +1 -1
  37. package/dist/main.js +0 -15
  38. package/dist/main.js.map +1 -1
  39. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  40. package/dist/modes/interactive/components/user-message.js +1 -1
  41. package/dist/modes/interactive/components/user-message.js.map +1 -1
  42. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  43. package/dist/modes/interactive/interactive-mode.js +6 -0
  44. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  45. package/dist/modes/rpc/rpc-client.d.ts +3 -0
  46. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  47. package/dist/modes/rpc/rpc-client.js +64 -7
  48. package/dist/modes/rpc/rpc-client.js.map +1 -1
  49. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  50. package/dist/modes/rpc/rpc-mode.js +15 -3
  51. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  52. package/docs/settings.md +3 -1
  53. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  54. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +18 -24
  55. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  56. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  57. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +249 -39
  58. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  59. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +349 -144
  60. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  61. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  62. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +1 -1
  63. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  64. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  65. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -1
  66. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  67. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
  68. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js +1 -1
  69. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
  70. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  71. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +46 -29
  72. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  73. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  74. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +1 -1
  75. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  76. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  77. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +1 -1
  78. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  79. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
  80. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  81. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  82. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  83. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  84. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  85. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +2 -17
  86. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  87. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  88. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +40 -55
  89. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  90. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  91. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +2 -2
  92. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  93. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +7 -1
  94. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  95. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +12 -2
  96. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  97. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  98. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  99. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  100. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.d.ts +3 -0
  101. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.d.ts.map +1 -0
  102. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.js +38 -0
  103. package/node_modules/@earendil-works/pi-tui/dist/slash-command-autocomplete.js.map +1 -0
  104. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  105. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  106. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  107. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +5 -1
  108. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  109. package/node_modules/@earendil-works/pi-tui/dist/utils.js +66 -14
  110. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  111. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  112. package/npm-shrinkwrap.json +13 -13
  113. package/package.json +6 -7
  114. package/dist/modes/neo-mode.d.ts +0 -43
  115. package/dist/modes/neo-mode.d.ts.map +0 -1
  116. package/dist/modes/neo-mode.js +0 -142
  117. package/dist/modes/neo-mode.js.map +0 -1
  118. package/dist/neo-tui-bin/senpi-neo-tui-linux-x64 +0 -0
@@ -175,6 +175,23 @@ export const MODELS = {
175
175
  contextWindow: 1000000,
176
176
  maxTokens: 128000,
177
177
  },
178
+ "anthropic.claude-opus-4-8": {
179
+ id: "anthropic.claude-opus-4-8",
180
+ name: "Claude Opus 4.8",
181
+ api: "bedrock-converse-stream",
182
+ provider: "amazon-bedrock",
183
+ baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
184
+ reasoning: true,
185
+ input: ["text", "image"],
186
+ cost: {
187
+ input: 5,
188
+ output: 25,
189
+ cacheRead: 0.5,
190
+ cacheWrite: 6.25,
191
+ },
192
+ contextWindow: 1000000,
193
+ maxTokens: 128000,
194
+ },
178
195
  "anthropic.claude-sonnet-4-5-20250929-v1:0": {
179
196
  id: "anthropic.claude-sonnet-4-5-20250929-v1:0",
180
197
  name: "Claude Sonnet 4.5",
@@ -244,6 +261,23 @@ export const MODELS = {
244
261
  contextWindow: 1000000,
245
262
  maxTokens: 128000,
246
263
  },
264
+ "au.anthropic.claude-opus-4-8": {
265
+ id: "au.anthropic.claude-opus-4-8",
266
+ name: "Claude Opus 4.8 (AU)",
267
+ api: "bedrock-converse-stream",
268
+ provider: "amazon-bedrock",
269
+ baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
270
+ reasoning: true,
271
+ input: ["text", "image"],
272
+ cost: {
273
+ input: 5,
274
+ output: 25,
275
+ cacheRead: 0.5,
276
+ cacheWrite: 6.25,
277
+ },
278
+ contextWindow: 1000000,
279
+ maxTokens: 128000,
280
+ },
247
281
  "au.anthropic.claude-sonnet-4-5-20250929-v1:0": {
248
282
  id: "au.anthropic.claude-sonnet-4-5-20250929-v1:0",
249
283
  name: "Claude Sonnet 4.5 (AU)",
@@ -417,6 +451,23 @@ export const MODELS = {
417
451
  contextWindow: 1000000,
418
452
  maxTokens: 128000,
419
453
  },
454
+ "eu.anthropic.claude-opus-4-8": {
455
+ id: "eu.anthropic.claude-opus-4-8",
456
+ name: "Claude Opus 4.8 (EU)",
457
+ api: "bedrock-converse-stream",
458
+ provider: "amazon-bedrock",
459
+ baseUrl: "https://bedrock-runtime.eu-central-1.amazonaws.com",
460
+ reasoning: true,
461
+ input: ["text", "image"],
462
+ cost: {
463
+ input: 5,
464
+ output: 25,
465
+ cacheRead: 0.5,
466
+ cacheWrite: 6.25,
467
+ },
468
+ contextWindow: 1000000,
469
+ maxTokens: 128000,
470
+ },
420
471
  "eu.anthropic.claude-sonnet-4-5-20250929-v1:0": {
421
472
  id: "eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
422
473
  name: "Claude Sonnet 4.5 (EU)",
@@ -539,6 +590,23 @@ export const MODELS = {
539
590
  contextWindow: 1000000,
540
591
  maxTokens: 128000,
541
592
  },
593
+ "global.anthropic.claude-opus-4-8": {
594
+ id: "global.anthropic.claude-opus-4-8",
595
+ name: "Claude Opus 4.8 (Global)",
596
+ api: "bedrock-converse-stream",
597
+ provider: "amazon-bedrock",
598
+ baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
599
+ reasoning: true,
600
+ input: ["text", "image"],
601
+ cost: {
602
+ input: 5,
603
+ output: 25,
604
+ cacheRead: 0.5,
605
+ cacheWrite: 6.25,
606
+ },
607
+ contextWindow: 1000000,
608
+ maxTokens: 128000,
609
+ },
542
610
  "global.anthropic.claude-sonnet-4-5-20250929-v1:0": {
543
611
  id: "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
544
612
  name: "Claude Sonnet 4.5 (Global)",
@@ -625,6 +693,23 @@ export const MODELS = {
625
693
  contextWindow: 1000000,
626
694
  maxTokens: 128000,
627
695
  },
696
+ "jp.anthropic.claude-opus-4-8": {
697
+ id: "jp.anthropic.claude-opus-4-8",
698
+ name: "Claude Opus 4.8 (JP)",
699
+ api: "bedrock-converse-stream",
700
+ provider: "amazon-bedrock",
701
+ baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
702
+ reasoning: true,
703
+ input: ["text", "image"],
704
+ cost: {
705
+ input: 5,
706
+ output: 25,
707
+ cacheRead: 0.5,
708
+ cacheWrite: 6.25,
709
+ },
710
+ contextWindow: 1000000,
711
+ maxTokens: 128000,
712
+ },
628
713
  "jp.anthropic.claude-sonnet-4-5-20250929-v1:0": {
629
714
  id: "jp.anthropic.claude-sonnet-4-5-20250929-v1:0",
630
715
  name: "Claude Sonnet 4.5 (JP)",
@@ -1342,6 +1427,23 @@ export const MODELS = {
1342
1427
  contextWindow: 1000000,
1343
1428
  maxTokens: 128000,
1344
1429
  },
1430
+ "us.anthropic.claude-opus-4-8": {
1431
+ id: "us.anthropic.claude-opus-4-8",
1432
+ name: "Claude Opus 4.8 (US)",
1433
+ api: "bedrock-converse-stream",
1434
+ provider: "amazon-bedrock",
1435
+ baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
1436
+ reasoning: true,
1437
+ input: ["text", "image"],
1438
+ cost: {
1439
+ input: 5,
1440
+ output: 25,
1441
+ cacheRead: 0.5,
1442
+ cacheWrite: 6.25,
1443
+ },
1444
+ contextWindow: 1000000,
1445
+ maxTokens: 128000,
1446
+ },
1345
1447
  "us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
1346
1448
  id: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
1347
1449
  name: "Claude Sonnet 4.5 (US)",
@@ -1824,6 +1926,23 @@ export const MODELS = {
1824
1926
  contextWindow: 1000000,
1825
1927
  maxTokens: 128000,
1826
1928
  },
1929
+ "claude-opus-4-8": {
1930
+ id: "claude-opus-4-8",
1931
+ name: "Claude Opus 4.8",
1932
+ api: "anthropic-messages",
1933
+ provider: "anthropic",
1934
+ baseUrl: "https://api.anthropic.com",
1935
+ reasoning: true,
1936
+ input: ["text", "image"],
1937
+ cost: {
1938
+ input: 5,
1939
+ output: 25,
1940
+ cacheRead: 0.5,
1941
+ cacheWrite: 6.25,
1942
+ },
1943
+ contextWindow: 1000000,
1944
+ maxTokens: 128000,
1945
+ },
1827
1946
  "claude-sonnet-4-0": {
1828
1947
  id: "claude-sonnet-4-0",
1829
1948
  name: "Claude Sonnet 4 (latest)",
@@ -1991,7 +2110,7 @@ export const MODELS = {
1991
2110
  cost: {
1992
2111
  input: 0.1,
1993
2112
  output: 0.4,
1994
- cacheRead: 0.03,
2113
+ cacheRead: 0.025,
1995
2114
  cacheWrite: 0,
1996
2115
  },
1997
2116
  contextWindow: 1047576,
@@ -2076,7 +2195,7 @@ export const MODELS = {
2076
2195
  cost: {
2077
2196
  input: 0.15,
2078
2197
  output: 0.6,
2079
- cacheRead: 0.08,
2198
+ cacheRead: 0.075,
2080
2199
  cacheWrite: 0,
2081
2200
  },
2082
2201
  contextWindow: 128000,
@@ -2202,7 +2321,7 @@ export const MODELS = {
2202
2321
  cost: {
2203
2322
  input: 1.25,
2204
2323
  output: 10,
2205
- cacheRead: 0.13,
2324
+ cacheRead: 0.125,
2206
2325
  cacheWrite: 0,
2207
2326
  },
2208
2327
  contextWindow: 400000,
@@ -2627,7 +2746,7 @@ export const MODELS = {
2627
2746
  cost: {
2628
2747
  input: 1.1,
2629
2748
  output: 4.4,
2630
- cacheRead: 0.28,
2749
+ cacheRead: 0.275,
2631
2750
  cacheWrite: 0,
2632
2751
  },
2633
2752
  contextWindow: 200000,
@@ -2686,23 +2805,6 @@ export const MODELS = {
2686
2805
  contextWindow: 32000,
2687
2806
  maxTokens: 8000,
2688
2807
  },
2689
- "qwen-3-235b-a22b-instruct-2507": {
2690
- id: "qwen-3-235b-a22b-instruct-2507",
2691
- name: "Qwen 3 235B Instruct",
2692
- api: "openai-completions",
2693
- provider: "cerebras",
2694
- baseUrl: "https://api.cerebras.ai/v1",
2695
- reasoning: false,
2696
- input: ["text"],
2697
- cost: {
2698
- input: 0.6,
2699
- output: 1.2,
2700
- cacheRead: 0,
2701
- cacheWrite: 0,
2702
- },
2703
- contextWindow: 131000,
2704
- maxTokens: 32000,
2705
- },
2706
2808
  "zai-glm-4.7": {
2707
2809
  id: "zai-glm-4.7",
2708
2810
  name: "Z.AI GLM-4.7",
@@ -3827,8 +3929,8 @@ export const MODELS = {
3827
3929
  cacheRead: 0,
3828
3930
  cacheWrite: 0,
3829
3931
  },
3830
- contextWindow: 144000,
3831
- maxTokens: 32000,
3932
+ contextWindow: 200000,
3933
+ maxTokens: 64000,
3832
3934
  },
3833
3935
  "claude-opus-4.5": {
3834
3936
  id: "claude-opus-4.5",
@@ -3845,7 +3947,7 @@ export const MODELS = {
3845
3947
  cacheRead: 0,
3846
3948
  cacheWrite: 0,
3847
3949
  },
3848
- contextWindow: 160000,
3950
+ contextWindow: 200000,
3849
3951
  maxTokens: 32000,
3850
3952
  },
3851
3953
  "claude-opus-4.6": {
@@ -3866,7 +3968,7 @@ export const MODELS = {
3866
3968
  cacheWrite: 0,
3867
3969
  },
3868
3970
  contextWindow: 1000000,
3869
- maxTokens: 64000,
3971
+ maxTokens: 32000,
3870
3972
  },
3871
3973
  "claude-opus-4.7": {
3872
3974
  id: "claude-opus-4.7",
@@ -3886,6 +3988,24 @@ export const MODELS = {
3886
3988
  cacheWrite: 0,
3887
3989
  },
3888
3990
  contextWindow: 1000000,
3991
+ maxTokens: 32000,
3992
+ },
3993
+ "claude-opus-4.8": {
3994
+ id: "claude-opus-4.8",
3995
+ name: "Claude Opus 4.8",
3996
+ api: "anthropic-messages",
3997
+ provider: "github-copilot",
3998
+ baseUrl: "https://api.individual.githubcopilot.com",
3999
+ headers: { "User-Agent": "GitHubCopilotChat/0.35.0", "Editor-Version": "vscode/1.107.0", "Editor-Plugin-Version": "copilot-chat/0.35.0", "Copilot-Integration-Id": "vscode-chat" },
4000
+ reasoning: true,
4001
+ input: ["text", "image"],
4002
+ cost: {
4003
+ input: 0,
4004
+ output: 0,
4005
+ cacheRead: 0,
4006
+ cacheWrite: 0,
4007
+ },
4008
+ contextWindow: 200000,
3889
4009
  maxTokens: 64000,
3890
4010
  },
3891
4011
  "claude-sonnet-4.5": {
@@ -3904,7 +4024,7 @@ export const MODELS = {
3904
4024
  cacheRead: 0,
3905
4025
  cacheWrite: 0,
3906
4026
  },
3907
- contextWindow: 144000,
4027
+ contextWindow: 200000,
3908
4028
  maxTokens: 32000,
3909
4029
  },
3910
4030
  "claude-sonnet-4.6": {
@@ -3980,7 +4100,7 @@ export const MODELS = {
3980
4100
  cacheRead: 0,
3981
4101
  cacheWrite: 0,
3982
4102
  },
3983
- contextWindow: 128000,
4103
+ contextWindow: 200000,
3984
4104
  maxTokens: 64000,
3985
4105
  },
3986
4106
  "gemini-3.5-flash": {
@@ -3999,7 +4119,7 @@ export const MODELS = {
3999
4119
  cacheRead: 0,
4000
4120
  cacheWrite: 0,
4001
4121
  },
4002
- contextWindow: 128000,
4122
+ contextWindow: 200000,
4003
4123
  maxTokens: 64000,
4004
4124
  },
4005
4125
  "gpt-4.1": {
@@ -4075,8 +4195,8 @@ export const MODELS = {
4075
4195
  cacheRead: 0,
4076
4196
  cacheWrite: 0,
4077
4197
  },
4078
- contextWindow: 264000,
4079
- maxTokens: 64000,
4198
+ contextWindow: 400000,
4199
+ maxTokens: 128000,
4080
4200
  },
4081
4201
  "gpt-5.2-codex": {
4082
4202
  id: "gpt-5.2-codex",
@@ -4919,7 +5039,7 @@ export const MODELS = {
4919
5039
  cost: {
4920
5040
  input: 1,
4921
5041
  output: 3,
4922
- cacheRead: 0,
5042
+ cacheRead: 0.5,
4923
5043
  cacheWrite: 0,
4924
5044
  },
4925
5045
  contextWindow: 262144,
@@ -4936,7 +5056,7 @@ export const MODELS = {
4936
5056
  cost: {
4937
5057
  input: 0.15,
4938
5058
  output: 0.6,
4939
- cacheRead: 0,
5059
+ cacheRead: 0.075,
4940
5060
  cacheWrite: 0,
4941
5061
  },
4942
5062
  contextWindow: 131072,
@@ -4953,7 +5073,7 @@ export const MODELS = {
4953
5073
  cost: {
4954
5074
  input: 0.075,
4955
5075
  output: 0.3,
4956
- cacheRead: 0,
5076
+ cacheRead: 0.0375,
4957
5077
  cacheWrite: 0,
4958
5078
  },
4959
5079
  contextWindow: 131072,
@@ -5239,9 +5359,9 @@ export const MODELS = {
5239
5359
  reasoning: true,
5240
5360
  input: ["text"],
5241
5361
  cost: {
5242
- input: 1.74,
5243
- output: 3.48,
5244
- cacheRead: 0.145,
5362
+ input: 0.435,
5363
+ output: 0.87,
5364
+ cacheRead: 0.003625,
5245
5365
  cacheWrite: 0,
5246
5366
  },
5247
5367
  contextWindow: 1048576,
@@ -6334,7 +6454,7 @@ export const MODELS = {
6334
6454
  cost: {
6335
6455
  input: 0.1,
6336
6456
  output: 0.4,
6337
- cacheRead: 0.03,
6457
+ cacheRead: 0.025,
6338
6458
  cacheWrite: 0,
6339
6459
  },
6340
6460
  contextWindow: 1047576,
@@ -6419,7 +6539,7 @@ export const MODELS = {
6419
6539
  cost: {
6420
6540
  input: 0.15,
6421
6541
  output: 0.6,
6422
- cacheRead: 0.08,
6542
+ cacheRead: 0.075,
6423
6543
  cacheWrite: 0,
6424
6544
  },
6425
6545
  contextWindow: 128000,
@@ -6545,7 +6665,7 @@ export const MODELS = {
6545
6665
  cost: {
6546
6666
  input: 1.25,
6547
6667
  output: 10,
6548
- cacheRead: 0.13,
6668
+ cacheRead: 0.125,
6549
6669
  cacheWrite: 0,
6550
6670
  },
6551
6671
  contextWindow: 400000,
@@ -6970,7 +7090,7 @@ export const MODELS = {
6970
7090
  cost: {
6971
7091
  input: 1.1,
6972
7092
  output: 4.4,
6973
- cacheRead: 0.28,
7093
+ cacheRead: 0.275,
6974
7094
  cacheWrite: 0,
6975
7095
  },
6976
7096
  contextWindow: 200000,
@@ -7046,7 +7166,7 @@ export const MODELS = {
7046
7166
  cacheRead: 0.175,
7047
7167
  cacheWrite: 0,
7048
7168
  },
7049
- contextWindow: 272000,
7169
+ contextWindow: 128000,
7050
7170
  maxTokens: 128000,
7051
7171
  },
7052
7172
  "gpt-5.4": {
@@ -7120,7 +7240,7 @@ export const MODELS = {
7120
7240
  cacheWrite: 0,
7121
7241
  },
7122
7242
  contextWindow: 200000,
7123
- maxTokens: 128000,
7243
+ maxTokens: 32000,
7124
7244
  },
7125
7245
  "claude-haiku-4-5": {
7126
7246
  id: "claude-haiku-4-5",
@@ -7211,6 +7331,23 @@ export const MODELS = {
7211
7331
  contextWindow: 1000000,
7212
7332
  maxTokens: 128000,
7213
7333
  },
7334
+ "claude-opus-4-8": {
7335
+ id: "claude-opus-4-8",
7336
+ name: "Claude Opus 4.8",
7337
+ api: "anthropic-messages",
7338
+ provider: "opencode",
7339
+ baseUrl: "https://opencode.ai/zen",
7340
+ reasoning: true,
7341
+ input: ["text", "image"],
7342
+ cost: {
7343
+ input: 5,
7344
+ output: 25,
7345
+ cacheRead: 0.5,
7346
+ cacheWrite: 6.25,
7347
+ },
7348
+ contextWindow: 1000000,
7349
+ maxTokens: 128000,
7350
+ },
7214
7351
  "claude-sonnet-4": {
7215
7352
  id: "claude-sonnet-4",
7216
7353
  name: "Claude Sonnet 4",
@@ -7709,6 +7846,23 @@ export const MODELS = {
7709
7846
  contextWindow: 262144,
7710
7847
  maxTokens: 65536,
7711
7848
  },
7849
+ "mimo-v2.5-free": {
7850
+ id: "mimo-v2.5-free",
7851
+ name: "MiMo V2.5 Free",
7852
+ api: "openai-completions",
7853
+ provider: "opencode",
7854
+ baseUrl: "https://opencode.ai/zen/v1",
7855
+ reasoning: true,
7856
+ input: ["text", "image"],
7857
+ cost: {
7858
+ input: 0,
7859
+ output: 0,
7860
+ cacheRead: 0,
7861
+ cacheWrite: 0,
7862
+ },
7863
+ contextWindow: 1000000,
7864
+ maxTokens: 128000,
7865
+ },
7712
7866
  "minimax-m2.5": {
7713
7867
  id: "minimax-m2.5",
7714
7868
  name: "MiniMax M2.5",
@@ -7911,9 +8065,9 @@ export const MODELS = {
7911
8065
  reasoning: true,
7912
8066
  input: ["text", "image"],
7913
8067
  cost: {
7914
- input: 0.4,
7915
- output: 2,
7916
- cacheRead: 0.08,
8068
+ input: 0.14,
8069
+ output: 0.28,
8070
+ cacheRead: 0.0028,
7917
8071
  cacheWrite: 0,
7918
8072
  },
7919
8073
  contextWindow: 1000000,
@@ -7928,9 +8082,9 @@ export const MODELS = {
7928
8082
  reasoning: true,
7929
8083
  input: ["text"],
7930
8084
  cost: {
7931
- input: 1,
7932
- output: 3,
7933
- cacheRead: 0.2,
8085
+ input: 1.74,
8086
+ output: 3.48,
8087
+ cacheRead: 0.0145,
7934
8088
  cacheWrite: 0,
7935
8089
  },
7936
8090
  contextWindow: 1048576,
@@ -8006,6 +8160,23 @@ export const MODELS = {
8006
8160
  contextWindow: 262144,
8007
8161
  maxTokens: 65536,
8008
8162
  },
8163
+ "qwen3.7-max": {
8164
+ id: "qwen3.7-max",
8165
+ name: "Qwen3.7 Max",
8166
+ api: "anthropic-messages",
8167
+ provider: "opencode-go",
8168
+ baseUrl: "https://opencode.ai/zen/go",
8169
+ reasoning: true,
8170
+ input: ["text"],
8171
+ cost: {
8172
+ input: 2.5,
8173
+ output: 7.5,
8174
+ cacheRead: 0.5,
8175
+ cacheWrite: 3.125,
8176
+ },
8177
+ contextWindow: 1000000,
8178
+ maxTokens: 65536,
8179
+ },
8009
8180
  },
8010
8181
  "openrouter": {
8011
8182
  "ai21/jamba-large-1.7": {
@@ -8025,23 +8196,6 @@ export const MODELS = {
8025
8196
  contextWindow: 256000,
8026
8197
  maxTokens: 4096,
8027
8198
  },
8028
- "alibaba/tongyi-deepresearch-30b-a3b": {
8029
- id: "alibaba/tongyi-deepresearch-30b-a3b",
8030
- name: "Tongyi DeepResearch 30B A3B",
8031
- api: "openai-completions",
8032
- provider: "openrouter",
8033
- baseUrl: "https://openrouter.ai/api/v1",
8034
- reasoning: true,
8035
- input: ["text"],
8036
- cost: {
8037
- input: 0.09,
8038
- output: 0.44999999999999996,
8039
- cacheRead: 0.09,
8040
- cacheWrite: 0,
8041
- },
8042
- contextWindow: 131072,
8043
- maxTokens: 131072,
8044
- },
8045
8199
  "amazon/nova-2-lite-v1": {
8046
8200
  id: "amazon/nova-2-lite-v1",
8047
8201
  name: "Amazon: Nova 2 Lite",
@@ -8301,6 +8455,40 @@ export const MODELS = {
8301
8455
  contextWindow: 1000000,
8302
8456
  maxTokens: 128000,
8303
8457
  },
8458
+ "anthropic/claude-opus-4.8": {
8459
+ id: "anthropic/claude-opus-4.8",
8460
+ name: "Anthropic: Claude Opus 4.8",
8461
+ api: "openai-completions",
8462
+ provider: "openrouter",
8463
+ baseUrl: "https://openrouter.ai/api/v1",
8464
+ reasoning: true,
8465
+ input: ["text", "image"],
8466
+ cost: {
8467
+ input: 5,
8468
+ output: 25,
8469
+ cacheRead: 0.5,
8470
+ cacheWrite: 6.25,
8471
+ },
8472
+ contextWindow: 1000000,
8473
+ maxTokens: 128000,
8474
+ },
8475
+ "anthropic/claude-opus-4.8-fast": {
8476
+ id: "anthropic/claude-opus-4.8-fast",
8477
+ name: "Anthropic: Claude Opus 4.8 (Fast)",
8478
+ api: "openai-completions",
8479
+ provider: "openrouter",
8480
+ baseUrl: "https://openrouter.ai/api/v1",
8481
+ reasoning: true,
8482
+ input: ["text", "image"],
8483
+ cost: {
8484
+ input: 10,
8485
+ output: 50,
8486
+ cacheRead: 1,
8487
+ cacheWrite: 12.5,
8488
+ },
8489
+ contextWindow: 1000000,
8490
+ maxTokens: 128000,
8491
+ },
8304
8492
  "anthropic/claude-sonnet-4": {
8305
8493
  id: "anthropic/claude-sonnet-4",
8306
8494
  name: "Anthropic: Claude Sonnet 4",
@@ -8369,23 +8557,6 @@ export const MODELS = {
8369
8557
  contextWindow: 262144,
8370
8558
  maxTokens: 262144,
8371
8559
  },
8372
- "arcee-ai/trinity-large-thinking:free": {
8373
- id: "arcee-ai/trinity-large-thinking:free",
8374
- name: "Arcee AI: Trinity Large Thinking (free)",
8375
- api: "openai-completions",
8376
- provider: "openrouter",
8377
- baseUrl: "https://openrouter.ai/api/v1",
8378
- reasoning: true,
8379
- input: ["text"],
8380
- cost: {
8381
- input: 0,
8382
- output: 0,
8383
- cacheRead: 0,
8384
- cacheWrite: 0,
8385
- },
8386
- contextWindow: 262144,
8387
- maxTokens: 80000,
8388
- },
8389
8560
  "arcee-ai/trinity-mini": {
8390
8561
  id: "arcee-ai/trinity-mini",
8391
8562
  name: "Arcee AI: Trinity Mini",
@@ -8437,23 +8608,6 @@ export const MODELS = {
8437
8608
  contextWindow: 2000000,
8438
8609
  maxTokens: 30000,
8439
8610
  },
8440
- "baidu/cobuddy:free": {
8441
- id: "baidu/cobuddy:free",
8442
- name: "Baidu Qianfan: CoBuddy (free)",
8443
- api: "openai-completions",
8444
- provider: "openrouter",
8445
- baseUrl: "https://openrouter.ai/api/v1",
8446
- reasoning: true,
8447
- input: ["text"],
8448
- cost: {
8449
- input: 0,
8450
- output: 0,
8451
- cacheRead: 0,
8452
- cacheWrite: 0,
8453
- },
8454
- contextWindow: 131072,
8455
- maxTokens: 65536,
8456
- },
8457
8611
  "baidu/ernie-4.5-21b-a3b": {
8458
8612
  id: "baidu/ernie-4.5-21b-a3b",
8459
8613
  name: "Baidu: ERNIE 4.5 21B A3B",
@@ -8599,13 +8753,13 @@ export const MODELS = {
8599
8753
  reasoning: false,
8600
8754
  input: ["text"],
8601
8755
  cost: {
8602
- input: 0.32,
8603
- output: 0.8899999999999999,
8756
+ input: 0.2288,
8757
+ output: 0.9144,
8604
8758
  cacheRead: 0,
8605
8759
  cacheWrite: 0,
8606
8760
  },
8607
- contextWindow: 163840,
8608
- maxTokens: 16384,
8761
+ contextWindow: 131072,
8762
+ maxTokens: 16000,
8609
8763
  },
8610
8764
  "deepseek/deepseek-chat-v3-0324": {
8611
8765
  id: "deepseek/deepseek-chat-v3-0324",
@@ -9872,6 +10026,23 @@ export const MODELS = {
9872
10026
  contextWindow: 262144,
9873
10027
  maxTokens: 262142,
9874
10028
  },
10029
+ "moonshotai/kimi-k2.6:free": {
10030
+ id: "moonshotai/kimi-k2.6:free",
10031
+ name: "MoonshotAI: Kimi K2.6 (free)",
10032
+ api: "openai-completions",
10033
+ provider: "openrouter",
10034
+ baseUrl: "https://openrouter.ai/api/v1",
10035
+ reasoning: true,
10036
+ input: ["text", "image"],
10037
+ cost: {
10038
+ input: 0,
10039
+ output: 0,
10040
+ cacheRead: 0,
10041
+ cacheWrite: 0,
10042
+ },
10043
+ contextWindow: 262144,
10044
+ maxTokens: 4096,
10045
+ },
9875
10046
  "nex-agi/deepseek-v3.1-nex-n1": {
9876
10047
  id: "nex-agi/deepseek-v3.1-nex-n1",
9877
10048
  name: "Nex AGI: DeepSeek V3.1 Nex N1",
@@ -10461,11 +10632,11 @@ export const MODELS = {
10461
10632
  cost: {
10462
10633
  input: 1.25,
10463
10634
  output: 10,
10464
- cacheRead: 0.125,
10635
+ cacheRead: 0.13,
10465
10636
  cacheWrite: 0,
10466
10637
  },
10467
10638
  contextWindow: 128000,
10468
- maxTokens: 16384,
10639
+ maxTokens: 32000,
10469
10640
  },
10470
10641
  "openai/gpt-5.1-codex": {
10471
10642
  id: "openai/gpt-5.1-codex",
@@ -10478,7 +10649,7 @@ export const MODELS = {
10478
10649
  cost: {
10479
10650
  input: 1.25,
10480
10651
  output: 10,
10481
- cacheRead: 0.125,
10652
+ cacheRead: 0.13,
10482
10653
  cacheWrite: 0,
10483
10654
  },
10484
10655
  contextWindow: 400000,
@@ -10512,11 +10683,11 @@ export const MODELS = {
10512
10683
  cost: {
10513
10684
  input: 0.25,
10514
10685
  output: 2,
10515
- cacheRead: 0.03,
10686
+ cacheRead: 0.024999999999999998,
10516
10687
  cacheWrite: 0,
10517
10688
  },
10518
10689
  contextWindow: 400000,
10519
- maxTokens: 128000,
10690
+ maxTokens: 100000,
10520
10691
  },
10521
10692
  "openai/gpt-5.2": {
10522
10693
  id: "openai/gpt-5.2",
@@ -10552,7 +10723,7 @@ export const MODELS = {
10552
10723
  cacheWrite: 0,
10553
10724
  },
10554
10725
  contextWindow: 128000,
10555
- maxTokens: 32000,
10726
+ maxTokens: 16384,
10556
10727
  },
10557
10728
  "openai/gpt-5.2-codex": {
10558
10729
  id: "openai/gpt-5.2-codex",
@@ -11088,8 +11259,8 @@ export const MODELS = {
11088
11259
  cacheRead: 0,
11089
11260
  cacheWrite: 0,
11090
11261
  },
11091
- contextWindow: 131072,
11092
- maxTokens: 8192,
11262
+ contextWindow: 262144,
11263
+ maxTokens: 32768,
11093
11264
  },
11094
11265
  "poolside/laguna-xs.2:free": {
11095
11266
  id: "poolside/laguna-xs.2:free",
@@ -11105,8 +11276,8 @@ export const MODELS = {
11105
11276
  cacheRead: 0,
11106
11277
  cacheWrite: 0,
11107
11278
  },
11108
- contextWindow: 131072,
11109
- maxTokens: 8192,
11279
+ contextWindow: 262144,
11280
+ maxTokens: 32768,
11110
11281
  },
11111
11282
  "prime-intellect/intellect-3": {
11112
11283
  id: "prime-intellect/intellect-3",
@@ -11188,7 +11359,7 @@ export const MODELS = {
11188
11359
  input: 0.26,
11189
11360
  output: 0.78,
11190
11361
  cacheRead: 0,
11191
- cacheWrite: 0.325,
11362
+ cacheWrite: 0,
11192
11363
  },
11193
11364
  contextWindow: 1000000,
11194
11365
  maxTokens: 32768,
@@ -11766,7 +11937,7 @@ export const MODELS = {
11766
11937
  input: 0.065,
11767
11938
  output: 0.26,
11768
11939
  cacheRead: 0,
11769
- cacheWrite: 0.08125,
11940
+ cacheWrite: 0,
11770
11941
  },
11771
11942
  contextWindow: 1000000,
11772
11943
  maxTokens: 65536,
@@ -11783,7 +11954,7 @@ export const MODELS = {
11783
11954
  input: 0.26,
11784
11955
  output: 1.56,
11785
11956
  cacheRead: 0,
11786
- cacheWrite: 0.325,
11957
+ cacheWrite: 0,
11787
11958
  },
11788
11959
  contextWindow: 1000000,
11789
11960
  maxTokens: 65536,
@@ -11800,7 +11971,7 @@ export const MODELS = {
11800
11971
  input: 0.3,
11801
11972
  output: 1.7999999999999998,
11802
11973
  cacheRead: 0,
11803
- cacheWrite: 0,
11974
+ cacheWrite: 0.375,
11804
11975
  },
11805
11976
  contextWindow: 1000000,
11806
11977
  maxTokens: 65536,
@@ -11814,13 +11985,13 @@ export const MODELS = {
11814
11985
  reasoning: true,
11815
11986
  input: ["text", "image"],
11816
11987
  cost: {
11817
- input: 0.3,
11988
+ input: 0.29,
11818
11989
  output: 3.1999999999999997,
11819
11990
  cacheRead: 0,
11820
11991
  cacheWrite: 0,
11821
11992
  },
11822
11993
  contextWindow: 262144,
11823
- maxTokens: 262144,
11994
+ maxTokens: 262140,
11824
11995
  },
11825
11996
  "qwen/qwen3.6-35b-a3b": {
11826
11997
  id: "qwen/qwen3.6-35b-a3b",
@@ -11831,7 +12002,7 @@ export const MODELS = {
11831
12002
  reasoning: true,
11832
12003
  input: ["text", "image"],
11833
12004
  cost: {
11834
- input: 0.15,
12005
+ input: 0.14,
11835
12006
  output: 1,
11836
12007
  cacheRead: 0,
11837
12008
  cacheWrite: 0,
@@ -11899,10 +12070,10 @@ export const MODELS = {
11899
12070
  reasoning: true,
11900
12071
  input: ["text"],
11901
12072
  cost: {
11902
- input: 2.5,
11903
- output: 7.5,
11904
- cacheRead: 0,
11905
- cacheWrite: 3.125,
12073
+ input: 1.25,
12074
+ output: 3.75,
12075
+ cacheRead: 0.25,
12076
+ cacheWrite: 1.5625,
11906
12077
  },
11907
12078
  contextWindow: 1000000,
11908
12079
  maxTokens: 65536,
@@ -11992,6 +12163,23 @@ export const MODELS = {
11992
12163
  contextWindow: 262144,
11993
12164
  maxTokens: 16384,
11994
12165
  },
12166
+ "stepfun/step-3.7-flash": {
12167
+ id: "stepfun/step-3.7-flash",
12168
+ name: "StepFun: Step 3.7 Flash",
12169
+ api: "openai-completions",
12170
+ provider: "openrouter",
12171
+ baseUrl: "https://openrouter.ai/api/v1",
12172
+ reasoning: true,
12173
+ input: ["text", "image"],
12174
+ cost: {
12175
+ input: 0.19999999999999998,
12176
+ output: 1.15,
12177
+ cacheRead: 0.04,
12178
+ cacheWrite: 0,
12179
+ },
12180
+ contextWindow: 256000,
12181
+ maxTokens: 256000,
12182
+ },
11995
12183
  "tencent/hy3-preview": {
11996
12184
  id: "tencent/hy3-preview",
11997
12185
  name: "Tencent: Hy3 preview",
@@ -12001,13 +12189,13 @@ export const MODELS = {
12001
12189
  reasoning: true,
12002
12190
  input: ["text"],
12003
12191
  cost: {
12004
- input: 0.06599999999999999,
12005
- output: 0.26,
12006
- cacheRead: 0.029,
12192
+ input: 0.063,
12193
+ output: 0.21,
12194
+ cacheRead: 0.020999999999999998,
12007
12195
  cacheWrite: 0,
12008
12196
  },
12009
12197
  contextWindow: 262144,
12010
- maxTokens: 262144,
12198
+ maxTokens: 4096,
12011
12199
  },
12012
12200
  "thedrummer/rocinante-12b": {
12013
12201
  id: "thedrummer/rocinante-12b",
@@ -12171,9 +12359,9 @@ export const MODELS = {
12171
12359
  reasoning: true,
12172
12360
  input: ["text", "image"],
12173
12361
  cost: {
12174
- input: 0.39999999999999997,
12175
- output: 2,
12176
- cacheRead: 0.08,
12362
+ input: 0.14,
12363
+ output: 0.28,
12364
+ cacheRead: 0.0028,
12177
12365
  cacheWrite: 0,
12178
12366
  },
12179
12367
  contextWindow: 1048576,
@@ -12188,13 +12376,13 @@ export const MODELS = {
12188
12376
  reasoning: true,
12189
12377
  input: ["text"],
12190
12378
  cost: {
12191
- input: 1,
12192
- output: 3,
12193
- cacheRead: 0.19999999999999998,
12379
+ input: 0.435,
12380
+ output: 0.87,
12381
+ cacheRead: 0.0036,
12194
12382
  cacheWrite: 0,
12195
12383
  },
12196
12384
  contextWindow: 1048576,
12197
- maxTokens: 16384,
12385
+ maxTokens: 131072,
12198
12386
  },
12199
12387
  "z-ai/glm-4-32b": {
12200
12388
  id: "z-ai/glm-4-32b",
@@ -12239,13 +12427,13 @@ export const MODELS = {
12239
12427
  reasoning: true,
12240
12428
  input: ["text"],
12241
12429
  cost: {
12242
- input: 0.13,
12430
+ input: 0.125,
12243
12431
  output: 0.85,
12244
- cacheRead: 0.024999999999999998,
12432
+ cacheRead: 0.06,
12245
12433
  cacheWrite: 0,
12246
12434
  },
12247
12435
  contextWindow: 131072,
12248
- maxTokens: 98304,
12436
+ maxTokens: 131070,
12249
12437
  },
12250
12438
  "z-ai/glm-4.5-air:free": {
12251
12439
  id: "z-ai/glm-4.5-air:free",
@@ -13359,6 +13547,23 @@ export const MODELS = {
13359
13547
  contextWindow: 1000000,
13360
13548
  maxTokens: 128000,
13361
13549
  },
13550
+ "anthropic/claude-opus-4.8": {
13551
+ id: "anthropic/claude-opus-4.8",
13552
+ name: "Claude Opus 4.8",
13553
+ api: "anthropic-messages",
13554
+ provider: "vercel-ai-gateway",
13555
+ baseUrl: "https://ai-gateway.vercel.sh",
13556
+ reasoning: true,
13557
+ input: ["text", "image"],
13558
+ cost: {
13559
+ input: 5,
13560
+ output: 25,
13561
+ cacheRead: 0.5,
13562
+ cacheWrite: 6.25,
13563
+ },
13564
+ contextWindow: 1000000,
13565
+ maxTokens: 128000,
13566
+ },
13362
13567
  "anthropic/claude-sonnet-4": {
13363
13568
  id: "anthropic/claude-sonnet-4",
13364
13569
  name: "Claude Sonnet 4",
@@ -15353,9 +15558,9 @@ export const MODELS = {
15353
15558
  reasoning: true,
15354
15559
  input: ["text", "image"],
15355
15560
  cost: {
15356
- input: 0.39999999999999997,
15357
- output: 2,
15358
- cacheRead: 0.08,
15561
+ input: 0.14,
15562
+ output: 0.28,
15563
+ cacheRead: 0.0028,
15359
15564
  cacheWrite: 0,
15360
15565
  },
15361
15566
  contextWindow: 1050000,
@@ -15370,9 +15575,9 @@ export const MODELS = {
15370
15575
  reasoning: true,
15371
15576
  input: ["text", "image"],
15372
15577
  cost: {
15373
- input: 1,
15374
- output: 3,
15375
- cacheRead: 0.19999999999999998,
15578
+ input: 0.435,
15579
+ output: 0.87,
15580
+ cacheRead: 0.0036,
15376
15581
  cacheWrite: 0,
15377
15582
  },
15378
15583
  contextWindow: 1050000,