llm-relay 0.52.0 → 0.53.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.
@@ -2,7 +2,7 @@ import { parseCredentialId } from "./credential-id.js";
2
2
  import { resolveConfiguredLimits } from "./configured-limits.js";
3
3
  import { providerCredentialSlots } from "./credential-fleet.js";
4
4
  import { observedRateLimits } from "./rate-limits.js";
5
- import { collectQuotaBuckets, factResetInputs, mapLimitBasis, mapLocalUsedBasis, mapRemainingBasis, mapResetsAtBasis, projectLocalUsed, resolveRemaining, resolveResetsAt, } from "./availability.js";
5
+ import { collectQuotaBuckets, factResetInputs, mapLimitBasis, mapLocalUsedBasis, mapRemainingBasis, mapResetsAtBasis, localUsedForPeriod, resolveRemaining, resolveResetsAt, } from "./availability.js";
6
6
  import { createHardCapLedgerReader, evaluateHardCap } from "./hard-cap.js";
7
7
  import { POOL_PREFIX, splitSpec } from "./config.js";
8
8
  import { factsFor } from "./target-facts.js";
@@ -43,10 +43,11 @@ function buildQuotas(cfg, breaker, accounting, now, readFacts) {
43
43
  const { axis: axisPart, period: periodPart } = bucket;
44
44
  // The ledger reports {requests, tokens}; the ladder consumes one figure — tokens for the
45
45
  // token axes (what a TPM/TPD ceiling bounds) and the request count otherwise.
46
- const windowReading = accounting === undefined || accounting === null
46
+ // `localUsedForPeriod` owns the "an unknown period reads no ledger" half, so this producer
47
+ // and `quota-demotion.ts` cannot answer that question differently for the same bucket.
48
+ const localUsed = localUsedForPeriod((namedPeriod) => accounting === undefined || accounting === null
47
49
  ? null
48
- : accounting.usedInWindow({ credentialId, ...(model !== null ? { model } : {}), period: periodPart, now });
49
- const localUsed = projectLocalUsed(windowReading, axisPart);
50
+ : accounting.usedInWindow({ credentialId, ...(model !== null ? { model } : {}), period: namedPeriod, now }), periodPart, axisPart);
50
51
  const resolution = resolveRemaining({
51
52
  observations: bucket.observations,
52
53
  axis: axisPart,
@@ -1 +1 @@
1
- {"version":3,"file":"availability-snapshot.js","sourceRoot":"","sources":["../src/availability-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"availability-snapshot.js","sourceRoot":"","sources":["../src/availability-snapshot.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,17 @@ export interface LocalUsedReading {
39
39
  * token provenance. Keeping this projection in one place makes the three ledger consumers agree.
40
40
  */
41
41
  export declare function projectLocalUsed(reading: UsedInWindowReading | null, axis: QuotaAxis): LocalUsedReading;
42
+ /**
43
+ * The ONE definition of "which buckets may read the local ledger at all", wrapping
44
+ * `projectLocalUsed` so its three consumers cannot disagree.
45
+ *
46
+ * ⚠ An `"unknown"` period has no window to count, so rung 2 must not run for it and the ledger is
47
+ * never asked. `AccountingStore.usedInWindow` also declines the period by type; this is the
48
+ * runtime half of the same rule, in one place rather than hand-copied into
49
+ * `quota-demotion.ts`, `availability-snapshot.ts` and `candidates.ts` — three hand-copies of the
50
+ * quota bucket key is exactly how the last drift of this shape happened.
51
+ */
52
+ export declare function localUsedForPeriod(read: (period: Exclude<QuotaPeriod, "unknown">) => UsedInWindowReading | null, period: QuotaPeriod, axis: QuotaAxis): LocalUsedReading;
42
53
  /** The limits a caller has already resolved, each optional — absent until its gap lands. */
43
54
  export interface LimitInputs {
44
55
  configured?: number | null;
@@ -53,9 +64,18 @@ export interface LimitInputs {
53
64
  * ⚠ `quota-observation.ts` keeps a PRIVATE interface of the same name for its own header
54
65
  * parsing; this exported shape is the one consumers see. Exporting the other would collide.
55
66
  */
67
+ /**
68
+ * ⚠ `period` INCLUDES `"unknown"`, and that is load-bearing rather than lax. A provider whose
69
+ * header name carries no period word (groq's `x-ratelimit-limit-requests`, the whole
70
+ * `anthropic-ratelimit-*` family) still states limit, remaining AND reset on the row. Such a
71
+ * bucket is admitted only when the observation supplies its own reset — see `collectQuotaBuckets`
72
+ * — so nothing here is ever derived from a period that does not exist: `periodStart`/`periodEnd`
73
+ * both return null for `"unknown"`, and `usedInWindow` declines the period by type, so the
74
+ * rung-2 arithmetic and the rung-3 boundary fail closed on their own.
75
+ */
56
76
  export interface QuotaBucket {
57
77
  readonly axis: QuotaAxis;
58
- readonly period: Exclude<QuotaPeriod, "unknown">;
78
+ readonly period: QuotaPeriod;
59
79
  readonly observations: QuotaObservation[];
60
80
  readonly limits: LimitInputs;
61
81
  }
@@ -38,6 +38,21 @@ export function projectLocalUsed(reading, axis) {
38
38
  }
39
39
  return { value: reading.tokens, basis: reading.basis };
40
40
  }
41
+ /**
42
+ * The ONE definition of "which buckets may read the local ledger at all", wrapping
43
+ * `projectLocalUsed` so its three consumers cannot disagree.
44
+ *
45
+ * ⚠ An `"unknown"` period has no window to count, so rung 2 must not run for it and the ledger is
46
+ * never asked. `AccountingStore.usedInWindow` also declines the period by type; this is the
47
+ * runtime half of the same rule, in one place rather than hand-copied into
48
+ * `quota-demotion.ts`, `availability-snapshot.ts` and `candidates.ts` — three hand-copies of the
49
+ * quota bucket key is exactly how the last drift of this shape happened.
50
+ */
51
+ export function localUsedForPeriod(read, period, axis) {
52
+ if (period === "unknown")
53
+ return { value: null, basis: null };
54
+ return projectLocalUsed(read(period), axis);
55
+ }
41
56
  /**
42
57
  * Gather every (axis, period) carrying admissible quota evidence into insertion order.
43
58
  * Callers still choose whether learned figures participate, how buckets are ordered after
@@ -55,7 +70,12 @@ export function collectQuotaBuckets(input) {
55
70
  return bucket;
56
71
  };
57
72
  for (const observation of input.observations) {
58
- if (observation.period === "unknown")
73
+ // An unknown PERIOD is not an unknown QUOTA. The row still carries the provider's own
74
+ // limit/remaining, and it is admissible exactly when the provider also stated when the window
75
+ // resets — that reset is what the demotion expires against, so nothing has to be invented.
76
+ // Without one there is no boundary in reach and no period to derive one from, which is the
77
+ // case the old blanket `continue` was written for; keep declining it.
78
+ if (observation.period === "unknown" && !Number.isFinite(observation.resetsAt ?? Number.NaN))
59
79
  continue;
60
80
  bucketFor(observation.axis, observation.period).observations.push(observation);
61
81
  }
@@ -120,9 +140,23 @@ export function periodEnd(now, period) {
120
140
  return null;
121
141
  }
122
142
  }
123
- function withinCurrentPeriod(observedAt, now, period) {
143
+ /**
144
+ * Is this observation still describing the CURRENT window?
145
+ *
146
+ * For a named period the test is the UTC boundary. For `"unknown"` there is no boundary to test
147
+ * against, so the observation's OWN stated reset is the window: before it, the figure describes
148
+ * the live window; at or after it, the window has rolled over and the figure is gone. That reset
149
+ * is the same fact `collectQuotaBuckets` required to admit the row at all, so an unknown-period
150
+ * observation reaching here always has one.
151
+ */
152
+ function withinCurrentPeriod(observation, now, period) {
153
+ const { observedAt } = observation;
124
154
  if (!Number.isFinite(observedAt) || observedAt > now)
125
155
  return false;
156
+ if (period === "unknown") {
157
+ const resetsAt = observation.resetsAt;
158
+ return resetsAt !== null && Number.isFinite(resetsAt) && resetsAt > now;
159
+ }
126
160
  const start = periodStart(now, period);
127
161
  return start !== null && observedAt >= start;
128
162
  }
@@ -140,7 +174,7 @@ function eligibleObservation(observations, now, axis, period) {
140
174
  // requests/minute question even when it is the freshest thing on the cell.
141
175
  if (candidate.axis === axis && candidate.period === period) {
142
176
  // Newest-wins per tuple; ties keep the first seen (callers merge newest-first).
143
- if (withinCurrentPeriod(candidate.observedAt, now, period)) {
177
+ if (withinCurrentPeriod(candidate, now, period)) {
144
178
  eligible ??= candidate;
145
179
  }
146
180
  else {
@@ -187,7 +221,14 @@ export function resolveLimit(input) {
187
221
  }
188
222
  /** The spec §5.1 ladder, one call per (scope, axis, period). */
189
223
  export function resolveRemaining(input) {
190
- const localUsedValue = typeof input.localUsed.value === "number" && Number.isFinite(input.localUsed.value)
224
+ // Rung 2 subtracts THIS PERIOD's usage from a stated ceiling, so it needs a period to count.
225
+ // An `"unknown"` period has none, and a figure counted over some other window would be an
226
+ // invented remaining wearing a `derived:` label. Every caller already routes its ledger read
227
+ // through `localUsedForPeriod`, which returns null here — but this function is exported and
228
+ // pure, so it owns the rule rather than trusting each caller to remember it.
229
+ const localUsedValue = input.period !== "unknown" &&
230
+ typeof input.localUsed.value === "number" &&
231
+ Number.isFinite(input.localUsed.value)
191
232
  ? input.localUsed.value
192
233
  : null;
193
234
  const { eligible, staleCount } = eligibleObservation(input.observations, input.now, input.axis, input.period);
@@ -1 +1 @@
1
- {"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"availability.js","sourceRoot":"","sources":["../src/availability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { BreakerCooldownRow } from "./circuit-breaker.js";
2
+ export type { BreakerCooldownRow } from "./circuit-breaker.js";
3
+ import type { ProviderTargetIdentity } from "./kernel/contracts.js";
4
+ /** Bumped when the row shape changes; a mismatch restores nothing rather than guessing. */
5
+ export declare const CURRENT_BREAKER_STATE_VERSION = 1;
6
+ export interface BreakerStateFile {
7
+ version: number;
8
+ rows: BreakerCooldownRow[];
9
+ }
10
+ export declare function getBreakerStatePath(): string;
11
+ /**
12
+ * Read the still-live cooling rows. Absent file, unreadable file, wrong version, or an envelope
13
+ * that is not `{version, rows: []}` all yield an empty list — never a throw, and never a partial
14
+ * cooldown built from a shape we did not recognize.
15
+ */
16
+ export declare function loadBreakerCooldowns(opts?: {
17
+ path?: string;
18
+ now?: number;
19
+ }): BreakerCooldownRow[];
20
+ export declare function saveBreakerCooldowns(rows: readonly BreakerCooldownRow[], opts?: {
21
+ path?: string;
22
+ }): void;
23
+ /** The identity half of a row, for handing back to the breaker. */
24
+ export declare function rowIdentity(row: BreakerCooldownRow): ProviderTargetIdentity;
25
+ /**
26
+ * Wire a breaker to the file: restore what is still cooling, then flush on every change.
27
+ *
28
+ * Returns the number of rows restored so a caller can report it. Writes are debounced through the
29
+ * shared `WriteBehindTimer` — the same scheduler the catalog, probe cache and runtime telemetry
30
+ * use — so a burst of failures costs one write, not one per outcome.
31
+ */
32
+ export declare function installBreakerPersistence(breaker: {
33
+ restoreCooldowns(rows: readonly BreakerCooldownRow[], now: number): number;
34
+ exportCooldowns(now: number): BreakerCooldownRow[];
35
+ onCoolingChanged(listener: () => void): void;
36
+ }, opts?: {
37
+ path?: string;
38
+ now?: () => number;
39
+ }): number;
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Durable COOLING state for the circuit breaker.
3
+ *
4
+ * `circuit-breaker.ts` holds everything in a `Map` and performs no IO, so a relay restart used to
5
+ * discard every cooldown and the whole unexplained-429 escalation ladder. Measured on this
6
+ * operator's relay: `nim/moonshotai/kimi-k3` carried a 19.9-hour cooldown learned from 7
7
+ * consecutive unexplained 429s, and `gemini/models/gemini-3.6-flash` one learned from 26. A
8
+ * restart threw both away and the relay walked straight back into the same walls, paying one real
9
+ * request per wall to relearn what it already knew. Ping health has survived a restart since
10
+ * `probe-cache.json`; this closes the other half, so `CLAUDE.md`'s "health that survives restarts"
11
+ * is true of the breaker too.
12
+ *
13
+ * SCOPE — deliberately narrow, and the omissions are the design:
14
+ * - **Cooldowns and the escalation counter only.** That is what is expensive to relearn.
15
+ * - **No `pings`.** `probe-cache.json` is their one home; a second copy is a second home.
16
+ * - **No `quotaObservations`.** Those are timestamped point-in-time state that the §5.1 staleness
17
+ * ladder already handles, and persisting them would put a second writer on data
18
+ * `probe-cache.json` also carries.
19
+ * - **No credential faults.** They expire in 5 minutes and exist to be disproved by a rotated key;
20
+ * carrying one across a restart would make a fixed credential look broken for no benefit.
21
+ *
22
+ * ⚠ A row is restored ONLY while its cooldown is still in the future. Once it has lapsed the
23
+ * evidence has done its job, and resurrecting a stale `unexplained429s` would send the next single
24
+ * 429 straight to the top of the ladder — a 24-hour penalty invented from a counter nobody
25
+ * re-measured. Same fail-safe direction as everywhere else here: no invented duration.
26
+ *
27
+ * ⚠ Corrupt or unreadable ⇒ restore NOTHING, never a partial or bogus cooldown. `lane-manifest.ts`
28
+ * learned this the hard way: shallow validation let `"x".id === undefined` evict a healthy lane.
29
+ * Every row is validated field by field, and one bad row is dropped without taking the file down.
30
+ */
31
+ import { readFileSync, writeFileSync, renameSync, mkdirSync, unlinkSync } from "node:fs";
32
+ import { join, dirname } from "node:path";
33
+ import { tmpdir } from "node:os";
34
+ import { relayStatePath } from "./state-paths.js";
35
+ import { WriteBehindTimer } from "./write-behind.js";
36
+ /** Bumped when the row shape changes; a mismatch restores nothing rather than guessing. */
37
+ export const CURRENT_BREAKER_STATE_VERSION = 1;
38
+ export function getBreakerStatePath() {
39
+ // ⚠ Under vitest, never touch the developer's real cooling state — a suite that trips breakers
40
+ // would otherwise cool the operator's live deployments. Tests pass an explicit `path`.
41
+ // Guarded AT THE RESOLVER, per CLAUDE.md: a call-site guard is how the control-token one came
42
+ // to be half-covered.
43
+ if (process.env.VITEST)
44
+ return join(tmpdir(), "llm-relay-vitest", "breaker-state.json");
45
+ // Cache-kind: every row is re-learnable by walking into the same wall again. It is neither
46
+ // operator-authored nor credential-bearing.
47
+ return join(relayStatePath("cache"), "breaker-state.json");
48
+ }
49
+ function isCooldownSource(value) {
50
+ return (value === "retry-after" ||
51
+ value === "escalation" ||
52
+ value === "default" ||
53
+ value === "loopback" ||
54
+ value === "quota");
55
+ }
56
+ /**
57
+ * Validate ONE row completely. Deep, not shallow: the `lane-manifest.ts` regression came from a
58
+ * loader that checked the envelope and let a malformed entry reach logic that read `undefined`
59
+ * off it. Anything unexpected drops this row and only this row.
60
+ */
61
+ function isBreakerCooldownRow(value) {
62
+ if (value === null || typeof value !== "object")
63
+ return false;
64
+ const row = value;
65
+ if (typeof row["provider"] !== "string" || row["provider"] === "")
66
+ return false;
67
+ if (row["model"] !== null && typeof row["model"] !== "string")
68
+ return false;
69
+ if (typeof row["kind"] !== "string" || row["kind"] === "")
70
+ return false;
71
+ if (typeof row["credentialId"] !== "string" || row["credentialId"] === "")
72
+ return false;
73
+ if (row["base"] !== undefined && typeof row["base"] !== "string")
74
+ return false;
75
+ if (typeof row["cooldownUntil"] !== "number" || !Number.isFinite(row["cooldownUntil"]))
76
+ return false;
77
+ if (row["cooldownSource"] !== null && !isCooldownSource(row["cooldownSource"]))
78
+ return false;
79
+ const escalations = row["unexplained429s"];
80
+ if (typeof escalations !== "number" || !Number.isInteger(escalations) || escalations < 0)
81
+ return false;
82
+ if (row["lastStatus"] !== undefined && typeof row["lastStatus"] !== "number")
83
+ return false;
84
+ return true;
85
+ }
86
+ /**
87
+ * Read the still-live cooling rows. Absent file, unreadable file, wrong version, or an envelope
88
+ * that is not `{version, rows: []}` all yield an empty list — never a throw, and never a partial
89
+ * cooldown built from a shape we did not recognize.
90
+ */
91
+ export function loadBreakerCooldowns(opts = {}) {
92
+ const target = opts.path ?? getBreakerStatePath();
93
+ const now = opts.now ?? Date.now();
94
+ let parsed;
95
+ try {
96
+ parsed = JSON.parse(readFileSync(target, "utf8"));
97
+ }
98
+ catch {
99
+ return [];
100
+ }
101
+ if (parsed === null || typeof parsed !== "object")
102
+ return [];
103
+ const file = parsed;
104
+ if (file["version"] !== CURRENT_BREAKER_STATE_VERSION)
105
+ return [];
106
+ const rows = file["rows"];
107
+ if (!Array.isArray(rows))
108
+ return [];
109
+ // Expired rows are dropped HERE rather than by the caller, so every consumer of this function
110
+ // sees the same rule and a lapsed escalation counter can never be resurrected.
111
+ return rows.filter((row) => isBreakerCooldownRow(row) && row.cooldownUntil > now);
112
+ }
113
+ export function saveBreakerCooldowns(rows, opts = {}) {
114
+ const target = opts.path ?? getBreakerStatePath();
115
+ const file = { version: CURRENT_BREAKER_STATE_VERSION, rows: [...rows] };
116
+ let tmpPath = null;
117
+ try {
118
+ mkdirSync(dirname(target), { recursive: true });
119
+ tmpPath = `${target}.${process.pid}.tmp`;
120
+ writeFileSync(tmpPath, JSON.stringify(file, null, 2) + "\n", "utf8");
121
+ renameSync(tmpPath, target);
122
+ tmpPath = null;
123
+ }
124
+ catch {
125
+ // Best-effort persistence, like every other cache here: failing to save a routing hint must
126
+ // never fail a request or bring the relay down.
127
+ }
128
+ finally {
129
+ if (tmpPath !== null) {
130
+ try {
131
+ unlinkSync(tmpPath);
132
+ }
133
+ catch {
134
+ /* best effort cleanup */
135
+ }
136
+ }
137
+ }
138
+ }
139
+ /** The identity half of a row, for handing back to the breaker. */
140
+ export function rowIdentity(row) {
141
+ return {
142
+ provider: row.provider,
143
+ model: row.model,
144
+ kind: row.kind,
145
+ credentialId: row.credentialId,
146
+ ...(row.base === undefined ? {} : { base: row.base }),
147
+ };
148
+ }
149
+ /**
150
+ * Wire a breaker to the file: restore what is still cooling, then flush on every change.
151
+ *
152
+ * Returns the number of rows restored so a caller can report it. Writes are debounced through the
153
+ * shared `WriteBehindTimer` — the same scheduler the catalog, probe cache and runtime telemetry
154
+ * use — so a burst of failures costs one write, not one per outcome.
155
+ */
156
+ export function installBreakerPersistence(breaker, opts = {}) {
157
+ const path = opts.path ?? getBreakerStatePath();
158
+ const clock = opts.now ?? Date.now;
159
+ const restored = breaker.restoreCooldowns(loadBreakerCooldowns({ path, now: clock() }), clock());
160
+ const timer = new WriteBehindTimer();
161
+ breaker.onCoolingChanged(() => {
162
+ timer.touch(() => saveBreakerCooldowns(breaker.exportCooldowns(clock()), { path }));
163
+ });
164
+ return restored;
165
+ }
166
+ //# sourceMappingURL=breaker-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breaker-persistence.js","sourceRoot":"","sources":["../src/breaker-persistence.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,13 @@ import { type LocalUsedReading, type RemainingResolution, type ResetsAtResolutio
19
19
  */
20
20
  export interface CandidateAvailability {
21
21
  axis: "requests" | "tokens";
22
- period: "minute" | "day" | "month";
22
+ /**
23
+ * ⚠ Includes `"unknown"` — the same spelling `dashboard-contract.ts` `QUOTA_PERIODS` has always
24
+ * carried. A provider stating limit/remaining/reset on a header whose NAME omits the period
25
+ * (groq, the `anthropic-ratelimit-*` family) produces exactly such a row, and hiding it here
26
+ * while the dashboard shows it is how the two operator surfaces come to disagree about a cell.
27
+ */
28
+ period: "minute" | "day" | "month" | "unknown";
23
29
  limit: number | null;
24
30
  limitBasis: RemainingResolution["limitBasis"];
25
31
  remaining: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../src/candidates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candidates.js","sourceRoot":"","sources":["../src/candidates.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,26 @@ export interface CircuitState {
21
21
  lastCredentialStatus?: number | undefined;
22
22
  credentialFaultUntil: number;
23
23
  }
24
+ /**
25
+ * The COOLING half of one cell, in a shape that can be written to disk and read back.
26
+ *
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.
30
+ */
31
+ export interface BreakerCooldownRow {
32
+ readonly provider: string;
33
+ readonly model: string | null;
34
+ readonly kind: string;
35
+ readonly credentialId: string;
36
+ readonly base?: string | undefined;
37
+ /** Absolute epoch ms. A row whose value is not in the future is never restored. */
38
+ readonly cooldownUntil: number;
39
+ readonly cooldownSource: CooldownSource | null;
40
+ /** Consecutive unexplained 429s — the ladder index that makes the next 429 escalate correctly. */
41
+ readonly unexplained429s: number;
42
+ readonly lastStatus?: number | undefined;
43
+ }
24
44
  /** Provisional upstream metadata, committed only with a terminal attempt outcome. */
25
45
  export interface HeaderObservation {
26
46
  readonly target: ProviderTargetIdentity;
@@ -118,6 +138,30 @@ export declare class CircuitBreaker implements AttemptLifecyclePort {
118
138
  getState(target: ProviderTargetIdentity): CircuitState | undefined;
119
139
  /** Process-local cell states; their identity is stored rather than decoded from keys. */
120
140
  getAllStates(): ReadonlyMap<string, CircuitState>;
141
+ /**
142
+ * The cooling half of every cell that is still cooling, for `breaker-persistence.ts`.
143
+ *
144
+ * Pure and IO-free on purpose: this module holds no file handles, so persistence stays a
145
+ * separate concern that a bare programmatic proxy can simply not install. Cells that are not
146
+ * cooling are omitted rather than written as empty rows.
147
+ */
148
+ exportCooldowns(now?: number): BreakerCooldownRow[];
149
+ /**
150
+ * Re-apply persisted cooling rows, returning how many were applied.
151
+ *
152
+ * ⚠ NEVER overwrites a cooldown this process has already learned. A restore runs at startup, but
153
+ * making it defensive costs nothing and means a late or repeated call cannot shorten or extend
154
+ * live state — the same rule `recordQuotaCooldown` follows ("a quota demotion never SHORTENS
155
+ * someone else's cooldown"). Rows at or before `now` are already excluded by
156
+ * `loadBreakerCooldowns`; the check is repeated here so a direct caller cannot bypass it.
157
+ */
158
+ restoreCooldowns(rows: readonly BreakerCooldownRow[], now?: number): number;
159
+ /**
160
+ * Register the persistence listener. At most one: a second install would double every write,
161
+ * and there is exactly one file.
162
+ */
163
+ onCoolingChanged(listener: () => void): void;
164
+ private notifyCoolingChanged;
121
165
  /** Deployment measurement merges timestamp-sorted pings without inflating confidence. */
122
166
  getDeploymentMeasurement(deployment: ProviderDeploymentIdentity): DeploymentMeasurement;
123
167
  /** Demote unhealthy cells without deleting any candidate; preserve within-band order. */