@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/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 — existing alias kept for backward compat
32910
- nvidia: "nvidia/gpt-oss-120b",
32911
- "gpt-120b": "nvidia/gpt-oss-120b",
32912
- "gpt-20b": "nvidia/gpt-oss-20b",
32913
- // Free model aliases — "-free" suffix for models with paid twins
32914
- "deepseek-free": "nvidia/deepseek-v3.2",
32915
- "mistral-free": "nvidia/mistral-large-3-675b",
32916
- "glm-free": "nvidia/glm-4.7",
32917
- "llama-free": "nvidia/llama-4-maverick",
32918
- // Bare-name aliases for unique free models
32919
- nemotron: "nvidia/nemotron-ultra-253b",
32920
- "nemotron-ultra": "nvidia/nemotron-ultra-253b",
32921
- "nemotron-253b": "nvidia/nemotron-ultra-253b",
32922
- "nemotron-super": "nvidia/nemotron-super-49b",
32923
- "nemotron-49b": "nvidia/nemotron-super-49b",
32924
- "nemotron-120b": "nvidia/nemotron-3-super-120b",
32925
- devstral: "nvidia/devstral-2-123b",
32926
- "devstral-2": "nvidia/devstral-2-123b",
32927
- "qwen-coder": "nvidia/qwen3-coder-480b",
32928
- "qwen-coder-free": "nvidia/qwen3-coder-480b",
32929
- maverick: "nvidia/llama-4-maverick",
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
- // NVIDIA - Free models (hosted by NVIDIA, billingMode: "free" on server)
33480
- // toolCalling intentionally omitted on all free models: structured function
33481
- // calling support unverified. Excluded from tool-heavy routing paths.
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: "nvidia/gpt-oss-120b",
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: "nvidia/gpt-oss-20b",
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: "nvidia/nemotron-ultra-253b",
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: "nvidia/nemotron-3-super-120b",
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: "nvidia/nemotron-super-49b",
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: "nvidia/deepseek-v3.2",
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: "nvidia/mistral-large-3-675b",
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: "nvidia/qwen3-coder-480b",
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: "nvidia/devstral-2-123b",
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: "nvidia/glm-4.7",
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: "nvidia/llama-4-maverick",
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
- "nvidia/gpt-oss-120b"
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: "nvidia/gpt-oss-120b",
44925
+ primary: "free/gpt-oss-120b",
44907
44926
  // FREE! $0.00/$0.00
44908
44927
  fallback: [
44909
- "nvidia/gpt-oss-20b",
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 = "nvidia/gpt-oss-120b";
47306
+ var FREE_MODEL = "free/gpt-oss-120b";
47288
47307
  var FREE_MODELS = /* @__PURE__ */ new Set([
47289
- "nvidia/gpt-oss-120b",
47290
- "nvidia/gpt-oss-20b",
47291
- "nvidia/nemotron-ultra-253b",
47292
- "nvidia/nemotron-3-super-120b",
47293
- "nvidia/nemotron-super-49b",
47294
- "nvidia/deepseek-v3.2",
47295
- "nvidia/mistral-large-3-675b",
47296
- "nvidia/qwen3-coder-480b",
47297
- "nvidia/devstral-2-123b",
47298
- "nvidia/glm-4.7",
47299
- "nvidia/llama-4-maverick"
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 NVIDIA models
51007
- "nvidia/gpt-oss-120b",
51008
- "nvidia/gpt-oss-20b",
51009
- "nvidia/nemotron-ultra-253b",
51010
- "nvidia/deepseek-v3.2",
51011
- "nvidia/mistral-large-3-675b",
51012
- "nvidia/qwen3-coder-480b",
51013
- "nvidia/devstral-2-123b",
51014
- "nvidia/llama-4-maverick",
51015
- "nvidia/nemotron-3-super-120b",
51016
- "nvidia/nemotron-super-49b",
51017
- "nvidia/glm-4.7"
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 = {};