ai-functions 2.1.1 → 2.3.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/.turbo/turbo-build.log +1 -4
- package/CHANGELOG.md +68 -1
- package/README.md +397 -157
- package/dist/ai-promise.d.ts +50 -3
- package/dist/ai-promise.d.ts.map +1 -1
- package/dist/ai-promise.js +410 -51
- package/dist/ai-promise.js.map +1 -1
- package/dist/ai-schemas.d.ts +56 -0
- package/dist/ai-schemas.d.ts.map +1 -0
- package/dist/ai-schemas.js +53 -0
- package/dist/ai-schemas.js.map +1 -0
- package/dist/ai.d.ts +16 -242
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +54 -837
- package/dist/ai.js.map +1 -1
- package/dist/batch/anthropic.d.ts +6 -4
- package/dist/batch/anthropic.d.ts.map +1 -1
- package/dist/batch/anthropic.js +83 -145
- package/dist/batch/anthropic.js.map +1 -1
- package/dist/batch/bedrock.d.ts +8 -30
- package/dist/batch/bedrock.d.ts.map +1 -1
- package/dist/batch/bedrock.js +155 -338
- package/dist/batch/bedrock.js.map +1 -1
- package/dist/batch/cloudflare.d.ts +8 -20
- package/dist/batch/cloudflare.d.ts.map +1 -1
- package/dist/batch/cloudflare.js +68 -189
- package/dist/batch/cloudflare.js.map +1 -1
- package/dist/batch/google.d.ts +6 -20
- package/dist/batch/google.d.ts.map +1 -1
- package/dist/batch/google.js +70 -238
- package/dist/batch/google.js.map +1 -1
- package/dist/batch/index.d.ts +4 -1
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +4 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/batch/memory.d.ts +1 -1
- package/dist/batch/memory.d.ts.map +1 -1
- package/dist/batch/memory.js +14 -10
- package/dist/batch/memory.js.map +1 -1
- package/dist/batch/openai.d.ts +11 -14
- package/dist/batch/openai.d.ts.map +1 -1
- package/dist/batch/openai.js +52 -156
- package/dist/batch/openai.js.map +1 -1
- package/dist/batch/provider.d.ts +111 -0
- package/dist/batch/provider.d.ts.map +1 -0
- package/dist/batch/provider.js +233 -0
- package/dist/batch/provider.js.map +1 -0
- package/dist/batch-map.d.ts.map +1 -1
- package/dist/batch-map.js +23 -17
- package/dist/batch-map.js.map +1 -1
- package/dist/batch-queue.d.ts +65 -0
- package/dist/batch-queue.d.ts.map +1 -1
- package/dist/batch-queue.js +169 -14
- package/dist/batch-queue.js.map +1 -1
- package/dist/budget.d.ts +272 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +513 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache.d.ts +295 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +433 -0
- package/dist/cache.js.map +1 -0
- package/dist/context.d.ts +42 -8
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +64 -62
- package/dist/context.js.map +1 -1
- package/dist/digital-objects-registry.d.ts +229 -0
- package/dist/digital-objects-registry.d.ts.map +1 -0
- package/dist/digital-objects-registry.js +617 -0
- package/dist/digital-objects-registry.js.map +1 -0
- package/dist/embeddings.d.ts +2 -2
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +35 -0
- package/dist/errors.js.map +1 -0
- package/dist/eval/runner.d.ts +10 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +41 -35
- package/dist/eval/runner.js.map +1 -1
- package/dist/eval-log/in-memory.d.ts +34 -0
- package/dist/eval-log/in-memory.d.ts.map +1 -0
- package/dist/eval-log/in-memory.js +84 -0
- package/dist/eval-log/in-memory.js.map +1 -0
- package/dist/eval-log/index.d.ts +29 -0
- package/dist/eval-log/index.d.ts.map +1 -0
- package/dist/eval-log/index.js +39 -0
- package/dist/eval-log/index.js.map +1 -0
- package/dist/eval-log/types.d.ts +101 -0
- package/dist/eval-log/types.d.ts.map +1 -0
- package/dist/eval-log/types.js +16 -0
- package/dist/eval-log/types.js.map +1 -0
- package/dist/function-registry.d.ts +116 -0
- package/dist/function-registry.d.ts.map +1 -0
- package/dist/function-registry.js +546 -0
- package/dist/function-registry.js.map +1 -0
- package/dist/generate.d.ts +9 -3
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +18 -22
- package/dist/generate.js.map +1 -1
- package/dist/index.d.ts +35 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -42
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +118 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +187 -0
- package/dist/logger.js.map +1 -0
- package/dist/middleware/budget.d.ts +84 -0
- package/dist/middleware/budget.d.ts.map +1 -0
- package/dist/middleware/budget.js +110 -0
- package/dist/middleware/budget.js.map +1 -0
- package/dist/middleware/cache.d.ts +103 -0
- package/dist/middleware/cache.d.ts.map +1 -0
- package/dist/middleware/cache.js +228 -0
- package/dist/middleware/cache.js.map +1 -0
- package/dist/middleware/embed-cache.d.ts +99 -0
- package/dist/middleware/embed-cache.d.ts.map +1 -0
- package/dist/middleware/embed-cache.js +128 -0
- package/dist/middleware/embed-cache.js.map +1 -0
- package/dist/middleware/index.d.ts +11 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/trace.d.ts +103 -0
- package/dist/middleware/trace.d.ts.map +1 -0
- package/dist/middleware/trace.js +176 -0
- package/dist/middleware/trace.js.map +1 -0
- package/dist/primitives.d.ts +120 -1
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +398 -26
- package/dist/primitives.js.map +1 -1
- package/dist/retry.d.ts +368 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +646 -0
- package/dist/retry.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -10
- package/dist/schema.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +285 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +6 -1
- package/dist/template.js.map +1 -1
- package/dist/tool-orchestration.d.ts +453 -0
- package/dist/tool-orchestration.d.ts.map +1 -0
- package/dist/tool-orchestration.js +763 -0
- package/dist/tool-orchestration.js.map +1 -0
- package/dist/type-guards.d.ts +28 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +29 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/types.d.ts +135 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +36 -1
- package/dist/types.js.map +1 -1
- package/dist/wrap-for-v3.d.ts +80 -0
- package/dist/wrap-for-v3.d.ts.map +1 -0
- package/dist/wrap-for-v3.js +89 -0
- package/dist/wrap-for-v3.js.map +1 -0
- package/examples/00-quickstart.ts +232 -0
- package/examples/01-rag-chatbot.ts +212 -0
- package/examples/02-multi-agent-research.ts +290 -0
- package/examples/03-email-classification.ts +379 -0
- package/examples/04-content-moderation.ts +400 -0
- package/examples/05-document-extraction.ts +455 -0
- package/examples/06-streaming-chat-nextjs.ts +437 -0
- package/examples/07-cloudflare-worker.ts +483 -0
- package/examples/08-batch-processing.ts +491 -0
- package/examples/09-budget-constrained.ts +527 -0
- package/examples/10-tool-orchestration.ts +565 -0
- package/examples/11-retry-resilience.ts +403 -0
- package/examples/12-caching-strategies.ts +422 -0
- package/examples/README.md +145 -0
- package/package.json +10 -6
- package/src/ai-promise.ts +528 -99
- package/src/ai-schemas.ts +122 -0
- package/src/ai.ts +69 -1153
- package/src/batch/anthropic.ts +96 -161
- package/src/batch/bedrock.ts +203 -454
- package/src/batch/cloudflare.ts +99 -282
- package/src/batch/google.ts +91 -297
- package/src/batch/index.ts +4 -1
- package/src/batch/memory.ts +15 -10
- package/src/batch/openai.ts +65 -193
- package/src/batch/provider.ts +336 -0
- package/src/batch-map.ts +29 -24
- package/src/batch-queue.ts +200 -11
- package/src/budget.ts +740 -0
- package/src/cache.ts +681 -0
- package/src/context.ts +122 -76
- package/src/digital-objects-registry.ts +750 -0
- package/src/errors.ts +37 -0
- package/src/eval/runner.ts +63 -38
- package/src/eval-log/in-memory.ts +90 -0
- package/src/eval-log/index.ts +46 -0
- package/src/eval-log/types.ts +110 -0
- package/src/function-registry.ts +671 -0
- package/src/generate.ts +33 -33
- package/src/index.ts +325 -49
- package/src/logger.ts +232 -0
- package/src/middleware/budget.ts +171 -0
- package/src/middleware/cache.ts +299 -0
- package/src/middleware/embed-cache.ts +195 -0
- package/src/middleware/index.ts +23 -0
- package/src/middleware/trace.ts +248 -0
- package/src/primitives.ts +589 -62
- package/src/retry.ts +902 -0
- package/src/schema.ts +8 -17
- package/src/telemetry.ts +403 -0
- package/src/template.ts +8 -4
- package/src/tool-orchestration.ts +1173 -0
- package/src/type-guards.ts +31 -0
- package/src/types.ts +164 -25
- package/src/wrap-for-v3.ts +105 -0
- package/test/ai-promise.test.ts +1080 -0
- package/test/ai-proxy.test.ts +1 -1
- package/test/backward-compat.test.ts +147 -0
- package/test/batch-autosubmit-errors.test.ts +610 -0
- package/test/batch-blog-posts.test.ts +87 -129
- package/test/budget-tracking.test.ts +800 -0
- package/test/cache.test.ts +712 -0
- package/test/context-isolation.test.ts +687 -0
- package/test/core-functions.test.ts +183 -579
- package/test/decide.test.ts +154 -322
- package/test/define.test.ts +211 -8
- package/test/digital-objects-registry.test.ts +760 -0
- package/test/embedding-cache-middleware.test.ts +140 -0
- package/test/evals/deterministic.eval.test.ts +376 -0
- package/test/generate-core.test.ts +140 -229
- package/test/implicit-batch.test.ts +22 -65
- package/test/json-parse-error-handling.test.ts +463 -0
- package/test/retry-policy-integration.test.ts +117 -0
- package/test/retry.test.ts +1016 -0
- package/test/schema.test.ts +55 -19
- package/test/streaming.test.ts +316 -0
- package/test/template.test.ts +1164 -0
- package/test/tool-orchestration.test.ts +1040 -0
- package/test/wrap-for-v3.test.ts +612 -0
- package/vitest.config.js +6 -0
- package/vitest.config.ts +20 -0
- package/dist/rpc/auth.d.ts +0 -69
- package/dist/rpc/auth.d.ts.map +0 -1
- package/dist/rpc/auth.js +0 -136
- package/dist/rpc/auth.js.map +0 -1
- package/dist/rpc/client.d.ts +0 -62
- package/dist/rpc/client.d.ts.map +0 -1
- package/dist/rpc/client.js +0 -103
- package/dist/rpc/client.js.map +0 -1
- package/dist/rpc/deferred.d.ts +0 -60
- package/dist/rpc/deferred.d.ts.map +0 -1
- package/dist/rpc/deferred.js +0 -96
- package/dist/rpc/deferred.js.map +0 -1
- package/dist/rpc/index.d.ts +0 -22
- package/dist/rpc/index.d.ts.map +0 -1
- package/dist/rpc/index.js +0 -38
- package/dist/rpc/index.js.map +0 -1
- package/dist/rpc/local.d.ts +0 -42
- package/dist/rpc/local.d.ts.map +0 -1
- package/dist/rpc/local.js +0 -50
- package/dist/rpc/local.js.map +0 -1
- package/dist/rpc/server.d.ts +0 -165
- package/dist/rpc/server.d.ts.map +0 -1
- package/dist/rpc/server.js +0 -405
- package/dist/rpc/server.js.map +0 -1
- package/dist/rpc/session.d.ts +0 -32
- package/dist/rpc/session.d.ts.map +0 -1
- package/dist/rpc/session.js +0 -43
- package/dist/rpc/session.js.map +0 -1
- package/dist/rpc/transport.d.ts +0 -306
- package/dist/rpc/transport.d.ts.map +0 -1
- package/dist/rpc/transport.js +0 -731
- package/dist/rpc/transport.js.map +0 -1
- package/src/batch/anthropic.js +0 -256
- package/src/batch/bedrock.js +0 -584
- package/src/batch/cloudflare.js +0 -287
- package/src/batch/google.js +0 -359
- package/src/batch/index.js +0 -30
- package/src/batch/memory.js +0 -187
- package/src/batch/openai.js +0 -402
- package/src/eval/index.js +0 -7
- package/src/eval/models.js +0 -119
- package/src/eval/runner.js +0 -147
- package/test/schema.test.js +0 -96
package/dist/retry.js
ADDED
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry and fallback patterns for AI function calls
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Exponential backoff with configurable base delay and multiplier
|
|
6
|
+
* - Jitter to prevent thundering herd (equal, full, decorrelated strategies)
|
|
7
|
+
* - Circuit breaker for fail-fast behavior after repeated failures
|
|
8
|
+
* - Fallback chains for model failover (sonnet -> opus -> gpt-4o)
|
|
9
|
+
* - Error classification for intelligent retry decisions
|
|
10
|
+
* - Partial retry for batch operations
|
|
11
|
+
*
|
|
12
|
+
* Per-model policy data (which models retry how, who falls back to whom,
|
|
13
|
+
* which batch tiers each model supports) lives in `language-models`'s
|
|
14
|
+
* `policyFor()`. The classes in this file are the *machinery* that reads
|
|
15
|
+
* that policy. See `RetryPolicy.forModel`, `CircuitBreaker.forModel`,
|
|
16
|
+
* `FallbackChain.forModel`.
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import { policyFor } from 'language-models';
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// ERROR TYPES AND CLASSIFICATION
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Error categories for retry decision making
|
|
26
|
+
*/
|
|
27
|
+
export var ErrorCategory;
|
|
28
|
+
(function (ErrorCategory) {
|
|
29
|
+
/** Network connectivity issues (retryable) */
|
|
30
|
+
ErrorCategory["Network"] = "network";
|
|
31
|
+
/** Rate limiting / quota exceeded (retryable with backoff) */
|
|
32
|
+
ErrorCategory["RateLimit"] = "rate_limit";
|
|
33
|
+
/** Invalid input / bad request (not retryable) */
|
|
34
|
+
ErrorCategory["InvalidInput"] = "invalid_input";
|
|
35
|
+
/** Authentication / authorization errors (not retryable) */
|
|
36
|
+
ErrorCategory["Authentication"] = "authentication";
|
|
37
|
+
/** Server errors (retryable) */
|
|
38
|
+
ErrorCategory["Server"] = "server";
|
|
39
|
+
/** Context length exceeded (not retryable without modification) */
|
|
40
|
+
ErrorCategory["ContextLength"] = "context_length";
|
|
41
|
+
/** Unknown error type */
|
|
42
|
+
ErrorCategory["Unknown"] = "unknown";
|
|
43
|
+
})(ErrorCategory || (ErrorCategory = {}));
|
|
44
|
+
/**
|
|
45
|
+
* Base class for retryable errors
|
|
46
|
+
*/
|
|
47
|
+
export class RetryableError extends Error {
|
|
48
|
+
retryable = true;
|
|
49
|
+
category;
|
|
50
|
+
constructor(message, category = ErrorCategory.Unknown) {
|
|
51
|
+
super(message);
|
|
52
|
+
this.name = 'RetryableError';
|
|
53
|
+
this.category = category;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Base class for non-retryable errors
|
|
58
|
+
*/
|
|
59
|
+
export class NonRetryableError extends Error {
|
|
60
|
+
retryable = false;
|
|
61
|
+
category;
|
|
62
|
+
constructor(message, category = ErrorCategory.InvalidInput) {
|
|
63
|
+
super(message);
|
|
64
|
+
this.name = 'NonRetryableError';
|
|
65
|
+
this.category = category;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Network-related errors (connection issues, timeouts)
|
|
70
|
+
*/
|
|
71
|
+
export class NetworkError extends RetryableError {
|
|
72
|
+
constructor(message) {
|
|
73
|
+
super(message, ErrorCategory.Network);
|
|
74
|
+
this.name = 'NetworkError';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Rate limit errors with optional retry-after
|
|
79
|
+
*/
|
|
80
|
+
export class RateLimitError extends RetryableError {
|
|
81
|
+
retryAfter;
|
|
82
|
+
constructor(message, options) {
|
|
83
|
+
super(message, ErrorCategory.RateLimit);
|
|
84
|
+
this.name = 'RateLimitError';
|
|
85
|
+
if (options?.retryAfter !== undefined) {
|
|
86
|
+
this.retryAfter = options.retryAfter;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create RateLimitError from HTTP response
|
|
91
|
+
*/
|
|
92
|
+
static fromResponse(response) {
|
|
93
|
+
const retryAfterHeader = response.headers?.['retry-after'];
|
|
94
|
+
let retryAfter;
|
|
95
|
+
if (retryAfterHeader) {
|
|
96
|
+
const seconds = parseInt(retryAfterHeader, 10);
|
|
97
|
+
if (!isNaN(seconds)) {
|
|
98
|
+
retryAfter = seconds * 1000; // Convert to milliseconds
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return new RateLimitError(`Rate limited (${response.status})`, retryAfter !== undefined ? { retryAfter } : undefined);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Error thrown when circuit breaker is open
|
|
106
|
+
*/
|
|
107
|
+
export class CircuitOpenError extends Error {
|
|
108
|
+
retryable = false;
|
|
109
|
+
constructor(message = 'Circuit breaker is open') {
|
|
110
|
+
super(message);
|
|
111
|
+
this.name = 'CircuitOpenError';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Classify an error into a category for retry decisions
|
|
116
|
+
*/
|
|
117
|
+
export function classifyError(error) {
|
|
118
|
+
if (!(error instanceof Error)) {
|
|
119
|
+
return ErrorCategory.Unknown;
|
|
120
|
+
}
|
|
121
|
+
const message = error.message.toLowerCase();
|
|
122
|
+
const status = error.status;
|
|
123
|
+
// Network errors
|
|
124
|
+
if (message.includes('econnrefused') ||
|
|
125
|
+
message.includes('etimedout') ||
|
|
126
|
+
message.includes('enotfound') ||
|
|
127
|
+
message.includes('socket hang up') ||
|
|
128
|
+
message.includes('network request failed') ||
|
|
129
|
+
message.includes('fetch failed')) {
|
|
130
|
+
return ErrorCategory.Network;
|
|
131
|
+
}
|
|
132
|
+
// Rate limit errors
|
|
133
|
+
if (message.includes('rate limit') ||
|
|
134
|
+
message.includes('429') ||
|
|
135
|
+
message.includes('too many requests') ||
|
|
136
|
+
message.includes('quota exceeded') ||
|
|
137
|
+
status === 429) {
|
|
138
|
+
return ErrorCategory.RateLimit;
|
|
139
|
+
}
|
|
140
|
+
// Invalid input errors
|
|
141
|
+
if (message.includes('invalid json') ||
|
|
142
|
+
message.includes('400 bad request') ||
|
|
143
|
+
message.includes('validation failed') ||
|
|
144
|
+
status === 400 ||
|
|
145
|
+
status === 422) {
|
|
146
|
+
return ErrorCategory.InvalidInput;
|
|
147
|
+
}
|
|
148
|
+
// Authentication errors
|
|
149
|
+
if (message.includes('401 unauthorized') ||
|
|
150
|
+
message.includes('403 forbidden') ||
|
|
151
|
+
message.includes('invalid api key') ||
|
|
152
|
+
status === 401 ||
|
|
153
|
+
status === 403) {
|
|
154
|
+
return ErrorCategory.Authentication;
|
|
155
|
+
}
|
|
156
|
+
// Server errors
|
|
157
|
+
if (message.includes('500') ||
|
|
158
|
+
message.includes('502') ||
|
|
159
|
+
message.includes('503') ||
|
|
160
|
+
message.includes('504') ||
|
|
161
|
+
message.includes('internal server error') ||
|
|
162
|
+
message.includes('bad gateway') ||
|
|
163
|
+
message.includes('service unavailable') ||
|
|
164
|
+
message.includes('gateway timeout') ||
|
|
165
|
+
(status && status >= 500 && status < 600)) {
|
|
166
|
+
return ErrorCategory.Server;
|
|
167
|
+
}
|
|
168
|
+
// Context length errors
|
|
169
|
+
if (message.includes('context length') ||
|
|
170
|
+
message.includes('token limit') ||
|
|
171
|
+
message.includes('maximum context')) {
|
|
172
|
+
return ErrorCategory.ContextLength;
|
|
173
|
+
}
|
|
174
|
+
return ErrorCategory.Unknown;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Calculate backoff delay with exponential increase and optional jitter
|
|
178
|
+
*
|
|
179
|
+
* @param attempt - Current attempt number (0-indexed)
|
|
180
|
+
* @param options - Backoff configuration
|
|
181
|
+
* @returns Delay in milliseconds
|
|
182
|
+
*/
|
|
183
|
+
export function calculateBackoff(attempt, options = {}) {
|
|
184
|
+
const { baseDelay = 1000, maxDelay = 30000, multiplier = 2, jitter = 0, jitterStrategy = 'equal', previousDelay, } = options;
|
|
185
|
+
// Calculate base exponential delay
|
|
186
|
+
let delay = baseDelay * Math.pow(multiplier, attempt);
|
|
187
|
+
// Apply jitter based on strategy
|
|
188
|
+
if (jitterStrategy === 'full') {
|
|
189
|
+
// Full jitter: random value between 0 and calculated delay
|
|
190
|
+
delay = Math.random() * delay;
|
|
191
|
+
}
|
|
192
|
+
else if (jitterStrategy === 'decorrelated' && previousDelay !== undefined) {
|
|
193
|
+
// Decorrelated jitter: random between baseDelay and previousDelay * 3
|
|
194
|
+
delay = baseDelay + Math.random() * (previousDelay * 3 - baseDelay);
|
|
195
|
+
}
|
|
196
|
+
else if (jitter > 0) {
|
|
197
|
+
// Equal jitter: +/- jitter% of calculated delay
|
|
198
|
+
const jitterRange = delay * jitter;
|
|
199
|
+
delay = delay - jitterRange + Math.random() * 2 * jitterRange;
|
|
200
|
+
}
|
|
201
|
+
// Apply max delay cap
|
|
202
|
+
return Math.min(delay, maxDelay);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Retry policy for executing operations with exponential backoff
|
|
206
|
+
*
|
|
207
|
+
* @deprecated Phase C Week 3 — `RetryPolicy` has 1 real production caller
|
|
208
|
+
* (audited 2026-05-06; see `bd show aip-ibid`):
|
|
209
|
+
* `ai-database/src/cascade-orchestrator.ts:1235` (loose coupling — dynamic
|
|
210
|
+
* import + graceful try/catch fallback when ai-functions not available).
|
|
211
|
+
* AI SDK 6's `customProvider({ retryPolicy })` and `wrapLanguageModel(model,
|
|
212
|
+
* retryMiddleware)` cover the same surface. Migration tracked in aip-ibid;
|
|
213
|
+
* the one callsite can move on a separate commit. Will be removed in the
|
|
214
|
+
* Phase C semver bump.
|
|
215
|
+
*/
|
|
216
|
+
export class RetryPolicy {
|
|
217
|
+
options;
|
|
218
|
+
constructor(options = {}) {
|
|
219
|
+
this.options = {
|
|
220
|
+
maxRetries: options.maxRetries ?? 3,
|
|
221
|
+
baseDelay: options.baseDelay ?? 1000,
|
|
222
|
+
maxDelay: options.maxDelay ?? 30000,
|
|
223
|
+
multiplier: options.multiplier ?? 2,
|
|
224
|
+
jitter: options.jitter ?? 0,
|
|
225
|
+
jitterStrategy: options.jitterStrategy ?? 'equal',
|
|
226
|
+
respectRetryAfter: options.respectRetryAfter ?? true,
|
|
227
|
+
...(options.shouldRetry !== undefined && { shouldRetry: options.shouldRetry }),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Build a RetryPolicy from a model's `ModelPolicy` (loaded via
|
|
232
|
+
* `language-models`). Per-call `overrides` win over policy data.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```ts
|
|
236
|
+
* const policy = RetryPolicy.forModel('sonnet')
|
|
237
|
+
* // Uses retry settings derived for anthropic/claude-sonnet-4.5
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
static forModel(alias, overrides = {}) {
|
|
241
|
+
const policy = policyFor(alias);
|
|
242
|
+
return RetryPolicy.fromPolicy(policy, overrides);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Build a RetryPolicy directly from a `ModelPolicy`. Useful when the policy
|
|
246
|
+
* is already in hand (e.g. from a request context).
|
|
247
|
+
*/
|
|
248
|
+
static fromPolicy(policy, overrides = {}) {
|
|
249
|
+
const retryable = new Set(policy.retry.retryableCategories);
|
|
250
|
+
const shouldRetry = (error) => {
|
|
251
|
+
// Honour error's own retryable property when present.
|
|
252
|
+
if (error && typeof error === 'object' && 'retryable' in error) {
|
|
253
|
+
const flag = error.retryable;
|
|
254
|
+
if (flag === false)
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
const category = classifyError(error);
|
|
258
|
+
return retryable.has(category);
|
|
259
|
+
};
|
|
260
|
+
return new RetryPolicy({
|
|
261
|
+
maxRetries: policy.retry.maxRetries,
|
|
262
|
+
baseDelay: policy.retry.baseDelay,
|
|
263
|
+
maxDelay: policy.retry.maxDelay,
|
|
264
|
+
multiplier: policy.retry.multiplier,
|
|
265
|
+
jitter: policy.retry.jitter,
|
|
266
|
+
shouldRetry,
|
|
267
|
+
...overrides,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Execute an operation with retry logic
|
|
272
|
+
*/
|
|
273
|
+
async execute(operation) {
|
|
274
|
+
let lastError;
|
|
275
|
+
let previousDelay = this.options.baseDelay;
|
|
276
|
+
for (let attempt = 0; attempt <= this.options.maxRetries; attempt++) {
|
|
277
|
+
try {
|
|
278
|
+
return await operation({ attempt, maxRetries: this.options.maxRetries });
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
lastError = error;
|
|
282
|
+
// Check if error is retryable
|
|
283
|
+
if (!this.isRetryable(error)) {
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
// Don't wait after the last attempt
|
|
287
|
+
if (attempt === this.options.maxRetries) {
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
// Calculate delay
|
|
291
|
+
let delay = calculateBackoff(attempt, {
|
|
292
|
+
baseDelay: this.options.baseDelay,
|
|
293
|
+
maxDelay: this.options.maxDelay,
|
|
294
|
+
multiplier: this.options.multiplier,
|
|
295
|
+
jitter: this.options.jitter,
|
|
296
|
+
jitterStrategy: this.options.jitterStrategy,
|
|
297
|
+
previousDelay,
|
|
298
|
+
});
|
|
299
|
+
// Respect retry-after for rate limit errors
|
|
300
|
+
if (this.options.respectRetryAfter && error instanceof RateLimitError && error.retryAfter) {
|
|
301
|
+
delay = error.retryAfter;
|
|
302
|
+
}
|
|
303
|
+
previousDelay = delay;
|
|
304
|
+
await this.sleep(delay);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
throw lastError;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Execute a batch operation with partial retry for failed items
|
|
311
|
+
*/
|
|
312
|
+
async executeBatch(items, batchProcessor) {
|
|
313
|
+
const finalResults = new Map();
|
|
314
|
+
let pendingItems = [...items];
|
|
315
|
+
const attemptCounts = new Map();
|
|
316
|
+
// Initialize attempt counts
|
|
317
|
+
items.forEach((item) => attemptCounts.set(item, 0));
|
|
318
|
+
for (let round = 0; round <= this.options.maxRetries && pendingItems.length > 0; round++) {
|
|
319
|
+
// Wait before retry (not on first attempt)
|
|
320
|
+
if (round > 0) {
|
|
321
|
+
const delay = calculateBackoff(round - 1, {
|
|
322
|
+
baseDelay: this.options.baseDelay,
|
|
323
|
+
maxDelay: this.options.maxDelay,
|
|
324
|
+
multiplier: this.options.multiplier,
|
|
325
|
+
jitter: this.options.jitter,
|
|
326
|
+
jitterStrategy: this.options.jitterStrategy,
|
|
327
|
+
});
|
|
328
|
+
await this.sleep(delay);
|
|
329
|
+
}
|
|
330
|
+
// Process current batch
|
|
331
|
+
const results = await batchProcessor(pendingItems);
|
|
332
|
+
// Separate successful and failed items
|
|
333
|
+
const failedItems = [];
|
|
334
|
+
for (const result of results) {
|
|
335
|
+
attemptCounts.set(result.item, (attemptCounts.get(result.item) || 0) + 1);
|
|
336
|
+
if (result.success) {
|
|
337
|
+
finalResults.set(result.item, result);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
// Check if we can retry this item
|
|
341
|
+
const attempts = attemptCounts.get(result.item) || 0;
|
|
342
|
+
if (attempts <= this.options.maxRetries && this.isRetryable(result.error)) {
|
|
343
|
+
failedItems.push(result.item);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
finalResults.set(result.item, result);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
pendingItems = failedItems;
|
|
351
|
+
}
|
|
352
|
+
// Return results in original order
|
|
353
|
+
return items.map((item) => finalResults.get(item));
|
|
354
|
+
}
|
|
355
|
+
isRetryable(error) {
|
|
356
|
+
// Check custom shouldRetry function first
|
|
357
|
+
if (this.options.shouldRetry) {
|
|
358
|
+
return this.options.shouldRetry(error);
|
|
359
|
+
}
|
|
360
|
+
// Check error's own retryable property
|
|
361
|
+
if (error && typeof error === 'object' && 'retryable' in error) {
|
|
362
|
+
return error.retryable === true;
|
|
363
|
+
}
|
|
364
|
+
// Classify error and determine retryability
|
|
365
|
+
const category = classifyError(error);
|
|
366
|
+
return (category === ErrorCategory.Network ||
|
|
367
|
+
category === ErrorCategory.RateLimit ||
|
|
368
|
+
category === ErrorCategory.Server ||
|
|
369
|
+
category === ErrorCategory.Unknown);
|
|
370
|
+
}
|
|
371
|
+
sleep(ms) {
|
|
372
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Circuit breaker for fail-fast behavior
|
|
377
|
+
*
|
|
378
|
+
* States:
|
|
379
|
+
* - CLOSED: Normal operation, failures tracked
|
|
380
|
+
* - OPEN: Fail fast, reject all requests
|
|
381
|
+
* - HALF-OPEN: Allow single test request
|
|
382
|
+
*
|
|
383
|
+
* @deprecated Phase C Week 3 — `CircuitBreaker` has zero real callers in
|
|
384
|
+
* primitives.org.ai (audited 2026-05-06; only comment-only references in
|
|
385
|
+
* `language-models/src/index.ts`; see `bd show aip-ibid`). AI SDK 6's
|
|
386
|
+
* `wrapLanguageModel(model, circuitMiddleware)` replacement is the going-
|
|
387
|
+
* forward primitive. Will be removed in the Phase C semver bump.
|
|
388
|
+
*/
|
|
389
|
+
export class CircuitBreaker {
|
|
390
|
+
_state = 'closed';
|
|
391
|
+
_failureCount = 0;
|
|
392
|
+
_successCount = 0;
|
|
393
|
+
_lastFailure = null;
|
|
394
|
+
_lastSuccess = null;
|
|
395
|
+
_totalFailures = 0;
|
|
396
|
+
_totalSuccesses = 0;
|
|
397
|
+
_openedAt = null;
|
|
398
|
+
options;
|
|
399
|
+
constructor(options = {}) {
|
|
400
|
+
this.options = {
|
|
401
|
+
failureThreshold: options.failureThreshold ?? 5,
|
|
402
|
+
resetTimeout: options.resetTimeout ?? 30000,
|
|
403
|
+
successThreshold: options.successThreshold ?? 1,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Build a CircuitBreaker for a specific model, using its `ModelPolicy`.
|
|
408
|
+
* Per-call overrides win over policy data.
|
|
409
|
+
*/
|
|
410
|
+
static forModel(alias, overrides = {}) {
|
|
411
|
+
const policy = policyFor(alias);
|
|
412
|
+
return new CircuitBreaker({
|
|
413
|
+
failureThreshold: policy.circuitBreaker.failureThreshold,
|
|
414
|
+
resetTimeout: policy.circuitBreaker.resetTimeout,
|
|
415
|
+
successThreshold: policy.circuitBreaker.successThreshold,
|
|
416
|
+
...overrides,
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Current circuit state
|
|
421
|
+
*/
|
|
422
|
+
get state() {
|
|
423
|
+
// Check if we should transition from open to half-open
|
|
424
|
+
if (this._state === 'open' && this._openedAt !== null) {
|
|
425
|
+
if (Date.now() - this._openedAt >= this.options.resetTimeout) {
|
|
426
|
+
this._state = 'half-open';
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return this._state;
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Current failure count
|
|
433
|
+
*/
|
|
434
|
+
get failureCount() {
|
|
435
|
+
return this._failureCount;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Execute an operation through the circuit breaker
|
|
439
|
+
*/
|
|
440
|
+
async execute(operation) {
|
|
441
|
+
// Check current state
|
|
442
|
+
const currentState = this.state;
|
|
443
|
+
if (currentState === 'open') {
|
|
444
|
+
throw new CircuitOpenError();
|
|
445
|
+
}
|
|
446
|
+
try {
|
|
447
|
+
const result = await operation();
|
|
448
|
+
this.recordSuccess();
|
|
449
|
+
return result;
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
this.recordFailure();
|
|
453
|
+
throw error;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Record a successful operation
|
|
458
|
+
*/
|
|
459
|
+
recordSuccess() {
|
|
460
|
+
this._successCount++;
|
|
461
|
+
this._totalSuccesses++;
|
|
462
|
+
this._lastSuccess = new Date();
|
|
463
|
+
this._failureCount = 0; // Reset failure count on success
|
|
464
|
+
if (this._state === 'half-open') {
|
|
465
|
+
if (this._successCount >= this.options.successThreshold) {
|
|
466
|
+
this._state = 'closed';
|
|
467
|
+
this._openedAt = null;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Record a failed operation
|
|
473
|
+
*/
|
|
474
|
+
recordFailure() {
|
|
475
|
+
this._failureCount++;
|
|
476
|
+
this._totalFailures++;
|
|
477
|
+
this._lastFailure = new Date();
|
|
478
|
+
this._successCount = 0; // Reset success count on failure
|
|
479
|
+
if (this._state === 'closed') {
|
|
480
|
+
if (this._failureCount >= this.options.failureThreshold) {
|
|
481
|
+
this._state = 'open';
|
|
482
|
+
this._openedAt = Date.now();
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
else if (this._state === 'half-open') {
|
|
486
|
+
// Any failure in half-open state reopens the circuit
|
|
487
|
+
this._state = 'open';
|
|
488
|
+
this._openedAt = Date.now();
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Get circuit breaker metrics
|
|
493
|
+
*/
|
|
494
|
+
getMetrics() {
|
|
495
|
+
return {
|
|
496
|
+
state: this.state,
|
|
497
|
+
failureCount: this._failureCount,
|
|
498
|
+
successCount: this._successCount,
|
|
499
|
+
lastFailure: this._lastFailure,
|
|
500
|
+
lastSuccess: this._lastSuccess,
|
|
501
|
+
totalFailures: this._totalFailures,
|
|
502
|
+
totalSuccesses: this._totalSuccesses,
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Manually reset the circuit breaker
|
|
507
|
+
*/
|
|
508
|
+
reset() {
|
|
509
|
+
this._state = 'closed';
|
|
510
|
+
this._failureCount = 0;
|
|
511
|
+
this._successCount = 0;
|
|
512
|
+
this._openedAt = null;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Fallback chain for model failover
|
|
517
|
+
*
|
|
518
|
+
* Tries models in order until one succeeds:
|
|
519
|
+
* sonnet -> opus -> gpt-4o -> gemini
|
|
520
|
+
*
|
|
521
|
+
* @deprecated Phase C Week 3 — `FallbackChain` (LLM model failover) has
|
|
522
|
+
* zero real callers in primitives.org.ai (audited 2026-05-06; the
|
|
523
|
+
* `human-in-the-loop` package's `FallbackChain` is a different class for
|
|
524
|
+
* HITL fallback resolution, not LLM failover). AI SDK 4.3+ ships native
|
|
525
|
+
* `customProvider({ fallbackProvider })` which is the going-forward
|
|
526
|
+
* primitive. See `bd show aip-ibid`. Will be removed in the Phase C
|
|
527
|
+
* semver bump.
|
|
528
|
+
*/
|
|
529
|
+
export class FallbackChain {
|
|
530
|
+
models;
|
|
531
|
+
options;
|
|
532
|
+
lastMetrics = null;
|
|
533
|
+
constructor(models, options = {}) {
|
|
534
|
+
if (models.length === 0) {
|
|
535
|
+
throw new Error('FallbackChain requires at least one model');
|
|
536
|
+
}
|
|
537
|
+
this.models = models;
|
|
538
|
+
this.options = options;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Build a FallbackChain from a model's `ModelPolicy`. The caller supplies
|
|
542
|
+
* an `executor` that takes a model id and returns a promise — the chain
|
|
543
|
+
* applies it to the primary model first, then to each fallback in order.
|
|
544
|
+
*
|
|
545
|
+
* @example
|
|
546
|
+
* ```ts
|
|
547
|
+
* const chain = FallbackChain.forModel('sonnet', (modelId, params) =>
|
|
548
|
+
* ai({ model: modelId, prompt: params!.prompt })
|
|
549
|
+
* )
|
|
550
|
+
* await chain.execute({ prompt: 'Hello' })
|
|
551
|
+
* ```
|
|
552
|
+
*/
|
|
553
|
+
static forModel(alias, executor, options = {}) {
|
|
554
|
+
const policy = policyFor(alias);
|
|
555
|
+
const ids = [policy.$id, ...policy.fallbackChain];
|
|
556
|
+
const models = ids.map((id) => ({
|
|
557
|
+
name: id,
|
|
558
|
+
execute: (params) => executor(id, params),
|
|
559
|
+
}));
|
|
560
|
+
return new FallbackChain(models, options);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Execute the fallback chain
|
|
564
|
+
*/
|
|
565
|
+
async execute(params) {
|
|
566
|
+
const startTime = Date.now();
|
|
567
|
+
const failedModels = [];
|
|
568
|
+
const errors = [];
|
|
569
|
+
for (const model of this.models) {
|
|
570
|
+
try {
|
|
571
|
+
const result = await model.execute(params);
|
|
572
|
+
this.lastMetrics = {
|
|
573
|
+
attempts: failedModels.length + 1,
|
|
574
|
+
successfulModel: model.name,
|
|
575
|
+
failedModels,
|
|
576
|
+
totalDuration: Date.now() - startTime,
|
|
577
|
+
errors,
|
|
578
|
+
};
|
|
579
|
+
return result;
|
|
580
|
+
}
|
|
581
|
+
catch (error) {
|
|
582
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
583
|
+
failedModels.push(model.name);
|
|
584
|
+
errors.push({ model: model.name, error: err });
|
|
585
|
+
// Check if we should attempt fallback
|
|
586
|
+
if (this.options.shouldFallback && !this.options.shouldFallback(error)) {
|
|
587
|
+
this.lastMetrics = {
|
|
588
|
+
attempts: failedModels.length,
|
|
589
|
+
successfulModel: null,
|
|
590
|
+
failedModels,
|
|
591
|
+
totalDuration: Date.now() - startTime,
|
|
592
|
+
errors,
|
|
593
|
+
};
|
|
594
|
+
throw error;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
this.lastMetrics = {
|
|
599
|
+
attempts: this.models.length,
|
|
600
|
+
successfulModel: null,
|
|
601
|
+
failedModels,
|
|
602
|
+
totalDuration: Date.now() - startTime,
|
|
603
|
+
errors,
|
|
604
|
+
};
|
|
605
|
+
throw new Error('All fallback models failed');
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Get metrics from the last execution
|
|
609
|
+
*/
|
|
610
|
+
getMetrics() {
|
|
611
|
+
if (!this.lastMetrics) {
|
|
612
|
+
return {
|
|
613
|
+
attempts: 0,
|
|
614
|
+
successfulModel: null,
|
|
615
|
+
failedModels: [],
|
|
616
|
+
totalDuration: 0,
|
|
617
|
+
errors: [],
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
return this.lastMetrics;
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
// ============================================================================
|
|
624
|
+
// CONVENIENCE HELPER
|
|
625
|
+
// ============================================================================
|
|
626
|
+
/**
|
|
627
|
+
* Wrap an async function with retry logic
|
|
628
|
+
*
|
|
629
|
+
* @example
|
|
630
|
+
* ```ts
|
|
631
|
+
* const reliableFetch = withRetry(fetch, {
|
|
632
|
+
* maxRetries: 3,
|
|
633
|
+
* baseDelay: 1000,
|
|
634
|
+
* jitter: 0.2,
|
|
635
|
+
* })
|
|
636
|
+
*
|
|
637
|
+
* const response = await reliableFetch('https://api.example.com')
|
|
638
|
+
* ```
|
|
639
|
+
*/
|
|
640
|
+
export function withRetry(fn, options = {}) {
|
|
641
|
+
const policy = new RetryPolicy(options);
|
|
642
|
+
return async (...args) => {
|
|
643
|
+
return policy.execute(() => fn(...args));
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAK,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AAGxC;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,YAAY,CAAC,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,GAC/B,UAAU,CAAA;AAEd;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAEnE;AAwED;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC/C,MAAM,GACN,CAAC,SAAS,CAAC,MAAM,CAAC,GAClB,MAAM,EAAE,GACR,CAAC,SAAS,CAAC,MAAM,CAAC,GAClB,MAAM,EAAE,GACR,CAAC,SAAS;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY;CAAE,GAC1C;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC3C,OAAO,CAAA"}
|