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
package/dist/ai.d.ts ADDED
@@ -0,0 +1,285 @@
1
+ /**
2
+ * AI() and ai() - Core AI function constructors
3
+ *
4
+ * These provide the main entry points for AI-powered functions,
5
+ * with full RPC promise pipelining support via rpc.do.
6
+ */
7
+ type RpcPromise<T> = Promise<T>;
8
+ /**
9
+ * Base class for RPC service targets
10
+ * This is a placeholder for services that want to expose methods over RPC
11
+ */
12
+ export declare abstract class RpcTarget {
13
+ }
14
+ /**
15
+ * Options for RPC session (connection to remote AI service)
16
+ */
17
+ export interface RPCSessionOptions {
18
+ /** WebSocket URL for RPC connection */
19
+ wsUrl?: string;
20
+ /** HTTP URL for RPC fallback */
21
+ httpUrl?: string;
22
+ /** Authentication token */
23
+ token?: string;
24
+ }
25
+ import type { SimpleSchema } from './schema.js';
26
+ import type { LanguageModel } from 'ai';
27
+ import type { AIClient, AIFunctionDefinition, AIGenerateOptions, AIGenerateResult, JSONSchema, ImageOptions, ImageResult, VideoOptions, VideoResult, WriteOptions, ListResult, ListsResult, FunctionDefinition, DefinedFunction, CodeFunctionDefinition, GenerativeFunctionDefinition, AgenticFunctionDefinition, HumanFunctionDefinition, FunctionRegistry } from './types.js';
28
+ /**
29
+ * Options for creating an AI RPC client instance
30
+ */
31
+ export interface AIClientOptions extends RPCSessionOptions {
32
+ /** Default model to use */
33
+ model?: string;
34
+ /** Default temperature */
35
+ temperature?: number;
36
+ /** Default max tokens */
37
+ maxTokens?: number;
38
+ /** Custom functions available to the AI */
39
+ functions?: AIFunctionDefinition[];
40
+ }
41
+ /**
42
+ * Options for AI schema functions (subset of generateObject options)
43
+ */
44
+ export interface AISchemaOptions {
45
+ /** Model to use (string alias or LanguageModel) */
46
+ model?: string | LanguageModel;
47
+ /** System prompt */
48
+ system?: string;
49
+ /** Generation mode */
50
+ mode?: 'auto' | 'json' | 'tool';
51
+ /** Temperature (0-2) */
52
+ temperature?: number;
53
+ /** Top P sampling */
54
+ topP?: number;
55
+ /** Top K sampling */
56
+ topK?: number;
57
+ /** Presence penalty */
58
+ presencePenalty?: number;
59
+ /** Frequency penalty */
60
+ frequencyPenalty?: number;
61
+ /** Max tokens to generate */
62
+ maxTokens?: number;
63
+ /** Max retries on failure */
64
+ maxRetries?: number;
65
+ /** Abort signal */
66
+ abortSignal?: AbortSignal;
67
+ /** Custom headers */
68
+ headers?: Record<string, string>;
69
+ }
70
+ /**
71
+ * Schema-based functions
72
+ */
73
+ type SchemaFunctions<T extends Record<string, SimpleSchema>> = {
74
+ [K in keyof T]: (prompt?: string, options?: AISchemaOptions) => Promise<InferSimpleSchemaResult<T[K]>>;
75
+ };
76
+ /**
77
+ * Create AI functions from schemas
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * const ai = AI({
82
+ * storyBrand: {
83
+ * hero: 'Who is the customer?',
84
+ * problem: {
85
+ * internal: 'What internal problem do they face?',
86
+ * external: 'What external challenge exists?',
87
+ * philosophical: 'Why is this wrong?',
88
+ * },
89
+ * guide: 'Who helps them? (the brand)',
90
+ * plan: ['What are the steps to success?'],
91
+ * callToAction: 'What should they do?',
92
+ * success: 'What does success look like?',
93
+ * failure: 'What happens if they fail?',
94
+ * },
95
+ * recipe: {
96
+ * name: 'Recipe name',
97
+ * type: 'food | drink | dessert',
98
+ * servings: 'How many servings? (number)',
99
+ * ingredients: ['List all ingredients'],
100
+ * steps: ['Cooking steps in order'],
101
+ * },
102
+ * })
103
+ *
104
+ * // Call the generated functions
105
+ * const brand = await ai.storyBrand('Acme Corp sells widgets')
106
+ * const dinner = await ai.recipe('Italian pasta for 4 people')
107
+ * ```
108
+ */
109
+ export declare function AI<T extends Record<string, SimpleSchema>>(schemas: T, defaultOptions?: AISchemaOptions): SchemaFunctions<T>;
110
+ /**
111
+ * Create an AI RPC client instance
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * // Connect to remote AI service
116
+ * const ai = AI({ wsUrl: 'wss://ai.example.com/rpc' })
117
+ *
118
+ * // Use promise pipelining - single round trip!
119
+ * const result = ai.generate({ prompt: 'Hello' })
120
+ * const upper = result.text.map(t => t.toUpperCase())
121
+ * console.log(await upper)
122
+ *
123
+ * // Dynamic function calling
124
+ * const summary = await ai.summarize({ text: longText })
125
+ * ```
126
+ */
127
+ export declare function AI(options: AIClientOptions): AIClient & Record<string, (...args: unknown[]) => RpcPromise<unknown>>;
128
+ /**
129
+ * Infer result type from simple schema
130
+ */
131
+ type InferSimpleSchemaResult<T> = T extends string ? string : T extends [string] ? string[] : T extends {
132
+ [K: string]: SimpleSchema;
133
+ } ? {
134
+ [K in keyof T]: InferSimpleSchemaResult<T[K]>;
135
+ } : unknown;
136
+ /**
137
+ * Helper to create a function that supports both regular calls and tagged template literals
138
+ * @example
139
+ * const fn = withTemplate((prompt) => doSomething(prompt))
140
+ * fn('hello') // regular call
141
+ * fn`hello ${name}` // tagged template literal
142
+ */
143
+ export declare function withTemplate<TArgs extends unknown[], TReturn>(fn: (prompt: string, ...args: TArgs) => TReturn): ((prompt: string, ...args: TArgs) => TReturn) & ((strings: TemplateStringsArray, ...values: unknown[]) => TReturn);
144
+ /**
145
+ * Configure the default AI client
146
+ */
147
+ export declare function configureAI(options: AIClientOptions): void;
148
+ /**
149
+ * Base class for implementing AI services
150
+ *
151
+ * Extend this class to create your own AI service implementation.
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * class MyAIService extends AIServiceTarget {
156
+ * async generate(options: AIGenerateOptions): Promise<AIGenerateResult> {
157
+ * // Your implementation
158
+ * }
159
+ * }
160
+ * ```
161
+ */
162
+ export declare abstract class AIServiceTarget extends RpcTarget implements AIClient {
163
+ abstract generate(options: AIGenerateOptions): RpcPromise<AIGenerateResult>;
164
+ abstract do(action: string, context?: unknown): RpcPromise<unknown>;
165
+ abstract is(value: unknown, type: string | JSONSchema): RpcPromise<boolean>;
166
+ abstract code(prompt: string, language?: string): RpcPromise<string>;
167
+ abstract decide<T extends string>(options: T[], context?: string): RpcPromise<T>;
168
+ abstract diagram(description: string, format?: 'mermaid' | 'svg' | 'ascii'): RpcPromise<string>;
169
+ abstract image(prompt: string, options?: ImageOptions): RpcPromise<ImageResult>;
170
+ abstract video(prompt: string, options?: VideoOptions): RpcPromise<VideoResult>;
171
+ abstract write(prompt: string, options?: WriteOptions): RpcPromise<string>;
172
+ abstract list(prompt: string): RpcPromise<ListResult>;
173
+ abstract lists(prompt: string): RpcPromise<ListsResult>;
174
+ }
175
+ /**
176
+ * Standalone function for defining AI functions
177
+ *
178
+ * @example
179
+ * ```ts
180
+ * import { defineFunction } from 'ai-functions'
181
+ *
182
+ * const summarize = defineFunction({
183
+ * type: 'generative',
184
+ * name: 'summarize',
185
+ * args: { text: 'Text to summarize' },
186
+ * output: 'string',
187
+ * promptTemplate: 'Summarize: {{text}}',
188
+ * })
189
+ *
190
+ * const result = await summarize.call({ text: 'Long article...' })
191
+ * ```
192
+ */
193
+ export declare function defineFunction<TArgs, TReturn>(definition: FunctionDefinition<TArgs, TReturn>): DefinedFunction<TArgs, TReturn>;
194
+ /**
195
+ * Global function registry
196
+ *
197
+ * Note: This is in-memory only. For persistence, use mdxai or mdxdb packages.
198
+ */
199
+ export declare const functions: FunctionRegistry;
200
+ /**
201
+ * Auto-define a function based on its name and arguments, or define with explicit definition
202
+ *
203
+ * When called with (name, args), uses AI to analyze and determine:
204
+ * - What type of function it should be (code, generative, agentic, human)
205
+ * - What it should return
206
+ * - How it should be implemented
207
+ *
208
+ * When called with a FunctionDefinition, creates the function directly.
209
+ *
210
+ * @example
211
+ * ```ts
212
+ * // Auto-define from name and example args
213
+ * const planTrip = await define('planTrip', { destination: 'Tokyo', travelers: 2 })
214
+ *
215
+ * // Or define explicitly
216
+ * const summarize = define.generative({
217
+ * name: 'summarize',
218
+ * args: { text: 'Text to summarize' },
219
+ * output: 'string',
220
+ * })
221
+ *
222
+ * // Or with full definition
223
+ * const fn = defineFunction({
224
+ * type: 'generative',
225
+ * name: 'translate',
226
+ * args: { text: 'Text', lang: 'Target language' },
227
+ * output: 'string',
228
+ * })
229
+ * ```
230
+ */
231
+ declare function autoDefineImpl(name: string, args: Record<string, unknown>): Promise<DefinedFunction>;
232
+ /**
233
+ * Define functions - auto-define or use typed helpers
234
+ */
235
+ export declare const define: typeof autoDefineImpl & {
236
+ /**
237
+ * Define a code generation function
238
+ */
239
+ code: <TArgs, TReturn>(definition: Omit<CodeFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
240
+ /**
241
+ * Define a generative function
242
+ */
243
+ generative: <TArgs, TReturn>(definition: Omit<GenerativeFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
244
+ /**
245
+ * Define an agentic function
246
+ */
247
+ agentic: <TArgs, TReturn>(definition: Omit<AgenticFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
248
+ /**
249
+ * Define a human-in-the-loop function
250
+ */
251
+ human: <TArgs, TReturn>(definition: Omit<HumanFunctionDefinition<TArgs, TReturn>, "type">) => DefinedFunction<TArgs, TReturn>;
252
+ };
253
+ /**
254
+ * Type for the AI proxy with auto-define capability
255
+ */
256
+ export interface AIProxy {
257
+ /** Function registry */
258
+ functions: FunctionRegistry;
259
+ /** Define functions */
260
+ define: typeof define;
261
+ /** Define a function with full definition */
262
+ defineFunction: typeof defineFunction;
263
+ /** Dynamic function calls */
264
+ [key: string]: unknown;
265
+ }
266
+ /**
267
+ * Default AI instance with auto-define capability
268
+ *
269
+ * @example
270
+ * ```ts
271
+ * import { ai } from 'ai-functions'
272
+ *
273
+ * // Auto-define and call
274
+ * const result = await ai.summarize({ text: 'Long article...' })
275
+ *
276
+ * // Access functions registry
277
+ * ai.functions.list()
278
+ *
279
+ * // Define explicitly
280
+ * ai.define.generative({ name: 'translate', ... })
281
+ * ```
282
+ */
283
+ export declare const ai: AIProxy;
284
+ export {};
285
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}