ai-functions 0.3.0 → 2.0.1

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 (432) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -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/rpc/auth.d.ts +69 -0
  90. package/dist/rpc/auth.d.ts.map +1 -0
  91. package/dist/rpc/auth.js +136 -0
  92. package/dist/rpc/auth.js.map +1 -0
  93. package/dist/rpc/client.d.ts +62 -0
  94. package/dist/rpc/client.d.ts.map +1 -0
  95. package/dist/rpc/client.js +103 -0
  96. package/dist/rpc/client.js.map +1 -0
  97. package/dist/rpc/deferred.d.ts +60 -0
  98. package/dist/rpc/deferred.d.ts.map +1 -0
  99. package/dist/rpc/deferred.js +96 -0
  100. package/dist/rpc/deferred.js.map +1 -0
  101. package/dist/rpc/index.d.ts +22 -0
  102. package/dist/rpc/index.d.ts.map +1 -0
  103. package/dist/rpc/index.js +38 -0
  104. package/dist/rpc/index.js.map +1 -0
  105. package/dist/rpc/local.d.ts +42 -0
  106. package/dist/rpc/local.d.ts.map +1 -0
  107. package/dist/rpc/local.js +50 -0
  108. package/dist/rpc/local.js.map +1 -0
  109. package/dist/rpc/server.d.ts +165 -0
  110. package/dist/rpc/server.d.ts.map +1 -0
  111. package/dist/rpc/server.js +405 -0
  112. package/dist/rpc/server.js.map +1 -0
  113. package/dist/rpc/session.d.ts +32 -0
  114. package/dist/rpc/session.d.ts.map +1 -0
  115. package/dist/rpc/session.js +43 -0
  116. package/dist/rpc/session.js.map +1 -0
  117. package/dist/rpc/transport.d.ts +306 -0
  118. package/dist/rpc/transport.d.ts.map +1 -0
  119. package/dist/rpc/transport.js +731 -0
  120. package/dist/rpc/transport.js.map +1 -0
  121. package/dist/schema.d.ts +54 -0
  122. package/dist/schema.d.ts.map +1 -0
  123. package/dist/schema.js +109 -0
  124. package/dist/schema.js.map +1 -0
  125. package/dist/template.d.ts +73 -0
  126. package/dist/template.d.ts.map +1 -0
  127. package/dist/template.js +129 -0
  128. package/dist/template.js.map +1 -0
  129. package/dist/types.d.ts +474 -106
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +4 -8
  132. package/dist/types.js.map +1 -1
  133. package/evalite.config.ts +19 -0
  134. package/evals/README.md +212 -0
  135. package/evals/classification.eval.ts +108 -0
  136. package/evals/marketing.eval.ts +370 -0
  137. package/evals/math.eval.ts +94 -0
  138. package/evals/run-evals.ts +166 -0
  139. package/evals/structured-output.eval.ts +143 -0
  140. package/evals/writing.eval.ts +117 -0
  141. package/examples/batch-blog-posts.ts +160 -0
  142. package/package.json +57 -57
  143. package/src/ai-promise.ts +784 -0
  144. package/src/ai.ts +1183 -0
  145. package/src/batch/anthropic.ts +375 -0
  146. package/src/batch/bedrock.ts +801 -0
  147. package/src/batch/cloudflare.ts +421 -0
  148. package/src/batch/google.ts +491 -0
  149. package/src/batch/index.ts +31 -0
  150. package/src/batch/memory.ts +253 -0
  151. package/src/batch/openai.ts +557 -0
  152. package/src/batch-map.ts +534 -0
  153. package/src/batch-queue.ts +493 -0
  154. package/src/context.ts +332 -0
  155. package/src/embeddings.ts +244 -0
  156. package/src/eval/index.ts +8 -0
  157. package/src/eval/models.ts +158 -0
  158. package/src/eval/runner.ts +217 -0
  159. package/src/generate.ts +245 -0
  160. package/src/index.ts +154 -0
  161. package/src/primitives.ts +612 -0
  162. package/src/providers/cloudflare.ts +15 -0
  163. package/src/providers/index.ts +14 -0
  164. package/src/schema.ts +147 -0
  165. package/src/template.ts +209 -0
  166. package/src/types.ts +540 -0
  167. package/test/README.md +105 -0
  168. package/test/ai-proxy.test.ts +192 -0
  169. package/test/async-iterators.test.ts +327 -0
  170. package/test/batch-background.test.ts +482 -0
  171. package/test/batch-blog-posts.test.ts +387 -0
  172. package/test/blog-generation.test.ts +510 -0
  173. package/test/browse-read.test.ts +611 -0
  174. package/test/core-functions.test.ts +694 -0
  175. package/test/decide.test.ts +393 -0
  176. package/test/define.test.ts +274 -0
  177. package/test/e2e-bedrock-manual.ts +163 -0
  178. package/test/e2e-bedrock.test.ts +191 -0
  179. package/test/e2e-flex-gateway.ts +157 -0
  180. package/test/e2e-flex-manual.ts +183 -0
  181. package/test/e2e-flex.test.ts +209 -0
  182. package/test/e2e-google-manual.ts +178 -0
  183. package/test/e2e-google.test.ts +216 -0
  184. package/test/embeddings.test.ts +284 -0
  185. package/test/evals/define-function.eval.test.ts +379 -0
  186. package/test/evals/primitives.eval.test.ts +384 -0
  187. package/test/function-types.test.ts +492 -0
  188. package/test/generate-core.test.ts +319 -0
  189. package/test/generate.test.ts +163 -0
  190. package/test/implicit-batch.test.ts +422 -0
  191. package/test/schema.test.ts +109 -0
  192. package/test/tagged-templates.test.ts +302 -0
  193. package/tsconfig.json +10 -0
  194. package/vitest.config.ts +42 -0
  195. package/LICENSE +0 -21
  196. package/bin/cli.js +0 -5
  197. package/dist/cli/index.d.ts +0 -10
  198. package/dist/cli/index.d.ts.map +0 -1
  199. package/dist/cli/index.js +0 -38
  200. package/dist/cli/index.js.map +0 -1
  201. package/dist/cli/index.test.d.ts +0 -2
  202. package/dist/cli/index.test.d.ts.map +0 -1
  203. package/dist/cli/index.test.js +0 -35
  204. package/dist/cli/index.test.js.map +0 -1
  205. package/dist/constants/models.d.ts +0 -10
  206. package/dist/constants/models.d.ts.map +0 -1
  207. package/dist/constants/models.js +0 -12
  208. package/dist/constants/models.js.map +0 -1
  209. package/dist/converters/index.d.ts +0 -3
  210. package/dist/converters/index.d.ts.map +0 -1
  211. package/dist/converters/index.js +0 -3
  212. package/dist/converters/index.js.map +0 -1
  213. package/dist/converters/model.d.ts +0 -4
  214. package/dist/converters/model.d.ts.map +0 -1
  215. package/dist/converters/model.js +0 -19
  216. package/dist/converters/model.js.map +0 -1
  217. package/dist/converters/schema.d.ts +0 -4
  218. package/dist/converters/schema.d.ts.map +0 -1
  219. package/dist/converters/schema.js +0 -25
  220. package/dist/converters/schema.js.map +0 -1
  221. package/dist/core/responses.d.ts +0 -5
  222. package/dist/core/responses.d.ts.map +0 -1
  223. package/dist/core/responses.js +0 -16
  224. package/dist/core/responses.js.map +0 -1
  225. package/dist/core/responses.test.d.ts +0 -2
  226. package/dist/core/responses.test.d.ts.map +0 -1
  227. package/dist/core/responses.test.js +0 -31
  228. package/dist/core/responses.test.js.map +0 -1
  229. package/dist/errors.d.ts +0 -6
  230. package/dist/errors.d.ts.map +0 -1
  231. package/dist/errors.js +0 -9
  232. package/dist/errors.js.map +0 -1
  233. package/dist/examples/streaming.test.d.ts +0 -2
  234. package/dist/examples/streaming.test.d.ts.map +0 -1
  235. package/dist/examples/streaming.test.js +0 -176
  236. package/dist/examples/streaming.test.js.map +0 -1
  237. package/dist/factory/__tests__/index.test.d.ts +0 -2
  238. package/dist/factory/__tests__/index.test.d.ts.map +0 -1
  239. package/dist/factory/__tests__/index.test.js +0 -430
  240. package/dist/factory/__tests__/index.test.js.map +0 -1
  241. package/dist/factory/__tests__/list.test.d.ts +0 -2
  242. package/dist/factory/__tests__/list.test.d.ts.map +0 -1
  243. package/dist/factory/__tests__/list.test.js +0 -92
  244. package/dist/factory/__tests__/list.test.js.map +0 -1
  245. package/dist/factory/index.d.ts +0 -20
  246. package/dist/factory/index.d.ts.map +0 -1
  247. package/dist/factory/index.js +0 -287
  248. package/dist/factory/index.js.map +0 -1
  249. package/dist/factory/index.test.d.ts +0 -2
  250. package/dist/factory/index.test.d.ts.map +0 -1
  251. package/dist/factory/index.test.js +0 -287
  252. package/dist/factory/index.test.js.map +0 -1
  253. package/dist/factory/list.d.ts +0 -3
  254. package/dist/factory/list.d.ts.map +0 -1
  255. package/dist/factory/list.js +0 -221
  256. package/dist/factory/list.js.map +0 -1
  257. package/dist/factory/list.test.d.ts +0 -2
  258. package/dist/factory/list.test.d.ts.map +0 -1
  259. package/dist/factory/list.test.js +0 -84
  260. package/dist/factory/list.test.js.map +0 -1
  261. package/dist/generate/index.d.ts +0 -5
  262. package/dist/generate/index.d.ts.map +0 -1
  263. package/dist/generate/index.js +0 -17
  264. package/dist/generate/index.js.map +0 -1
  265. package/dist/index.test.d.ts +0 -2
  266. package/dist/index.test.d.ts.map +0 -1
  267. package/dist/index.test.js +0 -59
  268. package/dist/index.test.js.map +0 -1
  269. package/dist/list/await.d.ts +0 -3
  270. package/dist/list/await.d.ts.map +0 -1
  271. package/dist/list/await.js +0 -28
  272. package/dist/list/await.js.map +0 -1
  273. package/dist/list/constants.d.ts +0 -4
  274. package/dist/list/constants.d.ts.map +0 -1
  275. package/dist/list/constants.js +0 -5
  276. package/dist/list/constants.js.map +0 -1
  277. package/dist/list/create-function.d.ts +0 -3
  278. package/dist/list/create-function.d.ts.map +0 -1
  279. package/dist/list/create-function.js +0 -11
  280. package/dist/list/create-function.js.map +0 -1
  281. package/dist/list/index.d.ts +0 -4
  282. package/dist/list/index.d.ts.map +0 -1
  283. package/dist/list/index.js +0 -5
  284. package/dist/list/index.js.map +0 -1
  285. package/dist/list/prompt.d.ts +0 -3
  286. package/dist/list/prompt.d.ts.map +0 -1
  287. package/dist/list/prompt.js +0 -6
  288. package/dist/list/prompt.js.map +0 -1
  289. package/dist/list/schemas.d.ts +0 -4
  290. package/dist/list/schemas.d.ts.map +0 -1
  291. package/dist/list/schemas.js +0 -8
  292. package/dist/list/schemas.js.map +0 -1
  293. package/dist/list/stream.d.ts +0 -3
  294. package/dist/list/stream.d.ts.map +0 -1
  295. package/dist/list/stream.js +0 -33
  296. package/dist/list/stream.js.map +0 -1
  297. package/dist/list/types.d.ts +0 -11
  298. package/dist/list/types.d.ts.map +0 -1
  299. package/dist/list/types.js +0 -2
  300. package/dist/list/types.js.map +0 -1
  301. package/dist/list/validation.d.ts +0 -3
  302. package/dist/list/validation.d.ts.map +0 -1
  303. package/dist/list/validation.js +0 -12
  304. package/dist/list/validation.js.map +0 -1
  305. package/dist/providers/config.d.ts +0 -4
  306. package/dist/providers/config.d.ts.map +0 -1
  307. package/dist/providers/config.js +0 -21
  308. package/dist/providers/config.js.map +0 -1
  309. package/dist/providers/config.test.d.ts +0 -2
  310. package/dist/providers/config.test.d.ts.map +0 -1
  311. package/dist/providers/config.test.js +0 -37
  312. package/dist/providers/config.test.js.map +0 -1
  313. package/dist/proxy/constants.d.ts +0 -4
  314. package/dist/proxy/constants.d.ts.map +0 -1
  315. package/dist/proxy/constants.js +0 -5
  316. package/dist/proxy/constants.js.map +0 -1
  317. package/dist/proxy/create-function.d.ts +0 -4
  318. package/dist/proxy/create-function.d.ts.map +0 -1
  319. package/dist/proxy/create-function.js +0 -24
  320. package/dist/proxy/create-function.js.map +0 -1
  321. package/dist/proxy/create-proxy.d.ts +0 -2
  322. package/dist/proxy/create-proxy.d.ts.map +0 -1
  323. package/dist/proxy/create-proxy.js +0 -11
  324. package/dist/proxy/create-proxy.js.map +0 -1
  325. package/dist/proxy/function-generator.d.ts +0 -9
  326. package/dist/proxy/function-generator.d.ts.map +0 -1
  327. package/dist/proxy/function-generator.js +0 -29
  328. package/dist/proxy/function-generator.js.map +0 -1
  329. package/dist/proxy/index.d.ts +0 -4
  330. package/dist/proxy/index.d.ts.map +0 -1
  331. package/dist/proxy/index.js +0 -4
  332. package/dist/proxy/index.js.map +0 -1
  333. package/dist/proxy/prompt.d.ts +0 -2
  334. package/dist/proxy/prompt.d.ts.map +0 -1
  335. package/dist/proxy/prompt.js +0 -6
  336. package/dist/proxy/prompt.js.map +0 -1
  337. package/dist/proxy/types.d.ts +0 -7
  338. package/dist/proxy/types.d.ts.map +0 -1
  339. package/dist/proxy/types.js +0 -2
  340. package/dist/proxy/types.js.map +0 -1
  341. package/dist/queue/manager.d.ts +0 -5
  342. package/dist/queue/manager.d.ts.map +0 -1
  343. package/dist/queue/manager.js +0 -37
  344. package/dist/queue/manager.js.map +0 -1
  345. package/dist/queue/manager.test.d.ts +0 -2
  346. package/dist/queue/manager.test.d.ts.map +0 -1
  347. package/dist/queue/manager.test.js +0 -52
  348. package/dist/queue/manager.test.js.map +0 -1
  349. package/dist/schema-converter.d.ts +0 -4
  350. package/dist/schema-converter.d.ts.map +0 -1
  351. package/dist/schema-converter.js +0 -30
  352. package/dist/schema-converter.js.map +0 -1
  353. package/dist/stream/index.d.ts +0 -7
  354. package/dist/stream/index.d.ts.map +0 -1
  355. package/dist/stream/index.js +0 -23
  356. package/dist/stream/index.js.map +0 -1
  357. package/dist/streaming/utils.d.ts +0 -4
  358. package/dist/streaming/utils.d.ts.map +0 -1
  359. package/dist/streaming/utils.js +0 -131
  360. package/dist/streaming/utils.js.map +0 -1
  361. package/dist/streaming/utils.test.d.ts +0 -2
  362. package/dist/streaming/utils.test.d.ts.map +0 -1
  363. package/dist/streaming/utils.test.js +0 -84
  364. package/dist/streaming/utils.test.js.map +0 -1
  365. package/dist/templates/result.d.ts +0 -7
  366. package/dist/templates/result.d.ts.map +0 -1
  367. package/dist/templates/result.js +0 -40
  368. package/dist/templates/result.js.map +0 -1
  369. package/dist/templates/result.test.d.ts +0 -2
  370. package/dist/templates/result.test.d.ts.map +0 -1
  371. package/dist/templates/result.test.js +0 -75
  372. package/dist/templates/result.test.js.map +0 -1
  373. package/dist/test/setup.d.ts +0 -2
  374. package/dist/test/setup.d.ts.map +0 -1
  375. package/dist/test/setup.js +0 -21
  376. package/dist/test/setup.js.map +0 -1
  377. package/dist/test-types.d.ts +0 -13
  378. package/dist/test-types.d.ts.map +0 -1
  379. package/dist/test-types.js +0 -55
  380. package/dist/test-types.js.map +0 -1
  381. package/dist/types/index.d.ts +0 -4
  382. package/dist/types/index.d.ts.map +0 -1
  383. package/dist/types/index.js +0 -4
  384. package/dist/types/index.js.map +0 -1
  385. package/dist/types/list.d.ts +0 -10
  386. package/dist/types/list.d.ts.map +0 -1
  387. package/dist/types/list.js +0 -2
  388. package/dist/types/list.js.map +0 -1
  389. package/dist/types/model.d.ts +0 -7
  390. package/dist/types/model.d.ts.map +0 -1
  391. package/dist/types/model.js +0 -2
  392. package/dist/types/model.js.map +0 -1
  393. package/dist/types/options.d.ts +0 -25
  394. package/dist/types/options.d.ts.map +0 -1
  395. package/dist/types/options.js +0 -2
  396. package/dist/types/options.js.map +0 -1
  397. package/dist/types/schema.d.ts +0 -5
  398. package/dist/types/schema.d.ts.map +0 -1
  399. package/dist/types/schema.js +0 -2
  400. package/dist/types/schema.js.map +0 -1
  401. package/dist/utils/__tests__/request-handler.test.d.ts +0 -2
  402. package/dist/utils/__tests__/request-handler.test.d.ts.map +0 -1
  403. package/dist/utils/__tests__/request-handler.test.js +0 -134
  404. package/dist/utils/__tests__/request-handler.test.js.map +0 -1
  405. package/dist/utils/__tests__/schema.test.d.ts +0 -2
  406. package/dist/utils/__tests__/schema.test.d.ts.map +0 -1
  407. package/dist/utils/__tests__/schema.test.js +0 -49
  408. package/dist/utils/__tests__/schema.test.js.map +0 -1
  409. package/dist/utils/__tests__/stream-progress.test.d.ts +0 -2
  410. package/dist/utils/__tests__/stream-progress.test.d.ts.map +0 -1
  411. package/dist/utils/__tests__/stream-progress.test.js +0 -85
  412. package/dist/utils/__tests__/stream-progress.test.js.map +0 -1
  413. package/dist/utils/index.d.ts +0 -2
  414. package/dist/utils/index.d.ts.map +0 -1
  415. package/dist/utils/index.js +0 -2
  416. package/dist/utils/index.js.map +0 -1
  417. package/dist/utils/request-handler.d.ts +0 -17
  418. package/dist/utils/request-handler.d.ts.map +0 -1
  419. package/dist/utils/request-handler.js +0 -105
  420. package/dist/utils/request-handler.js.map +0 -1
  421. package/dist/utils/schema.d.ts +0 -11
  422. package/dist/utils/schema.d.ts.map +0 -1
  423. package/dist/utils/schema.js +0 -51
  424. package/dist/utils/schema.js.map +0 -1
  425. package/dist/utils/stream-progress.d.ts +0 -17
  426. package/dist/utils/stream-progress.d.ts.map +0 -1
  427. package/dist/utils/stream-progress.js +0 -86
  428. package/dist/utils/stream-progress.js.map +0 -1
  429. package/dist/utils/validation.d.ts +0 -3
  430. package/dist/utils/validation.d.ts.map +0 -1
  431. package/dist/utils/validation.js +0 -30
  432. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,174 @@
1
+ /**
2
+ * AI Generation functions with automatic model resolution and routing
3
+ *
4
+ * Wraps AI SDK generateObject and generateText with smart model routing:
5
+ * - Simple aliases: 'opus', 'sonnet', 'gpt-4o'
6
+ * - Full IDs: 'anthropic/claude-sonnet-4.5'
7
+ * - Auto-routes to native SDKs for openai/anthropic/google
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { generateObject as sdkGenerateObject, generateText as sdkGenerateText, streamObject as sdkStreamObject, streamText as sdkStreamText } from 'ai';
12
+ import { schema as convertSchema } from './schema.js';
13
+ /**
14
+ * Resolve model string to LanguageModel instance
15
+ * Uses ai-providers for model routing with Cloudflare AI Gateway support
16
+ */
17
+ async function resolveModel(modelArg) {
18
+ // Already a LanguageModel instance
19
+ if (typeof modelArg !== 'string') {
20
+ return modelArg;
21
+ }
22
+ // Use ai-providers for model resolution
23
+ const { model } = await import('ai-providers');
24
+ return model(modelArg);
25
+ }
26
+ /**
27
+ * Check if value is a Zod schema
28
+ */
29
+ function isZodSchema(value) {
30
+ return value !== null &&
31
+ typeof value === 'object' &&
32
+ '_def' in value &&
33
+ 'parse' in value;
34
+ }
35
+ /**
36
+ * Convert schema to Zod if needed
37
+ */
38
+ function resolveSchema(schemaArg) {
39
+ if (isZodSchema(schemaArg)) {
40
+ return schemaArg;
41
+ }
42
+ return convertSchema(schemaArg);
43
+ }
44
+ /**
45
+ * Generate a typed object from a prompt using AI
46
+ *
47
+ * Automatically resolves model aliases and routes to the best provider.
48
+ * Supports both Zod schemas and simplified schema syntax.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { generateObject } from 'ai-functions'
53
+ *
54
+ * // Simplified schema syntax
55
+ * const { object } = await generateObject({
56
+ * model: 'sonnet',
57
+ * schema: {
58
+ * recipe: {
59
+ * name: 'What is the recipe name?',
60
+ * type: 'food | drink | dessert',
61
+ * ingredients: ['List all ingredients'],
62
+ * steps: ['List all cooking steps'],
63
+ * },
64
+ * },
65
+ * prompt: 'Generate a lasagna recipe.',
66
+ * })
67
+ *
68
+ * // Zod schema also works
69
+ * import { z } from 'zod'
70
+ * const { object } = await generateObject({
71
+ * model: 'sonnet',
72
+ * schema: z.object({
73
+ * name: z.string(),
74
+ * ingredients: z.array(z.string()),
75
+ * }),
76
+ * prompt: 'Generate a lasagna recipe.',
77
+ * })
78
+ * ```
79
+ */
80
+ export async function generateObject(options) {
81
+ const model = await resolveModel(options.model);
82
+ const schema = resolveSchema(options.schema);
83
+ // Use 'as any' to handle AI SDK v4 API variance
84
+ return sdkGenerateObject({
85
+ ...options,
86
+ model,
87
+ schema,
88
+ output: 'object'
89
+ });
90
+ }
91
+ /**
92
+ * Generate text from a prompt using AI
93
+ *
94
+ * Automatically resolves model aliases and routes to the best provider.
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * import { generateText } from 'ai-functions'
99
+ *
100
+ * const { text } = await generateText({
101
+ * model: 'opus', // → anthropic/claude-opus-4.5
102
+ * prompt: 'Write a haiku about programming.',
103
+ * })
104
+ *
105
+ * // With tools
106
+ * const { text, toolResults } = await generateText({
107
+ * model: 'gpt-4o', // → openai/gpt-4o
108
+ * prompt: 'What is the weather in San Francisco?',
109
+ * tools: { ... },
110
+ * maxSteps: 5,
111
+ * })
112
+ * ```
113
+ */
114
+ export async function generateText(options) {
115
+ const model = await resolveModel(options.model);
116
+ return sdkGenerateText({
117
+ ...options,
118
+ model
119
+ });
120
+ }
121
+ /**
122
+ * Stream a typed object from a prompt using AI
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { streamObject } from 'ai-functions'
127
+ *
128
+ * const { partialObjectStream } = streamObject({
129
+ * model: 'sonnet',
130
+ * schema: { story: 'Write a creative story' },
131
+ * prompt: 'Write a short story.',
132
+ * })
133
+ *
134
+ * for await (const partial of partialObjectStream) {
135
+ * console.log(partial.story)
136
+ * }
137
+ * ```
138
+ */
139
+ export async function streamObject(options) {
140
+ const model = await resolveModel(options.model);
141
+ const schema = resolveSchema(options.schema);
142
+ // Use 'as any' to handle AI SDK API variance
143
+ return sdkStreamObject({
144
+ ...options,
145
+ model,
146
+ schema,
147
+ output: 'object'
148
+ });
149
+ }
150
+ /**
151
+ * Stream text from a prompt using AI
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * import { streamText } from 'ai-functions'
156
+ *
157
+ * const { textStream } = streamText({
158
+ * model: 'gemini', // → google/gemini-2.5-flash
159
+ * prompt: 'Explain quantum computing.',
160
+ * })
161
+ *
162
+ * for await (const chunk of textStream) {
163
+ * process.stdout.write(chunk)
164
+ * }
165
+ * ```
166
+ */
167
+ export async function streamText(options) {
168
+ const model = await resolveModel(options.model);
169
+ return sdkStreamText({
170
+ ...options,
171
+ model
172
+ });
173
+ }
174
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,IAAI,iBAAiB,EACnC,YAAY,IAAI,eAAe,EAC/B,YAAY,IAAI,eAAe,EAC/B,UAAU,IAAI,aAAa,EAM5B,MAAM,IAAI,CAAA;AACX,OAAO,EAAE,MAAM,IAAI,aAAa,EAAqB,MAAM,aAAa,CAAA;AA+CxE;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC5C,mCAAmC;IACnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,wCAAwC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAA;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,KAAK,IAAI;QACnB,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACf,OAAO,IAAI,KAAK,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,SAAoB;IACzC,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,aAAa,CAAC,SAAyB,CAAC,CAAA;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAmB,CAAC,CAAA;IACzD,gDAAgD;IAChD,OAAO,iBAAiB,CAAC;QACvB,GAAG,OAAO;QACV,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;KACV,CAAqC,CAAA;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,eAAe,CAAC;QACrB,GAAG,OAAO;QACV,KAAK;KACmC,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAiC;IAEjC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAmB,CAAC,CAAA;IACzD,6CAA6C;IAC7C,OAAO,eAAe,CAAC;QACrB,GAAG,OAAO;QACV,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;KACV,CAA+C,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/C,OAAO,aAAa,CAAC;QACnB,GAAG,OAAO;QACV,KAAK;KACiC,CAAC,CAAA;AAC3C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,30 @@
1
- import { AI, ListFunction } from './types';
2
- export declare const ai: AI;
3
- export declare const list: ListFunction;
4
- export * from './types';
1
+ /**
2
+ * ai-functions - Core AI primitives for building intelligent applications
3
+ *
4
+ * This is the foundational package that all other primitives depend on.
5
+ * It provides:
6
+ * - RPC primitives via rpc.do
7
+ * - AI function types and interfaces
8
+ * - Core AI() and ai() constructors
9
+ * - Embedding utilities from AI SDK
10
+ * - Cloudflare Workers AI provider (default for embeddings)
11
+ * - Tagged template literal support for all functions
12
+ * - Async iterator support for list/extract
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ export * from 'rpc.do';
17
+ export * from './types.js';
18
+ export * from './ai.js';
19
+ export * from './embeddings.js';
20
+ export { generateObject, generateText, streamObject, streamText } from './generate.js';
21
+ export { schema, type SimpleSchema } from './schema.js';
22
+ export * from './providers/index.js';
23
+ export { parseTemplate, createTemplateFunction, createChainablePromise, createStreamableList, withBatch, type FunctionOptions, type TemplateFunction, type BatchableFunction, type StreamableList, type ChainablePromise, } from './template.js';
24
+ export { AIPromise, isAIPromise, getRawPromise, createTextPromise, createObjectPromise, createListPromise, createListsPromise, createBooleanPromise, createExtractPromise, createAITemplateFunction, parseTemplateWithDependencies, AI_PROMISE_SYMBOL, RAW_PROMISE_SYMBOL, type AIPromiseOptions, } from './ai-promise.js';
25
+ export { generate, type GenerateType, type GenerateOptions, ai as aiPrompt, // Renamed to avoid conflict with AIProxy from ai.ts
26
+ write, code, list, lists, extract, summarize, is, diagram, slides, image, video, do, research, read, browse, decide, ask, approve, review, type HumanOptions, type HumanResult, } from './primitives.js';
27
+ export { BatchQueue, createBatch, withBatch as withBatchQueue, registerBatchAdapter, getBatchAdapter, isBatchMode, deferToBatch, BATCH_MODE_SYMBOL, type BatchMode as BatchQueueMode, type BatchProvider, type BatchStatus, type BatchItem, type BatchJob, type BatchResult, type BatchSubmitResult, type BatchAdapter, type BatchQueueOptions, type DeferredOptions, } from './batch-queue.js';
28
+ export { BatchMapPromise, createBatchMap, isBatchMapPromise, BATCH_MAP_SYMBOL, type CapturedOperation, type BatchMapOptions, } from './batch-map.js';
29
+ export { configure, getContext, withContext, getGlobalContext, resetContext, getModel, getProvider, getBatchMode, getBatchThreshold, shouldUseBatchAPI, type ExecutionContext, type BatchMode, } from './context.js';
5
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,YAAY,EAA2D,MAAM,SAAS,CAAA;AA0DnG,eAAO,MAAM,EAAE,EAA4D,EAAE,CAAA;AAG7E,eAAO,MAAM,IAAI,EAA4C,YAAY,CAAA;AAGzE,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,cAAc,QAAQ,CAAA;AAGtB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAGvB,cAAc,iBAAiB,CAAA;AAG/B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGtF,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,cAAc,sBAAsB,CAAA;AAGpC,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAEL,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,eAAe,EAGpB,EAAE,IAAI,QAAQ,EAAE,oDAAoD;AACpE,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EAGL,EAAE,EACF,QAAQ,EAGR,IAAI,EACJ,MAAM,EAGN,MAAM,EAGN,GAAG,EACH,OAAO,EACP,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,IAAI,cAAc,EAC3B,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,KAAK,SAAS,IAAI,cAAc,EAChC,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -1,53 +1,54 @@
1
- import { createAIFunction, createTemplateFunction } from './factory';
2
- import { createListFunction } from './factory/list';
3
- import { z } from 'zod';
4
- // Create the main template function with async iteration support
5
- const templateFn = createTemplateFunction();
6
- // Create the list function with async iteration support
7
- const listFn = createListFunction();
8
- // Create the categorizeProduct function with proper schema
9
- const categorizeProduct = createAIFunction(z.object({
10
- productType: z.enum(['App', 'API', 'Marketplace', 'Platform', 'Packaged Service', 'Professional Service', 'Website']),
11
- customer: z.string().describe('ideal customer profile in 3-5 words'),
12
- solution: z.string().describe('describe the offer in 4-10 words'),
13
- description: z.string().describe('website meta description'),
14
- }));
15
- // Create the main AI object with template literal and async iteration support
16
- function isTemplateStringsArray(value) {
17
- return Array.isArray(value) && 'raw' in value;
18
- }
19
- function createWrappedTemplateFunction(baseFn) {
20
- const wrappedFn = function (stringsOrOptions, ...values) {
21
- if (!isTemplateStringsArray(stringsOrOptions)) {
22
- return baseFn(values.shift(), ...values, stringsOrOptions);
23
- }
24
- return baseFn(stringsOrOptions, ...values);
25
- };
26
- // Make wrappedFn async iterable by delegating to baseFn
27
- Object.defineProperty(wrappedFn, Symbol.asyncIterator, {
28
- value: function () {
29
- return baseFn[Symbol.asyncIterator]();
30
- },
31
- writable: true,
32
- configurable: true,
33
- });
34
- // Add withOptions method
35
- Object.defineProperty(wrappedFn, 'withOptions', {
36
- value: (opts) => baseFn.withOptions(opts),
37
- writable: true,
38
- configurable: true,
39
- });
40
- // Add queue property
41
- Object.defineProperty(wrappedFn, 'queue', {
42
- get: () => baseFn.queue,
43
- configurable: true,
44
- });
45
- return wrappedFn;
46
- }
47
- const aiFn = createWrappedTemplateFunction(templateFn);
48
- export const ai = Object.assign(aiFn, { categorizeProduct });
49
- // Create the list function with template literal and async iteration support
50
- export const list = createWrappedTemplateFunction(listFn);
51
- // Export types for consumers
52
- export * from './types';
1
+ /**
2
+ * ai-functions - Core AI primitives for building intelligent applications
3
+ *
4
+ * This is the foundational package that all other primitives depend on.
5
+ * It provides:
6
+ * - RPC primitives via rpc.do
7
+ * - AI function types and interfaces
8
+ * - Core AI() and ai() constructors
9
+ * - Embedding utilities from AI SDK
10
+ * - Cloudflare Workers AI provider (default for embeddings)
11
+ * - Tagged template literal support for all functions
12
+ * - Async iterator support for list/extract
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ // Re-export RPC primitives from rpc.do
17
+ export * from 'rpc.do';
18
+ // Export AI function types and interfaces
19
+ export * from './types.js';
20
+ export * from './ai.js';
21
+ // Export embedding utilities
22
+ export * from './embeddings.js';
23
+ // Export generation functions with smart model routing
24
+ export { generateObject, generateText, streamObject, streamText } from './generate.js';
25
+ // Export simplified schema helper
26
+ export { schema } from './schema.js';
27
+ // Export providers
28
+ export * from './providers/index.js';
29
+ // Export template utilities
30
+ export { parseTemplate, createTemplateFunction, createChainablePromise, createStreamableList, withBatch, } from './template.js';
31
+ // Export AIPromise utilities for promise pipelining
32
+ export { AIPromise, isAIPromise, getRawPromise, createTextPromise, createObjectPromise, createListPromise, createListsPromise, createBooleanPromise, createExtractPromise, createAITemplateFunction, parseTemplateWithDependencies, AI_PROMISE_SYMBOL, RAW_PROMISE_SYMBOL, } from './ai-promise.js';
33
+ // Export AI primitives
34
+ export {
35
+ // Core generate primitive
36
+ generate,
37
+ // Generative functions
38
+ ai as aiPrompt, // Renamed to avoid conflict with AIProxy from ai.ts
39
+ write, code, list, lists, extract, summarize, is, diagram, slides, image, video,
40
+ // Agentic functions
41
+ do, research,
42
+ // Web functions
43
+ read, browse,
44
+ // Decision functions
45
+ decide,
46
+ // Human-in-the-loop functions
47
+ ask, approve, review, } from './primitives.js';
48
+ // Export batch processing
49
+ export { BatchQueue, createBatch, withBatch as withBatchQueue, registerBatchAdapter, getBatchAdapter, isBatchMode, deferToBatch, BATCH_MODE_SYMBOL, } from './batch-queue.js';
50
+ // Export batch map for automatic batching
51
+ export { BatchMapPromise, createBatchMap, isBatchMapPromise, BATCH_MAP_SYMBOL, } from './batch-map.js';
52
+ // Export execution context
53
+ export { configure, getContext, withContext, getGlobalContext, resetContext, getModel, getProvider, getBatchMode, getBatchThreshold, shouldUseBatchAPI, } from './context.js';
53
54
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,iEAAiE;AACjE,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAA;AAE3C,wDAAwD;AACxD,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;AAEnC,2DAA2D;AAC3D,MAAM,iBAAiB,GAAG,gBAAgB,CACxC,CAAC,CAAC,MAAM,CAAC;IACP,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACrH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACpE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CAC7D,CAAC,CACH,CAAA;AAED,8EAA8E;AAC9E,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAA;AAC/C,CAAC;AAED,SAAS,6BAA6B,CAAC,MAA4B;IACjE,MAAM,SAAS,GAAG,UAAU,gBAA2D,EAAE,GAAG,MAAiB;QAC3G,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAA0B,EAAE,GAAG,MAAM,EAAE,gBAAgB,CAAC,CAAA;QACpF,CAAC;QACD,OAAO,MAAM,CAAC,gBAAgB,EAAE,GAAG,MAAM,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,wDAAwD;IACxD,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE;QACrD,KAAK,EAAE;YACL,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QACvC,CAAC;QACD,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,yBAAyB;IACzB,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE;QAC9C,KAAK,EAAE,CAAC,IAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAC7D,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,qBAAqB;IACrB,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE;QACxC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;QACvB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,OAAO,SAAiC,CAAA;AAC1C,CAAC;AAED,MAAM,IAAI,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,CAAkB,CAAA;AAE7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,IAAI,GAAG,6BAA6B,CAAC,MAAM,CAAiB,CAAA;AAEzE,6BAA6B;AAC7B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,uCAAuC;AACvC,cAAc,QAAQ,CAAA;AAEtB,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAEvB,6BAA6B;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,uDAAuD;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEtF,kCAAkC;AAClC,OAAO,EAAE,MAAM,EAAqB,MAAM,aAAa,CAAA;AAEvD,mBAAmB;AACnB,cAAc,sBAAsB,CAAA;AAEpC,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,GAMV,MAAM,eAAe,CAAA;AAEtB,oDAAoD;AACpD,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,iBAAiB,CAAA;AAExB,uBAAuB;AACvB,OAAO;AACL,0BAA0B;AAC1B,QAAQ;AAIR,uBAAuB;AACvB,EAAE,IAAI,QAAQ,EAAE,oDAAoD;AACpE,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,EAAE,EACF,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK;AAEL,oBAAoB;AACpB,EAAE,EACF,QAAQ;AAER,gBAAgB;AAChB,IAAI,EACJ,MAAM;AAEN,qBAAqB;AACrB,MAAM;AAEN,8BAA8B;AAC9B,GAAG,EACH,OAAO,EACP,MAAM,GAGP,MAAM,iBAAiB,CAAA;AAExB,0BAA0B;AAC1B,OAAO,EACL,UAAU,EACV,WAAW,EACX,SAAS,IAAI,cAAc,EAC3B,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,iBAAiB,GAWlB,MAAM,kBAAkB,CAAA;AAEzB,0CAA0C;AAC1C,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,gBAAgB,CAAA;AAEvB,2BAA2B;AAC3B,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAGlB,MAAM,cAAc,CAAA"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * AI Function Primitives with Promise Pipelining
3
+ *
4
+ * All functions return AIPromise for:
5
+ * - Dynamic schema inference from destructuring
6
+ * - Promise pipelining without await
7
+ * - Magical .map() for batch processing
8
+ * - Dependency graph resolution
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // No await needed until the end!
13
+ * const { summary, keyPoints, conclusion } = ai`write about ${topic}`
14
+ * const isValid = is`${conclusion} is solid given ${keyPoints}`
15
+ * const improved = ai`improve ${conclusion} using ${keyPoints}`
16
+ *
17
+ * // Batch processing with map
18
+ * const ideas = list`startup ideas`
19
+ * const evaluated = await ideas.map(idea => ({
20
+ * idea,
21
+ * viable: is`${idea} is viable`,
22
+ * market: ai`market size for ${idea}`,
23
+ * }))
24
+ *
25
+ * // Only await at the end
26
+ * if (await isValid) {
27
+ * console.log(await improved)
28
+ * }
29
+ * ```
30
+ *
31
+ * @packageDocumentation
32
+ */
33
+ import { AIPromise } from './ai-promise.js';
34
+ import type { SimpleSchema } from './schema.js';
35
+ import type { HumanChannel } from './types.js';
36
+ export type GenerateType = 'text' | 'json' | 'code' | 'list' | 'lists' | 'markdown' | 'yaml' | 'diagram' | 'slides' | 'boolean' | 'summary' | 'extract';
37
+ export interface GenerateOptions {
38
+ /** Model to use */
39
+ model?: string;
40
+ /** System prompt */
41
+ system?: string;
42
+ /** Temperature (0-2) */
43
+ temperature?: number;
44
+ /** Max tokens */
45
+ maxTokens?: number;
46
+ /** Schema for JSON output */
47
+ schema?: SimpleSchema;
48
+ /** Language for code generation */
49
+ language?: string;
50
+ /** Format for diagrams */
51
+ format?: 'mermaid' | 'svg' | 'ascii';
52
+ /** Number of slides for presentations */
53
+ slides?: number;
54
+ }
55
+ /**
56
+ * Core generate primitive - all other functions use this under the hood
57
+ */
58
+ export declare function generate(type: GenerateType, prompt: string, options?: GenerateOptions): Promise<unknown>;
59
+ /**
60
+ * General-purpose AI function with dynamic schema inference
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * // Simple text generation
65
+ * const text = await ai`write a poem about ${topic}`
66
+ *
67
+ * // Dynamic schema from destructuring - no await needed!
68
+ * const { summary, keyPoints, conclusion } = ai`write about ${topic}`
69
+ * console.log(await summary)
70
+ *
71
+ * // Chain with other functions
72
+ * const isValid = is`${conclusion} is solid`
73
+ * const improved = ai`improve ${conclusion}`
74
+ * ```
75
+ */
76
+ export declare const ai: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<unknown>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<unknown>);
77
+ /**
78
+ * Generate text content
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const post = await write`blog post about ${topic}`
83
+ * ```
84
+ */
85
+ export declare const write: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
86
+ /**
87
+ * Generate code
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * const code = await code`email validation function`
92
+ * ```
93
+ */
94
+ export declare const code: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
95
+ /**
96
+ * Generate a list of items with .map() support
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * // Simple list
101
+ * const ideas = await list`startup ideas`
102
+ *
103
+ * // With map - batch processes in ONE call!
104
+ * const evaluated = await list`startup ideas`.map(idea => ({
105
+ * idea,
106
+ * viable: is`${idea} is viable`,
107
+ * market: ai`market size for ${idea}`,
108
+ * }))
109
+ *
110
+ * // Async iteration
111
+ * for await (const idea of list`startup ideas`) {
112
+ * console.log(idea)
113
+ * }
114
+ * ```
115
+ */
116
+ export declare const list: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string[]>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string[]>);
117
+ /**
118
+ * Generate multiple named lists with dynamic schema
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * // Destructuring infers the schema!
123
+ * const { pros, cons } = await lists`pros and cons of ${topic}`
124
+ *
125
+ * // No await - pipeline with other functions
126
+ * const { benefits, risks, costs } = lists`analysis of ${project}`
127
+ * const summary = ai`summarize: benefits=${benefits}, risks=${risks}`
128
+ * console.log(await summary)
129
+ * ```
130
+ */
131
+ export declare const lists: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Record<string, string[]>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Record<string, string[]>>);
132
+ /**
133
+ * Extract structured data with dynamic schema
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * // Dynamic schema from destructuring
138
+ * const { name, email, phone } = await extract`contact info from ${document}`
139
+ *
140
+ * // As array
141
+ * const emails = await extract`email addresses from ${text}`
142
+ * ```
143
+ */
144
+ export declare const extract: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<unknown[]>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<unknown[]>);
145
+ /**
146
+ * Summarize text
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * const summary = await summarize`${longArticle}`
151
+ * ```
152
+ */
153
+ export declare const summarize: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
154
+ /**
155
+ * Check if something is true/false
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * // Simple check
160
+ * const isColor = await is`${topic} a color`
161
+ *
162
+ * // Pipeline - no await needed!
163
+ * const { conclusion } = ai`write about ${topic}`
164
+ * const isValid = is`${conclusion} is well-argued`
165
+ * if (await isValid) { ... }
166
+ * ```
167
+ */
168
+ export declare const is: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<boolean>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<boolean>);
169
+ /**
170
+ * Generate a diagram
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * const diagram = await diagram`user authentication flow`
175
+ * ```
176
+ */
177
+ export declare const diagram: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
178
+ /**
179
+ * Generate presentation slides
180
+ *
181
+ * @example
182
+ * ```ts
183
+ * const slides = await slides`quarterly review`
184
+ * ```
185
+ */
186
+ export declare const slides: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
187
+ /**
188
+ * Generate an image
189
+ */
190
+ export declare const image: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Buffer<ArrayBufferLike>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Buffer<ArrayBufferLike>>);
191
+ /**
192
+ * Generate a video
193
+ */
194
+ export declare const video: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<Buffer<ArrayBufferLike>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<Buffer<ArrayBufferLike>>);
195
+ /**
196
+ * Execute a task
197
+ *
198
+ * @example
199
+ * ```ts
200
+ * const { summary, actions } = await do`send welcome email to ${user}`
201
+ * ```
202
+ */
203
+ declare function doImpl(promptOrStrings: string | TemplateStringsArray, ...args: unknown[]): AIPromise<{
204
+ summary: string;
205
+ actions: string[];
206
+ }>;
207
+ export { doImpl as do };
208
+ /**
209
+ * Conduct research on a topic
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * const { summary, findings, sources } = await research`${competitor} vs our product`
214
+ * ```
215
+ */
216
+ export declare const research: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<{
217
+ summary: string;
218
+ findings: string[];
219
+ sources: string[];
220
+ }>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<{
221
+ summary: string;
222
+ findings: string[];
223
+ sources: string[];
224
+ }>);
225
+ /**
226
+ * Read a URL and convert to markdown
227
+ */
228
+ export declare const read: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<string>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<string>);
229
+ /**
230
+ * Browse a URL with browser automation
231
+ */
232
+ export declare function browse(urlOrStrings: string | TemplateStringsArray, ...args: unknown[]): Promise<{
233
+ do: (action: string) => Promise<void>;
234
+ extract: (query: string) => Promise<unknown>;
235
+ screenshot: () => Promise<Buffer>;
236
+ close: () => Promise<void>;
237
+ }>;
238
+ /**
239
+ * LLM as judge - compare options and pick the best
240
+ *
241
+ * @example
242
+ * ```ts
243
+ * const winner = await decide`higher click-through rate`(headlineA, headlineB)
244
+ * ```
245
+ */
246
+ export declare function decide(criteriaOrStrings: string | TemplateStringsArray, ...templateArgs: unknown[]): <T>(...options: T[]) => AIPromise<T>;
247
+ export interface HumanOptions extends GenerateOptions {
248
+ channel?: HumanChannel;
249
+ assignee?: string;
250
+ timeout?: number;
251
+ webhook?: string;
252
+ }
253
+ export interface HumanResult<T = unknown> {
254
+ pending: boolean;
255
+ requestId: string;
256
+ response?: T;
257
+ respondedBy?: string;
258
+ respondedAt?: Date;
259
+ artifacts?: {
260
+ slackBlocks?: unknown[];
261
+ emailHtml?: string;
262
+ webComponent?: string;
263
+ smsText?: string;
264
+ };
265
+ }
266
+ /**
267
+ * Ask a human for input
268
+ */
269
+ export declare const ask: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<string>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<string>>);
270
+ /**
271
+ * Request human approval
272
+ */
273
+ export declare const approve: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<{
274
+ approved: boolean;
275
+ notes?: string;
276
+ }>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<{
277
+ approved: boolean;
278
+ notes?: string;
279
+ }>>);
280
+ /**
281
+ * Request human review
282
+ */
283
+ export declare const review: ((strings: TemplateStringsArray, ...values: unknown[]) => AIPromise<HumanResult<{
284
+ rating?: number;
285
+ feedback: string;
286
+ approved?: boolean;
287
+ }>>) & ((prompt: string, options?: import("./template.js").FunctionOptions) => AIPromise<HumanResult<{
288
+ rating?: number;
289
+ feedback: string;
290
+ approved?: boolean;
291
+ }>>);
292
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}