@blockrun/clawrouter 0.12.79 → 0.12.80
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 +73 -54
- package/dist/cli.js.map +1 -1
- package/dist/index.js +85 -66
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/reinstall.sh +4 -4
- package/scripts/update.sh +4 -4
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"
|
|
@@ -33476,11 +33485,12 @@ var BLOCKRUN_MODELS = [
|
|
|
33476
33485
|
agentic: true,
|
|
33477
33486
|
toolCalling: true
|
|
33478
33487
|
},
|
|
33479
|
-
//
|
|
33480
|
-
//
|
|
33481
|
-
//
|
|
33488
|
+
// Free models (hosted by NVIDIA, billingMode: "free" on server)
|
|
33489
|
+
// IDs use "free/" prefix so users see them as free in the /model picker.
|
|
33490
|
+
// ClawRouter maps free/xxx → nvidia/xxx before sending to BlockRun upstream.
|
|
33491
|
+
// toolCalling intentionally omitted: structured function calling unverified.
|
|
33482
33492
|
{
|
|
33483
|
-
id: "
|
|
33493
|
+
id: "free/gpt-oss-120b",
|
|
33484
33494
|
name: "[Free] GPT-OSS 120B",
|
|
33485
33495
|
version: "120b",
|
|
33486
33496
|
inputPrice: 0,
|
|
@@ -33489,7 +33499,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33489
33499
|
maxOutput: 16384
|
|
33490
33500
|
},
|
|
33491
33501
|
{
|
|
33492
|
-
id: "
|
|
33502
|
+
id: "free/gpt-oss-20b",
|
|
33493
33503
|
name: "[Free] GPT-OSS 20B",
|
|
33494
33504
|
version: "20b",
|
|
33495
33505
|
inputPrice: 0,
|
|
@@ -33498,7 +33508,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33498
33508
|
maxOutput: 16384
|
|
33499
33509
|
},
|
|
33500
33510
|
{
|
|
33501
|
-
id: "
|
|
33511
|
+
id: "free/nemotron-ultra-253b",
|
|
33502
33512
|
name: "[Free] Nemotron Ultra 253B",
|
|
33503
33513
|
version: "253b",
|
|
33504
33514
|
inputPrice: 0,
|
|
@@ -33508,7 +33518,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33508
33518
|
reasoning: true
|
|
33509
33519
|
},
|
|
33510
33520
|
{
|
|
33511
|
-
id: "
|
|
33521
|
+
id: "free/nemotron-3-super-120b",
|
|
33512
33522
|
name: "[Free] Nemotron 3 Super 120B",
|
|
33513
33523
|
version: "3-super-120b",
|
|
33514
33524
|
inputPrice: 0,
|
|
@@ -33518,7 +33528,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33518
33528
|
reasoning: true
|
|
33519
33529
|
},
|
|
33520
33530
|
{
|
|
33521
|
-
id: "
|
|
33531
|
+
id: "free/nemotron-super-49b",
|
|
33522
33532
|
name: "[Free] Nemotron Super 49B",
|
|
33523
33533
|
version: "super-49b",
|
|
33524
33534
|
inputPrice: 0,
|
|
@@ -33528,7 +33538,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33528
33538
|
reasoning: true
|
|
33529
33539
|
},
|
|
33530
33540
|
{
|
|
33531
|
-
id: "
|
|
33541
|
+
id: "free/deepseek-v3.2",
|
|
33532
33542
|
name: "[Free] DeepSeek V3.2",
|
|
33533
33543
|
version: "v3.2",
|
|
33534
33544
|
inputPrice: 0,
|
|
@@ -33538,7 +33548,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33538
33548
|
reasoning: true
|
|
33539
33549
|
},
|
|
33540
33550
|
{
|
|
33541
|
-
id: "
|
|
33551
|
+
id: "free/mistral-large-3-675b",
|
|
33542
33552
|
name: "[Free] Mistral Large 675B",
|
|
33543
33553
|
version: "3-675b",
|
|
33544
33554
|
inputPrice: 0,
|
|
@@ -33548,7 +33558,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33548
33558
|
reasoning: true
|
|
33549
33559
|
},
|
|
33550
33560
|
{
|
|
33551
|
-
id: "
|
|
33561
|
+
id: "free/qwen3-coder-480b",
|
|
33552
33562
|
name: "[Free] Qwen3 Coder 480B",
|
|
33553
33563
|
version: "480b",
|
|
33554
33564
|
inputPrice: 0,
|
|
@@ -33557,7 +33567,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33557
33567
|
maxOutput: 16384
|
|
33558
33568
|
},
|
|
33559
33569
|
{
|
|
33560
|
-
id: "
|
|
33570
|
+
id: "free/devstral-2-123b",
|
|
33561
33571
|
name: "[Free] Devstral 2 123B",
|
|
33562
33572
|
version: "2-123b",
|
|
33563
33573
|
inputPrice: 0,
|
|
@@ -33566,7 +33576,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33566
33576
|
maxOutput: 16384
|
|
33567
33577
|
},
|
|
33568
33578
|
{
|
|
33569
|
-
id: "
|
|
33579
|
+
id: "free/glm-4.7",
|
|
33570
33580
|
name: "[Free] GLM-4.7",
|
|
33571
33581
|
version: "4.7",
|
|
33572
33582
|
inputPrice: 0,
|
|
@@ -33576,7 +33586,7 @@ var BLOCKRUN_MODELS = [
|
|
|
33576
33586
|
reasoning: true
|
|
33577
33587
|
},
|
|
33578
33588
|
{
|
|
33579
|
-
id: "
|
|
33589
|
+
id: "free/llama-4-maverick",
|
|
33580
33590
|
name: "[Free] Llama 4 Maverick",
|
|
33581
33591
|
version: "4-maverick",
|
|
33582
33592
|
inputPrice: 0,
|
|
@@ -44839,7 +44849,7 @@ var DEFAULT_ROUTING_CONFIG = {
|
|
|
44839
44849
|
// $0.20/$1.25, 1M context
|
|
44840
44850
|
"xai/grok-4-fast-non-reasoning",
|
|
44841
44851
|
// 1,143ms, $0.20/$0.50 — fast fallback
|
|
44842
|
-
"
|
|
44852
|
+
"free/gpt-oss-120b"
|
|
44843
44853
|
// 1,252ms, FREE fallback
|
|
44844
44854
|
]
|
|
44845
44855
|
},
|
|
@@ -44903,10 +44913,10 @@ var DEFAULT_ROUTING_CONFIG = {
|
|
|
44903
44913
|
// Eco tier configs - absolute cheapest (blockrun/eco)
|
|
44904
44914
|
ecoTiers: {
|
|
44905
44915
|
SIMPLE: {
|
|
44906
|
-
primary: "
|
|
44916
|
+
primary: "free/gpt-oss-120b",
|
|
44907
44917
|
// FREE! $0.00/$0.00
|
|
44908
44918
|
fallback: [
|
|
44909
|
-
"
|
|
44919
|
+
"free/gpt-oss-20b",
|
|
44910
44920
|
// FREE — smaller, faster
|
|
44911
44921
|
"google/gemini-3.1-flash-lite",
|
|
44912
44922
|
// $0.25/$1.50 — newest flash-lite
|
|
@@ -47284,20 +47294,26 @@ var ROUTING_PROFILES = /* @__PURE__ */ new Set([
|
|
|
47284
47294
|
"blockrun/premium",
|
|
47285
47295
|
"premium"
|
|
47286
47296
|
]);
|
|
47287
|
-
var FREE_MODEL = "
|
|
47297
|
+
var FREE_MODEL = "free/gpt-oss-120b";
|
|
47288
47298
|
var FREE_MODELS = /* @__PURE__ */ new Set([
|
|
47289
|
-
"
|
|
47290
|
-
"
|
|
47291
|
-
"
|
|
47292
|
-
"
|
|
47293
|
-
"
|
|
47294
|
-
"
|
|
47295
|
-
"
|
|
47296
|
-
"
|
|
47297
|
-
"
|
|
47298
|
-
"
|
|
47299
|
-
"
|
|
47299
|
+
"free/gpt-oss-120b",
|
|
47300
|
+
"free/gpt-oss-20b",
|
|
47301
|
+
"free/nemotron-ultra-253b",
|
|
47302
|
+
"free/nemotron-3-super-120b",
|
|
47303
|
+
"free/nemotron-super-49b",
|
|
47304
|
+
"free/deepseek-v3.2",
|
|
47305
|
+
"free/mistral-large-3-675b",
|
|
47306
|
+
"free/qwen3-coder-480b",
|
|
47307
|
+
"free/devstral-2-123b",
|
|
47308
|
+
"free/glm-4.7",
|
|
47309
|
+
"free/llama-4-maverick"
|
|
47300
47310
|
]);
|
|
47311
|
+
function toUpstreamModelId(modelId) {
|
|
47312
|
+
if (modelId.startsWith("free/")) {
|
|
47313
|
+
return "nvidia/" + modelId.slice("free/".length);
|
|
47314
|
+
}
|
|
47315
|
+
return modelId;
|
|
47316
|
+
}
|
|
47301
47317
|
var MAX_MESSAGES = 200;
|
|
47302
47318
|
var CONTEXT_LIMIT_KB = 5120;
|
|
47303
47319
|
var HEARTBEAT_INTERVAL_MS = 2e3;
|
|
@@ -48659,7 +48675,7 @@ async function tryModelRequest(upstreamUrl, method, headers, body, modelId, maxT
|
|
|
48659
48675
|
let requestBody = body;
|
|
48660
48676
|
try {
|
|
48661
48677
|
const parsed = JSON.parse(body.toString());
|
|
48662
|
-
parsed.model = modelId;
|
|
48678
|
+
parsed.model = toUpstreamModelId(modelId);
|
|
48663
48679
|
if (Array.isArray(parsed.messages)) {
|
|
48664
48680
|
parsed.messages = normalizeMessageRoles(parsed.messages);
|
|
48665
48681
|
}
|
|
@@ -49429,6 +49445,9 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
49429
49445
|
effectiveSessionId = deriveSessionId(parsedMessages);
|
|
49430
49446
|
}
|
|
49431
49447
|
if (bodyModified) {
|
|
49448
|
+
if (parsed.model && typeof parsed.model === "string") {
|
|
49449
|
+
parsed.model = toUpstreamModelId(parsed.model);
|
|
49450
|
+
}
|
|
49432
49451
|
body = Buffer.from(JSON.stringify(parsed));
|
|
49433
49452
|
}
|
|
49434
49453
|
} catch (err) {
|
|
@@ -49533,7 +49552,7 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
49533
49552
|
modelId = FREE_MODEL;
|
|
49534
49553
|
isFreeModel = true;
|
|
49535
49554
|
const parsed = JSON.parse(body.toString());
|
|
49536
|
-
parsed.model = FREE_MODEL;
|
|
49555
|
+
parsed.model = toUpstreamModelId(FREE_MODEL);
|
|
49537
49556
|
body = Buffer.from(JSON.stringify(parsed));
|
|
49538
49557
|
balanceFallbackNotice = sufficiency.info.isEmpty ? `> **\u26A0\uFE0F Wallet empty** \u2014 using free model. Fund your wallet to use ${originalModel}.
|
|
49539
49558
|
|
|
@@ -51003,18 +51022,18 @@ function injectModelsConfig(logger) {
|
|
|
51003
51022
|
"moonshot/kimi-k2.5",
|
|
51004
51023
|
"xai/grok-3",
|
|
51005
51024
|
"minimax/minimax-m2.5",
|
|
51006
|
-
// Free
|
|
51007
|
-
"
|
|
51008
|
-
"
|
|
51009
|
-
"
|
|
51010
|
-
"
|
|
51011
|
-
"
|
|
51012
|
-
"
|
|
51013
|
-
"
|
|
51014
|
-
"
|
|
51015
|
-
"
|
|
51016
|
-
"
|
|
51017
|
-
"
|
|
51025
|
+
// Free models (free/ prefix so users see "free" in picker)
|
|
51026
|
+
"free/gpt-oss-120b",
|
|
51027
|
+
"free/gpt-oss-20b",
|
|
51028
|
+
"free/nemotron-ultra-253b",
|
|
51029
|
+
"free/deepseek-v3.2",
|
|
51030
|
+
"free/mistral-large-3-675b",
|
|
51031
|
+
"free/qwen3-coder-480b",
|
|
51032
|
+
"free/devstral-2-123b",
|
|
51033
|
+
"free/llama-4-maverick",
|
|
51034
|
+
"free/nemotron-3-super-120b",
|
|
51035
|
+
"free/nemotron-super-49b",
|
|
51036
|
+
"free/glm-4.7"
|
|
51018
51037
|
];
|
|
51019
51038
|
if (!defaults.models || typeof defaults.models !== "object" || Array.isArray(defaults.models)) {
|
|
51020
51039
|
defaults.models = {};
|