llm-relay 0.76.0 → 0.77.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.
@@ -1,36 +1,50 @@
1
- import type { BreakerCooldownRow } from "./circuit-breaker.js";
2
- export type { BreakerCooldownRow } from "./circuit-breaker.js";
3
- /** Bumped when the row shape changes; a mismatch restores nothing rather than guessing. */
1
+ import type { BreakerCellRow } from "./circuit-breaker.js";
2
+ export type { BreakerCellRow } from "./circuit-breaker.js";
3
+ /** Bumped when the MEANING of an existing field changes, never when an optional field is added. */
4
4
  export declare const CURRENT_BREAKER_STATE_VERSION = 1;
5
5
  export interface BreakerStateFile {
6
6
  version: number;
7
- rows: BreakerCooldownRow[];
7
+ rows: BreakerCellRow[];
8
8
  }
9
9
  export declare function getBreakerStatePath(): string;
10
10
  /**
11
- * Read the still-live cooling rows. Absent file, unreadable file, wrong version, or an envelope
11
+ * Read all valid rows. Absent file, unreadable file, wrong version, or an envelope
12
12
  * that is not `{version, rows: []}` all yield an empty list — never a throw, and never a partial
13
13
  * cooldown built from a shape we did not recognize.
14
+ *
15
+ * Expired rows are KEPT — a lapsed cooldown restores as lapsed, and its escalation counter
16
+ * stays with it. The running process does not discard a lapsed cooldown's counter.
14
17
  */
15
- export declare function loadBreakerCooldowns(opts?: {
18
+ export declare function loadBreakerState(opts?: {
16
19
  path?: string;
17
- now?: number;
18
- }): BreakerCooldownRow[];
19
- export declare function saveBreakerCooldowns(rows: readonly BreakerCooldownRow[], opts?: {
20
+ }): BreakerCellRow[];
21
+ export declare function saveBreakerState(rows: readonly BreakerCellRow[], opts?: {
20
22
  path?: string;
21
23
  }): void;
24
+ export interface BreakerPersistenceHandle {
25
+ /** Rows applied at install — the count a caller can report, as before. */
26
+ readonly restored: number;
27
+ /** Write NOW when a change is still unflushed; a clean timer writes nothing. True when it wrote. */
28
+ flush(): boolean;
29
+ }
22
30
  /**
23
- * Wire a breaker to the file: restore what is still cooling, then flush on every change.
31
+ * Wire a breaker to the file: restore every cell, then flush on every change.
24
32
  *
25
- * Returns the number of rows restored so a caller can report it. Writes are debounced through the
26
- * shared `WriteBehindTimer`the same scheduler the catalog, probe cache and runtime telemetry
27
- * use so a burst of failures costs one write, not one per outcome.
33
+ * Writes are debounced through the shared `WriteBehindTimer` the same scheduler the catalog,
34
+ * probe cache and runtime telemetry use so a burst of outcomes costs one write, not one per
35
+ * outcome. The handle's `flush()` and the module-level `flushBreakerPersistence()` are the same
36
+ * mechanism (`WriteBehindTimer.flushNow`), so a test and a shutdown cannot disagree about what a
37
+ * flush does.
28
38
  */
29
39
  export declare function installBreakerPersistence(breaker: {
30
- restoreCooldowns(rows: readonly BreakerCooldownRow[], now: number): number;
31
- exportCooldowns(now: number): BreakerCooldownRow[];
32
- onCoolingChanged(listener: () => void): void;
40
+ restoreState(rows: readonly BreakerCellRow[]): number;
41
+ exportState(): BreakerCellRow[];
42
+ onStateChanged(listener: () => void): void;
33
43
  }, opts?: {
34
44
  path?: string;
35
- now?: () => number;
36
- }): number;
45
+ }): BreakerPersistenceHandle;
46
+ /**
47
+ * The shutdown seam: write every dirty breaker file NOW. `runProxy` calls it beside the sibling
48
+ * flushes in both shutdown sites. Returns how many files were written.
49
+ */
50
+ export declare function flushBreakerPersistence(): number;
@@ -1,9 +1,10 @@
1
1
  import { join } from "node:path";
2
2
  import { tmpdir } from "node:os";
3
3
  import { relayStatePath } from "./state-paths.js";
4
- import { WriteBehindTimer } from "./write-behind.js";
4
+ import { WriteBehindRegistry, WriteBehindTimer } from "./write-behind.js";
5
5
  import { atomicWriteJsonSync, safeReadJsonSync } from "./storage/json-store.js";
6
6
  import { COOLDOWN_SOURCES } from "./circuit-breaker.js";
7
+ import { QUOTA_AXES, QUOTA_PERIODS } from "./dashboard-contract.js";
7
8
  export const CURRENT_BREAKER_STATE_VERSION = 1;
8
9
  export function getBreakerStatePath() {
9
10
  if (process.env.VITEST)
@@ -14,7 +15,43 @@ const COOLDOWN_SOURCE_SET = new Set(COOLDOWN_SOURCES);
14
15
  function isCooldownSource(value) {
15
16
  return typeof value === "string" && COOLDOWN_SOURCE_SET.has(value);
16
17
  }
17
- function isBreakerCooldownRow(value) {
18
+ function isValidPingRecord(value) {
19
+ if (value === null || typeof value !== "object")
20
+ return false;
21
+ const row = value;
22
+ if (typeof row["ms"] !== "number" || !Number.isFinite(row["ms"]))
23
+ return false;
24
+ if (typeof row["code"] !== "string" || row["code"] === "")
25
+ return false;
26
+ if (typeof row["timestamp"] !== "number" || !Number.isFinite(row["timestamp"]))
27
+ return false;
28
+ if (row["tokens"] !== undefined && (typeof row["tokens"] !== "number" || !Number.isFinite(row["tokens"])))
29
+ return false;
30
+ if (row["source"] !== undefined && row["source"] !== "probe" && row["source"] !== "request")
31
+ return false;
32
+ return true;
33
+ }
34
+ function isValidQuotaObservation(value) {
35
+ if (value === null || typeof value !== "object")
36
+ return false;
37
+ const row = value;
38
+ if (!QUOTA_AXES.includes(row["axis"]))
39
+ return false;
40
+ if (!QUOTA_PERIODS.includes(row["period"]))
41
+ return false;
42
+ if (typeof row["limit"] !== "number" || !Number.isFinite(row["limit"]))
43
+ return false;
44
+ if (typeof row["remaining"] !== "number" || !Number.isFinite(row["remaining"]))
45
+ return false;
46
+ if (row["resetsAt"] !== null && (typeof row["resetsAt"] !== "number" || !Number.isFinite(row["resetsAt"])))
47
+ return false;
48
+ if (typeof row["observedAt"] !== "number" || !Number.isFinite(row["observedAt"]))
49
+ return false;
50
+ if (row["basis"] !== "provider-stated")
51
+ return false;
52
+ return true;
53
+ }
54
+ function isBreakerCellRow(value) {
18
55
  if (value === null || typeof value !== "object")
19
56
  return false;
20
57
  const row = value;
@@ -37,11 +74,40 @@ function isBreakerCooldownRow(value) {
37
74
  return false;
38
75
  if (row["lastStatus"] !== undefined && typeof row["lastStatus"] !== "number")
39
76
  return false;
77
+ if (row["consecutiveFailures"] !== undefined &&
78
+ (typeof row["consecutiveFailures"] !== "number" || !Number.isInteger(row["consecutiveFailures"]) || row["consecutiveFailures"] < 0))
79
+ return false;
80
+ if (row["lastFailureTime"] !== undefined &&
81
+ (typeof row["lastFailureTime"] !== "number" || !Number.isFinite(row["lastFailureTime"]) || row["lastFailureTime"] < 0))
82
+ return false;
83
+ if (row["credentialFailures"] !== undefined &&
84
+ (typeof row["credentialFailures"] !== "number" || !Number.isInteger(row["credentialFailures"]) || row["credentialFailures"] < 0))
85
+ return false;
86
+ if (row["lastCredentialStatus"] !== undefined && typeof row["lastCredentialStatus"] !== "number")
87
+ return false;
88
+ if (row["credentialFaultUntil"] !== undefined &&
89
+ (typeof row["credentialFaultUntil"] !== "number" || !Number.isFinite(row["credentialFaultUntil"]) || row["credentialFaultUntil"] < 0))
90
+ return false;
91
+ if (row["pings"] !== undefined) {
92
+ if (!Array.isArray(row["pings"]))
93
+ return false;
94
+ for (const ping of row["pings"]) {
95
+ if (!isValidPingRecord(ping))
96
+ return false;
97
+ }
98
+ }
99
+ if (row["quotaObservations"] !== undefined) {
100
+ if (!Array.isArray(row["quotaObservations"]))
101
+ return false;
102
+ for (const obs of row["quotaObservations"]) {
103
+ if (!isValidQuotaObservation(obs))
104
+ return false;
105
+ }
106
+ }
40
107
  return true;
41
108
  }
42
- export function loadBreakerCooldowns(opts = {}) {
109
+ export function loadBreakerState(opts = {}) {
43
110
  const target = opts.path ?? getBreakerStatePath();
44
- const now = opts.now ?? Date.now();
45
111
  const parsed = safeReadJsonSync(target);
46
112
  if (parsed === null || typeof parsed !== "object")
47
113
  return [];
@@ -50,21 +116,34 @@ export function loadBreakerCooldowns(opts = {}) {
50
116
  const rows = parsed["rows"];
51
117
  if (!Array.isArray(rows))
52
118
  return [];
53
- return rows.filter((row) => isBreakerCooldownRow(row) && row.cooldownUntil > now);
119
+ return rows.filter((row) => isBreakerCellRow(row));
54
120
  }
55
- export function saveBreakerCooldowns(rows, opts = {}) {
121
+ export function saveBreakerState(rows, opts = {}) {
56
122
  const target = opts.path ?? getBreakerStatePath();
57
123
  const file = { version: CURRENT_BREAKER_STATE_VERSION, rows: [...rows] };
58
124
  atomicWriteJsonSync(target, file, { space: 2 });
59
125
  }
126
+ const installed = new WriteBehindRegistry();
60
127
  export function installBreakerPersistence(breaker, opts = {}) {
61
128
  const path = opts.path ?? getBreakerStatePath();
62
- const clock = opts.now ?? Date.now;
63
- const restored = breaker.restoreCooldowns(loadBreakerCooldowns({ path, now: clock() }), clock());
64
- const timer = new WriteBehindTimer();
65
- breaker.onCoolingChanged(() => {
66
- timer.touch(() => saveBreakerCooldowns(breaker.exportCooldowns(clock()), { path }));
129
+ const restored = breaker.restoreState(loadBreakerState({ path }));
130
+ const timer = installed.register(new WriteBehindTimer());
131
+ breaker.onStateChanged(() => {
132
+ timer.touch(() => saveBreakerState(breaker.exportState(), { path }));
67
133
  });
68
- return restored;
134
+ return {
135
+ restored,
136
+ flush: () => {
137
+ try {
138
+ return timer.flushNow();
139
+ }
140
+ catch {
141
+ return false;
142
+ }
143
+ },
144
+ };
145
+ }
146
+ export function flushBreakerPersistence() {
147
+ return installed.flushAll();
69
148
  }
70
149
  //# sourceMappingURL=breaker-persistence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breaker-persistence.js","sourceRoot":"","sources":["../src/breaker-persistence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"breaker-persistence.js","sourceRoot":"","sources":["../src/breaker-persistence.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKpE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAO/C,MAAM,UAAU,mBAAmB;IAKjC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAGxF,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC7D,CAAC;AAYD,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE3E,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxH,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1G,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAA6B,CAAC;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAA+B,CAAC;QAAE,OAAO,KAAK,CAAC;IACvF,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrF,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACzH,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/F,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACxF,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/E,IAAI,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrG,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7F,MAAM,WAAW,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3C,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvG,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE3F,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,SAAS;QACxC,CAAC,OAAO,GAAG,CAAC,qBAAqB,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtJ,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS;QACpC,CAAC,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACzI,IAAI,GAAG,CAAC,oBAAoB,CAAC,KAAK,SAAS;QACvC,CAAC,OAAO,GAAG,CAAC,oBAAoB,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnJ,IAAI,GAAG,CAAC,sBAAsB,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,sBAAsB,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/G,IAAI,GAAG,CAAC,sBAAsB,CAAC,KAAK,SAAS;QACzC,CAAC,OAAO,GAAG,CAAC,sBAAsB,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxJ,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,mBAAmB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3D,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAUD,MAAM,UAAU,gBAAgB,CAAC,OAA0B,EAAE;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,gBAAgB,CAA0B,MAAM,CAAC,CAAC;IACjE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC7D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,6BAA6B;QAAE,OAAO,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAyB,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA+B,EAAE,OAA0B,EAAE;IAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAClD,MAAM,IAAI,GAAqB,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3F,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAUD,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAW5C,MAAM,UAAU,yBAAyB,CACvC,OAIC,EACD,OAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,mBAAmB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE;QAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,CAAC;gBACH,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBAEP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,uBAAuB;IACrC,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
@@ -22,24 +22,39 @@ export interface CircuitState {
22
22
  credentialFaultUntil: number;
23
23
  }
24
24
  /**
25
- * The COOLING half of one cell, in a shape that can be written to disk and read back.
25
+ * One whole circuit-breaker cell, in a shape that can be written to disk and read back.
26
26
  *
27
27
  * Declared here rather than in `breaker-persistence.ts` so the dependency runs one way only
28
- * (persistence imports the breaker, never the reverse) and `exportCooldowns`/`restoreCooldowns`
29
- * can stay IO-free. See that module for what is deliberately NOT carried.
28
+ * (persistence imports the breaker, never the reverse) and `exportState`/`restoreState`
29
+ * can stay IO-free.
30
+ *
31
+ * All fields are OPTIONAL on the wire; absent means the value a fresh cell has.
30
32
  */
31
- export interface BreakerCooldownRow {
33
+ export interface BreakerCellRow {
32
34
  readonly provider: string;
33
35
  readonly model: string | null;
34
36
  readonly kind: string;
35
37
  readonly credentialId: string;
36
38
  readonly base?: string | undefined;
37
- /** Absolute epoch ms. A row whose value is not in the future is never restored. */
39
+ /** Absolute epoch ms. A row whose value is not in the future restores as lapsed. */
38
40
  readonly cooldownUntil: number;
39
41
  readonly cooldownSource: CooldownSource | null;
40
42
  /** Consecutive unexplained 429s — the ladder index that makes the next 429 escalate correctly. */
41
43
  readonly unexplained429s: number;
42
44
  readonly lastStatus?: number | undefined;
45
+ /** Failures since the last success on this cell; `MAX_FAILURES_BEFORE_TRIP` reads it. */
46
+ readonly consecutiveFailures?: number;
47
+ /** Epoch ms of the last failure; the dashboard's Cooldowns panel shows it as `observedAt`. */
48
+ readonly lastFailureTime?: number;
49
+ /** 401/403 count on this credential×model cell — the credential axis, never health. */
50
+ readonly credentialFailures?: number;
51
+ readonly lastCredentialStatus?: number | undefined;
52
+ /** Epoch ms; the fault is active only while this is in the future (`CREDENTIAL_FAULT_TTL_MS`). */
53
+ readonly credentialFaultUntil?: number;
54
+ /** The served-request window (`MAX_PING_HISTORY` newest); `telemetry.ts` scores stability from it. */
55
+ readonly pings?: PingRecord[];
56
+ /** Provider-stated quota headers; `availability.ts` discards a stale one at read time. */
57
+ readonly quotaObservations?: QuotaObservation[];
43
58
  }
44
59
  /** Provisional upstream metadata, committed only with a terminal attempt outcome. */
45
60
  export interface HeaderObservation {
@@ -193,29 +208,39 @@ export declare class CircuitBreaker implements AttemptLifecyclePort {
193
208
  /** Process-local cell states; their identity is stored rather than decoded from keys. */
194
209
  getAllStates(): ReadonlyMap<string, CircuitState>;
195
210
  /**
196
- * The cooling half of every cell that is still cooling, for `breaker-persistence.ts`.
211
+ * Every cell — cooling or not with every persisted field, for `breaker-persistence.ts`.
197
212
  *
198
213
  * Pure and IO-free on purpose: this module holds no file handles, so persistence stays a
199
- * separate concern that a bare programmatic proxy can simply not install. Cells that are not
200
- * cooling are omitted rather than written as empty rows.
214
+ * separate concern that a bare programmatic proxy can simply not install. An optional field is
215
+ * omitted only when it is `undefined` (`lastStatus`, `lastCredentialStatus`, `base`); `pings`
216
+ * is written as held, already capped at `MAX_PING_HISTORY`.
201
217
  */
202
- exportCooldowns(now?: number): BreakerCooldownRow[];
218
+ exportState(): BreakerCellRow[];
203
219
  /**
204
- * Re-apply persisted cooling rows, returning how many were applied.
220
+ * Re-apply persisted rows, returning how many were applied.
221
+ *
222
+ * ⚠ NEVER touches a cell this process has already created. A restore runs at startup, where that
223
+ * is every row; making it defensive costs nothing and means a late or repeated call cannot
224
+ * shorten, extend or overwrite live state — the `recordQuotaCooldown` rule ("a quota demotion
225
+ * never SHORTENS someone else's cooldown"), generalised to the whole cell.
205
226
  *
206
- * ⚠ NEVER overwrites a cooldown this process has already learned. A restore runs at startup, but
207
- * making it defensive costs nothing and means a late or repeated call cannot shorten or extend
208
- * live state the same rule `recordQuotaCooldown` follows ("a quota demotion never SHORTENS
209
- * someone else's cooldown"). Rows at or before `now` are already excluded by
210
- * `loadBreakerCooldowns`; the check is repeated here so a direct caller cannot bypass it.
227
+ * ⚠ FAITHFUL, not future-only. Every field is copied as it was, `cooldownUntil` included even when
228
+ * it is already in the past: a lapsed cooldown restores as lapsed and the cell reads ready,
229
+ * exactly as in memory. The old rule restore only while the cooldown is still in the future —
230
+ * reset the escalation ladder on every restart, a behaviour the running process does not have.
231
+ * In memory a lapsed cooldown keeps its `unexplained429s`; the counter alone demotes nothing,
232
+ * only a FRESH 429 applies it, and that 429 is a fresh measurement of the same condition. A
233
+ * restart is not a success. Absent optional fields take the fresh-cell defaults; `pings` is
234
+ * trimmed to the newest `MAX_PING_HISTORY` defensively. Nothing here notifies persistence —
235
+ * rewriting the file with what was just read from it would be a pointless write.
211
236
  */
212
- restoreCooldowns(rows: readonly BreakerCooldownRow[], now?: number): number;
237
+ restoreState(rows: readonly BreakerCellRow[]): number;
213
238
  /**
214
239
  * Register the persistence listener. At most one: a second install would double every write,
215
240
  * and there is exactly one file.
216
241
  */
217
- onCoolingChanged(listener: () => void): void;
218
- private notifyCoolingChanged;
242
+ onStateChanged(listener: () => void): void;
243
+ private notifyStateChanged;
219
244
  /** Deployment measurement merges timestamp-sorted pings without inflating confidence. */
220
245
  getDeploymentMeasurement(deployment: ProviderDeploymentIdentity): DeploymentMeasurement;
221
246
  /** Demote unhealthy cells without deleting any candidate; preserve within-band order. */
@@ -279,7 +279,6 @@ export class CircuitBreaker {
279
279
  if (state.pings.length > MAX_PING_HISTORY)
280
280
  state.pings.shift();
281
281
  if (outcome.ok) {
282
- const wasCooling = state.cooldownUntil > now;
283
282
  state.consecutiveFailures = 0;
284
283
  state.cooldownUntil = 0;
285
284
  state.cooldownSource = null;
@@ -287,8 +286,7 @@ export class CircuitBreaker {
287
286
  state.credentialFailures = 0;
288
287
  state.credentialFaultUntil = 0;
289
288
  delete state.lastCredentialStatus;
290
- if (wasCooling)
291
- this.notifyCoolingChanged();
289
+ this.notifyStateChanged();
292
290
  return;
293
291
  }
294
292
  state.consecutiveFailures += 1;
@@ -326,8 +324,7 @@ export class CircuitBreaker {
326
324
  state.cooldownUntil = now + cooling.ms;
327
325
  state.cooldownSource = cooling.source;
328
326
  }
329
- if (state.cooldownUntil > now)
330
- this.notifyCoolingChanged();
327
+ this.notifyStateChanged();
331
328
  }
332
329
  recordQuotaObservations(target, observations) {
333
330
  if (observations === undefined || observations.length === 0)
@@ -343,6 +340,7 @@ export class CircuitBreaker {
343
340
  state.credentialFailures += 1;
344
341
  state.lastCredentialStatus = status;
345
342
  state.credentialFaultUntil = at + CREDENTIAL_FAULT_TTL_MS;
343
+ this.notifyStateChanged();
346
344
  }
347
345
  clearCredentialFaults(credentialId) {
348
346
  let cleared = 0;
@@ -356,6 +354,8 @@ export class CircuitBreaker {
356
354
  delete state.lastCredentialStatus;
357
355
  cleared += 1;
358
356
  }
357
+ if (cleared > 0)
358
+ this.notifyStateChanged();
359
359
  return cleared;
360
360
  }
361
361
  clearCredentialFaultState(selector) {
@@ -372,6 +372,8 @@ export class CircuitBreaker {
372
372
  delete state.lastCredentialStatus;
373
373
  credentialFaults.push(clearedCell(state.target));
374
374
  }
375
+ if (credentialFaults.length > 0)
376
+ this.notifyStateChanged();
375
377
  return credentialFaults.sort(compareClearedCells);
376
378
  }
377
379
  clearCooldownState(selector) {
@@ -399,8 +401,8 @@ export class CircuitBreaker {
399
401
  }
400
402
  breakerCells.sort(compareClearedCells);
401
403
  credentialFaults.sort(compareClearedCells);
402
- if (breakerCells.length > 0)
403
- this.notifyCoolingChanged();
404
+ if (breakerCells.length > 0 || credentialFaults.length > 0)
405
+ this.notifyStateChanged();
404
406
  return { breakerCells, credentialFaults };
405
407
  }
406
408
  hasCredentialFault(target, now = Date.now()) {
@@ -415,7 +417,7 @@ export class CircuitBreaker {
415
417
  return;
416
418
  state.cooldownUntil = until;
417
419
  state.cooldownSource = "quota";
418
- this.notifyCoolingChanged();
420
+ this.notifyStateChanged();
419
421
  }
420
422
  inFlightCredential(credentialId) {
421
423
  return this.credentialInFlight.get(credentialId) ?? 0;
@@ -426,11 +428,9 @@ export class CircuitBreaker {
426
428
  getAllStates() {
427
429
  return this.states;
428
430
  }
429
- exportCooldowns(now = Date.now()) {
431
+ exportState() {
430
432
  const rows = [];
431
433
  for (const state of this.states.values()) {
432
- if (state.cooldownUntil <= now)
433
- continue;
434
434
  rows.push({
435
435
  provider: state.target.provider,
436
436
  model: state.target.model,
@@ -441,15 +441,20 @@ export class CircuitBreaker {
441
441
  cooldownSource: state.cooldownSource,
442
442
  unexplained429s: state.unexplained429s,
443
443
  ...(state.lastStatus === undefined ? {} : { lastStatus: state.lastStatus }),
444
+ consecutiveFailures: state.consecutiveFailures,
445
+ lastFailureTime: state.lastFailureTime,
446
+ credentialFailures: state.credentialFailures,
447
+ ...(state.lastCredentialStatus === undefined ? {} : { lastCredentialStatus: state.lastCredentialStatus }),
448
+ credentialFaultUntil: state.credentialFaultUntil,
449
+ pings: state.pings,
450
+ quotaObservations: state.quotaObservations,
444
451
  });
445
452
  }
446
453
  return rows;
447
454
  }
448
- restoreCooldowns(rows, now = Date.now()) {
455
+ restoreState(rows) {
449
456
  let applied = 0;
450
457
  for (const row of rows) {
451
- if (row.cooldownUntil <= now)
452
- continue;
453
458
  const target = {
454
459
  provider: row.provider,
455
460
  model: row.model,
@@ -457,25 +462,34 @@ export class CircuitBreaker {
457
462
  credentialId: row.credentialId,
458
463
  ...(row.base === undefined ? {} : { base: row.base }),
459
464
  };
460
- const state = this.getOrCreate(target);
461
- if (state.cooldownUntil > now)
465
+ const key = this.getKey(target);
466
+ if (this.states.has(key))
462
467
  continue;
468
+ const state = this.getOrCreate(target);
463
469
  state.cooldownUntil = row.cooldownUntil;
464
470
  state.cooldownSource = row.cooldownSource;
465
471
  state.unexplained429s = row.unexplained429s;
466
472
  if (row.lastStatus !== undefined)
467
473
  state.lastStatus = row.lastStatus;
474
+ state.consecutiveFailures = row.consecutiveFailures ?? 0;
475
+ state.lastFailureTime = row.lastFailureTime ?? 0;
476
+ state.credentialFailures = row.credentialFailures ?? 0;
477
+ if (row.lastCredentialStatus !== undefined)
478
+ state.lastCredentialStatus = row.lastCredentialStatus;
479
+ state.credentialFaultUntil = row.credentialFaultUntil ?? 0;
480
+ state.pings = row.pings ? row.pings.slice(-MAX_PING_HISTORY) : [];
481
+ state.quotaObservations = row.quotaObservations ?? [];
468
482
  applied += 1;
469
483
  }
470
484
  return applied;
471
485
  }
472
- onCoolingChanged(listener) {
473
- this.#coolingChanged = listener;
486
+ onStateChanged(listener) {
487
+ this.#stateChanged = listener;
474
488
  }
475
- #coolingChanged = null;
476
- notifyCoolingChanged() {
489
+ #stateChanged = null;
490
+ notifyStateChanged() {
477
491
  try {
478
- this.#coolingChanged?.();
492
+ this.#stateChanged?.();
479
493
  }
480
494
  catch {
481
495
  }
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -15,10 +15,10 @@ 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
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
+ import { flushLaneAffinityPersistence, loadLaneAffinityRows, restoreLaneAffinityRows } from "./lane-affinity.js";
19
+ import { flushDispatchLaneStatsPersistence, loadLaneStatsRows, restoreLaneStatsRows } from "./dispatch-lane-stats.js";
20
20
  import { McpDispatchServer } from "./mcp/server.js";
21
- import { loadExhaustedRows } from "./dispatch-exhaustion-persistence.js";
21
+ import { flushDispatchExhaustionPersistence, loadExhaustedRows } from "./dispatch-exhaustion-persistence.js";
22
22
  import { detectHostRouting, parseHostRoutingState } from "./host-routing.js";
23
23
  import { contextWindowResolver, COST_CLASSES } from "./metadata.js";
24
24
  import { snapshotContextWindow } from "./tier-data.js";
@@ -41,6 +41,7 @@ import { DASHBOARD_MEDIA_TYPE, isDashboardUtcTimestamp, SHARE_CELL_KEYS } from "
41
41
  import { DASHBOARD_BOOTSTRAP_SCHEMA, DASHBOARD_BOOTSTRAP_REQUEST_SCHEMA } from "./dashboard-routes.js";
42
42
  import { flushRuntimeTelemetry } from "./ping/runtime-telemetry.js";
43
43
  import { flushProbeCache } from "./ping/probe-cache.js";
44
+ import { flushBreakerPersistence } from "./breaker-persistence.js";
44
45
  import { runKeysAddLocal, runKeysDisableLocal, runKeysEnableLocal, runKeysExportLocal, runKeysImportLocal, runKeysListLocal, runKeysRemoveLocal, runKeysRevokeLocal, runKeysRotateLocal, runKeysUnlockLocal, } from "./keys-cli.js";
45
46
  const CONTEXT_WINDOW_SOURCE_LABEL = {
46
47
  observed: "learned from what this deployment stated when it refused an over-length request",
@@ -669,6 +670,10 @@ export function runProxy() {
669
670
  flushObservedContextLimits();
670
671
  flushFacts();
671
672
  flushInterpretations();
673
+ flushBreakerPersistence();
674
+ flushDispatchExhaustionPersistence();
675
+ flushDispatchLaneStatsPersistence();
676
+ flushLaneAffinityPersistence();
672
677
  },
673
678
  });
674
679
  accountingStore = createAccountingStore({ retentionDays: 30 });
@@ -704,6 +709,10 @@ export function runProxy() {
704
709
  flushObservedContextLimits();
705
710
  flushFacts();
706
711
  flushInterpretations();
712
+ flushBreakerPersistence();
713
+ flushDispatchExhaustionPersistence();
714
+ flushDispatchLaneStatsPersistence();
715
+ flushLaneAffinityPersistence();
707
716
  process.exit(0);
708
717
  });
709
718
  };