@fondation-io/ai 7.0.0-beta.45

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 (536) hide show
  1. package/CHANGELOG.md +7687 -0
  2. package/README.md +238 -0
  3. package/dist/index.d.mts +7056 -0
  4. package/dist/index.d.ts +7056 -0
  5. package/dist/index.js +14607 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +14578 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/internal/index.d.mts +303 -0
  10. package/dist/internal/index.d.ts +303 -0
  11. package/dist/internal/index.js +1352 -0
  12. package/dist/internal/index.js.map +1 -0
  13. package/dist/internal/index.mjs +1336 -0
  14. package/dist/internal/index.mjs.map +1 -0
  15. package/dist/test/index.d.mts +265 -0
  16. package/dist/test/index.d.ts +265 -0
  17. package/dist/test/index.js +509 -0
  18. package/dist/test/index.js.map +1 -0
  19. package/dist/test/index.mjs +472 -0
  20. package/dist/test/index.mjs.map +1 -0
  21. package/docs/00-introduction/index.mdx +76 -0
  22. package/docs/02-foundations/01-overview.mdx +43 -0
  23. package/docs/02-foundations/02-providers-and-models.mdx +160 -0
  24. package/docs/02-foundations/03-prompts.mdx +616 -0
  25. package/docs/02-foundations/04-tools.mdx +251 -0
  26. package/docs/02-foundations/05-streaming.mdx +62 -0
  27. package/docs/02-foundations/06-provider-options.mdx +345 -0
  28. package/docs/02-foundations/index.mdx +49 -0
  29. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  30. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  31. package/docs/02-getting-started/02-nextjs-app-router.mdx +559 -0
  32. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  33. package/docs/02-getting-started/04-svelte.mdx +627 -0
  34. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  35. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  36. package/docs/02-getting-started/07-expo.mdx +766 -0
  37. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  38. package/docs/02-getting-started/09-coding-agents.mdx +179 -0
  39. package/docs/02-getting-started/index.mdx +44 -0
  40. package/docs/03-agents/01-overview.mdx +96 -0
  41. package/docs/03-agents/02-building-agents.mdx +449 -0
  42. package/docs/03-agents/03-workflows.mdx +386 -0
  43. package/docs/03-agents/04-loop-control.mdx +394 -0
  44. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  45. package/docs/03-agents/06-memory.mdx +222 -0
  46. package/docs/03-agents/06-subagents.mdx +362 -0
  47. package/docs/03-agents/index.mdx +46 -0
  48. package/docs/03-ai-sdk-core/01-overview.mdx +31 -0
  49. package/docs/03-ai-sdk-core/05-generating-text.mdx +707 -0
  50. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +498 -0
  51. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1148 -0
  52. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +383 -0
  53. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +146 -0
  54. package/docs/03-ai-sdk-core/25-settings.mdx +216 -0
  55. package/docs/03-ai-sdk-core/26-reasoning.mdx +190 -0
  56. package/docs/03-ai-sdk-core/30-embeddings.mdx +236 -0
  57. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  58. package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
  59. package/docs/03-ai-sdk-core/36-transcription.mdx +227 -0
  60. package/docs/03-ai-sdk-core/37-speech.mdx +169 -0
  61. package/docs/03-ai-sdk-core/38-video-generation.mdx +366 -0
  62. package/docs/03-ai-sdk-core/40-middleware.mdx +485 -0
  63. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  64. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  65. package/docs/03-ai-sdk-core/55-testing.mdx +219 -0
  66. package/docs/03-ai-sdk-core/60-telemetry.mdx +391 -0
  67. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  68. package/docs/03-ai-sdk-core/65-event-listeners.mdx +1303 -0
  69. package/docs/03-ai-sdk-core/index.mdx +99 -0
  70. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  71. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1320 -0
  72. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +534 -0
  73. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  74. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  75. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  76. package/docs/04-ai-sdk-ui/05-completion.mdx +181 -0
  77. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  78. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  79. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  80. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  81. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  82. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  83. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +503 -0
  84. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  85. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  86. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  87. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  88. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  89. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  90. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +157 -0
  91. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  92. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +94 -0
  93. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  94. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  95. package/docs/05-ai-sdk-rsc/index.mdx +63 -0
  96. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  97. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  98. package/docs/06-advanced/03-backpressure.mdx +173 -0
  99. package/docs/06-advanced/04-caching.mdx +169 -0
  100. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  101. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  102. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +225 -0
  103. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  104. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  105. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  106. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  107. package/docs/06-advanced/index.mdx +11 -0
  108. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2785 -0
  109. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3752 -0
  110. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +332 -0
  111. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +330 -0
  112. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +323 -0
  113. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +251 -0
  114. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +152 -0
  115. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +221 -0
  116. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +264 -0
  117. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +235 -0
  118. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +973 -0
  119. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +154 -0
  120. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +173 -0
  121. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +150 -0
  122. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +209 -0
  123. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +223 -0
  124. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +423 -0
  125. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  126. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  127. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  128. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +58 -0
  129. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  130. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +435 -0
  131. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +264 -0
  132. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  133. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  134. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +198 -0
  135. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +157 -0
  136. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  137. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  138. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  139. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +74 -0
  140. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  141. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  142. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  143. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  144. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  145. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  146. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  147. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  148. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  149. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +30 -0
  150. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  151. package/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx +68 -0
  152. package/docs/07-reference/01-ai-sdk-core/index.mdx +160 -0
  153. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +493 -0
  154. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +185 -0
  155. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +196 -0
  156. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +231 -0
  157. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  158. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +162 -0
  159. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +119 -0
  160. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +77 -0
  161. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  162. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  163. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  164. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  165. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  166. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  167. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  168. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  169. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +78 -0
  170. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +79 -0
  171. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  172. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  173. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  174. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  175. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  176. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  177. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +266 -0
  178. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  179. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +31 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +28 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +26 -0
  184. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
  185. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
  186. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
  187. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +24 -0
  188. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
  189. package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
  190. package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
  191. package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
  192. package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
  193. package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
  194. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
  195. package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
  196. package/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx +25 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +24 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +24 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx +39 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +25 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  207. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  208. package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
  209. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  210. package/docs/07-reference/05-ai-sdk-errors/index.mdx +39 -0
  211. package/docs/07-reference/index.mdx +28 -0
  212. package/docs/08-migration-guides/00-versioning.mdx +46 -0
  213. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +95 -0
  214. package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
  215. package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
  216. package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
  217. package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
  218. package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
  219. package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
  220. package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
  221. package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
  222. package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
  223. package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
  224. package/docs/08-migration-guides/index.mdx +22 -0
  225. package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
  226. package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
  227. package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
  228. package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
  229. package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
  230. package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
  231. package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
  232. package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
  233. package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
  234. package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
  235. package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
  236. package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
  237. package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
  238. package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
  239. package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
  240. package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
  241. package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
  242. package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
  243. package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
  244. package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
  245. package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
  246. package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
  247. package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
  248. package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
  249. package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +76 -0
  250. package/docs/09-troubleshooting/21-missing-tool-results-error.mdx +82 -0
  251. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
  252. package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
  253. package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
  254. package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
  255. package/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx +108 -0
  256. package/docs/09-troubleshooting/index.mdx +11 -0
  257. package/internal.d.ts +1 -0
  258. package/package.json +120 -0
  259. package/src/agent/agent.ts +156 -0
  260. package/src/agent/create-agent-ui-stream-response.ts +61 -0
  261. package/src/agent/create-agent-ui-stream.ts +84 -0
  262. package/src/agent/index.ts +37 -0
  263. package/src/agent/infer-agent-tools.ts +7 -0
  264. package/src/agent/infer-agent-ui-message.ts +11 -0
  265. package/src/agent/pipe-agent-ui-stream-to-response.ts +64 -0
  266. package/src/agent/tool-loop-agent-settings.ts +252 -0
  267. package/src/agent/tool-loop-agent.ts +205 -0
  268. package/src/embed/embed-events.ts +181 -0
  269. package/src/embed/embed-many-result.ts +53 -0
  270. package/src/embed/embed-many.ts +428 -0
  271. package/src/embed/embed-result.ts +50 -0
  272. package/src/embed/embed.ts +266 -0
  273. package/src/embed/index.ts +5 -0
  274. package/src/error/index.ts +37 -0
  275. package/src/error/invalid-argument-error.ts +34 -0
  276. package/src/error/invalid-stream-part-error.ts +28 -0
  277. package/src/error/invalid-tool-approval-error.ts +26 -0
  278. package/src/error/invalid-tool-input-error.ts +33 -0
  279. package/src/error/missing-tool-result-error.ts +28 -0
  280. package/src/error/no-image-generated-error.ts +39 -0
  281. package/src/error/no-object-generated-error.ts +70 -0
  282. package/src/error/no-output-generated-error.ts +26 -0
  283. package/src/error/no-speech-generated-error.ts +28 -0
  284. package/src/error/no-such-tool-error.ts +35 -0
  285. package/src/error/no-transcript-generated-error.ts +30 -0
  286. package/src/error/no-video-generated-error.ts +57 -0
  287. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  288. package/src/error/tool-call-repair-error.ts +30 -0
  289. package/src/error/ui-message-stream-error.ts +48 -0
  290. package/src/error/unsupported-model-version-error.ts +23 -0
  291. package/src/error/verify-no-object-generated-error.ts +27 -0
  292. package/src/generate-image/generate-image-result.ts +42 -0
  293. package/src/generate-image/generate-image.ts +361 -0
  294. package/src/generate-image/index.ts +18 -0
  295. package/src/generate-object/generate-object-result.ts +67 -0
  296. package/src/generate-object/generate-object.ts +514 -0
  297. package/src/generate-object/index.ts +9 -0
  298. package/src/generate-object/inject-json-instruction.ts +30 -0
  299. package/src/generate-object/output-strategy.ts +415 -0
  300. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  301. package/src/generate-object/repair-text.ts +12 -0
  302. package/src/generate-object/stream-object-result.ts +120 -0
  303. package/src/generate-object/stream-object.ts +984 -0
  304. package/src/generate-object/validate-object-generation-input.ts +144 -0
  305. package/src/generate-speech/generate-speech-result.ts +30 -0
  306. package/src/generate-speech/generate-speech.ts +191 -0
  307. package/src/generate-speech/generated-audio-file.ts +65 -0
  308. package/src/generate-speech/index.ts +3 -0
  309. package/src/generate-text/collect-tool-approvals.ts +116 -0
  310. package/src/generate-text/content-part.ts +31 -0
  311. package/src/generate-text/core-events.ts +390 -0
  312. package/src/generate-text/create-execute-tools-transformation.ts +144 -0
  313. package/src/generate-text/execute-tool-call.ts +190 -0
  314. package/src/generate-text/extract-reasoning-content.ts +17 -0
  315. package/src/generate-text/extract-text-content.ts +15 -0
  316. package/src/generate-text/generate-text-result.ts +168 -0
  317. package/src/generate-text/generate-text.ts +1445 -0
  318. package/src/generate-text/generated-file.ts +70 -0
  319. package/src/generate-text/index.ts +78 -0
  320. package/src/generate-text/invoke-tool-callbacks-from-stream.ts +81 -0
  321. package/src/generate-text/is-approval-needed.ts +29 -0
  322. package/src/generate-text/output-utils.ts +23 -0
  323. package/src/generate-text/output.ts +590 -0
  324. package/src/generate-text/parse-tool-call.ts +188 -0
  325. package/src/generate-text/prepare-step.ts +103 -0
  326. package/src/generate-text/prune-messages.ts +167 -0
  327. package/src/generate-text/reasoning-output.ts +99 -0
  328. package/src/generate-text/reasoning.ts +10 -0
  329. package/src/generate-text/response-message.ts +10 -0
  330. package/src/generate-text/smooth-stream.ts +162 -0
  331. package/src/generate-text/step-result.ts +310 -0
  332. package/src/generate-text/stop-condition.ts +29 -0
  333. package/src/generate-text/stream-model-call.ts +418 -0
  334. package/src/generate-text/stream-text-result.ts +536 -0
  335. package/src/generate-text/stream-text.ts +2696 -0
  336. package/src/generate-text/to-response-messages.ts +195 -0
  337. package/src/generate-text/tool-approval-request-output.ts +21 -0
  338. package/src/generate-text/tool-call-repair-function.ts +27 -0
  339. package/src/generate-text/tool-call.ts +47 -0
  340. package/src/generate-text/tool-error.ts +34 -0
  341. package/src/generate-text/tool-output-denied.ts +21 -0
  342. package/src/generate-text/tool-output.ts +7 -0
  343. package/src/generate-text/tool-result.ts +36 -0
  344. package/src/generate-text/tool-set.ts +14 -0
  345. package/src/generate-video/generate-video-result.ts +36 -0
  346. package/src/generate-video/generate-video.ts +402 -0
  347. package/src/generate-video/index.ts +3 -0
  348. package/src/global.ts +36 -0
  349. package/src/index.ts +49 -0
  350. package/src/logger/index.ts +6 -0
  351. package/src/logger/log-warnings.ts +140 -0
  352. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  353. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  354. package/src/middleware/default-settings-middleware.ts +33 -0
  355. package/src/middleware/extract-json-middleware.ts +197 -0
  356. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  357. package/src/middleware/index.ts +10 -0
  358. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  359. package/src/middleware/wrap-embedding-model.ts +89 -0
  360. package/src/middleware/wrap-image-model.ts +92 -0
  361. package/src/middleware/wrap-language-model.ts +108 -0
  362. package/src/middleware/wrap-provider.ts +51 -0
  363. package/src/model/as-embedding-model-v3.ts +24 -0
  364. package/src/model/as-embedding-model-v4.ts +25 -0
  365. package/src/model/as-image-model-v3.ts +24 -0
  366. package/src/model/as-image-model-v4.ts +21 -0
  367. package/src/model/as-language-model-v3.ts +103 -0
  368. package/src/model/as-language-model-v4.ts +25 -0
  369. package/src/model/as-provider-v3.ts +36 -0
  370. package/src/model/as-provider-v4.ts +47 -0
  371. package/src/model/as-reranking-model-v4.ts +16 -0
  372. package/src/model/as-speech-model-v3.ts +24 -0
  373. package/src/model/as-speech-model-v4.ts +21 -0
  374. package/src/model/as-transcription-model-v3.ts +24 -0
  375. package/src/model/as-transcription-model-v4.ts +25 -0
  376. package/src/model/as-video-model-v4.ts +19 -0
  377. package/src/model/resolve-model.ts +172 -0
  378. package/src/prompt/call-settings.ts +169 -0
  379. package/src/prompt/content-part.ts +236 -0
  380. package/src/prompt/convert-to-language-model-prompt.ts +548 -0
  381. package/src/prompt/create-tool-model-output.ts +34 -0
  382. package/src/prompt/data-content.ts +134 -0
  383. package/src/prompt/index.ts +27 -0
  384. package/src/prompt/invalid-data-content-error.ts +29 -0
  385. package/src/prompt/invalid-message-role-error.ts +27 -0
  386. package/src/prompt/message-conversion-error.ts +28 -0
  387. package/src/prompt/message.ts +72 -0
  388. package/src/prompt/prepare-call-settings.ts +110 -0
  389. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  390. package/src/prompt/prompt.ts +43 -0
  391. package/src/prompt/split-data-url.ts +17 -0
  392. package/src/prompt/standardize-prompt.ts +99 -0
  393. package/src/prompt/wrap-gateway-error.ts +29 -0
  394. package/src/registry/custom-provider.ts +210 -0
  395. package/src/registry/index.ts +7 -0
  396. package/src/registry/no-such-provider-error.ts +41 -0
  397. package/src/registry/provider-registry.ts +331 -0
  398. package/src/rerank/index.ts +8 -0
  399. package/src/rerank/rerank-events.ts +189 -0
  400. package/src/rerank/rerank-result.ts +70 -0
  401. package/src/rerank/rerank.ts +348 -0
  402. package/src/telemetry/assemble-operation-name.ts +21 -0
  403. package/src/telemetry/get-base-telemetry-attributes.ts +45 -0
  404. package/src/telemetry/get-global-telemetry-integration.ts +126 -0
  405. package/src/telemetry/get-tracer.ts +20 -0
  406. package/src/telemetry/index.ts +4 -0
  407. package/src/telemetry/noop-tracer.ts +69 -0
  408. package/src/telemetry/open-telemetry-integration.ts +875 -0
  409. package/src/telemetry/record-span.ts +75 -0
  410. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  411. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  412. package/src/telemetry/telemetry-integration-registry.ts +22 -0
  413. package/src/telemetry/telemetry-integration.ts +139 -0
  414. package/src/telemetry/telemetry-settings.ts +55 -0
  415. package/src/test/mock-embedding-model-v2.ts +35 -0
  416. package/src/test/mock-embedding-model-v3.ts +48 -0
  417. package/src/test/mock-embedding-model-v4.ts +48 -0
  418. package/src/test/mock-image-model-v2.ts +28 -0
  419. package/src/test/mock-image-model-v3.ts +28 -0
  420. package/src/test/mock-image-model-v4.ts +28 -0
  421. package/src/test/mock-language-model-v2.ts +72 -0
  422. package/src/test/mock-language-model-v3.ts +77 -0
  423. package/src/test/mock-language-model-v4.ts +77 -0
  424. package/src/test/mock-provider-v2.ts +68 -0
  425. package/src/test/mock-provider-v3.ts +80 -0
  426. package/src/test/mock-provider-v4.ts +80 -0
  427. package/src/test/mock-reranking-model-v3.ts +25 -0
  428. package/src/test/mock-reranking-model-v4.ts +25 -0
  429. package/src/test/mock-server-response.ts +69 -0
  430. package/src/test/mock-speech-model-v2.ts +24 -0
  431. package/src/test/mock-speech-model-v3.ts +24 -0
  432. package/src/test/mock-speech-model-v4.ts +24 -0
  433. package/src/test/mock-tracer.ts +156 -0
  434. package/src/test/mock-transcription-model-v2.ts +24 -0
  435. package/src/test/mock-transcription-model-v3.ts +24 -0
  436. package/src/test/mock-transcription-model-v4.ts +24 -0
  437. package/src/test/mock-values.ts +4 -0
  438. package/src/test/mock-video-model-v3.ts +28 -0
  439. package/src/test/mock-video-model-v4.ts +28 -0
  440. package/src/test/not-implemented.ts +3 -0
  441. package/src/text-stream/create-text-stream-response.ts +30 -0
  442. package/src/text-stream/index.ts +2 -0
  443. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  444. package/src/transcribe/index.ts +2 -0
  445. package/src/transcribe/transcribe-result.ts +60 -0
  446. package/src/transcribe/transcribe.ts +187 -0
  447. package/src/types/embedding-model-middleware.ts +15 -0
  448. package/src/types/embedding-model.ts +20 -0
  449. package/src/types/image-model-middleware.ts +15 -0
  450. package/src/types/image-model-response-metadata.ts +16 -0
  451. package/src/types/image-model.ts +19 -0
  452. package/src/types/index.ts +29 -0
  453. package/src/types/json-value.ts +15 -0
  454. package/src/types/language-model-middleware.ts +15 -0
  455. package/src/types/language-model-request-metadata.ts +6 -0
  456. package/src/types/language-model-response-metadata.ts +21 -0
  457. package/src/types/language-model.ts +106 -0
  458. package/src/types/provider-metadata.ts +16 -0
  459. package/src/types/provider.ts +55 -0
  460. package/src/types/reranking-model.ts +6 -0
  461. package/src/types/speech-model-response-metadata.ts +21 -0
  462. package/src/types/speech-model.ts +10 -0
  463. package/src/types/transcription-model-response-metadata.ts +16 -0
  464. package/src/types/transcription-model.ts +14 -0
  465. package/src/types/usage.ts +200 -0
  466. package/src/types/video-model-response-metadata.ts +28 -0
  467. package/src/types/video-model.ts +15 -0
  468. package/src/types/warning.ts +7 -0
  469. package/src/ui/call-completion-api.ts +157 -0
  470. package/src/ui/chat-transport.ts +83 -0
  471. package/src/ui/chat.ts +786 -0
  472. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  473. package/src/ui/convert-to-model-messages.ts +403 -0
  474. package/src/ui/default-chat-transport.ts +36 -0
  475. package/src/ui/direct-chat-transport.ts +117 -0
  476. package/src/ui/http-chat-transport.ts +273 -0
  477. package/src/ui/index.ts +76 -0
  478. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  479. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  480. package/src/ui/process-text-stream.ts +16 -0
  481. package/src/ui/process-ui-message-stream.ts +858 -0
  482. package/src/ui/text-stream-chat-transport.ts +23 -0
  483. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  484. package/src/ui/ui-messages.ts +602 -0
  485. package/src/ui/use-completion.ts +84 -0
  486. package/src/ui/validate-ui-messages.ts +521 -0
  487. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  488. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  489. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  490. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  491. package/src/ui-message-stream/index.ts +14 -0
  492. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  493. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  494. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  495. package/src/ui-message-stream/ui-message-chunks.ts +372 -0
  496. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  497. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  498. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  499. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  500. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  501. package/src/util/as-array.ts +3 -0
  502. package/src/util/async-iterable-stream.ts +94 -0
  503. package/src/util/consume-stream.ts +31 -0
  504. package/src/util/cosine-similarity.ts +46 -0
  505. package/src/util/create-resolvable-promise.ts +30 -0
  506. package/src/util/create-stitchable-stream.ts +112 -0
  507. package/src/util/data-url.ts +17 -0
  508. package/src/util/deep-partial.ts +84 -0
  509. package/src/util/detect-media-type.ts +226 -0
  510. package/src/util/download/create-download.ts +13 -0
  511. package/src/util/download/download-function.ts +45 -0
  512. package/src/util/download/download.ts +74 -0
  513. package/src/util/error-handler.ts +1 -0
  514. package/src/util/fix-json.ts +401 -0
  515. package/src/util/get-potential-start-index.ts +39 -0
  516. package/src/util/index.ts +12 -0
  517. package/src/util/is-deep-equal-data.ts +48 -0
  518. package/src/util/is-non-empty-object.ts +5 -0
  519. package/src/util/job.ts +1 -0
  520. package/src/util/log-v2-compatibility-warning.ts +21 -0
  521. package/src/util/merge-abort-signals.ts +43 -0
  522. package/src/util/merge-objects.ts +79 -0
  523. package/src/util/notify.ts +22 -0
  524. package/src/util/now.ts +4 -0
  525. package/src/util/parse-partial-json.ts +30 -0
  526. package/src/util/prepare-headers.ts +14 -0
  527. package/src/util/prepare-retries.ts +47 -0
  528. package/src/util/retry-error.ts +41 -0
  529. package/src/util/retry-with-exponential-backoff.ts +154 -0
  530. package/src/util/serial-job-executor.ts +36 -0
  531. package/src/util/simulate-readable-stream.ts +39 -0
  532. package/src/util/split-array.ts +20 -0
  533. package/src/util/value-of.ts +65 -0
  534. package/src/util/write-to-server-response.ts +49 -0
  535. package/src/version.ts +5 -0
  536. package/test.d.ts +1 -0
@@ -0,0 +1,108 @@
1
+ ---
2
+ title: High memory usage when processing many images
3
+ description: Troubleshooting high memory usage when using generateText or streamText with many images
4
+ ---
5
+
6
+ # High memory usage when processing many images
7
+
8
+ ## Issue
9
+
10
+ When using `generateText` or `streamText` with many images (e.g., in a loop or batch processing), you may notice:
11
+
12
+ - Memory usage grows continuously and doesn't decrease
13
+ - Application eventually runs out of memory
14
+ - Memory is not reclaimed even after garbage collection
15
+
16
+ This is especially noticeable when using `experimental_download` to process images from URLs, or when sending base64-encoded images in prompts.
17
+
18
+ ## Background
19
+
20
+ By default, the AI SDK includes the full request and response bodies in the step results. When processing images, the request body contains the base64-encoded image data, which can be very large (a single image can be 1MB+ when base64 encoded). If you process many images and keep references to the results, this data accumulates in memory.
21
+
22
+ For example, processing 100 images of 500KB each would include ~50MB+ of request body data in memory.
23
+
24
+ ## Solution
25
+
26
+ Use the `experimental_include` option to disable inclusion of request and/or response bodies:
27
+
28
+ ```ts
29
+ import { generateText } from 'ai';
30
+ import { openai } from '@ai-sdk/openai';
31
+
32
+ const result = await generateText({
33
+ model: openai('gpt-4o'),
34
+ messages: [
35
+ {
36
+ role: 'user',
37
+ content: [
38
+ { type: 'text', text: 'Describe this image' },
39
+ { type: 'image', image: imageUrl },
40
+ ],
41
+ },
42
+ ],
43
+ // Disable inclusion of request body to reduce memory usage
44
+ experimental_include: {
45
+ requestBody: false,
46
+ responseBody: false,
47
+ },
48
+ });
49
+ ```
50
+
51
+ ### Options
52
+
53
+ The `experimental_include` option accepts:
54
+
55
+ - `requestBody`: Set to `false` to exclude the request body from step results. This is where base64-encoded images are stored. Default: `true`. Available in both `generateText` and `streamText`.
56
+ - `responseBody`: Set to `false` to exclude the response body from step results. Default: `true`. Only available in `generateText`.
57
+
58
+ ### When to use
59
+
60
+ - **Batch processing images**: When processing many images in a loop
61
+ - **Long-running agents**: When an agent may process many images over its lifetime
62
+ - **Memory-constrained environments**: When running in environments with limited memory
63
+
64
+ ### Trade-offs
65
+
66
+ When you disable body inclusion:
67
+
68
+ - You won't have access to `result.request.body` or `result.response.body`
69
+ - Debugging may be harder since you can't inspect the raw request/response
70
+ - If you need the bodies for logging or debugging, consider extracting the data you need before the next iteration
71
+
72
+ ## Example: Processing multiple images
73
+
74
+ ```ts
75
+ import { generateText } from 'ai';
76
+ import { openai } from '@ai-sdk/openai';
77
+
78
+ const imageUrls = [
79
+ /* array of image URLs */
80
+ ];
81
+ const results = [];
82
+
83
+ for (const imageUrl of imageUrls) {
84
+ const result = await generateText({
85
+ model: openai('gpt-4o'),
86
+ messages: [
87
+ {
88
+ role: 'user',
89
+ content: [
90
+ { type: 'text', text: 'Describe this image' },
91
+ { type: 'image', image: imageUrl },
92
+ ],
93
+ },
94
+ ],
95
+ experimental_include: {
96
+ requestBody: false,
97
+ },
98
+ });
99
+
100
+ // Only store the text result, not the full result object
101
+ results.push(result.text);
102
+ }
103
+ ```
104
+
105
+ ## Learn more
106
+
107
+ - [`generateText` API Reference](/docs/reference/ai-sdk-core/generate-text)
108
+ - [`streamText` API Reference](/docs/reference/ai-sdk-core/stream-text)
@@ -0,0 +1,11 @@
1
+ ---
2
+ title: Troubleshooting
3
+ description: Troubleshooting information for common issues encountered with the AI SDK.
4
+ collapsed: true
5
+ ---
6
+
7
+ # Troubleshooting
8
+
9
+ This section is designed to help you quickly identify and resolve common issues encountered with the AI SDK, ensuring a smoother and more efficient development experience.
10
+
11
+ <Support />
package/internal.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/internal';
package/package.json ADDED
@@ -0,0 +1,120 @@
1
+ {
2
+ "name": "@fondation-io/ai",
3
+ "version": "7.0.0-beta.45",
4
+ "description": "AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript",
5
+ "license": "Apache-2.0",
6
+ "sideEffects": false,
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.mjs",
9
+ "types": "./dist/index.d.ts",
10
+ "source": "./src/index.ts",
11
+ "files": [
12
+ "dist/**/*",
13
+ "docs/**/*",
14
+ "src",
15
+ "!src/**/*.test.ts",
16
+ "!src/**/*.test-d.ts",
17
+ "!src/**/__snapshots__",
18
+ "CHANGELOG.md",
19
+ "internal.d.ts",
20
+ "README.md",
21
+ "test.d.ts"
22
+ ],
23
+ "directories": {
24
+ "doc": "./docs"
25
+ },
26
+ "scripts": {
27
+ "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
28
+ "build:watch": "pnpm clean && tsup --watch --tsconfig tsconfig.build.json",
29
+ "clean": "del-cli dist docs *.tsbuildinfo",
30
+ "prepack": "cp -r ../../content/docs ./docs",
31
+ "postpack": "del-cli docs",
32
+ "type-check": "tsc --build",
33
+ "test": "pnpm test:node && pnpm test:edge",
34
+ "test:update": "pnpm test:node -u",
35
+ "test:watch": "vitest --config vitest.node.config.js",
36
+ "test:edge": "vitest --config vitest.edge.config.js --run",
37
+ "test:node": "vitest --config vitest.node.config.js --run",
38
+ "check-bundle-size": "tsx scripts/check-bundle-size.ts"
39
+ },
40
+ "exports": {
41
+ "./package.json": "./package.json",
42
+ ".": {
43
+ "types": "./dist/index.d.ts",
44
+ "import": "./dist/index.mjs",
45
+ "require": "./dist/index.js"
46
+ },
47
+ "./internal": {
48
+ "types": "./dist/internal/index.d.ts",
49
+ "import": "./dist/internal/index.mjs",
50
+ "module": "./dist/internal/index.mjs",
51
+ "require": "./dist/internal/index.js"
52
+ },
53
+ "./test": {
54
+ "types": "./dist/test/index.d.ts",
55
+ "import": "./dist/test/index.mjs",
56
+ "module": "./dist/test/index.mjs",
57
+ "require": "./dist/test/index.js"
58
+ }
59
+ },
60
+ "dependencies": {
61
+ "@ai-sdk/gateway": "4.0.0-beta.25",
62
+ "@ai-sdk/provider": "4.0.0-beta.5",
63
+ "@ai-sdk/provider-utils": "5.0.0-beta.7",
64
+ "@opentelemetry/api": "1.9.0"
65
+ },
66
+ "devDependencies": {
67
+ "@ai-sdk/test-server": "workspace:*",
68
+ "@edge-runtime/vm": "^5.0.0",
69
+ "@types/json-schema": "7.0.15",
70
+ "@types/node": "20.17.24",
71
+ "@vercel/ai-tsconfig": "workspace:*",
72
+ "esbuild": "^0.24.2",
73
+ "tsup": "^7.2.0",
74
+ "tsx": "^4.19.2",
75
+ "typescript": "5.8.3",
76
+ "zod": "3.25.76"
77
+ },
78
+ "peerDependencies": {
79
+ "zod": "^3.25.76 || ^4.1.8"
80
+ },
81
+ "engines": {
82
+ "node": ">=18"
83
+ },
84
+ "publishConfig": {
85
+ "access": "public"
86
+ },
87
+ "homepage": "https://ai-sdk.dev/docs",
88
+ "repository": {
89
+ "type": "git",
90
+ "url": "git+https://github.com/vercel/ai.git"
91
+ },
92
+ "bugs": {
93
+ "url": "https://github.com/vercel/ai/issues"
94
+ },
95
+ "keywords": [
96
+ "ai",
97
+ "vercel",
98
+ "sdk",
99
+ "llm",
100
+ "mcp",
101
+ "tool-calling",
102
+ "tools",
103
+ "structured-output",
104
+ "agent",
105
+ "agentic",
106
+ "generative",
107
+ "genai",
108
+ "chatbot",
109
+ "prompt",
110
+ "inference",
111
+ "language-model",
112
+ "streaming",
113
+ "openai",
114
+ "anthropic",
115
+ "claude",
116
+ "gemini",
117
+ "xai",
118
+ "grok"
119
+ ]
120
+ }
@@ -0,0 +1,156 @@
1
+ import { ModelMessage } from '@ai-sdk/provider-utils';
2
+ import { GenerateTextResult } from '../generate-text/generate-text-result';
3
+ import { Output } from '../generate-text/output';
4
+ import { StreamTextTransform } from '../generate-text/stream-text';
5
+ import { StreamTextResult } from '../generate-text/stream-text-result';
6
+ import { ToolSet } from '../generate-text/tool-set';
7
+ import { TimeoutConfiguration } from '../prompt/call-settings';
8
+ import type {
9
+ ToolLoopAgentOnFinishCallback,
10
+ ToolLoopAgentOnStartCallback,
11
+ ToolLoopAgentOnStepFinishCallback,
12
+ ToolLoopAgentOnStepStartCallback,
13
+ ToolLoopAgentOnToolCallFinishCallback,
14
+ ToolLoopAgentOnToolCallStartCallback,
15
+ } from './tool-loop-agent-settings';
16
+
17
+ /**
18
+ * Parameters for calling an agent.
19
+ */
20
+ export type AgentCallParameters<CALL_OPTIONS, TOOLS extends ToolSet = {}> = ([
21
+ CALL_OPTIONS,
22
+ ] extends [never]
23
+ ? { options?: never }
24
+ : { options: CALL_OPTIONS }) &
25
+ (
26
+ | {
27
+ /**
28
+ * A prompt. It can be either a text prompt or a list of messages.
29
+ *
30
+ * You can either use `prompt` or `messages` but not both.
31
+ */
32
+ prompt: string | Array<ModelMessage>;
33
+
34
+ /**
35
+ * A list of messages.
36
+ *
37
+ * You can either use `prompt` or `messages` but not both.
38
+ */
39
+ messages?: never;
40
+ }
41
+ | {
42
+ /**
43
+ * A list of messages.
44
+ *
45
+ * You can either use `prompt` or `messages` but not both.
46
+ */
47
+ messages: Array<ModelMessage>;
48
+
49
+ /**
50
+ * A prompt. It can be either a text prompt or a list of messages.
51
+ *
52
+ * You can either use `prompt` or `messages` but not both.
53
+ */
54
+ prompt?: never;
55
+ }
56
+ ) & {
57
+ /**
58
+ * Abort signal.
59
+ */
60
+ abortSignal?: AbortSignal;
61
+
62
+ /**
63
+ * Timeout in milliseconds. Can be specified as a number or as an object with `totalMs`.
64
+ */
65
+ timeout?: TimeoutConfiguration<TOOLS>;
66
+
67
+ /**
68
+ * Callback that is called when the agent operation begins, before any LLM calls.
69
+ */
70
+ experimental_onStart?: ToolLoopAgentOnStartCallback<TOOLS>;
71
+
72
+ /**
73
+ * Callback that is called when a step (LLM call) begins, before the provider is called.
74
+ */
75
+ experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<TOOLS>;
76
+
77
+ /**
78
+ * Callback that is called before each tool execution begins.
79
+ */
80
+ experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<TOOLS>;
81
+
82
+ /**
83
+ * Callback that is called after each tool execution completes.
84
+ */
85
+ experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<TOOLS>;
86
+
87
+ /**
88
+ * Callback that is called when each step (LLM call) is finished, including intermediate steps.
89
+ */
90
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
91
+
92
+ /**
93
+ * Callback that is called when all steps are finished and the response is complete.
94
+ */
95
+ onFinish?: ToolLoopAgentOnFinishCallback<TOOLS>;
96
+ };
97
+
98
+ /**
99
+ * Parameters for streaming an output from an agent.
100
+ */
101
+ export type AgentStreamParameters<
102
+ CALL_OPTIONS,
103
+ TOOLS extends ToolSet,
104
+ > = AgentCallParameters<CALL_OPTIONS, TOOLS> & {
105
+ /**
106
+ * Optional stream transformations.
107
+ * They are applied in the order they are provided.
108
+ * The stream transformations must maintain the stream structure for streamText to work correctly.
109
+ */
110
+ experimental_transform?:
111
+ | StreamTextTransform<TOOLS>
112
+ | Array<StreamTextTransform<TOOLS>>;
113
+ };
114
+
115
+ /**
116
+ * An Agent receives a prompt (text or messages) and generates or streams an output
117
+ * that consists of steps, tool calls, data parts, etc.
118
+ *
119
+ * You can implement your own Agent by implementing the `Agent` interface,
120
+ * or use the `ToolLoopAgent` class.
121
+ */
122
+ export interface Agent<
123
+ CALL_OPTIONS = never,
124
+ TOOLS extends ToolSet = {},
125
+ OUTPUT extends Output = never,
126
+ > {
127
+ /**
128
+ * The specification version of the agent interface. This will enable
129
+ * us to evolve the agent interface and retain backwards compatibility.
130
+ */
131
+ readonly version: 'agent-v1';
132
+
133
+ /**
134
+ * The id of the agent.
135
+ */
136
+ readonly id: string | undefined;
137
+
138
+ /**
139
+ * The tools that the agent can use.
140
+ */
141
+ readonly tools: TOOLS;
142
+
143
+ /**
144
+ * Generates an output from the agent (non-streaming).
145
+ */
146
+ generate(
147
+ options: AgentCallParameters<CALL_OPTIONS, TOOLS>,
148
+ ): PromiseLike<GenerateTextResult<TOOLS, OUTPUT>>;
149
+
150
+ /**
151
+ * Streams an output from the agent (streaming).
152
+ */
153
+ stream(
154
+ options: AgentStreamParameters<CALL_OPTIONS, TOOLS>,
155
+ ): PromiseLike<StreamTextResult<TOOLS, OUTPUT>>;
156
+ }
@@ -0,0 +1,61 @@
1
+ import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text';
2
+ import { Output } from '../generate-text/output';
3
+ import { ToolSet } from '../generate-text/tool-set';
4
+ import { TimeoutConfiguration } from '../prompt/call-settings';
5
+ import { createUIMessageStreamResponse } from '../ui-message-stream';
6
+ import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init';
7
+ import { InferUITools, UIMessage } from '../ui/ui-messages';
8
+ import { Agent } from './agent';
9
+ import { createAgentUIStream } from './create-agent-ui-stream';
10
+ import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings';
11
+
12
+ /**
13
+ * Runs the agent and returns a response object with a UI message stream.
14
+ *
15
+ * @param agent - The agent to run.
16
+ * @param uiMessages - The input UI messages.
17
+ * @param abortSignal - Abort signal. Optional.
18
+ * @param timeout - Timeout in milliseconds. Optional.
19
+ * @param options - The options for the agent. Optional.
20
+ * @param experimental_transform - Stream transformations. Optional.
21
+ * @param onStepFinish - Callback that is called when each step is finished. Optional.
22
+ * @param headers - Additional headers for the response. Optional.
23
+ * @param status - The status code for the response. Optional.
24
+ * @param statusText - The status text for the response. Optional.
25
+ * @param consumeSseStream - Whether to consume the SSE stream. Optional.
26
+ *
27
+ * @returns The response object.
28
+ */
29
+ export async function createAgentUIStreamResponse<
30
+ CALL_OPTIONS = never,
31
+ TOOLS extends ToolSet = {},
32
+ OUTPUT extends Output = never,
33
+ MESSAGE_METADATA = unknown,
34
+ >({
35
+ headers,
36
+ status,
37
+ statusText,
38
+ consumeSseStream,
39
+ ...options
40
+ }: {
41
+ agent: Agent<CALL_OPTIONS, TOOLS, OUTPUT>;
42
+ uiMessages: unknown[];
43
+ abortSignal?: AbortSignal;
44
+ timeout?: TimeoutConfiguration<TOOLS>;
45
+ options?: CALL_OPTIONS;
46
+ experimental_transform?:
47
+ | StreamTextTransform<TOOLS>
48
+ | Array<StreamTextTransform<TOOLS>>;
49
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
50
+ } & UIMessageStreamResponseInit &
51
+ UIMessageStreamOptions<
52
+ UIMessage<MESSAGE_METADATA, never, InferUITools<TOOLS>>
53
+ >): Promise<Response> {
54
+ return createUIMessageStreamResponse({
55
+ headers,
56
+ status,
57
+ statusText,
58
+ consumeSseStream,
59
+ stream: await createAgentUIStream(options),
60
+ });
61
+ }
@@ -0,0 +1,84 @@
1
+ import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text';
2
+ import { Output } from '../generate-text/output';
3
+ import { ToolSet } from '../generate-text/tool-set';
4
+ import { TimeoutConfiguration } from '../prompt/call-settings';
5
+ import { InferUIMessageChunk } from '../ui-message-stream';
6
+ import { convertToModelMessages } from '../ui/convert-to-model-messages';
7
+ import { InferUITools, UIMessage } from '../ui/ui-messages';
8
+ import { validateUIMessages } from '../ui/validate-ui-messages';
9
+ import { AsyncIterableStream } from '../util/async-iterable-stream';
10
+ import { Agent } from './agent';
11
+ import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings';
12
+
13
+ /**
14
+ * Runs the agent and stream the output as a UI message stream.
15
+ *
16
+ * @param agent - The agent to run.
17
+ * @param uiMessages - The input UI messages.
18
+ * @param abortSignal - The abort signal. Optional.
19
+ * @param timeout - Timeout in milliseconds. Optional.
20
+ * @param options - The options for the agent.
21
+ * @param experimental_transform - The stream transformations. Optional.
22
+ * @param onStepFinish - Callback that is called when each step is finished. Optional.
23
+ *
24
+ * @returns The UI message stream.
25
+ */
26
+ export async function createAgentUIStream<
27
+ CALL_OPTIONS = never,
28
+ TOOLS extends ToolSet = {},
29
+ OUTPUT extends Output = never,
30
+ MESSAGE_METADATA = unknown,
31
+ >({
32
+ agent,
33
+ uiMessages,
34
+ options,
35
+ abortSignal,
36
+ timeout,
37
+ experimental_transform,
38
+ onStepFinish,
39
+ ...uiMessageStreamOptions
40
+ }: {
41
+ agent: Agent<CALL_OPTIONS, TOOLS, OUTPUT>;
42
+ uiMessages: unknown[];
43
+ abortSignal?: AbortSignal;
44
+ timeout?: TimeoutConfiguration<TOOLS>;
45
+ options?: CALL_OPTIONS;
46
+ experimental_transform?:
47
+ | StreamTextTransform<TOOLS>
48
+ | Array<StreamTextTransform<TOOLS>>;
49
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
50
+ // TODO `originalMessages` is part of this for bc, omit in v7
51
+ } & UIMessageStreamOptions<
52
+ UIMessage<MESSAGE_METADATA, never, InferUITools<TOOLS>>
53
+ >): Promise<
54
+ AsyncIterableStream<
55
+ InferUIMessageChunk<UIMessage<MESSAGE_METADATA, never, InferUITools<TOOLS>>>
56
+ >
57
+ > {
58
+ const validatedMessages = await validateUIMessages<
59
+ UIMessage<MESSAGE_METADATA, never, InferUITools<TOOLS>>
60
+ >({
61
+ messages: uiMessages,
62
+ tools: agent.tools,
63
+ });
64
+
65
+ const modelMessages = await convertToModelMessages(validatedMessages, {
66
+ tools: agent.tools,
67
+ });
68
+
69
+ const result = await agent.stream({
70
+ prompt: modelMessages,
71
+ options: options as CALL_OPTIONS,
72
+ abortSignal,
73
+ timeout,
74
+ experimental_transform,
75
+ onStepFinish,
76
+ });
77
+
78
+ return result.toUIMessageStream({
79
+ ...uiMessageStreamOptions,
80
+ // TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
81
+ originalMessages:
82
+ uiMessageStreamOptions.originalMessages ?? validatedMessages,
83
+ });
84
+ }
@@ -0,0 +1,37 @@
1
+ export {
2
+ type Agent,
3
+ type AgentCallParameters,
4
+ type AgentStreamParameters,
5
+ } from './agent';
6
+ export {
7
+ type ToolLoopAgentOnFinishCallback,
8
+ type ToolLoopAgentOnStartCallback,
9
+ type ToolLoopAgentOnStepFinishCallback,
10
+ type ToolLoopAgentOnStepStartCallback,
11
+ type ToolLoopAgentOnToolCallFinishCallback,
12
+ type ToolLoopAgentOnToolCallStartCallback,
13
+ type ToolLoopAgentSettings,
14
+
15
+ /**
16
+ * @deprecated Use `ToolLoopAgentSettings` instead.
17
+ */
18
+ type ToolLoopAgentSettings as Experimental_AgentSettings,
19
+ } from './tool-loop-agent-settings';
20
+ export {
21
+ ToolLoopAgent,
22
+
23
+ /**
24
+ * @deprecated Use `ToolLoopAgent` instead.
25
+ */
26
+ ToolLoopAgent as Experimental_Agent,
27
+ } from './tool-loop-agent';
28
+ export {
29
+ /**
30
+ * @deprecated Use `InferAgentUIMessage` instead.
31
+ */
32
+ type InferAgentUIMessage as Experimental_InferAgentUIMessage,
33
+ type InferAgentUIMessage,
34
+ } from './infer-agent-ui-message';
35
+ export { createAgentUIStreamResponse } from './create-agent-ui-stream-response';
36
+ export { createAgentUIStream } from './create-agent-ui-stream';
37
+ export { pipeAgentUIStreamToResponse } from './pipe-agent-ui-stream-to-response';
@@ -0,0 +1,7 @@
1
+ import { Agent } from './agent';
2
+
3
+ /**
4
+ * Infer the type of the tools of an agent.
5
+ */
6
+ export type InferAgentTools<AGENT> =
7
+ AGENT extends Agent<any, infer TOOLS, any> ? TOOLS : never;
@@ -0,0 +1,11 @@
1
+ import { InferUITools, UIMessage } from '../ui/ui-messages';
2
+ import { InferAgentTools } from './infer-agent-tools';
3
+
4
+ /**
5
+ * Infer the UI message type of an agent.
6
+ */
7
+ export type InferAgentUIMessage<AGENT, MESSAGE_METADATA = unknown> = UIMessage<
8
+ MESSAGE_METADATA,
9
+ never,
10
+ InferUITools<InferAgentTools<AGENT>>
11
+ >;
@@ -0,0 +1,64 @@
1
+ import { ServerResponse } from 'node:http';
2
+ import { StreamTextTransform, UIMessageStreamOptions } from '../generate-text';
3
+ import { Output } from '../generate-text/output';
4
+ import { ToolSet } from '../generate-text/tool-set';
5
+ import { TimeoutConfiguration } from '../prompt/call-settings';
6
+ import { pipeUIMessageStreamToResponse } from '../ui-message-stream';
7
+ import { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init';
8
+ import { InferUITools, UIMessage } from '../ui/ui-messages';
9
+ import { Agent } from './agent';
10
+ import { createAgentUIStream } from './create-agent-ui-stream';
11
+ import type { ToolLoopAgentOnStepFinishCallback } from './tool-loop-agent-settings';
12
+
13
+ /**
14
+ * Pipes the agent UI message stream to a Node.js ServerResponse object.
15
+ *
16
+ * @param response - The Node.js ServerResponse object to pipe to.
17
+ * @param agent - The agent to run.
18
+ * @param uiMessages - The input UI messages.
19
+ * @param abortSignal - Abort signal. Optional.
20
+ * @param timeout - Timeout in milliseconds. Optional.
21
+ * @param options - The options for the agent. Optional.
22
+ * @param experimental_transform - Stream transformations. Optional.
23
+ * @param onStepFinish - Callback that is called when each step is finished. Optional.
24
+ * @param headers - Additional headers for the response. Optional.
25
+ * @param status - The status code for the response. Optional.
26
+ * @param statusText - The status text for the response. Optional.
27
+ * @param consumeSseStream - Whether to consume the SSE stream. Optional.
28
+ */
29
+ export async function pipeAgentUIStreamToResponse<
30
+ CALL_OPTIONS = never,
31
+ TOOLS extends ToolSet = {},
32
+ OUTPUT extends Output = never,
33
+ MESSAGE_METADATA = unknown,
34
+ >({
35
+ response,
36
+ headers,
37
+ status,
38
+ statusText,
39
+ consumeSseStream,
40
+ ...options
41
+ }: {
42
+ response: ServerResponse;
43
+ agent: Agent<CALL_OPTIONS, TOOLS, OUTPUT>;
44
+ uiMessages: unknown[];
45
+ abortSignal?: AbortSignal;
46
+ timeout?: TimeoutConfiguration<TOOLS>;
47
+ options?: CALL_OPTIONS;
48
+ experimental_transform?:
49
+ | StreamTextTransform<TOOLS>
50
+ | Array<StreamTextTransform<TOOLS>>;
51
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
52
+ } & UIMessageStreamResponseInit &
53
+ UIMessageStreamOptions<
54
+ UIMessage<MESSAGE_METADATA, never, InferUITools<TOOLS>>
55
+ >): Promise<void> {
56
+ pipeUIMessageStreamToResponse({
57
+ response,
58
+ headers,
59
+ status,
60
+ statusText,
61
+ consumeSseStream,
62
+ stream: await createAgentUIStream(options),
63
+ });
64
+ }