ai-functions 0.3.0 → 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 (400) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-test.log +105 -0
  3. package/README.md +190 -86
  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 +29 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +53 -52
  76. package/dist/index.js.map +1 -1
  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 +474 -106
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js +4 -8
  100. package/dist/types.js.map +1 -1
  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 +57 -57
  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 +10 -0
  162. package/vitest.config.ts +42 -0
  163. package/LICENSE +0 -21
  164. package/bin/cli.js +0 -5
  165. package/dist/cli/index.d.ts +0 -10
  166. package/dist/cli/index.d.ts.map +0 -1
  167. package/dist/cli/index.js +0 -38
  168. package/dist/cli/index.js.map +0 -1
  169. package/dist/cli/index.test.d.ts +0 -2
  170. package/dist/cli/index.test.d.ts.map +0 -1
  171. package/dist/cli/index.test.js +0 -35
  172. package/dist/cli/index.test.js.map +0 -1
  173. package/dist/constants/models.d.ts +0 -10
  174. package/dist/constants/models.d.ts.map +0 -1
  175. package/dist/constants/models.js +0 -12
  176. package/dist/constants/models.js.map +0 -1
  177. package/dist/converters/index.d.ts +0 -3
  178. package/dist/converters/index.d.ts.map +0 -1
  179. package/dist/converters/index.js +0 -3
  180. package/dist/converters/index.js.map +0 -1
  181. package/dist/converters/model.d.ts +0 -4
  182. package/dist/converters/model.d.ts.map +0 -1
  183. package/dist/converters/model.js +0 -19
  184. package/dist/converters/model.js.map +0 -1
  185. package/dist/converters/schema.d.ts +0 -4
  186. package/dist/converters/schema.d.ts.map +0 -1
  187. package/dist/converters/schema.js +0 -25
  188. package/dist/converters/schema.js.map +0 -1
  189. package/dist/core/responses.d.ts +0 -5
  190. package/dist/core/responses.d.ts.map +0 -1
  191. package/dist/core/responses.js +0 -16
  192. package/dist/core/responses.js.map +0 -1
  193. package/dist/core/responses.test.d.ts +0 -2
  194. package/dist/core/responses.test.d.ts.map +0 -1
  195. package/dist/core/responses.test.js +0 -31
  196. package/dist/core/responses.test.js.map +0 -1
  197. package/dist/errors.d.ts +0 -6
  198. package/dist/errors.d.ts.map +0 -1
  199. package/dist/errors.js +0 -9
  200. package/dist/errors.js.map +0 -1
  201. package/dist/examples/streaming.test.d.ts +0 -2
  202. package/dist/examples/streaming.test.d.ts.map +0 -1
  203. package/dist/examples/streaming.test.js +0 -176
  204. package/dist/examples/streaming.test.js.map +0 -1
  205. package/dist/factory/__tests__/index.test.d.ts +0 -2
  206. package/dist/factory/__tests__/index.test.d.ts.map +0 -1
  207. package/dist/factory/__tests__/index.test.js +0 -430
  208. package/dist/factory/__tests__/index.test.js.map +0 -1
  209. package/dist/factory/__tests__/list.test.d.ts +0 -2
  210. package/dist/factory/__tests__/list.test.d.ts.map +0 -1
  211. package/dist/factory/__tests__/list.test.js +0 -92
  212. package/dist/factory/__tests__/list.test.js.map +0 -1
  213. package/dist/factory/index.d.ts +0 -20
  214. package/dist/factory/index.d.ts.map +0 -1
  215. package/dist/factory/index.js +0 -287
  216. package/dist/factory/index.js.map +0 -1
  217. package/dist/factory/index.test.d.ts +0 -2
  218. package/dist/factory/index.test.d.ts.map +0 -1
  219. package/dist/factory/index.test.js +0 -287
  220. package/dist/factory/index.test.js.map +0 -1
  221. package/dist/factory/list.d.ts +0 -3
  222. package/dist/factory/list.d.ts.map +0 -1
  223. package/dist/factory/list.js +0 -221
  224. package/dist/factory/list.js.map +0 -1
  225. package/dist/factory/list.test.d.ts +0 -2
  226. package/dist/factory/list.test.d.ts.map +0 -1
  227. package/dist/factory/list.test.js +0 -84
  228. package/dist/factory/list.test.js.map +0 -1
  229. package/dist/generate/index.d.ts +0 -5
  230. package/dist/generate/index.d.ts.map +0 -1
  231. package/dist/generate/index.js +0 -17
  232. package/dist/generate/index.js.map +0 -1
  233. package/dist/index.test.d.ts +0 -2
  234. package/dist/index.test.d.ts.map +0 -1
  235. package/dist/index.test.js +0 -59
  236. package/dist/index.test.js.map +0 -1
  237. package/dist/list/await.d.ts +0 -3
  238. package/dist/list/await.d.ts.map +0 -1
  239. package/dist/list/await.js +0 -28
  240. package/dist/list/await.js.map +0 -1
  241. package/dist/list/constants.d.ts +0 -4
  242. package/dist/list/constants.d.ts.map +0 -1
  243. package/dist/list/constants.js +0 -5
  244. package/dist/list/constants.js.map +0 -1
  245. package/dist/list/create-function.d.ts +0 -3
  246. package/dist/list/create-function.d.ts.map +0 -1
  247. package/dist/list/create-function.js +0 -11
  248. package/dist/list/create-function.js.map +0 -1
  249. package/dist/list/index.d.ts +0 -4
  250. package/dist/list/index.d.ts.map +0 -1
  251. package/dist/list/index.js +0 -5
  252. package/dist/list/index.js.map +0 -1
  253. package/dist/list/prompt.d.ts +0 -3
  254. package/dist/list/prompt.d.ts.map +0 -1
  255. package/dist/list/prompt.js +0 -6
  256. package/dist/list/prompt.js.map +0 -1
  257. package/dist/list/schemas.d.ts +0 -4
  258. package/dist/list/schemas.d.ts.map +0 -1
  259. package/dist/list/schemas.js +0 -8
  260. package/dist/list/schemas.js.map +0 -1
  261. package/dist/list/stream.d.ts +0 -3
  262. package/dist/list/stream.d.ts.map +0 -1
  263. package/dist/list/stream.js +0 -33
  264. package/dist/list/stream.js.map +0 -1
  265. package/dist/list/types.d.ts +0 -11
  266. package/dist/list/types.d.ts.map +0 -1
  267. package/dist/list/types.js +0 -2
  268. package/dist/list/types.js.map +0 -1
  269. package/dist/list/validation.d.ts +0 -3
  270. package/dist/list/validation.d.ts.map +0 -1
  271. package/dist/list/validation.js +0 -12
  272. package/dist/list/validation.js.map +0 -1
  273. package/dist/providers/config.d.ts +0 -4
  274. package/dist/providers/config.d.ts.map +0 -1
  275. package/dist/providers/config.js +0 -21
  276. package/dist/providers/config.js.map +0 -1
  277. package/dist/providers/config.test.d.ts +0 -2
  278. package/dist/providers/config.test.d.ts.map +0 -1
  279. package/dist/providers/config.test.js +0 -37
  280. package/dist/providers/config.test.js.map +0 -1
  281. package/dist/proxy/constants.d.ts +0 -4
  282. package/dist/proxy/constants.d.ts.map +0 -1
  283. package/dist/proxy/constants.js +0 -5
  284. package/dist/proxy/constants.js.map +0 -1
  285. package/dist/proxy/create-function.d.ts +0 -4
  286. package/dist/proxy/create-function.d.ts.map +0 -1
  287. package/dist/proxy/create-function.js +0 -24
  288. package/dist/proxy/create-function.js.map +0 -1
  289. package/dist/proxy/create-proxy.d.ts +0 -2
  290. package/dist/proxy/create-proxy.d.ts.map +0 -1
  291. package/dist/proxy/create-proxy.js +0 -11
  292. package/dist/proxy/create-proxy.js.map +0 -1
  293. package/dist/proxy/function-generator.d.ts +0 -9
  294. package/dist/proxy/function-generator.d.ts.map +0 -1
  295. package/dist/proxy/function-generator.js +0 -29
  296. package/dist/proxy/function-generator.js.map +0 -1
  297. package/dist/proxy/index.d.ts +0 -4
  298. package/dist/proxy/index.d.ts.map +0 -1
  299. package/dist/proxy/index.js +0 -4
  300. package/dist/proxy/index.js.map +0 -1
  301. package/dist/proxy/prompt.d.ts +0 -2
  302. package/dist/proxy/prompt.d.ts.map +0 -1
  303. package/dist/proxy/prompt.js +0 -6
  304. package/dist/proxy/prompt.js.map +0 -1
  305. package/dist/proxy/types.d.ts +0 -7
  306. package/dist/proxy/types.d.ts.map +0 -1
  307. package/dist/proxy/types.js +0 -2
  308. package/dist/proxy/types.js.map +0 -1
  309. package/dist/queue/manager.d.ts +0 -5
  310. package/dist/queue/manager.d.ts.map +0 -1
  311. package/dist/queue/manager.js +0 -37
  312. package/dist/queue/manager.js.map +0 -1
  313. package/dist/queue/manager.test.d.ts +0 -2
  314. package/dist/queue/manager.test.d.ts.map +0 -1
  315. package/dist/queue/manager.test.js +0 -52
  316. package/dist/queue/manager.test.js.map +0 -1
  317. package/dist/schema-converter.d.ts +0 -4
  318. package/dist/schema-converter.d.ts.map +0 -1
  319. package/dist/schema-converter.js +0 -30
  320. package/dist/schema-converter.js.map +0 -1
  321. package/dist/stream/index.d.ts +0 -7
  322. package/dist/stream/index.d.ts.map +0 -1
  323. package/dist/stream/index.js +0 -23
  324. package/dist/stream/index.js.map +0 -1
  325. package/dist/streaming/utils.d.ts +0 -4
  326. package/dist/streaming/utils.d.ts.map +0 -1
  327. package/dist/streaming/utils.js +0 -131
  328. package/dist/streaming/utils.js.map +0 -1
  329. package/dist/streaming/utils.test.d.ts +0 -2
  330. package/dist/streaming/utils.test.d.ts.map +0 -1
  331. package/dist/streaming/utils.test.js +0 -84
  332. package/dist/streaming/utils.test.js.map +0 -1
  333. package/dist/templates/result.d.ts +0 -7
  334. package/dist/templates/result.d.ts.map +0 -1
  335. package/dist/templates/result.js +0 -40
  336. package/dist/templates/result.js.map +0 -1
  337. package/dist/templates/result.test.d.ts +0 -2
  338. package/dist/templates/result.test.d.ts.map +0 -1
  339. package/dist/templates/result.test.js +0 -75
  340. package/dist/templates/result.test.js.map +0 -1
  341. package/dist/test/setup.d.ts +0 -2
  342. package/dist/test/setup.d.ts.map +0 -1
  343. package/dist/test/setup.js +0 -21
  344. package/dist/test/setup.js.map +0 -1
  345. package/dist/test-types.d.ts +0 -13
  346. package/dist/test-types.d.ts.map +0 -1
  347. package/dist/test-types.js +0 -55
  348. package/dist/test-types.js.map +0 -1
  349. package/dist/types/index.d.ts +0 -4
  350. package/dist/types/index.d.ts.map +0 -1
  351. package/dist/types/index.js +0 -4
  352. package/dist/types/index.js.map +0 -1
  353. package/dist/types/list.d.ts +0 -10
  354. package/dist/types/list.d.ts.map +0 -1
  355. package/dist/types/list.js +0 -2
  356. package/dist/types/list.js.map +0 -1
  357. package/dist/types/model.d.ts +0 -7
  358. package/dist/types/model.d.ts.map +0 -1
  359. package/dist/types/model.js +0 -2
  360. package/dist/types/model.js.map +0 -1
  361. package/dist/types/options.d.ts +0 -25
  362. package/dist/types/options.d.ts.map +0 -1
  363. package/dist/types/options.js +0 -2
  364. package/dist/types/options.js.map +0 -1
  365. package/dist/types/schema.d.ts +0 -5
  366. package/dist/types/schema.d.ts.map +0 -1
  367. package/dist/types/schema.js +0 -2
  368. package/dist/types/schema.js.map +0 -1
  369. package/dist/utils/__tests__/request-handler.test.d.ts +0 -2
  370. package/dist/utils/__tests__/request-handler.test.d.ts.map +0 -1
  371. package/dist/utils/__tests__/request-handler.test.js +0 -134
  372. package/dist/utils/__tests__/request-handler.test.js.map +0 -1
  373. package/dist/utils/__tests__/schema.test.d.ts +0 -2
  374. package/dist/utils/__tests__/schema.test.d.ts.map +0 -1
  375. package/dist/utils/__tests__/schema.test.js +0 -49
  376. package/dist/utils/__tests__/schema.test.js.map +0 -1
  377. package/dist/utils/__tests__/stream-progress.test.d.ts +0 -2
  378. package/dist/utils/__tests__/stream-progress.test.d.ts.map +0 -1
  379. package/dist/utils/__tests__/stream-progress.test.js +0 -85
  380. package/dist/utils/__tests__/stream-progress.test.js.map +0 -1
  381. package/dist/utils/index.d.ts +0 -2
  382. package/dist/utils/index.d.ts.map +0 -1
  383. package/dist/utils/index.js +0 -2
  384. package/dist/utils/index.js.map +0 -1
  385. package/dist/utils/request-handler.d.ts +0 -17
  386. package/dist/utils/request-handler.d.ts.map +0 -1
  387. package/dist/utils/request-handler.js +0 -105
  388. package/dist/utils/request-handler.js.map +0 -1
  389. package/dist/utils/schema.d.ts +0 -11
  390. package/dist/utils/schema.d.ts.map +0 -1
  391. package/dist/utils/schema.js +0 -51
  392. package/dist/utils/schema.js.map +0 -1
  393. package/dist/utils/stream-progress.d.ts +0 -17
  394. package/dist/utils/stream-progress.d.ts.map +0 -1
  395. package/dist/utils/stream-progress.js +0 -86
  396. package/dist/utils/stream-progress.js.map +0 -1
  397. package/dist/utils/validation.d.ts +0 -3
  398. package/dist/utils/validation.d.ts.map +0 -1
  399. package/dist/utils/validation.js +0 -30
  400. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,586 @@
1
+ /**
2
+ * AWS Bedrock Batch Inference Adapter
3
+ *
4
+ * Implements batch processing using AWS Bedrock's batch inference API.
5
+ * Bedrock batch inference provides cost-effective processing for large workloads.
6
+ *
7
+ * @see https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference.html
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { registerBatchAdapter, registerFlexAdapter, } from '../batch-queue.js';
12
+ import { schema as convertSchema } from '../schema.js';
13
+ // ============================================================================
14
+ // AWS Configuration
15
+ // ============================================================================
16
+ let awsRegion;
17
+ let awsAccessKeyId;
18
+ let awsSecretAccessKey;
19
+ let awsSessionToken;
20
+ let s3Bucket;
21
+ let roleArn;
22
+ // AI Gateway configuration (optional - for routing through Cloudflare AI Gateway)
23
+ let gatewayUrl;
24
+ let gatewayToken;
25
+ /**
26
+ * Configure AWS credentials and settings
27
+ */
28
+ export function configureAWSBedrock(options) {
29
+ if (options.region)
30
+ awsRegion = options.region;
31
+ if (options.accessKeyId)
32
+ awsAccessKeyId = options.accessKeyId;
33
+ if (options.secretAccessKey)
34
+ awsSecretAccessKey = options.secretAccessKey;
35
+ if (options.sessionToken)
36
+ awsSessionToken = options.sessionToken;
37
+ if (options.s3Bucket)
38
+ s3Bucket = options.s3Bucket;
39
+ if (options.roleArn)
40
+ roleArn = options.roleArn;
41
+ if (options.gatewayUrl)
42
+ gatewayUrl = options.gatewayUrl;
43
+ if (options.gatewayToken)
44
+ gatewayToken = options.gatewayToken;
45
+ }
46
+ function getConfig() {
47
+ const region = awsRegion || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1';
48
+ const accessKeyId = awsAccessKeyId || process.env.AWS_ACCESS_KEY_ID;
49
+ const secretAccessKey = awsSecretAccessKey || process.env.AWS_SECRET_ACCESS_KEY;
50
+ const sessionToken = awsSessionToken || process.env.AWS_SESSION_TOKEN;
51
+ const bucket = s3Bucket || process.env.BEDROCK_BATCH_S3_BUCKET;
52
+ const role = roleArn || process.env.BEDROCK_BATCH_ROLE_ARN;
53
+ // Check for AI Gateway configuration
54
+ const gwUrl = gatewayUrl || process.env.AI_GATEWAY_URL;
55
+ const gwToken = gatewayToken || process.env.AI_GATEWAY_TOKEN;
56
+ // If using gateway, we don't need AWS credentials
57
+ if (gwUrl && gwToken) {
58
+ return {
59
+ region,
60
+ accessKeyId: accessKeyId || '',
61
+ secretAccessKey: secretAccessKey || '',
62
+ sessionToken,
63
+ bucket: bucket || '',
64
+ role,
65
+ gatewayUrl: gwUrl,
66
+ gatewayToken: gwToken,
67
+ };
68
+ }
69
+ if (!accessKeyId || !secretAccessKey) {
70
+ throw new Error('AWS credentials not configured. Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, or use AI_GATEWAY_URL and AI_GATEWAY_TOKEN');
71
+ }
72
+ if (!bucket) {
73
+ throw new Error('S3 bucket for Bedrock batch not configured. Set BEDROCK_BATCH_S3_BUCKET');
74
+ }
75
+ return { region, accessKeyId, secretAccessKey, sessionToken, bucket, role, gatewayUrl: undefined, gatewayToken: undefined };
76
+ }
77
+ // ============================================================================
78
+ // AWS Signature V4 (Simplified)
79
+ // ============================================================================
80
+ async function signRequest(method, url, body, config, service) {
81
+ // In production, use @aws-sdk/signature-v4 or similar
82
+ // This is a simplified implementation for demonstration
83
+ const headers = new Headers({
84
+ 'Content-Type': 'application/json',
85
+ 'X-Amz-Date': new Date().toISOString().replace(/[:-]|\.\d{3}/g, ''),
86
+ });
87
+ if (config.sessionToken) {
88
+ headers.set('X-Amz-Security-Token', config.sessionToken);
89
+ }
90
+ // For actual implementation, compute proper AWS Signature V4
91
+ // This requires crypto operations that vary by environment
92
+ // Fallback: Use AWS SDK if available
93
+ try {
94
+ // Dynamic import to avoid build-time dependency
95
+ // @ts-expect-error - Optional dependency
96
+ const signatureV4Module = await import('@smithy/signature-v4');
97
+ // @ts-expect-error - Optional dependency
98
+ const sha256Module = await import('@aws-crypto/sha256-js');
99
+ const SignatureV4 = signatureV4Module.SignatureV4;
100
+ const Sha256 = sha256Module.Sha256;
101
+ const signer = new SignatureV4({
102
+ service,
103
+ region: config.region,
104
+ credentials: {
105
+ accessKeyId: config.accessKeyId,
106
+ secretAccessKey: config.secretAccessKey,
107
+ sessionToken: config.sessionToken,
108
+ },
109
+ sha256: Sha256,
110
+ });
111
+ const signedRequest = await signer.sign({
112
+ method,
113
+ headers: Object.fromEntries(headers.entries()),
114
+ hostname: new URL(url).hostname,
115
+ path: new URL(url).pathname,
116
+ body,
117
+ });
118
+ return new Headers(signedRequest.headers);
119
+ }
120
+ catch {
121
+ // AWS SDK not available - return basic headers
122
+ // In production, the SDK should always be available
123
+ console.warn('AWS SDK not available for request signing. Install @smithy/signature-v4 and @aws-crypto/sha256-js');
124
+ return headers;
125
+ }
126
+ }
127
+ // ============================================================================
128
+ // In-memory job tracking
129
+ // ============================================================================
130
+ const pendingJobs = new Map();
131
+ let jobCounter = 0;
132
+ // ============================================================================
133
+ // Bedrock Batch Adapter
134
+ // ============================================================================
135
+ /**
136
+ * AWS Bedrock batch adapter
137
+ *
138
+ * Bedrock batch inference:
139
+ * 1. Uploads input JSONL to S3
140
+ * 2. Creates a batch inference job
141
+ * 3. Results are written to S3
142
+ * 4. Download and parse results
143
+ *
144
+ * Note: This requires S3 bucket access and proper IAM roles.
145
+ */
146
+ const bedrockAdapter = {
147
+ async submit(items, options) {
148
+ const config = getConfig();
149
+ const jobId = `bedrock_batch_${++jobCounter}_${Date.now()}`;
150
+ // Default to Claude on Bedrock
151
+ const model = options.model || 'anthropic.claude-3-sonnet-20240229-v1:0';
152
+ // Store job state
153
+ pendingJobs.set(jobId, {
154
+ items,
155
+ options,
156
+ results: [],
157
+ status: 'pending',
158
+ createdAt: new Date(),
159
+ });
160
+ // For true Bedrock batch processing:
161
+ // 1. Create JSONL file with requests
162
+ // 2. Upload to S3
163
+ // 3. Create batch inference job via Bedrock API
164
+ // 4. Poll for completion
165
+ // 5. Download and parse results from S3
166
+ // For now, we implement a concurrent processing approach
167
+ // (similar to Cloudflare) that works without S3 setup
168
+ const completion = processBedrockRequestsConcurrently(jobId, items, config, model, options);
169
+ const job = {
170
+ id: jobId,
171
+ provider: 'bedrock',
172
+ status: 'pending',
173
+ totalItems: items.length,
174
+ completedItems: 0,
175
+ failedItems: 0,
176
+ createdAt: new Date(),
177
+ webhookUrl: options.webhookUrl,
178
+ };
179
+ return { job, completion };
180
+ },
181
+ async getStatus(batchId) {
182
+ const job = pendingJobs.get(batchId);
183
+ if (!job) {
184
+ throw new Error(`Batch not found: ${batchId}`);
185
+ }
186
+ const completedItems = job.results.filter((r) => r.status === 'completed').length;
187
+ const failedItems = job.results.filter((r) => r.status === 'failed').length;
188
+ return {
189
+ id: batchId,
190
+ provider: 'bedrock',
191
+ status: job.status,
192
+ totalItems: job.items.length,
193
+ completedItems,
194
+ failedItems,
195
+ createdAt: job.createdAt,
196
+ completedAt: job.completedAt,
197
+ };
198
+ },
199
+ async cancel(batchId) {
200
+ const job = pendingJobs.get(batchId);
201
+ if (job) {
202
+ job.status = 'cancelled';
203
+ // If we have a Bedrock job ARN, cancel it
204
+ if (job.jobArn) {
205
+ const config = getConfig();
206
+ const url = `https://bedrock.${config.region}.amazonaws.com/model-invocation-job/${encodeURIComponent(job.jobArn)}/stop`;
207
+ try {
208
+ await fetch(url, {
209
+ method: 'POST',
210
+ headers: await signRequest('POST', url, '', config, 'bedrock'),
211
+ });
212
+ }
213
+ catch (error) {
214
+ console.warn('Failed to cancel Bedrock job:', error);
215
+ }
216
+ }
217
+ }
218
+ },
219
+ async getResults(batchId) {
220
+ const job = pendingJobs.get(batchId);
221
+ if (!job) {
222
+ throw new Error(`Batch not found: ${batchId}`);
223
+ }
224
+ return job.results;
225
+ },
226
+ async waitForCompletion(batchId, pollInterval = 5000) {
227
+ const job = pendingJobs.get(batchId);
228
+ if (!job) {
229
+ throw new Error(`Batch not found: ${batchId}`);
230
+ }
231
+ while (job.status !== 'completed' && job.status !== 'failed' && job.status !== 'cancelled') {
232
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
233
+ }
234
+ return job.results;
235
+ },
236
+ };
237
+ // ============================================================================
238
+ // Processing (Concurrent Mode)
239
+ // ============================================================================
240
+ /**
241
+ * Process Bedrock requests concurrently
242
+ * This is a fallback when true batch inference isn't configured
243
+ */
244
+ async function processBedrockRequestsConcurrently(jobId, items, config, model, options) {
245
+ const job = pendingJobs.get(jobId);
246
+ if (!job) {
247
+ throw new Error(`Job not found: ${jobId}`);
248
+ }
249
+ job.status = 'in_progress';
250
+ // Process with concurrency limit
251
+ const CONCURRENCY = 5; // Bedrock has stricter rate limits
252
+ const results = [];
253
+ for (let i = 0; i < items.length; i += CONCURRENCY) {
254
+ const batch = items.slice(i, i + CONCURRENCY);
255
+ const batchResults = await Promise.all(batch.map(async (item) => {
256
+ try {
257
+ return await processBedrockItem(item, config, model);
258
+ }
259
+ catch (error) {
260
+ return {
261
+ id: item.id,
262
+ customId: item.id,
263
+ status: 'failed',
264
+ error: error instanceof Error ? error.message : 'Unknown error',
265
+ };
266
+ }
267
+ }));
268
+ results.push(...batchResults);
269
+ job.results = results;
270
+ // Respect rate limits
271
+ if (i + CONCURRENCY < items.length) {
272
+ await new Promise((resolve) => setTimeout(resolve, 1000));
273
+ }
274
+ }
275
+ job.status = results.every((r) => r.status === 'completed') ? 'completed' : 'failed';
276
+ job.completedAt = new Date();
277
+ return results;
278
+ }
279
+ async function processBedrockItem(item, config, model) {
280
+ // Check if using AI Gateway
281
+ if (config.gatewayUrl && config.gatewayToken) {
282
+ return processBedrockItemViaGateway(item, config, model);
283
+ }
284
+ const url = `https://bedrock-runtime.${config.region}.amazonaws.com/model/${encodeURIComponent(model)}/invoke`;
285
+ // Build the request body based on the model type
286
+ let body;
287
+ if (model.includes('anthropic')) {
288
+ // Anthropic models on Bedrock
289
+ body = {
290
+ anthropic_version: 'bedrock-2023-05-31',
291
+ max_tokens: item.options?.maxTokens || 4096,
292
+ messages: [{ role: 'user', content: item.prompt }],
293
+ system: item.options?.system,
294
+ temperature: item.options?.temperature,
295
+ };
296
+ }
297
+ else if (model.includes('amazon')) {
298
+ // Amazon Titan models
299
+ body = {
300
+ inputText: item.prompt,
301
+ textGenerationConfig: {
302
+ maxTokenCount: item.options?.maxTokens || 4096,
303
+ temperature: item.options?.temperature || 0.7,
304
+ },
305
+ };
306
+ }
307
+ else if (model.includes('meta')) {
308
+ // Meta Llama models
309
+ body = {
310
+ prompt: item.prompt,
311
+ max_gen_len: item.options?.maxTokens || 4096,
312
+ temperature: item.options?.temperature || 0.7,
313
+ };
314
+ }
315
+ else if (model.includes('mistral')) {
316
+ // Mistral models
317
+ body = {
318
+ prompt: `<s>[INST] ${item.prompt} [/INST]`,
319
+ max_tokens: item.options?.maxTokens || 4096,
320
+ temperature: item.options?.temperature || 0.7,
321
+ };
322
+ }
323
+ else {
324
+ // Generic format (Claude-style)
325
+ body = {
326
+ anthropic_version: 'bedrock-2023-05-31',
327
+ max_tokens: item.options?.maxTokens || 4096,
328
+ messages: [{ role: 'user', content: item.prompt }],
329
+ temperature: item.options?.temperature,
330
+ };
331
+ }
332
+ const bodyStr = JSON.stringify(body);
333
+ const headers = await signRequest('POST', url, bodyStr, config, 'bedrock');
334
+ const response = await fetch(url, {
335
+ method: 'POST',
336
+ headers,
337
+ body: bodyStr,
338
+ });
339
+ if (!response.ok) {
340
+ const error = await response.text();
341
+ throw new Error(`Bedrock API error: ${response.status} ${error}`);
342
+ }
343
+ const data = await response.json();
344
+ // Extract content based on model response format
345
+ let content;
346
+ let usage;
347
+ if (data.content) {
348
+ // Anthropic format
349
+ const textContent = data.content.find((c) => c.type === 'text');
350
+ content = textContent?.text;
351
+ if (data.usage) {
352
+ usage = {
353
+ promptTokens: data.usage.input_tokens,
354
+ completionTokens: data.usage.output_tokens,
355
+ totalTokens: data.usage.input_tokens + data.usage.output_tokens,
356
+ };
357
+ }
358
+ }
359
+ else if (data.results?.[0]) {
360
+ // Titan format
361
+ content = data.results[0].outputText;
362
+ usage = {
363
+ promptTokens: 0, // Titan doesn't return this
364
+ completionTokens: data.results[0].tokenCount || 0,
365
+ totalTokens: data.results[0].tokenCount || 0,
366
+ };
367
+ }
368
+ else if (data.generation) {
369
+ // Llama/Mistral format
370
+ content = data.generation;
371
+ if (data.generation_token_count !== undefined) {
372
+ usage = {
373
+ promptTokens: data.prompt_token_count || 0,
374
+ completionTokens: data.generation_token_count,
375
+ totalTokens: (data.prompt_token_count || 0) + data.generation_token_count,
376
+ };
377
+ }
378
+ }
379
+ let result = content;
380
+ // Try to parse JSON if schema was provided
381
+ if (item.schema && content) {
382
+ try {
383
+ result = JSON.parse(content);
384
+ }
385
+ catch {
386
+ // Keep as string
387
+ }
388
+ }
389
+ return {
390
+ id: item.id,
391
+ customId: item.id,
392
+ status: 'completed',
393
+ result,
394
+ usage,
395
+ };
396
+ }
397
+ /**
398
+ * Process a Bedrock item via Cloudflare AI Gateway
399
+ *
400
+ * NOTE: Unlike OpenAI and Google, Bedrock via AI Gateway still requires AWS Signature V4 signing.
401
+ * The gateway routes the request but doesn't handle authentication.
402
+ * @see https://developers.cloudflare.com/ai-gateway/usage/providers/bedrock/
403
+ *
404
+ * Gateway URL format: {gateway_url}/aws-bedrock/bedrock-runtime/{region}/model/{model}/invoke
405
+ */
406
+ async function processBedrockItemViaGateway(item, config, model) {
407
+ // AI Gateway URL for Bedrock - requires full path including region
408
+ // Format: {gateway_url}/aws-bedrock/bedrock-runtime/{region}/model/{model}/invoke
409
+ const url = `${config.gatewayUrl}/aws-bedrock/bedrock-runtime/${config.region}/model/${encodeURIComponent(model)}/invoke`;
410
+ // Build the request body (Anthropic format for Claude models)
411
+ const body = {
412
+ anthropic_version: 'bedrock-2023-05-31',
413
+ max_tokens: item.options?.maxTokens || 4096,
414
+ messages: [{ role: 'user', content: item.prompt }],
415
+ system: item.options?.system,
416
+ temperature: item.options?.temperature,
417
+ };
418
+ const bodyStr = JSON.stringify(body);
419
+ // NOTE: Bedrock via Gateway still requires AWS SigV4 signing
420
+ // We need both the gateway token AND AWS credentials
421
+ if (!config.accessKeyId || !config.secretAccessKey) {
422
+ throw new Error('Bedrock via AI Gateway still requires AWS credentials for SigV4 signing. ' +
423
+ 'Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.');
424
+ }
425
+ const headers = await signRequest('POST', url, bodyStr, config, 'bedrock');
426
+ headers.set('cf-aig-authorization', `Bearer ${config.gatewayToken}`);
427
+ const response = await fetch(url, {
428
+ method: 'POST',
429
+ headers,
430
+ body: bodyStr,
431
+ });
432
+ if (!response.ok) {
433
+ const error = await response.text();
434
+ throw new Error(`Bedrock via Gateway error: ${response.status} ${error}`);
435
+ }
436
+ const data = await response.json();
437
+ // Extract content (Anthropic format)
438
+ const textContent = data.content?.find((c) => c.type === 'text');
439
+ let content = textContent?.text;
440
+ let usage;
441
+ if (data.usage) {
442
+ usage = {
443
+ promptTokens: data.usage.input_tokens,
444
+ completionTokens: data.usage.output_tokens,
445
+ totalTokens: data.usage.input_tokens + data.usage.output_tokens,
446
+ };
447
+ }
448
+ let result = content;
449
+ // Try to parse JSON if schema was provided
450
+ if (item.schema && content) {
451
+ try {
452
+ result = JSON.parse(content);
453
+ }
454
+ catch {
455
+ // Keep as string
456
+ }
457
+ }
458
+ return {
459
+ id: item.id,
460
+ customId: item.id,
461
+ status: 'completed',
462
+ result,
463
+ usage,
464
+ };
465
+ }
466
+ // ============================================================================
467
+ // True Batch Inference (S3-based)
468
+ // ============================================================================
469
+ /**
470
+ * Create and submit a true Bedrock batch inference job
471
+ * This requires S3 bucket access and proper IAM setup
472
+ */
473
+ export async function createBedrockBatchJob(items, model, options) {
474
+ const config = getConfig();
475
+ // Build JSONL content
476
+ const jsonlLines = items.map((item) => {
477
+ const request = {
478
+ recordId: item.id,
479
+ modelInput: {
480
+ anthropic_version: 'bedrock-2023-05-31',
481
+ max_tokens: item.options?.maxTokens || 4096,
482
+ messages: [{ role: 'user', content: item.prompt }],
483
+ system: item.options?.system,
484
+ temperature: item.options?.temperature,
485
+ },
486
+ };
487
+ return JSON.stringify(request);
488
+ });
489
+ const inputKey = `${options.s3InputPrefix || 'bedrock-batch/input'}/${options.jobName}.jsonl`;
490
+ const outputPrefix = `${options.s3OutputPrefix || 'bedrock-batch/output'}/${options.jobName}/`;
491
+ // Upload to S3
492
+ // In production, use @aws-sdk/client-s3
493
+ const s3Url = `https://${config.bucket}.s3.${config.region}.amazonaws.com/${inputKey}`;
494
+ const content = jsonlLines.join('\n');
495
+ const s3Response = await fetch(s3Url, {
496
+ method: 'PUT',
497
+ headers: await signRequest('PUT', s3Url, content, config, 's3'),
498
+ body: content,
499
+ });
500
+ if (!s3Response.ok) {
501
+ throw new Error(`Failed to upload to S3: ${s3Response.status}`);
502
+ }
503
+ // Create batch inference job
504
+ const jobUrl = `https://bedrock.${config.region}.amazonaws.com/model-invocation-job`;
505
+ const jobBody = JSON.stringify({
506
+ jobName: options.jobName,
507
+ modelId: model,
508
+ roleArn: options.roleArn,
509
+ inputDataConfig: {
510
+ s3InputDataConfig: {
511
+ s3Uri: `s3://${config.bucket}/${inputKey}`,
512
+ },
513
+ },
514
+ outputDataConfig: {
515
+ s3OutputDataConfig: {
516
+ s3Uri: `s3://${config.bucket}/${outputPrefix}`,
517
+ },
518
+ },
519
+ });
520
+ const jobResponse = await fetch(jobUrl, {
521
+ method: 'POST',
522
+ headers: await signRequest('POST', jobUrl, jobBody, config, 'bedrock'),
523
+ body: jobBody,
524
+ });
525
+ if (!jobResponse.ok) {
526
+ const error = await jobResponse.text();
527
+ throw new Error(`Failed to create Bedrock batch job: ${jobResponse.status} ${error}`);
528
+ }
529
+ const jobData = await jobResponse.json();
530
+ return jobData;
531
+ }
532
+ // ============================================================================
533
+ // Register Adapter
534
+ // ============================================================================
535
+ // ============================================================================
536
+ // Bedrock Flex Adapter
537
+ // ============================================================================
538
+ /**
539
+ * AWS Bedrock Flex Adapter
540
+ *
541
+ * Flex processing uses concurrent requests for medium-sized batches (5-500 items).
542
+ * This provides a balance between:
543
+ * - Immediate execution (fast but full price, <5 items)
544
+ * - Full batch inference (50% discount but 24hr turnaround, 500+ items)
545
+ *
546
+ * Flex tier uses concurrent API calls with rate limiting, providing results
547
+ * in minutes rather than hours while still benefiting from efficient processing.
548
+ */
549
+ const bedrockFlexAdapter = {
550
+ async submitFlex(items, options) {
551
+ const config = getConfig();
552
+ const model = options.model || 'anthropic.claude-3-sonnet-20240229-v1:0';
553
+ const CONCURRENCY = 8; // Bedrock has stricter rate limits than OpenAI
554
+ const results = [];
555
+ // Process items concurrently with rate limiting
556
+ for (let i = 0; i < items.length; i += CONCURRENCY) {
557
+ const batch = items.slice(i, i + CONCURRENCY);
558
+ const batchResults = await Promise.all(batch.map(async (item) => {
559
+ try {
560
+ return await processBedrockItem(item, config, model);
561
+ }
562
+ catch (error) {
563
+ return {
564
+ id: item.id,
565
+ customId: item.id,
566
+ status: 'failed',
567
+ error: error instanceof Error ? error.message : 'Unknown error',
568
+ };
569
+ }
570
+ }));
571
+ results.push(...batchResults);
572
+ // Add delay between batches to respect rate limits
573
+ if (i + CONCURRENCY < items.length) {
574
+ await new Promise((resolve) => setTimeout(resolve, 500));
575
+ }
576
+ }
577
+ return results;
578
+ },
579
+ };
580
+ // ============================================================================
581
+ // Register Adapters
582
+ // ============================================================================
583
+ registerBatchAdapter('bedrock', bedrockAdapter);
584
+ registerFlexAdapter('bedrock', bedrockFlexAdapter);
585
+ export { bedrockAdapter, bedrockFlexAdapter };
586
+ //# sourceMappingURL=bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../src/batch/bedrock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Cloudflare AI Gateway Batch Adapter
3
+ *
4
+ * Implements batch processing using Cloudflare AI Gateway's batch endpoint.
5
+ * Cloudflare's batch API is newer but integrates well with Workers.
6
+ *
7
+ * Note: Cloudflare's batch API is evolving. This adapter implements
8
+ * the current batch capabilities and can be extended as new features land.
9
+ *
10
+ * @see https://developers.cloudflare.com/ai-gateway/
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { type BatchAdapter } from '../batch-queue.js';
15
+ /**
16
+ * Configure the Cloudflare client
17
+ */
18
+ export declare function configureCloudflare(options: {
19
+ accountId?: string;
20
+ gatewayId?: string;
21
+ apiToken?: string;
22
+ baseUrl?: string;
23
+ }): void;
24
+ /**
25
+ * Cloudflare batch adapter
26
+ *
27
+ * Note: Cloudflare's AI Gateway doesn't have a native batch API like OpenAI/Anthropic.
28
+ * This adapter implements batch processing by:
29
+ * 1. Sending requests concurrently through the gateway
30
+ * 2. Utilizing Cloudflare's caching and rate limiting
31
+ * 3. Tracking job state locally (or in D1/KV for production)
32
+ *
33
+ * For true async batch processing, consider using Cloudflare Queues + Workers.
34
+ */
35
+ declare const cloudflareAdapter: BatchAdapter;
36
+ export { cloudflareAdapter };
37
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/batch/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,YAAY,EAOlB,MAAM,mBAAmB,CAAA;AA0D1B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,IAAI,CAKP;AAqED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,iBAAiB,EAAE,YAgFxB,CAAA;AAsKD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}