@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/fallback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAkB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/image.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface ImageLimits {
|
|
|
5
5
|
minSide: number;
|
|
6
6
|
/** Smallest area, in square pixels. */
|
|
7
7
|
minArea: number;
|
|
8
|
-
/** Largest decoded size
|
|
8
|
+
/** Largest decoded size in bytes (width × height × bytes per pixel). */
|
|
9
9
|
maxDecodedBytes: number;
|
|
10
10
|
/** Most images in one request. The newest win; older ones become notes. */
|
|
11
11
|
maxImages: number;
|
package/dist/image.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAyC,MAAM,YAAY,CAAC;AAErF,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAyC,MAAM,YAAY,CAAC;AAErF,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,eAAe,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAiID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAmC/F"}
|
package/dist/jev.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type JevInstructions = string | Record<string, unknown> | readonly unknow
|
|
|
9
9
|
export interface ChoiceQuestion<Option extends string = string> {
|
|
10
10
|
type: "choice";
|
|
11
11
|
instructions?: JevInstructions;
|
|
12
|
-
/** Each option, mapped to what it means
|
|
12
|
+
/** Each option, mapped to what it means. Use `null` when its name says it all.
|
|
13
13
|
* TypeSafe takes up to 255. */
|
|
14
14
|
criteria: Record<Option, unknown>;
|
|
15
15
|
}
|
|
@@ -38,7 +38,7 @@ export interface ChoiceAnswer<Option extends string = string> {
|
|
|
38
38
|
* because a caller acting on it needs more than the pick: the runner-up,
|
|
39
39
|
* P(yes) when the pick was no, a joint probability across two questions. */
|
|
40
40
|
probabilities: Record<Option, number>;
|
|
41
|
-
/** How peaked `probabilities` is, 0 to 1
|
|
41
|
+
/** How peaked `probabilities` is, from 0 to 1. Not the probability of the pick.
|
|
42
42
|
* TypeSafe's own example spreads 0.57 / 0.43 and reports 0.35, so reading
|
|
43
43
|
* it as P(pick) would put the pick below the option it beat. Null when the
|
|
44
44
|
* host sent none. */
|
|
@@ -60,17 +60,17 @@ export interface ScoreAnswer {
|
|
|
60
60
|
confidence: number | null;
|
|
61
61
|
}
|
|
62
62
|
export type JevAnswer = ChoiceAnswer | NoulAnswer | ScoreAnswer;
|
|
63
|
-
/** The answer type a question gets back
|
|
63
|
+
/** The answer type a question gets back. A choice's options carry through. */
|
|
64
64
|
export type AnswerTo<Q> = Q extends ChoiceQuestion<infer Option extends string> ? ChoiceAnswer<Option> : Q extends NoulQuestion ? NoulAnswer : Q extends ScoreQuestion ? ScoreAnswer : never;
|
|
65
65
|
export interface JevReply<Q extends Record<string, JevQuestion>> {
|
|
66
|
-
/** One per question
|
|
66
|
+
/** One per question. `null` when that answer did not pass the checks in
|
|
67
67
|
* `readAnswer`. Each fails alone: in a fan-out, a malformed answer to a
|
|
68
68
|
* question the caller never acts on must not cost the one it does. */
|
|
69
69
|
answers: {
|
|
70
70
|
[Id in keyof Q]: AnswerTo<Q[Id]> | null;
|
|
71
71
|
};
|
|
72
72
|
usage: TokenUsage;
|
|
73
|
-
/** The model that answered, as the host names it
|
|
73
|
+
/** The model that answered, as the host names it: `jev-1.13.0` on
|
|
74
74
|
* TypeSafe, `typesafe/jev-1.13-20260917` on OpenRouter. */
|
|
75
75
|
model: string;
|
|
76
76
|
}
|
|
@@ -99,14 +99,14 @@ export interface JevClient {
|
|
|
99
99
|
}): Promise<JevReply<Q>>;
|
|
100
100
|
/** Proves the key, the account and the model work, with one real question:
|
|
101
101
|
* about 40 input tokens, a few millionths of a dollar. A free read (a
|
|
102
|
-
* model list, a balance) proves only the key
|
|
103
|
-
* run this model
|
|
102
|
+
* model list, a balance) proves only the key, not that this account can
|
|
103
|
+
* run this model. Vercel has no such free read. Throws the classified failure. */
|
|
104
104
|
checkKey(opts?: {
|
|
105
105
|
signal?: AbortSignal;
|
|
106
106
|
}): Promise<void>;
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
|
-
* One answer, checked against the question that asked it
|
|
109
|
+
* One answer, checked against the question that asked it, or null.
|
|
110
110
|
*
|
|
111
111
|
* A Jev answer usually becomes an action (a click, a label, a route), so it is
|
|
112
112
|
* read fail-closed: the right type; for a choice, a pick among the offered
|
|
@@ -115,7 +115,7 @@ export interface JevClient {
|
|
|
115
115
|
* the pick.
|
|
116
116
|
*
|
|
117
117
|
* `ask` runs this on every answer. It is exported for the app that has to
|
|
118
|
-
* keep its own request
|
|
118
|
+
* keep its own request (its own error copy, its own auth refresh) and can
|
|
119
119
|
* still take the checks.
|
|
120
120
|
*/
|
|
121
121
|
export declare function readAnswer<Q extends JevQuestion>(question: Q, raw: unknown): AnswerTo<Q> | null;
|
package/dist/jev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jev.d.ts","sourceRoot":"","sources":["../src/jev.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGxE,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE1E;gEACgE;AAChE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,OAAO,EAAE,CAAC;AAEpF,uBAAuB;AACvB,MAAM,WAAW,cAAc,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC5D,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B;oCACgC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;AAExE,MAAM,WAAW,YAAY,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;iFAE6E;IAC7E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;0BAGsB;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd;iCAC6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd;sBACkB;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"jev.d.ts","sourceRoot":"","sources":["../src/jev.ts"],"names":[],"mappings":"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"}
|
package/dist/jev.js
CHANGED
|
@@ -87,7 +87,7 @@ const HOSTS = {
|
|
|
87
87
|
* `providerMetadata.typesafe.confidence`, and usage is camelCase.
|
|
88
88
|
*
|
|
89
89
|
* ponytail: read from @jkudish/jev-agent-tools' adapter, not from a recorded
|
|
90
|
-
* reply
|
|
90
|
+
* reply. No Vercel key has run it here. If a real reply disagrees, this
|
|
91
91
|
* function is the whole fix.
|
|
92
92
|
*/
|
|
93
93
|
function fromVercel(json) {
|
package/dist/key-pool.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProviderError } from "./errors.ts";
|
|
1
2
|
import type { ErrorKind } from "./errors.ts";
|
|
2
3
|
import type { Provider } from "./types.ts";
|
|
3
4
|
export type KeyTier = "free" | "paid";
|
|
@@ -5,7 +6,7 @@ export interface KeyPoolOptions {
|
|
|
5
6
|
/** Free-tier keys, walked round-robin before the paid one. */
|
|
6
7
|
keys: readonly string[];
|
|
7
8
|
paidKey?: string | null;
|
|
8
|
-
/** Fires whenever a key is benched
|
|
9
|
+
/** Fires whenever a key is benched. The pool's only report, in place of a
|
|
9
10
|
* logger a zero-dependency package has no business owning. */
|
|
10
11
|
onEvict?: (info: {
|
|
11
12
|
tier: KeyTier;
|
|
@@ -16,10 +17,15 @@ export interface KeyPoolOptions {
|
|
|
16
17
|
* 12-hour cooldown. */
|
|
17
18
|
now?: () => number;
|
|
18
19
|
}
|
|
19
|
-
/** No key can serve right now. `retryAtMs` = when the soonest one is back.
|
|
20
|
-
|
|
20
|
+
/** No key can serve right now. `retryAtMs` = when the soonest one is back.
|
|
21
|
+
*
|
|
22
|
+
* A `ProviderError` of kind `rate` that carries that moment as `resetAtMs` and
|
|
23
|
+
* `retryAfterMs`. As a plain `Error` it classified as `rate` only by its
|
|
24
|
+
* wording and carried no deadline anyone read, so a FallbackPool around the
|
|
25
|
+
* key pool benched it for its default minute, whatever the keys had said. */
|
|
26
|
+
export declare class NoAvailableKeyError extends ProviderError {
|
|
21
27
|
readonly retryAtMs: number;
|
|
22
|
-
constructor(label: string, retryAtMs: number);
|
|
28
|
+
constructor(label: string, retryAtMs: number, now: number);
|
|
23
29
|
}
|
|
24
30
|
export declare class KeyPool {
|
|
25
31
|
private readonly label;
|
|
@@ -33,20 +39,20 @@ export declare class KeyPool {
|
|
|
33
39
|
/**
|
|
34
40
|
* Run `fn` with the next available key, rotating on key-specific and
|
|
35
41
|
* transient failures. Everything else (a bad request, a content block) throws
|
|
36
|
-
* straight through
|
|
42
|
+
* straight through: it would fail identically on every key, and spending the
|
|
37
43
|
* pool on it only turns one bad request into an outage.
|
|
38
44
|
*/
|
|
39
45
|
with<T>(fn: (apiKey: string, tier: KeyTier) => Promise<T>): Promise<T>;
|
|
40
46
|
/** Free keys round-robin from a moving cursor, then the paid key. */
|
|
41
47
|
private candidates;
|
|
42
|
-
private
|
|
48
|
+
private noneAvailable;
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
51
|
* Give any provider a rotating pool of keys.
|
|
46
52
|
*
|
|
47
53
|
* The subtlety is the seam's shape. `createStream` is an async generator, so
|
|
48
|
-
*
|
|
49
|
-
*
|
|
54
|
+
* calling it performs no I/O. The POST and the 429 that should rotate the key
|
|
55
|
+
* happen on the first `next()`, long after a `pool.with` wrapped around the
|
|
50
56
|
* call itself would have returned, with nothing left to rotate. So the first
|
|
51
57
|
* chunk is pulled INSIDE the pool and only the rest of the stream is consumed
|
|
52
58
|
* outside it.
|
package/dist/key-pool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-pool.d.ts","sourceRoot":"","sources":["../src/key-pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-pool.d.ts","sourceRoot":"","sources":["../src/key-pool.ts"],"names":[],"mappings":"AAeA,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAEV,QAAQ,EAIT,MAAM,YAAY,CAAC;AAapB,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAStC,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;mEAC+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5E;4BACwB;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;8EAK8E;AAC9E,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAQ1D;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,MAAM,CAAK;gBAEP,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc;IAe/C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyB5E,qEAAqE;IACrE,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,aAAa;CAKtB;AA0CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,GAAG,QAAQ,CAqE1F"}
|
package/dist/key-pool.js
CHANGED
|
@@ -16,19 +16,27 @@
|
|
|
16
16
|
import { isTransient, ProviderError } from "./errors.js";
|
|
17
17
|
/** A per-minute throttle: the window it names is the next one. */
|
|
18
18
|
const RATE_COOLDOWN_MS = 60_000;
|
|
19
|
-
/** A balance or a daily window
|
|
19
|
+
/** A balance or a daily window. Minutes will not bring it back. */
|
|
20
20
|
const QUOTA_COOLDOWN_MS = 60 * 60_000;
|
|
21
21
|
const AUTH_COOLDOWN_MS = 12 * 60 * 60_000;
|
|
22
|
-
/** The vendor's bad time, not the key's
|
|
22
|
+
/** The vendor's bad time, not the key's. Benched only long enough for the
|
|
23
23
|
* next call to land somewhere else. */
|
|
24
24
|
const TRANSIENT_COOLDOWN_MS = 60_000;
|
|
25
25
|
const MIN_EVICTION_MS = 1_000;
|
|
26
26
|
const MAX_EVICTION_MS = 12 * 60 * 60_000;
|
|
27
|
-
/** No key can serve right now. `retryAtMs` = when the soonest one is back.
|
|
28
|
-
|
|
27
|
+
/** No key can serve right now. `retryAtMs` = when the soonest one is back.
|
|
28
|
+
*
|
|
29
|
+
* A `ProviderError` of kind `rate` that carries that moment as `resetAtMs` and
|
|
30
|
+
* `retryAfterMs`. As a plain `Error` it classified as `rate` only by its
|
|
31
|
+
* wording and carried no deadline anyone read, so a FallbackPool around the
|
|
32
|
+
* key pool benched it for its default minute, whatever the keys had said. */
|
|
33
|
+
export class NoAvailableKeyError extends ProviderError {
|
|
29
34
|
retryAtMs;
|
|
30
|
-
constructor(label, retryAtMs) {
|
|
31
|
-
super(`No ${label} API key available (all rate-limited or denied)
|
|
35
|
+
constructor(label, retryAtMs, now) {
|
|
36
|
+
super(label, "rate", `No ${label} API key available (all rate-limited or denied)`, {
|
|
37
|
+
resetAtMs: retryAtMs,
|
|
38
|
+
retryAfterMs: Math.max(0, retryAtMs - now),
|
|
39
|
+
});
|
|
32
40
|
this.name = "NoAvailableKeyError";
|
|
33
41
|
this.retryAtMs = retryAtMs;
|
|
34
42
|
}
|
|
@@ -60,13 +68,13 @@ export class KeyPool {
|
|
|
60
68
|
/**
|
|
61
69
|
* Run `fn` with the next available key, rotating on key-specific and
|
|
62
70
|
* transient failures. Everything else (a bad request, a content block) throws
|
|
63
|
-
* straight through
|
|
71
|
+
* straight through: it would fail identically on every key, and spending the
|
|
64
72
|
* pool on it only turns one bad request into an outage.
|
|
65
73
|
*/
|
|
66
74
|
async with(fn) {
|
|
67
75
|
const candidates = this.candidates(this.now());
|
|
68
76
|
if (candidates.length === 0)
|
|
69
|
-
throw
|
|
77
|
+
throw this.noneAvailable();
|
|
70
78
|
let last;
|
|
71
79
|
for (const key of candidates) {
|
|
72
80
|
try {
|
|
@@ -77,7 +85,7 @@ export class KeyPool {
|
|
|
77
85
|
// The single-key rule: with nothing to rotate to, benching the only key
|
|
78
86
|
// answers NoAvailableKeyError to every call for the next minute — for a
|
|
79
87
|
// failure the caller's own retry would have absorbed.
|
|
80
|
-
const cooldown = this.size > 1 ? cooldownFor(err) : null;
|
|
88
|
+
const cooldown = this.size > 1 ? cooldownFor(err, this.now()) : null;
|
|
81
89
|
if (cooldown === null)
|
|
82
90
|
throw err;
|
|
83
91
|
key.evictedUntil = this.now() + cooldown.forMs;
|
|
@@ -86,7 +94,7 @@ export class KeyPool {
|
|
|
86
94
|
}
|
|
87
95
|
// Every candidate was evicted during this call.
|
|
88
96
|
if (this.candidates(this.now()).length === 0)
|
|
89
|
-
throw
|
|
97
|
+
throw this.noneAvailable();
|
|
90
98
|
throw last;
|
|
91
99
|
}
|
|
92
100
|
/** Free keys round-robin from a moving cursor, then the paid key. */
|
|
@@ -104,17 +112,18 @@ export class KeyPool {
|
|
|
104
112
|
out.push(this.paid);
|
|
105
113
|
return out;
|
|
106
114
|
}
|
|
107
|
-
|
|
115
|
+
noneAvailable() {
|
|
108
116
|
const all = this.paid ? [...this.free, this.paid] : this.free;
|
|
109
|
-
|
|
117
|
+
const retryAtMs = Math.min(...all.map((key) => key.evictedUntil));
|
|
118
|
+
return new NoAvailableKeyError(this.label, retryAtMs, this.now());
|
|
110
119
|
}
|
|
111
120
|
}
|
|
112
121
|
/**
|
|
113
122
|
* How long to bench a key for this failure, or null when the failure is not the
|
|
114
|
-
* key's fault
|
|
123
|
+
* key's fault. Nothing is gained by rotating, and benching would spend the
|
|
115
124
|
* pool on a request that fails the same way everywhere.
|
|
116
125
|
*/
|
|
117
|
-
function cooldownFor(err) {
|
|
126
|
+
function cooldownFor(err, now) {
|
|
118
127
|
if (!(err instanceof ProviderError))
|
|
119
128
|
return null;
|
|
120
129
|
const clamp = (ms) => Math.min(Math.max(ms, MIN_EVICTION_MS), MAX_EVICTION_MS);
|
|
@@ -122,8 +131,16 @@ function cooldownFor(err) {
|
|
|
122
131
|
// The three kinds that are about THIS key.
|
|
123
132
|
case "rate":
|
|
124
133
|
return { kind: err.kind, forMs: clamp(err.retryAfterMs ?? RATE_COOLDOWN_MS) };
|
|
125
|
-
case "quota":
|
|
126
|
-
|
|
134
|
+
case "quota": {
|
|
135
|
+
// A spent window names its reset, and that outranks Retry-After: Anthropic
|
|
136
|
+
// sends `retry-after: 60` beside a weekly window, and a key benched for
|
|
137
|
+
// the minute is dialled again into the same wall.
|
|
138
|
+
const reset = err.resetAtMs;
|
|
139
|
+
const forMs = reset !== undefined && Number.isFinite(reset)
|
|
140
|
+
? reset - now
|
|
141
|
+
: (err.retryAfterMs ?? QUOTA_COOLDOWN_MS);
|
|
142
|
+
return { kind: err.kind, forMs: clamp(forMs) };
|
|
143
|
+
}
|
|
127
144
|
case "auth":
|
|
128
145
|
// 12 h, not forever: a key is also refused while a billing account is
|
|
129
146
|
// reinstated, and a pool that drops keys permanently ends up empty.
|
|
@@ -144,8 +161,8 @@ function cooldownFor(err) {
|
|
|
144
161
|
* Give any provider a rotating pool of keys.
|
|
145
162
|
*
|
|
146
163
|
* The subtlety is the seam's shape. `createStream` is an async generator, so
|
|
147
|
-
*
|
|
148
|
-
*
|
|
164
|
+
* calling it performs no I/O. The POST and the 429 that should rotate the key
|
|
165
|
+
* happen on the first `next()`, long after a `pool.with` wrapped around the
|
|
149
166
|
* call itself would have returned, with nothing left to rotate. So the first
|
|
150
167
|
* chunk is pulled INSIDE the pool and only the rest of the stream is consumed
|
|
151
168
|
* outside it.
|
package/dist/key-pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-pool.js","sourceRoot":"","sources":["../src/key-pool.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,qBAAqB;AACrB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUzD,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,
|
|
1
|
+
{"version":3,"file":"key-pool.js","sourceRoot":"","sources":["../src/key-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/presets.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provider presets
|
|
2
|
+
* Provider presets: hand-curated, wire-level facts only.
|
|
3
3
|
*
|
|
4
4
|
* A preset is everything `createPresetProvider` needs to speak to one
|
|
5
5
|
* endpoint: which adapter shape it speaks, its API root, how the credential
|
|
6
|
-
* rides, and what it is called. Deliberately absent: prices (invariant 9
|
|
6
|
+
* rides, and what it is called. Deliberately absent: prices (invariant 9;
|
|
7
7
|
* they drift on a vendor's schedule and a wrong number in a library is a
|
|
8
8
|
* wrong number in everyone's ledger), icons, colors, marketing names, and
|
|
9
9
|
* sign-in flows (an `oauth` preset expects the CALLER to hand over an access
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Sources: the coding-plan endpoints and auth quirks are measured
|
|
13
13
|
* (tabrunner's extension + this repo's adopters, 2026-09); the model lists
|
|
14
|
-
* are representative, not exhaustive
|
|
14
|
+
* are representative, not exhaustive. Every adapter takes a per-call model,
|
|
15
15
|
* so a missing id costs nothing.
|
|
16
16
|
*
|
|
17
17
|
* Azure is deliberately ABSENT: its base URL is per-deployment
|
|
18
|
-
* (`https://<resource>.openai.azure.com`), so no static preset can carry it
|
|
19
|
-
*
|
|
18
|
+
* (`https://<resource>.openai.azure.com`), so no static preset can carry it.
|
|
19
|
+
* Point createOpenAIProvider's baseUrl at your resource instead.
|
|
20
20
|
*/
|
|
21
21
|
import type { ImageLimits } from "./image.ts";
|
|
22
22
|
export type PresetShape = "anthropic" | "openai" | "responses" | "gemini";
|
|
@@ -25,7 +25,7 @@ export type PresetShape = "anthropic" | "openai" | "responses" | "gemini";
|
|
|
25
25
|
* - `key`: the vendor's native key header (Anthropic reads `x-api-key`,
|
|
26
26
|
* Gemini `x-goog-api-key`); the OpenAI shapes have only Bearer, so they
|
|
27
27
|
* never use this.
|
|
28
|
-
* - `bearer`: `Authorization: Bearer
|
|
28
|
+
* - `bearer`: `Authorization: Bearer`, the OpenAI shapes' only mode, and the
|
|
29
29
|
* coding-plan gateways' mode on the Anthropic wire (measured: Z.ai's coding
|
|
30
30
|
* endpoint ignores `x-api-key` and reads Bearer).
|
|
31
31
|
* - `oauth`: same wire as `bearer`, but the token is a short-lived access
|
|
@@ -50,7 +50,7 @@ export interface PresetRoute {
|
|
|
50
50
|
export interface ProviderPreset {
|
|
51
51
|
/** Adapter wire format. */
|
|
52
52
|
shape: PresetShape;
|
|
53
|
-
/** API root
|
|
53
|
+
/** API root. If it ends with /v1, /v4 or another version segment, the
|
|
54
54
|
* adapter automatically routes to /chat/completions instead of /v1/chat/completions. */
|
|
55
55
|
baseUrl: string;
|
|
56
56
|
/** Explicit path override when a gateway has custom routing. */
|
|
@@ -67,8 +67,8 @@ export interface ProviderPreset {
|
|
|
67
67
|
textOnly?: boolean;
|
|
68
68
|
/** Anthropic-shape dialect: say "no thinking" with an explicit
|
|
69
69
|
* `thinking: { type: "disabled" }` marker when effort is none. For
|
|
70
|
-
* endpoints where an
|
|
71
|
-
* for reasoning-mandatory models (measured on Z.ai's coding endpoint:
|
|
70
|
+
* endpoints where an absent field means the model's default, with thinking
|
|
71
|
+
* on for reasoning-mandatory models (measured on Z.ai's coding endpoint:
|
|
72
72
|
* omit → thinking block; disabled → none). Leave it unset for native
|
|
73
73
|
* Anthropic: the adapter spells none per Claude model, and ignores this
|
|
74
74
|
* flag for every Claude from 4.6 on. */
|
|
@@ -78,7 +78,7 @@ export interface ProviderPreset {
|
|
|
78
78
|
* neither text nor a tool call. */
|
|
79
79
|
maxTokens?: number;
|
|
80
80
|
/** Header that carries `StreamOptions.sessionId`, for gateways that route
|
|
81
|
-
* and cache per conversation
|
|
81
|
+
* and cache per conversation and refuse a call without it (OpenCode Go:
|
|
82
82
|
* `MissingSessionID`, measured 2026-09-27). */
|
|
83
83
|
sessionHeader?: string;
|
|
84
84
|
/** Wires for model ids that don't use the preset's own `shape`. The first
|
|
@@ -99,6 +99,9 @@ export interface ProviderPreset {
|
|
|
99
99
|
/** OpenAI shape: send `X-Initiator` (`user` or `agent`) on every call. GitHub
|
|
100
100
|
* Copilot bills a premium request per `user` turn. */
|
|
101
101
|
initiatorHeader?: boolean;
|
|
102
|
+
/** OpenAI shape: never send `temperature` or `top_p`, for an endpoint that
|
|
103
|
+
* fixes its own sampling and answers the fields with an error. */
|
|
104
|
+
noSampling?: boolean;
|
|
102
105
|
}
|
|
103
106
|
export declare const PROVIDER_PRESETS: {
|
|
104
107
|
readonly anthropic: {
|
|
@@ -122,12 +125,13 @@ export declare const PROVIDER_PRESETS: {
|
|
|
122
125
|
readonly defaultModel: "gemini-3.1-pro-preview";
|
|
123
126
|
readonly models: ["gemini-3.1-pro-preview", "gemini-3.8-flash", "gemini-flash-latest"];
|
|
124
127
|
};
|
|
125
|
-
/** Gemini behind its OpenAI-compatible route
|
|
128
|
+
/** Gemini behind its OpenAI-compatible route, for codebases
|
|
126
129
|
* that only speak the openai shape. */
|
|
127
130
|
readonly "google-openai": {
|
|
128
131
|
readonly shape: "openai";
|
|
129
132
|
readonly baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai";
|
|
130
133
|
readonly auth: "key";
|
|
134
|
+
readonly noSampling: true;
|
|
131
135
|
readonly defaultModel: "gemini-3.1-pro-preview";
|
|
132
136
|
readonly models: ["gemini-3.1-pro-preview", "gemini-3.8-flash", "gemini-flash-latest"];
|
|
133
137
|
};
|
|
@@ -328,7 +332,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
328
332
|
readonly models: ["glm-5.3-flash", "glm-5.3", "glm-5.2"];
|
|
329
333
|
};
|
|
330
334
|
/**
|
|
331
|
-
* OpenCode Go
|
|
335
|
+
* OpenCode Go: one $10/month key across many open models, each with its own
|
|
332
336
|
* monthly dollar limit (5h = 20%, week = 50%). Chain several models as
|
|
333
337
|
* `fallbacks` so a spent one hands over to the next.
|
|
334
338
|
*
|
|
@@ -340,8 +344,9 @@ export declare const PROVIDER_PRESETS: {
|
|
|
340
344
|
* Go serves three wires, and `routes` picks one from the model id (cc-proxy's
|
|
341
345
|
* table, from Go's own docs): `minimax-` and `qwen` on Anthropic /messages
|
|
342
346
|
* (key in `x-api-key`), `gpt-`, `grok-` and `muse-spark-` on /responses, and
|
|
343
|
-
* everything else on chat completions. Each model in a
|
|
344
|
-
* own route, so one preset serves a chain that crosses
|
|
347
|
+
* everything else on chat completions, `grok-4.5` included. Each model in a
|
|
348
|
+
* chain resolves its own route, so one preset serves a chain that crosses
|
|
349
|
+
* wires.
|
|
345
350
|
*
|
|
346
351
|
* Muse Contributor, measured 2026-09-28 on /responses: text, images, strict
|
|
347
352
|
* JSON Schema, parallel tools and tool-result round trips all passed. It
|
|
@@ -366,6 +371,10 @@ export declare const PROVIDER_PRESETS: {
|
|
|
366
371
|
readonly shape: "anthropic";
|
|
367
372
|
readonly baseUrl: "https://opencode.ai/zen/go";
|
|
368
373
|
readonly auth: "key";
|
|
374
|
+
}, {
|
|
375
|
+
readonly prefixes: readonly ["grok-4.5"];
|
|
376
|
+
readonly shape: "openai";
|
|
377
|
+
readonly baseUrl: "https://opencode.ai/zen/go/v1";
|
|
369
378
|
}, {
|
|
370
379
|
readonly prefixes: readonly ["gpt-", "grok-", "muse-spark-"];
|
|
371
380
|
readonly shape: "responses";
|
|
@@ -387,7 +396,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
387
396
|
readonly defaultModel: "kimi-k2.7-code";
|
|
388
397
|
readonly models: ["kimi-k2.7-code", "kimi-k2.7-code-highspeed", "kimi-k3"];
|
|
389
398
|
};
|
|
390
|
-
/** Alibaba's
|
|
399
|
+
/** Alibaba's DashScope coding plan, OpenAI-compatible per its registry. */
|
|
391
400
|
readonly "alibaba-coding-plan": {
|
|
392
401
|
readonly shape: "openai";
|
|
393
402
|
readonly baseUrl: "https://coding-intl.dashscope.aliyuncs.com/v1";
|
|
@@ -395,7 +404,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
395
404
|
readonly defaultModel: "qwen3.5-plus";
|
|
396
405
|
readonly models: ["qwen3.5-plus", "qwen3-coder-next", "glm-5"];
|
|
397
406
|
};
|
|
398
|
-
/** QwenCloud's token plan
|
|
407
|
+
/** QwenCloud's token plan on the Anthropic wire (measured by tabrunner). */
|
|
399
408
|
readonly qwen: {
|
|
400
409
|
readonly shape: "anthropic";
|
|
401
410
|
readonly baseUrl: "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic";
|
|
@@ -403,7 +412,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
403
412
|
readonly defaultModel: "qwen3.8-max";
|
|
404
413
|
readonly models: ["qwen3.8-max", "qwen3.8-flash", "qwen3.6-flash"];
|
|
405
414
|
};
|
|
406
|
-
/** QwenCloud's token plan
|
|
415
|
+
/** QwenCloud's token plan on an OpenAI-compatible endpoint. */
|
|
407
416
|
readonly "qwen-token-plan-openai": {
|
|
408
417
|
readonly shape: "openai";
|
|
409
418
|
readonly baseUrl: "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1";
|
|
@@ -411,7 +420,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
411
420
|
readonly defaultModel: "qwen3.8-max";
|
|
412
421
|
readonly models: ["qwen3.8-max", "qwen3.8-flash", "qwen3.6-flash"];
|
|
413
422
|
};
|
|
414
|
-
/** Alibaba DashScope Platform API
|
|
423
|
+
/** Alibaba DashScope Platform API, with a standard pay-as-you-go API key. */
|
|
415
424
|
readonly alibaba: {
|
|
416
425
|
readonly shape: "openai";
|
|
417
426
|
readonly baseUrl: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
|
|
@@ -453,8 +462,8 @@ export declare const PROVIDER_PRESETS: {
|
|
|
453
462
|
};
|
|
454
463
|
};
|
|
455
464
|
/**
|
|
456
|
-
* The Codex backend behind a ChatGPT sign-in
|
|
457
|
-
* model list, so these ids are the list.
|
|
465
|
+
* The Codex backend behind a ChatGPT sign-in, on the Responses wire. It has no
|
|
466
|
+
* public model list, so these ids are the list.
|
|
458
467
|
*
|
|
459
468
|
* The endpoint is `/backend-api/codex/responses`, with no version segment.
|
|
460
469
|
* Without the `path` the adapter appends `/v1/responses`, the POST 404s, and
|
|
@@ -483,8 +492,8 @@ export declare const PROVIDER_PRESETS: {
|
|
|
483
492
|
readonly replayReasoning: true;
|
|
484
493
|
};
|
|
485
494
|
/**
|
|
486
|
-
* A Grok subscription (SuperGrok, X Premium)
|
|
487
|
-
* talks to, Responses wire. Distinct from `xai`, which is the keyed API and
|
|
495
|
+
* A Grok subscription (SuperGrok, X Premium), on the backend the Grok CLI
|
|
496
|
+
* talks to, using the Responses wire. Distinct from `xai`, which is the keyed API and
|
|
488
497
|
* bills per token.
|
|
489
498
|
*
|
|
490
499
|
* The two `x-…` headers are what switch the backend into CLI-token mode;
|
|
@@ -513,7 +522,7 @@ export declare const PROVIDER_PRESETS: {
|
|
|
513
522
|
};
|
|
514
523
|
};
|
|
515
524
|
/** Kimi's coding endpoint reached with a subscription token instead of a
|
|
516
|
-
* key
|
|
525
|
+
* key. Kimi bills the two separately. */
|
|
517
526
|
readonly "kimi-plan": {
|
|
518
527
|
readonly shape: "anthropic";
|
|
519
528
|
readonly baseUrl: "https://api.kimi.ai/coding";
|
|
@@ -550,6 +559,6 @@ export declare const PROVIDER_PRESETS: {
|
|
|
550
559
|
};
|
|
551
560
|
};
|
|
552
561
|
export type ProviderPresetId = keyof typeof PROVIDER_PRESETS;
|
|
553
|
-
/** Every valid preset id
|
|
562
|
+
/** Every valid preset id. The factory's unknown-id error lists these. */
|
|
554
563
|
export declare const PRESET_IDS: ProviderPresetId[];
|
|
555
564
|
//# sourceMappingURL=presets.d.ts.map
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB;6FACyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;2EACuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;6CAMyC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;wCAEoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;oDAEgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;kFAG8E;IAC9E,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;0EACsE;IACtE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;+DAC2D;IAC3D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;wDAEoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;2DACuD;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB;6FACyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;2EACuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;6CAMyC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;wCAEoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;oDAEgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;kFAG8E;IAC9E,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;0EACsE;IACtE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B;+DAC2D;IAC3D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;wDAEoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;2DACuD;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;uEACmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;IAyB3B;4CACwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkOxC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DH,2EAA2E;;;;;;;;IAQ3E,4EAA4E;;;;;;;;IAQ5E,+DAA+D;;;;;;;;IAQ/D,6EAA6E;;;;;;;;IAQ7E,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqClD;;;;;;;;;;;;;;;;;;;OAmBG;;;;;;;;;;;IAoBH;;;;;;;;;;OAUG;;;;;;;;;;;;;;;;;;;;IAkBH;8CAC0C;;;;;;;IAO1C;;;;;;;;;;OAUG;;;;;;;;;;;;;;;;;;CAkB8C,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE7D,yEAAyE;AACzE,eAAO,MAAM,UAAU,EAAoC,gBAAgB,EAAE,CAAC"}
|