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,221 +0,0 @@
1
- import { streamObject } from 'ai';
2
- import { openai } from '@ai-sdk/openai';
3
- import { z } from 'zod';
4
- import PQueue from 'p-queue';
5
- function createQueue(options) {
6
- if (!options.concurrency) {
7
- return undefined;
8
- }
9
- return new PQueue({
10
- concurrency: options.concurrency,
11
- autoStart: true,
12
- carryoverConcurrencyCount: true,
13
- });
14
- }
15
- export function createListFunction(defaultOptions = {}) {
16
- let currentPrompt;
17
- let currentQueue;
18
- let queueOptions;
19
- const getQueue = (options) => {
20
- if (!options.concurrency) {
21
- return undefined;
22
- }
23
- // Create a new queue if options have changed
24
- if (!currentQueue ||
25
- !queueOptions?.concurrency ||
26
- queueOptions.concurrency !== options.concurrency) {
27
- currentQueue = createQueue(options);
28
- queueOptions = options;
29
- }
30
- return currentQueue;
31
- };
32
- const executeRequest = async (prompt, options) => {
33
- const modelParams = {
34
- temperature: options.temperature,
35
- maxTokens: options.maxTokens,
36
- topP: options.topP,
37
- frequencyPenalty: options.frequencyPenalty,
38
- presencePenalty: options.presencePenalty,
39
- stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
40
- seed: options.seed
41
- };
42
- const performRequest = async () => {
43
- try {
44
- const model = options.model || openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o');
45
- const streamOptions = {
46
- model,
47
- output: 'array',
48
- schema: z.string(),
49
- prompt: `Generate a list of items based on this prompt: ${prompt}`,
50
- system: options.system,
51
- ...modelParams
52
- };
53
- const { elementStream } = streamObject(streamOptions);
54
- const elements = [];
55
- for await (const item of elementStream) {
56
- elements.push(item);
57
- }
58
- return elements.join('\n');
59
- }
60
- catch (error) {
61
- if (error instanceof Error) {
62
- throw error;
63
- }
64
- throw new Error('Failed to generate list');
65
- }
66
- };
67
- const queue = getQueue(options);
68
- const result = queue
69
- ? await queue.add(performRequest)
70
- : await performRequest();
71
- return result;
72
- };
73
- const executeStreamingRequest = async function* (prompt, options) {
74
- const modelParams = {
75
- temperature: options.temperature,
76
- maxTokens: options.maxTokens,
77
- topP: options.topP,
78
- frequencyPenalty: options.frequencyPenalty,
79
- presencePenalty: options.presencePenalty,
80
- stopSequences: options.stop ? Array.isArray(options.stop) ? options.stop : [options.stop] : undefined,
81
- seed: options.seed
82
- };
83
- const performRequest = async function* () {
84
- try {
85
- const model = options.model || openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o');
86
- const streamOptions = {
87
- model,
88
- output: 'array',
89
- schema: z.string(),
90
- prompt: `Generate a list of items based on this prompt: ${prompt}`,
91
- system: options.system,
92
- ...modelParams
93
- };
94
- const { elementStream } = streamObject(streamOptions);
95
- for await (const item of elementStream) {
96
- yield item;
97
- }
98
- }
99
- catch (error) {
100
- if (error instanceof Error) {
101
- if (error.name === 'AbortError') {
102
- throw new Error('Stream was aborted');
103
- }
104
- else if (error.name === 'TimeoutError') {
105
- throw new Error('Stream timed out');
106
- }
107
- else {
108
- throw error;
109
- }
110
- }
111
- throw new Error('Failed to generate list: Unknown error occurred');
112
- }
113
- };
114
- const queue = getQueue(options);
115
- if (queue) {
116
- const operation = performRequest();
117
- // Queue the operation based on its type
118
- if (operation[Symbol.asyncIterator]) {
119
- // For AsyncGenerator, queue each value
120
- for await (const value of operation) {
121
- yield await queue.add(async () => value);
122
- }
123
- }
124
- else {
125
- // For Promise, queue the entire operation
126
- yield await queue.add(async () => {
127
- const result = await operation;
128
- return result;
129
- });
130
- }
131
- }
132
- else {
133
- yield* performRequest();
134
- }
135
- };
136
- const templateFn = async (prompt, options = defaultOptions) => {
137
- currentPrompt = prompt;
138
- const mergedOptions = { ...defaultOptions, ...options };
139
- try {
140
- return await executeRequest(prompt, mergedOptions);
141
- }
142
- catch (error) {
143
- if (error instanceof Error) {
144
- throw error;
145
- }
146
- throw new Error('Failed to generate list');
147
- }
148
- };
149
- const asyncIterator = async function* (prompt, options = defaultOptions) {
150
- currentPrompt = prompt;
151
- const mergedOptions = { ...defaultOptions, ...options };
152
- try {
153
- for await (const item of executeStreamingRequest(prompt, mergedOptions)) {
154
- yield item;
155
- }
156
- }
157
- catch (error) {
158
- if (error instanceof Error) {
159
- throw error;
160
- }
161
- throw new Error('Failed to generate list');
162
- }
163
- };
164
- function createTemplateResult(prompt, options) {
165
- const promise = templateFn(prompt, options);
166
- const result = Object.assign((opts) => templateFn(prompt, { ...options, ...opts }), {
167
- [Symbol.asyncIterator]: () => asyncIterator(prompt, options),
168
- call: (opts) => templateFn(prompt, { ...options, ...opts }),
169
- then: promise.then.bind(promise),
170
- catch: promise.catch.bind(promise),
171
- finally: promise.finally.bind(promise),
172
- });
173
- return result;
174
- }
175
- function createBaseFunction() {
176
- function fn(stringsOrOptions, ...values) {
177
- if (!stringsOrOptions) {
178
- return createTemplateResult('', defaultOptions);
179
- }
180
- if (Array.isArray(stringsOrOptions)) {
181
- const strings = stringsOrOptions;
182
- if (strings.length - 1 !== values.length) {
183
- throw new Error('Template literal slots must match provided values');
184
- }
185
- const lastValue = values[values.length - 1];
186
- const options = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
187
- ? { ...defaultOptions, ...lastValue }
188
- : defaultOptions;
189
- const actualValues = typeof lastValue === 'object' && !Array.isArray(lastValue) && lastValue !== null
190
- ? values.slice(0, -1)
191
- : values;
192
- const prompt = strings.reduce((acc, str, i) => acc + str + (actualValues[i] || ''), '');
193
- currentPrompt = prompt;
194
- return createTemplateResult(prompt, options);
195
- }
196
- const options = { ...defaultOptions, ...stringsOrOptions };
197
- return createTemplateResult('', options);
198
- }
199
- // Add the asyncIterator to the base function
200
- Object.defineProperty(fn, Symbol.asyncIterator, {
201
- value: () => asyncIterator(currentPrompt || '', defaultOptions),
202
- enumerable: false,
203
- configurable: true
204
- });
205
- // Add the withOptions method
206
- Object.defineProperty(fn, 'withOptions', {
207
- value: (opts) => templateFn(currentPrompt || '', { ...defaultOptions, ...opts }),
208
- enumerable: false,
209
- configurable: true
210
- });
211
- // Add the queue property
212
- Object.defineProperty(fn, 'queue', {
213
- get: () => currentQueue,
214
- enumerable: false,
215
- configurable: true
216
- });
217
- return fn;
218
- }
219
- return createBaseFunction();
220
- }
221
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/factory/list.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/list.test.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- import { describe, expect, it, beforeEach } from 'vitest';
2
- import { createListFunction } from './list';
3
- import { openai } from '@ai-sdk/openai';
4
- describe('List Function', () => {
5
- beforeEach(() => {
6
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
7
- });
8
- const model = openai('gpt-4o-mini');
9
- describe('Template Literals', () => {
10
- it('should generate list using template literal', async () => {
11
- const list = createListFunction();
12
- const result = await list `fun things to do in Miami`({ model });
13
- expect(result).toBeDefined();
14
- const items = result.split('\n');
15
- expect(items.length).toBeGreaterThan(0);
16
- items.forEach(item => expect(typeof item).toBe('string'));
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`({ model })) {
22
- items.push(item);
23
- }
24
- expect(items.length).toBeGreaterThan(0);
25
- items.forEach(item => expect(typeof item).toBe('string'));
26
- });
27
- it('should support interpolation', async () => {
28
- const list = createListFunction();
29
- const city = 'Paris';
30
- const category = 'museums';
31
- const result = await list `top ${category} to visit in ${city}`({ model });
32
- expect(result).toContain('Louvre');
33
- });
34
- });
35
- describe('Configuration', () => {
36
- it('should support system prompts', async () => {
37
- const list = createListFunction();
38
- const result = await list `fun things to do in Miami`({
39
- model,
40
- system: 'You are an expert tour guide',
41
- temperature: 0.2
42
- });
43
- expect(result).toBeDefined();
44
- expect(result.split('\n').length).toBeGreaterThan(0);
45
- });
46
- it('should support concurrency for multiple lists', async () => {
47
- const list = createListFunction();
48
- const cities = ['Paris', 'London', 'Tokyo'];
49
- const results = await Promise.all(cities.map(city => list `top attractions in ${city}`({ model, concurrency: 2 })));
50
- expect(results).toHaveLength(3);
51
- results.forEach(result => {
52
- expect(result.split('\n').length).toBeGreaterThan(0);
53
- });
54
- });
55
- });
56
- describe('Streaming', () => {
57
- it('should stream list items', async () => {
58
- const list = createListFunction();
59
- const items = [];
60
- const progressItems = [];
61
- for await (const item of list `fun things to do in Miami`({
62
- model,
63
- streaming: {
64
- onProgress: chunk => progressItems.push(chunk)
65
- }
66
- })) {
67
- items.push(item);
68
- }
69
- expect(items.length).toBeGreaterThan(0);
70
- expect(progressItems.length).toBeGreaterThan(0);
71
- });
72
- it('should handle streaming errors gracefully', async () => {
73
- const list = createListFunction();
74
- await expect(async () => {
75
- for await (const item of list `fun things to do in Miami`({
76
- model: undefined // Force an error
77
- })) {
78
- console.log(item);
79
- }
80
- }).rejects.toThrow();
81
- });
82
- });
83
- });
84
- //# sourceMappingURL=list.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../src/factory/list.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { GenerateObjectOptions, SimpleSchema } from '@/types';
2
- export declare function generateObject<T extends SimpleSchema>(options: GenerateObjectOptions<T>): Promise<import("ai").GenerateObjectResult<{
3
- [x: string]: any;
4
- }>>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAElE,wBAAsB,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC;;IAa7F"}
@@ -1,17 +0,0 @@
1
- import { generateObject as aiGenerateObject } from 'ai';
2
- import { convertToZodSchema, convertToOpenAIModel } from '@/converters';
3
- import { validateSchema } from '@/utils';
4
- export async function generateObject(options) {
5
- validateSchema(options.schema);
6
- const zodSchema = convertToZodSchema(options.schema);
7
- const model = options.model ? convertToOpenAIModel(options.model) : convertToOpenAIModel('gpt-4-turbo');
8
- return aiGenerateObject({
9
- ...options,
10
- model,
11
- schema: zodSchema,
12
- temperature: options.temperature ?? 0.7,
13
- maxTokens: options.maxTokens ?? 1000,
14
- seed: typeof options.seed === 'number' ? options.seed : undefined
15
- });
16
- }
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGxC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAyB,OAAiC;IAC5F,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAEvG,OAAO,gBAAgB,CAAC;QACtB,GAAG,OAAO;QACV,KAAK;QACL,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;QACvC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAA;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
@@ -1,59 +0,0 @@
1
- import { describe, expect, it, beforeEach } from 'vitest';
2
- import { ai } from './index';
3
- import { z } from 'zod';
4
- import { openai } from '@ai-sdk/openai';
5
- describe('ai template tag', () => {
6
- beforeEach(() => {
7
- process.env.OPENAI_API_KEY = process.env.OPENAI_API_KEY || 'test-key';
8
- });
9
- const model = openai(process.env.OPENAI_DEFAULT_MODEL || 'gpt-4o', { structuredOutputs: true });
10
- it('should support basic template literals', async () => {
11
- const name = 'World';
12
- const result = await ai `Hello ${name}`({ model });
13
- expect(typeof result).toBe('string');
14
- expect(result.length).toBeGreaterThan(0);
15
- });
16
- it('should support configuration object', async () => {
17
- const name = 'World';
18
- const result = await ai `Hello ${name}`({ model });
19
- expect(typeof result).toBe('string');
20
- expect(result.length).toBeGreaterThan(0);
21
- });
22
- it('should support JSON output with schema', async () => {
23
- const schema = z.object({
24
- greeting: z.string(),
25
- timestamp: z.number(),
26
- });
27
- const result = await ai `Generate a greeting with the current timestamp`({
28
- model,
29
- outputFormat: 'json',
30
- schema
31
- });
32
- const parsed = schema.parse(JSON.parse(result));
33
- expect(parsed).toBeDefined();
34
- expect(typeof parsed.greeting).toBe('string');
35
- expect(typeof parsed.timestamp).toBe('number');
36
- });
37
- it('should support streaming responses', async () => {
38
- const streamingModel = openai('gpt-4o', {
39
- structuredOutputs: true
40
- });
41
- const response = ai `List some items`({
42
- model: streamingModel,
43
- outputFormat: 'json',
44
- schema: z.array(z.string()),
45
- streaming: {
46
- onProgress: () => { },
47
- enableTokenCounting: true
48
- }
49
- });
50
- expect(response[Symbol.asyncIterator]).toBeDefined();
51
- const chunks = [];
52
- for await (const chunk of response) {
53
- chunks.push(chunk);
54
- }
55
- expect(chunks.length).toBeGreaterThan(0);
56
- expect(JSON.parse(chunks.join(''))).toBeInstanceOf(Array);
57
- });
58
- });
59
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,QAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/F,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,OAAO,CAAA;QACpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA,SAAS,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,OAAO,CAAA;QACpB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA,SAAS,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;SACtB,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA,gDAAgD,CAAC;YACtE,KAAK;YACL,YAAY,EAAE,MAAM;YACpB,MAAM;SACP,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5B,MAAM,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE;YACtC,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,EAAE,CAAA,iBAAiB,CAAC;YACnC,KAAK,EAAE,cAAc;YACrB,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC3B,SAAS,EAAE;gBACT,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;gBACpB,mBAAmB,EAAE,IAAI;aAC1B;SACF,CAAiC,CAAA;QAElC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACpD,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { ListAwaitFunction, ListOptions } from './types';
2
- export declare const createListAwait: (options: ListOptions) => ListAwaitFunction;
3
- //# sourceMappingURL=await.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"await.d.ts","sourceRoot":"","sources":["../../src/list/await.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,eAAO,MAAM,eAAe,YAAa,WAAW,KAAG,iBAuBtD,CAAA"}
@@ -1,28 +0,0 @@
1
- import { generateObject } from 'ai';
2
- import { convertToOpenAIModel } from '@/converters';
3
- import { DEFAULT_LIST_OPTIONS } from './constants';
4
- import { generateListPrompt } from './prompt';
5
- import { createArraySchema } from './schemas';
6
- export const createListAwait = (options) => {
7
- return async function listAwait(strings, ...values) {
8
- const prompt = generateListPrompt(strings, ...values);
9
- const model = convertToOpenAIModel(options.model || DEFAULT_LIST_OPTIONS.model);
10
- const schema = createArraySchema();
11
- const { object } = await generateObject({
12
- model,
13
- schema,
14
- prompt,
15
- system: options.system,
16
- seed: options.seed,
17
- temperature: 0.7,
18
- maxTokens: 2000, // Increased for better completion
19
- retry: {
20
- attempts: 3,
21
- delay: 1000,
22
- factor: 2 // Exponential backoff
23
- }
24
- });
25
- return object.items || [];
26
- };
27
- };
28
- //# sourceMappingURL=await.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"await.js","sourceRoot":"","sources":["../../src/list/await.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAqB,EAAE;IACzE,OAAO,KAAK,UAAU,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM;QAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC/E,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;QAElC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC;YACtC,KAAK;YACL,MAAM;YACN,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,IAAI,EAAE,kCAAkC;YACnD,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,CAAC,CAAC,sBAAsB;aACjC;SACF,CAAC,CAAA;QAEF,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IAC3B,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- export declare const DEFAULT_LIST_OPTIONS: {
2
- readonly model: "gpt-4o";
3
- };
4
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/list/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;CAEvB,CAAA"}
@@ -1,5 +0,0 @@
1
- import { MODELS } from '../constants/models';
2
- export const DEFAULT_LIST_OPTIONS = {
3
- model: MODELS.BEST
4
- };
5
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/list/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC,IAAI;CACV,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { ListFunction, ListOptions } from './types';
2
- export declare function createListFunction(options?: ListOptions): ListFunction;
3
- //# sourceMappingURL=create-function.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-function.d.ts","sourceRoot":"","sources":["../../src/list/create-function.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,WAAkC,GAAG,YAAY,CAK5F"}
@@ -1,11 +0,0 @@
1
- import { validateListOptions } from './validation';
2
- import { createListStream } from './stream';
3
- import { createListAwait } from './await';
4
- import { DEFAULT_LIST_OPTIONS } from './constants';
5
- export function createListFunction(options = DEFAULT_LIST_OPTIONS) {
6
- validateListOptions(options);
7
- const listStream = createListStream(options);
8
- const listAwait = createListAwait(options);
9
- return Object.assign(listStream, { await: listAwait });
10
- }
11
- //# sourceMappingURL=create-function.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-function.js","sourceRoot":"","sources":["../../src/list/create-function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAGlD,MAAM,UAAU,kBAAkB,CAAC,UAAuB,oBAAoB;IAC5E,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AACxD,CAAC"}
@@ -1,4 +0,0 @@
1
- import { createListFunction } from './create-function';
2
- export declare const list: ListFunction;
3
- export { createListFunction };
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,IAAI,cAA2C,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -1,5 +0,0 @@
1
- import { createListFunction } from './create-function';
2
- import { DEFAULT_LIST_OPTIONS } from './constants';
3
- export const list = createListFunction(DEFAULT_LIST_OPTIONS);
4
- export { createListFunction };
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -1,3 +0,0 @@
1
- import { ListPromptGenerator } from './types';
2
- export declare const generateListPrompt: ListPromptGenerator;
3
- //# sourceMappingURL=prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/list/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE7C,eAAO,MAAM,kBAAkB,EAAE,mBAIhC,CAAA"}
@@ -1,6 +0,0 @@
1
- export const generateListPrompt = (strings, ...values) => {
2
- return Array.isArray(strings)
3
- ? strings.join('')
4
- : String.raw({ raw: strings }, ...values);
5
- };
6
- //# sourceMappingURL=prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/list/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAwB,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAA;AAC7C,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import { ListSchema, ListArraySchema } from './types';
2
- export declare const createStreamSchema: () => ListSchema;
3
- export declare const createArraySchema: () => ListArraySchema;
4
- //# sourceMappingURL=schemas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/list/schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAErD,eAAO,MAAM,kBAAkB,QAAO,UAGlC,CAAA;AAEJ,eAAO,MAAM,iBAAiB,QAAO,eAKjC,CAAA"}
@@ -1,8 +0,0 @@
1
- import { z } from 'zod';
2
- export const createStreamSchema = () => z.object({
3
- item: z.string().describe('A single item from the requested list')
4
- });
5
- export const createArraySchema = () => z.object({
6
- items: z.array(z.string().describe('An item from the requested list')).describe('List of requested items')
7
- });
8
- //# sourceMappingURL=schemas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/list/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAe,EAAE,CACjD,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACnE,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAoB,EAAE,CACrD,CAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CACvD,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACtC,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { ListStreamFunction, ListOptions } from './types';
2
- export declare const createListStream: (options: ListOptions) => ListStreamFunction;
3
- //# sourceMappingURL=stream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/list/stream.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE9D,eAAO,MAAM,gBAAgB,YAAa,WAAW,KAAG,kBA4BvD,CAAA"}