@blockrun/clawrouter 0.12.243 → 0.12.245
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -27
- package/dist/cli.js +241 -44
- package/dist/index.js +241 -44
- package/dist/router/index.js +3 -4
- package/docs/anthropic-cost-savings.md +1 -1
- package/docs/anthropic-third-party-harness-changes.md +3 -3
- package/docs/clawrouter-cuts-llm-api-costs-500x.md +1 -1
- package/docs/clawrouter-vs-openrouter-llm-routing-comparison.md +4 -4
- package/package.json +3 -3
- package/skills/clawrouter/SKILL.md +3 -3
- package/src/top-models.json +0 -1
package/dist/cli.js
CHANGED
|
@@ -36252,10 +36252,9 @@ ${value.slice(-(scanLimit - prefixLength))}`;
|
|
|
36252
36252
|
fallback: [
|
|
36253
36253
|
"free/gpt-oss-20b",
|
|
36254
36254
|
// FREE — smaller, faster
|
|
36255
|
-
|
|
36256
|
-
//
|
|
36257
|
-
//
|
|
36258
|
-
// gpt-oss-120b/20b already head this chain, so the rung is dropped, not retargeted.
|
|
36255
|
+
// deepseek-v4-flash and seed-oss-36b sat here until NVIDIA EOL'd them
|
|
36256
|
+
// (410; 2026-08-12 and 2026-08-03 respectively). gpt-oss-120b/20b already
|
|
36257
|
+
// head this chain, so the rungs are dropped, not retargeted.
|
|
36259
36258
|
"google/gemini-3.1-flash-lite",
|
|
36260
36259
|
// $0.25/$1.50 — newest flash-lite
|
|
36261
36260
|
"openai/gpt-5.4-nano",
|
|
@@ -36564,7 +36563,6 @@ var init_top_models = __esm({
|
|
|
36564
36563
|
"deepseek/deepseek-v4-pro",
|
|
36565
36564
|
"deepseek/deepseek-chat",
|
|
36566
36565
|
"deepseek/deepseek-reasoner",
|
|
36567
|
-
"free/deepseek-v4-flash",
|
|
36568
36566
|
"free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
36569
36567
|
"free/mistral-nemotron",
|
|
36570
36568
|
"free/step-3.7-flash",
|
|
@@ -36764,6 +36762,14 @@ var init_models = __esm({
|
|
|
36764
36762
|
"gpt-5.6-sol": "openai/gpt-5.6-sol",
|
|
36765
36763
|
"gpt-5.6-terra": "openai/gpt-5.6-terra",
|
|
36766
36764
|
"gpt-5.6-luna": "openai/gpt-5.6-luna",
|
|
36765
|
+
// Pro reasoning tiers (2026-08-03). Explicit pins only — the generic
|
|
36766
|
+
// shorthands above stay on standard Terra.
|
|
36767
|
+
"gpt-5.6-sol-pro": "openai/gpt-5.6-sol-pro",
|
|
36768
|
+
"gpt-5.6-terra-pro": "openai/gpt-5.6-terra-pro",
|
|
36769
|
+
"gpt-5.6-luna-pro": "openai/gpt-5.6-luna-pro",
|
|
36770
|
+
"sol-pro": "openai/gpt-5.6-sol-pro",
|
|
36771
|
+
"terra-pro": "openai/gpt-5.6-terra-pro",
|
|
36772
|
+
"luna-pro": "openai/gpt-5.6-luna-pro",
|
|
36767
36773
|
"gpt-5.5": "openai/gpt-5.5",
|
|
36768
36774
|
"gpt-5.5-pro": "openai/gpt-5.5-pro",
|
|
36769
36775
|
// ChatGPT Instant. `chat-latest` is a rolling upstream id — pinning it means
|
|
@@ -36815,6 +36821,20 @@ var init_models = __esm({
|
|
|
36815
36821
|
"qwen3.7-max": "qwen/qwen3.7-max",
|
|
36816
36822
|
"qwen-3.7-max": "qwen/qwen3.7-max",
|
|
36817
36823
|
"qwen3-7-max": "qwen/qwen3.7-max",
|
|
36824
|
+
// Plus/Flash tiers (2026-08-03) — explicit pins, same rule as Max.
|
|
36825
|
+
"qwen3.7-plus": "qwen/qwen3.7-plus",
|
|
36826
|
+
"qwen-3.7-plus": "qwen/qwen3.7-plus",
|
|
36827
|
+
"qwen3.7-flash": "qwen/qwen3.7-flash",
|
|
36828
|
+
"qwen-3.7-flash": "qwen/qwen3.7-flash",
|
|
36829
|
+
// Tencent + Xiaomi (2026-07-25) — each maker has exactly one model, so the
|
|
36830
|
+
// bare maker names are safe to bind.
|
|
36831
|
+
hy3: "tencent/hy3",
|
|
36832
|
+
tencent: "tencent/hy3",
|
|
36833
|
+
hunyuan: "tencent/hy3",
|
|
36834
|
+
mimo: "xiaomi/mimo-v2.5-pro",
|
|
36835
|
+
"mimo-v2.5-pro": "xiaomi/mimo-v2.5-pro",
|
|
36836
|
+
"mimo-v2.5": "xiaomi/mimo-v2.5-pro",
|
|
36837
|
+
xiaomi: "xiaomi/mimo-v2.5-pro",
|
|
36818
36838
|
// Google
|
|
36819
36839
|
// gemini-3-pro-preview delisted by Google 2026-06-06 — mirror the gateway
|
|
36820
36840
|
// redirect to its successor so pinned callers land on 3.1-pro, not an error.
|
|
@@ -36830,7 +36850,10 @@ var init_models = __esm({
|
|
|
36830
36850
|
flash: "google/gemini-2.5-flash",
|
|
36831
36851
|
"gemini-3.1-pro-preview": "google/gemini-3.1-pro",
|
|
36832
36852
|
"google/gemini-3.1-pro-preview": "google/gemini-3.1-pro",
|
|
36853
|
+
"gemini-3.6-flash": "google/gemini-3.6-flash",
|
|
36854
|
+
"gemini-3.6": "google/gemini-3.6-flash",
|
|
36833
36855
|
"gemini-3.5-flash": "google/gemini-3.5-flash",
|
|
36856
|
+
"gemini-3.5-flash-lite": "google/gemini-3.5-flash-lite",
|
|
36834
36857
|
"gemini-3.1-flash-lite": "google/gemini-3.1-flash-lite",
|
|
36835
36858
|
"gemini-2.5-flash-lite": "google/gemini-2.5-flash-lite",
|
|
36836
36859
|
// xAI — grok-4.3 is the public flagship since 2026-06-04 (grok-3 and the
|
|
@@ -36866,12 +36889,17 @@ var init_models = __esm({
|
|
|
36866
36889
|
"gpt-20b": "free/gpt-oss-20b",
|
|
36867
36890
|
"nvidia/gpt-oss-120b": "free/gpt-oss-120b",
|
|
36868
36891
|
"nvidia/gpt-oss-20b": "free/gpt-oss-20b",
|
|
36869
|
-
// deepseek family
|
|
36870
|
-
//
|
|
36871
|
-
|
|
36872
|
-
|
|
36873
|
-
|
|
36874
|
-
|
|
36892
|
+
// deepseek free family: v4-flash EOL'd 2026-08-12 (HTTP 410 from NVIDIA on both
|
|
36893
|
+
// probe passes; prod gate fired [ALERT][free-model-dead] kind=gone twice that
|
|
36894
|
+
// morning). The whole nvidia/deepseek-* family is now dead upstream — blockrun
|
|
36895
|
+
// hid flash and retargeted v3.2/v4-pro (whose redirects chained through flash)
|
|
36896
|
+
// straight to gpt-oss-120b. Ids naming v4-flash itself keep the real id (the
|
|
36897
|
+
// gateway redirects them); the v3.2/v4-pro ids follow blockrun's retarget
|
|
36898
|
+
// rather than chaining through a second dead model.
|
|
36899
|
+
"nvidia/deepseek-v3.2": "free/gpt-oss-120b",
|
|
36900
|
+
"free/deepseek-v3.2": "free/gpt-oss-120b",
|
|
36901
|
+
"nvidia/deepseek-v4-pro": "free/gpt-oss-120b",
|
|
36902
|
+
"free/deepseek-v4-pro": "free/gpt-oss-120b",
|
|
36875
36903
|
"nvidia/deepseek-v4-flash": "free/deepseek-v4-flash",
|
|
36876
36904
|
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning": "free/nemotron-3-nano-omni-30b-a3b-reasoning",
|
|
36877
36905
|
// qwen3-coder-480b retired (NVIDIA EOL 2026-06-14). Its server-side redirect used
|
|
@@ -36913,13 +36941,16 @@ var init_models = __esm({
|
|
|
36913
36941
|
"mistral-large-3-675b": "free/mistral-large-3-675b",
|
|
36914
36942
|
"qwen3.5-122b": "free/qwen3.5-122b-a10b",
|
|
36915
36943
|
"qwen3-122b": "free/qwen3.5-122b-a10b",
|
|
36916
|
-
// Free model shorthand aliases
|
|
36917
|
-
"
|
|
36918
|
-
|
|
36919
|
-
//
|
|
36944
|
+
// Free model shorthand aliases. v4-flash EOL'd 2026-08-12 — no free DeepSeek
|
|
36945
|
+
// is left anywhere, so the generic "a free deepseek" shorthand follows the
|
|
36946
|
+
// gateway's retarget (blockrun's /free-deepseek page points at gpt-oss-120b
|
|
36947
|
+
// too). Shorthands naming v4-flash itself stay on the real id — the gateway
|
|
36948
|
+
// redirects them, same treatment as seed-oss/mistral-large pins.
|
|
36949
|
+
"deepseek-free": "free/gpt-oss-120b",
|
|
36950
|
+
"deepseek-v4-pro": "free/gpt-oss-120b",
|
|
36951
|
+
// free shorthand; pro dead upstream (410)
|
|
36920
36952
|
"deepseek-v4-flash": "free/deepseek-v4-flash",
|
|
36921
|
-
"v4-pro": "free/
|
|
36922
|
-
// V4 Pro NVIDIA hung → flash
|
|
36953
|
+
"v4-pro": "free/gpt-oss-120b",
|
|
36923
36954
|
"v4-flash": "free/deepseek-v4-flash",
|
|
36924
36955
|
"mistral-free": "free/mistral-nemotron",
|
|
36925
36956
|
// mistral-large-3-675b EOL'd 2026-07-28 → last live free Mistral (blockrun demoted its /free-mistral primary the same way)
|
|
@@ -36999,16 +37030,32 @@ var init_models = __esm({
|
|
|
36999
37030
|
banana: "google/nano-banana",
|
|
37000
37031
|
"banana-pro": "google/nano-banana-pro",
|
|
37001
37032
|
"nano-banana-pro": "google/nano-banana-pro",
|
|
37033
|
+
// Nano Banana 2 (Gemini 3.1 Flash imagegen, 2026-08-03). Explicit pins —
|
|
37034
|
+
// bare `nano-banana`/`banana` stay on the original.
|
|
37035
|
+
"nano-banana-2": "google/nano-banana-2",
|
|
37036
|
+
"banana-2": "google/nano-banana-2",
|
|
37002
37037
|
seedream: "bytedance/seedream-5-pro",
|
|
37003
37038
|
"grok-imagine": "xai/grok-imagine-image",
|
|
37004
37039
|
"grok-imagine-pro": "xai/grok-imagine-image-pro",
|
|
37005
37040
|
cogview: "zai/cogview-4",
|
|
37006
37041
|
// Video generation
|
|
37007
37042
|
"grok-video": "xai/grok-imagine-video",
|
|
37043
|
+
// Bare `seedance` deliberately stays on 1.5-pro. It is the cheapest of the
|
|
37044
|
+
// family ($0.070/s vs 2.5's $0.315/s) and `/videogen` documents it as
|
|
37045
|
+
// "default — cheapest"; repointing it at the newest tier would 4.5x the
|
|
37046
|
+
// quote for every caller who typed the short name expecting the default.
|
|
37047
|
+
// Same reasoning that keeps `kimi` on K2.7. Pin 2.5 explicitly to opt in.
|
|
37008
37048
|
seedance: "bytedance/seedance-1.5-pro",
|
|
37009
37049
|
"seedance-1.5": "bytedance/seedance-1.5-pro",
|
|
37010
37050
|
"seedance-2-fast": "bytedance/seedance-2.0-fast",
|
|
37011
|
-
"seedance-2": "bytedance/seedance-2.0"
|
|
37051
|
+
"seedance-2": "bytedance/seedance-2.0",
|
|
37052
|
+
"seedance-2.5": "bytedance/seedance-2.5",
|
|
37053
|
+
"seedance-2-5": "bytedance/seedance-2.5",
|
|
37054
|
+
// Seedance 2.0 Mini (2026-08-12): 720p + synced audio at half the flagship
|
|
37055
|
+
// rate. Note it is NOT cheaper than 1.5-pro, so bare `seedance` stays put.
|
|
37056
|
+
"seedance-2-mini": "bytedance/seedance-2.0-mini",
|
|
37057
|
+
"seedance-2.0-mini": "bytedance/seedance-2.0-mini",
|
|
37058
|
+
"seedance-mini": "bytedance/seedance-2.0-mini"
|
|
37012
37059
|
};
|
|
37013
37060
|
BLOCKRUN_MODELS = [
|
|
37014
37061
|
// Smart routing meta-models — proxy replaces with actual model
|
|
@@ -37116,11 +37163,12 @@ var init_models = __esm({
|
|
|
37116
37163
|
toolCalling: true
|
|
37117
37164
|
},
|
|
37118
37165
|
{
|
|
37166
|
+
// Terra/Luna repriced 2026-07-30 (OpenAI price cut, blockrun #326).
|
|
37119
37167
|
id: "openai/gpt-5.6-terra",
|
|
37120
37168
|
name: "GPT-5.6 Terra",
|
|
37121
37169
|
version: "5.6",
|
|
37122
|
-
inputPrice: 2
|
|
37123
|
-
outputPrice:
|
|
37170
|
+
inputPrice: 2,
|
|
37171
|
+
outputPrice: 12,
|
|
37124
37172
|
contextWindow: 105e4,
|
|
37125
37173
|
maxOutput: 128e3,
|
|
37126
37174
|
reasoning: true,
|
|
@@ -37132,10 +37180,52 @@ var init_models = __esm({
|
|
|
37132
37180
|
id: "openai/gpt-5.6-luna",
|
|
37133
37181
|
name: "GPT-5.6 Luna",
|
|
37134
37182
|
version: "5.6",
|
|
37183
|
+
inputPrice: 0.2,
|
|
37184
|
+
outputPrice: 1.2,
|
|
37185
|
+
contextWindow: 105e4,
|
|
37186
|
+
maxOutput: 128e3,
|
|
37187
|
+
vision: true,
|
|
37188
|
+
agentic: true,
|
|
37189
|
+
toolCalling: true
|
|
37190
|
+
},
|
|
37191
|
+
// GPT-5.6 Pro tiers (blockrun #329, 2026-08-03): each base tier with pro
|
|
37192
|
+
// reasoning mode. Terra Pro lands at half the standard Terra rate; Luna Pro
|
|
37193
|
+
// is the budget deep-reasoning tier.
|
|
37194
|
+
{
|
|
37195
|
+
id: "openai/gpt-5.6-sol-pro",
|
|
37196
|
+
name: "GPT-5.6 Sol Pro",
|
|
37197
|
+
version: "5.6",
|
|
37198
|
+
inputPrice: 5,
|
|
37199
|
+
outputPrice: 30,
|
|
37200
|
+
contextWindow: 105e4,
|
|
37201
|
+
maxOutput: 128e3,
|
|
37202
|
+
reasoning: true,
|
|
37203
|
+
vision: true,
|
|
37204
|
+
agentic: true,
|
|
37205
|
+
toolCalling: true
|
|
37206
|
+
},
|
|
37207
|
+
{
|
|
37208
|
+
id: "openai/gpt-5.6-terra-pro",
|
|
37209
|
+
name: "GPT-5.6 Terra Pro",
|
|
37210
|
+
version: "5.6",
|
|
37135
37211
|
inputPrice: 1,
|
|
37136
37212
|
outputPrice: 6,
|
|
37137
37213
|
contextWindow: 105e4,
|
|
37138
37214
|
maxOutput: 128e3,
|
|
37215
|
+
reasoning: true,
|
|
37216
|
+
vision: true,
|
|
37217
|
+
agentic: true,
|
|
37218
|
+
toolCalling: true
|
|
37219
|
+
},
|
|
37220
|
+
{
|
|
37221
|
+
id: "openai/gpt-5.6-luna-pro",
|
|
37222
|
+
name: "GPT-5.6 Luna Pro",
|
|
37223
|
+
version: "5.6",
|
|
37224
|
+
inputPrice: 0.1,
|
|
37225
|
+
outputPrice: 0.6,
|
|
37226
|
+
contextWindow: 105e4,
|
|
37227
|
+
maxOutput: 128e3,
|
|
37228
|
+
reasoning: true,
|
|
37139
37229
|
vision: true,
|
|
37140
37230
|
agentic: true,
|
|
37141
37231
|
toolCalling: true
|
|
@@ -37539,19 +37629,45 @@ var init_models = __esm({
|
|
|
37539
37629
|
toolCalling: true
|
|
37540
37630
|
},
|
|
37541
37631
|
{
|
|
37542
|
-
//
|
|
37543
|
-
// 2026-
|
|
37632
|
+
// Newest-generation Flash with built-in thinking mode (blockrun #329,
|
|
37633
|
+
// 2026-08-03). 17% cheaper output than 3.5 Flash.
|
|
37634
|
+
id: "google/gemini-3.6-flash",
|
|
37635
|
+
name: "Gemini 3.6 Flash",
|
|
37636
|
+
version: "3.6",
|
|
37637
|
+
inputPrice: 1.5,
|
|
37638
|
+
outputPrice: 7.5,
|
|
37639
|
+
contextWindow: 1048576,
|
|
37640
|
+
maxOutput: 65536,
|
|
37641
|
+
reasoning: true,
|
|
37642
|
+
vision: true,
|
|
37643
|
+
toolCalling: true
|
|
37644
|
+
},
|
|
37645
|
+
{
|
|
37646
|
+
// Repriced 0.5/3.0 → 1.5/9.0 (blockrun #304: it was billed at 1/3 of
|
|
37647
|
+
// Google's real rate).
|
|
37544
37648
|
id: "google/gemini-3.5-flash",
|
|
37545
37649
|
name: "Gemini 3.5 Flash",
|
|
37546
37650
|
version: "3.5",
|
|
37547
|
-
inputPrice:
|
|
37548
|
-
outputPrice:
|
|
37651
|
+
inputPrice: 1.5,
|
|
37652
|
+
outputPrice: 9,
|
|
37549
37653
|
contextWindow: 1048576,
|
|
37550
37654
|
maxOutput: 65536,
|
|
37551
37655
|
reasoning: true,
|
|
37552
37656
|
vision: true,
|
|
37553
37657
|
toolCalling: true
|
|
37554
37658
|
},
|
|
37659
|
+
{
|
|
37660
|
+
// Ultra-fast lightweight tier with thinking mode (blockrun #329).
|
|
37661
|
+
id: "google/gemini-3.5-flash-lite",
|
|
37662
|
+
name: "Gemini 3.5 Flash Lite",
|
|
37663
|
+
version: "3.5",
|
|
37664
|
+
inputPrice: 0.3,
|
|
37665
|
+
outputPrice: 2.5,
|
|
37666
|
+
contextWindow: 1048576,
|
|
37667
|
+
maxOutput: 65536,
|
|
37668
|
+
reasoning: true,
|
|
37669
|
+
toolCalling: true
|
|
37670
|
+
},
|
|
37555
37671
|
{
|
|
37556
37672
|
id: "google/gemini-3-flash-preview",
|
|
37557
37673
|
name: "Gemini 3 Flash Preview",
|
|
@@ -37608,12 +37724,14 @@ var init_models = __esm({
|
|
|
37608
37724
|
},
|
|
37609
37725
|
// DeepSeek — V4 family (2026-04-24). The legacy deepseek-chat/reasoner
|
|
37610
37726
|
// aliases are served upstream as V4 Flash non-thinking / thinking modes.
|
|
37727
|
+
// Repriced 0.20/0.40 → 0.14/0.28 (blockrun #354: DeepSeek's published
|
|
37728
|
+
// deepseek-v4-flash rate; the old numbers were 1.43x the real rate).
|
|
37611
37729
|
{
|
|
37612
37730
|
id: "deepseek/deepseek-chat",
|
|
37613
37731
|
name: "DeepSeek V4 Flash Chat",
|
|
37614
37732
|
version: "4-flash",
|
|
37615
|
-
inputPrice: 0.
|
|
37616
|
-
outputPrice: 0.
|
|
37733
|
+
inputPrice: 0.14,
|
|
37734
|
+
outputPrice: 0.28,
|
|
37617
37735
|
contextWindow: 1e6,
|
|
37618
37736
|
maxOutput: 8192,
|
|
37619
37737
|
toolCalling: true
|
|
@@ -37622,8 +37740,8 @@ var init_models = __esm({
|
|
|
37622
37740
|
id: "deepseek/deepseek-reasoner",
|
|
37623
37741
|
name: "DeepSeek V4 Flash Reasoner",
|
|
37624
37742
|
version: "4-flash",
|
|
37625
|
-
inputPrice: 0.
|
|
37626
|
-
outputPrice: 0.
|
|
37743
|
+
inputPrice: 0.14,
|
|
37744
|
+
outputPrice: 0.28,
|
|
37627
37745
|
contextWindow: 1e6,
|
|
37628
37746
|
maxOutput: 8192,
|
|
37629
37747
|
reasoning: true,
|
|
@@ -37702,6 +37820,32 @@ var init_models = __esm({
|
|
|
37702
37820
|
agentic: true,
|
|
37703
37821
|
toolCalling: true
|
|
37704
37822
|
},
|
|
37823
|
+
// Qwen3.7 Plus/Flash (blockrun #329, 2026-08-03): the balanced and
|
|
37824
|
+
// latency tiers under Max. Plus genuinely caps output at 131072 while
|
|
37825
|
+
// Flash and Max cap at 65536 (endpoint-probed upstream).
|
|
37826
|
+
{
|
|
37827
|
+
id: "qwen/qwen3.7-plus",
|
|
37828
|
+
name: "Qwen3.7 Plus",
|
|
37829
|
+
version: "3.7-plus",
|
|
37830
|
+
inputPrice: 0.32,
|
|
37831
|
+
outputPrice: 1.28,
|
|
37832
|
+
contextWindow: 1e6,
|
|
37833
|
+
maxOutput: 131072,
|
|
37834
|
+
reasoning: true,
|
|
37835
|
+
agentic: true,
|
|
37836
|
+
toolCalling: true
|
|
37837
|
+
},
|
|
37838
|
+
{
|
|
37839
|
+
id: "qwen/qwen3.7-flash",
|
|
37840
|
+
name: "Qwen3.7 Flash",
|
|
37841
|
+
version: "3.7-flash",
|
|
37842
|
+
inputPrice: 0.03,
|
|
37843
|
+
outputPrice: 0.13,
|
|
37844
|
+
contextWindow: 1e6,
|
|
37845
|
+
maxOutput: 65536,
|
|
37846
|
+
reasoning: true,
|
|
37847
|
+
toolCalling: true
|
|
37848
|
+
},
|
|
37705
37849
|
// Kimi K2.6 — superseded by K2.7 (2026-06-13), hidden on BlockRun but still routable.
|
|
37706
37850
|
{
|
|
37707
37851
|
id: "moonshot/kimi-k2.6",
|
|
@@ -37913,6 +38057,34 @@ var init_models = __esm({
|
|
|
37913
38057
|
agentic: true,
|
|
37914
38058
|
toolCalling: true
|
|
37915
38059
|
},
|
|
38060
|
+
// Tencent + Xiaomi (blockrun 2026-07-25): the two largest real demand gaps
|
|
38061
|
+
// in the catalog — Hy3 held the #1 usage slot on the biggest public
|
|
38062
|
+
// aggregator for 19 days; MiMo ran ~22% weekly share in April. Both are
|
|
38063
|
+
// reasoning models resold via blockrun's OpenRouter pool. toolCalling
|
|
38064
|
+
// LIVE-VERIFIED 2026-08-12: both returned a structured tool_calls array
|
|
38065
|
+
// (name + valid JSON args, finish_reason "tool_calls") through the gateway.
|
|
38066
|
+
{
|
|
38067
|
+
id: "tencent/hy3",
|
|
38068
|
+
name: "Tencent Hy3",
|
|
38069
|
+
version: "hy3",
|
|
38070
|
+
inputPrice: 0.132,
|
|
38071
|
+
outputPrice: 0.528,
|
|
38072
|
+
contextWindow: 262144,
|
|
38073
|
+
maxOutput: 128e3,
|
|
38074
|
+
reasoning: true,
|
|
38075
|
+
toolCalling: true
|
|
38076
|
+
},
|
|
38077
|
+
{
|
|
38078
|
+
id: "xiaomi/mimo-v2.5-pro",
|
|
38079
|
+
name: "Xiaomi MiMo-V2.5 Pro",
|
|
38080
|
+
version: "v2.5-pro",
|
|
38081
|
+
inputPrice: 0.435,
|
|
38082
|
+
outputPrice: 0.87,
|
|
38083
|
+
contextWindow: 1048576,
|
|
38084
|
+
maxOutput: 131072,
|
|
38085
|
+
reasoning: true,
|
|
38086
|
+
toolCalling: true
|
|
38087
|
+
},
|
|
37916
38088
|
// MiniMax
|
|
37917
38089
|
{
|
|
37918
38090
|
id: "minimax/minimax-m3",
|
|
@@ -37986,11 +38158,13 @@ var init_models = __esm({
|
|
|
37986
38158
|
maxOutput: 16384
|
|
37987
38159
|
},
|
|
37988
38160
|
{
|
|
37989
|
-
// V4 Flash: 284B / 13B active MoE, 1M context.
|
|
37990
|
-
//
|
|
37991
|
-
//
|
|
37992
|
-
//
|
|
37993
|
-
//
|
|
38161
|
+
// V4 Flash: 284B / 13B active MoE, 1M context. EOL'd 2026-08-12 — NVIDIA
|
|
38162
|
+
// published 410 Gone ("has reached its end of life") on both probe passes
|
|
38163
|
+
// and blockrun's prod gate fired [ALERT][free-model-dead] kind=gone twice
|
|
38164
|
+
// that morning. The whole nvidia/deepseek-* family is dead upstream; there
|
|
38165
|
+
// is no free DeepSeek left anywhere. Blockrun hid it and redirects calls to
|
|
38166
|
+
// gpt-oss-120b. Entry kept so explicit pins stay routable; off the picker,
|
|
38167
|
+
// the FREE_MODELS cascade, and the router fallback chains.
|
|
37994
38168
|
id: "free/deepseek-v4-flash",
|
|
37995
38169
|
name: "[Free] DeepSeek V4 Flash",
|
|
37996
38170
|
version: "v4-flash",
|
|
@@ -38074,7 +38248,8 @@ var init_models = __esm({
|
|
|
38074
38248
|
// 2026-06-16: BlockRun's 2026-06-14 free-tier refresh (self-healing health gate
|
|
38075
38249
|
// + probe-verified lineup, blockrun commit 5817ecd) added these live NVIDIA free
|
|
38076
38250
|
// models. Status per blockrun's 2026-07-17 live re-probe: qwen3-coder-480b and
|
|
38077
|
-
// glm-4.7 stay dead (server-redirected); deepseek-v4-flash recovered
|
|
38251
|
+
// glm-4.7 stay dead (server-redirected); deepseek-v4-flash recovered then
|
|
38252
|
+
// EOL'd for good 2026-08-12 (see above).
|
|
38078
38253
|
{
|
|
38079
38254
|
// Qwen3-Next 80B (A3B active MoE): 262K context. DIED in the 2026-07-17
|
|
38080
38255
|
// re-probe (">60s / DEGRADED") — hidden upstream, gateway redirects pinned
|
|
@@ -38179,11 +38354,12 @@ var init_models = __esm({
|
|
|
38179
38354
|
},
|
|
38180
38355
|
{
|
|
38181
38356
|
// Flat-rate launch promo ended 2026-06-06 — backend bills per-token now.
|
|
38357
|
+
// Repriced 0.60/1.92 → 1.00/3.20 (blockrun #354 correction).
|
|
38182
38358
|
id: "zai/glm-5",
|
|
38183
38359
|
name: "GLM-5",
|
|
38184
38360
|
version: "5",
|
|
38185
|
-
inputPrice:
|
|
38186
|
-
outputPrice:
|
|
38361
|
+
inputPrice: 1,
|
|
38362
|
+
outputPrice: 3.2,
|
|
38187
38363
|
contextWindow: 2e5,
|
|
38188
38364
|
maxOutput: 128e3,
|
|
38189
38365
|
reasoning: true,
|
|
@@ -92580,8 +92756,6 @@ var init_proxy = __esm({
|
|
|
92580
92756
|
FREE_MODELS = /* @__PURE__ */ new Set([
|
|
92581
92757
|
"free/gpt-oss-120b",
|
|
92582
92758
|
"free/gpt-oss-20b",
|
|
92583
|
-
"free/deepseek-v4-flash",
|
|
92584
|
-
// 1M ctx; slow (~10 tok/s, 07-28 probe) but completes
|
|
92585
92759
|
"free/mistral-nemotron",
|
|
92586
92760
|
// strong instruction following
|
|
92587
92761
|
"free/step-3.7-flash",
|
|
@@ -92678,6 +92852,8 @@ var init_proxy = __esm({
|
|
|
92678
92852
|
sizes: { "1024x1024": 0.045, "2048x1024": 0.045, "2048x2048": 0.09 }
|
|
92679
92853
|
},
|
|
92680
92854
|
"google/nano-banana": { default: 0.05 },
|
|
92855
|
+
// Nano Banana 2 (Gemini 3.1 Flash imagegen, blockrun #329): $0.09/image at 1K.
|
|
92856
|
+
"google/nano-banana-2": { default: 0.09, sizes: { "1024x1024": 0.09 } },
|
|
92681
92857
|
"google/nano-banana-pro": {
|
|
92682
92858
|
default: 0.1,
|
|
92683
92859
|
sizes: { "1024x1024": 0.1, "2048x2048": 0.1, "4096x4096": 0.15 }
|
|
@@ -92698,13 +92874,32 @@ var init_proxy = __esm({
|
|
|
92698
92874
|
};
|
|
92699
92875
|
VIDEO_PRICING = {
|
|
92700
92876
|
"xai/grok-imagine-video": { pricePerSecond: 0.05, defaultDurationSeconds: 8 },
|
|
92701
|
-
|
|
92877
|
+
// Seedance rates re-synced 2026-08-08 from blockrun's models.ts after the
|
|
92878
|
+
// family reprice (blockrun #351/#354). All three were carrying pre-reprice
|
|
92879
|
+
// numbers, which only ever skewed the usage log — the charge comes from the
|
|
92880
|
+
// x402 header, and estimateVideoCost is the fallback for when it is absent.
|
|
92881
|
+
"bytedance/seedance-1.5-pro": { pricePerSecond: 0.07, defaultDurationSeconds: 5 },
|
|
92702
92882
|
"bytedance/seedance-2.0-fast": {
|
|
92703
|
-
pricePerSecond: 0.
|
|
92883
|
+
pricePerSecond: 0.165,
|
|
92704
92884
|
defaultDurationSeconds: 5
|
|
92705
92885
|
},
|
|
92706
92886
|
"bytedance/seedance-2.0": {
|
|
92707
|
-
pricePerSecond: 0.
|
|
92887
|
+
pricePerSecond: 0.227,
|
|
92888
|
+
defaultDurationSeconds: 5
|
|
92889
|
+
},
|
|
92890
|
+
// Seedance 2.0 Mini (blockrun #366/#368, 2026-08-12): 720p + synced audio at
|
|
92891
|
+
// half the flagship rate, 480p/720p only, 4–15s. blockrun signs the 3dp-floored
|
|
92892
|
+
// per-second value (0.079, not the raw 0.0797) — mirror the signed number.
|
|
92893
|
+
"bytedance/seedance-2.0-mini": {
|
|
92894
|
+
pricePerSecond: 0.079,
|
|
92895
|
+
defaultDurationSeconds: 5
|
|
92896
|
+
},
|
|
92897
|
+
// Seedance 2.5: 720p with synced audio, up to 30s. Not a replacement for 2.0
|
|
92898
|
+
// Pro — that is still the one for 1080p/4K. No OpenRouter failover exists for
|
|
92899
|
+
// 2.5, so a token360 outage surfaces as an error instead of quietly rendering
|
|
92900
|
+
// on another model.
|
|
92901
|
+
"bytedance/seedance-2.5": {
|
|
92902
|
+
pricePerSecond: 0.315,
|
|
92708
92903
|
defaultDurationSeconds: 5
|
|
92709
92904
|
},
|
|
92710
92905
|
// Sora 2 via Azure AI Foundry — flat $0.10/s for both t2v and i2v.
|
|
@@ -226046,7 +226241,9 @@ function buildVideoGenerationProvider() {
|
|
|
226046
226241
|
"xai/grok-imagine-video",
|
|
226047
226242
|
"bytedance/seedance-1.5-pro",
|
|
226048
226243
|
"bytedance/seedance-2.0-fast",
|
|
226049
|
-
"bytedance/seedance-2.0"
|
|
226244
|
+
"bytedance/seedance-2.0",
|
|
226245
|
+
"bytedance/seedance-2.0-mini",
|
|
226246
|
+
"bytedance/seedance-2.5"
|
|
226050
226247
|
],
|
|
226051
226248
|
capabilities: {
|
|
226052
226249
|
maxVideos: 1,
|
|
@@ -226547,7 +226744,7 @@ var init_index = __esm({
|
|
|
226547
226744
|
const parsed = parseGenArgs(ctx.args ?? "");
|
|
226548
226745
|
if (!parsed.prompt) {
|
|
226549
226746
|
return {
|
|
226550
|
-
text: "Usage: `/cr-imagegen <prompt> [--model=<alias>] [--size=1024x1024] [--n=1]`\n\nAliases: `nano-banana` (default), `banana-pro`, `dalle`, `gpt-image`, `flux`, `grok-imagine`, `grok-imagine-pro`, `cogview`."
|
|
226747
|
+
text: "Usage: `/cr-imagegen <prompt> [--model=<alias>] [--size=1024x1024] [--n=1]`\n\nAliases: `nano-banana` (default), `banana-2` (Gemini 3.1 Flash quality), `banana-pro`, `dalle`, `gpt-image`, `flux`, `grok-imagine`, `grok-imagine-pro`, `cogview`."
|
|
226551
226748
|
};
|
|
226552
226749
|
}
|
|
226553
226750
|
const model = resolveModelAlias(parsed.model ?? "nano-banana");
|
|
@@ -226599,7 +226796,7 @@ ${errText}`
|
|
|
226599
226796
|
const parsed = parseGenArgs(ctx.args ?? "");
|
|
226600
226797
|
if (!parsed.prompt) {
|
|
226601
226798
|
return {
|
|
226602
|
-
text: "Usage: `/videogen <prompt> [--model=<alias>] [--duration=5|8|10]`\n\nAliases: `seedance` (1.5-pro, default \u2014 cheapest), `seedance-2-fast`, `seedance-2`, `grok-video`.\n\n\u23F1\uFE0F Generation takes 60\u2013180 seconds. Payment settles only on success."
|
|
226799
|
+
text: "Usage: `/videogen <prompt> [--model=<alias>] [--duration=5|8|10]`\n\nAliases: `seedance` (1.5-pro, default \u2014 cheapest), `seedance-2-fast`, `seedance-2`, `seedance-2-mini` (720p + audio, half the flagship rate), `seedance-2.5` (720p + synced audio, long-form), `grok-video`.\n\n\u23F1\uFE0F Generation takes 60\u2013180 seconds. Payment settles only on success."
|
|
226603
226800
|
};
|
|
226604
226801
|
}
|
|
226605
226802
|
const model = resolveModelAlias(parsed.model ?? "seedance");
|