llm-relay 0.76.0 → 0.77.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breaker-persistence.d.ts +32 -18
- package/dist/breaker-persistence.js +91 -12
- package/dist/breaker-persistence.js.map +1 -1
- package/dist/circuit-breaker.d.ts +43 -18
- package/dist/circuit-breaker.js +35 -21
- package/dist/circuit-breaker.js.map +1 -1
- package/dist/cli.js +12 -3
- package/dist/cli.js.map +1 -1
- package/dist/config/routing-parser.d.ts +10 -6
- package/dist/config/routing-parser.js +236 -182
- package/dist/config/routing-parser.js.map +1 -1
- package/dist/dispatch-exhaustion-persistence.d.ts +6 -0
- package/dist/dispatch-exhaustion-persistence.js +6 -2
- package/dist/dispatch-exhaustion-persistence.js.map +1 -1
- package/dist/dispatch-lane-stats.d.ts +6 -0
- package/dist/dispatch-lane-stats.js +6 -2
- package/dist/dispatch-lane-stats.js.map +1 -1
- package/dist/dispatch.d.ts +1 -1
- package/dist/lane-affinity.d.ts +7 -0
- package/dist/lane-affinity.js +6 -2
- package/dist/lane-affinity.js.map +1 -1
- package/dist/write-behind.d.ts +31 -0
- package/dist/write-behind.js +30 -0
- package/dist/write-behind.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,50 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type {
|
|
3
|
-
/** Bumped when the
|
|
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:
|
|
7
|
+
rows: BreakerCellRow[];
|
|
8
8
|
}
|
|
9
9
|
export declare function getBreakerStatePath(): string;
|
|
10
10
|
/**
|
|
11
|
-
* Read
|
|
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
|
|
18
|
+
export declare function loadBreakerState(opts?: {
|
|
16
19
|
path?: string;
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
31
|
+
* Wire a breaker to the file: restore every cell, then flush on every change.
|
|
24
32
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
restoreState(rows: readonly BreakerCellRow[]): number;
|
|
41
|
+
exportState(): BreakerCellRow[];
|
|
42
|
+
onStateChanged(listener: () => void): void;
|
|
33
43
|
}, opts?: {
|
|
34
44
|
path?: string;
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
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
|
|
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) =>
|
|
119
|
+
return rows.filter((row) => isBreakerCellRow(row));
|
|
54
120
|
}
|
|
55
|
-
export function
|
|
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
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"breaker-persistence.js","sourceRoot":"","sources":["../src/breaker-persistence.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,24 +22,39 @@ export interface CircuitState {
|
|
|
22
22
|
credentialFaultUntil: number;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
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 `
|
|
29
|
-
* can stay IO-free.
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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.
|
|
200
|
-
*
|
|
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
|
-
|
|
218
|
+
exportState(): BreakerCellRow[];
|
|
203
219
|
/**
|
|
204
|
-
* Re-apply persisted
|
|
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
|
-
* ⚠
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
218
|
-
private
|
|
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. */
|
package/dist/circuit-breaker.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
461
|
-
if (
|
|
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
|
-
|
|
473
|
-
this.#
|
|
486
|
+
onStateChanged(listener) {
|
|
487
|
+
this.#stateChanged = listener;
|
|
474
488
|
}
|
|
475
|
-
#
|
|
476
|
-
|
|
489
|
+
#stateChanged = null;
|
|
490
|
+
notifyStateChanged() {
|
|
477
491
|
try {
|
|
478
|
-
this.#
|
|
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
|
};
|