@framers/agentos 0.9.10 → 0.9.12
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/README.md +55 -51
- package/dist/api/AgentOS.d.ts +2 -0
- package/dist/api/AgentOS.d.ts.map +1 -1
- package/dist/api/AgentOS.js +2 -0
- package/dist/api/AgentOS.js.map +1 -1
- package/dist/api/agency.d.ts +2 -0
- package/dist/api/agency.d.ts.map +1 -1
- package/dist/api/agency.js +2 -0
- package/dist/api/agency.js.map +1 -1
- package/dist/api/agent.d.ts +4 -0
- package/dist/api/agent.d.ts.map +1 -1
- package/dist/api/agent.js +2 -0
- package/dist/api/agent.js.map +1 -1
- package/dist/api/generateText.d.ts +25 -25
- package/dist/api/generateText.d.ts.map +1 -1
- package/dist/api/generateText.js +95 -25
- package/dist/api/generateText.js.map +1 -1
- package/dist/api/streamText.d.ts +5 -5
- package/dist/api/streamText.d.ts.map +1 -1
- package/dist/api/streamText.js +41 -2
- package/dist/api/streamText.js.map +1 -1
- package/dist/core/safety/LLMProviderHealthRegistry.d.ts +175 -0
- package/dist/core/safety/LLMProviderHealthRegistry.d.ts.map +1 -0
- package/dist/core/safety/LLMProviderHealthRegistry.js +261 -0
- package/dist/core/safety/LLMProviderHealthRegistry.js.map +1 -0
- package/dist/core/safety/index.d.ts +2 -0
- package/dist/core/safety/index.d.ts.map +1 -1
- package/dist/core/safety/index.js +1 -0
- package/dist/core/safety/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api/streamText.js
CHANGED
|
@@ -15,6 +15,7 @@ import { adaptTools } from './runtime/toolAdapter.js';
|
|
|
15
15
|
import { buildFallbackChain, createPlan, isRetryableError, resolveChainOfThought, } from './generateText.js';
|
|
16
16
|
import { resolveDynamicToolCalls } from './runtime/dynamicToolCalling.js';
|
|
17
17
|
import { StreamingReconstructor } from '../core/llm/streaming/StreamingReconstructor.js';
|
|
18
|
+
import { globalLLMProviderHealth } from '../core/safety/LLMProviderHealthRegistry.js';
|
|
18
19
|
import { recordAgentOSTurnMetrics, startAgentOSSpan } from '../safety/evaluation/observability/otel.js';
|
|
19
20
|
import { createLogger } from '../core/logging/loggerFactory.js';
|
|
20
21
|
const fallbackLogger = createLogger('fallback');
|
|
@@ -138,13 +139,24 @@ export function streamText(opts) {
|
|
|
138
139
|
apiKey: opts.apiKey,
|
|
139
140
|
baseUrl: opts.baseUrl,
|
|
140
141
|
});
|
|
141
|
-
const manager = await createProviderManager(resolved);
|
|
142
142
|
recordedProviderId = resolved.providerId;
|
|
143
143
|
recordedModelId = resolved.modelId;
|
|
144
144
|
// Resolve the eagerly-exposed routing Promises so callers
|
|
145
145
|
// logging telemetry don't have to wait for the stream to drain.
|
|
146
146
|
resolveProviderId(resolved.providerId);
|
|
147
147
|
resolveModelId(resolved.modelId);
|
|
148
|
+
// Provider-health circuit-breaker check. See
|
|
149
|
+
// {@link LLMProviderHealthRegistry} for the policy. Mirrors the
|
|
150
|
+
// generateText path so a 402 on the OpenRouter REST endpoint
|
|
151
|
+
// short-circuits streaming consumers in the same process too.
|
|
152
|
+
if (globalLLMProviderHealth.isOpen(resolved.providerId)) {
|
|
153
|
+
const stats = globalLLMProviderHealth.getStats(resolved.providerId);
|
|
154
|
+
const err = new Error(`[503] Provider '${resolved.providerId}' circuit open; cooldown ${stats?.cooldownRemainingMs ?? 0}ms`);
|
|
155
|
+
err.name = 'LLMProviderCircuitOpenError';
|
|
156
|
+
err.httpStatus = 503;
|
|
157
|
+
throw err;
|
|
158
|
+
}
|
|
159
|
+
const manager = await createProviderManager(resolved);
|
|
148
160
|
const provider = manager.getProvider(resolved.providerId);
|
|
149
161
|
if (!provider)
|
|
150
162
|
throw new Error(`Provider ${resolved.providerId} not available.`);
|
|
@@ -171,7 +183,7 @@ export function streamText(opts) {
|
|
|
171
183
|
}
|
|
172
184
|
}
|
|
173
185
|
else {
|
|
174
|
-
// Structured SystemContentBlock[]
|
|
186
|
+
// Structured SystemContentBlock[]: convert to content parts with cache_control
|
|
175
187
|
const blocks = opts.system;
|
|
176
188
|
const parts = blocks.map(block => ({
|
|
177
189
|
type: 'text',
|
|
@@ -500,9 +512,21 @@ export function streamText(opts) {
|
|
|
500
512
|
resolveText(finalText);
|
|
501
513
|
resolveUsage(usage);
|
|
502
514
|
resolveToolCalls(allToolCalls);
|
|
515
|
+
// Primary streaming attempt succeeded: reset the failure streak
|
|
516
|
+
// so a future transient error starts fresh. See
|
|
517
|
+
// {@link LLMProviderHealthRegistry}.
|
|
518
|
+
if (recordedProviderId) {
|
|
519
|
+
globalLLMProviderHealth.recordSuccess(recordedProviderId);
|
|
520
|
+
}
|
|
503
521
|
}
|
|
504
522
|
catch (err) {
|
|
505
523
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
524
|
+
// Record the failure on the provider-health registry. Synthetic
|
|
525
|
+
// circuit-open errors are skipped because they're already a
|
|
526
|
+
// *consequence* of the registry, not a new failure to record.
|
|
527
|
+
if (recordedProviderId && error.name !== 'LLMProviderCircuitOpenError') {
|
|
528
|
+
globalLLMProviderHealth.recordFailure(recordedProviderId, error);
|
|
529
|
+
}
|
|
506
530
|
// ── Fallback chain for streaming ──────────────────────────────
|
|
507
531
|
// When the primary provider fails with a retryable error and
|
|
508
532
|
// fallbackProviders are configured, delegate to a new streamText
|
|
@@ -519,6 +543,21 @@ export function streamText(opts) {
|
|
|
519
543
|
let attempt = 0;
|
|
520
544
|
for (const fb of effectiveFallbacks) {
|
|
521
545
|
attempt += 1;
|
|
546
|
+
// Skip fallback entries with an open breaker: the recursive
|
|
547
|
+
// streamText below would short-circuit at the same isOpen()
|
|
548
|
+
// check, but the outer skip avoids the extra log noise +
|
|
549
|
+
// recursion overhead.
|
|
550
|
+
if (globalLLMProviderHealth.isOpen(fb.provider)) {
|
|
551
|
+
fallbackLogger.info('streaming provider fallback skipped (circuit open)', {
|
|
552
|
+
event: 'fallback_skipped_circuit_open',
|
|
553
|
+
api: 'streamText',
|
|
554
|
+
primaryProvider: recordedProviderId,
|
|
555
|
+
fallbackProvider: fb.provider,
|
|
556
|
+
fallbackModel: fb.model,
|
|
557
|
+
attempt,
|
|
558
|
+
});
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
522
561
|
try {
|
|
523
562
|
fallbackLogger.info('streaming provider fallback triggered', {
|
|
524
563
|
event: 'fallback_fired',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamText.js","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"streamText.js","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file LLMProviderHealthRegistry.ts
|
|
3
|
+
* @module @framers/agentos/core/safety/LLMProviderHealthRegistry
|
|
4
|
+
* @description
|
|
5
|
+
* Process-lifetime memory of LLM provider health, indexed by `providerId`.
|
|
6
|
+
*
|
|
7
|
+
* **The problem this solves.** The `generateText` / `streamText` fallback
|
|
8
|
+
* chain walks providers correctly inside a single call (try OpenRouter ->
|
|
9
|
+
* on 402, fall back to OpenAI). But each *new* call starts over from
|
|
10
|
+
* scratch. When OpenRouter is in a sustained 402 state (credits
|
|
11
|
+
* exhausted), every subsequent call still tries OpenRouter first, eats
|
|
12
|
+
* the TLS round-trip + the 402 response, then falls back. Across a long
|
|
13
|
+
* batch job (compile-time enrichment, backfill sweeps), this stacks up
|
|
14
|
+
* to minutes of pure wasted latency.
|
|
15
|
+
*
|
|
16
|
+
* **What this adds.** A status-aware circuit breaker per provider.
|
|
17
|
+
* After the first 402 / 401 / 403, subsequent `isOpen()` checks return
|
|
18
|
+
* `true` for a cooldown window, so the caller can skip that provider
|
|
19
|
+
* entirely without retrying. Transient classes (429, 5xx) require a
|
|
20
|
+
* small streak before tripping the breaker, matching the "still worth
|
|
21
|
+
* trying" semantics of rate limits and intermittent server errors.
|
|
22
|
+
*
|
|
23
|
+
* | Error class | Threshold | Cooldown |
|
|
24
|
+
* | -------------------------- | --------- | -------- |
|
|
25
|
+
* | 402 insufficient credits | 1 fail | 5 min |
|
|
26
|
+
* | 401, 403 auth/forbidden | 1 fail | 30 min |
|
|
27
|
+
* | 429 rate limit | 3 fails | 30 s |
|
|
28
|
+
* | 5xx + unclassifiable | 5 fails | 60 s |
|
|
29
|
+
*
|
|
30
|
+
* The cooldown numbers reflect operational realities: a 402 might
|
|
31
|
+
* resolve in minutes once the operator tops up credits, while a 401
|
|
32
|
+
* usually means a bad key that needs an env change + redeploy, so a
|
|
33
|
+
* longer cool-down avoids hammering the provider while the human fix
|
|
34
|
+
* is in flight. 429 cool-downs are intentionally short because rate
|
|
35
|
+
* limits typically lift in a single billing interval.
|
|
36
|
+
*
|
|
37
|
+
* **Design constraints.**
|
|
38
|
+
* - Pure in-process state. No external store, no IPC. The registry is
|
|
39
|
+
* reset on every server restart by design: provider state is
|
|
40
|
+
* ephemeral and rediscovered on the next call.
|
|
41
|
+
* - Time-source via `Date.now()` so vitest's `vi.useFakeTimers()` can
|
|
42
|
+
* advance the clock deterministically in tests.
|
|
43
|
+
* - The error classifier is intentionally forgiving: it reads from a
|
|
44
|
+
* `[NNN]` prefix in the message (the shape `OpenRouterProvider`
|
|
45
|
+
* already emits), from `error.statusCode`, OR from `error.status`
|
|
46
|
+
* (the Anthropic SDK shape). An error with no extractable code is
|
|
47
|
+
* treated as transient: better to under-protect than to lock out a
|
|
48
|
+
* healthy provider on a one-off network blip.
|
|
49
|
+
* - `recordSuccess()` clears the streak counter but does NOT shorten a
|
|
50
|
+
* currently-open cooldown. The breaker stays open until the cooldown
|
|
51
|
+
* expires; a successful probe doesn't reset the wall clock, since
|
|
52
|
+
* the breaker is open precisely because we want to stop probing for
|
|
53
|
+
* a window.
|
|
54
|
+
*
|
|
55
|
+
* **Why not reuse the existing `CircuitBreaker`?** That primitive uses
|
|
56
|
+
* a single failure-threshold + cooldown pair per instance. The
|
|
57
|
+
* status-aware policy here needs per-error-class behavior: a single
|
|
58
|
+
* config can't express "open on 1 failure for 402 but 3 for 429" with
|
|
59
|
+
* the same instance. A bespoke registry is shorter and clearer than
|
|
60
|
+
* juggling four breakers per provider.
|
|
61
|
+
*
|
|
62
|
+
* @example Wiring into the fallback router
|
|
63
|
+
* ```ts
|
|
64
|
+
* import { globalLLMProviderHealth } from '../../core/safety/LLMProviderHealthRegistry';
|
|
65
|
+
*
|
|
66
|
+
* // Before the primary call:
|
|
67
|
+
* if (globalLLMProviderHealth.isOpen(primaryProviderId)) {
|
|
68
|
+
* // Skip the primary entirely; go straight to the fallback chain.
|
|
69
|
+
* return tryFallbackChain(...);
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* try {
|
|
73
|
+
* const result = await callPrimary();
|
|
74
|
+
* globalLLMProviderHealth.recordSuccess(primaryProviderId);
|
|
75
|
+
* return result;
|
|
76
|
+
* } catch (err) {
|
|
77
|
+
* globalLLMProviderHealth.recordFailure(primaryProviderId, err);
|
|
78
|
+
* throw err;
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
/** Snapshot of breaker state for a single provider. */
|
|
83
|
+
export interface LLMProviderHealthStats {
|
|
84
|
+
/** Provider id this snapshot describes. */
|
|
85
|
+
providerId: string;
|
|
86
|
+
/** Whether the breaker is currently open. */
|
|
87
|
+
state: 'closed' | 'open';
|
|
88
|
+
/** Milliseconds remaining until the breaker re-closes (0 when closed). */
|
|
89
|
+
cooldownRemainingMs: number;
|
|
90
|
+
/** Number of failures accumulated within the streak window. */
|
|
91
|
+
failureCount: number;
|
|
92
|
+
/** Last HTTP status code observed for this provider (null if never failed). */
|
|
93
|
+
lastStatusCode: number | null;
|
|
94
|
+
/** Wall-clock ms when the last failure was recorded. */
|
|
95
|
+
lastFailureAt: number | null;
|
|
96
|
+
/** Total number of times this provider has tripped open. */
|
|
97
|
+
totalTrips: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Extract an HTTP status code from a thrown error. Reads, in order:
|
|
101
|
+
* 1. `[NNN] ...` prefix in `error.message`: matches the shape
|
|
102
|
+
* `OpenRouterProvider` decorates its errors with so the existing
|
|
103
|
+
* `isRetryableError` regex can route on them.
|
|
104
|
+
* 2. `error.statusCode` numeric property: `OpenRouterProviderError`
|
|
105
|
+
* sets this explicitly.
|
|
106
|
+
* 3. `error.status` numeric property: the Anthropic / OpenAI SDK
|
|
107
|
+
* shape.
|
|
108
|
+
*
|
|
109
|
+
* Returns `null` when no status code can be extracted; the caller
|
|
110
|
+
* treats that as the conservative transient class.
|
|
111
|
+
*
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
export declare function classifyErrorStatus(error: unknown): number | null;
|
|
115
|
+
/**
|
|
116
|
+
* Per-process registry of provider health. Construct once per agentos
|
|
117
|
+
* runtime; the module-level `globalLLMProviderHealth` singleton is
|
|
118
|
+
* what the in-tree router code uses. Tests instantiate their own
|
|
119
|
+
* registry to keep state isolated per test case.
|
|
120
|
+
*
|
|
121
|
+
* @public
|
|
122
|
+
*/
|
|
123
|
+
export declare class LLMProviderHealthRegistry {
|
|
124
|
+
private readonly records;
|
|
125
|
+
/**
|
|
126
|
+
* Returns `true` when the named provider's breaker is open. Callers
|
|
127
|
+
* should skip the provider entirely while open: going past `isOpen`
|
|
128
|
+
* defeats the whole point of the registry (paying the network
|
|
129
|
+
* round-trip for a known-bad provider).
|
|
130
|
+
*/
|
|
131
|
+
isOpen(providerId: string): boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Record a failed attempt against the provider. Classifies the
|
|
134
|
+
* error by HTTP status (see {@link classifyErrorStatus}) and either
|
|
135
|
+
* trips the breaker (for permanent classes 401/402/403) or
|
|
136
|
+
* increments the streak counter toward the threshold for transient
|
|
137
|
+
* classes (429, 5xx, unclassifiable).
|
|
138
|
+
*
|
|
139
|
+
* Safe to call regardless of whether the breaker is already open:
|
|
140
|
+
* a repeat failure on an open breaker just refreshes the
|
|
141
|
+
* cooldown for the new error class.
|
|
142
|
+
*/
|
|
143
|
+
recordFailure(providerId: string, error: unknown): void;
|
|
144
|
+
/**
|
|
145
|
+
* Record a successful attempt against the provider. Resets the
|
|
146
|
+
* streak counter so a future transient failure starts fresh, but
|
|
147
|
+
* does NOT shorten an already-open cooldown (the breaker is open
|
|
148
|
+
* precisely because we want to stop probing).
|
|
149
|
+
*/
|
|
150
|
+
recordSuccess(providerId: string): void;
|
|
151
|
+
/**
|
|
152
|
+
* Clear all state for a single provider, or for every provider
|
|
153
|
+
* when called without an id. Used by tests to isolate state across
|
|
154
|
+
* cases; production callers generally don't need this: the
|
|
155
|
+
* cooldown logic + success path handles everything.
|
|
156
|
+
*/
|
|
157
|
+
reset(providerId?: string): void;
|
|
158
|
+
/**
|
|
159
|
+
* Read-only snapshot for diagnostics / admin endpoints. Returns
|
|
160
|
+
* `null` when the provider has never been touched (no failures, no
|
|
161
|
+
* successes recorded).
|
|
162
|
+
*/
|
|
163
|
+
getStats(providerId: string): LLMProviderHealthStats | null;
|
|
164
|
+
private makeRecord;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Process-singleton registry that the in-tree `generateText` /
|
|
168
|
+
* `streamText` fallback router consults before every primary-provider
|
|
169
|
+
* attempt. Tests should construct their own `LLMProviderHealthRegistry`
|
|
170
|
+
* instance and inject it via the dependency-injected `opts.healthRegistry`
|
|
171
|
+
* field rather than reaching into this singleton: that keeps the
|
|
172
|
+
* global state stable across the test run.
|
|
173
|
+
*/
|
|
174
|
+
export declare const globalLLMProviderHealth: LLMProviderHealthRegistry;
|
|
175
|
+
//# sourceMappingURL=LLMProviderHealthRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMProviderHealthRegistry.d.ts","sourceRoot":"","sources":["../../../src/core/safety/LLMProviderHealthRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAEH,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wDAAwD;IACxD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAoBjE;AAUD;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IAExE;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAcnC;;;;;;;;;;OAUG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAkBvD;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMvC;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAQhC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAiB3D,OAAO,CAAC,UAAU;CASnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,yBAA2D,CAAC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file LLMProviderHealthRegistry.ts
|
|
3
|
+
* @module @framers/agentos/core/safety/LLMProviderHealthRegistry
|
|
4
|
+
* @description
|
|
5
|
+
* Process-lifetime memory of LLM provider health, indexed by `providerId`.
|
|
6
|
+
*
|
|
7
|
+
* **The problem this solves.** The `generateText` / `streamText` fallback
|
|
8
|
+
* chain walks providers correctly inside a single call (try OpenRouter ->
|
|
9
|
+
* on 402, fall back to OpenAI). But each *new* call starts over from
|
|
10
|
+
* scratch. When OpenRouter is in a sustained 402 state (credits
|
|
11
|
+
* exhausted), every subsequent call still tries OpenRouter first, eats
|
|
12
|
+
* the TLS round-trip + the 402 response, then falls back. Across a long
|
|
13
|
+
* batch job (compile-time enrichment, backfill sweeps), this stacks up
|
|
14
|
+
* to minutes of pure wasted latency.
|
|
15
|
+
*
|
|
16
|
+
* **What this adds.** A status-aware circuit breaker per provider.
|
|
17
|
+
* After the first 402 / 401 / 403, subsequent `isOpen()` checks return
|
|
18
|
+
* `true` for a cooldown window, so the caller can skip that provider
|
|
19
|
+
* entirely without retrying. Transient classes (429, 5xx) require a
|
|
20
|
+
* small streak before tripping the breaker, matching the "still worth
|
|
21
|
+
* trying" semantics of rate limits and intermittent server errors.
|
|
22
|
+
*
|
|
23
|
+
* | Error class | Threshold | Cooldown |
|
|
24
|
+
* | -------------------------- | --------- | -------- |
|
|
25
|
+
* | 402 insufficient credits | 1 fail | 5 min |
|
|
26
|
+
* | 401, 403 auth/forbidden | 1 fail | 30 min |
|
|
27
|
+
* | 429 rate limit | 3 fails | 30 s |
|
|
28
|
+
* | 5xx + unclassifiable | 5 fails | 60 s |
|
|
29
|
+
*
|
|
30
|
+
* The cooldown numbers reflect operational realities: a 402 might
|
|
31
|
+
* resolve in minutes once the operator tops up credits, while a 401
|
|
32
|
+
* usually means a bad key that needs an env change + redeploy, so a
|
|
33
|
+
* longer cool-down avoids hammering the provider while the human fix
|
|
34
|
+
* is in flight. 429 cool-downs are intentionally short because rate
|
|
35
|
+
* limits typically lift in a single billing interval.
|
|
36
|
+
*
|
|
37
|
+
* **Design constraints.**
|
|
38
|
+
* - Pure in-process state. No external store, no IPC. The registry is
|
|
39
|
+
* reset on every server restart by design: provider state is
|
|
40
|
+
* ephemeral and rediscovered on the next call.
|
|
41
|
+
* - Time-source via `Date.now()` so vitest's `vi.useFakeTimers()` can
|
|
42
|
+
* advance the clock deterministically in tests.
|
|
43
|
+
* - The error classifier is intentionally forgiving: it reads from a
|
|
44
|
+
* `[NNN]` prefix in the message (the shape `OpenRouterProvider`
|
|
45
|
+
* already emits), from `error.statusCode`, OR from `error.status`
|
|
46
|
+
* (the Anthropic SDK shape). An error with no extractable code is
|
|
47
|
+
* treated as transient: better to under-protect than to lock out a
|
|
48
|
+
* healthy provider on a one-off network blip.
|
|
49
|
+
* - `recordSuccess()` clears the streak counter but does NOT shorten a
|
|
50
|
+
* currently-open cooldown. The breaker stays open until the cooldown
|
|
51
|
+
* expires; a successful probe doesn't reset the wall clock, since
|
|
52
|
+
* the breaker is open precisely because we want to stop probing for
|
|
53
|
+
* a window.
|
|
54
|
+
*
|
|
55
|
+
* **Why not reuse the existing `CircuitBreaker`?** That primitive uses
|
|
56
|
+
* a single failure-threshold + cooldown pair per instance. The
|
|
57
|
+
* status-aware policy here needs per-error-class behavior: a single
|
|
58
|
+
* config can't express "open on 1 failure for 402 but 3 for 429" with
|
|
59
|
+
* the same instance. A bespoke registry is shorter and clearer than
|
|
60
|
+
* juggling four breakers per provider.
|
|
61
|
+
*
|
|
62
|
+
* @example Wiring into the fallback router
|
|
63
|
+
* ```ts
|
|
64
|
+
* import { globalLLMProviderHealth } from '../../core/safety/LLMProviderHealthRegistry';
|
|
65
|
+
*
|
|
66
|
+
* // Before the primary call:
|
|
67
|
+
* if (globalLLMProviderHealth.isOpen(primaryProviderId)) {
|
|
68
|
+
* // Skip the primary entirely; go straight to the fallback chain.
|
|
69
|
+
* return tryFallbackChain(...);
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* try {
|
|
73
|
+
* const result = await callPrimary();
|
|
74
|
+
* globalLLMProviderHealth.recordSuccess(primaryProviderId);
|
|
75
|
+
* return result;
|
|
76
|
+
* } catch (err) {
|
|
77
|
+
* globalLLMProviderHealth.recordFailure(primaryProviderId, err);
|
|
78
|
+
* throw err;
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
const POLICY_402 = { threshold: 1, cooldownMs: 5 * 60000 };
|
|
83
|
+
const POLICY_AUTH = { threshold: 1, cooldownMs: 30 * 60000 };
|
|
84
|
+
const POLICY_429 = { threshold: 3, cooldownMs: 30000 };
|
|
85
|
+
const POLICY_TRANSIENT = { threshold: 5, cooldownMs: 60000 };
|
|
86
|
+
/**
|
|
87
|
+
* Extract an HTTP status code from a thrown error. Reads, in order:
|
|
88
|
+
* 1. `[NNN] ...` prefix in `error.message`: matches the shape
|
|
89
|
+
* `OpenRouterProvider` decorates its errors with so the existing
|
|
90
|
+
* `isRetryableError` regex can route on them.
|
|
91
|
+
* 2. `error.statusCode` numeric property: `OpenRouterProviderError`
|
|
92
|
+
* sets this explicitly.
|
|
93
|
+
* 3. `error.status` numeric property: the Anthropic / OpenAI SDK
|
|
94
|
+
* shape.
|
|
95
|
+
*
|
|
96
|
+
* Returns `null` when no status code can be extracted; the caller
|
|
97
|
+
* treats that as the conservative transient class.
|
|
98
|
+
*
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
export function classifyErrorStatus(error) {
|
|
102
|
+
if (!error || typeof error !== 'object')
|
|
103
|
+
return null;
|
|
104
|
+
const obj = error;
|
|
105
|
+
// 1. Prefix in message
|
|
106
|
+
if (typeof obj.message === 'string') {
|
|
107
|
+
const match = obj.message.match(/^\[(\d{3})\]/);
|
|
108
|
+
if (match) {
|
|
109
|
+
const code = parseInt(match[1], 10);
|
|
110
|
+
if (Number.isFinite(code) && code >= 100 && code < 600)
|
|
111
|
+
return code;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// 2. statusCode property
|
|
115
|
+
if (typeof obj.statusCode === 'number' && obj.statusCode >= 100 && obj.statusCode < 600) {
|
|
116
|
+
return obj.statusCode;
|
|
117
|
+
}
|
|
118
|
+
// 3. status property
|
|
119
|
+
if (typeof obj.status === 'number' && obj.status >= 100 && obj.status < 600) {
|
|
120
|
+
return obj.status;
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
function policyForStatus(status) {
|
|
125
|
+
if (status === 402)
|
|
126
|
+
return POLICY_402;
|
|
127
|
+
if (status === 401 || status === 403)
|
|
128
|
+
return POLICY_AUTH;
|
|
129
|
+
if (status === 429)
|
|
130
|
+
return POLICY_429;
|
|
131
|
+
// 5xx + null (unclassifiable) all fall through to transient.
|
|
132
|
+
return POLICY_TRANSIENT;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Per-process registry of provider health. Construct once per agentos
|
|
136
|
+
* runtime; the module-level `globalLLMProviderHealth` singleton is
|
|
137
|
+
* what the in-tree router code uses. Tests instantiate their own
|
|
138
|
+
* registry to keep state isolated per test case.
|
|
139
|
+
*
|
|
140
|
+
* @public
|
|
141
|
+
*/
|
|
142
|
+
export class LLMProviderHealthRegistry {
|
|
143
|
+
constructor() {
|
|
144
|
+
this.records = new Map();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns `true` when the named provider's breaker is open. Callers
|
|
148
|
+
* should skip the provider entirely while open: going past `isOpen`
|
|
149
|
+
* defeats the whole point of the registry (paying the network
|
|
150
|
+
* round-trip for a known-bad provider).
|
|
151
|
+
*/
|
|
152
|
+
isOpen(providerId) {
|
|
153
|
+
const record = this.records.get(providerId);
|
|
154
|
+
if (!record)
|
|
155
|
+
return false;
|
|
156
|
+
if (record.openUntil === 0)
|
|
157
|
+
return false;
|
|
158
|
+
if (Date.now() >= record.openUntil) {
|
|
159
|
+
// Cooldown elapsed: half-close: reset the breaker so the next
|
|
160
|
+
// failure starts a fresh streak count, but allow the call through.
|
|
161
|
+
record.openUntil = 0;
|
|
162
|
+
record.failureCount = 0;
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Record a failed attempt against the provider. Classifies the
|
|
169
|
+
* error by HTTP status (see {@link classifyErrorStatus}) and either
|
|
170
|
+
* trips the breaker (for permanent classes 401/402/403) or
|
|
171
|
+
* increments the streak counter toward the threshold for transient
|
|
172
|
+
* classes (429, 5xx, unclassifiable).
|
|
173
|
+
*
|
|
174
|
+
* Safe to call regardless of whether the breaker is already open:
|
|
175
|
+
* a repeat failure on an open breaker just refreshes the
|
|
176
|
+
* cooldown for the new error class.
|
|
177
|
+
*/
|
|
178
|
+
recordFailure(providerId, error) {
|
|
179
|
+
const status = classifyErrorStatus(error);
|
|
180
|
+
const policy = policyForStatus(status);
|
|
181
|
+
const record = this.records.get(providerId) ?? this.makeRecord();
|
|
182
|
+
record.failureCount += 1;
|
|
183
|
+
record.lastStatusCode = status;
|
|
184
|
+
record.lastFailureAt = Date.now();
|
|
185
|
+
if (record.failureCount >= policy.threshold) {
|
|
186
|
+
// Trip: but only count this as a new trip event if the
|
|
187
|
+
// breaker was previously closed.
|
|
188
|
+
if (record.openUntil === 0 || Date.now() >= record.openUntil) {
|
|
189
|
+
record.totalTrips += 1;
|
|
190
|
+
}
|
|
191
|
+
record.openUntil = Date.now() + policy.cooldownMs;
|
|
192
|
+
}
|
|
193
|
+
this.records.set(providerId, record);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Record a successful attempt against the provider. Resets the
|
|
197
|
+
* streak counter so a future transient failure starts fresh, but
|
|
198
|
+
* does NOT shorten an already-open cooldown (the breaker is open
|
|
199
|
+
* precisely because we want to stop probing).
|
|
200
|
+
*/
|
|
201
|
+
recordSuccess(providerId) {
|
|
202
|
+
const record = this.records.get(providerId);
|
|
203
|
+
if (!record)
|
|
204
|
+
return;
|
|
205
|
+
record.failureCount = 0;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Clear all state for a single provider, or for every provider
|
|
209
|
+
* when called without an id. Used by tests to isolate state across
|
|
210
|
+
* cases; production callers generally don't need this: the
|
|
211
|
+
* cooldown logic + success path handles everything.
|
|
212
|
+
*/
|
|
213
|
+
reset(providerId) {
|
|
214
|
+
if (providerId === undefined) {
|
|
215
|
+
this.records.clear();
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
this.records.delete(providerId);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Read-only snapshot for diagnostics / admin endpoints. Returns
|
|
222
|
+
* `null` when the provider has never been touched (no failures, no
|
|
223
|
+
* successes recorded).
|
|
224
|
+
*/
|
|
225
|
+
getStats(providerId) {
|
|
226
|
+
const record = this.records.get(providerId);
|
|
227
|
+
if (!record)
|
|
228
|
+
return null;
|
|
229
|
+
const now = Date.now();
|
|
230
|
+
const cooldownRemainingMs = Math.max(0, record.openUntil - now);
|
|
231
|
+
const state = cooldownRemainingMs > 0 ? 'open' : 'closed';
|
|
232
|
+
return {
|
|
233
|
+
providerId,
|
|
234
|
+
state,
|
|
235
|
+
cooldownRemainingMs,
|
|
236
|
+
failureCount: record.failureCount,
|
|
237
|
+
lastStatusCode: record.lastStatusCode,
|
|
238
|
+
lastFailureAt: record.lastFailureAt,
|
|
239
|
+
totalTrips: record.totalTrips,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
makeRecord() {
|
|
243
|
+
return {
|
|
244
|
+
openUntil: 0,
|
|
245
|
+
failureCount: 0,
|
|
246
|
+
lastStatusCode: null,
|
|
247
|
+
lastFailureAt: null,
|
|
248
|
+
totalTrips: 0,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Process-singleton registry that the in-tree `generateText` /
|
|
254
|
+
* `streamText` fallback router consults before every primary-provider
|
|
255
|
+
* attempt. Tests should construct their own `LLMProviderHealthRegistry`
|
|
256
|
+
* instance and inject it via the dependency-injected `opts.healthRegistry`
|
|
257
|
+
* field rather than reaching into this singleton: that keeps the
|
|
258
|
+
* global state stable across the test run.
|
|
259
|
+
*/
|
|
260
|
+
export const globalLLMProviderHealth = new LLMProviderHealthRegistry();
|
|
261
|
+
//# sourceMappingURL=LLMProviderHealthRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMProviderHealthRegistry.js","sourceRoot":"","sources":["../../../src/core/safety/LLMProviderHealthRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/safety/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/safety/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC"}
|