@providerkit/core 0.21.1 → 0.23.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.
- package/README.md +7 -7
- package/dist/attribution.d.ts +2 -2
- package/dist/auth/flows.d.ts.map +1 -1
- package/dist/auth/flows.js +5 -5
- package/dist/auth/flows.js.map +1 -1
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth.d.ts +12 -0
- package/dist/auth/oauth.d.ts.map +1 -1
- package/dist/auth/oauth.js +19 -1
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/token-source.d.ts +9 -3
- package/dist/auth/token-source.d.ts.map +1 -1
- package/dist/auth/token-source.js +24 -9
- package/dist/auth/token-source.js.map +1 -1
- package/dist/auth/with-token.d.ts +29 -0
- package/dist/auth/with-token.d.ts.map +1 -0
- package/dist/auth/with-token.js +85 -0
- package/dist/auth/with-token.js.map +1 -0
- package/dist/capability.d.ts +9 -9
- package/dist/capability.js +9 -9
- package/dist/capability.js.map +1 -1
- package/dist/context.d.ts +43 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +123 -4
- package/dist/context.js.map +1 -1
- package/dist/errors.d.ts +26 -17
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +57 -18
- package/dist/errors.js.map +1 -1
- package/dist/fallback.d.ts +45 -1
- package/dist/fallback.d.ts.map +1 -1
- package/dist/fallback.js +138 -75
- package/dist/fallback.js.map +1 -1
- package/dist/image.d.ts +1 -1
- package/dist/image.d.ts.map +1 -1
- package/dist/jev.d.ts +9 -9
- package/dist/jev.d.ts.map +1 -1
- package/dist/jev.js +1 -1
- package/dist/key-pool.d.ts +14 -8
- package/dist/key-pool.d.ts.map +1 -1
- package/dist/key-pool.js +35 -18
- package/dist/key-pool.js.map +1 -1
- package/dist/presets.d.ts +33 -24
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +25 -14
- package/dist/presets.js.map +1 -1
- package/dist/providers/anthropic.d.ts +5 -5
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +89 -34
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +2 -2
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +2 -1
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/gemini.d.ts +8 -2
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +117 -41
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts +12 -9
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +72 -21
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/responses.d.ts +3 -3
- package/dist/providers/responses.d.ts.map +1 -1
- package/dist/providers/responses.js +103 -57
- package/dist/providers/responses.js.map +1 -1
- package/dist/providers/zai.d.ts +2 -2
- package/dist/providers/zai.js +2 -2
- package/dist/rate-limit.d.ts +13 -3
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/rate-limit.js +10 -4
- package/dist/rate-limit.js.map +1 -1
- package/dist/retry.d.ts +16 -5
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +29 -16
- package/dist/retry.js.map +1 -1
- package/dist/schema.d.ts +6 -6
- package/dist/schema.js +8 -8
- package/dist/tool-args.d.ts +23 -1
- package/dist/tool-args.d.ts.map +1 -1
- package/dist/tool-args.js +30 -2
- package/dist/tool-args.js.map +1 -1
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +2 -2
- package/dist/tools.js.map +1 -1
- package/dist/transport.d.ts +40 -10
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +82 -21
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +37 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -11
- package/dist/types.js.map +1 -1
- package/dist/usage.d.ts +4 -4
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +3 -3
- package/dist/usage.js.map +1 -1
- package/dist/watchdog.d.ts +14 -12
- package/dist/watchdog.d.ts.map +1 -1
- package/dist/watchdog.js +35 -16
- package/dist/watchdog.js.map +1 -1
- package/dist/zod.d.ts +4 -4
- package/dist/zod.js +3 -3
- package/package.json +1 -1
- package/src/attribution.ts +2 -2
- package/src/auth/flows.ts +5 -4
- package/src/auth/index.ts +1 -0
- package/src/auth/oauth.ts +23 -1
- package/src/auth/token-source.ts +30 -11
- package/src/auth/with-token.ts +97 -0
- package/src/capability.ts +12 -12
- package/src/context.ts +141 -6
- package/src/errors.ts +63 -23
- package/src/fallback.ts +173 -75
- package/src/image.ts +1 -1
- package/src/jev.ts +11 -11
- package/src/key-pool.ts +37 -20
- package/src/presets.ts +38 -24
- package/src/providers/anthropic.ts +97 -38
- package/src/providers/factory.ts +4 -3
- package/src/providers/gemini.ts +121 -44
- package/src/providers/openai.ts +78 -25
- package/src/providers/responses.ts +113 -61
- package/src/providers/zai.ts +2 -2
- package/src/rate-limit.ts +35 -7
- package/src/retry.ts +46 -15
- package/src/schema.ts +8 -8
- package/src/tool-args.ts +46 -2
- package/src/tools.ts +4 -4
- package/src/transport.ts +103 -23
- package/src/types.ts +37 -23
- package/src/usage.ts +5 -5
- package/src/watchdog.ts +38 -19
- package/src/zod.ts +4 -4
package/dist/errors.js
CHANGED
|
@@ -44,7 +44,7 @@ export function isBackupEligible(kind) {
|
|
|
44
44
|
* 1. Caller aborts are never retryable.
|
|
45
45
|
* 2. An explicit `shouldRetry` directive on ProviderError (e.g. from server `x-should-retry`)
|
|
46
46
|
* 3. Non-retryable kinds (quota, context, model, entitlement, content, invalid) return false.
|
|
47
|
-
* 4. Excessive retry-after waits (exceeding `maxWaitMs`) return false
|
|
47
|
+
* 4. Excessive retry-after waits (exceeding `maxWaitMs`) return false. Long waits belong to fallbacks.
|
|
48
48
|
* 5. Transient kinds (rate, overload, network, timeout) return true.
|
|
49
49
|
* 6. Transport-level network faults (fetch failed, connection lost, SSL blips) return true.
|
|
50
50
|
*/
|
|
@@ -80,7 +80,7 @@ export class ProviderError extends Error {
|
|
|
80
80
|
window;
|
|
81
81
|
/** Explicit server directive (`x-should-retry`), overriding default classification. */
|
|
82
82
|
shouldRetry;
|
|
83
|
-
/** The provider's own response body, truncated
|
|
83
|
+
/** The provider's own response body, truncated. It carries the actual reason,
|
|
84
84
|
* otherwise lost behind "400 status code (no body)". */
|
|
85
85
|
body;
|
|
86
86
|
constructor(provider, kind, message, opts = {}) {
|
|
@@ -163,7 +163,7 @@ export function messageOf(err) {
|
|
|
163
163
|
* Everything readable about the failure as one searchable string: the message
|
|
164
164
|
* plus the parsed provider body. SDKs park the parsed body on `.error`, and
|
|
165
165
|
* that is where the real reason lives ("max_tokens too large", the quotaId,
|
|
166
|
-
* `"type": "billing_error"`). Scanned as
|
|
166
|
+
* `"type": "billing_error"`). Scanned as text: the error-type strings
|
|
167
167
|
* serialize into it, so no JSON walking is needed.
|
|
168
168
|
*/
|
|
169
169
|
function bodyTextOf(err) {
|
|
@@ -238,7 +238,7 @@ function isAbort(err) {
|
|
|
238
238
|
* A transport fault: the socket died before or during the response, so there
|
|
239
239
|
* is NO status and no body for the patterns below to read.
|
|
240
240
|
*
|
|
241
|
-
* The chain is walked because the useful code is rarely on the thrown error
|
|
241
|
+
* The chain is walked because the useful code is rarely on the thrown error:
|
|
242
242
|
* it sits on `cause`, sometimes several wrappers deep. Without this walk every
|
|
243
243
|
* network blip classifies as permanent, and a long run dies on its first
|
|
244
244
|
* hiccup, which is the single likeliest way to lose a minutes-long job.
|
|
@@ -292,6 +292,12 @@ const CONTEXT_PATTERNS = [
|
|
|
292
292
|
// "input length and `max_tokens` exceed context limit: 188059 + 20000 > 200000"
|
|
293
293
|
/input length and `?max_tokens`? exceed context limit/i,
|
|
294
294
|
/exceed(?:s|ed)? (?:the )?context limit/i,
|
|
295
|
+
// GitHub Copilot: "prompt token count of 270000 exceeds the limit of 128000",
|
|
296
|
+
// code `model_max_prompt_tokens_exceeded`. No other wording here reads it,
|
|
297
|
+
// so it landed on `invalid` and the conversation never compacted. cc-proxy
|
|
298
|
+
// shipped the same two patterns for the same reason (0.1.51).
|
|
299
|
+
/model_max_prompt_tokens_exceeded/i,
|
|
300
|
+
/prompt token count of \d+ exceeds the limit/i,
|
|
295
301
|
// Scoped to the thing that overflowed: a bare "exceeds the maximum" also
|
|
296
302
|
// covers image counts and per-minute token rates, which compaction can't fix.
|
|
297
303
|
/exceeds? the (?:model'?s? )?maximum (?:input |prompt |context )?(?:tokens?|length|context)/i,
|
|
@@ -398,7 +404,7 @@ const CONTENT_PATTERNS = [
|
|
|
398
404
|
* A throttle said in words rather than in a 429.
|
|
399
405
|
*
|
|
400
406
|
* Every other kind has body evidence; rate had only the status, which is
|
|
401
|
-
* exactly the evidence an in-band failure lacks
|
|
407
|
+
* exactly the evidence an in-band failure lacks. An SSE response is already
|
|
402
408
|
* 200 when the throttle lands, so the reason arrives as a payload with no
|
|
403
409
|
* status line at all. Checked below the status branches, so it only ever
|
|
404
410
|
* catches what would otherwise fall through to "unknown".
|
|
@@ -440,18 +446,18 @@ const matches = (patterns, text) => patterns.some((pattern) => pattern.test(text
|
|
|
440
446
|
* The kind of failure, from whatever was thrown.
|
|
441
447
|
*
|
|
442
448
|
* Body patterns outrank status for the 4xx family; within them, context beats
|
|
443
|
-
* entitlement beats quota beats auth
|
|
449
|
+
* entitlement beats quota beats auth. Each earlier category's fix is useless
|
|
444
450
|
* for the later ones.
|
|
445
451
|
*/
|
|
446
452
|
/**
|
|
447
|
-
* The kind of a failure that arrived as an HTTP response
|
|
453
|
+
* The kind of a failure that arrived as an HTTP response: a status and a body,
|
|
448
454
|
* with nothing thrown.
|
|
449
455
|
*
|
|
450
456
|
* `classify` below is for a caught error, and it reads `status` and the body
|
|
451
457
|
* text off that error when they are not passed separately. A response has no
|
|
452
458
|
* error object, so callers were inventing one to fill the slot: a bare body
|
|
453
459
|
* string, the same text twice, a `{ status, error }` literal. All three are
|
|
454
|
-
* inert
|
|
460
|
+
* inert (nothing on them can satisfy `isAbort` or `isTransportFailure`), so
|
|
455
461
|
* they were three spellings of `undefined`.
|
|
456
462
|
*/
|
|
457
463
|
export function classifyHttp(status, body) {
|
|
@@ -521,7 +527,7 @@ export function classify(err, status, body) {
|
|
|
521
527
|
/**
|
|
522
528
|
* How long the provider asked us to wait, in ms. Two dialects: Gemini's
|
|
523
529
|
* RetryInfo (`"retryDelay": "52s"`, inside the body) and the `Retry-After`
|
|
524
|
-
* header, which SDKs keep on the error. Honouring it beats guessing
|
|
530
|
+
* header, which SDKs keep on the error. Honouring it beats guessing: a
|
|
525
531
|
* backoff shorter than the window just burns an attempt.
|
|
526
532
|
*/
|
|
527
533
|
export function parseRetryAfterMs(err, body) {
|
|
@@ -592,6 +598,24 @@ export function parseContextOverflow(err, body) {
|
|
|
592
598
|
}
|
|
593
599
|
return undefined;
|
|
594
600
|
}
|
|
601
|
+
/**
|
|
602
|
+
* The HTTP status an in-band error's type stands for when it states none:
|
|
603
|
+
* Anthropic's types, then OpenAI's, read from `type` and then from a slug
|
|
604
|
+
* `code`. cc-proxy's table. A Map, so a type named after an Object method
|
|
605
|
+
* finds nothing rather than a function.
|
|
606
|
+
*/
|
|
607
|
+
const STATUS_BY_TYPE = new Map([
|
|
608
|
+
["invalid_request_error", 400],
|
|
609
|
+
["authentication_error", 401],
|
|
610
|
+
["permission_error", 403],
|
|
611
|
+
["not_found_error", 404],
|
|
612
|
+
["request_too_large", 413],
|
|
613
|
+
["rate_limit_error", 429],
|
|
614
|
+
["api_error", 500],
|
|
615
|
+
["server_error", 500],
|
|
616
|
+
["internal_server_error", 500],
|
|
617
|
+
["overloaded_error", 529],
|
|
618
|
+
]);
|
|
595
619
|
/**
|
|
596
620
|
* A failure the backend reports INSIDE an already-200 stream.
|
|
597
621
|
*
|
|
@@ -604,22 +628,37 @@ export function parseContextOverflow(err, body) {
|
|
|
604
628
|
* completion: retry sees nothing to retry, and a key pool never rotates off an
|
|
605
629
|
* exhausted key.
|
|
606
630
|
*
|
|
607
|
-
* `error` is the vendor's own payload, whatever shape it came in
|
|
631
|
+
* `error` is the vendor's own payload, whatever shape it came in: the numeric
|
|
608
632
|
* HTTP `code` Gemini and OpenRouter use, the slug OpenAI and Anthropic put in
|
|
609
633
|
* `code`/`type`, the canonical `status` name. The whole thing serializes into
|
|
610
634
|
* the searchable body, so RetryInfo's `retryDelay` is honoured wherever it sits.
|
|
611
635
|
*
|
|
636
|
+
* A number is a status only from 400 to 599. Vendors put their own codes in
|
|
637
|
+
* the same field: Z.ai's 1113 is an empty balance, and read as a status it was
|
|
638
|
+
* past 500, which skips the 4xx body patterns that name it quota and lands on
|
|
639
|
+
* overload. With no status stated, the error's type says which one it stands
|
|
640
|
+
* for (`STATUS_BY_TYPE`), and the body still outranks it (invariant 3).
|
|
641
|
+
*
|
|
612
642
|
* `unknown` is floored to "overload" rather than kept: a stream that dies after
|
|
613
643
|
* its headers is by construction a transient upstream fault, and "unknown" is
|
|
614
|
-
* never retried.
|
|
615
|
-
*
|
|
616
|
-
*
|
|
644
|
+
* never retried. Only an error with no status and no type it knows gets there.
|
|
645
|
+
* Before the type was read, one `invalid_request_error` in words no pattern
|
|
646
|
+
* knew was floored too: retried, then walked across every backup, cooling each
|
|
647
|
+
* for 30s, on a request that fails the same way everywhere. Everything the
|
|
648
|
+
* body does name keeps its own kind, which is what tells the caller to wait,
|
|
649
|
+
* rotate a key, or compact instead of retrying a failure that will repeat.
|
|
617
650
|
*/
|
|
618
651
|
export function streamError(provider, error) {
|
|
619
652
|
const body = JSON.stringify(error ?? {}) ?? "";
|
|
620
|
-
const status =
|
|
653
|
+
const status = [
|
|
654
|
+
readNumber(error, "code"),
|
|
655
|
+
readNumber(error, "status"),
|
|
656
|
+
readNumber(error, "status_code"),
|
|
657
|
+
].find((value) => value !== undefined && value >= 400 && value < 600);
|
|
621
658
|
const code = readString(error, "code") ?? readString(error, "status") ?? readString(error, "type");
|
|
622
|
-
const
|
|
659
|
+
const typeStatus = STATUS_BY_TYPE.get(readString(error, "type") ?? "") ??
|
|
660
|
+
STATUS_BY_TYPE.get(readString(error, "code") ?? "");
|
|
661
|
+
const kind = classifyHttp(status ?? typeStatus, body);
|
|
623
662
|
return new ProviderError(provider, kind === "unknown" ? "overload" : kind, `${provider} stream error: ${readString(error, "message") ?? code ?? "no reason given"}`, {
|
|
624
663
|
...(status !== undefined ? { status } : {}),
|
|
625
664
|
...(code ? { code } : {}),
|
|
@@ -629,7 +668,7 @@ export function streamError(provider, error) {
|
|
|
629
668
|
});
|
|
630
669
|
}
|
|
631
670
|
/** The reset a stream error carries: the body's clock, plus the rate-limit
|
|
632
|
-
* headers the ChatGPT backend mirrors
|
|
671
|
+
* headers the ChatGPT backend mirrors into its error frame, the only place a
|
|
633
672
|
* failure after the 200 can say which window ran out. */
|
|
634
673
|
function readReset(error, body) {
|
|
635
674
|
const raw = typeof error === "object" && error !== null
|
|
@@ -652,7 +691,7 @@ function readReset(error, body) {
|
|
|
652
691
|
* read it: a caller that never checks the finish keeps half an answer as if it
|
|
653
692
|
* were the whole one, the ledger records a billed turn as free, and no pool
|
|
654
693
|
* learns the endpoint is dropping streams. cc-proxy shipped the same fix
|
|
655
|
-
* (0.1.39) for the same reason
|
|
694
|
+
* (0.1.39) for the same reason: "instead of marking affected streamed
|
|
656
695
|
* responses as successful".
|
|
657
696
|
*
|
|
658
697
|
* `network`, because that is what it is: the same failure as a socket that
|
|
@@ -663,7 +702,7 @@ function readReset(error, body) {
|
|
|
663
702
|
export function streamCut(provider) {
|
|
664
703
|
return new ProviderError(provider, "network", `${provider}: the stream ended before the turn did`);
|
|
665
704
|
}
|
|
666
|
-
/** The
|
|
705
|
+
/** The failure details you can log, so a dead run never reads
|
|
667
706
|
* "400 status code (no body)". */
|
|
668
707
|
export function describeProviderError(err) {
|
|
669
708
|
if (err instanceof ProviderError) {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/fallback.d.ts
CHANGED
|
@@ -18,6 +18,20 @@ export interface FallbackOptions<T> {
|
|
|
18
18
|
retryAtMs: number;
|
|
19
19
|
window?: RateLimitWindow;
|
|
20
20
|
}) => void;
|
|
21
|
+
/** Where cooldowns live; a private Map when omitted. Hand one store to every
|
|
22
|
+
* pool that holds the same candidate and a lockout learned in one chain
|
|
23
|
+
* benches it in all of them, instead of each chain spending a call to find
|
|
24
|
+
* the same weekly wall. Pools sharing a store must share `cooldownMs` too: a
|
|
25
|
+
* bench set by one pool is honoured by the others, so a kind one of them
|
|
26
|
+
* turned off (`null`) would still divert its calls whenever another pool
|
|
27
|
+
* benched the candidate for it. */
|
|
28
|
+
cooldowns?: CooldownStore<T>;
|
|
29
|
+
/** How long a recovery probe may go without a first chunk before another
|
|
30
|
+
* call may replace it. A probe that hung used to hold its candidate out of
|
|
31
|
+
* service for good. Defaults to the watchdog's progress clock
|
|
32
|
+
* (`STREAM_PROGRESS_MS`): a call silent that long is one the watchdog
|
|
33
|
+
* would already have killed. */
|
|
34
|
+
probeStaleMs?: number;
|
|
21
35
|
/** Inject a clock for deterministic tests. */
|
|
22
36
|
now?: () => number;
|
|
23
37
|
}
|
|
@@ -49,6 +63,27 @@ export interface ProviderFallbackConfig {
|
|
|
49
63
|
* for the whole chain. The distinction is what lets silence rotate safely.
|
|
50
64
|
*/
|
|
51
65
|
export declare function withConfiguredFallbacks(primary: Provider, config?: ProviderFallbackConfig): Provider;
|
|
66
|
+
/** One candidate's bench, as a pool records it. */
|
|
67
|
+
export interface Cooldown {
|
|
68
|
+
retryAtMs: number;
|
|
69
|
+
kind: ErrorKind;
|
|
70
|
+
window?: RateLimitWindow;
|
|
71
|
+
/** The one call let through once the bench expired. Only that call clears
|
|
72
|
+
* it, and `settled` resolves at its first chunk or its end. */
|
|
73
|
+
probe?: {
|
|
74
|
+
since: number;
|
|
75
|
+
settled: Promise<void>;
|
|
76
|
+
settle(): void;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/** Where a pool keeps its benches. A `Map` fits, and so does a `WeakMap` keyed
|
|
80
|
+
* by providers, which lets a bench go when its provider does. `get` must
|
|
81
|
+
* return the very object `set` was given: the probe is tracked on it. */
|
|
82
|
+
export interface CooldownStore<T> {
|
|
83
|
+
get(candidate: T): Cooldown | undefined;
|
|
84
|
+
set(candidate: T, cooldown: Cooldown): void;
|
|
85
|
+
delete(candidate: T): unknown;
|
|
86
|
+
}
|
|
52
87
|
/** The whole chain is unavailable. Fail promptly instead of holding a request
|
|
53
88
|
* open for hours. `retryAtMs` names its next opportunity, not a sleep to cap. */
|
|
54
89
|
export declare class NoAvailableProviderError extends ProviderError {
|
|
@@ -63,10 +98,12 @@ export declare class FallbackPool<T> {
|
|
|
63
98
|
private readonly options;
|
|
64
99
|
private readonly candidates;
|
|
65
100
|
private readonly cooldowns;
|
|
101
|
+
private readonly probeStaleMs;
|
|
66
102
|
private readonly now;
|
|
67
103
|
constructor(candidates: readonly T[], options?: FallbackOptions<T>);
|
|
68
104
|
/** Clear a cooldown after replacing a key or fixing configuration. Omit the
|
|
69
|
-
* candidate to clear all
|
|
105
|
+
* candidate to clear all of this pool's own; a shared store keeps the benches
|
|
106
|
+
* of candidates only other pools hold. Does not interrupt calls in flight. */
|
|
70
107
|
reset(...selection: [] | [T]): void;
|
|
71
108
|
status(): Array<{
|
|
72
109
|
candidate: T;
|
|
@@ -80,6 +117,13 @@ export declare class FallbackPool<T> {
|
|
|
80
117
|
/** Only a pre-output failure can switch provider. A later failure still
|
|
81
118
|
* cools the endpoint for FUTURE calls but never restarts the current answer. */
|
|
82
119
|
stream<R>(attempt: (candidate: T, signal: AbortSignal) => AsyncIterable<R>, signal?: AbortSignal): AsyncGenerator<R>;
|
|
120
|
+
/** An answer proves the candidate serves again. It lifts the bench this call
|
|
121
|
+
* was admitted under as the probe, and any bench a sibling set while it ran:
|
|
122
|
+
* a call that started before one stray 401 and then answered used to leave
|
|
123
|
+
* a busy primary benched for an hour. Rate and quota stay. A call that
|
|
124
|
+
* started before the throttle proves nothing about the window, and lifting
|
|
125
|
+
* it walks every caller back into the 429. */
|
|
126
|
+
private recovered;
|
|
83
127
|
}
|
|
84
128
|
export interface FallbackProvider extends Provider {
|
|
85
129
|
readonly fallbacks: FallbackPool<Provider>;
|
package/dist/fallback.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/fallback.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { classify, parseRetryAfterMs, ProviderError } from "./errors.js";
|
|
2
|
-
import {
|
|
2
|
+
import { sleep } from "./retry.js";
|
|
3
|
+
import { STREAM_PROGRESS_MS, withWatchdog } from "./watchdog.js";
|
|
3
4
|
import { createPresetProvider } from "./providers/factory.js";
|
|
4
5
|
/** Retry intervals when the server supplies no deadline, not estimates of when
|
|
5
6
|
* it will recover. A server deadline always wins over these defaults. */
|
|
@@ -37,6 +38,30 @@ export function withConfiguredFallbacks(primary, config) {
|
|
|
37
38
|
...config.fallbacks.map((candidate) => resolveFallback(candidate, config.watchdog)),
|
|
38
39
|
], config.fallbackOptions);
|
|
39
40
|
}
|
|
41
|
+
function openProbe(since) {
|
|
42
|
+
let settle = () => { };
|
|
43
|
+
const settled = new Promise((resolve) => {
|
|
44
|
+
settle = resolve;
|
|
45
|
+
});
|
|
46
|
+
return { since, settled, settle };
|
|
47
|
+
}
|
|
48
|
+
/** How many times a call that found nothing free waits on a probe before it
|
|
49
|
+
* fails. The first wait covers a probe that answers or fails. The second
|
|
50
|
+
* covers one that ended with neither (its own caller stopped it) and was
|
|
51
|
+
* taken over by another waiter. Past that the caller's own retry decides. */
|
|
52
|
+
const PROBE_WAITS = 2;
|
|
53
|
+
/** Resolve when any probe settles or `ms` passes. Rejects with the caller's
|
|
54
|
+
* reason on abort, and leaves no timer running once a probe wins. */
|
|
55
|
+
async function waitForProbe(settled, ms, signal) {
|
|
56
|
+
const done = new AbortController();
|
|
57
|
+
const wake = signal ? AbortSignal.any([signal, done.signal]) : done.signal;
|
|
58
|
+
try {
|
|
59
|
+
await Promise.race([...settled, sleep(Math.max(0, ms), wake)]);
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
done.abort();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
40
65
|
/** The whole chain is unavailable. Fail promptly instead of holding a request
|
|
41
66
|
* open for hours. `retryAtMs` names its next opportunity, not a sleep to cap. */
|
|
42
67
|
export class NoAvailableProviderError extends ProviderError {
|
|
@@ -57,7 +82,8 @@ export class NoAvailableProviderError extends ProviderError {
|
|
|
57
82
|
export class FallbackPool {
|
|
58
83
|
options;
|
|
59
84
|
candidates;
|
|
60
|
-
cooldowns
|
|
85
|
+
cooldowns;
|
|
86
|
+
probeStaleMs;
|
|
61
87
|
now;
|
|
62
88
|
constructor(candidates, options = {}) {
|
|
63
89
|
this.options = options;
|
|
@@ -72,23 +98,29 @@ export class FallbackPool {
|
|
|
72
98
|
}
|
|
73
99
|
}
|
|
74
100
|
this.candidates = [...candidates];
|
|
101
|
+
this.cooldowns = options.cooldowns ?? new Map();
|
|
102
|
+
this.probeStaleMs = options.probeStaleMs ?? STREAM_PROGRESS_MS;
|
|
103
|
+
if (!Number.isFinite(this.probeStaleMs) || this.probeStaleMs < 0) {
|
|
104
|
+
throw new Error("providerkit: probeStaleMs must be finite, non-negative milliseconds");
|
|
105
|
+
}
|
|
75
106
|
this.now = options.now ?? Date.now;
|
|
76
107
|
}
|
|
77
108
|
/** Clear a cooldown after replacing a key or fixing configuration. Omit the
|
|
78
|
-
* candidate to clear all
|
|
109
|
+
* candidate to clear all of this pool's own; a shared store keeps the benches
|
|
110
|
+
* of candidates only other pools hold. Does not interrupt calls in flight. */
|
|
79
111
|
reset(...selection) {
|
|
80
|
-
|
|
81
|
-
this.cooldowns.
|
|
82
|
-
|
|
83
|
-
this.cooldowns.delete(selection[0]);
|
|
112
|
+
for (const candidate of selection.length === 0 ? this.candidates : selection) {
|
|
113
|
+
this.cooldowns.delete(candidate);
|
|
114
|
+
}
|
|
84
115
|
}
|
|
85
116
|
status() {
|
|
86
|
-
return this.candidates.map((candidate) =>
|
|
87
|
-
candidate
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
...
|
|
91
|
-
|
|
117
|
+
return this.candidates.map((candidate) => {
|
|
118
|
+
const cooldown = this.cooldowns.get(candidate);
|
|
119
|
+
if (!cooldown)
|
|
120
|
+
return { candidate, retryAtMs: 0, probing: false };
|
|
121
|
+
const { probe, ...bench } = cooldown;
|
|
122
|
+
return { candidate, ...bench, probing: probe !== undefined };
|
|
123
|
+
});
|
|
92
124
|
}
|
|
93
125
|
/** Buffered calls only: do not wrap an agent turn that has run side effects. */
|
|
94
126
|
async with(attempt, signal) {
|
|
@@ -104,74 +136,105 @@ export class FallbackPool {
|
|
|
104
136
|
signal?.throwIfAborted();
|
|
105
137
|
let hasFailed = false;
|
|
106
138
|
let lastError;
|
|
107
|
-
for (
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
139
|
+
for (let round = 0;; round++) {
|
|
140
|
+
const probing = [];
|
|
141
|
+
for (const candidate of this.candidates) {
|
|
142
|
+
signal?.throwIfAborted();
|
|
143
|
+
const previous = this.cooldowns.get(candidate);
|
|
144
|
+
if (previous && previous.retryAtMs > this.now())
|
|
145
|
+
continue;
|
|
146
|
+
if (previous?.probe && this.now() - previous.probe.since < this.probeStaleMs) {
|
|
147
|
+
probing.push(previous.probe);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// One recovery probe after expiry. Healthy endpoints still allow normal
|
|
151
|
+
// concurrency; only a known failed endpoint gets a single probe. A stale
|
|
152
|
+
// one is replaced: it hung, and holding the candidate for it is an outage.
|
|
153
|
+
const probe = previous ? openProbe(this.now()) : undefined;
|
|
154
|
+
if (previous)
|
|
155
|
+
previous.probe = probe;
|
|
156
|
+
const controller = new AbortController();
|
|
157
|
+
const inner = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;
|
|
158
|
+
let emitted = false;
|
|
159
|
+
try {
|
|
160
|
+
for await (const chunk of attempt(candidate, inner)) {
|
|
161
|
+
inner.throwIfAborted();
|
|
162
|
+
if (!emitted) {
|
|
163
|
+
this.recovered(candidate, previous);
|
|
164
|
+
probe?.settle();
|
|
165
|
+
}
|
|
166
|
+
emitted = true;
|
|
167
|
+
yield chunk;
|
|
129
168
|
}
|
|
130
|
-
|
|
169
|
+
inner.throwIfAborted();
|
|
170
|
+
if (!emitted)
|
|
171
|
+
this.recovered(candidate, previous);
|
|
172
|
+
return;
|
|
131
173
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
174
|
+
catch (error) {
|
|
175
|
+
signal?.throwIfAborted();
|
|
176
|
+
const kind = classify(error);
|
|
177
|
+
if (kind === "aborted")
|
|
178
|
+
throw error;
|
|
179
|
+
const configured = this.options.cooldownMs?.[kind];
|
|
180
|
+
const interval = configured === undefined ? DEFAULT_FALLBACK_COOLDOWNS[kind] : configured;
|
|
181
|
+
if (interval === undefined || interval === null)
|
|
182
|
+
throw error;
|
|
183
|
+
const now = this.now();
|
|
184
|
+
const after = parseRetryAfterMs(error);
|
|
185
|
+
const reset = error instanceof ProviderError ? error.resetAtMs : undefined;
|
|
186
|
+
const hints = [reset, after === undefined ? undefined : now + after].filter((value) => value !== undefined && Number.isFinite(value));
|
|
187
|
+
const retryAtMs = Math.max(now, ...(hints.length ? hints : [now + interval]), this.cooldowns.get(candidate)?.retryAtMs ?? 0);
|
|
188
|
+
const window = error instanceof ProviderError ? error.window : undefined;
|
|
189
|
+
this.cooldowns.set(candidate, { retryAtMs, kind, window });
|
|
190
|
+
this.options.onCooldown?.({ candidate, error, kind, retryAtMs, window });
|
|
191
|
+
hasFailed = true;
|
|
192
|
+
lastError = error;
|
|
193
|
+
if (emitted)
|
|
194
|
+
throw error;
|
|
135
195
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
throw error;
|
|
147
|
-
const now = this.now();
|
|
148
|
-
const after = parseRetryAfterMs(error);
|
|
149
|
-
const reset = error instanceof ProviderError ? error.resetAtMs : undefined;
|
|
150
|
-
const hints = [reset, after === undefined ? undefined : now + after].filter((value) => value !== undefined && Number.isFinite(value));
|
|
151
|
-
const retryAtMs = Math.max(now, ...(hints.length ? hints : [now + interval]), this.cooldowns.get(candidate)?.retryAtMs ?? 0);
|
|
152
|
-
const window = error instanceof ProviderError ? error.window : undefined;
|
|
153
|
-
this.cooldowns.set(candidate, { retryAtMs, kind, window, probing: false });
|
|
154
|
-
this.options.onCooldown?.({ candidate, error, kind, retryAtMs, window });
|
|
155
|
-
attemptFailed = true;
|
|
156
|
-
hasFailed = true;
|
|
157
|
-
lastError = error;
|
|
158
|
-
if (emitted)
|
|
159
|
-
throw error;
|
|
160
|
-
}
|
|
161
|
-
finally {
|
|
162
|
-
controller.abort();
|
|
163
|
-
const current = this.cooldowns.get(candidate);
|
|
164
|
-
if (current && current.probing && !attemptFailed) {
|
|
165
|
-
current.probing = false;
|
|
196
|
+
finally {
|
|
197
|
+
controller.abort();
|
|
198
|
+
// Only the owner releases its probe. Clearing whatever probe was set
|
|
199
|
+
// let a stale probe that ended late free the one that replaced it, and
|
|
200
|
+
// any call that did not fail let a second probe in.
|
|
201
|
+
if (probe) {
|
|
202
|
+
if (previous?.probe === probe)
|
|
203
|
+
previous.probe = undefined;
|
|
204
|
+
probe.settle();
|
|
205
|
+
}
|
|
166
206
|
}
|
|
167
207
|
}
|
|
208
|
+
if (hasFailed)
|
|
209
|
+
throw lastError;
|
|
210
|
+
// Nothing was free, and a probe is deciding whether something will be.
|
|
211
|
+
// Failing here answered a 0 ms retry, which `withRetry` spent at once: at
|
|
212
|
+
// 70 concurrent calls every one but the probe failed. Wait for a probe to
|
|
213
|
+
// answer or end, or until the oldest goes stale, then look again.
|
|
214
|
+
if (probing.length > 0 && round < PROBE_WAITS) {
|
|
215
|
+
const staleAt = Math.min(...probing.map((probe) => probe.since + this.probeStaleMs));
|
|
216
|
+
await waitForProbe(probing.map((probe) => probe.settled), staleAt - this.now(), signal);
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
// Every candidate is cooling, or its probe outlasted the waits; a probe
|
|
220
|
+
// still in flight makes the next opportunity now.
|
|
221
|
+
const retryAtMs = Math.min(...this.status().map((entry) => Math.max(this.now(), entry.retryAtMs)));
|
|
222
|
+
throw new NoAvailableProviderError(retryAtMs, this.now());
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/** An answer proves the candidate serves again. It lifts the bench this call
|
|
226
|
+
* was admitted under as the probe, and any bench a sibling set while it ran:
|
|
227
|
+
* a call that started before one stray 401 and then answered used to leave
|
|
228
|
+
* a busy primary benched for an hour. Rate and quota stay. A call that
|
|
229
|
+
* started before the throttle proves nothing about the window, and lifting
|
|
230
|
+
* it walks every caller back into the 429. */
|
|
231
|
+
recovered(candidate, admittedUnder) {
|
|
232
|
+
const current = this.cooldowns.get(candidate);
|
|
233
|
+
if (!current)
|
|
234
|
+
return;
|
|
235
|
+
if (current === admittedUnder || (current.kind !== "rate" && current.kind !== "quota")) {
|
|
236
|
+
this.cooldowns.delete(candidate);
|
|
168
237
|
}
|
|
169
|
-
if (hasFailed)
|
|
170
|
-
throw lastError;
|
|
171
|
-
// If all expired candidates are already being probed, the next opportunity
|
|
172
|
-
// is now. Other callers need not wait for those probes or start duplicates.
|
|
173
|
-
const retryAtMs = Math.min(...this.status().map((entry) => Math.max(this.now(), entry.retryAtMs)));
|
|
174
|
-
throw new NoAvailableProviderError(retryAtMs, this.now());
|
|
175
238
|
}
|
|
176
239
|
}
|
|
177
240
|
/** Compose bound provider/model pairs. Identity names the configured primary;
|