@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/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"
@@ -33476,11 +33485,12 @@ var BLOCKRUN_MODELS = [
33476
33485
  agentic: true,
33477
33486
  toolCalling: true
33478
33487
  },
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.
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: "nvidia/gpt-oss-120b",
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: "nvidia/gpt-oss-20b",
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: "nvidia/nemotron-ultra-253b",
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: "nvidia/nemotron-3-super-120b",
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: "nvidia/nemotron-super-49b",
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: "nvidia/deepseek-v3.2",
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: "nvidia/mistral-large-3-675b",
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: "nvidia/qwen3-coder-480b",
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: "nvidia/devstral-2-123b",
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: "nvidia/glm-4.7",
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: "nvidia/llama-4-maverick",
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
- "nvidia/gpt-oss-120b"
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: "nvidia/gpt-oss-120b",
44916
+ primary: "free/gpt-oss-120b",
44907
44917
  // FREE! $0.00/$0.00
44908
44918
  fallback: [
44909
- "nvidia/gpt-oss-20b",
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 = "nvidia/gpt-oss-120b";
47297
+ var FREE_MODEL = "free/gpt-oss-120b";
47288
47298
  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"
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 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"
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 = {};