llm-relay 0.80.0 → 0.82.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.
Files changed (97) hide show
  1. package/dist/backend.d.ts +43 -3
  2. package/dist/backend.js +0 -0
  3. package/dist/backend.js.map +1 -1
  4. package/dist/candidate-runner.d.ts +45 -9
  5. package/dist/candidate-runner.js +55 -22
  6. package/dist/candidate-runner.js.map +1 -1
  7. package/dist/catalog.d.ts +49 -0
  8. package/dist/catalog.js +18 -0
  9. package/dist/catalog.js.map +1 -1
  10. package/dist/circuit-breaker.d.ts +118 -1
  11. package/dist/circuit-breaker.js +96 -1
  12. package/dist/circuit-breaker.js.map +1 -1
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.js +23 -3
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config/routing-parser.d.ts +1 -1
  17. package/dist/config/routing-parser.js +27 -1
  18. package/dist/config/routing-parser.js.map +1 -1
  19. package/dist/config-edit.js +70 -16
  20. package/dist/config-edit.js.map +1 -1
  21. package/dist/config-types.d.ts +62 -6
  22. package/dist/config-types.js +1 -1
  23. package/dist/config-types.js.map +1 -1
  24. package/dist/dashboard/.vite/manifest.json +2 -2
  25. package/dist/dashboard/assets/index-B2UQHoym.js +74 -0
  26. package/dist/dashboard/assets/index-DFEP3XPr.css +1 -0
  27. package/dist/dashboard/index.html +2 -2
  28. package/dist/dispatch-lane-stats.d.ts +59 -5
  29. package/dist/dispatch-lane-stats.js +96 -29
  30. package/dist/dispatch-lane-stats.js.map +1 -1
  31. package/dist/dispatch.d.ts +143 -1
  32. package/dist/dispatch.js +260 -98
  33. package/dist/dispatch.js.map +1 -1
  34. package/dist/lane-affinity.d.ts +8 -0
  35. package/dist/lane-affinity.js +10 -0
  36. package/dist/lane-affinity.js.map +1 -1
  37. package/dist/log.d.ts +16 -0
  38. package/dist/log.js +1 -0
  39. package/dist/log.js.map +1 -1
  40. package/dist/mcp/agy-quota-log.d.ts +37 -0
  41. package/dist/mcp/agy-quota-log.js +68 -0
  42. package/dist/mcp/agy-quota-log.js.map +1 -0
  43. package/dist/mcp/job-archive.d.ts +55 -0
  44. package/dist/mcp/job-archive.js +151 -0
  45. package/dist/mcp/job-archive.js.map +1 -0
  46. package/dist/mcp/lane-runner.d.ts +108 -5
  47. package/dist/mcp/lane-runner.js +93 -4
  48. package/dist/mcp/lane-runner.js.map +1 -1
  49. package/dist/mcp/readonly-boundary.d.ts +46 -0
  50. package/dist/mcp/readonly-boundary.js +119 -0
  51. package/dist/mcp/readonly-boundary.js.map +1 -1
  52. package/dist/mcp/server.d.ts +132 -8
  53. package/dist/mcp/server.js +267 -68
  54. package/dist/mcp/server.js.map +1 -1
  55. package/dist/openai-request.d.ts +8 -0
  56. package/dist/openai-request.js +33 -9
  57. package/dist/openai-request.js.map +1 -1
  58. package/dist/pacing.d.ts +125 -0
  59. package/dist/pacing.js +83 -0
  60. package/dist/pacing.js.map +1 -0
  61. package/dist/ping/cadence.d.ts +57 -0
  62. package/dist/ping/cadence.js +58 -0
  63. package/dist/ping/cadence.js.map +1 -1
  64. package/dist/refusal-interpretation.d.ts +24 -0
  65. package/dist/refusal-interpretation.js +10 -1
  66. package/dist/refusal-interpretation.js.map +1 -1
  67. package/dist/responses-request.d.ts +14 -1
  68. package/dist/responses-request.js +21 -4
  69. package/dist/responses-request.js.map +1 -1
  70. package/dist/routes/admin.d.ts +8 -0
  71. package/dist/routes/admin.js +122 -35
  72. package/dist/routes/admin.js.map +1 -1
  73. package/dist/routes/messages.d.ts +2 -0
  74. package/dist/routes/messages.js +7 -3
  75. package/dist/routes/messages.js.map +1 -1
  76. package/dist/routes/openai-front.d.ts +1 -0
  77. package/dist/routes/openai-front.js +7 -3
  78. package/dist/routes/openai-front.js.map +1 -1
  79. package/dist/server.d.ts +4 -0
  80. package/dist/server.js +28 -4
  81. package/dist/server.js.map +1 -1
  82. package/dist/setup-claude.d.ts +2 -2
  83. package/dist/setup-claude.js +3 -3
  84. package/dist/stream-commit.d.ts +65 -0
  85. package/dist/stream-commit.js +150 -8
  86. package/dist/stream-commit.js.map +1 -1
  87. package/dist/target-facts.js +3 -0
  88. package/dist/target-facts.js.map +1 -1
  89. package/dist/telemetry.d.ts +9 -1
  90. package/dist/telemetry.js +1 -1
  91. package/dist/telemetry.js.map +1 -1
  92. package/package.json +1 -1
  93. package/scripts/install-skill.mjs +2 -2
  94. package/skills/llm-relay/SKILL.md +5 -3
  95. package/skills/llm-relay/references/dispatch-lanes.md +8 -2
  96. package/dist/dashboard/assets/index-Bqtx14ES.css +0 -1
  97. package/dist/dashboard/assets/index-CetZdLCA.js +0 -74
@@ -0,0 +1 @@
1
+ .metric-chart-svg{display:block;max-width:100%;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1}.chart-axis-label{fill:var(--muted);font-size:11px}.chart-series-0{fill:#2563eb}.chart-series-1{fill:#0891b2}.chart-series-2{fill:#7c3aed}.chart-series-3{fill:#b45309}.chart-series-4{fill:#be123c}.chart-legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin:.5rem 0;padding:0;list-style:none;color:var(--muted);font-size:.8rem}.chart-legend li{display:inline-flex;align-items:center;gap:.3rem}.chart-swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:.15rem}.chart-swatch.chart-series-0{background:#2563eb}.chart-swatch.chart-series-1{background:#0891b2}.chart-swatch.chart-series-2{background:#7c3aed}.chart-swatch.chart-series-3{background:#b45309}.chart-swatch.chart-series-4{background:#be123c}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.absolute{position:absolute}.table{display:table}.hidden{display:none}.resize{resize:both}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{color-scheme:light dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;background:#f6f8fb;color:#172033}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.app{--surface: #fff;--ink: #172033;--muted: #526177;--border: #d8deea;--accent: #2563eb;--warning: #9a5414;--danger: #be123c;--focus: #b45309;--row-hover: #eef3fc;--group-bg: #e7ecf5;min-height:100vh;max-width:1440px;margin:0 auto;padding:1rem;background:#f6f8fb;color:var(--ink)}.app.dark{--surface: #172033;--ink: #edf2fb;--muted: #c1cadd;--border: #3a4862;--accent: #7db0ff;--warning: #fbbf24;--danger: #fda4af;--focus: #fbbf24;--row-hover: #1b2740;--group-bg: #223252;background:#0f1726}header{display:flex;justify-content:space-between;gap:1rem;align-items:start;margin:1rem 0}h1{margin:.1rem 0;font-size:clamp(1.6rem,4vw,2.5rem)}h2{font-size:1.05rem;margin-top:0}h3{font-size:1rem}h4{font-size:.9rem}.eyebrow{color:var(--muted);font-size:.85rem;margin:0;letter-spacing:.04em;text-transform:uppercase}.header-actions,.filters{display:flex;gap:.6rem;flex-wrap:wrap;align-items:end}button,select{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:.4rem;padding:.5rem .65rem}button{display:inline-flex;gap:.35rem;align-items:center}label{display:grid;gap:.25rem;font-size:.85rem;color:var(--muted)}label:has(input){display:flex;align-items:center;gap:.4rem;padding:.5rem 0}.panel-nav{margin:.6rem 0}.panel-nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0}.panel-nav a{display:inline-block;border:1px solid var(--border);border-radius:999px;padding:.25rem .7rem;font-size:.8rem;color:var(--ink);text-decoration:none}.panel-nav a:hover,.panel-nav a:focus-visible{border-color:var(--accent);color:var(--accent)}.status,.notice{margin:.8rem 0;color:var(--muted)}.filters,.panel,.notice{border:1px solid var(--border);background:var(--surface);border-radius:.65rem;padding:.85rem;margin:.85rem 0}.notice.partial,.notice.stale,.coverage.partial,.coverage.stale{border-left:6px solid var(--warning)}.notice.unavailable,.coverage.unavailable,.error{border-left:6px solid var(--danger)}.notice.empty,.coverage.empty{border-left:6px solid var(--accent)}details.panel{padding:0}details.panel>summary{cursor:pointer;padding:.85rem;list-style:revert}details.panel>summary:focus-visible{outline:3px solid var(--focus);outline-offset:-2px}details.panel>summary h2{display:inline;margin:0}details.panel[open]>summary{border-bottom:1px solid var(--border)}details.panel>*:not(summary){padding:0 .85rem .85rem}details.panel>summary+*{padding-top:.85rem}.panel-count{color:var(--muted);font-weight:500;font-size:.85rem}.coverage{display:flex;gap:.5rem;flex-wrap:wrap;align-items:baseline;margin:.55rem 0;padding:.5rem .6rem;border:1px solid var(--border);border-left:6px solid var(--accent);border-radius:.35rem;color:var(--muted);font-size:.82rem}.coverage strong{color:var(--ink)}.coverage span{overflow-wrap:anywhere}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:.65rem;padding:.8rem;min-width:0}.card h2{color:var(--muted);margin-bottom:.35rem}.card p{font-weight:700;font-size:1.05rem;margin:.35rem 0 .1rem}.card small,small{color:var(--muted);overflow-wrap:anywhere}.spend-card .cell-list{margin:0}.cell-list{display:grid;grid-template-columns:1fr;gap:.45rem;margin:.5rem 0}.cell-list div{border-top:1px solid var(--border);padding-top:.35rem}.cell-list dt{color:var(--muted);font-size:.78rem}.cell-list dd{margin:.1rem 0 0;overflow-wrap:anywhere}.null-value{color:var(--muted);font-style:italic}.chart{min-width:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}caption{text-align:left;font-weight:650;color:var(--muted);padding:.5rem 0}th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere;line-height:1.35}th{font-weight:650}.responsive-table tbody tr:not(.group-row):hover>*,.responsive-table tbody tr:not(.group-row):focus-within>*{background:var(--row-hover)}.empty-row{color:var(--muted);font-style:italic;text-align:center}.quota-table .group-row th{background:var(--group-bg);font-weight:700;padding:.5rem}.quota-table .group-name{font-weight:700}.quota-table .quota-value{font-variant-numeric:tabular-nums}.quota-table .quota-relative{font-weight:600}.basis-badge{display:inline-block;border:1px solid var(--border);border-radius:999px;padding:0 .5rem;font-size:.72rem;font-weight:650;white-space:nowrap;line-height:1.5}.basis-badge.basis-strong{border-color:var(--accent);color:var(--accent)}.basis-badge.basis-weak{border-color:var(--warning);color:var(--warning)}.basis-badge.basis-unknown{color:var(--muted);font-style:italic;border-style:dashed}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;padding:1rem;background:#0000008c}.dialog{width:min(1100px,100%);max-height:90vh;overflow:auto;background:var(--surface);color:var(--ink);border-radius:.7rem;padding:1rem}.close{float:right}.detail-grid{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.5rem 1rem}.detail-grid dt{font-weight:650}.detail-grid dd{margin:0;overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:767px){.app{padding:.65rem}header{display:block}.header-actions{margin-top:.7rem}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filters{align-items:stretch}.filters label{min-width:calc(50% - .4rem)}.responsive-table{border:0}.responsive-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.responsive-table tr{display:block;border:1px solid var(--border);border-radius:.45rem;margin:.5rem 0;padding:.25rem}.responsive-table th[scope=row],.responsive-table td{display:grid;grid-template-columns:minmax(7.5rem,42%) 1fr;gap:.5rem;border:0;padding:.35rem}.responsive-table th[scope=row]:before,.responsive-table td:before{content:attr(data-label);color:var(--muted);font-weight:600}.responsive-table td[colspan]{grid-template-columns:1fr}.responsive-table td[colspan]:before{content:none}}@media(max-width:360px){.summary-grid{grid-template-columns:1fr}.filters label{min-width:100%}.app{padding:.45rem}.header-actions button{width:100%;justify-content:center}.coverage{display:block}.coverage span{display:block;margin-top:.2rem}.detail-grid{grid-template-columns:1fr;gap:.2rem}.detail-grid dd{margin-bottom:.45rem}}@media(min-width:768px){.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.cell-list{grid-template-columns:repeat(2,minmax(0,1fr))}.spend-cells{grid-template-columns:1fr}}@media(min-width:1280px){.app{padding:1.5rem}.summary-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.spend-card{grid-column:span 2}.chart-panel{min-width:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
@@ -1,4 +1,4 @@
1
1
  <!doctype html>
2
- <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Relay analytics</title> <script type="module" crossorigin src="/dashboard/assets/index-CetZdLCA.js"></script>
3
- <link rel="stylesheet" crossorigin href="/dashboard/assets/index-Bqtx14ES.css">
2
+ <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Relay analytics</title> <script type="module" crossorigin src="/dashboard/assets/index-B2UQHoym.js"></script>
3
+ <link rel="stylesheet" crossorigin href="/dashboard/assets/index-DFEP3XPr.css">
4
4
  </head><body><div id="root"></div></body></html>
@@ -22,6 +22,18 @@ export type DispatchLaneKind = (typeof DISPATCH_LANE_KINDS)[number];
22
22
  */
23
23
  export declare const DISPATCH_LANE_STATUSES: readonly ["completed", "failed", "timed_out", "abandoned"];
24
24
  export type DispatchLaneStatus = (typeof DISPATCH_LANE_STATUSES)[number];
25
+ /**
26
+ * How a dispatch ran the lane: `answer` is one HTTP call to the relay's own `/v1/messages` (a relay
27
+ * lane in answer mode); `agent` is a spawned harness running a tool loop (every other case).
28
+ *
29
+ * ⚠ It keys the lane-stats window since 2026-09-10, because the two are different populations: a
30
+ * burst of short answer-mode calls set `free-pool`'s p80 to 39.5 s, and that one shared window then
31
+ * cut every agent-mode task on the same lane at the 90 s floor
32
+ * (`docs/dispatch-giveup-diagnosis-2026-09-10.md` §3). One `as const` array, the type indexed from
33
+ * it and the parser validating against it — the closed-union rule.
34
+ */
35
+ export declare const DISPATCH_MODES: readonly ["agent", "answer"];
36
+ export type DispatchMode = (typeof DISPATCH_MODES)[number];
25
37
  /**
26
38
  * What `llm-relay mcp` reports to the daemon when an agent-mode lane run settles. Counts and
27
39
  * lengths only — never the task text, never the lane's output (logs-are-metadata-only).
@@ -46,6 +58,11 @@ export interface DispatchedTelemetryReport {
46
58
  * reasoning level. Metadata like every other field — a configured ladder name, never task text.
47
59
  */
48
60
  tier?: string;
61
+ /**
62
+ * How the lane ran (`DispatchMode`). Absent from an older MCP child, whose report then lands in
63
+ * the mode-less legacy window rather than being guessed into one.
64
+ */
65
+ mode?: DispatchMode;
49
66
  wallClockMs: number;
50
67
  exitCode: number | null;
51
68
  status: DispatchLaneStatus;
@@ -63,11 +80,35 @@ export interface LaneStats {
63
80
  laneId: string;
64
81
  /** Ladder tier this window belongs to, or null for the legacy single ladder. */
65
82
  tier: string | null;
83
+ /**
84
+ * Dispatch mode this window belongs to, or null for a legacy window recorded before modes were
85
+ * reported. A legacy window mixes both populations, so it is read only as a fallback.
86
+ */
87
+ mode: DispatchMode | null;
66
88
  calls: number;
67
89
  successes: number;
68
90
  failures: number;
69
91
  timeouts: number;
70
- /** Bounded wall-clock sample window, oldest dropped — advisory percentiles, not scoring. */
92
+ /**
93
+ * Runs that FAILED on their own (`failed` or `timed_out`) since the last `completed` one. A walk
94
+ * abandonment is not counted: that is the relay's decision, not the lane's failure. A success
95
+ * resets it to 0. The walk reads it (a later lane on a streak cannot be relied on to answer), and
96
+ * so does the failing-lane demotion in `dispatch.ts`.
97
+ */
98
+ consecutiveFailures: number;
99
+ /**
100
+ * Walk abandonments since the last `completed` run. Each one DOUBLES the lane's next budget
101
+ * (`attemptBudget` in `dispatch.ts`): an abandoned run leaves no duration sample, so without this
102
+ * the window could never show that the lane needed longer.
103
+ */
104
+ abandonedSinceSuccess: number;
105
+ /** When this window last recorded a `completed` run, or null. */
106
+ lastSuccessAt: number | null;
107
+ /**
108
+ * Bounded wall-clock sample window, oldest dropped. Since 2026-09-10 ONLY a `completed` run adds a
109
+ * sample: a failure's or a timeout's wall clock is time to FAILURE, not time to answer, and it gave
110
+ * the lane that answers least (six 900 s timeouts) the longest budget.
111
+ */
71
112
  wallClockMs: number[];
72
113
  /**
73
114
  * Per-sample ISO timestamps, parallel to `wallClockMs` — entry `i` is when sample `i` ran.
@@ -167,11 +208,14 @@ export declare function laneRoutesThroughRelay(rung: Pick<LadderRung, "env">, li
167
208
  * nothing extra: the report already carries `tier`, so tiering flows through this one argument.
168
209
  */
169
210
  export declare function recordLaneRun(cfg: Config, report: DispatchedTelemetryReport, now?: number): void;
170
- /** One (lane, tier) window for this config, or undefined when that lane never ran on that tier. A copy. */
171
- export declare function laneStatsFor(cfg: Config, laneId: string, tier?: string | null): LaneStats | undefined;
172
211
  /**
173
- * Every (lane, tier) window for this config, sorted by lane id then tier (tier-less first) so
174
- * surfaces render stably. Copies.
212
+ * One (lane, tier, mode) window for this config, or undefined when that lane never ran there. A
213
+ * copy. A null `mode` is the legacy mode-less window.
214
+ */
215
+ export declare function laneStatsFor(cfg: Config, laneId: string, tier?: string | null, mode?: DispatchMode | null): LaneStats | undefined;
216
+ /**
217
+ * Every (lane, tier, mode) window for this config, sorted by lane id, then tier (tier-less first),
218
+ * then mode (mode-less first) so surfaces render stably. Copies.
175
219
  */
176
220
  export declare function allLaneStats(cfg: Config): Array<{
177
221
  laneId: string;
@@ -187,14 +231,24 @@ export declare function onLaneStatsChanged(cfg: Config, listener: () => void): v
187
231
  * the counters, the numeric `wallClockMs`, `lastAt`) and ignores the two keys it does not.
188
232
  * No existing field changed meaning, so the schema version does NOT bump (the
189
233
  * `breaker-persistence.ts` rule: bump only when the MEANING of an existing field changes).
234
+ *
235
+ * Since 2026-09-10 `mode`, `consecutiveFailures`, `abandonedSinceSuccess` and `lastSuccessAt` are
236
+ * optional on the wire by the same rule, and an older row loads with them derived at restore. The
237
+ * sample window NARROWED that day — only a completed run adds a sample — and the version still does
238
+ * not bump: a bump would drop every lane's history, while an older row's mixed samples simply age
239
+ * out of the bounded window as new runs arrive.
190
240
  */
191
241
  export interface LaneStatsRow {
192
242
  laneId: string;
193
243
  tier?: string | null;
244
+ mode?: DispatchMode | null;
194
245
  calls: number;
195
246
  successes: number;
196
247
  failures: number;
197
248
  timeouts: number;
249
+ consecutiveFailures?: number;
250
+ abandonedSinceSuccess?: number;
251
+ lastSuccessAt?: number | null;
198
252
  wallClockMs: number[];
199
253
  wallClockAt?: (string | null)[];
200
254
  lastAt: number | null;
@@ -6,12 +6,14 @@ import { atomicWriteJsonSync, safeReadJsonSync } from "./storage/json-store.js";
6
6
  import { isDashboardSafeId } from "./dashboard-contract.js";
7
7
  export const DISPATCH_LANE_KINDS = Object.freeze(["cli", "relay"]);
8
8
  export const DISPATCH_LANE_STATUSES = Object.freeze(["completed", "failed", "timed_out", "abandoned"]);
9
+ export const DISPATCH_MODES = Object.freeze(["agent", "answer"]);
9
10
  const REPORT_KEYS = Object.freeze([
10
11
  "jobId",
11
12
  "laneId",
12
13
  "kind",
13
14
  "spec",
14
15
  "tier",
16
+ "mode",
15
17
  "wallClockMs",
16
18
  "exitCode",
17
19
  "status",
@@ -41,7 +43,7 @@ export function parseTelemetryReport(value) {
41
43
  if (!REPORT_KEY_SET.has(key))
42
44
  return null;
43
45
  }
44
- const { jobId, laneId, kind, spec, tier, wallClockMs, exitCode, status, estimatedInputTokens, estimatedOutputTokens } = body;
46
+ const { jobId, laneId, kind, spec, tier, mode, wallClockMs, exitCode, status, estimatedInputTokens, estimatedOutputTokens } = body;
45
47
  if (!isBoundedId(jobId, MAX_JOB_ID_CHARS))
46
48
  return null;
47
49
  if (!isBoundedId(laneId, MAX_LANE_ID_CHARS))
@@ -50,6 +52,8 @@ export function parseTelemetryReport(value) {
50
52
  return null;
51
53
  if (tier !== undefined && !isBoundedId(tier, MAX_TIER_CHARS))
52
54
  return null;
55
+ if (mode !== undefined && !DISPATCH_MODES.includes(mode))
56
+ return null;
53
57
  if (!DISPATCH_LANE_KINDS.includes(kind))
54
58
  return null;
55
59
  if (!DISPATCH_LANE_STATUSES.includes(status))
@@ -66,6 +70,7 @@ export function parseTelemetryReport(value) {
66
70
  kind: kind,
67
71
  ...(spec === undefined ? {} : { spec }),
68
72
  ...(tier === undefined ? {} : { tier }),
73
+ ...(mode === undefined ? {} : { mode: mode }),
69
74
  wallClockMs,
70
75
  exitCode,
71
76
  status: status,
@@ -98,11 +103,25 @@ export function quantileWallClockMs(samples, quantile) {
98
103
  const rank = Math.ceil(q * sorted.length);
99
104
  return sorted[Math.min(sorted.length, Math.max(1, rank)) - 1] ?? null;
100
105
  }
101
- function freshLaneStats(laneId, tier) {
102
- return { laneId, tier, calls: 0, successes: 0, failures: 0, timeouts: 0, wallClockMs: [], wallClockAt: [], lastAt: null };
106
+ function freshLaneStats(laneId, tier, mode) {
107
+ return {
108
+ laneId,
109
+ tier,
110
+ mode,
111
+ calls: 0,
112
+ successes: 0,
113
+ failures: 0,
114
+ timeouts: 0,
115
+ consecutiveFailures: 0,
116
+ abandonedSinceSuccess: 0,
117
+ lastSuccessAt: null,
118
+ wallClockMs: [],
119
+ wallClockAt: [],
120
+ lastAt: null,
121
+ };
103
122
  }
104
- function statsKey(tier, laneId) {
105
- return `${tier ?? ""}:${laneId}`;
123
+ function statsKey(tier, laneId, mode = null) {
124
+ return `${tier ?? ""}|${mode ?? ""}|${laneId}`;
106
125
  }
107
126
  export const RELAY_ROUTED_ENV_NAMES = ["ANTHROPIC_BASE_URL", "OPENAI_BASE_URL"];
108
127
  export function laneRoutesThroughRelay(rung, listener) {
@@ -148,33 +167,40 @@ function copyStats(stats) {
148
167
  export function recordLaneRun(cfg, report, now = Date.now()) {
149
168
  const map = laneStatsForWrite(cfg);
150
169
  const tier = report.tier ?? null;
151
- const key = statsKey(tier, report.laneId);
170
+ const mode = report.mode ?? null;
171
+ const key = statsKey(tier, report.laneId, mode);
152
172
  let entry = map.get(key);
153
173
  if (!entry) {
154
- entry = freshLaneStats(report.laneId, tier);
174
+ entry = freshLaneStats(report.laneId, tier, mode);
155
175
  map.set(key, entry);
156
176
  }
157
177
  entry.calls += 1;
158
178
  switch (report.status) {
159
179
  case "completed":
160
180
  entry.successes += 1;
181
+ entry.consecutiveFailures = 0;
182
+ entry.abandonedSinceSuccess = 0;
183
+ entry.lastSuccessAt = now;
161
184
  break;
162
185
  case "failed":
163
186
  entry.failures += 1;
187
+ entry.consecutiveFailures += 1;
164
188
  break;
165
189
  case "timed_out":
166
190
  entry.timeouts += 1;
167
191
  entry.failures += 1;
192
+ entry.consecutiveFailures += 1;
168
193
  break;
169
194
  case "abandoned":
170
195
  entry.failures += 1;
196
+ entry.abandonedSinceSuccess += 1;
171
197
  break;
172
198
  default: {
173
199
  const _never = report.status;
174
200
  throw new Error(`unhandled dispatch lane status: ${String(_never)}`);
175
201
  }
176
202
  }
177
- if (report.status !== "abandoned") {
203
+ if (report.status === "completed") {
178
204
  entry.wallClockMs.push(report.wallClockMs);
179
205
  entry.wallClockAt.push(new Date(now).toISOString());
180
206
  }
@@ -186,8 +212,8 @@ export function recordLaneRun(cfg, report, now = Date.now()) {
186
212
  entry.lastAt = now;
187
213
  notifyLaneStats(cfg);
188
214
  }
189
- export function laneStatsFor(cfg, laneId, tier = null) {
190
- const entry = laneStats.get(cfg)?.get(statsKey(tier, laneId));
215
+ export function laneStatsFor(cfg, laneId, tier = null, mode = null) {
216
+ const entry = laneStats.get(cfg)?.get(statsKey(tier, laneId, mode));
191
217
  return entry ? copyStats(entry) : undefined;
192
218
  }
193
219
  export function allLaneStats(cfg) {
@@ -198,6 +224,10 @@ export function allLaneStats(cfg) {
198
224
  const tb = b.tier ?? "";
199
225
  if (ta !== tb)
200
226
  return ta < tb ? -1 : 1;
227
+ const ma = a.mode ?? "";
228
+ const mb = b.mode ?? "";
229
+ if (ma !== mb)
230
+ return ma < mb ? -1 : 1;
201
231
  return 0;
202
232
  };
203
233
  return [...(laneStats.get(cfg) ?? new Map()).values()]
@@ -223,16 +253,20 @@ function notifyLaneStats(cfg) {
223
253
  }
224
254
  }
225
255
  export function exportLaneStatsRows(cfg) {
226
- return allLaneStats(cfg).map(({ laneId, tier, calls, successes, failures, timeouts, wallClockMs, wallClockAt, lastAt }) => ({
227
- laneId,
228
- tier,
229
- calls,
230
- successes,
231
- failures,
232
- timeouts,
233
- wallClockMs: [...wallClockMs],
234
- wallClockAt: [...wallClockAt],
235
- lastAt,
256
+ return allLaneStats(cfg).map((s) => ({
257
+ laneId: s.laneId,
258
+ tier: s.tier,
259
+ mode: s.mode,
260
+ calls: s.calls,
261
+ successes: s.successes,
262
+ failures: s.failures,
263
+ timeouts: s.timeouts,
264
+ consecutiveFailures: s.consecutiveFailures,
265
+ abandonedSinceSuccess: s.abandonedSinceSuccess,
266
+ lastSuccessAt: s.lastSuccessAt,
267
+ wallClockMs: [...s.wallClockMs],
268
+ wallClockAt: [...s.wallClockAt],
269
+ lastAt: s.lastAt,
236
270
  }));
237
271
  }
238
272
  function isLaneTier(value) {
@@ -240,6 +274,11 @@ function isLaneTier(value) {
240
274
  return true;
241
275
  return isBoundedId(value, MAX_TIER_CHARS);
242
276
  }
277
+ function isLaneMode(value) {
278
+ if (value === undefined || value === null)
279
+ return true;
280
+ return DISPATCH_MODES.includes(value);
281
+ }
243
282
  function isWallClockAt(value, samples) {
244
283
  if (value === undefined)
245
284
  return true;
@@ -255,6 +294,14 @@ function isWallClockAt(value, samples) {
255
294
  }
256
295
  return true;
257
296
  }
297
+ function hasValidStreakFields(row) {
298
+ for (const key of ["consecutiveFailures", "abandonedSinceSuccess"]) {
299
+ if (row[key] !== undefined && !isTokenCount(row[key]))
300
+ return false;
301
+ }
302
+ const at = row["lastSuccessAt"];
303
+ return at === undefined || at === null || (typeof at === "number" && Number.isFinite(at) && at >= 0);
304
+ }
258
305
  function isLaneStatsRow(value) {
259
306
  if (value === null || typeof value !== "object" || Array.isArray(value))
260
307
  return false;
@@ -263,10 +310,22 @@ function isLaneStatsRow(value) {
263
310
  return false;
264
311
  if (!isLaneTier(row["tier"]))
265
312
  return false;
313
+ if (!isLaneMode(row["mode"]))
314
+ return false;
266
315
  for (const key of ["calls", "successes", "failures", "timeouts"]) {
267
316
  if (!isTokenCount(row[key]))
268
317
  return false;
269
318
  }
319
+ if (!hasValidStreakFields(row))
320
+ return false;
321
+ if (!hasValidSamples(row))
322
+ return false;
323
+ const lastAt = row["lastAt"];
324
+ if (lastAt !== null && (typeof lastAt !== "number" || !Number.isFinite(lastAt) || lastAt < 0))
325
+ return false;
326
+ return true;
327
+ }
328
+ function hasValidSamples(row) {
270
329
  const wallClockMs = row["wallClockMs"];
271
330
  if (!Array.isArray(wallClockMs))
272
331
  return false;
@@ -276,30 +335,38 @@ function isLaneStatsRow(value) {
276
335
  if (typeof sample !== "number" || !Number.isFinite(sample) || sample < 0)
277
336
  return false;
278
337
  }
279
- if (!isWallClockAt(row["wallClockAt"], wallClockMs.length))
280
- return false;
281
- const lastAt = row["lastAt"];
282
- if (lastAt !== null && (typeof lastAt !== "number" || !Number.isFinite(lastAt) || lastAt < 0))
283
- return false;
284
- return true;
338
+ return isWallClockAt(row["wallClockAt"], wallClockMs.length);
339
+ }
340
+ function restoredWindow(row) {
341
+ if (row.consecutiveFailures === undefined && row.wallClockMs.length > row.successes) {
342
+ return { wallClockMs: [], wallClockAt: [] };
343
+ }
344
+ return {
345
+ wallClockMs: row.wallClockMs.slice(-MAX_LANE_STAT_SAMPLES),
346
+ wallClockAt: (row.wallClockAt ?? new Array(row.wallClockMs.length).fill(null)).slice(-MAX_LANE_STAT_SAMPLES),
347
+ };
285
348
  }
286
349
  export function restoreLaneStatsRows(cfg, rows) {
287
350
  const map = laneStatsForWrite(cfg);
288
351
  let restored = 0;
289
352
  for (const row of rows) {
290
353
  const tier = row.tier ?? null;
291
- const key = statsKey(tier, row.laneId);
354
+ const mode = row.mode ?? null;
355
+ const key = statsKey(tier, row.laneId, mode);
292
356
  if (map.has(key))
293
357
  continue;
294
358
  map.set(key, {
295
359
  laneId: row.laneId,
296
360
  tier,
361
+ mode,
297
362
  calls: row.calls,
298
363
  successes: row.successes,
299
364
  failures: row.failures,
300
365
  timeouts: row.timeouts,
301
- wallClockMs: row.wallClockMs.slice(-MAX_LANE_STAT_SAMPLES),
302
- wallClockAt: (row.wallClockAt ?? new Array(row.wallClockMs.length).fill(null)).slice(-MAX_LANE_STAT_SAMPLES),
366
+ consecutiveFailures: row.consecutiveFailures ?? (row.successes === 0 ? row.failures : 0),
367
+ abandonedSinceSuccess: row.abandonedSinceSuccess ?? 0,
368
+ lastSuccessAt: row.lastSuccessAt ?? null,
369
+ ...restoredWindow(row),
303
370
  lastAt: row.lastAt,
304
371
  });
305
372
  restored++;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch-lane-stats.js","sourceRoot":"","sources":["../src/dispatch-lane-stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch-lane-stats.js","sourceRoot":"","sources":["../src/dispatch-lane-stats.ts"],"names":[],"mappings":"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"}