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
@@ -1,430 +0,0 @@
1
- import { describe, expect, it, beforeEach } from 'vitest';
2
- import { z } from 'zod';
3
- import { createTemplateFunction, createAIFunction } from '../index';
4
- import { createListFunction } from '../list';
5
- import { openai } from '@ai-sdk/openai';
6
- import { ai, list } from '../../index';
7
- describe('createAIFunction', () => {
8
- beforeEach(() => {
9
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
10
- // Ensure AI gateway is configured for cached responses
11
- process.env.AI_GATEWAY = process.env.AI_GATEWAY || 'https://api.openai.com/v1';
12
- });
13
- it('should return schema when called without args', async () => {
14
- const schema = z.object({
15
- productType: z.enum(['App', 'API', 'Marketplace']),
16
- description: z.string().describe('website meta description'),
17
- });
18
- const fn = createAIFunction(schema);
19
- const result = await fn();
20
- expect(result).toHaveProperty('schema');
21
- expect(result.schema).toBeInstanceOf(z.ZodObject);
22
- });
23
- it('should generate content when called with args', async () => {
24
- const schema = z.object({
25
- productType: z.enum(['App', 'API', 'Marketplace']),
26
- description: z.string().describe('website meta description'),
27
- });
28
- const fn = createAIFunction(schema);
29
- const result = await fn({
30
- productType: 'App',
31
- description: 'A modern web application for task management'
32
- }, {
33
- model: openai('gpt-4o-mini')
34
- });
35
- expect(result).toHaveProperty('productType');
36
- expect(result).toHaveProperty('description');
37
- expect(typeof result.description).toBe('string');
38
- });
39
- });
40
- describe('createTemplateFunction', () => {
41
- beforeEach(() => {
42
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
43
- });
44
- describe('output format handling', () => {
45
- it('should support JSON output format with schema', async () => {
46
- const schema = z.object({
47
- name: z.string(),
48
- age: z.number(),
49
- });
50
- const fn = createTemplateFunction({
51
- outputFormat: 'json',
52
- schema,
53
- model: openai('gpt-4o-mini')
54
- });
55
- const result = await fn `Generate a person's info`;
56
- const parsed = schema.parse(JSON.parse(result));
57
- expect(parsed).toBeDefined();
58
- expect(typeof parsed.name).toBe('string');
59
- expect(typeof parsed.age).toBe('number');
60
- });
61
- });
62
- it('should use custom baseURL when AI_GATEWAY is set', async () => {
63
- process.env.AI_GATEWAY = 'https://api.openai.com/v1';
64
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
65
- const fn = createTemplateFunction({
66
- model: openai('gpt-4o-mini')
67
- });
68
- const result = await fn `Write a haiku about coding`;
69
- expect(typeof result).toBe('string');
70
- expect(result.length).toBeGreaterThan(0);
71
- });
72
- it('should use default OpenAI when AI_GATEWAY is not set', async () => {
73
- delete process.env.AI_GATEWAY;
74
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
75
- const fn = createTemplateFunction({
76
- model: openai('gpt-4o-mini')
77
- });
78
- const result = await fn `Write a haiku about coding`;
79
- expect(typeof result).toBe('string');
80
- expect(result.length).toBeGreaterThan(0);
81
- });
82
- describe('error handling', () => {
83
- beforeEach(() => {
84
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
85
- });
86
- it('should handle template strings correctly', async () => {
87
- const fn = createTemplateFunction({
88
- model: openai('gpt-4o-mini')
89
- });
90
- const result = await fn `List three programming languages`;
91
- expect(typeof result).toBe('string');
92
- expect(result.length).toBeGreaterThan(0);
93
- });
94
- it('should throw on mismatched template values', () => {
95
- const fn = createTemplateFunction();
96
- const templateStrings = Object.assign(['test ', ' ', ' ', ''], {
97
- raw: ['test ', ' ', ' ', ''],
98
- });
99
- expect(() => fn(templateStrings, 1, 2)).toThrow('Template literal slots must match provided values');
100
- });
101
- });
102
- it('should generate text', async () => {
103
- const fn = createTemplateFunction();
104
- const result = await fn `Hello, how are you?`;
105
- expect(result).toBeDefined();
106
- expect(typeof result).toBe('string');
107
- });
108
- it('should support streaming', async () => {
109
- const fn = createTemplateFunction();
110
- const chunks = [];
111
- for await (const chunk of fn `Hello, how are you?`) {
112
- chunks.push(chunk);
113
- }
114
- expect(chunks.length).toBeGreaterThan(0);
115
- });
116
- it('should support JSON output with schema', async () => {
117
- const fn = createTemplateFunction();
118
- const result = await fn.withOptions({
119
- outputFormat: 'json',
120
- schema: {
121
- name: 'string',
122
- age: 'number'
123
- },
124
- prompt: 'Generate a person with a name and age'
125
- });
126
- expect(result).toBeDefined();
127
- const parsed = JSON.parse(result);
128
- expect(parsed).toHaveProperty('name');
129
- expect(parsed).toHaveProperty('age');
130
- expect(typeof parsed.name).toBe('string');
131
- expect(typeof parsed.age).toBe('number');
132
- });
133
- it('should support JSON output without schema', async () => {
134
- const fn = createTemplateFunction();
135
- const result = await fn.withOptions({
136
- outputFormat: 'json',
137
- prompt: 'Generate a random object'
138
- });
139
- expect(result).toBeDefined();
140
- expect(() => JSON.parse(result)).not.toThrow();
141
- });
142
- it('should support model parameters', async () => {
143
- const fn = createTemplateFunction();
144
- const result = await fn.withOptions({
145
- temperature: 0.7,
146
- maxTokens: 100,
147
- topP: 0.9,
148
- frequencyPenalty: 0.5,
149
- presencePenalty: 0.5,
150
- stop: ['END'],
151
- seed: 42
152
- });
153
- expect(result).toBeDefined();
154
- expect(typeof result).toBe('string');
155
- });
156
- it('should support array of stop sequences', async () => {
157
- const fn = createTemplateFunction();
158
- const result = await fn.withOptions({
159
- stop: ['END', 'STOP']
160
- });
161
- expect(result).toBeDefined();
162
- expect(typeof result).toBe('string');
163
- });
164
- it('should support deterministic output with seed', async () => {
165
- const fn = createTemplateFunction();
166
- const prompt = 'Generate a random number between 1 and 10';
167
- const result1 = await fn `${prompt}`({ seed: 42 });
168
- const result2 = await fn `${prompt}`({ seed: 42 });
169
- expect(result1).toBe(result2);
170
- });
171
- it('should support system parameter', async () => {
172
- const fn = createTemplateFunction();
173
- const result = await fn.withOptions({
174
- system: 'You are a helpful assistant that speaks in a formal tone.',
175
- prompt: 'Tell me about AI'
176
- });
177
- expect(result).toBeDefined();
178
- expect(typeof result).toBe('string');
179
- });
180
- it('should support system parameter in JSON output', async () => {
181
- const fn = createTemplateFunction();
182
- const result = await fn.withOptions({
183
- outputFormat: 'json',
184
- schema: {
185
- title: 'string',
186
- content: 'string'
187
- },
188
- system: 'You are a helpful assistant that speaks in a formal tone.',
189
- prompt: 'Write an article about AI'
190
- });
191
- expect(result).toBeDefined();
192
- const parsed = JSON.parse(result);
193
- expect(parsed).toHaveProperty('title');
194
- expect(parsed).toHaveProperty('content');
195
- expect(typeof parsed.title).toBe('string');
196
- expect(typeof parsed.content).toBe('string');
197
- });
198
- it('should support system parameter in list function', async () => {
199
- const list = createListFunction();
200
- const result = await list `List 3 programming languages`({
201
- system: 'You are a helpful assistant that provides concise, one-word answers.'
202
- });
203
- expect(result).toBeDefined();
204
- const items = result.split('\n');
205
- expect(items.length).toBe(3);
206
- items.forEach((item) => expect(item.split(' ').length).toBe(1));
207
- });
208
- describe('concurrency handling', () => {
209
- it('should respect concurrency limits', async () => {
210
- const fn = createTemplateFunction({
211
- concurrency: 2
212
- });
213
- const startTime = Date.now();
214
- const tasks = Array(5).fill(null).map((_, i) => fn `task ${i}`);
215
- const results = await Promise.all(tasks);
216
- const endTime = Date.now();
217
- // With concurrency of 2 and 5 tasks, it should take at least 2 intervals
218
- expect(endTime - startTime).toBeGreaterThan(1900);
219
- expect(results).toHaveLength(5);
220
- results.forEach(result => {
221
- expect(typeof result).toBe('string');
222
- expect(result.length).toBeGreaterThan(0);
223
- });
224
- });
225
- it('should handle concurrent streaming requests', async () => {
226
- const fn = createTemplateFunction({
227
- concurrency: 2
228
- });
229
- const streams = Array(3).fill(null).map((_, i) => fn `generate a short story about item ${i}`);
230
- const results = await Promise.all(streams.map(async (stream) => {
231
- const chunks = [];
232
- for await (const chunk of stream) {
233
- chunks.push(chunk);
234
- }
235
- return chunks;
236
- }));
237
- expect(results).toHaveLength(3);
238
- results.forEach(chunks => {
239
- expect(chunks.length).toBeGreaterThan(0);
240
- expect(chunks.every(chunk => typeof chunk === 'string')).toBe(true);
241
- });
242
- });
243
- it('should queue requests when concurrency limit is reached', async () => {
244
- const fn = createTemplateFunction({
245
- concurrency: 1
246
- });
247
- const executionOrder = [];
248
- const tasks = Array(4).fill(null).map((_, i) => fn `task ${i}`.then(() => {
249
- executionOrder.push(i);
250
- return i;
251
- }));
252
- const results = await Promise.all(tasks);
253
- // With concurrency of 1, tasks should complete in order
254
- expect(executionOrder).toEqual([0, 1, 2, 3]);
255
- expect(results).toEqual([0, 1, 2, 3]);
256
- });
257
- it('should handle errors in concurrent requests', async () => {
258
- const fn = createTemplateFunction({
259
- concurrency: 2,
260
- outputFormat: 'json'
261
- });
262
- const tasks = Array(3).fill(null).map((_, i) => fn `${i === 1 ? '{invalid json}' : 'task ' + i}`.catch((err) => {
263
- if (i === 1) {
264
- return JSON.stringify({ error: `error-${i}`, message: err.message });
265
- }
266
- return JSON.stringify({ result: `task-${i}` });
267
- }));
268
- const results = await Promise.all(tasks);
269
- expect(results).toHaveLength(3);
270
- const result0 = JSON.parse(results[0]);
271
- expect(result0.result).toBe('task-0');
272
- const errorResult = JSON.parse(results[1]);
273
- expect(errorResult.error).toBe('error-1');
274
- expect(errorResult.message).toBeDefined();
275
- const result2 = JSON.parse(results[2]);
276
- expect(result2.result).toBe('task-2');
277
- });
278
- });
279
- describe('composable functions', () => {
280
- beforeEach(() => {
281
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
282
- });
283
- it('should support composing list and ai functions', async () => {
284
- const { ai, list } = await import('../..');
285
- const listBlogPosts = (count, topic) => list `${count} blog post titles about ${topic}`({
286
- model: openai('gpt-4o')
287
- });
288
- const writeBlogPost = (title) => ai `write a blog post in markdown starting with '# ${title}'`({
289
- model: openai('gpt-4o')
290
- });
291
- const titles = await listBlogPosts(2, 'AI testing');
292
- expect(Array.isArray(titles)).toBe(true);
293
- expect(titles.length).toBe(2);
294
- const content = await writeBlogPost(titles[0]);
295
- expect(typeof content).toBe('string');
296
- expect(content.startsWith('# ')).toBe(true);
297
- });
298
- it('should support composition with async generators', async () => {
299
- const { ai, list } = await import('../..');
300
- const listBlogPosts = (count, topic) => list `${count} blog post titles about ${topic}`({
301
- model: openai('gpt-4o')
302
- });
303
- const writeBlogPost = (title) => ai `write a blog post in markdown starting with '# ${title}'`({
304
- model: openai('gpt-4o')
305
- });
306
- async function* writeBlog(count, topic) {
307
- const titles = await listBlogPosts(count, topic);
308
- for (const title of titles) {
309
- const content = await writeBlogPost(title);
310
- yield { title, content };
311
- }
312
- }
313
- const posts = [];
314
- for await (const post of writeBlog(2, 'software testing')) {
315
- posts.push(post);
316
- }
317
- expect(posts.length).toBe(2);
318
- posts.forEach(post => {
319
- expect(post).toHaveProperty('title');
320
- expect(post).toHaveProperty('content');
321
- expect(typeof post.title).toBe('string');
322
- expect(typeof post.content).toBe('string');
323
- expect(post.content.startsWith('# ')).toBe(true);
324
- });
325
- });
326
- it('should support concurrent composable functions', async () => {
327
- const { ai, list } = await import('../..');
328
- // Define composable functions exactly as shown in README
329
- const listBlogPosts = (count, topic) => list `${count} blog post titles about ${topic}`;
330
- const writeBlogPost = (title) => ai `write a blog post in markdown starting with '# ${title}'`;
331
- // Test composition with async iteration
332
- async function* writeBlog(count, topic) {
333
- // Get titles
334
- const titles = await listBlogPosts(count, topic);
335
- // Generate posts one at a time using streaming
336
- for (const title of titles) {
337
- let content = '';
338
- for await (const chunk of writeBlogPost(title)) {
339
- content += chunk;
340
- }
341
- yield { title, content };
342
- }
343
- }
344
- const posts = [];
345
- for await (const post of writeBlog(3, 'future of car sales')) {
346
- posts.push(post);
347
- }
348
- expect(posts.length).toBe(3);
349
- posts.forEach(post => {
350
- expect(post).toHaveProperty('title');
351
- expect(post).toHaveProperty('content');
352
- expect(typeof post.title).toBe('string');
353
- expect(typeof post.content).toBe('string');
354
- expect(post.content.startsWith('# ')).toBe(true);
355
- });
356
- });
357
- });
358
- describe('composable functions', () => {
359
- it('should support composable function patterns from README', async () => {
360
- const count = 2;
361
- const topic = 'AI development';
362
- const listBlogPosts = (count, topic) => {
363
- const result = list `${count} blog post titles about ${topic}`({
364
- model: openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o')
365
- });
366
- return {
367
- async *[Symbol.asyncIterator]() {
368
- const text = await result;
369
- for (const line of text.split('\n')) {
370
- if (line.trim())
371
- yield line.trim();
372
- }
373
- }
374
- };
375
- };
376
- const writeBlogPost = (title) => ai `write a blog post in markdown starting with '# ${title}'`({
377
- model: openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o')
378
- });
379
- const titles = [];
380
- for await (const title of listBlogPosts(count, topic)) {
381
- titles.push(title);
382
- }
383
- expect(titles).toBeDefined();
384
- expect(titles).toHaveLength(count);
385
- const firstTitle = titles[0];
386
- const content = await writeBlogPost(firstTitle);
387
- expect(content).toBeDefined();
388
- expect(typeof content).toBe('string');
389
- expect(content.startsWith('# ')).toBe(true);
390
- });
391
- it('should support async iteration with composable functions', async () => {
392
- const count = 2;
393
- const topic = 'AI development';
394
- const listBlogPosts = (count, topic) => {
395
- const result = list `${count} blog post titles about ${topic}`({
396
- model: openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o')
397
- });
398
- return {
399
- async *[Symbol.asyncIterator]() {
400
- const text = await result;
401
- for (const line of text.split('\n')) {
402
- if (line.trim())
403
- yield line.trim();
404
- }
405
- }
406
- };
407
- };
408
- const writeBlogPost = (title) => ai `write a blog post in markdown starting with '# ${title}'`({
409
- model: openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o')
410
- });
411
- async function* writeBlog(count, topic) {
412
- for await (const title of listBlogPosts(count, topic)) {
413
- const content = await writeBlogPost(title);
414
- yield { title, content };
415
- }
416
- }
417
- const posts = [];
418
- for await (const post of writeBlog(count, topic)) {
419
- posts.push(post);
420
- expect(post).toHaveProperty('title');
421
- expect(post).toHaveProperty('content');
422
- expect(typeof post.title).toBe('string');
423
- expect(typeof post.content).toBe('string');
424
- expect(post.content.startsWith('# ')).toBe(true);
425
- }
426
- expect(posts).toHaveLength(count);
427
- });
428
- });
429
- });
430
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/factory/__tests__/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=list.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../../../src/factory/__tests__/list.test.ts"],"names":[],"mappings":""}
@@ -1,92 +0,0 @@
1
- import { describe, it, expect, beforeEach } from 'vitest';
2
- import { createListFunction } from '../list';
3
- import { openai } from '@ai-sdk/openai';
4
- beforeEach(() => {
5
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
6
- // Ensure AI gateway is configured for cached responses
7
- process.env.AI_GATEWAY = process.env.AI_GATEWAY || 'https://api.openai.com/v1';
8
- });
9
- const model = openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o');
10
- describe('createListFunction', () => {
11
- it('should generate a list of items', async () => {
12
- const list = createListFunction();
13
- const result = await list `fun things to do in Miami`({ model });
14
- expect(result).toBeDefined();
15
- expect(typeof result).toBe('string');
16
- expect(result.split('\n').length).toBeGreaterThan(0);
17
- });
18
- it('should support async iteration', async () => {
19
- const list = createListFunction();
20
- const items = [];
21
- for await (const item of list `fun things to do in Miami`) {
22
- items.push(item);
23
- }
24
- expect(items.length).toBeGreaterThan(0);
25
- });
26
- it('should support configuration options', async () => {
27
- const list = createListFunction();
28
- const result = await list `fun things to do in Miami`({ model });
29
- expect(result).toBeDefined();
30
- expect(typeof result).toBe('string');
31
- expect(result.split('\n').length).toBeGreaterThan(0);
32
- });
33
- it('should handle empty input', async () => {
34
- const list = createListFunction();
35
- const result = await list ``({ model });
36
- expect(result).toBeDefined();
37
- expect(typeof result).toBe('string');
38
- });
39
- it('should handle concurrent list operations', async () => {
40
- const list = createListFunction();
41
- const topics = ['cities', 'foods', 'sports'];
42
- const tasks = topics.map(topic => list `5 popular ${topic}`({ model, concurrency: 2 }));
43
- const results = await Promise.all(tasks);
44
- expect(results).toHaveLength(3);
45
- results.forEach((result) => {
46
- expect(result.split('\n').length).toBeGreaterThan(0);
47
- });
48
- });
49
- it('should handle concurrent streaming list operations', async () => {
50
- const list = createListFunction();
51
- const topics = ['movies', 'books', 'games'];
52
- // Configure the list function with options once
53
- const configuredList = createListFunction({
54
- model,
55
- concurrency: 2
56
- });
57
- // Create an array of promises that will resolve to arrays of items
58
- const promises = topics.map(async (topic) => {
59
- const items = [];
60
- // Use async iteration directly on the template result
61
- for await (const item of configuredList `3 popular ${topic}`) {
62
- items.push(item);
63
- }
64
- return items;
65
- });
66
- // Wait for all promises to complete
67
- const results = await Promise.all(promises);
68
- expect(results).toHaveLength(3);
69
- results.forEach((items) => {
70
- expect(items.length).toBeGreaterThan(0);
71
- expect(items.every((item) => typeof item === 'string')).toBe(true);
72
- });
73
- });
74
- it('should handle errors in concurrent list operations', async () => {
75
- const list = createListFunction();
76
- const tasks = [
77
- list `valid request`({ model }),
78
- list `trigger error`({ model }),
79
- list `another valid request`({ model })
80
- ].map(promise => promise.catch(err => {
81
- // If any request fails, we'll handle it gracefully
82
- return 'error occurred';
83
- }));
84
- const results = await Promise.all(tasks);
85
- expect(results).toHaveLength(3);
86
- results.forEach(result => {
87
- expect(typeof result).toBe('string');
88
- expect(result.length).toBeGreaterThan(0);
89
- });
90
- });
91
- });
92
- //# sourceMappingURL=list.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../../src/factory/__tests__/list.test.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { type GenerateTextResult, type JSONValue, type CoreTool } from 'ai';
2
- import { Response } from 'undici';
3
- import { z } from 'zod';
4
- import { AIFunction, AIFunctionOptions, BaseTemplateFunction } from '../types';
5
- export type GenerateResult = GenerateTextResult<Record<string, CoreTool<any, any>>, Record<string, unknown>>;
6
- export type GenerateJsonResult = GenerateResult & {
7
- object: JSONValue;
8
- toJsonResponse: () => Response;
9
- };
10
- export type StreamingResult = GenerateResult & {
11
- experimental_stream: AsyncIterable<string>;
12
- };
13
- export declare function isStreamingResult(result: unknown): result is StreamingResult;
14
- export declare function isJsonResult(result: GenerateResult): result is GenerateJsonResult;
15
- export declare function createAIFunction<T extends z.ZodType>(schema: T): AIFunction<T>;
16
- export declare function createJsonResponse(result: GenerateJsonResult): Response;
17
- export declare function createStreamResponse(result: StreamingResult): Response;
18
- export declare function createTextResponse(result: GenerateResult): Response;
19
- export declare function createTemplateFunction(defaultOptions?: AIFunctionOptions): BaseTemplateFunction;
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,kBAAkB,EAA6B,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,IAAI,CAAA;AAI5I,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAA+B,MAAM,UAAU,CAAA;AAa3G,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAE5G,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,MAAM,EAAE,SAAS,CAAA;IACjB,cAAc,EAAE,MAAM,QAAQ,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC3C,CAAA;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,eAAe,CAQ5E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,IAAI,kBAAkB,CAEjF;AAID,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAiChD,UAAU,CAAC,CAAC,CAAC,CAC3B;AAwBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,CAEvE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAItE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAInE;AAED,wBAAgB,sBAAsB,CAAC,cAAc,GAAE,iBAAsB,GAAG,oBAAoB,CAgOnG"}