llm-relay 0.73.1 → 0.75.0

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
@@ -14,7 +14,9 @@ import { CREDENTIAL_LABEL_PATTERN, makeCredentialId } from "./credential-id.js";
14
14
  import { providerCredentialSlots, slotAllowsModel } from "./credential-fleet.js";
15
15
  import { loadLaneManifest, rosterIsStale, verifyModel } from "./lane-manifest.js";
16
16
  import { probeLanes } from "./lane-probe.js";
17
- import { buildDispatch, allLadderRungs, normalizeCliCommand, restoreExhaustedRows, specContextWindow, CONTEXT_TOKEN, TASK_TOKEN, formatLaneStats } from "./dispatch.js";
17
+ import { buildDispatch, allLadderRungs, normalizeCliCommand, restoreExhaustedRows, specContextWindow, CONTEXT_TOKEN, TASK_TOKEN, formatLaneStats, formatAttemptBudget } from "./dispatch.js";
18
+ import { loadLaneAffinityRows, restoreLaneAffinityRows } from "./lane-affinity.js";
19
+ import { loadLaneStatsRows, restoreLaneStatsRows } from "./dispatch-lane-stats.js";
18
20
  import { McpDispatchServer } from "./mcp/server.js";
19
21
  import { loadExhaustedRows } from "./dispatch-exhaustion-persistence.js";
20
22
  import { detectHostRouting, parseHostRoutingState } from "./host-routing.js";
@@ -1669,12 +1671,14 @@ export async function resolveDispatchView(opts) {
1669
1671
  const cachedContextWindow = setupDispatchCatalog(cfg);
1670
1672
  const liveRaw = (await tryServer(cfg, `/dispatch?${qs}`));
1671
1673
  const live = liveRaw !== null && liveRaw.host === "bypassed" ? liveRaw : null;
1672
- restoreExhaustedRows(cfg, loadExhaustedRows());
1673
1674
  if (live !== null) {
1674
1675
  const view = normalizeDispatchCommands(live);
1675
1676
  return substituteTaskInView({ ...view, source: "daemon" }, opts.task);
1676
1677
  }
1677
1678
  const fallbackCfg = loadConfigSafely() ?? cfg;
1679
+ restoreExhaustedRows(fallbackCfg, loadExhaustedRows());
1680
+ restoreLaneAffinityRows(fallbackCfg, loadLaneAffinityRows());
1681
+ restoreLaneStatsRows(fallbackCfg, loadLaneStatsRows());
1678
1682
  const fallbackView = normalizeDispatchCommands(buildDispatch(fallbackCfg, {
1679
1683
  ...(opts.lane ? { lane: opts.lane } : {}),
1680
1684
  ...(opts.tier ? { tier: opts.tier } : {}),
@@ -1791,6 +1795,8 @@ export async function runDispatch(arg) {
1791
1795
  const staleProxy = hostStale || windowStale;
1792
1796
  const live = staleProxy ? null : liveRaw;
1793
1797
  restoreExhaustedRows(cfg, loadExhaustedRows());
1798
+ restoreLaneAffinityRows(cfg, loadLaneAffinityRows());
1799
+ restoreLaneStatsRows(cfg, loadLaneStatsRows());
1794
1800
  const rawView = normalizeDispatchCommands(live ??
1795
1801
  buildDispatch(cfg, {
1796
1802
  ...(lane ? { lane } : {}),
@@ -1865,6 +1871,12 @@ export async function runDispatch(arg) {
1865
1871
  }
1866
1872
  if (l.note)
1867
1873
  process.stdout.write(` note: ${l.note}\n`);
1874
+ if (l.attemptBudget)
1875
+ process.stdout.write(` ${formatAttemptBudget(l.attemptBudget)}\n`);
1876
+ if (l.pinned)
1877
+ process.stdout.write(` pinned until ${l.pinned.until} (${l.pinned.reason})\n`);
1878
+ if (l.demoted)
1879
+ process.stdout.write(` demoted until ${l.demoted.until} (${l.demoted.reason})\n`);
1868
1880
  if (l.stats)
1869
1881
  process.stdout.write(` ${formatLaneStats(l.stats)}\n`);
1870
1882
  }