ai-functions 0.2.19 → 0.4.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 (227) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-test.log +105 -0
  3. package/README.md +232 -37
  4. package/TODO.md +138 -0
  5. package/dist/ai-promise.d.ts +219 -0
  6. package/dist/ai-promise.d.ts.map +1 -0
  7. package/dist/ai-promise.js +610 -0
  8. package/dist/ai-promise.js.map +1 -0
  9. package/dist/ai.d.ts +285 -0
  10. package/dist/ai.d.ts.map +1 -0
  11. package/dist/ai.js +842 -0
  12. package/dist/ai.js.map +1 -0
  13. package/dist/batch/anthropic.d.ts +23 -0
  14. package/dist/batch/anthropic.d.ts.map +1 -0
  15. package/dist/batch/anthropic.js +257 -0
  16. package/dist/batch/anthropic.js.map +1 -0
  17. package/dist/batch/bedrock.d.ts +64 -0
  18. package/dist/batch/bedrock.d.ts.map +1 -0
  19. package/dist/batch/bedrock.js +586 -0
  20. package/dist/batch/bedrock.js.map +1 -0
  21. package/dist/batch/cloudflare.d.ts +37 -0
  22. package/dist/batch/cloudflare.d.ts.map +1 -0
  23. package/dist/batch/cloudflare.js +289 -0
  24. package/dist/batch/cloudflare.js.map +1 -0
  25. package/dist/batch/google.d.ts +41 -0
  26. package/dist/batch/google.d.ts.map +1 -0
  27. package/dist/batch/google.js +360 -0
  28. package/dist/batch/google.js.map +1 -0
  29. package/dist/batch/index.d.ts +31 -0
  30. package/dist/batch/index.d.ts.map +1 -0
  31. package/dist/batch/index.js +31 -0
  32. package/dist/batch/index.js.map +1 -0
  33. package/dist/batch/memory.d.ts +44 -0
  34. package/dist/batch/memory.d.ts.map +1 -0
  35. package/dist/batch/memory.js +188 -0
  36. package/dist/batch/memory.js.map +1 -0
  37. package/dist/batch/openai.d.ts +37 -0
  38. package/dist/batch/openai.d.ts.map +1 -0
  39. package/dist/batch/openai.js +403 -0
  40. package/dist/batch/openai.js.map +1 -0
  41. package/dist/batch-map.d.ts +125 -0
  42. package/dist/batch-map.d.ts.map +1 -0
  43. package/dist/batch-map.js +406 -0
  44. package/dist/batch-map.js.map +1 -0
  45. package/dist/batch-queue.d.ts +273 -0
  46. package/dist/batch-queue.d.ts.map +1 -0
  47. package/dist/batch-queue.js +271 -0
  48. package/dist/batch-queue.js.map +1 -0
  49. package/dist/context.d.ts +133 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/context.js +267 -0
  52. package/dist/context.js.map +1 -0
  53. package/dist/embeddings.d.ts +123 -0
  54. package/dist/embeddings.d.ts.map +1 -0
  55. package/dist/embeddings.js +170 -0
  56. package/dist/embeddings.js.map +1 -0
  57. package/dist/eval/index.d.ts +8 -0
  58. package/dist/eval/index.d.ts.map +1 -0
  59. package/dist/eval/index.js +8 -0
  60. package/dist/eval/index.js.map +1 -0
  61. package/dist/eval/models.d.ts +66 -0
  62. package/dist/eval/models.d.ts.map +1 -0
  63. package/dist/eval/models.js +120 -0
  64. package/dist/eval/models.js.map +1 -0
  65. package/dist/eval/runner.d.ts +64 -0
  66. package/dist/eval/runner.d.ts.map +1 -0
  67. package/dist/eval/runner.js +148 -0
  68. package/dist/eval/runner.js.map +1 -0
  69. package/dist/generate.d.ts +168 -0
  70. package/dist/generate.d.ts.map +1 -0
  71. package/dist/generate.js +174 -0
  72. package/dist/generate.js.map +1 -0
  73. package/dist/index.d.ts +30 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +54 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/primitives.d.ts +292 -0
  78. package/dist/primitives.d.ts.map +1 -0
  79. package/dist/primitives.js +471 -0
  80. package/dist/primitives.js.map +1 -0
  81. package/dist/providers/cloudflare.d.ts +9 -0
  82. package/dist/providers/cloudflare.d.ts.map +1 -0
  83. package/dist/providers/cloudflare.js +9 -0
  84. package/dist/providers/cloudflare.js.map +1 -0
  85. package/dist/providers/index.d.ts +9 -0
  86. package/dist/providers/index.d.ts.map +1 -0
  87. package/dist/providers/index.js +9 -0
  88. package/dist/providers/index.js.map +1 -0
  89. package/dist/schema.d.ts +54 -0
  90. package/dist/schema.d.ts.map +1 -0
  91. package/dist/schema.js +109 -0
  92. package/dist/schema.js.map +1 -0
  93. package/dist/template.d.ts +73 -0
  94. package/dist/template.d.ts.map +1 -0
  95. package/dist/template.js +129 -0
  96. package/dist/template.js.map +1 -0
  97. package/dist/types.d.ts +481 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/types.js +5 -0
  100. package/dist/types.js.map +1 -0
  101. package/evalite.config.ts +19 -0
  102. package/evals/README.md +212 -0
  103. package/evals/classification.eval.ts +108 -0
  104. package/evals/marketing.eval.ts +370 -0
  105. package/evals/math.eval.ts +94 -0
  106. package/evals/run-evals.ts +166 -0
  107. package/evals/structured-output.eval.ts +143 -0
  108. package/evals/writing.eval.ts +117 -0
  109. package/examples/batch-blog-posts.ts +160 -0
  110. package/package.json +59 -43
  111. package/src/ai-promise.ts +784 -0
  112. package/src/ai.ts +1183 -0
  113. package/src/batch/anthropic.ts +375 -0
  114. package/src/batch/bedrock.ts +801 -0
  115. package/src/batch/cloudflare.ts +421 -0
  116. package/src/batch/google.ts +491 -0
  117. package/src/batch/index.ts +31 -0
  118. package/src/batch/memory.ts +253 -0
  119. package/src/batch/openai.ts +557 -0
  120. package/src/batch-map.ts +534 -0
  121. package/src/batch-queue.ts +493 -0
  122. package/src/context.ts +332 -0
  123. package/src/embeddings.ts +244 -0
  124. package/src/eval/index.ts +8 -0
  125. package/src/eval/models.ts +158 -0
  126. package/src/eval/runner.ts +217 -0
  127. package/src/generate.ts +245 -0
  128. package/src/index.ts +154 -0
  129. package/src/primitives.ts +612 -0
  130. package/src/providers/cloudflare.ts +15 -0
  131. package/src/providers/index.ts +14 -0
  132. package/src/schema.ts +147 -0
  133. package/src/template.ts +209 -0
  134. package/src/types.ts +540 -0
  135. package/test/README.md +105 -0
  136. package/test/ai-proxy.test.ts +192 -0
  137. package/test/async-iterators.test.ts +327 -0
  138. package/test/batch-background.test.ts +482 -0
  139. package/test/batch-blog-posts.test.ts +387 -0
  140. package/test/blog-generation.test.ts +510 -0
  141. package/test/browse-read.test.ts +611 -0
  142. package/test/core-functions.test.ts +694 -0
  143. package/test/decide.test.ts +393 -0
  144. package/test/define.test.ts +274 -0
  145. package/test/e2e-bedrock-manual.ts +163 -0
  146. package/test/e2e-bedrock.test.ts +191 -0
  147. package/test/e2e-flex-gateway.ts +157 -0
  148. package/test/e2e-flex-manual.ts +183 -0
  149. package/test/e2e-flex.test.ts +209 -0
  150. package/test/e2e-google-manual.ts +178 -0
  151. package/test/e2e-google.test.ts +216 -0
  152. package/test/embeddings.test.ts +284 -0
  153. package/test/evals/define-function.eval.test.ts +379 -0
  154. package/test/evals/primitives.eval.test.ts +384 -0
  155. package/test/function-types.test.ts +492 -0
  156. package/test/generate-core.test.ts +319 -0
  157. package/test/generate.test.ts +163 -0
  158. package/test/implicit-batch.test.ts +422 -0
  159. package/test/schema.test.ts +109 -0
  160. package/test/tagged-templates.test.ts +302 -0
  161. package/tsconfig.json +8 -6
  162. package/vitest.config.ts +42 -0
  163. package/LICENSE +0 -21
  164. package/db/cache.ts +0 -6
  165. package/db/mongo.ts +0 -75
  166. package/dist/mjs/db/cache.d.ts +0 -1
  167. package/dist/mjs/db/cache.js +0 -5
  168. package/dist/mjs/db/mongo.d.ts +0 -31
  169. package/dist/mjs/db/mongo.js +0 -48
  170. package/dist/mjs/examples/data.d.ts +0 -1105
  171. package/dist/mjs/examples/data.js +0 -1105
  172. package/dist/mjs/functions/ai.d.ts +0 -20
  173. package/dist/mjs/functions/ai.js +0 -83
  174. package/dist/mjs/functions/ai.test.d.ts +0 -1
  175. package/dist/mjs/functions/ai.test.js +0 -29
  176. package/dist/mjs/functions/gpt.d.ts +0 -4
  177. package/dist/mjs/functions/gpt.js +0 -10
  178. package/dist/mjs/functions/list.d.ts +0 -7
  179. package/dist/mjs/functions/list.js +0 -72
  180. package/dist/mjs/index.d.ts +0 -3
  181. package/dist/mjs/index.js +0 -3
  182. package/dist/mjs/queue/kafka.d.ts +0 -0
  183. package/dist/mjs/queue/kafka.js +0 -1
  184. package/dist/mjs/queue/memory.d.ts +0 -0
  185. package/dist/mjs/queue/memory.js +0 -1
  186. package/dist/mjs/queue/mongo.d.ts +0 -30
  187. package/dist/mjs/queue/mongo.js +0 -42
  188. package/dist/mjs/streams/kafka.d.ts +0 -0
  189. package/dist/mjs/streams/kafka.js +0 -1
  190. package/dist/mjs/streams/memory.d.ts +0 -0
  191. package/dist/mjs/streams/memory.js +0 -1
  192. package/dist/mjs/streams/mongo.d.ts +0 -0
  193. package/dist/mjs/streams/mongo.js +0 -1
  194. package/dist/mjs/streams/types.d.ts +0 -0
  195. package/dist/mjs/streams/types.js +0 -1
  196. package/dist/mjs/types.d.ts +0 -11
  197. package/dist/mjs/types.js +0 -1
  198. package/dist/mjs/utils/completion.d.ts +0 -9
  199. package/dist/mjs/utils/completion.js +0 -20
  200. package/dist/mjs/utils/schema.d.ts +0 -10
  201. package/dist/mjs/utils/schema.js +0 -72
  202. package/dist/mjs/utils/schema.test.d.ts +0 -1
  203. package/dist/mjs/utils/schema.test.js +0 -60
  204. package/dist/mjs/utils/state.d.ts +0 -1
  205. package/dist/mjs/utils/state.js +0 -19
  206. package/examples/data.ts +0 -1105
  207. package/fixup +0 -11
  208. package/functions/ai.test.ts +0 -41
  209. package/functions/ai.ts +0 -115
  210. package/functions/gpt.ts +0 -12
  211. package/functions/list.ts +0 -84
  212. package/index.ts +0 -3
  213. package/queue/kafka.ts +0 -0
  214. package/queue/memory.ts +0 -0
  215. package/queue/mongo.ts +0 -88
  216. package/streams/kafka.ts +0 -0
  217. package/streams/memory.ts +0 -0
  218. package/streams/mongo.ts +0 -0
  219. package/streams/types.ts +0 -0
  220. package/tsconfig-backup.json +0 -105
  221. package/tsconfig-base.json +0 -26
  222. package/tsconfig-cjs.json +0 -8
  223. package/types.ts +0 -12
  224. package/utils/completion.ts +0 -28
  225. package/utils/schema.test.ts +0 -69
  226. package/utils/schema.ts +0 -74
  227. package/utils/state.ts +0 -23
@@ -0,0 +1,360 @@
1
+ /**
2
+ * Google GenAI (Gemini) Adapter
3
+ *
4
+ * Implements processing using Google's Generative AI API (Gemini models).
5
+ * Google doesn't have a native batch API like OpenAI/Anthropic, so this
6
+ * implements concurrent processing for the flex tier.
7
+ *
8
+ * @see https://ai.google.dev/gemini-api/docs
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ import { registerBatchAdapter, registerFlexAdapter, } from '../batch-queue.js';
13
+ // ============================================================================
14
+ // Google GenAI Client Configuration
15
+ // ============================================================================
16
+ let googleApiKey;
17
+ let googleBaseUrl = 'https://generativelanguage.googleapis.com/v1beta';
18
+ // AI Gateway configuration (optional - for routing through Cloudflare AI Gateway)
19
+ let gatewayUrl;
20
+ let gatewayToken;
21
+ /**
22
+ * Configure the Google GenAI client
23
+ */
24
+ export function configureGoogleGenAI(options) {
25
+ if (options.apiKey)
26
+ googleApiKey = options.apiKey;
27
+ if (options.baseUrl)
28
+ googleBaseUrl = options.baseUrl;
29
+ if (options.gatewayUrl)
30
+ gatewayUrl = options.gatewayUrl;
31
+ if (options.gatewayToken)
32
+ gatewayToken = options.gatewayToken;
33
+ }
34
+ function getConfig() {
35
+ // Check for AI Gateway configuration
36
+ const gwUrl = gatewayUrl || process.env.AI_GATEWAY_URL;
37
+ const gwToken = gatewayToken || process.env.AI_GATEWAY_TOKEN;
38
+ // If using gateway, we don't need a direct API key
39
+ if (gwUrl && gwToken) {
40
+ return {
41
+ apiKey: '',
42
+ baseUrl: googleBaseUrl,
43
+ gatewayUrl: gwUrl,
44
+ gatewayToken: gwToken,
45
+ };
46
+ }
47
+ const key = googleApiKey || process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY;
48
+ if (!key) {
49
+ throw new Error('Google API key not configured. Set GOOGLE_API_KEY or GEMINI_API_KEY, or use AI_GATEWAY_URL and AI_GATEWAY_TOKEN');
50
+ }
51
+ return { apiKey: key, baseUrl: googleBaseUrl, gatewayUrl: undefined, gatewayToken: undefined };
52
+ }
53
+ // ============================================================================
54
+ // In-memory job tracking
55
+ // ============================================================================
56
+ const pendingJobs = new Map();
57
+ let jobCounter = 0;
58
+ // ============================================================================
59
+ // Google GenAI Batch Adapter
60
+ // ============================================================================
61
+ /**
62
+ * Google GenAI batch adapter
63
+ *
64
+ * Note: Google doesn't have a native batch API like OpenAI/Anthropic.
65
+ * This adapter implements batch processing via concurrent requests.
66
+ * For true async batch processing, consider using Google Cloud Batch
67
+ * with Vertex AI.
68
+ */
69
+ const googleAdapter = {
70
+ async submit(items, options) {
71
+ const jobId = `google_batch_${++jobCounter}_${Date.now()}`;
72
+ const model = options.model || 'gemini-2.0-flash';
73
+ // Store job state
74
+ pendingJobs.set(jobId, {
75
+ items,
76
+ options,
77
+ results: [],
78
+ status: 'pending',
79
+ createdAt: new Date(),
80
+ });
81
+ // Process requests concurrently
82
+ const completion = processGoogleRequestsConcurrently(jobId, items, model, options);
83
+ const job = {
84
+ id: jobId,
85
+ provider: 'google',
86
+ status: 'pending',
87
+ totalItems: items.length,
88
+ completedItems: 0,
89
+ failedItems: 0,
90
+ createdAt: new Date(),
91
+ webhookUrl: options.webhookUrl,
92
+ };
93
+ return { job, completion };
94
+ },
95
+ async getStatus(batchId) {
96
+ const job = pendingJobs.get(batchId);
97
+ if (!job) {
98
+ throw new Error(`Batch not found: ${batchId}`);
99
+ }
100
+ const completedItems = job.results.filter((r) => r.status === 'completed').length;
101
+ const failedItems = job.results.filter((r) => r.status === 'failed').length;
102
+ return {
103
+ id: batchId,
104
+ provider: 'google',
105
+ status: job.status,
106
+ totalItems: job.items.length,
107
+ completedItems,
108
+ failedItems,
109
+ createdAt: job.createdAt,
110
+ completedAt: job.completedAt,
111
+ };
112
+ },
113
+ async cancel(batchId) {
114
+ const job = pendingJobs.get(batchId);
115
+ if (job) {
116
+ job.status = 'cancelled';
117
+ }
118
+ },
119
+ async getResults(batchId) {
120
+ const job = pendingJobs.get(batchId);
121
+ if (!job) {
122
+ throw new Error(`Batch not found: ${batchId}`);
123
+ }
124
+ return job.results;
125
+ },
126
+ async waitForCompletion(batchId, pollInterval = 1000) {
127
+ const job = pendingJobs.get(batchId);
128
+ if (!job) {
129
+ throw new Error(`Batch not found: ${batchId}`);
130
+ }
131
+ while (job.status !== 'completed' && job.status !== 'failed' && job.status !== 'cancelled') {
132
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
133
+ }
134
+ return job.results;
135
+ },
136
+ };
137
+ // ============================================================================
138
+ // Google GenAI Flex Adapter
139
+ // ============================================================================
140
+ /**
141
+ * Google GenAI Flex Adapter
142
+ *
143
+ * Implements concurrent processing for medium-sized batches.
144
+ * Uses the Gemini API for fast turnaround.
145
+ */
146
+ const googleFlexAdapter = {
147
+ async submitFlex(items, options) {
148
+ const model = options.model || 'gemini-2.0-flash';
149
+ const CONCURRENCY = 10;
150
+ const results = [];
151
+ // Process items concurrently
152
+ for (let i = 0; i < items.length; i += CONCURRENCY) {
153
+ const batch = items.slice(i, i + CONCURRENCY);
154
+ const batchResults = await Promise.all(batch.map(async (item) => {
155
+ try {
156
+ return await processGoogleItem(item, model);
157
+ }
158
+ catch (error) {
159
+ return {
160
+ id: item.id,
161
+ customId: item.id,
162
+ status: 'failed',
163
+ error: error instanceof Error ? error.message : 'Unknown error',
164
+ };
165
+ }
166
+ }));
167
+ results.push(...batchResults);
168
+ }
169
+ return results;
170
+ },
171
+ };
172
+ // ============================================================================
173
+ // Processing
174
+ // ============================================================================
175
+ async function processGoogleRequestsConcurrently(jobId, items, model, options) {
176
+ const job = pendingJobs.get(jobId);
177
+ if (!job) {
178
+ throw new Error(`Job not found: ${jobId}`);
179
+ }
180
+ job.status = 'in_progress';
181
+ const CONCURRENCY = 10;
182
+ const results = [];
183
+ for (let i = 0; i < items.length; i += CONCURRENCY) {
184
+ const batch = items.slice(i, i + CONCURRENCY);
185
+ const batchResults = await Promise.all(batch.map(async (item) => {
186
+ try {
187
+ return await processGoogleItem(item, model);
188
+ }
189
+ catch (error) {
190
+ return {
191
+ id: item.id,
192
+ customId: item.id,
193
+ status: 'failed',
194
+ error: error instanceof Error ? error.message : 'Unknown error',
195
+ };
196
+ }
197
+ }));
198
+ results.push(...batchResults);
199
+ job.results = results;
200
+ }
201
+ job.status = results.every((r) => r.status === 'completed') ? 'completed' : 'failed';
202
+ job.completedAt = new Date();
203
+ return results;
204
+ }
205
+ async function processGoogleItem(item, model) {
206
+ const config = getConfig();
207
+ // Check if using AI Gateway
208
+ if (config.gatewayUrl && config.gatewayToken) {
209
+ return processGoogleItemViaGateway(item, config, model);
210
+ }
211
+ // Build the model name (add models/ prefix if not present)
212
+ const modelName = model.startsWith('models/') ? model : `models/${model}`;
213
+ const url = `${config.baseUrl}/${modelName}:generateContent?key=${config.apiKey}`;
214
+ // Build messages
215
+ const contents = [];
216
+ // Add system instruction as a user message if provided (Gemini handles this differently)
217
+ if (item.options?.system) {
218
+ contents.push({
219
+ role: 'user',
220
+ parts: [{ text: `System instruction: ${item.options.system}\n\nUser request: ${item.prompt}` }],
221
+ });
222
+ }
223
+ else {
224
+ contents.push({
225
+ role: 'user',
226
+ parts: [{ text: item.prompt }],
227
+ });
228
+ }
229
+ const body = {
230
+ contents,
231
+ generationConfig: {
232
+ maxOutputTokens: item.options?.maxTokens || 8192,
233
+ temperature: item.options?.temperature,
234
+ },
235
+ };
236
+ // Add JSON mode if schema is provided
237
+ if (item.schema) {
238
+ body.generationConfig = {
239
+ ...body.generationConfig,
240
+ responseMimeType: 'application/json',
241
+ };
242
+ }
243
+ const response = await fetch(url, {
244
+ method: 'POST',
245
+ headers: {
246
+ 'Content-Type': 'application/json',
247
+ },
248
+ body: JSON.stringify(body),
249
+ });
250
+ if (!response.ok) {
251
+ const error = await response.text();
252
+ throw new Error(`Google GenAI API error: ${response.status} ${error}`);
253
+ }
254
+ const data = (await response.json());
255
+ // Extract content
256
+ const content = data.candidates?.[0]?.content?.parts?.[0]?.text;
257
+ let result = content;
258
+ // Try to parse JSON if schema was provided or content looks like JSON
259
+ if (content && (item.schema || content.trim().startsWith('{') || content.trim().startsWith('['))) {
260
+ try {
261
+ result = JSON.parse(content);
262
+ }
263
+ catch {
264
+ // Keep as string
265
+ }
266
+ }
267
+ return {
268
+ id: item.id,
269
+ customId: item.id,
270
+ status: 'completed',
271
+ result,
272
+ usage: data.usageMetadata
273
+ ? {
274
+ promptTokens: data.usageMetadata.promptTokenCount,
275
+ completionTokens: data.usageMetadata.candidatesTokenCount,
276
+ totalTokens: data.usageMetadata.totalTokenCount,
277
+ }
278
+ : undefined,
279
+ };
280
+ }
281
+ /**
282
+ * Process a Google GenAI item via Cloudflare AI Gateway
283
+ * Gateway URL format: {gateway_url}/google-ai-studio/v1beta/models/{model}:generateContent
284
+ */
285
+ async function processGoogleItemViaGateway(item, config, model) {
286
+ // AI Gateway URL for Google AI Studio
287
+ // Format: {gateway_url}/google-ai-studio/v1beta/models/{model}:generateContent
288
+ const modelName = model.startsWith('models/') ? model.replace('models/', '') : model;
289
+ const url = `${config.gatewayUrl}/google-ai-studio/v1beta/models/${modelName}:generateContent`;
290
+ // Build messages
291
+ const contents = [];
292
+ if (item.options?.system) {
293
+ contents.push({
294
+ role: 'user',
295
+ parts: [{ text: `System instruction: ${item.options.system}\n\nUser request: ${item.prompt}` }],
296
+ });
297
+ }
298
+ else {
299
+ contents.push({
300
+ role: 'user',
301
+ parts: [{ text: item.prompt }],
302
+ });
303
+ }
304
+ const body = {
305
+ contents,
306
+ generationConfig: {
307
+ maxOutputTokens: item.options?.maxTokens || 8192,
308
+ temperature: item.options?.temperature,
309
+ },
310
+ };
311
+ if (item.schema) {
312
+ body.generationConfig = {
313
+ ...body.generationConfig,
314
+ responseMimeType: 'application/json',
315
+ };
316
+ }
317
+ const response = await fetch(url, {
318
+ method: 'POST',
319
+ headers: {
320
+ 'cf-aig-authorization': `Bearer ${config.gatewayToken}`,
321
+ 'Content-Type': 'application/json',
322
+ },
323
+ body: JSON.stringify(body),
324
+ });
325
+ if (!response.ok) {
326
+ const error = await response.text();
327
+ throw new Error(`Google GenAI via Gateway error: ${response.status} ${error}`);
328
+ }
329
+ const data = (await response.json());
330
+ const content = data.candidates?.[0]?.content?.parts?.[0]?.text;
331
+ let result = content;
332
+ if (content && (item.schema || content.trim().startsWith('{') || content.trim().startsWith('['))) {
333
+ try {
334
+ result = JSON.parse(content);
335
+ }
336
+ catch {
337
+ // Keep as string
338
+ }
339
+ }
340
+ return {
341
+ id: item.id,
342
+ customId: item.id,
343
+ status: 'completed',
344
+ result,
345
+ usage: data.usageMetadata
346
+ ? {
347
+ promptTokens: data.usageMetadata.promptTokenCount,
348
+ completionTokens: data.usageMetadata.candidatesTokenCount,
349
+ totalTokens: data.usageMetadata.totalTokenCount,
350
+ }
351
+ : undefined,
352
+ };
353
+ }
354
+ // ============================================================================
355
+ // Register Adapters
356
+ // ============================================================================
357
+ registerBatchAdapter('google', googleAdapter);
358
+ registerFlexAdapter('google', googleFlexAdapter);
359
+ export { googleAdapter, googleFlexAdapter };
360
+ //# sourceMappingURL=google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/batch/google.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Batch Adapters Index
3
+ *
4
+ * Import specific adapters to register them:
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * // Import to register the OpenAI batch adapter
9
+ * import 'ai-functions/batch/openai'
10
+ *
11
+ * // Import to register the Anthropic batch adapter
12
+ * import 'ai-functions/batch/anthropic'
13
+ *
14
+ * // Import to register the Cloudflare adapter
15
+ * import 'ai-functions/batch/cloudflare'
16
+ *
17
+ * // Import to register the AWS Bedrock adapter
18
+ * import 'ai-functions/batch/bedrock'
19
+ *
20
+ * // Or import the in-memory adapter for testing
21
+ * import 'ai-functions/batch/memory'
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ export * from './openai.js';
27
+ export * from './anthropic.js';
28
+ export * from './cloudflare.js';
29
+ export * from './bedrock.js';
30
+ export * from './memory.js';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/batch/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Batch Adapters Index
3
+ *
4
+ * Import specific adapters to register them:
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * // Import to register the OpenAI batch adapter
9
+ * import 'ai-functions/batch/openai'
10
+ *
11
+ * // Import to register the Anthropic batch adapter
12
+ * import 'ai-functions/batch/anthropic'
13
+ *
14
+ * // Import to register the Cloudflare adapter
15
+ * import 'ai-functions/batch/cloudflare'
16
+ *
17
+ * // Import to register the AWS Bedrock adapter
18
+ * import 'ai-functions/batch/bedrock'
19
+ *
20
+ * // Or import the in-memory adapter for testing
21
+ * import 'ai-functions/batch/memory'
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ export * from './openai.js';
27
+ export * from './anthropic.js';
28
+ export * from './cloudflare.js';
29
+ export * from './bedrock.js';
30
+ export * from './memory.js';
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/batch/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * In-Memory Batch Adapter for Testing
3
+ *
4
+ * Simulates batch processing locally for testing purposes.
5
+ * Executes requests immediately (or with configurable delay).
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { type BatchAdapter, type BatchItem, type BatchQueueOptions, type BatchResult } from '../batch-queue.js';
10
+ interface MemoryBatch {
11
+ id: string;
12
+ items: BatchItem[];
13
+ options: BatchQueueOptions;
14
+ status: 'pending' | 'in_progress' | 'completed' | 'failed';
15
+ results: BatchResult[];
16
+ createdAt: Date;
17
+ completedAt?: Date;
18
+ }
19
+ /**
20
+ * Options for the memory adapter
21
+ */
22
+ export interface MemoryAdapterOptions {
23
+ /** Simulate processing delay in ms */
24
+ delay?: number;
25
+ /** Mock handler for custom processing */
26
+ handler?: (item: BatchItem) => Promise<unknown>;
27
+ /** Simulate failure rate (0-1) */
28
+ failureRate?: number;
29
+ }
30
+ /**
31
+ * Configure the memory adapter
32
+ */
33
+ export declare function configureMemoryAdapter(options: MemoryAdapterOptions): void;
34
+ /**
35
+ * Clear all stored batches (for testing)
36
+ */
37
+ export declare function clearBatches(): void;
38
+ /**
39
+ * Get all stored batches (for testing)
40
+ */
41
+ export declare function getBatches(): Map<string, MemoryBatch>;
42
+ declare const memoryAdapter: BatchAdapter;
43
+ export { memoryAdapter };
44
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/batch/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAA;AAO1B,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC1D,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,SAAS,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AASD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/C,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAGnC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAErD;AAMD,QAAA,MAAM,aAAa,EAAE,YAkFpB,CAAA;AAyFD,OAAO,EAAE,aAAa,EAAE,CAAA"}