@blockrun/clawrouter 0.12.250 → 0.12.252

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 CHANGED
@@ -34087,7 +34087,7 @@ function affinity(modelId, task, language = "other", agentDomain = "other", deep
34087
34087
  match(["gpt-5.3-codex"], 1),
34088
34088
  match(["claude-sonnet-4.6"], 0.94),
34089
34089
  match(["glm-5.2"], 0.9),
34090
- match(["kimi-k2.7", "deepseek-v4-pro"], 0.86)
34090
+ match(["deepseek-v4-pro"], 0.86)
34091
34091
  );
34092
34092
  case "reasoning":
34093
34093
  return Math.max(
@@ -34111,14 +34111,13 @@ function affinity(modelId, task, language = "other", agentDomain = "other", deep
34111
34111
  base3,
34112
34112
  match(["gemini-3.5-flash"], 1),
34113
34113
  match(["grok-4.5"], 0.93),
34114
- match(["claude-sonnet-5", "deepseek-v4-pro", "kimi-k3"], 0.9),
34115
- match(["kimi-k2.7"], 0.84)
34114
+ match(["claude-sonnet-5", "deepseek-v4-pro", "kimi-k3"], 0.9)
34116
34115
  );
34117
34116
  case "vision":
34118
34117
  return Math.max(
34119
34118
  base3,
34120
34119
  match(["gemini-3.1-pro"], 0.96),
34121
- match(["qwen3.7-max", "claude-sonnet-4.6", "kimi-k2.7", "grok-4.3"], 0.9)
34120
+ match(["qwen3.7-max", "claude-sonnet-4.6", "kimi-k3", "grok-4.3"], 0.9)
34122
34121
  );
34123
34122
  case "long_context":
34124
34123
  return Math.max(
@@ -34130,17 +34129,18 @@ function affinity(modelId, task, language = "other", agentDomain = "other", deep
34130
34129
  );
34131
34130
  case "extraction": {
34132
34131
  const kimiExtractionAffinity = language === "zh" ? 1 : 0.9;
34132
+ const otherExtractionAffinity = language === "zh" ? 0.88 : 0.9;
34133
34133
  return Math.max(
34134
34134
  base3,
34135
- match(["gemini-3.5-flash", "gemini-2.5-flash", "gpt-4o-mini"], 0.9),
34136
- match(["claude-sonnet-5", "claude-sonnet-4.6"], 0.9),
34137
- match(["kimi-k3", "kimi-k2.7"], kimiExtractionAffinity)
34135
+ match(["gemini-3.5-flash", "gemini-2.5-flash", "gpt-4o-mini"], otherExtractionAffinity),
34136
+ match(["claude-sonnet-5", "claude-sonnet-4.6"], otherExtractionAffinity),
34137
+ match(["kimi-k3"], kimiExtractionAffinity)
34138
34138
  );
34139
34139
  }
34140
34140
  default:
34141
34141
  return Math.max(
34142
34142
  base3,
34143
- match(["gemini-3.5-flash", "gemini-2.5-flash", "kimi-k3", "kimi-k2.7"], 0.86)
34143
+ match(["gemini-3.5-flash", "gemini-2.5-flash", "kimi-k3"], 0.86)
34144
34144
  );
34145
34145
  }
34146
34146
  }
@@ -34199,6 +34199,9 @@ function evidenceCandidates(task) {
34199
34199
  "deepseek/deepseek-v4-pro"
34200
34200
  ];
34201
34201
  }
34202
+ if (task === "extraction") {
34203
+ return ["moonshot/kimi-k3", "google/gemini-3.5-flash", "anthropic/claude-sonnet-5"];
34204
+ }
34202
34205
  if (task === "reasoning_math") {
34203
34206
  return [
34204
34207
  "google/gemini-3.5-flash",
@@ -34370,14 +34373,15 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34370
34373
  supportsVision: true
34371
34374
  },
34372
34375
  "anthropic/claude-haiku-4.5": {
34376
+ // override: The public catalog's `categories` omit "vision" for this Anthropic model even though the gateway accepts image input for it (the prior hand-maintained snapshot had it, and Anthropic's model card lists it). Without this the vision filter would silently drop it — reported against the catalog; remove once the categories carry vision.
34373
34377
  contextWindow: 2e5,
34374
- maxOutputTokens: 8192,
34378
+ maxOutputTokens: 64e3,
34375
34379
  supportsTools: true,
34376
34380
  supportsVision: true
34377
34381
  },
34378
- "anthropic/claude-opus-4.6": {
34379
- contextWindow: 1e6,
34380
- maxOutputTokens: 128e3,
34382
+ "anthropic/claude-opus-4.5": {
34383
+ contextWindow: 2e5,
34384
+ maxOutputTokens: 64e3,
34381
34385
  supportsTools: true,
34382
34386
  supportsVision: true
34383
34387
  },
@@ -34399,12 +34403,19 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34399
34403
  supportsTools: true,
34400
34404
  supportsVision: true
34401
34405
  },
34402
- "anthropic/claude-sonnet-4.6": {
34406
+ "anthropic/claude-sonnet-4.5": {
34403
34407
  contextWindow: 2e5,
34404
34408
  maxOutputTokens: 64e3,
34405
34409
  supportsTools: true,
34406
34410
  supportsVision: true
34407
34411
  },
34412
+ "anthropic/claude-sonnet-4.6": {
34413
+ // override: The public catalog's `categories` omit "vision" for this Anthropic model even though the gateway accepts image input for it (the prior hand-maintained snapshot had it, and Anthropic's model card lists it). Without this the vision filter would silently drop it — reported against the catalog; remove once the categories carry vision.
34414
+ contextWindow: 1e6,
34415
+ maxOutputTokens: 128e3,
34416
+ supportsTools: true,
34417
+ supportsVision: true
34418
+ },
34408
34419
  "anthropic/claude-sonnet-5": {
34409
34420
  contextWindow: 1e6,
34410
34421
  maxOutputTokens: 128e3,
@@ -34412,14 +34423,14 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34412
34423
  supportsVision: true
34413
34424
  },
34414
34425
  "deepseek/deepseek-chat": {
34415
- contextWindow: 1e6,
34416
- maxOutputTokens: 8192,
34426
+ contextWindow: 1048576,
34427
+ maxOutputTokens: 65536,
34417
34428
  supportsTools: true,
34418
34429
  supportsVision: false
34419
34430
  },
34420
34431
  "deepseek/deepseek-reasoner": {
34421
- contextWindow: 1e6,
34422
- maxOutputTokens: 8192,
34432
+ contextWindow: 1048576,
34433
+ maxOutputTokens: 65536,
34423
34434
  supportsTools: true,
34424
34435
  supportsVision: false
34425
34436
  },
@@ -34429,50 +34440,38 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34429
34440
  supportsTools: true,
34430
34441
  supportsVision: false
34431
34442
  },
34432
- "free/deepseek-v4-flash": {
34433
- contextWindow: 1e6,
34434
- maxOutputTokens: 16384,
34435
- supportsTools: false,
34436
- supportsVision: false
34437
- },
34438
- "free/seed-oss-36b": {
34439
- contextWindow: 131072,
34440
- maxOutputTokens: 16384,
34441
- supportsTools: false,
34442
- supportsVision: false
34443
- },
34444
34443
  "google/gemini-2.5-flash": {
34445
- contextWindow: 1e6,
34444
+ contextWindow: 1048576,
34446
34445
  maxOutputTokens: 65536,
34447
34446
  supportsTools: true,
34448
34447
  supportsVision: true
34449
34448
  },
34450
34449
  "google/gemini-2.5-flash-lite": {
34451
- contextWindow: 1e6,
34450
+ contextWindow: 1048576,
34452
34451
  maxOutputTokens: 65536,
34453
34452
  supportsTools: true,
34454
34453
  supportsVision: false
34455
34454
  },
34456
34455
  "google/gemini-2.5-pro": {
34457
- contextWindow: 105e4,
34456
+ contextWindow: 1048576,
34458
34457
  maxOutputTokens: 65536,
34459
34458
  supportsTools: true,
34460
34459
  supportsVision: true
34461
34460
  },
34462
34461
  "google/gemini-3-flash-preview": {
34463
- contextWindow: 1e6,
34462
+ contextWindow: 1048576,
34464
34463
  maxOutputTokens: 65536,
34465
- supportsTools: false,
34464
+ supportsTools: true,
34466
34465
  supportsVision: true
34467
34466
  },
34468
34467
  "google/gemini-3.1-flash-lite": {
34469
- contextWindow: 1e6,
34470
- maxOutputTokens: 8192,
34468
+ contextWindow: 1048576,
34469
+ maxOutputTokens: 65536,
34471
34470
  supportsTools: true,
34472
34471
  supportsVision: false
34473
34472
  },
34474
34473
  "google/gemini-3.1-pro": {
34475
- contextWindow: 105e4,
34474
+ contextWindow: 1048576,
34476
34475
  maxOutputTokens: 65536,
34477
34476
  supportsTools: true,
34478
34477
  supportsVision: true
@@ -34483,23 +34482,29 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34483
34482
  supportsTools: true,
34484
34483
  supportsVision: true
34485
34484
  },
34486
- "moonshot/kimi-k2.5": {
34487
- contextWindow: 262144,
34488
- maxOutputTokens: 16384,
34485
+ "google/gemini-3.5-flash-lite": {
34486
+ contextWindow: 1048576,
34487
+ maxOutputTokens: 65536,
34489
34488
  supportsTools: true,
34490
- supportsVision: true
34489
+ supportsVision: false
34491
34490
  },
34492
- "moonshot/kimi-k2.6": {
34493
- contextWindow: 262144,
34491
+ "google/gemini-3.6-flash": {
34492
+ contextWindow: 1048576,
34494
34493
  maxOutputTokens: 65536,
34495
34494
  supportsTools: true,
34496
34495
  supportsVision: true
34497
34496
  },
34498
- "moonshot/kimi-k2.7": {
34499
- contextWindow: 262144,
34497
+ "minimax/minimax-m2.7": {
34498
+ contextWindow: 204800,
34499
+ maxOutputTokens: 16384,
34500
+ supportsTools: true,
34501
+ supportsVision: false
34502
+ },
34503
+ "minimax/minimax-m3": {
34504
+ contextWindow: 1048576,
34500
34505
  maxOutputTokens: 65536,
34501
34506
  supportsTools: true,
34502
- supportsVision: true
34507
+ supportsVision: false
34503
34508
  },
34504
34509
  "moonshot/kimi-k3": {
34505
34510
  contextWindow: 1048576,
@@ -34507,6 +34512,26 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34507
34512
  supportsTools: true,
34508
34513
  supportsVision: true
34509
34514
  },
34515
+ "nvidia/mistral-nemotron": {
34516
+ // supportsTools: gateway unavailable at probe time — fails closed
34517
+ contextWindow: 131072,
34518
+ maxOutputTokens: 16384,
34519
+ supportsTools: false,
34520
+ supportsVision: false
34521
+ },
34522
+ "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning": {
34523
+ contextWindow: 256e3,
34524
+ maxOutputTokens: 16384,
34525
+ supportsTools: false,
34526
+ supportsVision: true
34527
+ },
34528
+ "nvidia/nemotron-nano-12b-v2-vl": {
34529
+ // supportsTools: gateway unavailable at probe time — fails closed
34530
+ contextWindow: 131072,
34531
+ maxOutputTokens: 16384,
34532
+ supportsTools: false,
34533
+ supportsVision: true
34534
+ },
34510
34535
  "nvidia/nemotron-nano-9b-v2": {
34511
34536
  contextWindow: 131072,
34512
34537
  maxOutputTokens: 16384,
@@ -34519,7 +34544,31 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34519
34544
  supportsTools: false,
34520
34545
  supportsVision: false
34521
34546
  },
34547
+ "openai/chat-latest": {
34548
+ contextWindow: 128e3,
34549
+ maxOutputTokens: 128e3,
34550
+ supportsTools: true,
34551
+ supportsVision: true
34552
+ },
34522
34553
  "openai/gpt-4.1": {
34554
+ contextWindow: 128e3,
34555
+ maxOutputTokens: 32768,
34556
+ supportsTools: true,
34557
+ supportsVision: true
34558
+ },
34559
+ "openai/gpt-4.1-mini": {
34560
+ contextWindow: 128e3,
34561
+ maxOutputTokens: 32768,
34562
+ supportsTools: true,
34563
+ supportsVision: false
34564
+ },
34565
+ "openai/gpt-4.1-nano": {
34566
+ contextWindow: 128e3,
34567
+ maxOutputTokens: 32768,
34568
+ supportsTools: true,
34569
+ supportsVision: false
34570
+ },
34571
+ "openai/gpt-4o": {
34523
34572
  contextWindow: 128e3,
34524
34573
  maxOutputTokens: 16384,
34525
34574
  supportsTools: true,
@@ -34533,17 +34582,44 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34533
34582
  },
34534
34583
  "openai/gpt-5-mini": {
34535
34584
  contextWindow: 2e5,
34536
- maxOutputTokens: 65536,
34585
+ maxOutputTokens: 128e3,
34537
34586
  supportsTools: true,
34538
34587
  supportsVision: false
34539
34588
  },
34589
+ "openai/gpt-5.2": {
34590
+ contextWindow: 4e5,
34591
+ maxOutputTokens: 128e3,
34592
+ supportsTools: true,
34593
+ supportsVision: true
34594
+ },
34595
+ "openai/gpt-5.2-pro": {
34596
+ // supportsTools: not probed — fails closed
34597
+ contextWindow: 4e5,
34598
+ maxOutputTokens: 128e3,
34599
+ supportsTools: false,
34600
+ supportsVision: true
34601
+ },
34602
+ "openai/gpt-5.3": {
34603
+ // supportsTools: gateway unavailable at probe time — fails closed
34604
+ contextWindow: 128e3,
34605
+ maxOutputTokens: 128e3,
34606
+ supportsTools: false,
34607
+ supportsVision: true
34608
+ },
34540
34609
  "openai/gpt-5.3-codex": {
34610
+ // supportsTools: gateway unavailable at probe time — fails closed; override: 2026-08-29 probe: every request (6 plain + 3 tool attempts) returned a gateway 500, so the probe measured an incident, not the model. Codex's function calling is established by the 2026-07 Terminal-Bench / tau2 calibration trajectories in portfolio.ts. Hosts observing the 500s should drop it with RouterOptions.unavailableModels rather than this snapshot claiming the model cannot call tools.
34541
34611
  contextWindow: 4e5,
34542
34612
  maxOutputTokens: 128e3,
34543
34613
  supportsTools: true,
34544
34614
  supportsVision: false
34545
34615
  },
34546
34616
  "openai/gpt-5.4": {
34617
+ contextWindow: 105e4,
34618
+ maxOutputTokens: 128e3,
34619
+ supportsTools: true,
34620
+ supportsVision: true
34621
+ },
34622
+ "openai/gpt-5.4-mini": {
34547
34623
  contextWindow: 4e5,
34548
34624
  maxOutputTokens: 128e3,
34549
34625
  supportsTools: true,
@@ -34551,30 +34627,92 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34551
34627
  },
34552
34628
  "openai/gpt-5.4-nano": {
34553
34629
  contextWindow: 105e4,
34554
- maxOutputTokens: 32768,
34630
+ maxOutputTokens: 128e3,
34555
34631
  supportsTools: true,
34556
34632
  supportsVision: false
34557
34633
  },
34634
+ "openai/gpt-5.4-pro": {
34635
+ // supportsTools: not probed — fails closed
34636
+ contextWindow: 105e4,
34637
+ maxOutputTokens: 128e3,
34638
+ supportsTools: false,
34639
+ supportsVision: true
34640
+ },
34558
34641
  "openai/gpt-5.5": {
34559
34642
  contextWindow: 105e4,
34560
34643
  maxOutputTokens: 128e3,
34561
34644
  supportsTools: true,
34562
34645
  supportsVision: true
34563
34646
  },
34647
+ "openai/gpt-5.5-pro": {
34648
+ // supportsTools: not probed — fails closed
34649
+ contextWindow: 105e4,
34650
+ maxOutputTokens: 128e3,
34651
+ supportsTools: false,
34652
+ supportsVision: true
34653
+ },
34654
+ "openai/gpt-5.6-luna": {
34655
+ contextWindow: 105e4,
34656
+ maxOutputTokens: 128e3,
34657
+ supportsTools: true,
34658
+ supportsVision: true
34659
+ },
34660
+ "openai/gpt-5.6-luna-pro": {
34661
+ contextWindow: 105e4,
34662
+ maxOutputTokens: 128e3,
34663
+ supportsTools: false,
34664
+ supportsVision: true
34665
+ },
34666
+ "openai/gpt-5.6-sol": {
34667
+ contextWindow: 105e4,
34668
+ maxOutputTokens: 128e3,
34669
+ supportsTools: true,
34670
+ supportsVision: true
34671
+ },
34672
+ "openai/gpt-5.6-sol-pro": {
34673
+ contextWindow: 105e4,
34674
+ maxOutputTokens: 128e3,
34675
+ supportsTools: true,
34676
+ supportsVision: true
34677
+ },
34564
34678
  "openai/gpt-5.6-terra": {
34565
34679
  contextWindow: 105e4,
34566
34680
  maxOutputTokens: 128e3,
34567
34681
  supportsTools: true,
34568
34682
  supportsVision: true
34569
34683
  },
34684
+ "openai/gpt-5.6-terra-pro": {
34685
+ contextWindow: 105e4,
34686
+ maxOutputTokens: 128e3,
34687
+ supportsTools: true,
34688
+ supportsVision: true
34689
+ },
34690
+ "openai/o1": {
34691
+ contextWindow: 2e5,
34692
+ maxOutputTokens: 1e5,
34693
+ supportsTools: true,
34694
+ supportsVision: false
34695
+ },
34570
34696
  "openai/o3": {
34571
34697
  contextWindow: 2e5,
34572
34698
  maxOutputTokens: 1e5,
34573
34699
  supportsTools: true,
34574
34700
  supportsVision: false
34575
34701
  },
34702
+ "openai/o3-mini": {
34703
+ contextWindow: 128e3,
34704
+ maxOutputTokens: 1e5,
34705
+ supportsTools: true,
34706
+ supportsVision: false
34707
+ },
34576
34708
  "openai/o4-mini": {
34577
34709
  contextWindow: 128e3,
34710
+ maxOutputTokens: 1e5,
34711
+ supportsTools: true,
34712
+ supportsVision: false
34713
+ },
34714
+ "qwen/qwen3.7-flash": {
34715
+ contextWindow: 1e6,
34578
34716
  maxOutputTokens: 65536,
34579
34717
  supportsTools: true,
34580
34718
  supportsVision: false
@@ -34585,47 +34723,53 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34585
34723
  supportsTools: true,
34586
34724
  supportsVision: false
34587
34725
  },
34588
- "xai/grok-3-mini": {
34589
- contextWindow: 131072,
34590
- maxOutputTokens: 16384,
34726
+ "qwen/qwen3.7-plus": {
34727
+ contextWindow: 1e6,
34728
+ maxOutputTokens: 131072,
34591
34729
  supportsTools: true,
34592
34730
  supportsVision: false
34593
34731
  },
34594
- "xai/grok-4-0709": {
34595
- contextWindow: 131072,
34596
- maxOutputTokens: 16384,
34732
+ "tencent/hy3": {
34733
+ contextWindow: 262144,
34734
+ maxOutputTokens: 128e3,
34597
34735
  supportsTools: true,
34598
34736
  supportsVision: false
34599
34737
  },
34600
- "xai/grok-4-1-fast-non-reasoning": {
34601
- contextWindow: 131072,
34738
+ "xai/grok-4.3": {
34739
+ contextWindow: 1e6,
34602
34740
  maxOutputTokens: 16384,
34603
34741
  supportsTools: true,
34604
- supportsVision: false
34742
+ supportsVision: true
34605
34743
  },
34606
- "xai/grok-4-1-fast-reasoning": {
34607
- contextWindow: 131072,
34744
+ "xai/grok-4.5": {
34745
+ contextWindow: 5e5,
34608
34746
  maxOutputTokens: 16384,
34609
34747
  supportsTools: true,
34610
- supportsVision: false
34748
+ supportsVision: true
34611
34749
  },
34612
- "xai/grok-4-fast-non-reasoning": {
34613
- contextWindow: 131072,
34750
+ "xai/grok-build-0.1": {
34751
+ contextWindow: 256e3,
34614
34752
  maxOutputTokens: 16384,
34615
34753
  supportsTools: true,
34616
34754
  supportsVision: false
34617
34755
  },
34618
- "xai/grok-4-fast-reasoning": {
34619
- contextWindow: 131072,
34620
- maxOutputTokens: 16384,
34756
+ "xiaomi/mimo-v2.5-pro": {
34757
+ contextWindow: 1048576,
34758
+ maxOutputTokens: 131072,
34621
34759
  supportsTools: true,
34622
34760
  supportsVision: false
34623
34761
  },
34624
- "xai/grok-4.5": {
34625
- contextWindow: 5e5,
34626
- maxOutputTokens: 16384,
34762
+ "zai/glm-5": {
34763
+ contextWindow: 2e5,
34764
+ maxOutputTokens: 128e3,
34627
34765
  supportsTools: true,
34628
- supportsVision: true
34766
+ supportsVision: false
34767
+ },
34768
+ "zai/glm-5-turbo": {
34769
+ contextWindow: 2e5,
34770
+ maxOutputTokens: 128e3,
34771
+ supportsTools: true,
34772
+ supportsVision: false
34629
34773
  },
34630
34774
  "zai/glm-5.1": {
34631
34775
  contextWindow: 2e5,
@@ -34635,249 +34779,549 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34635
34779
  },
34636
34780
  "zai/glm-5.2": {
34637
34781
  contextWindow: 1e6,
34638
- maxOutputTokens: 262144,
34782
+ maxOutputTokens: 131072,
34639
34783
  supportsTools: true,
34640
34784
  supportsVision: false
34785
+ },
34786
+ "zai/glm-5.3": {
34787
+ contextWindow: 1e6,
34788
+ maxOutputTokens: 131072,
34789
+ supportsTools: true,
34790
+ supportsVision: false
34791
+ },
34792
+ "zai/glm-5.3-flash": {
34793
+ contextWindow: 1e6,
34794
+ maxOutputTokens: 131072,
34795
+ supportsTools: true,
34796
+ supportsVision: true
34641
34797
  }
34642
34798
  });
34643
34799
  model_profiles_generated_default = {
34644
- "openai/gpt-5.5": {
34645
- measuredAt: "2026-07-21T10:21:31Z",
34646
- latencyMs: 6243.1,
34647
- p95LatencyMs: 9865,
34648
- outputTokensPerSecond: 12.53,
34800
+ "anthropic/claude-fable-5": {
34801
+ measuredAt: "2026-08-29T16:51:33Z",
34802
+ latencyMs: 9298.5,
34803
+ p95LatencyMs: 9873.4,
34804
+ outputTokensPerSecond: 55.17,
34649
34805
  errorRate: 0,
34650
34806
  samples: 3
34651
34807
  },
34652
- "openai/gpt-5.4-pro": {
34653
- measuredAt: "2026-07-21T10:21:31Z",
34654
- latencyMs: 13015.5,
34655
- p95LatencyMs: 23976.4,
34656
- outputTokensPerSecond: 6.42,
34808
+ "anthropic/claude-haiku-4.5": {
34809
+ measuredAt: "2026-08-29T16:51:33Z",
34810
+ latencyMs: 3157.4,
34811
+ p95LatencyMs: 3170.7,
34812
+ outputTokensPerSecond: 162.16,
34657
34813
  errorRate: 0,
34658
34814
  samples: 3
34659
34815
  },
34660
- "openai/gpt-5.4-mini": {
34661
- measuredAt: "2026-07-21T10:21:31Z",
34662
- latencyMs: 5550,
34663
- p95LatencyMs: 6595.7,
34664
- outputTokensPerSecond: 11.96,
34665
- errorRate: 0.3333,
34816
+ "anthropic/claude-opus-4.5": {
34817
+ measuredAt: "2026-08-29T16:51:33Z",
34818
+ latencyMs: 6497.7,
34819
+ p95LatencyMs: 6953.7,
34820
+ outputTokensPerSecond: 78.99,
34821
+ errorRate: 0,
34666
34822
  samples: 3
34667
34823
  },
34668
- "openai/gpt-5.3-codex": {
34669
- measuredAt: "2026-07-21T10:21:31Z",
34670
- latencyMs: 4617.1,
34671
- p95LatencyMs: 5800.7,
34672
- outputTokensPerSecond: 12.48,
34824
+ "anthropic/claude-opus-4.7": {
34825
+ measuredAt: "2026-08-29T16:51:33Z",
34826
+ latencyMs: 5316.5,
34827
+ p95LatencyMs: 6121.5,
34828
+ outputTokensPerSecond: 97.34,
34673
34829
  errorRate: 0,
34674
34830
  samples: 3
34675
34831
  },
34676
34832
  "anthropic/claude-opus-4.8": {
34677
- measuredAt: "2026-07-21T10:21:31Z",
34678
- latencyMs: 3915.1,
34679
- p95LatencyMs: 6130.8,
34680
- outputTokensPerSecond: 16.33,
34833
+ measuredAt: "2026-08-29T16:51:33Z",
34834
+ latencyMs: 6216.1,
34835
+ p95LatencyMs: 6847.7,
34836
+ outputTokensPerSecond: 82.81,
34681
34837
  errorRate: 0,
34682
34838
  samples: 3
34683
34839
  },
34684
- "anthropic/claude-opus-4.6": {
34685
- measuredAt: "2026-07-21T10:21:31Z",
34686
- latencyMs: 3765.5,
34687
- p95LatencyMs: 4257.2,
34688
- outputTokensPerSecond: 14.18,
34840
+ "anthropic/claude-opus-5": {
34841
+ measuredAt: "2026-08-29T16:51:33Z",
34842
+ latencyMs: 7309,
34843
+ p95LatencyMs: 7745.2,
34844
+ outputTokensPerSecond: 70.17,
34845
+ errorRate: 0,
34846
+ samples: 3
34847
+ },
34848
+ "anthropic/claude-sonnet-4.5": {
34849
+ measuredAt: "2026-08-29T16:51:33Z",
34850
+ latencyMs: 6330.4,
34851
+ p95LatencyMs: 6631.6,
34852
+ outputTokensPerSecond: 81.03,
34689
34853
  errorRate: 0,
34690
34854
  samples: 3
34691
34855
  },
34692
34856
  "anthropic/claude-sonnet-4.6": {
34693
- measuredAt: "2026-07-21T10:21:31Z",
34694
- latencyMs: 3860.6,
34695
- p95LatencyMs: 5093.5,
34696
- outputTokensPerSecond: 13.85,
34857
+ measuredAt: "2026-08-29T16:51:33Z",
34858
+ latencyMs: 6508,
34859
+ p95LatencyMs: 6698.3,
34860
+ outputTokensPerSecond: 78.6,
34697
34861
  errorRate: 0,
34698
34862
  samples: 3
34699
34863
  },
34700
- "anthropic/claude-haiku-4.5": {
34701
- measuredAt: "2026-07-21T10:21:31Z",
34702
- latencyMs: 2734.9,
34703
- p95LatencyMs: 3181.6,
34704
- outputTokensPerSecond: 19.58,
34864
+ "anthropic/claude-sonnet-5": {
34865
+ measuredAt: "2026-08-29T16:51:33Z",
34866
+ latencyMs: 6165.4,
34867
+ p95LatencyMs: 6582.9,
34868
+ outputTokensPerSecond: 83.62,
34705
34869
  errorRate: 0,
34706
34870
  samples: 3
34707
34871
  },
34708
- "google/gemini-3.1-pro": {
34709
- measuredAt: "2026-07-21T10:21:31Z",
34710
- latencyMs: 13935.7,
34711
- p95LatencyMs: 26675.3,
34712
- outputTokensPerSecond: 77.47,
34872
+ "deepseek/deepseek-chat": {
34873
+ measuredAt: "2026-08-29T16:51:33Z",
34874
+ latencyMs: 4351.4,
34875
+ p95LatencyMs: 4543.7,
34876
+ outputTokensPerSecond: 117.78,
34713
34877
  errorRate: 0,
34714
34878
  samples: 3
34715
34879
  },
34716
- "google/gemini-3.5-flash": {
34717
- measuredAt: "2026-07-21T10:21:31Z",
34718
- latencyMs: 4608.7,
34719
- p95LatencyMs: 8420.9,
34720
- outputTokensPerSecond: 57.88,
34880
+ "deepseek/deepseek-reasoner": {
34881
+ measuredAt: "2026-08-29T16:51:33Z",
34882
+ latencyMs: 5201.2,
34883
+ p95LatencyMs: 6079.6,
34884
+ outputTokensPerSecond: 99.77,
34721
34885
  errorRate: 0,
34722
34886
  samples: 3
34723
34887
  },
34724
- "google/gemini-3.1-flash-lite": {
34725
- measuredAt: "2026-07-21T10:21:31Z",
34726
- latencyMs: 4619.7,
34727
- p95LatencyMs: 9927.1,
34728
- outputTokensPerSecond: 42.01,
34888
+ "deepseek/deepseek-v4-pro": {
34889
+ measuredAt: "2026-08-29T16:51:33Z",
34890
+ latencyMs: 8781.2,
34891
+ p95LatencyMs: 9881.1,
34892
+ outputTokensPerSecond: 58.98,
34729
34893
  errorRate: 0,
34730
34894
  samples: 3
34731
34895
  },
34732
34896
  "google/gemini-2.5-flash": {
34733
- measuredAt: "2026-07-21T10:21:31Z",
34734
- latencyMs: 5506.9,
34735
- p95LatencyMs: 11462.5,
34736
- outputTokensPerSecond: 65.19,
34897
+ measuredAt: "2026-08-29T16:51:33Z",
34898
+ latencyMs: 5416.4,
34899
+ p95LatencyMs: 6442.8,
34900
+ outputTokensPerSecond: 213.07,
34737
34901
  errorRate: 0,
34738
34902
  samples: 3
34739
34903
  },
34740
- "deepseek/deepseek-v4-pro": {
34741
- measuredAt: "2026-07-21T10:21:31Z",
34742
- latencyMs: 6044.8,
34743
- p95LatencyMs: 10782.3,
34744
- outputTokensPerSecond: 22.47,
34904
+ "google/gemini-2.5-flash-lite": {
34905
+ measuredAt: "2026-08-29T16:51:33Z",
34906
+ latencyMs: 5002.6,
34907
+ p95LatencyMs: 5780.3,
34908
+ outputTokensPerSecond: 408.43,
34745
34909
  errorRate: 0,
34746
34910
  samples: 3
34747
34911
  },
34748
- "deepseek/deepseek-reasoner": {
34749
- measuredAt: "2026-07-21T10:21:31Z",
34750
- latencyMs: 4111.9,
34751
- p95LatencyMs: 5305.7,
34752
- outputTokensPerSecond: 16.46,
34912
+ "google/gemini-2.5-pro": {
34913
+ measuredAt: "2026-08-29T16:51:33Z",
34914
+ latencyMs: 28169.5,
34915
+ p95LatencyMs: 29491.4,
34916
+ outputTokensPerSecond: 147.3,
34753
34917
  errorRate: 0,
34754
34918
  samples: 3
34755
34919
  },
34756
- "deepseek/deepseek-chat": {
34757
- measuredAt: "2026-07-21T10:21:31Z",
34758
- latencyMs: 2648.6,
34759
- p95LatencyMs: 3524.1,
34760
- outputTokensPerSecond: 16.73,
34920
+ "google/gemini-3-flash-preview": {
34921
+ measuredAt: "2026-08-29T16:51:33Z",
34922
+ latencyMs: 4717.1,
34923
+ p95LatencyMs: 5037.1,
34924
+ outputTokensPerSecond: 198.71,
34761
34925
  errorRate: 0,
34762
34926
  samples: 3
34763
34927
  },
34764
- "moonshot/kimi-k2.7": {
34765
- measuredAt: "2026-07-21T10:21:31Z",
34766
- latencyMs: 4295.4,
34767
- p95LatencyMs: 6153.8,
34768
- outputTokensPerSecond: 18.54,
34928
+ "google/gemini-3.1-flash-lite": {
34929
+ measuredAt: "2026-08-29T16:51:33Z",
34930
+ latencyMs: 2855.8,
34931
+ p95LatencyMs: 3172.7,
34932
+ outputTokensPerSecond: 286.91,
34769
34933
  errorRate: 0,
34770
34934
  samples: 3
34771
34935
  },
34772
- "qwen/qwen3.7-max": {
34773
- measuredAt: "2026-07-21T10:21:31Z",
34774
- latencyMs: 30729.4,
34775
- p95LatencyMs: 39622,
34776
- outputTokensPerSecond: 36.89,
34777
- errorRate: 0.3333,
34936
+ "google/gemini-3.1-pro": {
34937
+ measuredAt: "2026-08-29T16:59:54Z",
34938
+ latencyMs: 24194.1,
34939
+ p95LatencyMs: 27269.6,
34940
+ outputTokensPerSecond: 109.47,
34941
+ errorRate: 0,
34778
34942
  samples: 3
34779
34943
  },
34780
- "xai/grok-4.3": {
34781
- measuredAt: "2026-07-21T10:21:31Z",
34782
- latencyMs: 6946.1,
34783
- p95LatencyMs: 9495.4,
34784
- outputTokensPerSecond: 65.3,
34944
+ "google/gemini-3.5-flash": {
34945
+ measuredAt: "2026-08-29T16:51:33Z",
34946
+ latencyMs: 5320.6,
34947
+ p95LatencyMs: 5429.8,
34948
+ outputTokensPerSecond: 226.21,
34785
34949
  errorRate: 0,
34786
34950
  samples: 3
34787
34951
  },
34788
- "xai/grok-4.20-reasoning": {
34789
- measuredAt: "2026-07-21T10:21:31Z",
34790
- latencyMs: 3472.4,
34791
- p95LatencyMs: 5332.4,
34792
- outputTokensPerSecond: 13.27,
34952
+ "google/gemini-3.5-flash-lite": {
34953
+ measuredAt: "2026-08-29T16:51:33Z",
34954
+ latencyMs: 3515.8,
34955
+ p95LatencyMs: 4363.4,
34956
+ outputTokensPerSecond: 248.9,
34793
34957
  errorRate: 0,
34794
34958
  samples: 3
34795
34959
  },
34796
- "xai/grok-4.20-non-reasoning": {
34797
- measuredAt: "2026-07-21T10:21:31Z",
34798
- latencyMs: 5174.4,
34799
- p95LatencyMs: 6081.7,
34800
- outputTokensPerSecond: 10.21,
34801
- errorRate: 0.3333,
34960
+ "google/gemini-3.6-flash": {
34961
+ measuredAt: "2026-08-29T16:51:33Z",
34962
+ latencyMs: 13020,
34963
+ p95LatencyMs: 15383.1,
34964
+ outputTokensPerSecond: 187.87,
34965
+ errorRate: 0,
34802
34966
  samples: 3
34803
34967
  },
34804
- "xai/grok-4-1-fast-reasoning": {
34805
- measuredAt: "2026-07-21T10:21:31Z",
34806
- latencyMs: 13148.2,
34807
- p95LatencyMs: 19104.2,
34808
- outputTokensPerSecond: 4.28,
34968
+ "minimax/minimax-m2.7": {
34969
+ measuredAt: "2026-08-29T16:51:33Z",
34970
+ latencyMs: 8761.1,
34971
+ p95LatencyMs: 10199.3,
34972
+ outputTokensPerSecond: 59.18,
34809
34973
  errorRate: 0,
34810
34974
  samples: 3
34811
34975
  },
34812
34976
  "minimax/minimax-m3": {
34813
- measuredAt: "2026-07-21T10:21:31Z",
34814
- latencyMs: 3385,
34815
- p95LatencyMs: 4247.2,
34816
- outputTokensPerSecond: 15.16,
34977
+ measuredAt: "2026-08-29T16:51:33Z",
34978
+ latencyMs: 11101.9,
34979
+ p95LatencyMs: 26087.1,
34980
+ outputTokensPerSecond: 101.12,
34817
34981
  errorRate: 0,
34818
34982
  samples: 3
34819
34983
  },
34820
- "minimax/minimax-m2.7": {
34821
- measuredAt: "2026-07-21T10:21:31Z",
34822
- latencyMs: 4596.7,
34823
- p95LatencyMs: 6884.6,
34824
- outputTokensPerSecond: 17.03,
34984
+ "moonshot/kimi-k3": {
34985
+ measuredAt: "2026-08-29T16:51:33Z",
34986
+ latencyMs: 24498.9,
34987
+ p95LatencyMs: 40365.3,
34988
+ outputTokensPerSecond: 25.11,
34825
34989
  errorRate: 0,
34826
34990
  samples: 3
34827
34991
  },
34828
- "zai/glm-5.2": {
34829
- measuredAt: "2026-07-21T10:21:31Z",
34830
- latencyMs: 4406.3,
34831
- p95LatencyMs: 6139.7,
34832
- outputTokensPerSecond: 10.41,
34992
+ "nvidia/mistral-nemotron": {
34993
+ measuredAt: "2026-08-29T16:51:33Z",
34994
+ latencyMs: 7349.6,
34995
+ p95LatencyMs: 9932.3,
34996
+ outputTokensPerSecond: 79.48,
34997
+ errorRate: 0.3333,
34998
+ samples: 3
34999
+ },
35000
+ "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning": {
35001
+ measuredAt: "2026-08-29T16:59:54Z",
35002
+ latencyMs: 9324.6,
35003
+ p95LatencyMs: 12992,
35004
+ outputTokensPerSecond: 64.96,
35005
+ errorRate: 0.3333,
35006
+ samples: 3
35007
+ },
35008
+ "nvidia/nemotron-nano-12b-v2-vl": {
35009
+ measuredAt: "2026-08-29T16:51:33Z",
35010
+ latencyMs: 5846.9,
35011
+ p95LatencyMs: 5846.9,
35012
+ outputTokensPerSecond: 87.57,
35013
+ errorRate: 0.6667,
35014
+ samples: 3
35015
+ },
35016
+ "nvidia/nemotron-nano-9b-v2": {
35017
+ measuredAt: "2026-08-29T16:51:33Z",
35018
+ latencyMs: 5282.5,
35019
+ p95LatencyMs: 5282.5,
35020
+ outputTokensPerSecond: 96.92,
35021
+ errorRate: 0.6667,
35022
+ samples: 3
35023
+ },
35024
+ "nvidia/step-3.7-flash": {
35025
+ measuredAt: "2026-08-29T16:51:33Z",
35026
+ latencyMs: 4617.4,
35027
+ p95LatencyMs: 5237.4,
35028
+ outputTokensPerSecond: 112.92,
35029
+ errorRate: 0.3333,
35030
+ samples: 3
35031
+ },
35032
+ "openai/chat-latest": {
35033
+ measuredAt: "2026-08-29T16:51:33Z",
35034
+ latencyMs: 3690.9,
35035
+ p95LatencyMs: 4344,
35036
+ outputTokensPerSecond: 111.85,
34833
35037
  errorRate: 0,
34834
35038
  samples: 3
34835
35039
  },
34836
- "zai/glm-5.1": {
34837
- measuredAt: "2026-07-21T10:21:31Z",
34838
- latencyMs: 7775.4,
34839
- p95LatencyMs: 9182.1,
34840
- outputTokensPerSecond: 6.08,
35040
+ "openai/gpt-4.1": {
35041
+ measuredAt: "2026-08-29T16:51:33Z",
35042
+ latencyMs: 3527.9,
35043
+ p95LatencyMs: 3831.7,
35044
+ outputTokensPerSecond: 141.27,
35045
+ errorRate: 0,
35046
+ samples: 3
35047
+ },
35048
+ "openai/gpt-4.1-mini": {
35049
+ measuredAt: "2026-08-29T16:51:33Z",
35050
+ latencyMs: 4268.2,
35051
+ p95LatencyMs: 5101.5,
35052
+ outputTokensPerSecond: 103.42,
35053
+ errorRate: 0,
35054
+ samples: 3
35055
+ },
35056
+ "openai/gpt-4.1-nano": {
35057
+ measuredAt: "2026-08-29T16:51:33Z",
35058
+ latencyMs: 3088.3,
35059
+ p95LatencyMs: 3369.2,
35060
+ outputTokensPerSecond: 150.31,
35061
+ errorRate: 0,
35062
+ samples: 3
35063
+ },
35064
+ "openai/gpt-4o": {
35065
+ measuredAt: "2026-08-29T16:51:33Z",
35066
+ latencyMs: 2995.2,
35067
+ p95LatencyMs: 3174.2,
35068
+ outputTokensPerSecond: 171.32,
35069
+ errorRate: 0,
35070
+ samples: 3
35071
+ },
35072
+ "openai/gpt-4o-mini": {
35073
+ measuredAt: "2026-08-29T16:51:33Z",
35074
+ latencyMs: 4751.5,
35075
+ p95LatencyMs: 4930.4,
35076
+ outputTokensPerSecond: 107.84,
35077
+ errorRate: 0,
35078
+ samples: 3
35079
+ },
35080
+ "openai/gpt-5-mini": {
35081
+ measuredAt: "2026-08-29T16:51:33Z",
35082
+ latencyMs: 4558.1,
35083
+ p95LatencyMs: 5081.9,
35084
+ outputTokensPerSecond: 113.25,
35085
+ errorRate: 0,
35086
+ samples: 3
35087
+ },
35088
+ "openai/gpt-5.2": {
35089
+ measuredAt: "2026-08-29T16:51:33Z",
35090
+ latencyMs: 5436.6,
35091
+ p95LatencyMs: 5928.8,
35092
+ outputTokensPerSecond: 95.47,
35093
+ errorRate: 0,
35094
+ samples: 3
35095
+ },
35096
+ "openai/gpt-5.3-codex": {
35097
+ measuredAt: "2026-08-29T16:59:54Z",
35098
+ latencyMs: 15290.4,
35099
+ p95LatencyMs: 15290.4,
35100
+ outputTokensPerSecond: 33.49,
35101
+ errorRate: 0.6667,
35102
+ samples: 3
35103
+ },
35104
+ "openai/gpt-5.4": {
35105
+ measuredAt: "2026-08-29T16:51:33Z",
35106
+ latencyMs: 5596,
35107
+ p95LatencyMs: 5919.4,
35108
+ outputTokensPerSecond: 91.67,
35109
+ errorRate: 0,
35110
+ samples: 3
35111
+ },
35112
+ "openai/gpt-5.4-mini": {
35113
+ measuredAt: "2026-08-29T16:51:33Z",
35114
+ latencyMs: 3377.8,
35115
+ p95LatencyMs: 3646.8,
35116
+ outputTokensPerSecond: 138.08,
35117
+ errorRate: 0,
35118
+ samples: 3
35119
+ },
35120
+ "openai/gpt-5.4-nano": {
35121
+ measuredAt: "2026-08-29T16:51:33Z",
35122
+ latencyMs: 4040.4,
35123
+ p95LatencyMs: 4205.9,
35124
+ outputTokensPerSecond: 118.52,
35125
+ errorRate: 0,
35126
+ samples: 3
35127
+ },
35128
+ "openai/gpt-5.5": {
35129
+ measuredAt: "2026-08-29T16:51:33Z",
35130
+ latencyMs: 6367.8,
35131
+ p95LatencyMs: 7330.7,
35132
+ outputTokensPerSecond: 81.29,
35133
+ errorRate: 0,
35134
+ samples: 3
35135
+ },
35136
+ "openai/gpt-5.6-luna": {
35137
+ measuredAt: "2026-08-29T16:51:33Z",
35138
+ latencyMs: 6064.5,
35139
+ p95LatencyMs: 7347.3,
35140
+ outputTokensPerSecond: 87.93,
35141
+ errorRate: 0,
35142
+ samples: 3
35143
+ },
35144
+ "openai/gpt-5.6-luna-pro": {
35145
+ measuredAt: "2026-08-29T16:59:54Z",
35146
+ latencyMs: 13914.9,
35147
+ p95LatencyMs: 13914.9,
35148
+ outputTokensPerSecond: 36.79,
35149
+ errorRate: 0.6667,
35150
+ samples: 3
35151
+ },
35152
+ "openai/gpt-5.6-sol": {
35153
+ measuredAt: "2026-08-29T16:51:33Z",
35154
+ latencyMs: 7720.2,
35155
+ p95LatencyMs: 9108.2,
35156
+ outputTokensPerSecond: 67.47,
35157
+ errorRate: 0,
35158
+ samples: 3
35159
+ },
35160
+ "openai/gpt-5.6-sol-pro": {
35161
+ measuredAt: "2026-08-29T16:51:33Z",
35162
+ latencyMs: 11442.7,
35163
+ p95LatencyMs: 13363.1,
35164
+ outputTokensPerSecond: 148.75,
35165
+ errorRate: 0,
35166
+ samples: 3
35167
+ },
35168
+ "openai/gpt-5.6-terra": {
35169
+ measuredAt: "2026-08-29T16:51:33Z",
35170
+ latencyMs: 4941,
35171
+ p95LatencyMs: 5095.3,
35172
+ outputTokensPerSecond: 103.69,
35173
+ errorRate: 0,
35174
+ samples: 3
35175
+ },
35176
+ "openai/gpt-5.6-terra-pro": {
35177
+ measuredAt: "2026-08-29T16:51:33Z",
35178
+ latencyMs: 3574.1,
35179
+ p95LatencyMs: 4126.3,
35180
+ outputTokensPerSecond: 133.59,
35181
+ errorRate: 0,
35182
+ samples: 3
35183
+ },
35184
+ "openai/o1": {
35185
+ measuredAt: "2026-08-29T16:51:33Z",
35186
+ latencyMs: 4324.9,
35187
+ p95LatencyMs: 5838.1,
35188
+ outputTokensPerSecond: 125.86,
35189
+ errorRate: 0,
35190
+ samples: 3
35191
+ },
35192
+ "openai/o3": {
35193
+ measuredAt: "2026-08-29T16:51:33Z",
35194
+ latencyMs: 5463.4,
35195
+ p95LatencyMs: 5613.1,
35196
+ outputTokensPerSecond: 93.8,
35197
+ errorRate: 0,
35198
+ samples: 3
35199
+ },
35200
+ "openai/o3-mini": {
35201
+ measuredAt: "2026-08-29T16:51:33Z",
35202
+ latencyMs: 2912.7,
35203
+ p95LatencyMs: 3092.1,
35204
+ outputTokensPerSecond: 176.49,
35205
+ errorRate: 0,
35206
+ samples: 3
35207
+ },
35208
+ "openai/o4-mini": {
35209
+ measuredAt: "2026-08-29T16:51:33Z",
35210
+ latencyMs: 4958.7,
35211
+ p95LatencyMs: 5313,
35212
+ outputTokensPerSecond: 103.81,
35213
+ errorRate: 0,
35214
+ samples: 3
35215
+ },
35216
+ "qwen/qwen3.7-flash": {
35217
+ measuredAt: "2026-08-29T16:51:33Z",
35218
+ latencyMs: 3385.5,
35219
+ p95LatencyMs: 4042.7,
35220
+ outputTokensPerSecond: 153.94,
35221
+ errorRate: 0,
35222
+ samples: 3
35223
+ },
35224
+ "qwen/qwen3.7-max": {
35225
+ measuredAt: "2026-08-29T16:51:33Z",
35226
+ latencyMs: 9387.1,
35227
+ p95LatencyMs: 10490.2,
35228
+ outputTokensPerSecond: 54.92,
35229
+ errorRate: 0,
35230
+ samples: 3
35231
+ },
35232
+ "qwen/qwen3.7-plus": {
35233
+ measuredAt: "2026-08-29T16:51:33Z",
35234
+ latencyMs: 9766.6,
35235
+ p95LatencyMs: 9798.2,
35236
+ outputTokensPerSecond: 52.42,
35237
+ errorRate: 0,
35238
+ samples: 3
35239
+ },
35240
+ "tencent/hy3": {
35241
+ measuredAt: "2026-08-29T16:51:33Z",
35242
+ latencyMs: 6062.3,
35243
+ p95LatencyMs: 7070.2,
35244
+ outputTokensPerSecond: 87.3,
35245
+ errorRate: 0,
35246
+ samples: 3
35247
+ },
35248
+ "xai/grok-4.3": {
35249
+ measuredAt: "2026-08-29T16:51:33Z",
35250
+ latencyMs: 9467.7,
35251
+ p95LatencyMs: 10087.9,
35252
+ outputTokensPerSecond: 48.36,
35253
+ errorRate: 0,
35254
+ samples: 3
35255
+ },
35256
+ "xai/grok-4.5": {
35257
+ measuredAt: "2026-08-29T16:51:33Z",
35258
+ latencyMs: 13564.8,
35259
+ p95LatencyMs: 17351.9,
35260
+ outputTokensPerSecond: 60.71,
35261
+ errorRate: 0,
35262
+ samples: 3
35263
+ },
35264
+ "xai/grok-build-0.1": {
35265
+ measuredAt: "2026-08-29T16:51:33Z",
35266
+ latencyMs: 16394.8,
35267
+ p95LatencyMs: 18035.4,
35268
+ outputTokensPerSecond: 96.86,
35269
+ errorRate: 0,
35270
+ samples: 3
35271
+ },
35272
+ "xiaomi/mimo-v2.5-pro": {
35273
+ measuredAt: "2026-08-29T16:51:33Z",
35274
+ latencyMs: 12070.7,
35275
+ p95LatencyMs: 12386.8,
35276
+ outputTokensPerSecond: 42.44,
34841
35277
  errorRate: 0,
34842
35278
  samples: 3
34843
35279
  },
34844
35280
  "zai/glm-5": {
34845
- measuredAt: "2026-07-21T10:21:31Z",
34846
- latencyMs: 4159.4,
34847
- p95LatencyMs: 4992.7,
34848
- outputTokensPerSecond: 10.28,
35281
+ measuredAt: "2026-08-29T16:51:33Z",
35282
+ latencyMs: 6839.7,
35283
+ p95LatencyMs: 7261.4,
35284
+ outputTokensPerSecond: 75.16,
34849
35285
  errorRate: 0,
34850
35286
  samples: 3
34851
35287
  },
34852
- "free/qwen3-coder-480b": {
34853
- measuredAt: "2026-07-21T10:21:31Z",
34854
- latencyMs: 2063.9,
34855
- p95LatencyMs: 3646.3,
34856
- outputTokensPerSecond: 39.8,
35288
+ "zai/glm-5-turbo": {
35289
+ measuredAt: "2026-08-29T16:51:33Z",
35290
+ latencyMs: 55348.5,
35291
+ p95LatencyMs: 114086.6,
35292
+ outputTokensPerSecond: 14.64,
34857
35293
  errorRate: 0,
34858
35294
  samples: 3
34859
35295
  },
34860
- "free/mistral-large-3-675b": {
34861
- measuredAt: "2026-07-21T10:21:31Z",
34862
- latencyMs: 3147.5,
34863
- p95LatencyMs: 5555.3,
34864
- outputTokensPerSecond: 27.76,
35296
+ "zai/glm-5.1": {
35297
+ measuredAt: "2026-08-29T16:51:33Z",
35298
+ latencyMs: 15658.4,
35299
+ p95LatencyMs: 17307.1,
35300
+ outputTokensPerSecond: 32.9,
35301
+ errorRate: 0,
35302
+ samples: 3
35303
+ },
35304
+ "zai/glm-5.2": {
35305
+ measuredAt: "2026-08-29T16:51:33Z",
35306
+ latencyMs: 10308.5,
35307
+ p95LatencyMs: 15127.6,
35308
+ outputTokensPerSecond: 54.87,
34865
35309
  errorRate: 0,
34866
35310
  samples: 3
34867
35311
  },
34868
- "free/nemotron-3-nano-omni-30b-a3b-reasoning": {
34869
- measuredAt: "2026-07-21T10:21:31Z",
34870
- latencyMs: 6508.4,
34871
- p95LatencyMs: 14252.7,
34872
- outputTokensPerSecond: 68.26,
35312
+ "zai/glm-5.3": {
35313
+ measuredAt: "2026-08-29T16:51:33Z",
35314
+ latencyMs: 7272.4,
35315
+ p95LatencyMs: 7998.1,
35316
+ outputTokensPerSecond: 71.09,
34873
35317
  errorRate: 0,
34874
35318
  samples: 3
34875
35319
  },
34876
- "free/glm-4.7": {
34877
- measuredAt: "2026-07-21T10:21:31Z",
34878
- latencyMs: 2014.8,
34879
- p95LatencyMs: 3039.9,
34880
- outputTokensPerSecond: 39.92,
35320
+ "zai/glm-5.3-flash": {
35321
+ measuredAt: "2026-08-29T16:51:33Z",
35322
+ latencyMs: 10545.3,
35323
+ p95LatencyMs: 11672.4,
35324
+ outputTokensPerSecond: 49.01,
34881
35325
  errorRate: 0,
34882
35326
  samples: 3
34883
35327
  }
@@ -34891,11 +35335,6 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34891
35335
  latencyMs: 2305,
34892
35336
  outputTokensPerSecond: 140.6
34893
35337
  },
34894
- "anthropic/claude-opus-4.6": {
34895
- measuredAt: "2026-03-16T13:50:48Z",
34896
- latencyMs: 2139,
34897
- outputTokensPerSecond: 119.7
34898
- },
34899
35338
  "anthropic/claude-sonnet-4.6": {
34900
35339
  measuredAt: "2026-03-16T13:50:48Z",
34901
35340
  latencyMs: 2110,
@@ -34929,11 +35368,6 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34929
35368
  latencyMs: 1609,
34930
35369
  outputTokensPerSecond: 167.2
34931
35370
  },
34932
- "moonshot/kimi-k2.5": {
34933
- measuredAt: "2026-03-16T13:50:48Z",
34934
- latencyMs: 1646,
34935
- outputTokensPerSecond: 155.7
34936
- },
34937
35371
  "openai/gpt-4o-mini": {
34938
35372
  measuredAt: "2026-03-16T13:50:48Z",
34939
35373
  latencyMs: 2764,
@@ -34943,18 +35377,6 @@ ${value.slice(-(scanLimit - prefixLength))}`;
34943
35377
  measuredAt: "2026-03-16T13:50:48Z",
34944
35378
  latencyMs: 7935,
34945
35379
  outputTokensPerSecond: 32.3
34946
- },
34947
- "xai/grok-4-1-fast-non-reasoning": {
34948
- measuredAt: "2026-03-16T13:50:48Z",
34949
- latencyMs: 1244,
34950
- outputTokensPerSecond: 205.8,
34951
- intelligenceIndex: 41
34952
- },
34953
- "xai/grok-4-1-fast-reasoning": {
34954
- measuredAt: "2026-03-16T13:50:48Z",
34955
- latencyMs: 1454,
34956
- outputTokensPerSecond: 176.2,
34957
- intelligenceIndex: 41
34958
35380
  }
34959
35381
  });
34960
35382
  DEFAULT_PORTFOLIO_WEIGHTS = {
@@ -35111,7 +35533,7 @@ ${value.slice(-(scanLimit - prefixLength))}`;
35111
35533
  }
35112
35534
  };
35113
35535
  DEFAULT_ROUTING_CONFIG = {
35114
- version: "3.4",
35536
+ version: "3.5",
35115
35537
  strategy: "portfolio",
35116
35538
  portfolio: {
35117
35539
  auto: {
@@ -36165,95 +36587,129 @@ ${value.slice(-(scanLimit - prefixLength))}`;
36165
36587
  // Below this confidence → ambiguous (null tier)
36166
36588
  confidenceThreshold: 0.7
36167
36589
  },
36590
+ // ─── Tier chains ───
36591
+ //
36592
+ // Catalog refresh 2026-08-29 (V3.5). Every chain below names only models
36593
+ // the public catalog lists (GET https://blockrun.ai/api/v1/models). Ids the
36594
+ // gateway withholds (`hidden: true`) — kimi-k2.5/k2.6/k2.7, the grok-4-fast
36595
+ // and grok-4-1-fast pairs, grok-4-0709, claude-opus-4.6, gemini-3-pro-preview,
36596
+ // the whole `free/*` namespace — were removed everywhere, including fallback
36597
+ // rungs, so a routed model is always one a user can find on blockrun.ai/models.
36598
+ //
36599
+ // Primaries moved only where portfolio.ts already carries calibration
36600
+ // evidence for the successor (Sonnet 5 over Sonnet 4.6, GPT-5 Mini for
36601
+ // agentic MEDIUM, Gemini 3.5 Flash where Kimi K2.7 was). Newcomers with no
36602
+ // trajectory evidence yet (gemini-3.6-flash, glm-5.3, glm-5.3-flash,
36603
+ // gpt-5.6-luna, grok-4.3, minimax-m3, qwen3.7-plus) enter as fallback rungs;
36604
+ // promotion waits for a calibration run, because version recency is not a
36605
+ // quality signal.
36606
+ //
36607
+ // Latency figures in comments are the 2026-08-29 gateway probe
36608
+ // (model-profiles.generated.json); prices are the catalog list.
36168
36609
  // Auto (balanced) tier configs - current default smart routing
36169
- // Benchmark-tuned 2026-03-16: balancing quality (retention) + latency
36170
36610
  tiers: {
36171
36611
  SIMPLE: {
36172
36612
  primary: "google/gemini-2.5-flash",
36173
- // 1,238ms, IQ 20, 60% retention (best) — fast AND quality
36613
+ // $0.30/$2.50 — 60% retention (best) in the 2026-03 run; still the fastest quality answer
36174
36614
  fallback: [
36175
36615
  "google/gemini-3-flash-preview",
36176
- // 1,398ms, IQ 46 — smarter fallback
36616
+ // $0.50/$3 — GPQA 5/6 in the 2026-07 calibration
36617
+ "google/gemini-3.5-flash-lite",
36618
+ // $0.30/$2.50, 1M ctx, thinking mode — same price as 2.5 Flash, newer generation
36177
36619
  "deepseek/deepseek-chat",
36178
- // V4 Flash chat ($0.20/$0.40, 1M ctx) — repriced 2026-04-24
36179
- "moonshot/kimi-k2.5",
36180
- // 1,646ms, IQ 47, strong quality
36620
+ // $0.14/$0.28, 1M ctx
36181
36621
  "google/gemini-3.1-flash-lite",
36182
- // $0.25/$1.50, 1M context — newest flash-lite
36183
- "google/gemini-2.5-flash-lite",
36184
- // 1,353ms, $0.10/$0.40
36622
+ // $0.25/$1.50, 1M ctx
36623
+ "openai/gpt-5.6-luna",
36624
+ // $0.20/$1.20, 1M ctx — GPT-5.6 cost tier (cut 2026-07-30)
36185
36625
  "openai/gpt-5.4-nano",
36186
- // $0.20/$1.25, 1M context
36187
- "xai/grok-4-fast-non-reasoning",
36188
- // 1,143ms, $0.20/$0.50 — fast fallback
36626
+ // $0.20/$1.25, 1M ctx
36627
+ "google/gemini-2.5-flash-lite",
36628
+ // $0.10/$0.40
36189
36629
  "nvidia/step-3.7-flash"
36190
- // FREE backstop — new NVIDIA free tier (gpt-oss-120b now 400s; probed 2026-08-21)
36630
+ // FREE backstop — NVIDIA free tier (probed 2026-08-21)
36191
36631
  ]
36192
36632
  },
36193
36633
  MEDIUM: {
36194
- primary: "moonshot/kimi-k2.7",
36195
- // $0.95/$4.00, 256K ctx, multi-modal + reasoning — Moonshot flagship; promoted from K2.6 (2026-06-14) after BlockRun added K2.7 + hid K2.6. Same price as K2.6.
36634
+ // Was moonshot/kimi-k2.7 (hidden 2026-08). Gemini 3.5 Flash is the
36635
+ // calibrated successor: MGSM 5/5, GPQA 4/6, extraction band (portfolio.ts).
36636
+ primary: "google/gemini-3.5-flash",
36637
+ // $1.50/$9, 1M ctx, vision + tools
36196
36638
  fallback: [
36197
- "moonshot/kimi-k2.6",
36198
- // identical-cost in-family hot swap (K2.6 still routable)
36199
- "moonshot/kimi-k2.5",
36200
- // $0.60/$3.00 — graceful-degradation backstop
36639
+ "google/gemini-3.6-flash",
36640
+ // $1.50/$7.50 — newest Flash, output 17% cheaper than 3.5; awaiting calibration
36641
+ "zai/glm-5.3-flash",
36642
+ // $0.15/$0.50, 1M ctx, vision + tools verified live 2026-08-27
36643
+ "openai/gpt-5.6-terra",
36644
+ // $2/$12, 1M ctx — GPT-5.6 balanced tier
36201
36645
  "google/gemini-3-flash-preview",
36202
- // 1,398ms, IQ 46 — nearly same IQ, faster + cheaper
36646
+ // $0.50/$3
36203
36647
  "deepseek/deepseek-chat",
36204
- // 1,431ms, IQ 32, 41% retention
36648
+ // $0.14/$0.28
36205
36649
  "google/gemini-2.5-flash",
36206
- // 1,238ms, 60% retention
36650
+ // $0.30/$2.50
36651
+ "minimax/minimax-m3",
36652
+ // $0.30/$1.20, 1M ctx
36207
36653
  "google/gemini-3.1-flash-lite",
36208
- // $0.25/$1.50, 1M context
36209
- "google/gemini-2.5-flash-lite",
36210
- // 1,353ms, $0.10/$0.40
36211
- "xai/grok-4-1-fast-non-reasoning",
36212
- // 1,244ms, fast fallback
36213
- "xai/grok-3-mini"
36214
- // 1,202ms, $0.30/$0.50
36654
+ // $0.25/$1.50
36655
+ "openai/gpt-5.6-luna",
36656
+ // $0.20/$1.20
36657
+ "google/gemini-2.5-flash-lite"
36658
+ // $0.10/$0.40
36215
36659
  ]
36216
36660
  },
36217
36661
  COMPLEX: {
36218
36662
  primary: "google/gemini-3.1-pro",
36219
- // 1,609ms, IQ 57 — fast flagship quality
36663
+ // $2/$12 — proven long-context flagship (portfolio.ts long_context lead)
36220
36664
  fallback: [
36221
- "google/gemini-3-flash-preview",
36222
- // 1,398ms, IQ 46 — fast + smart
36223
- "xai/grok-4-0709",
36224
- // 1,348ms, IQ 41
36225
- "google/gemini-2.5-pro",
36226
- // 1,294ms
36665
+ "google/gemini-3.6-flash",
36666
+ // $1.50/$7.50 — Pro-level quality at Flash price (Google's claim; uncalibrated here)
36667
+ "google/gemini-3.5-flash",
36668
+ // $1.50/$9 — calibrated
36227
36669
  "anthropic/claude-sonnet-5",
36228
- // near-Opus quality at Sonnet cost, 1M ctx
36670
+ // $3/$15 — near-Opus quality, tau2 + Terminal-Bench calibrated
36671
+ "xai/grok-4.5",
36672
+ // $2.50/$9 — 503-resistant, independent infra (was grok-4-0709, now hidden)
36673
+ "google/gemini-2.5-pro",
36674
+ // $1.25/$10
36229
36675
  "anthropic/claude-sonnet-4.6",
36230
- // 2,110ms, IQ 52 — quality fallback
36231
- "deepseek/deepseek-chat",
36232
- // 1,431ms, IQ 32
36233
- "google/gemini-2.5-flash",
36234
- // 1,238ms, IQ 20 — cheap last resort
36676
+ // $3/$15
36235
36677
  "openai/gpt-5.6-terra",
36236
- // GPT-5.6 balanced tier — newest generation, stable (Sol excluded: #202)
36678
+ // $2/$12 — GPT-5.6 balanced tier (Sol excluded: #202)
36237
36679
  "openai/gpt-5.5",
36238
- // Prior OpenAI flagship — 1M+ ctx, native agent + computer use; benchmark TBD
36239
- "openai/gpt-5.4"
36240
- // 6,213ms, IQ 57 — previous flagship, benchmarked
36680
+ // $5/$30 — prior OpenAI flagship
36681
+ "openai/gpt-5.4",
36682
+ // $2.50/$15 — previous flagship, benchmarked
36683
+ "zai/glm-5.3",
36684
+ // $1.40/$4.40, 1M ctx, always-on thinking — verified live 2026-08-19
36685
+ "moonshot/kimi-k3",
36686
+ // $3/$15, 1M ctx — Moonshot flagship (K2.7 successor)
36687
+ "deepseek/deepseek-v4-pro",
36688
+ // $0.435/$0.87 — strongest open-weight reasoner
36689
+ "deepseek/deepseek-chat",
36690
+ // $0.14/$0.28 — cheap last resort
36691
+ "google/gemini-2.5-flash"
36692
+ // $0.30/$2.50
36241
36693
  ]
36242
36694
  },
36243
36695
  REASONING: {
36244
- primary: "xai/grok-4-1-fast-reasoning",
36245
- // 1,454ms, $0.20/$0.50
36696
+ // Was xai/grok-4-1-fast-reasoning ($0.20/$0.50, hidden 2026-08). DeepSeek
36697
+ // Reasoner is the cheapest listed reasoner at the same 1M context.
36698
+ primary: "deepseek/deepseek-reasoner",
36699
+ // $0.14/$0.28, 1M ctx
36246
36700
  fallback: [
36247
- "xai/grok-4-fast-reasoning",
36248
- // 1,298ms, $0.20/$0.50
36249
- "deepseek/deepseek-reasoner",
36250
- // V4 Flash thinking ($0.20/$0.40, 1M ctx)
36251
36701
  "deepseek/deepseek-v4-pro",
36252
- // V4 Pro flagship ($0.50/$1.00 promo through 2026-05-31, list $2/$4) — strongest open-weight reasoner
36702
+ // $0.435/$0.87 — calibrated reasoning band 0.95
36703
+ "xai/grok-4.3",
36704
+ // $1.50/$4, 1M ctx — xAI reasoning model, vision
36705
+ "qwen/qwen3.7-plus",
36706
+ // $0.32/$1.28, 1M ctx — reasoning; needs a generous max_tokens (thinking is billed)
36707
+ "google/gemini-3.5-flash",
36708
+ // $1.50/$9 — MGSM 5/5
36253
36709
  "openai/o4-mini",
36254
- // 2,328ms ($1.10/$4.40)
36710
+ // $1.10/$4.40
36255
36711
  "openai/o3"
36256
- // 2,862ms
36712
+ // $2/$8
36257
36713
  ]
36258
36714
  }
36259
36715
  },
@@ -36261,90 +36717,119 @@ ${value.slice(-(scanLimit - prefixLength))}`;
36261
36717
  ecoTiers: {
36262
36718
  SIMPLE: {
36263
36719
  primary: "nvidia/step-3.7-flash",
36264
- // FREE! $0.00/$0.00 — new NVIDIA free tier flagship
36720
+ // FREE — NVIDIA free tier flagship
36265
36721
  fallback: [
36266
36722
  "nvidia/nemotron-nano-9b-v2",
36267
- // FREE — compact + fast (~0.7s), high-volume light tasks
36268
- // This head keeps rotting with NVIDIA's free hosting: deepseek-v4-flash
36269
- // (410, 2026-08-12), seed-oss-36b (410, 2026-08-03), then gpt-oss-120b/20b
36270
- // (400 Unknown model, probed 2026-08-21). Each retirement retargets the
36271
- // two free rungs to the current free tier; the paid rungs below never move.
36272
- "google/gemini-3.1-flash-lite",
36273
- // $0.25/$1.50 — newest flash-lite
36274
- "openai/gpt-5.4-nano",
36275
- // $0.20/$1.25 — fast nano
36723
+ // FREE — compact + fast, high-volume light tasks
36724
+ // The free head keeps rotting with NVIDIA's hosting (deepseek-v4-flash
36725
+ // 410 2026-08-12, seed-oss-36b 410 2026-08-03, gpt-oss-120b/20b 400
36726
+ // 2026-08-21). Each retirement retargets the two free rungs to the
36727
+ // current free tier; the paid rungs below never move.
36276
36728
  "google/gemini-2.5-flash-lite",
36277
- // $0.10/$0.40
36278
- "xai/grok-4-fast-non-reasoning"
36279
- // $0.20/$0.50
36729
+ // $0.10/$0.40 — cheapest paid rung
36730
+ "zai/glm-5.3-flash",
36731
+ // $0.15/$0.50, 1M ctx, vision + tools
36732
+ "openai/gpt-5.6-luna",
36733
+ // $0.20/$1.20, 1M ctx
36734
+ "openai/gpt-5.4-nano",
36735
+ // $0.20/$1.25
36736
+ "google/gemini-3.1-flash-lite"
36737
+ // $0.25/$1.50
36280
36738
  ]
36281
36739
  },
36282
36740
  MEDIUM: {
36283
- primary: "google/gemini-3.1-flash-lite",
36284
- // $0.25/$1.50 — newest flash-lite
36741
+ primary: "zai/glm-5.3-flash",
36742
+ // $0.15/$0.50, 1M ctx, vision + tools verified live — cheapest full-capability model
36285
36743
  fallback: [
36744
+ "deepseek/deepseek-chat",
36745
+ // $0.14/$0.28
36746
+ "google/gemini-3.1-flash-lite",
36747
+ // $0.25/$1.50
36748
+ "openai/gpt-5.6-luna",
36749
+ // $0.20/$1.20
36286
36750
  "openai/gpt-5.4-nano",
36287
36751
  // $0.20/$1.25
36288
36752
  "google/gemini-2.5-flash-lite",
36289
36753
  // $0.10/$0.40
36290
- "xai/grok-4-fast-non-reasoning",
36291
36754
  "google/gemini-2.5-flash"
36755
+ // $0.30/$2.50
36292
36756
  ]
36293
36757
  },
36294
36758
  COMPLEX: {
36295
- primary: "google/gemini-3.1-flash-lite",
36296
- // $0.25/$1.50
36759
+ primary: "zai/glm-5.3-flash",
36760
+ // $0.15/$0.50, 1M ctx
36297
36761
  fallback: [
36298
- "google/gemini-2.5-flash-lite",
36299
- "xai/grok-4-0709",
36300
- "google/gemini-2.5-flash",
36301
- "deepseek/deepseek-chat"
36762
+ "deepseek/deepseek-chat",
36763
+ // $0.14/$0.28, 1M ctx
36764
+ "minimax/minimax-m3",
36765
+ // $0.30/$1.20, 1M ctx
36766
+ "deepseek/deepseek-v4-pro",
36767
+ // $0.435/$0.87
36768
+ "google/gemini-3.1-flash-lite",
36769
+ // $0.25/$1.50
36770
+ "google/gemini-2.5-flash"
36771
+ // $0.30/$2.50
36302
36772
  ]
36303
36773
  },
36304
36774
  REASONING: {
36305
- primary: "xai/grok-4-1-fast-reasoning",
36306
- // $0.20/$0.50
36775
+ primary: "deepseek/deepseek-reasoner",
36776
+ // $0.14/$0.28, 1M ctx — cheapest listed reasoner
36307
36777
  fallback: [
36308
- "xai/grok-4-fast-reasoning",
36309
- "deepseek/deepseek-reasoner",
36310
- // V4 Flash thinking — $0.20/$0.40
36311
- "deepseek/deepseek-v4-pro"
36312
- // V4 Pro flagship — $0.50/$1.00 promo, post-promo $2/$4
36778
+ "deepseek/deepseek-v4-pro",
36779
+ // $0.435/$0.87
36780
+ "qwen/qwen3.7-plus",
36781
+ // $0.32/$1.28 — reasoning
36782
+ "minimax/minimax-m3",
36783
+ // $0.30/$1.20 — reasoning + coding
36784
+ "zai/glm-5.3-flash"
36785
+ // $0.15/$0.50 — reasoning tokens alongside content
36313
36786
  ]
36314
36787
  }
36315
36788
  },
36316
36789
  // Premium tier configs - best quality (blockrun/premium)
36317
- // codex=complex coding, kimi=simple coding, sonnet=reasoning/instructions, opus=architecture/PM/audits
36790
+ // codex=complex coding, flash=simple coding, sonnet=reasoning/instructions, fable/opus=architecture/PM/audits
36318
36791
  premiumTiers: {
36319
36792
  SIMPLE: {
36320
- primary: "moonshot/kimi-k2.7",
36321
- // $0.95/$4.00 - Moonshot flagship (256K ctx, multi-modal + reasoning); promoted from K2.6 (2026-06-14), same price
36793
+ // Was moonshot/kimi-k2.7 (hidden 2026-08).
36794
+ primary: "google/gemini-3.5-flash",
36795
+ // $1.50/$9, 1M ctx, vision + tools — calibrated
36322
36796
  fallback: [
36323
- "moonshot/kimi-k2.6",
36324
- // identical-cost in-family hot swap (K2.6 still routable)
36325
- "moonshot/kimi-k2.5",
36326
- // $0.60/$3.00 - proven reliable backstop when Moonshot direct API falters
36327
- "google/gemini-2.5-flash",
36328
- // 60% retention, fast growth
36797
+ "google/gemini-3.6-flash",
36798
+ // $1.50/$7.50 — newest Flash
36329
36799
  "anthropic/claude-haiku-4.5",
36330
- "google/gemini-2.5-flash-lite",
36800
+ // $1/$5
36801
+ "zai/glm-5.3",
36802
+ // $1.40/$4.40, 1M ctx
36803
+ "google/gemini-2.5-flash",
36804
+ // $0.30/$2.50
36805
+ "google/gemini-3.5-flash-lite",
36806
+ // $0.30/$2.50
36331
36807
  "deepseek/deepseek-chat"
36808
+ // $0.14/$0.28
36332
36809
  ]
36333
36810
  },
36334
36811
  MEDIUM: {
36335
36812
  primary: "openai/gpt-5.3-codex",
36336
- // $1.75/$14 - 400K context, 128K output, replaces 5.2
36813
+ // $1.75/$14 - 400K context, 128K output — code_edit/debug lead (portfolio.ts)
36337
36814
  fallback: [
36338
- "moonshot/kimi-k2.7",
36339
- // Moonshot flagship
36340
- "moonshot/kimi-k2.6",
36341
- "moonshot/kimi-k2.5",
36342
- "google/gemini-2.5-flash",
36343
- // 60% retention, good coding capability
36344
- "google/gemini-2.5-pro",
36345
- "xai/grok-4-0709",
36346
36815
  "anthropic/claude-sonnet-5",
36347
- "anthropic/claude-sonnet-4.6"
36816
+ // $3/$15 — code_agent band 0.98
36817
+ "moonshot/kimi-k3",
36818
+ // $3/$15, 1M ctx — Moonshot flagship
36819
+ "zai/glm-5.3",
36820
+ // $1.40/$4.40 — long-horizon coding
36821
+ "google/gemini-3.6-flash",
36822
+ // $1.50/$7.50
36823
+ "google/gemini-3.5-flash",
36824
+ // $1.50/$9
36825
+ "google/gemini-2.5-pro",
36826
+ // $1.25/$10
36827
+ "xai/grok-4.5",
36828
+ // $2.50/$9
36829
+ "anthropic/claude-sonnet-4.6",
36830
+ // $3/$15
36831
+ "openai/gpt-5.6-terra"
36832
+ // $2/$12
36348
36833
  ]
36349
36834
  },
36350
36835
  COMPLEX: {
@@ -36354,8 +36839,8 @@ ${value.slice(-(scanLimit - prefixLength))}`;
36354
36839
  // Best quality for complex tasks — Mythos-class flagship above Opus ($10/$50, 1M ctx, always-on thinking)
36355
36840
  // Fallback chain de-Gemini'd 2026-04-22: when Anthropic 503s, Gemini is
36356
36841
  // also prone to "high demand" 503s (correlated failure — everyone falls
36357
- // back to Google at the same time). Prefer xAI Grok → Moonshot → OpenAI
36358
- // flagship → DeepSeek → NVIDIA free instead.
36842
+ // back to Google at the same time). Prefer in-family → xAI → Moonshot →
36843
+ // OpenAI flagship → Z.AI → DeepSeek → NVIDIA free instead.
36359
36844
  fallback: [
36360
36845
  "anthropic/claude-opus-5",
36361
36846
  // in-family hot swap first (half the price, 1M ctx + adaptive thinking)
@@ -36363,52 +36848,54 @@ ${value.slice(-(scanLimit - prefixLength))}`;
36363
36848
  // in-family hot swap (identical cost to 5)
36364
36849
  "anthropic/claude-opus-4.7",
36365
36850
  // in-family hot swap (identical cost to 4.8)
36366
- "anthropic/claude-opus-4.6",
36367
- // in-family hot swap
36368
36851
  "anthropic/claude-sonnet-5",
36369
36852
  // Sonnet-tier drop-down, near-Opus quality
36370
36853
  "anthropic/claude-sonnet-4.6",
36371
36854
  "xai/grok-4.5",
36372
- // xAI flagship — 503-resistant, direct-xAI SKU (added 2026-07-14)
36373
- "xai/grok-4-0709",
36374
- // 503-resistant flagship
36375
- "moonshot/kimi-k2.7",
36855
+ // xAI flagship — 503-resistant, direct-xAI SKU
36856
+ "moonshot/kimi-k3",
36376
36857
  // Moonshot flagship, independent infra
36377
- "moonshot/kimi-k2.6",
36378
- "moonshot/kimi-k2.5",
36379
36858
  "openai/gpt-5.6-terra",
36380
- // GPT-5.6 balanced tier — newest generation, stable (Sol excluded: #202)
36859
+ // GPT-5.6 balanced tier — stable (Sol excluded: #202)
36381
36860
  "openai/gpt-5.5",
36382
36861
  // Prior OpenAI flagship — 1M+ ctx, native agent + computer use
36383
36862
  "openai/gpt-5.4",
36384
36863
  // Previous flagship (slow but stable, benchmarked at 6,213ms)
36385
36864
  "openai/gpt-5.3-codex",
36865
+ "zai/glm-5.3",
36866
+ // Z.AI flagship, 1M ctx
36867
+ "deepseek/deepseek-v4-pro",
36868
+ // strongest open-weight reasoner
36386
36869
  "deepseek/deepseek-chat",
36387
36870
  // Cheap, reliable
36388
36871
  "nvidia/step-3.7-flash"
36389
- // NVIDIA free ultimate backstop (was gpt-oss-120b; 400s since ~2026-08)
36872
+ // NVIDIA free ultimate backstop
36390
36873
  ]
36391
36874
  },
36392
36875
  REASONING: {
36393
- primary: "anthropic/claude-sonnet-4.6",
36394
- // 2,110ms, $3/$15 - best for reasoning/instructions
36876
+ // Sonnet 5 promoted over Sonnet 4.6 (same price; reasoning band 0.98 for both,
36877
+ // plus Sonnet 5's tau2/BrowseComp trajectory evidence).
36878
+ primary: "anthropic/claude-sonnet-5",
36879
+ // $3/$15, 1M ctx, adaptive thinking
36395
36880
  fallback: [
36396
- "anthropic/claude-sonnet-5",
36397
- // in-family hot swap — same cost, adaptive thinking, 1M ctx
36881
+ "anthropic/claude-sonnet-4.6",
36882
+ // in-family hot swap — same cost
36398
36883
  "anthropic/claude-opus-5",
36399
36884
  // Newest flagship Opus w/ adaptive thinking
36400
36885
  "anthropic/claude-opus-4.8",
36401
36886
  // Prior flagship Opus — identical cost to 5
36402
36887
  "anthropic/claude-opus-4.7",
36403
36888
  // Flagship Opus w/ adaptive thinking
36404
- "anthropic/claude-opus-4.6",
36405
- // 2,139ms
36406
- "xai/grok-4-1-fast-reasoning",
36407
- // 1,454ms, cheap fast reasoning
36889
+ "xai/grok-4.5",
36890
+ // reasoning band 0.94
36891
+ "deepseek/deepseek-v4-pro",
36892
+ // reasoning band 0.95
36893
+ "xai/grok-4.3",
36894
+ // $1.50/$4 — xAI reasoning model
36408
36895
  "openai/o4-mini",
36409
- // 2,328ms ($1.10/$4.40)
36896
+ // $1.10/$4.40
36410
36897
  "openai/o3"
36411
- // 2,862ms
36898
+ // $2/$8
36412
36899
  ]
36413
36900
  }
36414
36901
  },
@@ -36418,101 +36905,102 @@ ${value.slice(-(scanLimit - prefixLength))}`;
36418
36905
  primary: "openai/gpt-4o-mini",
36419
36906
  // $0.15/$0.60 - best tool compliance at lowest cost
36420
36907
  fallback: [
36421
- "moonshot/kimi-k2.5",
36422
- // 1,646ms, strong tool use quality
36908
+ "openai/gpt-5.6-luna",
36909
+ // $0.20/$1.20 — lightweight agentic tier of GPT-5.6
36910
+ "zai/glm-5.3-flash",
36911
+ // $0.15/$0.50 — tool calls verified live 2026-08-27
36423
36912
  "anthropic/claude-haiku-4.5",
36424
- // 2,305ms
36425
- "xai/grok-4-1-fast-non-reasoning"
36426
- // 1,244ms, fast fallback
36913
+ // $1/$5
36914
+ "google/gemini-2.5-flash"
36915
+ // $0.30/$2.50
36427
36916
  ]
36428
36917
  },
36429
36918
  MEDIUM: {
36430
- primary: "moonshot/kimi-k2.7",
36431
- // $0.95/$4.00 — Moonshot flagship, strong tool use; promoted from K2.6 (2026-06-14) after BlockRun added K2.7 + hid K2.6. Same price.
36919
+ // Was moonshot/kimi-k2.7 (hidden 2026-08). GPT-5 Mini carries the
36920
+ // Terminal-Bench and tau2 trajectory evidence in portfolio.ts.
36921
+ primary: "openai/gpt-5-mini",
36922
+ // $0.25/$2 — 4/7 Terminal-Bench, 5/6 tau2 airline
36432
36923
  fallback: [
36433
- "moonshot/kimi-k2.6",
36434
- // identical-cost in-family hot swap (K2.6 still routable)
36435
- "moonshot/kimi-k2.5",
36436
- // $0.60/$3.00 — graceful-degradation backstop
36437
- "xai/grok-4-1-fast-non-reasoning",
36438
- // 1,244ms, fast fallback
36924
+ "google/gemini-3.5-flash",
36925
+ // $1.50/$9 — tool_agent band 0.88
36926
+ "zai/glm-5.3-flash",
36927
+ // $0.15/$0.50 — tools verified
36928
+ "openai/gpt-5.6-terra",
36929
+ // $2/$12
36439
36930
  "openai/gpt-4o-mini",
36440
- // 2,764ms, reliable tool calling
36931
+ // $0.15/$0.60 — reliable tool calling
36441
36932
  "anthropic/claude-haiku-4.5",
36442
- // 2,305ms
36443
- "deepseek/deepseek-chat"
36444
- // 1,431ms
36933
+ // $1/$5
36934
+ "deepseek/deepseek-chat",
36935
+ // $0.14/$0.28
36936
+ "moonshot/kimi-k3"
36937
+ // $3/$15 — tool_agent band 0.85
36445
36938
  ]
36446
36939
  },
36447
36940
  COMPLEX: {
36448
- primary: "anthropic/claude-sonnet-4.6",
36449
- // 2,110ms — best agentic quality
36941
+ // Sonnet 5 promoted over Sonnet 4.6: tau2 airline + retail reward 1.0,
36942
+ // Terminal-Bench safety band lead (portfolio.ts).
36943
+ primary: "anthropic/claude-sonnet-5",
36944
+ // $3/$15 — best agentic quality per trajectory evidence
36450
36945
  // Fallback chain de-Gemini'd 2026-04-22: Gemini's "high demand" 503s
36451
36946
  // correlate with Anthropic outages (everyone falls back together).
36452
36947
  // Prefer 503-resistant providers first.
36453
36948
  fallback: [
36454
- "anthropic/claude-sonnet-5",
36455
- // in-family hot swap — same cost, near-Opus agentic quality
36949
+ "anthropic/claude-sonnet-4.6",
36950
+ // in-family hot swap — same cost
36456
36951
  "anthropic/claude-opus-5",
36457
36952
  // Newest flagship Opus — in-family hot swap
36458
36953
  "anthropic/claude-opus-4.8",
36459
36954
  // Prior flagship Opus — identical cost to 5
36460
36955
  "anthropic/claude-opus-4.7",
36461
36956
  // Flagship Opus — in-family hot swap
36462
- "anthropic/claude-opus-4.6",
36463
- // 2,139ms
36464
- "xai/grok-4-0709",
36465
- // 1,348ms — strong tool use, independent infra
36466
- "moonshot/kimi-k2.7",
36467
- // Moonshot flagship — strong tool use, independent infra
36468
- "moonshot/kimi-k2.5",
36469
- // cost-stability backstop
36957
+ "xai/grok-4.5",
36958
+ // xAI flagship — strong tool use, independent infra
36959
+ "moonshot/kimi-k3",
36960
+ // Moonshot flagship — independent infra
36470
36961
  "openai/gpt-5.6-terra",
36471
- // GPT-5.6 balanced tier — newest generation, stable (Sol excluded: #202)
36962
+ // GPT-5.6 balanced tier — stable (Sol excluded: #202)
36472
36963
  "openai/gpt-5.5",
36473
36964
  // Prior flagship — native agent + computer use (exactly the agentic-tier use case)
36474
36965
  "openai/gpt-5.4",
36475
- // Previous flagship — 6,213ms, reliable
36966
+ // Previous flagship — reliable
36967
+ "openai/gpt-5.3-codex",
36968
+ // code_agent lead
36969
+ "zai/glm-5.3",
36970
+ // long-horizon coding
36971
+ "deepseek/deepseek-v4-pro",
36972
+ // retail high-risk 3/3
36476
36973
  "deepseek/deepseek-chat",
36477
- // 1,431ms — cheap, reliable
36974
+ // cheap, reliable
36478
36975
  "nvidia/step-3.7-flash"
36479
- // NVIDIA free ultimate backstop (was gpt-oss-120b; 400s since ~2026-08)
36976
+ // NVIDIA free ultimate backstop
36480
36977
  ]
36481
36978
  },
36482
36979
  REASONING: {
36483
- primary: "anthropic/claude-sonnet-4.6",
36484
- // 2,110ms — strong tool use + reasoning
36980
+ primary: "anthropic/claude-sonnet-5",
36981
+ // $3/$15 — strong tool use + adaptive thinking
36485
36982
  fallback: [
36486
- "anthropic/claude-sonnet-5",
36487
- // in-family hot swap — same cost, adaptive thinking
36983
+ "anthropic/claude-sonnet-4.6",
36984
+ // in-family hot swap — same cost
36488
36985
  "anthropic/claude-opus-5",
36489
36986
  // Newest flagship Opus w/ adaptive thinking
36490
36987
  "anthropic/claude-opus-4.8",
36491
36988
  // Prior flagship Opus — identical cost to 5
36492
36989
  "anthropic/claude-opus-4.7",
36493
36990
  // Flagship Opus w/ adaptive thinking
36494
- "anthropic/claude-opus-4.6",
36495
- // 2,139ms
36496
- "xai/grok-4-1-fast-reasoning",
36497
- // 1,454ms
36991
+ "xai/grok-4.5",
36992
+ // reasoning band 0.94
36993
+ "deepseek/deepseek-v4-pro",
36994
+ // reasoning band 0.95
36498
36995
  "deepseek/deepseek-reasoner"
36499
- // 1,454ms
36996
+ // $0.14/$0.28
36500
36997
  ]
36501
36998
  }
36502
36999
  },
36503
- // Time-windowed promotions — auto-applied when active, ignored when expired
36504
- promotions: [
36505
- {
36506
- name: "GLM-5.1 Launch Promo ($0.001 flat)",
36507
- startDate: "2026-04-01",
36508
- endDate: "2026-05-01",
36509
- tierOverrides: {
36510
- SIMPLE: { primary: "zai/glm-5.1" }
36511
- },
36512
- profiles: ["auto"]
36513
- // only auto profile — eco stays free, premium stays premium
36514
- }
36515
- ],
37000
+ // Time-windowed promotions — auto-applied when active, ignored when expired.
37001
+ // The GLM-5.1 launch promo (2026-04-01 → 2026-05-01) was the last entry and
37002
+ // has expired; the list is kept empty so the mechanism stays wired.
37003
+ promotions: [],
36516
37004
  overrides: {
36517
37005
  maxTokensForceComplex: 1e5,
36518
37006
  structuredOutputMinTier: "MEDIUM",
@@ -89109,6 +89597,15 @@ function debrandSystemMessages(messages, resolvedModel) {
89109
89597
  });
89110
89598
  return hasChanges ? result : messages;
89111
89599
  }
89600
+ function isToolResultMessage(msg) {
89601
+ if (msg.role === "tool") return true;
89602
+ if (Array.isArray(msg.content)) {
89603
+ return msg.content.some(
89604
+ (b) => b && typeof b === "object" && b.type === "tool_result"
89605
+ );
89606
+ }
89607
+ return false;
89608
+ }
89112
89609
  function truncateMessages(messages) {
89113
89610
  if (!messages || messages.length <= MAX_MESSAGES) {
89114
89611
  return {
@@ -89121,7 +89618,11 @@ function truncateMessages(messages) {
89121
89618
  const systemMsgs = messages.filter((m) => m.role === "system");
89122
89619
  const conversationMsgs = messages.filter((m) => m.role !== "system");
89123
89620
  const maxConversation = MAX_MESSAGES - systemMsgs.length;
89124
- const truncatedConversation = conversationMsgs.slice(-maxConversation);
89621
+ let start = Math.max(0, conversationMsgs.length - maxConversation);
89622
+ while (start < conversationMsgs.length && isToolResultMessage(conversationMsgs[start])) {
89623
+ start++;
89624
+ }
89625
+ const truncatedConversation = conversationMsgs.slice(start);
89125
89626
  const result = [...systemMsgs, ...truncatedConversation];
89126
89627
  console.log(
89127
89628
  `[ClawRouter] Truncated messages: ${messages.length} \u2192 ${result.length} (kept ${systemMsgs.length} system + ${truncatedConversation.length} recent)`
@@ -89984,6 +90485,10 @@ async function startProxy(options) {
89984
90485
  }
89985
90486
  if (req.url === "/v1/images/image2image" && req.method === "POST") {
89986
90487
  const img2imgStartTime = Date.now();
90488
+ const clientAbort = new AbortController();
90489
+ res.on("close", () => {
90490
+ if (!res.writableEnded) clientAbort.abort();
90491
+ });
89987
90492
  const chunks = [];
89988
90493
  for await (const chunk of req) {
89989
90494
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
@@ -89999,7 +90504,7 @@ async function startProxy(options) {
89999
90504
  if (typeof val !== "string" || !val) continue;
90000
90505
  if (val.startsWith("data:")) {
90001
90506
  } else if (val.startsWith("https://") || val.startsWith("http://")) {
90002
- const imgResp = await fetch(val);
90507
+ const imgResp = await fetch(val, { signal: clientAbort.signal });
90003
90508
  if (!imgResp.ok)
90004
90509
  throw new Error(`Failed to download ${field} from ${val}: HTTP ${imgResp.status}`);
90005
90510
  const contentType = imgResp.headers.get("content-type") ?? "image/png";
@@ -90027,7 +90532,8 @@ async function startProxy(options) {
90027
90532
  const upstream = await payFetch(`${apiBase}/v1/images/image2image`, {
90028
90533
  method: "POST",
90029
90534
  headers: { "content-type": "application/json", "user-agent": USER_AGENT },
90030
- body: reqBody
90535
+ body: reqBody,
90536
+ signal: clientAbort.signal
90031
90537
  });
90032
90538
  const text = await upstream.text();
90033
90539
  if (!upstream.ok) {
@@ -90089,6 +90595,7 @@ async function startProxy(options) {
90089
90595
  res.writeHead(200, { "Content-Type": "application/json" });
90090
90596
  res.end(JSON.stringify(result));
90091
90597
  } catch (err) {
90598
+ if (clientAbort.signal.aborted) return;
90092
90599
  const msg = err instanceof Error ? err.message : String(err);
90093
90600
  console.error(`[ClawRouter] Image editing error: ${msg}`);
90094
90601
  if (!res.headersSent) {