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
@@ -6,31 +6,28 @@
6
6
  * - 24-hour turnaround
7
7
  * - Up to 50,000 requests per batch
8
8
  *
9
+ * Plus a flex adapter that processes items concurrently for faster turnaround
10
+ * at a similar discount.
11
+ *
12
+ * This file is a small adapter on top of the BatchProvider port (`./provider.js`).
13
+ *
9
14
  * @see https://platform.openai.com/docs/guides/batch
10
15
  *
11
16
  * @packageDocumentation
12
17
  */
13
- import { type BatchAdapter, type FlexAdapter } from '../batch-queue.js';
14
- /**
15
- * Configure the OpenAI client
16
- */
18
+ import { type BatchAdapter, type FlexAdapter } from './provider.js';
19
+ /** Configure the OpenAI client. */
17
20
  export declare function configureOpenAI(options: {
18
21
  apiKey?: string;
19
22
  baseUrl?: string;
20
23
  }): void;
21
24
  declare const openaiAdapter: BatchAdapter;
22
25
  /**
23
- * OpenAI Flex Adapter
24
- *
25
- * Flex processing uses concurrent requests with a service tier that provides
26
- * ~50% discount similar to batch, but with much faster turnaround (minutes vs 24hr).
27
- *
28
- * This is ideal for 5-500 items where you need results quickly but still want
29
- * cost savings.
26
+ * Flex processing uses concurrent requests for faster turnaround than batch
27
+ * (minutes vs 24h) at a similar discount. Ideal for 5–500 items.
30
28
  *
31
- * Note: As of 2024, OpenAI doesn't have an official "flex" tier API.
32
- * This adapter implements concurrent processing as a middle ground.
33
- * When OpenAI adds official flex support, this can be updated.
29
+ * As of 2026, OpenAI doesn't expose a dedicated "flex" tier API, so this
30
+ * adapter implements concurrent direct chat completions as a middle ground.
34
31
  */
35
32
  declare const openaiFlexAdapter: FlexAdapter;
36
33
  export { openaiAdapter, openaiFlexAdapter };
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/batch/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,WAAW,EAOjB,MAAM,mBAAmB,CAAA;AA+E1B;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGpF;AA2FD,QAAA,MAAM,aAAa,EAAE,YAmLpB,CAAA;AAkDD;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,iBAAiB,EAAE,WA+BxB,CAAA;AAmFD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/batch/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAQL,KAAK,YAAY,EAOjB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAA;AA0EtB,mCAAmC;AACnC,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGpF;AAiFD,QAAA,MAAM,aAAa,EAAE,YAgJpB,CAAA;AAMD;;;;;;GAMG;AACH,QAAA,MAAM,iBAAiB,EAAE,WAOxB,CAAA;AAsED,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAA"}
@@ -6,20 +6,23 @@
6
6
  * - 24-hour turnaround
7
7
  * - Up to 50,000 requests per batch
8
8
  *
9
+ * Plus a flex adapter that processes items concurrently for faster turnaround
10
+ * at a similar discount.
11
+ *
12
+ * This file is a small adapter on top of the BatchProvider port (`./provider.js`).
13
+ *
9
14
  * @see https://platform.openai.com/docs/guides/batch
10
15
  *
11
16
  * @packageDocumentation
12
17
  */
13
- import { registerBatchAdapter, registerFlexAdapter, } from '../batch-queue.js';
14
18
  import { schema as convertSchema } from '../schema.js';
19
+ import { failedResult, pollUntilComplete, processConcurrently, registerBatchAdapter, registerFlexAdapter, tryParseJson, zodToJsonSchema, } from './provider.js';
15
20
  // ============================================================================
16
- // OpenAI Client
21
+ // OpenAI client
17
22
  // ============================================================================
18
23
  let openaiApiKey;
19
24
  let openaiBaseUrl = 'https://api.openai.com/v1';
20
- /**
21
- * Configure the OpenAI client
22
- */
25
+ /** Configure the OpenAI client. */
23
26
  export function configureOpenAI(options) {
24
27
  if (options.apiKey)
25
28
  openaiApiKey = options.apiKey;
@@ -27,21 +30,20 @@ export function configureOpenAI(options) {
27
30
  openaiBaseUrl = options.baseUrl;
28
31
  }
29
32
  function getApiKey() {
30
- const key = openaiApiKey || process.env.OPENAI_API_KEY;
33
+ const key = openaiApiKey || process.env['OPENAI_API_KEY'];
31
34
  if (!key) {
32
35
  throw new Error('OpenAI API key not configured. Set OPENAI_API_KEY or call configureOpenAI()');
33
36
  }
34
37
  return key;
35
38
  }
36
39
  async function openaiRequest(method, path, body) {
37
- const url = `${openaiBaseUrl}${path}`;
38
- const response = await fetch(url, {
40
+ const response = await fetch(`${openaiBaseUrl}${path}`, {
39
41
  method,
40
42
  headers: {
41
43
  Authorization: `Bearer ${getApiKey()}`,
42
44
  'Content-Type': 'application/json',
43
45
  },
44
- body: body ? JSON.stringify(body) : undefined,
46
+ ...(body !== undefined && { body: JSON.stringify(body) }),
45
47
  });
46
48
  if (!response.ok) {
47
49
  const error = await response.text();
@@ -55,9 +57,7 @@ async function uploadFile(content, purpose) {
55
57
  formData.append('file', new Blob([content], { type: 'application/jsonl' }), 'batch.jsonl');
56
58
  const response = await fetch(`${openaiBaseUrl}/files`, {
57
59
  method: 'POST',
58
- headers: {
59
- Authorization: `Bearer ${getApiKey()}`,
60
- },
60
+ headers: { Authorization: `Bearer ${getApiKey()}` },
61
61
  body: formData,
62
62
  });
63
63
  if (!response.ok) {
@@ -68,9 +68,7 @@ async function uploadFile(content, purpose) {
68
68
  }
69
69
  async function downloadFile(fileId) {
70
70
  const response = await fetch(`${openaiBaseUrl}/files/${fileId}/content`, {
71
- headers: {
72
- Authorization: `Bearer ${getApiKey()}`,
73
- },
71
+ headers: { Authorization: `Bearer ${getApiKey()}` },
74
72
  });
75
73
  if (!response.ok) {
76
74
  const error = await response.text();
@@ -78,9 +76,6 @@ async function downloadFile(fileId) {
78
76
  }
79
77
  return response.text();
80
78
  }
81
- // ============================================================================
82
- // Status Mapping
83
- // ============================================================================
84
79
  function mapStatus(status) {
85
80
  const statusMap = {
86
81
  validating: 'validating',
@@ -95,12 +90,13 @@ function mapStatus(status) {
95
90
  return statusMap[status] || 'pending';
96
91
  }
97
92
  // ============================================================================
98
- // OpenAI Batch Adapter
93
+ // OpenAI batch adapter (BatchProvider port)
99
94
  // ============================================================================
95
+ const TERMINAL_FOR_OPENAI = new Set(['completed', 'failed']);
96
+ const THROW_FOR_OPENAI = new Set(['cancelled', 'expired']);
100
97
  const openaiAdapter = {
101
98
  async submit(items, options) {
102
99
  const model = options.model || 'gpt-4o';
103
- // Build JSONL content
104
100
  const requests = items.map((item) => {
105
101
  const request = {
106
102
  custom_id: item.id,
@@ -112,28 +108,23 @@ const openaiAdapter = {
112
108
  ...(item.options?.system ? [{ role: 'system', content: item.options.system }] : []),
113
109
  { role: 'user', content: item.prompt },
114
110
  ],
115
- max_tokens: item.options?.maxTokens,
116
- temperature: item.options?.temperature,
111
+ ...(item.options?.maxTokens !== undefined && { max_tokens: item.options.maxTokens }),
112
+ ...(item.options?.temperature !== undefined && {
113
+ temperature: item.options.temperature,
114
+ }),
117
115
  },
118
116
  };
119
- // Add JSON schema if provided
120
117
  if (item.schema) {
121
118
  const zodSchema = convertSchema(item.schema);
122
- // Convert Zod to JSON Schema (simplified - you'd want a proper converter)
123
119
  request.body.response_format = {
124
120
  type: 'json_schema',
125
- json_schema: {
126
- name: 'response',
127
- schema: zodToJsonSchema(zodSchema),
128
- },
121
+ json_schema: { name: 'response', schema: zodToJsonSchema(zodSchema) },
129
122
  };
130
123
  }
131
124
  return request;
132
125
  });
133
126
  const jsonlContent = requests.map((r) => JSON.stringify(r)).join('\n');
134
- // Upload the input file
135
127
  const inputFile = await uploadFile(jsonlContent, 'batch');
136
- // Create the batch
137
128
  const batch = await openaiRequest('POST', '/batches', {
138
129
  input_file_id: inputFile.id,
139
130
  endpoint: '/v1/chat/completions',
@@ -148,11 +139,10 @@ const openaiAdapter = {
148
139
  completedItems: 0,
149
140
  failedItems: 0,
150
141
  createdAt: new Date(batch.created_at * 1000),
151
- expiresAt: batch.expires_at ? new Date(batch.expires_at * 1000) : undefined,
152
- webhookUrl: options.webhookUrl,
142
+ ...(batch.expires_at && { expiresAt: new Date(batch.expires_at * 1000) }),
143
+ ...(options.webhookUrl !== undefined && { webhookUrl: options.webhookUrl }),
153
144
  inputFileId: batch.input_file_id,
154
145
  };
155
- // Create completion promise
156
146
  const completion = this.waitForCompletion(batch.id);
157
147
  return { job, completion };
158
148
  },
@@ -166,12 +156,12 @@ const openaiAdapter = {
166
156
  completedItems: batch.request_counts.completed,
167
157
  failedItems: batch.request_counts.failed,
168
158
  createdAt: new Date(batch.created_at * 1000),
169
- startedAt: batch.in_progress_at ? new Date(batch.in_progress_at * 1000) : undefined,
170
- completedAt: batch.completed_at ? new Date(batch.completed_at * 1000) : undefined,
171
- expiresAt: batch.expires_at ? new Date(batch.expires_at * 1000) : undefined,
159
+ ...(batch.in_progress_at && { startedAt: new Date(batch.in_progress_at * 1000) }),
160
+ ...(batch.completed_at && { completedAt: new Date(batch.completed_at * 1000) }),
161
+ ...(batch.expires_at && { expiresAt: new Date(batch.expires_at * 1000) }),
172
162
  inputFileId: batch.input_file_id,
173
- outputFileId: batch.output_file_id || undefined,
174
- errorFileId: batch.error_file_id || undefined,
163
+ ...(batch.output_file_id && { outputFileId: batch.output_file_id }),
164
+ ...(batch.error_file_id && { errorFileId: batch.error_file_id }),
175
165
  };
176
166
  },
177
167
  async cancel(batchId) {
@@ -183,10 +173,8 @@ const openaiAdapter = {
183
173
  throw new Error(`Batch not complete. Status: ${status.status}`);
184
174
  }
185
175
  const results = [];
186
- // Download and parse output file
187
176
  if (status.outputFileId) {
188
- const content = await downloadFile(status.outputFileId);
189
- const lines = content.trim().split('\n');
177
+ const lines = (await downloadFile(status.outputFileId)).trim().split('\n');
190
178
  for (const line of lines) {
191
179
  const response = JSON.parse(line);
192
180
  if (response.error) {
@@ -199,21 +187,11 @@ const openaiAdapter = {
199
187
  }
200
188
  else if (response.response) {
201
189
  const content = response.response.body.choices[0]?.message?.content;
202
- let result = content;
203
- // Try to parse JSON if it looks like JSON
204
- if (content?.startsWith('{') || content?.startsWith('[')) {
205
- try {
206
- result = JSON.parse(content);
207
- }
208
- catch {
209
- // Keep as string
210
- }
211
- }
212
190
  results.push({
213
191
  id: response.custom_id,
214
192
  customId: response.custom_id,
215
193
  status: 'completed',
216
- result,
194
+ result: tryParseJson(content),
217
195
  usage: {
218
196
  promptTokens: response.response.body.usage.prompt_tokens,
219
197
  completionTokens: response.response.body.usage.completion_tokens,
@@ -223,10 +201,8 @@ const openaiAdapter = {
223
201
  }
224
202
  }
225
203
  }
226
- // Download and parse error file
227
204
  if (status.errorFileId) {
228
- const content = await downloadFile(status.errorFileId);
229
- const lines = content.trim().split('\n');
205
+ const lines = (await downloadFile(status.errorFileId)).trim().split('\n');
230
206
  for (const line of lines) {
231
207
  const response = JSON.parse(line);
232
208
  results.push({
@@ -240,101 +216,32 @@ const openaiAdapter = {
240
216
  return results;
241
217
  },
242
218
  async waitForCompletion(batchId, pollInterval = 5000) {
243
- while (true) {
244
- const status = await this.getStatus(batchId);
245
- if (status.status === 'completed' || status.status === 'failed') {
246
- return this.getResults(batchId);
247
- }
248
- if (status.status === 'cancelled' || status.status === 'expired') {
249
- throw new Error(`Batch ${status.status}`);
250
- }
251
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
252
- }
219
+ return pollUntilComplete(this, batchId, {
220
+ pollInterval,
221
+ fetchResultsOn: TERMINAL_FOR_OPENAI,
222
+ throwOn: THROW_FOR_OPENAI,
223
+ });
253
224
  },
254
225
  };
255
226
  // ============================================================================
256
- // Helpers
227
+ // OpenAI flex adapter (FlexAdapter port)
257
228
  // ============================================================================
258
229
  /**
259
- * Simple Zod to JSON Schema converter
260
- * In production, use a proper library like zod-to-json-schema
261
- */
262
- function zodToJsonSchema(zodSchema) {
263
- // This is a simplified converter - in production use zod-to-json-schema
264
- const schema = zodSchema;
265
- if (!schema._def) {
266
- return { type: 'object' };
267
- }
268
- const typeName = schema._def.typeName;
269
- switch (typeName) {
270
- case 'ZodString':
271
- return { type: 'string' };
272
- case 'ZodNumber':
273
- return { type: 'number' };
274
- case 'ZodBoolean':
275
- return { type: 'boolean' };
276
- case 'ZodArray':
277
- return { type: 'array', items: zodToJsonSchema(schema._def.type) };
278
- case 'ZodObject': {
279
- const shape = schema._def.shape();
280
- const properties = {};
281
- for (const [key, value] of Object.entries(shape)) {
282
- properties[key] = zodToJsonSchema(value);
283
- }
284
- return { type: 'object', properties, required: Object.keys(properties) };
285
- }
286
- default:
287
- return { type: 'object' };
288
- }
289
- }
290
- // ============================================================================
291
- // Register Adapter
292
- // ============================================================================
293
- // ============================================================================
294
- // OpenAI Flex Adapter
295
- // ============================================================================
296
- /**
297
- * OpenAI Flex Adapter
298
- *
299
- * Flex processing uses concurrent requests with a service tier that provides
300
- * ~50% discount similar to batch, but with much faster turnaround (minutes vs 24hr).
301
- *
302
- * This is ideal for 5-500 items where you need results quickly but still want
303
- * cost savings.
230
+ * Flex processing uses concurrent requests for faster turnaround than batch
231
+ * (minutes vs 24h) at a similar discount. Ideal for 5–500 items.
304
232
  *
305
- * Note: As of 2024, OpenAI doesn't have an official "flex" tier API.
306
- * This adapter implements concurrent processing as a middle ground.
307
- * When OpenAI adds official flex support, this can be updated.
233
+ * As of 2026, OpenAI doesn't expose a dedicated "flex" tier API, so this
234
+ * adapter implements concurrent direct chat completions as a middle ground.
308
235
  */
309
236
  const openaiFlexAdapter = {
310
237
  async submitFlex(items, options) {
311
238
  const model = options.model || 'gpt-4o';
312
- const CONCURRENCY = 10; // Higher concurrency for flex tier
313
- const results = [];
314
- // Process items concurrently in batches
315
- for (let i = 0; i < items.length; i += CONCURRENCY) {
316
- const batch = items.slice(i, i + CONCURRENCY);
317
- const batchResults = await Promise.all(batch.map(async (item) => {
318
- try {
319
- return await processOpenAIItem(item, model);
320
- }
321
- catch (error) {
322
- return {
323
- id: item.id,
324
- customId: item.id,
325
- status: 'failed',
326
- error: error instanceof Error ? error.message : 'Unknown error',
327
- };
328
- }
329
- }));
330
- results.push(...batchResults);
331
- }
332
- return results;
239
+ return processConcurrently(items, (item) => processOpenAIItem(item, model), {
240
+ concurrency: 10,
241
+ });
333
242
  },
334
243
  };
335
- /**
336
- * Process a single item via OpenAI Chat Completions API
337
- */
244
+ /** Process a single item via OpenAI Chat Completions API. */
338
245
  async function processOpenAIItem(item, model) {
339
246
  const messages = [];
340
247
  if (item.options?.system) {
@@ -347,15 +254,11 @@ async function processOpenAIItem(item, model) {
347
254
  max_tokens: item.options?.maxTokens,
348
255
  temperature: item.options?.temperature,
349
256
  };
350
- // Add JSON schema if provided
351
257
  if (item.schema) {
352
258
  const zodSchema = convertSchema(item.schema);
353
- body.response_format = {
259
+ body['response_format'] = {
354
260
  type: 'json_schema',
355
- json_schema: {
356
- name: 'response',
357
- schema: zodToJsonSchema(zodSchema),
358
- },
261
+ json_schema: { name: 'response', schema: zodToJsonSchema(zodSchema) },
359
262
  };
360
263
  }
361
264
  const response = await fetch(`${openaiBaseUrl}/chat/completions`, {
@@ -372,21 +275,11 @@ async function processOpenAIItem(item, model) {
372
275
  }
373
276
  const data = (await response.json());
374
277
  const content = data.choices[0]?.message?.content;
375
- let result = content;
376
- // Try to parse JSON if schema was provided or content looks like JSON
377
- if (content && (item.schema || content.startsWith('{') || content.startsWith('['))) {
378
- try {
379
- result = JSON.parse(content);
380
- }
381
- catch {
382
- // Keep as string
383
- }
384
- }
385
278
  return {
386
279
  id: item.id,
387
280
  customId: item.id,
388
281
  status: 'completed',
389
- result,
282
+ result: tryParseJson(content, !!item.schema),
390
283
  usage: {
391
284
  promptTokens: data.usage.prompt_tokens,
392
285
  completionTokens: data.usage.completion_tokens,
@@ -394,8 +287,11 @@ async function processOpenAIItem(item, model) {
394
287
  },
395
288
  };
396
289
  }
290
+ // `failedResult` re-imported only to keep the import surface stable for tests
291
+ // that may use it. The processConcurrently helper handles failures internally.
292
+ void failedResult;
397
293
  // ============================================================================
398
- // Register Adapters
294
+ // Register adapters
399
295
  // ============================================================================
400
296
  registerBatchAdapter('openai', openaiAdapter);
401
297
  registerFlexAdapter('openai', openaiFlexAdapter);
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/batch/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/batch/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * BatchProvider Port
3
+ *
4
+ * Defines the explicit port (interface) that every batch provider adapter must
5
+ * satisfy, plus helpers that concentrate logic genuinely shared across adapters
6
+ * (polling, concurrent processing, in-memory job tracking, JSON-Schema conversion).
7
+ *
8
+ * Each provider file (`anthropic.ts`, `openai.ts`, `google.ts`, `bedrock.ts`,
9
+ * `cloudflare.ts`, `memory.ts`) is now a small adapter that satisfies this port
10
+ * and concentrates on provider-specific HTTP/SDK calls and request/response shapes.
11
+ *
12
+ * Port + 4 adapters = real seam. The port lives here so provider files don't
13
+ * import shared logic from each other and can't accidentally diverge.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import type { BatchAdapter, BatchItem, BatchJob, BatchQueueOptions, BatchResult, BatchStatus } from '../batch-queue.js';
18
+ export type { BatchAdapter, BatchItem, BatchJob, BatchQueueOptions, BatchResult, BatchSubmitResult, BatchProvider, BatchStatus, FlexAdapter, } from '../batch-queue.js';
19
+ export { registerBatchAdapter, registerFlexAdapter } from '../batch-queue.js';
20
+ /**
21
+ * Default `waitForCompletion` implementation built on top of `getStatus` +
22
+ * `getResults`. Adapters with non-standard completion semantics can still
23
+ * override `waitForCompletion`, but most don't need to.
24
+ *
25
+ * @param adapter The batch adapter to poll
26
+ * @param batchId The batch id to poll
27
+ * @param options.pollInterval Poll interval in ms (default: 5000)
28
+ * @param options.fetchResultsOn Statuses for which results should be fetched.
29
+ * Defaults to `completed`, `cancelled`, `failed`.
30
+ * @param options.throwOn Statuses that should throw rather than fetch results.
31
+ * Useful for OpenAI which throws on `cancelled`/`expired`.
32
+ */
33
+ export declare function pollUntilComplete(adapter: Pick<BatchAdapter, 'getStatus' | 'getResults'>, batchId: string, options?: {
34
+ pollInterval?: number;
35
+ fetchResultsOn?: ReadonlySet<BatchStatus>;
36
+ throwOn?: ReadonlySet<BatchStatus>;
37
+ }): Promise<BatchResult[]>;
38
+ /**
39
+ * Run `processItem` over `items` with bounded concurrency, optionally
40
+ * sleeping between waves to respect provider rate limits. Per-item failures
41
+ * are caught and emitted as `{ status: 'failed', error }` results so a single
42
+ * bad item never poisons the whole batch.
43
+ *
44
+ * Used by flex adapters (OpenAI, Google, Bedrock) and by the "local" providers
45
+ * (Google, Bedrock, Cloudflare) that fake batch processing with concurrent
46
+ * direct API calls.
47
+ */
48
+ export declare function processConcurrently(items: BatchItem[], processItem: (item: BatchItem) => Promise<BatchResult>, options?: {
49
+ concurrency?: number;
50
+ delayBetweenWaves?: number;
51
+ onWaveComplete?: (results: BatchResult[]) => void;
52
+ }): Promise<BatchResult[]>;
53
+ /** Build a `failed` BatchResult from an unknown thrown value. */
54
+ export declare function failedResult(item: BatchItem, error: unknown): BatchResult;
55
+ /**
56
+ * Internal job state for adapters that don't have a real provider-side batch
57
+ * API and need to track jobs locally (Google, Bedrock, Cloudflare).
58
+ */
59
+ export interface LocalJobState {
60
+ items: BatchItem[];
61
+ options: BatchQueueOptions;
62
+ results: BatchResult[];
63
+ status: BatchStatus;
64
+ createdAt: Date;
65
+ completedAt?: Date;
66
+ /** Optional adapter-specific metadata (e.g. Bedrock's jobArn) */
67
+ meta?: Record<string, unknown>;
68
+ }
69
+ /**
70
+ * Per-provider in-memory job registry. Encapsulates the
71
+ * `Map<jobId, state>` + counter + status/result lookup pattern that
72
+ * google/bedrock/cloudflare were each duplicating.
73
+ */
74
+ export declare class LocalJobStore {
75
+ private readonly idPrefix;
76
+ private readonly jobs;
77
+ private counter;
78
+ constructor(idPrefix: string);
79
+ create(items: BatchItem[], options: BatchQueueOptions): {
80
+ id: string;
81
+ state: LocalJobState;
82
+ };
83
+ get(id: string): LocalJobState;
84
+ has(id: string): boolean;
85
+ /** Build a `BatchJob` snapshot for a tracked job. */
86
+ snapshot(id: string, provider: BatchJob['provider']): BatchJob;
87
+ /**
88
+ * Wait for a tracked job to reach a terminal status by polling its in-memory
89
+ * state. Adapters that drive the state machine in a background promise can
90
+ * call this from `waitForCompletion`.
91
+ */
92
+ waitForCompletion(id: string, pollInterval?: number): Promise<BatchResult[]>;
93
+ /** For tests: drop everything. */
94
+ clear(): void;
95
+ }
96
+ /**
97
+ * Minimal Zod -> JSON Schema converter.
98
+ *
99
+ * This is the same simplified converter that previously lived (duplicated)
100
+ * inside `anthropic.ts` and `openai.ts`. Extracted here so both adapters call
101
+ * the same implementation. For richer conversion use `zod-to-json-schema`.
102
+ */
103
+ export declare function zodToJsonSchema(zodSchema: unknown): Record<string, unknown>;
104
+ /**
105
+ * Try to parse `text` as JSON when it looks like JSON or a schema is expected,
106
+ * otherwise return the text unchanged. Never throws.
107
+ */
108
+ export declare function tryParseJson(text: string | undefined, expectJson?: boolean): unknown;
109
+ /** Promise-based setTimeout. */
110
+ export declare function sleep(ms: number): Promise<void>;
111
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/batch/provider.ts"],"names":[],"mappings":"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"}