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
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Caching layer for embeddings and generations
3
+ *
4
+ * Provides content-addressable caching for embeddings and parameter-aware
5
+ * caching for text/object generations with TTL support and LRU eviction.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ /**
10
+ * Cache entry with metadata for tracking and eviction
11
+ */
12
+ export interface CacheEntry<T> {
13
+ /** The cached value */
14
+ value: T;
15
+ /** When the entry was created */
16
+ createdAt: number;
17
+ /** When the entry was last accessed */
18
+ lastAccessedAt: number;
19
+ /** Number of times this entry has been accessed */
20
+ accessCount: number;
21
+ /** When the entry expires (if TTL is set) */
22
+ expiresAt?: number;
23
+ }
24
+ /**
25
+ * Options for cache operations
26
+ */
27
+ export interface CacheOptions {
28
+ /** Time-to-live in milliseconds */
29
+ ttl?: number;
30
+ /** Whether to bypass cache and force fresh result */
31
+ bypass?: boolean;
32
+ }
33
+ /**
34
+ * Cache statistics for monitoring
35
+ */
36
+ export interface CacheStats {
37
+ /** Number of cache hits */
38
+ hits: number;
39
+ /** Number of cache misses */
40
+ misses: number;
41
+ /** Hit rate (0-1) */
42
+ hitRate: number;
43
+ /** Current number of entries */
44
+ size: number;
45
+ }
46
+ /**
47
+ * Configuration options for MemoryCache
48
+ */
49
+ export interface MemoryCacheOptions {
50
+ /** Default TTL for entries in milliseconds */
51
+ defaultTTL?: number;
52
+ /** Maximum number of entries (enables LRU eviction) */
53
+ maxSize?: number;
54
+ /** Whether to refresh TTL on access (sliding window) */
55
+ slidingExpiration?: boolean;
56
+ /** Interval for cleanup of expired entries in milliseconds */
57
+ cleanupInterval?: number;
58
+ }
59
+ /**
60
+ * Abstract cache storage interface for pluggable backends
61
+ */
62
+ export interface CacheStorage<T> {
63
+ /** Get a value by key */
64
+ get(key: string): Promise<T | undefined>;
65
+ /** Set a value by key */
66
+ set(key: string, value: T, options?: CacheOptions): Promise<void>;
67
+ /** Check if a key exists */
68
+ has(key: string): Promise<boolean>;
69
+ /** Delete a key */
70
+ delete(key: string): Promise<void>;
71
+ /** Clear all entries */
72
+ clear(): Promise<void>;
73
+ /** Get the number of entries */
74
+ size(): Promise<number>;
75
+ /** Get all keys */
76
+ keys(): Promise<string[]>;
77
+ }
78
+ /**
79
+ * In-memory cache implementation with TTL and LRU eviction support
80
+ *
81
+ * @deprecated Phase C Week 1 — `MemoryCache` has zero production callers in
82
+ * primitives.org.ai (audited 2026-05-06; see `bd show aip-ibid`). New code
83
+ * should use `cacheMiddleware` (for `wrapLanguageModel`) or
84
+ * `embeddingCacheMiddleware` (for `wrapEmbeddingModel`) instead — both
85
+ * compose with AI SDK 6's `wrapLanguageModel` / `wrapEmbeddingModel` and
86
+ * carry per-call telemetry (TraceEvent emission) and budget tracking when
87
+ * paired via `wrapForV3`. The `MemoryCache` class will be removed in the
88
+ * Phase C semver bump alongside `EmbeddingCache` and `GenerationCache`.
89
+ */
90
+ export declare class MemoryCache<T> implements CacheStorage<T> {
91
+ private cache;
92
+ private accessOrder;
93
+ private options;
94
+ private cleanupTimer?;
95
+ constructor(options?: MemoryCacheOptions);
96
+ /**
97
+ * Get a value by key
98
+ */
99
+ get(key: string): Promise<T | undefined>;
100
+ /**
101
+ * Set a value by key
102
+ */
103
+ set(key: string, value: T, options?: CacheOptions): Promise<void>;
104
+ /**
105
+ * Check if a key exists
106
+ */
107
+ has(key: string): Promise<boolean>;
108
+ /**
109
+ * Delete a key
110
+ */
111
+ delete(key: string): Promise<void>;
112
+ /**
113
+ * Clear all entries
114
+ */
115
+ clear(): Promise<void>;
116
+ /**
117
+ * Get the number of entries (excluding expired)
118
+ */
119
+ size(): Promise<number>;
120
+ /**
121
+ * Get all keys
122
+ */
123
+ keys(): Promise<string[]>;
124
+ /**
125
+ * Get full entry with metadata
126
+ */
127
+ getEntry(key: string): Promise<CacheEntry<T> | undefined>;
128
+ /**
129
+ * Dispose cleanup timer
130
+ */
131
+ dispose(): void;
132
+ /**
133
+ * Clean up expired entries
134
+ */
135
+ private cleanup;
136
+ /**
137
+ * Evict the least recently used entry
138
+ */
139
+ private evictLRU;
140
+ /**
141
+ * Update access order for LRU tracking
142
+ */
143
+ private updateAccessOrder;
144
+ /**
145
+ * Remove a key from access order
146
+ */
147
+ private removeFromAccessOrder;
148
+ }
149
+ /**
150
+ * Generate a hash for cache keys
151
+ * Uses a fast, non-cryptographic hash suitable for cache keys
152
+ */
153
+ export declare function hashKey(input: unknown): string;
154
+ /**
155
+ * Cache key type
156
+ */
157
+ export type CacheKeyType = 'embedding' | 'generation';
158
+ /**
159
+ * Create a cache key for a specific type and parameters
160
+ */
161
+ export declare function createCacheKey(type: CacheKeyType, params: Record<string, unknown>): string;
162
+ /**
163
+ * Options for embedding cache operations
164
+ */
165
+ export interface EmbeddingCacheOptions {
166
+ /** The embedding model used */
167
+ model: string;
168
+ }
169
+ /**
170
+ * Result from batch embedding cache lookup
171
+ */
172
+ export interface BatchEmbeddingResult {
173
+ /** Map of text to cached embedding */
174
+ hits: Record<string, number[]>;
175
+ /** Texts that were not in cache */
176
+ misses: string[];
177
+ }
178
+ /**
179
+ * Specialized cache for embedding vectors
180
+ *
181
+ * @deprecated Phase C Week 1 — `EmbeddingCache` has zero production callers
182
+ * in primitives.org.ai (audited 2026-05-06; see `bd show aip-ibid`). New
183
+ * code should use `embeddingCacheMiddleware` (for `wrapEmbeddingModel`) —
184
+ * it composes with AI SDK 6 directly and carries trace + budget telemetry
185
+ * when paired via `wrapForV3`. Note: `embeddingCacheMiddleware` keys on the
186
+ * whole batch, not per-text — callers wanting per-text caching should pass
187
+ * stable per-text batches. Will be removed in the Phase C semver bump.
188
+ */
189
+ export declare class EmbeddingCache {
190
+ private storage;
191
+ private stats;
192
+ constructor(options?: MemoryCacheOptions);
193
+ /**
194
+ * Get a cached embedding
195
+ */
196
+ get(content: string, options: EmbeddingCacheOptions): Promise<number[] | undefined>;
197
+ /**
198
+ * Set a cached embedding
199
+ */
200
+ set(content: string, embedding: number[], options: EmbeddingCacheOptions): Promise<void>;
201
+ /**
202
+ * Set multiple embeddings at once
203
+ */
204
+ setMany(texts: string[], embeddings: number[][], options: EmbeddingCacheOptions): Promise<void>;
205
+ /**
206
+ * Get multiple embeddings, returning hits and misses
207
+ */
208
+ getMany(texts: string[], options: EmbeddingCacheOptions): Promise<BatchEmbeddingResult>;
209
+ /**
210
+ * Get cache statistics
211
+ */
212
+ getStats(): CacheStats;
213
+ /**
214
+ * Clear the cache
215
+ */
216
+ clear(): Promise<void>;
217
+ }
218
+ /**
219
+ * Parameters for generation cache key
220
+ */
221
+ export interface GenerationParams {
222
+ /** The prompt text */
223
+ prompt: string;
224
+ /** The model to use */
225
+ model: string;
226
+ /** System prompt */
227
+ system?: string;
228
+ /** Temperature setting */
229
+ temperature?: number;
230
+ /** Schema version for structured outputs */
231
+ schemaVersion?: string;
232
+ }
233
+ /**
234
+ * Options for generation cache retrieval
235
+ */
236
+ export interface GenerationCacheGetOptions {
237
+ /** Bypass cache and return undefined */
238
+ bypass?: boolean;
239
+ }
240
+ /**
241
+ * Specialized cache for generation results
242
+ *
243
+ * @deprecated Phase C Week 1 — `GenerationCache` has zero production callers
244
+ * in primitives.org.ai (audited 2026-05-06; see `bd show aip-ibid`). New
245
+ * code should use `cacheMiddleware` (for `wrapLanguageModel`) — it composes
246
+ * with AI SDK 6 directly and carries trace + budget telemetry when paired
247
+ * via `wrapForV3`. Will be removed in the Phase C semver bump.
248
+ */
249
+ export declare class GenerationCache {
250
+ private storage;
251
+ private stats;
252
+ constructor(options?: MemoryCacheOptions);
253
+ /**
254
+ * Get a cached generation result
255
+ */
256
+ get<T = unknown>(params: GenerationParams, options?: GenerationCacheGetOptions): Promise<T | undefined>;
257
+ /**
258
+ * Set a cached generation result
259
+ */
260
+ set<T = unknown>(params: GenerationParams, result: T): Promise<void>;
261
+ /**
262
+ * Get cache statistics
263
+ */
264
+ getStats(): CacheStats;
265
+ /**
266
+ * Clear the cache
267
+ */
268
+ clear(): Promise<void>;
269
+ /**
270
+ * Create a cache key from generation parameters
271
+ */
272
+ private createKey;
273
+ }
274
+ /**
275
+ * Options for withCache wrapper
276
+ */
277
+ export interface WithCacheOptions<TArgs extends unknown[]> {
278
+ /** Function to generate cache key from arguments */
279
+ keyFn: (...args: TArgs) => string;
280
+ /** TTL for cached entries */
281
+ ttl?: number;
282
+ }
283
+ /**
284
+ * Cached function type with bypass support
285
+ */
286
+ export interface CachedFunction<TArgs extends unknown[], TResult> {
287
+ (...args: TArgs): Promise<TResult>;
288
+ /** Call with cache bypass (force fresh result) */
289
+ bypass: (...args: TArgs) => Promise<TResult>;
290
+ }
291
+ /**
292
+ * Wrap an async function with caching
293
+ */
294
+ export declare function withCache<TArgs extends unknown[], TResult>(cache: CacheStorage<TResult>, fn: (...args: TArgs) => Promise<TResult>, options: WithCacheOptions<TArgs>): CachedFunction<TArgs, TResult>;
295
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}