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.
Files changed (286) hide show
  1. package/.turbo/turbo-build.log +1 -4
  2. package/CHANGELOG.md +68 -1
  3. package/README.md +397 -157
  4. package/dist/ai-promise.d.ts +50 -3
  5. package/dist/ai-promise.d.ts.map +1 -1
  6. package/dist/ai-promise.js +410 -51
  7. package/dist/ai-promise.js.map +1 -1
  8. package/dist/ai-schemas.d.ts +56 -0
  9. package/dist/ai-schemas.d.ts.map +1 -0
  10. package/dist/ai-schemas.js +53 -0
  11. package/dist/ai-schemas.js.map +1 -0
  12. package/dist/ai.d.ts +16 -242
  13. package/dist/ai.d.ts.map +1 -1
  14. package/dist/ai.js +54 -837
  15. package/dist/ai.js.map +1 -1
  16. package/dist/batch/anthropic.d.ts +6 -4
  17. package/dist/batch/anthropic.d.ts.map +1 -1
  18. package/dist/batch/anthropic.js +83 -145
  19. package/dist/batch/anthropic.js.map +1 -1
  20. package/dist/batch/bedrock.d.ts +8 -30
  21. package/dist/batch/bedrock.d.ts.map +1 -1
  22. package/dist/batch/bedrock.js +155 -338
  23. package/dist/batch/bedrock.js.map +1 -1
  24. package/dist/batch/cloudflare.d.ts +8 -20
  25. package/dist/batch/cloudflare.d.ts.map +1 -1
  26. package/dist/batch/cloudflare.js +68 -189
  27. package/dist/batch/cloudflare.js.map +1 -1
  28. package/dist/batch/google.d.ts +6 -20
  29. package/dist/batch/google.d.ts.map +1 -1
  30. package/dist/batch/google.js +70 -238
  31. package/dist/batch/google.js.map +1 -1
  32. package/dist/batch/index.d.ts +4 -1
  33. package/dist/batch/index.d.ts.map +1 -1
  34. package/dist/batch/index.js +4 -1
  35. package/dist/batch/index.js.map +1 -1
  36. package/dist/batch/memory.d.ts +1 -1
  37. package/dist/batch/memory.d.ts.map +1 -1
  38. package/dist/batch/memory.js +14 -10
  39. package/dist/batch/memory.js.map +1 -1
  40. package/dist/batch/openai.d.ts +11 -14
  41. package/dist/batch/openai.d.ts.map +1 -1
  42. package/dist/batch/openai.js +52 -156
  43. package/dist/batch/openai.js.map +1 -1
  44. package/dist/batch/provider.d.ts +111 -0
  45. package/dist/batch/provider.d.ts.map +1 -0
  46. package/dist/batch/provider.js +233 -0
  47. package/dist/batch/provider.js.map +1 -0
  48. package/dist/batch-map.d.ts.map +1 -1
  49. package/dist/batch-map.js +23 -17
  50. package/dist/batch-map.js.map +1 -1
  51. package/dist/batch-queue.d.ts +65 -0
  52. package/dist/batch-queue.d.ts.map +1 -1
  53. package/dist/batch-queue.js +169 -14
  54. package/dist/batch-queue.js.map +1 -1
  55. package/dist/budget.d.ts +272 -0
  56. package/dist/budget.d.ts.map +1 -0
  57. package/dist/budget.js +513 -0
  58. package/dist/budget.js.map +1 -0
  59. package/dist/cache.d.ts +295 -0
  60. package/dist/cache.d.ts.map +1 -0
  61. package/dist/cache.js +433 -0
  62. package/dist/cache.js.map +1 -0
  63. package/dist/context.d.ts +42 -8
  64. package/dist/context.d.ts.map +1 -1
  65. package/dist/context.js +64 -62
  66. package/dist/context.js.map +1 -1
  67. package/dist/digital-objects-registry.d.ts +229 -0
  68. package/dist/digital-objects-registry.d.ts.map +1 -0
  69. package/dist/digital-objects-registry.js +617 -0
  70. package/dist/digital-objects-registry.js.map +1 -0
  71. package/dist/embeddings.d.ts +2 -2
  72. package/dist/embeddings.d.ts.map +1 -1
  73. package/dist/errors.d.ts +22 -0
  74. package/dist/errors.d.ts.map +1 -0
  75. package/dist/errors.js +35 -0
  76. package/dist/errors.js.map +1 -0
  77. package/dist/eval/runner.d.ts +10 -1
  78. package/dist/eval/runner.d.ts.map +1 -1
  79. package/dist/eval/runner.js +41 -35
  80. package/dist/eval/runner.js.map +1 -1
  81. package/dist/eval-log/in-memory.d.ts +34 -0
  82. package/dist/eval-log/in-memory.d.ts.map +1 -0
  83. package/dist/eval-log/in-memory.js +84 -0
  84. package/dist/eval-log/in-memory.js.map +1 -0
  85. package/dist/eval-log/index.d.ts +29 -0
  86. package/dist/eval-log/index.d.ts.map +1 -0
  87. package/dist/eval-log/index.js +39 -0
  88. package/dist/eval-log/index.js.map +1 -0
  89. package/dist/eval-log/types.d.ts +101 -0
  90. package/dist/eval-log/types.d.ts.map +1 -0
  91. package/dist/eval-log/types.js +16 -0
  92. package/dist/eval-log/types.js.map +1 -0
  93. package/dist/function-registry.d.ts +116 -0
  94. package/dist/function-registry.d.ts.map +1 -0
  95. package/dist/function-registry.js +546 -0
  96. package/dist/function-registry.js.map +1 -0
  97. package/dist/generate.d.ts +9 -3
  98. package/dist/generate.d.ts.map +1 -1
  99. package/dist/generate.js +18 -22
  100. package/dist/generate.js.map +1 -1
  101. package/dist/index.d.ts +35 -20
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +89 -42
  104. package/dist/index.js.map +1 -1
  105. package/dist/logger.d.ts +118 -0
  106. package/dist/logger.d.ts.map +1 -0
  107. package/dist/logger.js +187 -0
  108. package/dist/logger.js.map +1 -0
  109. package/dist/middleware/budget.d.ts +84 -0
  110. package/dist/middleware/budget.d.ts.map +1 -0
  111. package/dist/middleware/budget.js +110 -0
  112. package/dist/middleware/budget.js.map +1 -0
  113. package/dist/middleware/cache.d.ts +103 -0
  114. package/dist/middleware/cache.d.ts.map +1 -0
  115. package/dist/middleware/cache.js +228 -0
  116. package/dist/middleware/cache.js.map +1 -0
  117. package/dist/middleware/embed-cache.d.ts +99 -0
  118. package/dist/middleware/embed-cache.d.ts.map +1 -0
  119. package/dist/middleware/embed-cache.js +128 -0
  120. package/dist/middleware/embed-cache.js.map +1 -0
  121. package/dist/middleware/index.d.ts +11 -0
  122. package/dist/middleware/index.d.ts.map +1 -0
  123. package/dist/middleware/index.js +11 -0
  124. package/dist/middleware/index.js.map +1 -0
  125. package/dist/middleware/trace.d.ts +103 -0
  126. package/dist/middleware/trace.d.ts.map +1 -0
  127. package/dist/middleware/trace.js +176 -0
  128. package/dist/middleware/trace.js.map +1 -0
  129. package/dist/primitives.d.ts +120 -1
  130. package/dist/primitives.d.ts.map +1 -1
  131. package/dist/primitives.js +398 -26
  132. package/dist/primitives.js.map +1 -1
  133. package/dist/retry.d.ts +368 -0
  134. package/dist/retry.d.ts.map +1 -0
  135. package/dist/retry.js +646 -0
  136. package/dist/retry.js.map +1 -0
  137. package/dist/schema.d.ts.map +1 -1
  138. package/dist/schema.js +2 -10
  139. package/dist/schema.js.map +1 -1
  140. package/dist/telemetry.d.ts +128 -0
  141. package/dist/telemetry.d.ts.map +1 -0
  142. package/dist/telemetry.js +285 -0
  143. package/dist/telemetry.js.map +1 -0
  144. package/dist/template.d.ts.map +1 -1
  145. package/dist/template.js +6 -1
  146. package/dist/template.js.map +1 -1
  147. package/dist/tool-orchestration.d.ts +453 -0
  148. package/dist/tool-orchestration.d.ts.map +1 -0
  149. package/dist/tool-orchestration.js +763 -0
  150. package/dist/tool-orchestration.js.map +1 -0
  151. package/dist/type-guards.d.ts +28 -0
  152. package/dist/type-guards.d.ts.map +1 -0
  153. package/dist/type-guards.js +29 -0
  154. package/dist/type-guards.js.map +1 -0
  155. package/dist/types.d.ts +135 -17
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/types.js +36 -1
  158. package/dist/types.js.map +1 -1
  159. package/dist/wrap-for-v3.d.ts +80 -0
  160. package/dist/wrap-for-v3.d.ts.map +1 -0
  161. package/dist/wrap-for-v3.js +89 -0
  162. package/dist/wrap-for-v3.js.map +1 -0
  163. package/examples/00-quickstart.ts +232 -0
  164. package/examples/01-rag-chatbot.ts +212 -0
  165. package/examples/02-multi-agent-research.ts +290 -0
  166. package/examples/03-email-classification.ts +379 -0
  167. package/examples/04-content-moderation.ts +400 -0
  168. package/examples/05-document-extraction.ts +455 -0
  169. package/examples/06-streaming-chat-nextjs.ts +437 -0
  170. package/examples/07-cloudflare-worker.ts +483 -0
  171. package/examples/08-batch-processing.ts +491 -0
  172. package/examples/09-budget-constrained.ts +527 -0
  173. package/examples/10-tool-orchestration.ts +565 -0
  174. package/examples/11-retry-resilience.ts +403 -0
  175. package/examples/12-caching-strategies.ts +422 -0
  176. package/examples/README.md +145 -0
  177. package/package.json +10 -6
  178. package/src/ai-promise.ts +528 -99
  179. package/src/ai-schemas.ts +122 -0
  180. package/src/ai.ts +69 -1153
  181. package/src/batch/anthropic.ts +96 -161
  182. package/src/batch/bedrock.ts +203 -454
  183. package/src/batch/cloudflare.ts +99 -282
  184. package/src/batch/google.ts +91 -297
  185. package/src/batch/index.ts +4 -1
  186. package/src/batch/memory.ts +15 -10
  187. package/src/batch/openai.ts +65 -193
  188. package/src/batch/provider.ts +336 -0
  189. package/src/batch-map.ts +29 -24
  190. package/src/batch-queue.ts +200 -11
  191. package/src/budget.ts +740 -0
  192. package/src/cache.ts +681 -0
  193. package/src/context.ts +122 -76
  194. package/src/digital-objects-registry.ts +750 -0
  195. package/src/errors.ts +37 -0
  196. package/src/eval/runner.ts +63 -38
  197. package/src/eval-log/in-memory.ts +90 -0
  198. package/src/eval-log/index.ts +46 -0
  199. package/src/eval-log/types.ts +110 -0
  200. package/src/function-registry.ts +671 -0
  201. package/src/generate.ts +33 -33
  202. package/src/index.ts +325 -49
  203. package/src/logger.ts +232 -0
  204. package/src/middleware/budget.ts +171 -0
  205. package/src/middleware/cache.ts +299 -0
  206. package/src/middleware/embed-cache.ts +195 -0
  207. package/src/middleware/index.ts +23 -0
  208. package/src/middleware/trace.ts +248 -0
  209. package/src/primitives.ts +589 -62
  210. package/src/retry.ts +902 -0
  211. package/src/schema.ts +8 -17
  212. package/src/telemetry.ts +403 -0
  213. package/src/template.ts +8 -4
  214. package/src/tool-orchestration.ts +1173 -0
  215. package/src/type-guards.ts +31 -0
  216. package/src/types.ts +164 -25
  217. package/src/wrap-for-v3.ts +105 -0
  218. package/test/ai-promise.test.ts +1080 -0
  219. package/test/ai-proxy.test.ts +1 -1
  220. package/test/backward-compat.test.ts +147 -0
  221. package/test/batch-autosubmit-errors.test.ts +610 -0
  222. package/test/batch-blog-posts.test.ts +87 -129
  223. package/test/budget-tracking.test.ts +800 -0
  224. package/test/cache.test.ts +712 -0
  225. package/test/context-isolation.test.ts +687 -0
  226. package/test/core-functions.test.ts +183 -579
  227. package/test/decide.test.ts +154 -322
  228. package/test/define.test.ts +211 -8
  229. package/test/digital-objects-registry.test.ts +760 -0
  230. package/test/embedding-cache-middleware.test.ts +140 -0
  231. package/test/evals/deterministic.eval.test.ts +376 -0
  232. package/test/generate-core.test.ts +140 -229
  233. package/test/implicit-batch.test.ts +22 -65
  234. package/test/json-parse-error-handling.test.ts +463 -0
  235. package/test/retry-policy-integration.test.ts +117 -0
  236. package/test/retry.test.ts +1016 -0
  237. package/test/schema.test.ts +55 -19
  238. package/test/streaming.test.ts +316 -0
  239. package/test/template.test.ts +1164 -0
  240. package/test/tool-orchestration.test.ts +1040 -0
  241. package/test/wrap-for-v3.test.ts +612 -0
  242. package/vitest.config.js +6 -0
  243. package/vitest.config.ts +20 -0
  244. package/dist/rpc/auth.d.ts +0 -69
  245. package/dist/rpc/auth.d.ts.map +0 -1
  246. package/dist/rpc/auth.js +0 -136
  247. package/dist/rpc/auth.js.map +0 -1
  248. package/dist/rpc/client.d.ts +0 -62
  249. package/dist/rpc/client.d.ts.map +0 -1
  250. package/dist/rpc/client.js +0 -103
  251. package/dist/rpc/client.js.map +0 -1
  252. package/dist/rpc/deferred.d.ts +0 -60
  253. package/dist/rpc/deferred.d.ts.map +0 -1
  254. package/dist/rpc/deferred.js +0 -96
  255. package/dist/rpc/deferred.js.map +0 -1
  256. package/dist/rpc/index.d.ts +0 -22
  257. package/dist/rpc/index.d.ts.map +0 -1
  258. package/dist/rpc/index.js +0 -38
  259. package/dist/rpc/index.js.map +0 -1
  260. package/dist/rpc/local.d.ts +0 -42
  261. package/dist/rpc/local.d.ts.map +0 -1
  262. package/dist/rpc/local.js +0 -50
  263. package/dist/rpc/local.js.map +0 -1
  264. package/dist/rpc/server.d.ts +0 -165
  265. package/dist/rpc/server.d.ts.map +0 -1
  266. package/dist/rpc/server.js +0 -405
  267. package/dist/rpc/server.js.map +0 -1
  268. package/dist/rpc/session.d.ts +0 -32
  269. package/dist/rpc/session.d.ts.map +0 -1
  270. package/dist/rpc/session.js +0 -43
  271. package/dist/rpc/session.js.map +0 -1
  272. package/dist/rpc/transport.d.ts +0 -306
  273. package/dist/rpc/transport.d.ts.map +0 -1
  274. package/dist/rpc/transport.js +0 -731
  275. package/dist/rpc/transport.js.map +0 -1
  276. package/src/batch/anthropic.js +0 -256
  277. package/src/batch/bedrock.js +0 -584
  278. package/src/batch/cloudflare.js +0 -287
  279. package/src/batch/google.js +0 -359
  280. package/src/batch/index.js +0 -30
  281. package/src/batch/memory.js +0 -187
  282. package/src/batch/openai.js +0 -402
  283. package/src/eval/index.js +0 -7
  284. package/src/eval/models.js +0 -119
  285. package/src/eval/runner.js +0 -147
  286. 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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"}
@@ -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;AAExC;;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;AAYd;;;;;;;;;;;;;;;;;;;;;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"}
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"}