@blockrun/clawrouter 0.8.23 → 0.8.25

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.d.ts CHANGED
@@ -478,7 +478,8 @@ declare function getSessionId(headers: Record<string, string | string[] | undefi
478
478
  */
479
479
 
480
480
  /**
481
- * Get the proxy port from environment variable or default.
481
+ * Get the proxy port from pre-loaded configuration.
482
+ * Port is validated at module load time, this just returns the cached value.
482
483
  */
483
484
  declare function getProxyPort(): number;
484
485
  /** Callback info for low balance warning */
package/dist/index.js CHANGED
@@ -25,8 +25,7 @@ var MODEL_ALIASES = {
25
25
  "grok-code": "xai/grok-code-fast-1",
26
26
  // NVIDIA
27
27
  nvidia: "nvidia/gpt-oss-120b",
28
- "gpt-120b": "nvidia/gpt-oss-120b",
29
- "gpt-20b": "nvidia/gpt-oss-20b"
28
+ "gpt-120b": "nvidia/gpt-oss-120b"
30
29
  // Note: auto, free, eco, premium are virtual routing profiles registered in BLOCKRUN_MODELS
31
30
  // They don't need aliases since they're already top-level model IDs
32
31
  };
@@ -131,14 +130,7 @@ var BLOCKRUN_MODELS = [
131
130
  contextWindow: 128e3,
132
131
  maxOutput: 16384
133
132
  },
134
- {
135
- id: "openai/gpt-4.1-nano",
136
- name: "GPT-4.1 Nano",
137
- inputPrice: 0.1,
138
- outputPrice: 0.4,
139
- contextWindow: 128e3,
140
- maxOutput: 16384
141
- },
133
+ // gpt-4.1-nano removed - replaced by gpt-5-nano
142
134
  {
143
135
  id: "openai/gpt-4o",
144
136
  name: "GPT-4o",
@@ -157,25 +149,7 @@ var BLOCKRUN_MODELS = [
157
149
  contextWindow: 128e3,
158
150
  maxOutput: 16384
159
151
  },
160
- // OpenAI O-series (Reasoning)
161
- {
162
- id: "openai/o1",
163
- name: "o1",
164
- inputPrice: 15,
165
- outputPrice: 60,
166
- contextWindow: 2e5,
167
- maxOutput: 1e5,
168
- reasoning: true
169
- },
170
- {
171
- id: "openai/o1-mini",
172
- name: "o1-mini",
173
- inputPrice: 1.1,
174
- outputPrice: 4.4,
175
- contextWindow: 128e3,
176
- maxOutput: 65536,
177
- reasoning: true
178
- },
152
+ // OpenAI O-series (Reasoning) - o1/o1-mini removed, replaced by o3/o4
179
153
  {
180
154
  id: "openai/o3",
181
155
  name: "o3",
@@ -312,15 +286,7 @@ var BLOCKRUN_MODELS = [
312
286
  maxOutput: 16384,
313
287
  reasoning: true
314
288
  },
315
- {
316
- id: "xai/grok-3-fast",
317
- name: "Grok 3 Fast",
318
- inputPrice: 5,
319
- outputPrice: 25,
320
- contextWindow: 131072,
321
- maxOutput: 16384,
322
- reasoning: true
323
- },
289
+ // grok-3-fast removed - too expensive ($5/$25), use grok-4-fast instead
324
290
  {
325
291
  id: "xai/grok-3-mini",
326
292
  name: "Grok 3 Mini",
@@ -383,15 +349,7 @@ var BLOCKRUN_MODELS = [
383
349
  maxOutput: 16384,
384
350
  reasoning: true
385
351
  },
386
- {
387
- id: "xai/grok-2-vision",
388
- name: "Grok 2 Vision",
389
- inputPrice: 2,
390
- outputPrice: 10,
391
- contextWindow: 131072,
392
- maxOutput: 16384,
393
- vision: true
394
- },
352
+ // grok-2-vision removed - old, 0 transactions
395
353
  // NVIDIA - Free/cheap models
396
354
  {
397
355
  id: "nvidia/gpt-oss-120b",
@@ -401,19 +359,11 @@ var BLOCKRUN_MODELS = [
401
359
  contextWindow: 128e3,
402
360
  maxOutput: 16384
403
361
  },
404
- {
405
- id: "nvidia/gpt-oss-20b",
406
- name: "NVIDIA GPT-OSS 20B",
407
- inputPrice: 0,
408
- outputPrice: 0,
409
- contextWindow: 128e3,
410
- maxOutput: 16384
411
- },
412
362
  {
413
363
  id: "nvidia/kimi-k2.5",
414
364
  name: "NVIDIA Kimi K2.5",
415
- inputPrice: 1e-3,
416
- outputPrice: 1e-3,
365
+ inputPrice: 0.55,
366
+ outputPrice: 2.5,
417
367
  contextWindow: 262144,
418
368
  maxOutput: 16384
419
369
  }
@@ -1621,14 +1571,12 @@ var DEFAULT_ROUTING_CONFIG = {
1621
1571
  tiers: {
1622
1572
  SIMPLE: {
1623
1573
  primary: "nvidia/kimi-k2.5",
1624
- // Ultra-cheap $0.001/$0.001
1574
+ // $0.55/$2.5 - best quality/price for simple tasks
1625
1575
  fallback: [
1626
- "google/gemini-2.5-flash",
1627
1576
  "nvidia/gpt-oss-120b",
1628
- "nvidia/gpt-oss-20b",
1629
- "deepseek/deepseek-chat",
1630
- "xai/grok-code-fast-1"
1631
- // Added for better quality fallback
1577
+ // FREE fallback
1578
+ "google/gemini-2.5-flash",
1579
+ "deepseek/deepseek-chat"
1632
1580
  ]
1633
1581
  },
1634
1582
  MEDIUM: {
@@ -1642,9 +1590,15 @@ var DEFAULT_ROUTING_CONFIG = {
1642
1590
  ]
1643
1591
  },
1644
1592
  COMPLEX: {
1645
- primary: "google/gemini-2.5-pro",
1646
- fallback: ["xai/grok-4-0709", "openai/gpt-4o", "openai/gpt-5.2", "anthropic/claude-sonnet-4"]
1647
- // Grok first for cost efficiency, Sonnet as last resort
1593
+ primary: "google/gemini-3-pro-preview",
1594
+ // Latest Gemini - upgraded from 2.5
1595
+ fallback: [
1596
+ "google/gemini-2.5-pro",
1597
+ "xai/grok-4-0709",
1598
+ "openai/gpt-4o",
1599
+ "openai/gpt-5.2",
1600
+ "anthropic/claude-sonnet-4"
1601
+ ]
1648
1602
  },
1649
1603
  REASONING: {
1650
1604
  primary: "xai/grok-4-1-fast-reasoning",
@@ -1652,7 +1606,8 @@ var DEFAULT_ROUTING_CONFIG = {
1652
1606
  fallback: [
1653
1607
  "xai/grok-4-fast-reasoning",
1654
1608
  "openai/o3",
1655
- // Strong reasoning model
1609
+ "openai/o4-mini",
1610
+ // Latest o-series mini
1656
1611
  "deepseek/deepseek-reasoner",
1657
1612
  "moonshot/kimi-k2.5"
1658
1613
  ]
@@ -1662,8 +1617,8 @@ var DEFAULT_ROUTING_CONFIG = {
1662
1617
  ecoTiers: {
1663
1618
  SIMPLE: {
1664
1619
  primary: "nvidia/kimi-k2.5",
1665
- // $0.001/$0.001
1666
- fallback: ["deepseek/deepseek-chat", "nvidia/gpt-oss-120b", "nvidia/gpt-oss-20b"]
1620
+ // $0.55/$2.5
1621
+ fallback: ["nvidia/gpt-oss-120b", "deepseek/deepseek-chat", "google/gemini-2.5-flash"]
1667
1622
  },
1668
1623
  MEDIUM: {
1669
1624
  primary: "deepseek/deepseek-chat",
@@ -1695,13 +1650,25 @@ var DEFAULT_ROUTING_CONFIG = {
1695
1650
  },
1696
1651
  COMPLEX: {
1697
1652
  primary: "anthropic/claude-opus-4.5",
1698
- // $15/$75
1699
- fallback: ["openai/gpt-5.2", "anthropic/claude-sonnet-4", "google/gemini-2.5-pro"]
1653
+ // $5/$25 - Latest Opus
1654
+ fallback: [
1655
+ "openai/gpt-5.2-pro",
1656
+ // $21/$168 - Latest GPT pro
1657
+ "google/gemini-3-pro-preview",
1658
+ // Latest Gemini
1659
+ "openai/gpt-5.2",
1660
+ "anthropic/claude-sonnet-4"
1661
+ ]
1700
1662
  },
1701
1663
  REASONING: {
1702
1664
  primary: "openai/o3",
1703
- // $10/$40
1704
- fallback: ["anthropic/claude-opus-4.5", "openai/o1", "google/gemini-2.5-pro"]
1665
+ // $2/$8 - Best value reasoning
1666
+ fallback: [
1667
+ "openai/o4-mini",
1668
+ // Latest o-series
1669
+ "anthropic/claude-opus-4.5",
1670
+ "google/gemini-3-pro-preview"
1671
+ ]
1705
1672
  }
1706
1673
  },
1707
1674
  // Agentic tier configs - models that excel at multi-step autonomous tasks
@@ -1722,13 +1689,23 @@ var DEFAULT_ROUTING_CONFIG = {
1722
1689
  },
1723
1690
  COMPLEX: {
1724
1691
  primary: "anthropic/claude-sonnet-4",
1725
- fallback: ["anthropic/claude-opus-4.5", "openai/gpt-5.2", "xai/grok-4-0709"]
1726
- // Opus 4.5 is 3x cheaper than Opus 4
1692
+ fallback: [
1693
+ "anthropic/claude-opus-4.5",
1694
+ // Latest Opus - best agentic
1695
+ "openai/gpt-5.2",
1696
+ "google/gemini-3-pro-preview",
1697
+ "xai/grok-4-0709"
1698
+ ]
1727
1699
  },
1728
1700
  REASONING: {
1729
1701
  primary: "anthropic/claude-sonnet-4",
1730
1702
  // Strong tool use + reasoning for agentic tasks
1731
- fallback: ["xai/grok-4-fast-reasoning", "moonshot/kimi-k2.5", "deepseek/deepseek-reasoner"]
1703
+ fallback: [
1704
+ "anthropic/claude-opus-4.5",
1705
+ "xai/grok-4-fast-reasoning",
1706
+ "moonshot/kimi-k2.5",
1707
+ "deepseek/deepseek-reasoner"
1708
+ ]
1732
1709
  }
1733
1710
  },
1734
1711
  overrides: {
@@ -2512,6 +2489,16 @@ var FREE_MODEL = "nvidia/gpt-oss-120b";
2512
2489
  var HEARTBEAT_INTERVAL_MS = 2e3;
2513
2490
  var DEFAULT_REQUEST_TIMEOUT_MS = 18e4;
2514
2491
  var DEFAULT_PORT = 8402;
2492
+ var PROXY_PORT = (() => {
2493
+ const envPort = process.env.BLOCKRUN_PROXY_PORT;
2494
+ if (envPort) {
2495
+ const parsed = parseInt(envPort, 10);
2496
+ if (!isNaN(parsed) && parsed > 0 && parsed < 65536) {
2497
+ return parsed;
2498
+ }
2499
+ }
2500
+ return DEFAULT_PORT;
2501
+ })();
2515
2502
  var MAX_FALLBACK_ATTEMPTS = 3;
2516
2503
  var HEALTH_CHECK_TIMEOUT_MS = 2e3;
2517
2504
  var RATE_LIMIT_COOLDOWN_MS = 6e4;
@@ -2611,14 +2598,7 @@ function safeWrite(res, data) {
2611
2598
  }
2612
2599
  var BALANCE_CHECK_BUFFER = 1.5;
2613
2600
  function getProxyPort() {
2614
- const envPort = process.env.BLOCKRUN_PROXY_PORT;
2615
- if (envPort) {
2616
- const parsed = parseInt(envPort, 10);
2617
- if (!isNaN(parsed) && parsed > 0 && parsed < 65536) {
2618
- return parsed;
2619
- }
2620
- }
2621
- return DEFAULT_PORT;
2601
+ return PROXY_PORT;
2622
2602
  }
2623
2603
  async function checkExistingProxy(port) {
2624
2604
  const controller = new AbortController();
@@ -3926,25 +3906,34 @@ function injectModelsConfig(logger) {
3926
3906
  { id: "sonnet", alias: "sonnet" },
3927
3907
  { id: "opus", alias: "opus" },
3928
3908
  { id: "haiku", alias: "haiku" },
3929
- { id: "gpt", alias: "gpt" },
3930
3909
  { id: "gpt5", alias: "gpt5" },
3931
3910
  { id: "mini", alias: "mini" },
3932
- { id: "o3", alias: "o3" },
3933
- { id: "grok", alias: "grok" },
3934
3911
  { id: "grok-fast", alias: "grok-fast" },
3935
3912
  { id: "grok-code", alias: "grok-code" },
3936
3913
  { id: "deepseek", alias: "deepseek" },
3937
3914
  { id: "reasoner", alias: "reasoner" },
3938
3915
  { id: "kimi", alias: "kimi" },
3939
3916
  { id: "gemini", alias: "gemini" },
3940
- { id: "flash", alias: "flash" },
3941
- { id: "nvidia", alias: "nvidia" }
3917
+ { id: "flash", alias: "flash" }
3918
+ ];
3919
+ const DEPRECATED_ALIASES = [
3920
+ "blockrun/nvidia",
3921
+ "blockrun/gpt",
3922
+ "blockrun/o3",
3923
+ "blockrun/grok"
3942
3924
  ];
3943
3925
  if (!defaults.models) {
3944
3926
  defaults.models = {};
3945
3927
  needsWrite = true;
3946
3928
  }
3947
3929
  const allowlist = defaults.models;
3930
+ for (const deprecated of DEPRECATED_ALIASES) {
3931
+ if (allowlist[deprecated]) {
3932
+ delete allowlist[deprecated];
3933
+ logger.info(`Removed deprecated model alias: ${deprecated}`);
3934
+ needsWrite = true;
3935
+ }
3936
+ }
3948
3937
  for (const m of KEY_MODEL_ALIASES) {
3949
3938
  const fullId = `blockrun/${m.id}`;
3950
3939
  if (!allowlist[fullId]) {