@blockrun/clawrouter 0.12.79 → 0.12.81
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/dist/cli.js +82 -54
- package/dist/cli.js.map +1 -1
- package/dist/index.js +95 -66
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/reinstall.sh +5 -5
- package/scripts/update.sh +5 -5
package/dist/index.js
CHANGED
|
@@ -32906,27 +32906,38 @@ var MODEL_ALIASES = {
|
|
|
32906
32906
|
// delisted 2026-03-12
|
|
32907
32907
|
"xai/grok-3-fast": "xai/grok-4-fast-reasoning",
|
|
32908
32908
|
// delisted (too expensive)
|
|
32909
|
-
// NVIDIA —
|
|
32910
|
-
nvidia: "
|
|
32911
|
-
"gpt-120b": "
|
|
32912
|
-
"gpt-20b": "
|
|
32913
|
-
|
|
32914
|
-
"
|
|
32915
|
-
"
|
|
32916
|
-
"
|
|
32917
|
-
"
|
|
32918
|
-
|
|
32919
|
-
|
|
32920
|
-
"
|
|
32921
|
-
"
|
|
32922
|
-
"
|
|
32923
|
-
"
|
|
32924
|
-
|
|
32925
|
-
|
|
32926
|
-
"
|
|
32927
|
-
"
|
|
32928
|
-
"
|
|
32929
|
-
|
|
32909
|
+
// NVIDIA — backward compat aliases (nvidia/xxx → free/xxx)
|
|
32910
|
+
nvidia: "free/gpt-oss-120b",
|
|
32911
|
+
"gpt-120b": "free/gpt-oss-120b",
|
|
32912
|
+
"gpt-20b": "free/gpt-oss-20b",
|
|
32913
|
+
"nvidia/gpt-oss-120b": "free/gpt-oss-120b",
|
|
32914
|
+
"nvidia/gpt-oss-20b": "free/gpt-oss-20b",
|
|
32915
|
+
"nvidia/nemotron-ultra-253b": "free/nemotron-ultra-253b",
|
|
32916
|
+
"nvidia/nemotron-3-super-120b": "free/nemotron-3-super-120b",
|
|
32917
|
+
"nvidia/nemotron-super-49b": "free/nemotron-super-49b",
|
|
32918
|
+
"nvidia/deepseek-v3.2": "free/deepseek-v3.2",
|
|
32919
|
+
"nvidia/mistral-large-3-675b": "free/mistral-large-3-675b",
|
|
32920
|
+
"nvidia/qwen3-coder-480b": "free/qwen3-coder-480b",
|
|
32921
|
+
"nvidia/devstral-2-123b": "free/devstral-2-123b",
|
|
32922
|
+
"nvidia/glm-4.7": "free/glm-4.7",
|
|
32923
|
+
"nvidia/llama-4-maverick": "free/llama-4-maverick",
|
|
32924
|
+
// Free model shorthand aliases
|
|
32925
|
+
"deepseek-free": "free/deepseek-v3.2",
|
|
32926
|
+
"mistral-free": "free/mistral-large-3-675b",
|
|
32927
|
+
"glm-free": "free/glm-4.7",
|
|
32928
|
+
"llama-free": "free/llama-4-maverick",
|
|
32929
|
+
nemotron: "free/nemotron-ultra-253b",
|
|
32930
|
+
"nemotron-ultra": "free/nemotron-ultra-253b",
|
|
32931
|
+
"nemotron-253b": "free/nemotron-ultra-253b",
|
|
32932
|
+
"nemotron-super": "free/nemotron-super-49b",
|
|
32933
|
+
"nemotron-49b": "free/nemotron-super-49b",
|
|
32934
|
+
"nemotron-120b": "free/nemotron-3-super-120b",
|
|
32935
|
+
devstral: "free/devstral-2-123b",
|
|
32936
|
+
"devstral-2": "free/devstral-2-123b",
|
|
32937
|
+
"qwen-coder": "free/qwen3-coder-480b",
|
|
32938
|
+
"qwen-coder-free": "free/qwen3-coder-480b",
|
|
32939
|
+
maverick: "free/llama-4-maverick",
|
|
32940
|
+
free: "free/nemotron-ultra-253b",
|
|
32930
32941
|
// MiniMax
|
|
32931
32942
|
minimax: "minimax/minimax-m2.7",
|
|
32932
32943
|
"minimax-m2.7": "minimax/minimax-m2.7",
|
|
@@ -32935,8 +32946,6 @@ var MODEL_ALIASES = {
|
|
|
32935
32946
|
glm: "zai/glm-5",
|
|
32936
32947
|
"glm-5": "zai/glm-5",
|
|
32937
32948
|
"glm-5-turbo": "zai/glm-5-turbo",
|
|
32938
|
-
// Free alias — points to strongest free model
|
|
32939
|
-
free: "nvidia/nemotron-ultra-253b",
|
|
32940
32949
|
// Routing profile aliases (common variations)
|
|
32941
32950
|
"auto-router": "auto",
|
|
32942
32951
|
router: "auto"
|
|
@@ -32973,6 +32982,15 @@ var BLOCKRUN_MODELS = [
|
|
|
32973
32982
|
contextWindow: 105e4,
|
|
32974
32983
|
maxOutput: 128e3
|
|
32975
32984
|
},
|
|
32985
|
+
{
|
|
32986
|
+
id: "free",
|
|
32987
|
+
name: "Free \u2192 Nemotron Ultra 253B",
|
|
32988
|
+
inputPrice: 0,
|
|
32989
|
+
outputPrice: 0,
|
|
32990
|
+
contextWindow: 131072,
|
|
32991
|
+
maxOutput: 16384,
|
|
32992
|
+
reasoning: true
|
|
32993
|
+
},
|
|
32976
32994
|
{
|
|
32977
32995
|
id: "eco",
|
|
32978
32996
|
name: "Eco (Smart Router - Cost Optimized)",
|
|
@@ -33476,11 +33494,12 @@ var BLOCKRUN_MODELS = [
|
|
|
33476
33494
|
agentic: true,
|
|
33477
33495
|
toolCalling: true
|
|
33478
33496
|
},
|
|
33479
|
-
//
|
|
33480
|
-
//
|
|
33481
|
-
//
|
|
33497
|
+
// Free models (hosted by NVIDIA, billingMode: "free" on server)
|
|
33498
|
+
// IDs use "free/" prefix so users see them as free in the /model picker.
|
|
33499
|
+
// ClawRouter maps free/xxx → nvidia/xxx before sending to BlockRun upstream.
|
|
33500
|
+
// toolCalling intentionally omitted: structured function calling unverified.
|
|
33482
33501
|
{
|
|
33483
|
-
id: "
|
|
33502
|
+
id: "free/gpt-oss-120b",
|
|
33484
33503
|
name: "[Free] GPT-OSS 120B",
|
|
33485
33504
|
version: "120b",
|
|
33486
33505
|
inputPrice: 0,
|
|
@@ -33489,7 +33508,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33489
33508
|
maxOutput: 16384
|
|
33490
33509
|
},
|
|
33491
33510
|
{
|
|
33492
|
-
id: "
|
|
33511
|
+
id: "free/gpt-oss-20b",
|
|
33493
33512
|
name: "[Free] GPT-OSS 20B",
|
|
33494
33513
|
version: "20b",
|
|
33495
33514
|
inputPrice: 0,
|
|
@@ -33498,7 +33517,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33498
33517
|
maxOutput: 16384
|
|
33499
33518
|
},
|
|
33500
33519
|
{
|
|
33501
|
-
id: "
|
|
33520
|
+
id: "free/nemotron-ultra-253b",
|
|
33502
33521
|
name: "[Free] Nemotron Ultra 253B",
|
|
33503
33522
|
version: "253b",
|
|
33504
33523
|
inputPrice: 0,
|
|
@@ -33508,7 +33527,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33508
33527
|
reasoning: true
|
|
33509
33528
|
},
|
|
33510
33529
|
{
|
|
33511
|
-
id: "
|
|
33530
|
+
id: "free/nemotron-3-super-120b",
|
|
33512
33531
|
name: "[Free] Nemotron 3 Super 120B",
|
|
33513
33532
|
version: "3-super-120b",
|
|
33514
33533
|
inputPrice: 0,
|
|
@@ -33518,7 +33537,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33518
33537
|
reasoning: true
|
|
33519
33538
|
},
|
|
33520
33539
|
{
|
|
33521
|
-
id: "
|
|
33540
|
+
id: "free/nemotron-super-49b",
|
|
33522
33541
|
name: "[Free] Nemotron Super 49B",
|
|
33523
33542
|
version: "super-49b",
|
|
33524
33543
|
inputPrice: 0,
|
|
@@ -33528,7 +33547,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33528
33547
|
reasoning: true
|
|
33529
33548
|
},
|
|
33530
33549
|
{
|
|
33531
|
-
id: "
|
|
33550
|
+
id: "free/deepseek-v3.2",
|
|
33532
33551
|
name: "[Free] DeepSeek V3.2",
|
|
33533
33552
|
version: "v3.2",
|
|
33534
33553
|
inputPrice: 0,
|
|
@@ -33538,7 +33557,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33538
33557
|
reasoning: true
|
|
33539
33558
|
},
|
|
33540
33559
|
{
|
|
33541
|
-
id: "
|
|
33560
|
+
id: "free/mistral-large-3-675b",
|
|
33542
33561
|
name: "[Free] Mistral Large 675B",
|
|
33543
33562
|
version: "3-675b",
|
|
33544
33563
|
inputPrice: 0,
|
|
@@ -33548,7 +33567,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33548
33567
|
reasoning: true
|
|
33549
33568
|
},
|
|
33550
33569
|
{
|
|
33551
|
-
id: "
|
|
33570
|
+
id: "free/qwen3-coder-480b",
|
|
33552
33571
|
name: "[Free] Qwen3 Coder 480B",
|
|
33553
33572
|
version: "480b",
|
|
33554
33573
|
inputPrice: 0,
|
|
@@ -33557,7 +33576,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33557
33576
|
maxOutput: 16384
|
|
33558
33577
|
},
|
|
33559
33578
|
{
|
|
33560
|
-
id: "
|
|
33579
|
+
id: "free/devstral-2-123b",
|
|
33561
33580
|
name: "[Free] Devstral 2 123B",
|
|
33562
33581
|
version: "2-123b",
|
|
33563
33582
|
inputPrice: 0,
|
|
@@ -33566,7 +33585,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33566
33585
|
maxOutput: 16384
|
|
33567
33586
|
},
|
|
33568
33587
|
{
|
|
33569
|
-
id: "
|
|
33588
|
+
id: "free/glm-4.7",
|
|
33570
33589
|
name: "[Free] GLM-4.7",
|
|
33571
33590
|
version: "4.7",
|
|
33572
33591
|
inputPrice: 0,
|
|
@@ -33576,7 +33595,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33576
33595
|
reasoning: true
|
|
33577
33596
|
},
|
|
33578
33597
|
{
|
|
33579
|
-
id: "
|
|
33598
|
+
id: "free/llama-4-maverick",
|
|
33580
33599
|
name: "[Free] Llama 4 Maverick",
|
|
33581
33600
|
version: "4-maverick",
|
|
33582
33601
|
inputPrice: 0,
|
|
@@ -44839,7 +44858,7 @@ var DEFAULT_ROUTING_CONFIG = {
|
|
|
44839
44858
|
// $0.20/$1.25, 1M context
|
|
44840
44859
|
"xai/grok-4-fast-non-reasoning",
|
|
44841
44860
|
// 1,143ms, $0.20/$0.50 — fast fallback
|
|
44842
|
-
"
|
|
44861
|
+
"free/gpt-oss-120b"
|
|
44843
44862
|
// 1,252ms, FREE fallback
|
|
44844
44863
|
]
|
|
44845
44864
|
},
|
|
@@ -44903,10 +44922,10 @@ var DEFAULT_ROUTING_CONFIG = {
|
|
|
44903
44922
|
// Eco tier configs - absolute cheapest (blockrun/eco)
|
|
44904
44923
|
ecoTiers: {
|
|
44905
44924
|
SIMPLE: {
|
|
44906
|
-
primary: "
|
|
44925
|
+
primary: "free/gpt-oss-120b",
|
|
44907
44926
|
// FREE! $0.00/$0.00
|
|
44908
44927
|
fallback: [
|
|
44909
|
-
"
|
|
44928
|
+
"free/gpt-oss-20b",
|
|
44910
44929
|
// FREE — smaller, faster
|
|
44911
44930
|
"google/gemini-3.1-flash-lite",
|
|
44912
44931
|
// $0.25/$1.50 — newest flash-lite
|
|
@@ -47284,20 +47303,26 @@ var ROUTING_PROFILES = /* @__PURE__ */ new Set([
|
|
|
47284
47303
|
"blockrun/premium",
|
|
47285
47304
|
"premium"
|
|
47286
47305
|
]);
|
|
47287
|
-
var FREE_MODEL = "
|
|
47306
|
+
var FREE_MODEL = "free/gpt-oss-120b";
|
|
47288
47307
|
var FREE_MODELS = /* @__PURE__ */ new Set([
|
|
47289
|
-
"
|
|
47290
|
-
"
|
|
47291
|
-
"
|
|
47292
|
-
"
|
|
47293
|
-
"
|
|
47294
|
-
"
|
|
47295
|
-
"
|
|
47296
|
-
"
|
|
47297
|
-
"
|
|
47298
|
-
"
|
|
47299
|
-
"
|
|
47308
|
+
"free/gpt-oss-120b",
|
|
47309
|
+
"free/gpt-oss-20b",
|
|
47310
|
+
"free/nemotron-ultra-253b",
|
|
47311
|
+
"free/nemotron-3-super-120b",
|
|
47312
|
+
"free/nemotron-super-49b",
|
|
47313
|
+
"free/deepseek-v3.2",
|
|
47314
|
+
"free/mistral-large-3-675b",
|
|
47315
|
+
"free/qwen3-coder-480b",
|
|
47316
|
+
"free/devstral-2-123b",
|
|
47317
|
+
"free/glm-4.7",
|
|
47318
|
+
"free/llama-4-maverick"
|
|
47300
47319
|
]);
|
|
47320
|
+
function toUpstreamModelId(modelId) {
|
|
47321
|
+
if (modelId.startsWith("free/")) {
|
|
47322
|
+
return "nvidia/" + modelId.slice("free/".length);
|
|
47323
|
+
}
|
|
47324
|
+
return modelId;
|
|
47325
|
+
}
|
|
47301
47326
|
var MAX_MESSAGES = 200;
|
|
47302
47327
|
var CONTEXT_LIMIT_KB = 5120;
|
|
47303
47328
|
var HEARTBEAT_INTERVAL_MS = 2e3;
|
|
@@ -48659,7 +48684,7 @@ async function tryModelRequest(upstreamUrl, method, headers, body, modelId, maxT
|
|
|
48659
48684
|
let requestBody = body;
|
|
48660
48685
|
try {
|
|
48661
48686
|
const parsed = JSON.parse(body.toString());
|
|
48662
|
-
parsed.model = modelId;
|
|
48687
|
+
parsed.model = toUpstreamModelId(modelId);
|
|
48663
48688
|
if (Array.isArray(parsed.messages)) {
|
|
48664
48689
|
parsed.messages = normalizeMessageRoles(parsed.messages);
|
|
48665
48690
|
}
|
|
@@ -49429,6 +49454,9 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
49429
49454
|
effectiveSessionId = deriveSessionId(parsedMessages);
|
|
49430
49455
|
}
|
|
49431
49456
|
if (bodyModified) {
|
|
49457
|
+
if (parsed.model && typeof parsed.model === "string") {
|
|
49458
|
+
parsed.model = toUpstreamModelId(parsed.model);
|
|
49459
|
+
}
|
|
49432
49460
|
body = Buffer.from(JSON.stringify(parsed));
|
|
49433
49461
|
}
|
|
49434
49462
|
} catch (err) {
|
|
@@ -49533,7 +49561,7 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
49533
49561
|
modelId = FREE_MODEL;
|
|
49534
49562
|
isFreeModel = true;
|
|
49535
49563
|
const parsed = JSON.parse(body.toString());
|
|
49536
|
-
parsed.model = FREE_MODEL;
|
|
49564
|
+
parsed.model = toUpstreamModelId(FREE_MODEL);
|
|
49537
49565
|
body = Buffer.from(JSON.stringify(parsed));
|
|
49538
49566
|
balanceFallbackNotice = sufficiency.info.isEmpty ? `> **\u26A0\uFE0F Wallet empty** \u2014 using free model. Fund your wallet to use ${originalModel}.
|
|
49539
49567
|
|
|
@@ -50987,6 +51015,7 @@ function injectModelsConfig(logger) {
|
|
|
50987
51015
|
}
|
|
50988
51016
|
const TOP_MODELS = [
|
|
50989
51017
|
"auto",
|
|
51018
|
+
"free",
|
|
50990
51019
|
"eco",
|
|
50991
51020
|
"premium",
|
|
50992
51021
|
"anthropic/claude-sonnet-4.6",
|
|
@@ -51003,18 +51032,18 @@ function injectModelsConfig(logger) {
|
|
|
51003
51032
|
"moonshot/kimi-k2.5",
|
|
51004
51033
|
"xai/grok-3",
|
|
51005
51034
|
"minimax/minimax-m2.5",
|
|
51006
|
-
// Free
|
|
51007
|
-
"
|
|
51008
|
-
"
|
|
51009
|
-
"
|
|
51010
|
-
"
|
|
51011
|
-
"
|
|
51012
|
-
"
|
|
51013
|
-
"
|
|
51014
|
-
"
|
|
51015
|
-
"
|
|
51016
|
-
"
|
|
51017
|
-
"
|
|
51035
|
+
// Free models (free/ prefix so users see "free" in picker)
|
|
51036
|
+
"free/gpt-oss-120b",
|
|
51037
|
+
"free/gpt-oss-20b",
|
|
51038
|
+
"free/nemotron-ultra-253b",
|
|
51039
|
+
"free/deepseek-v3.2",
|
|
51040
|
+
"free/mistral-large-3-675b",
|
|
51041
|
+
"free/qwen3-coder-480b",
|
|
51042
|
+
"free/devstral-2-123b",
|
|
51043
|
+
"free/llama-4-maverick",
|
|
51044
|
+
"free/nemotron-3-super-120b",
|
|
51045
|
+
"free/nemotron-super-49b",
|
|
51046
|
+
"free/glm-4.7"
|
|
51018
51047
|
];
|
|
51019
51048
|
if (!defaults.models || typeof defaults.models !== "object" || Array.isArray(defaults.models)) {
|
|
51020
51049
|
defaults.models = {};
|