@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: pruneMessages
3
+ description: API Reference for pruneMessages.
4
+ ---
5
+
6
+ # `pruneMessages()`
7
+
8
+ The `pruneMessages` function is used to prune or filter an array of `ModelMessage` objects. This is useful for reducing message context (to save tokens), removing intermediate reasoning, or trimming tool calls and empty messages before sending to an LLM.
9
+
10
+ ```ts filename="app/api/chat/route.ts"
11
+ import { pruneMessages, streamText } from 'ai';
12
+ __PROVIDER_IMPORT__;
13
+
14
+ export async function POST(req: Request) {
15
+ const { messages } = await req.json();
16
+
17
+ const prunedMessages = pruneMessages({
18
+ messages,
19
+ reasoning: 'before-last-message',
20
+ toolCalls: 'before-last-2-messages',
21
+ emptyMessages: 'remove',
22
+ });
23
+
24
+ const result = streamText({
25
+ model: __MODEL__,
26
+ messages: prunedMessages,
27
+ });
28
+
29
+ return result.toUIMessageStreamResponse();
30
+ }
31
+ ```
32
+
33
+ ## Import
34
+
35
+ <Snippet text={`import { pruneMessages } from "ai"`} prompt={false} />
36
+
37
+ ## API Signature
38
+
39
+ ### Parameters
40
+
41
+ <PropertiesTable
42
+ content={[
43
+ {
44
+ name: 'messages',
45
+ type: 'ModelMessage[]',
46
+ description: 'An array of ModelMessage objects to prune.',
47
+ },
48
+ {
49
+ name: 'reasoning',
50
+ type: `'all' | 'before-last-message' | 'none'`,
51
+ description:
52
+ 'How to remove reasoning content from assistant messages. Default: "none".',
53
+ },
54
+ {
55
+ name: 'toolCalls',
56
+ type: `'all' | 'before-last-message' | 'before-last-\${number}-messages' | 'none' | Array<{ type: 'all' | 'before-last-message' | 'before-last-\${number}-messages'; tools?: string[] }>`,
57
+ description:
58
+ 'How to prune tool call/results/approval content. Can specify a strategy string or an array for per-tool fine control. Default: [] (empty array, equivalent to "none").',
59
+ },
60
+ {
61
+ name: 'emptyMessages',
62
+ type: `'keep' | 'remove'`,
63
+ description:
64
+ 'Whether to keep or remove messages whose content is empty after pruning. Default: "remove".',
65
+ },
66
+ ]}
67
+ />
68
+
69
+ ### Returns
70
+
71
+ An array of [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) objects, pruned according to the provided options.
72
+
73
+ <PropertiesTable
74
+ content={[
75
+ {
76
+ name: 'ModelMessage[]',
77
+ type: 'Array',
78
+ description: 'The pruned list of ModelMessage objects',
79
+ },
80
+ ]}
81
+ />
82
+
83
+ ## Example Usage
84
+
85
+ ```ts
86
+ import { pruneMessages } from 'ai';
87
+
88
+ const pruned = pruneMessages({
89
+ messages,
90
+ reasoning: 'all', // Remove all reasoning parts
91
+ toolCalls: 'before-last-message', // Remove tool calls except those in the last message
92
+ });
93
+ ```
94
+
95
+ ## Pruning Options
96
+
97
+ - **reasoning:** Removes reasoning parts from assistant messages. Use `'all'` to remove all, `'before-last-message'` to keep reasoning in the last message, or `'none'` to retain all reasoning.
98
+ - **toolCalls:** Prune tool-call, tool-result, and tool-approval chunks from assistant/tool messages. Default is an empty array (no pruning). Options include:
99
+ - `'all'`: Prune all such content.
100
+ - `'before-last-message'`: Prune except in the last message.
101
+ - `'before-last-N-messages'`: Prune except in the last N messages.
102
+ - `'none'`: Do not prune.
103
+ - Or provide an array for per-tool fine control, e.g., `[{ type: 'before-last-message', tools: ['search', 'calculator'] }]` to prune only specific tools.
104
+ - **emptyMessages:** Set to `'remove'` (default) to exclude messages that have no content after pruning.
105
+
106
+ > **Tip**: `pruneMessages` is typically used prior to sending a context window to an LLM to reduce message/token count, especially after a series of tool-calls and approvals.
107
+
108
+ For advanced usage and the full list of possible message parts, see [`ModelMessage`](/docs/reference/ai-sdk-core/model-message) and [`pruneMessages` implementation](https://github.com/vercel/ai/blob/main/packages/ai/src/generate-text/prune-messages.ts).
@@ -0,0 +1,162 @@
1
+ ---
2
+ title: createUIMessageStream
3
+ description: API Reference for createUIMessageStream.
4
+ ---
5
+
6
+ # `createUIMessageStream`
7
+
8
+ The `createUIMessageStream` function allows you to create a readable stream for UI messages with advanced features like message merging, error handling, and finish callbacks.
9
+
10
+ ## Import
11
+
12
+ <Snippet text={`import { createUIMessageStream } from "ai"`} prompt={false} />
13
+
14
+ ## Example
15
+
16
+ ```tsx
17
+ const existingMessages: UIMessage[] = [
18
+ /* ... */
19
+ ];
20
+
21
+ const stream = createUIMessageStream({
22
+ async execute({ writer }) {
23
+ // Start a text message
24
+ // Note: The id must be consistent across text-start, text-delta, and text-end steps
25
+ // This allows the system to correctly identify they belong to the same text block
26
+ writer.write({
27
+ type: 'text-start',
28
+ id: 'example-text',
29
+ });
30
+
31
+ // Write a message chunk
32
+ writer.write({
33
+ type: 'text-delta',
34
+ id: 'example-text',
35
+ delta: 'Hello',
36
+ });
37
+
38
+ // End the text message
39
+ writer.write({
40
+ type: 'text-end',
41
+ id: 'example-text',
42
+ });
43
+
44
+ // Merge another stream from streamText
45
+ const result = streamText({
46
+ model: __MODEL__,
47
+ prompt: 'Write a haiku about AI',
48
+ });
49
+
50
+ writer.merge(result.toUIMessageStream());
51
+ },
52
+ onError: error => `Custom error: ${error.message}`,
53
+ originalMessages: existingMessages,
54
+ onFinish: ({ messages, isContinuation, responseMessage }) => {
55
+ console.log('Stream finished with messages:', messages);
56
+ },
57
+ });
58
+ ```
59
+
60
+ ## API Signature
61
+
62
+ ### Parameters
63
+
64
+ <PropertiesTable
65
+ content={[
66
+ {
67
+ name: 'execute',
68
+ type: '(options: { writer: UIMessageStreamWriter }) => Promise<void> | void',
69
+ description:
70
+ 'A function that receives a writer instance and can use it to write UI message chunks to the stream.',
71
+ properties: [
72
+ {
73
+ type: 'UIMessageStreamWriter',
74
+ parameters: [
75
+ {
76
+ name: 'write',
77
+ type: '(part: UIMessageChunk) => void',
78
+ description: 'Writes a UI message chunk to the stream.',
79
+ },
80
+ {
81
+ name: 'merge',
82
+ type: '(stream: ReadableStream<UIMessageChunk>) => void',
83
+ description:
84
+ 'Merges the contents of another UI message stream into this stream.',
85
+ },
86
+ {
87
+ name: 'onError',
88
+ type: '(error: unknown) => string',
89
+ description:
90
+ 'Error handler that is used by the stream writer for handling errors in merged streams.',
91
+ },
92
+ ],
93
+ },
94
+ ],
95
+ },
96
+ {
97
+ name: 'onError',
98
+ type: '(error: unknown) => string',
99
+ description:
100
+ 'A function that handles errors and returns an error message string. By default, it returns the error message.',
101
+ },
102
+ {
103
+ name: 'originalMessages',
104
+ type: 'UIMessage[] | undefined',
105
+ description:
106
+ 'The original messages. If provided, persistence mode is assumed and a message ID is provided for the response message.',
107
+ },
108
+ {
109
+ name: 'onFinish',
110
+ type: '(options: { messages: UIMessage[]; isContinuation: boolean; isAborted: boolean; responseMessage: UIMessage; finishReason?: FinishReason }) => PromiseLike<void> | void',
111
+ description:
112
+ 'A callback function that is called when the stream finishes.',
113
+ properties: [
114
+ {
115
+ type: 'FinishOptions',
116
+ parameters: [
117
+ {
118
+ name: 'messages',
119
+ type: 'UIMessage[]',
120
+ description: 'The updated list of UI messages.',
121
+ },
122
+ {
123
+ name: 'isContinuation',
124
+ type: 'boolean',
125
+ description:
126
+ 'Indicates whether the response message is a continuation of the last original message, or if a new message was created.',
127
+ },
128
+ {
129
+ name: 'isAborted',
130
+ type: 'boolean',
131
+ description: 'Indicates whether the stream was aborted.',
132
+ },
133
+ {
134
+ name: 'responseMessage',
135
+ type: 'UIMessage',
136
+ description:
137
+ 'The message that was sent to the client as a response (including the original message if it was extended).',
138
+ },
139
+ {
140
+ name: 'finishReason',
141
+ type: 'FinishReason | undefined',
142
+ description:
143
+ "The reason why the generation finished. One of: 'stop', 'length', 'content-filter', 'tool-calls', 'error', or 'other'.",
144
+ },
145
+ ],
146
+ },
147
+ ],
148
+ },
149
+ {
150
+ name: 'generateId',
151
+ type: 'IdGenerator | undefined',
152
+ description:
153
+ 'A function to generate unique IDs for messages. Uses the default ID generator if not provided.',
154
+ },
155
+ ]}
156
+ />
157
+
158
+ ### Returns
159
+
160
+ `ReadableStream<UIMessageChunk>`
161
+
162
+ A readable stream that emits UI message chunks. The stream automatically handles error propagation, merging of multiple streams, and proper cleanup when all operations are complete.
@@ -0,0 +1,119 @@
1
+ ---
2
+ title: createUIMessageStreamResponse
3
+ description: API Reference for createUIMessageStreamResponse.
4
+ ---
5
+
6
+ # `createUIMessageStreamResponse`
7
+
8
+ The `createUIMessageStreamResponse` function creates a Response object that streams UI messages to the client.
9
+
10
+ ## Import
11
+
12
+ <Snippet
13
+ text={`import { createUIMessageStreamResponse } from "ai"`}
14
+ prompt={false}
15
+ />
16
+
17
+ ## Example
18
+
19
+ ```tsx
20
+ import {
21
+ createUIMessageStream,
22
+ createUIMessageStreamResponse,
23
+ streamText,
24
+ } from 'ai';
25
+ __PROVIDER_IMPORT__;
26
+
27
+ const response = createUIMessageStreamResponse({
28
+ status: 200,
29
+ statusText: 'OK',
30
+ headers: {
31
+ 'Custom-Header': 'value',
32
+ },
33
+ stream: createUIMessageStream({
34
+ execute({ writer }) {
35
+ // Write custom data (type must be 'data-<name>')
36
+ writer.write({
37
+ type: 'data-message',
38
+ data: { content: 'Hello' },
39
+ });
40
+
41
+ // Write text content using start/delta/end pattern
42
+ writer.write({
43
+ type: 'text-start',
44
+ id: 'greeting-text',
45
+ });
46
+ writer.write({
47
+ type: 'text-delta',
48
+ id: 'greeting-text',
49
+ delta: 'Hello, world!',
50
+ });
51
+ writer.write({
52
+ type: 'text-end',
53
+ id: 'greeting-text',
54
+ });
55
+
56
+ // Write source information (flat properties, not nested)
57
+ writer.write({
58
+ type: 'source-url',
59
+ sourceId: 'source-1',
60
+ url: 'https://example.com',
61
+ title: 'Example Source',
62
+ });
63
+
64
+ // Merge with LLM stream
65
+ const result = streamText({
66
+ model: __MODEL__,
67
+ prompt: 'Say hello',
68
+ });
69
+
70
+ writer.merge(result.toUIMessageStream());
71
+ },
72
+ }),
73
+ });
74
+ ```
75
+
76
+ ## API Signature
77
+
78
+ ### Parameters
79
+
80
+ <PropertiesTable
81
+ content={[
82
+ {
83
+ name: 'stream',
84
+ type: 'ReadableStream<UIMessageChunk>',
85
+ description: 'The UI message stream to send to the client.',
86
+ },
87
+ {
88
+ name: 'status',
89
+ type: 'number',
90
+ isOptional: true,
91
+ description: 'The status code for the response. Defaults to 200.',
92
+ },
93
+ {
94
+ name: 'statusText',
95
+ type: 'string',
96
+ isOptional: true,
97
+ description: 'The status text for the response.',
98
+ },
99
+ {
100
+ name: 'headers',
101
+ type: 'Headers | Record<string, string>',
102
+ isOptional: true,
103
+ description: 'Additional headers for the response.',
104
+ },
105
+ {
106
+ name: 'consumeSseStream',
107
+ type: '(options: { stream: ReadableStream<string> }) => PromiseLike<void> | void',
108
+ isOptional: true,
109
+ description:
110
+ 'Optional callback to consume the Server-Sent Events stream.',
111
+ },
112
+ ]}
113
+ />
114
+
115
+ ### Returns
116
+
117
+ `Response`
118
+
119
+ A Response object that streams UI message chunks with the specified status, headers, and content.
@@ -0,0 +1,77 @@
1
+ ---
2
+ title: pipeUIMessageStreamToResponse
3
+ description: Learn to use pipeUIMessageStreamToResponse helper function to pipe streaming data to a ServerResponse object.
4
+ ---
5
+
6
+ # `pipeUIMessageStreamToResponse`
7
+
8
+ The `pipeUIMessageStreamToResponse` function pipes streaming data to a Node.js ServerResponse object (see [Streaming Data](/docs/ai-sdk-ui/streaming-data)).
9
+
10
+ ## Import
11
+
12
+ <Snippet
13
+ text={`import { pipeUIMessageStreamToResponse } from "ai"`}
14
+ prompt={false}
15
+ />
16
+
17
+ ## Example
18
+
19
+ ```tsx
20
+ pipeUIMessageStreamToResponse({
21
+ response: serverResponse,
22
+ status: 200,
23
+ statusText: 'OK',
24
+ headers: {
25
+ 'Custom-Header': 'value',
26
+ },
27
+ stream: myUIMessageStream,
28
+ consumeSseStream: ({ stream }) => {
29
+ // Optional: consume the SSE stream independently
30
+ console.log('Consuming SSE stream:', stream);
31
+ },
32
+ });
33
+ ```
34
+
35
+ ## API Signature
36
+
37
+ ### Parameters
38
+
39
+ <PropertiesTable
40
+ content={[
41
+ {
42
+ name: 'response',
43
+ type: 'ServerResponse',
44
+ description: 'The Node.js ServerResponse object to pipe the data to.',
45
+ },
46
+ {
47
+ name: 'stream',
48
+ type: 'ReadableStream<UIMessageChunk>',
49
+ description: 'The UI message stream to pipe to the response.',
50
+ },
51
+ {
52
+ name: 'status',
53
+ type: 'number',
54
+ isOptional: true,
55
+ description: 'The status code for the response.',
56
+ },
57
+ {
58
+ name: 'statusText',
59
+ type: 'string',
60
+ isOptional: true,
61
+ description: 'The status text for the response.',
62
+ },
63
+ {
64
+ name: 'headers',
65
+ type: 'Headers | Record<string, string>',
66
+ isOptional: true,
67
+ description: 'Additional headers for the response.',
68
+ },
69
+ {
70
+ name: 'consumeSseStream',
71
+ type: '({ stream }: { stream: ReadableStream<string> }) => PromiseLike<void> | void',
72
+ isOptional: true,
73
+ description:
74
+ 'Optional function to consume the SSE stream independently. The stream is teed and this function receives a copy.',
75
+ },
76
+ ]}
77
+ />
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: readUIMessageStream
3
+ description: API Reference for readUIMessageStream.
4
+ ---
5
+
6
+ # readUIMessageStream
7
+
8
+ Transforms a stream of `UIMessageChunk`s into an `AsyncIterableStream` of `UIMessage`s.
9
+
10
+ UI message streams are useful outside of Chat use cases, e.g. for terminal UIs, custom stream consumption on the client, or RSC (React Server Components).
11
+
12
+ ## Import
13
+
14
+ ```tsx
15
+ import { readUIMessageStream } from 'ai';
16
+ ```
17
+
18
+ ## API Signature
19
+
20
+ ### Parameters
21
+
22
+ <PropertiesTable
23
+ content={[
24
+ {
25
+ name: 'message',
26
+ type: 'UIMessage',
27
+ isOptional: true,
28
+ description:
29
+ 'The last assistant message to use as a starting point when the conversation is resumed. Otherwise undefined.',
30
+ },
31
+ {
32
+ name: 'stream',
33
+ type: 'ReadableStream<UIMessageChunk>',
34
+ description: 'The stream of UIMessageChunk objects to read.',
35
+ },
36
+ {
37
+ name: 'onError',
38
+ type: '(error: unknown) => void',
39
+ isOptional: true,
40
+ description:
41
+ 'A function that is called when an error occurs during stream processing.',
42
+ },
43
+ {
44
+ name: 'terminateOnError',
45
+ type: 'boolean',
46
+ isOptional: true,
47
+ description:
48
+ 'Whether to terminate the stream if an error occurs. Defaults to false.',
49
+ },
50
+ ]}
51
+ />
52
+
53
+ ### Returns
54
+
55
+ An `AsyncIterableStream` of `UIMessage`s. Each stream part represents a different state of the same message as it is being completed.
56
+
57
+ For comprehensive examples and use cases, see [Reading UI Message Streams](/docs/ai-sdk-ui/reading-ui-message-streams).
@@ -0,0 +1,99 @@
1
+ ---
2
+ title: InferUITools
3
+ description: API Reference for InferUITools.
4
+ ---
5
+
6
+ # InferUITools
7
+
8
+ Infers the input and output types of a `ToolSet`.
9
+
10
+ This type helper is useful when working with tools in TypeScript to ensure type safety for your tool inputs and outputs in `UIMessage`s.
11
+
12
+ ## Import
13
+
14
+ ```tsx
15
+ import { InferUITools } from 'ai';
16
+ ```
17
+
18
+ ## API Signature
19
+
20
+ ### Type Parameters
21
+
22
+ <PropertiesTable
23
+ content={[
24
+ {
25
+ name: 'TOOLS',
26
+ type: 'ToolSet',
27
+ description: 'The tool set to infer types from.',
28
+ },
29
+ ]}
30
+ />
31
+
32
+ ### Returns
33
+
34
+ A type that maps each tool in the tool set to its inferred input and output types.
35
+
36
+ The resulting type has the shape:
37
+
38
+ ```typescript
39
+ {
40
+ [NAME in keyof TOOLS & string]: {
41
+ input: InferToolInput<TOOLS[NAME]>;
42
+ output: InferToolOutput<TOOLS[NAME]>;
43
+ };
44
+ }
45
+ ```
46
+
47
+ ## Examples
48
+
49
+ ### Basic Usage
50
+
51
+ ```tsx
52
+ import { InferUITools } from 'ai';
53
+ import { z } from 'zod';
54
+
55
+ const tools = {
56
+ weather: {
57
+ description: 'Get the current weather',
58
+ inputSchema: z.object({
59
+ location: z.string().describe('The city and state'),
60
+ }),
61
+ execute: async ({ location }) => {
62
+ return `The weather in ${location} is sunny.`;
63
+ },
64
+ },
65
+ calculator: {
66
+ description: 'Perform basic arithmetic',
67
+ inputSchema: z.object({
68
+ operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
69
+ a: z.number(),
70
+ b: z.number(),
71
+ }),
72
+ execute: async ({ operation, a, b }) => {
73
+ switch (operation) {
74
+ case 'add':
75
+ return a + b;
76
+ case 'subtract':
77
+ return a - b;
78
+ case 'multiply':
79
+ return a * b;
80
+ case 'divide':
81
+ return a / b;
82
+ }
83
+ },
84
+ },
85
+ };
86
+
87
+ // Infer the types from the tool set
88
+ type MyUITools = InferUITools<typeof tools>;
89
+ // This creates a type with:
90
+ // {
91
+ // weather: { input: { location: string }; output: string };
92
+ // calculator: { input: { operation: 'add' | 'subtract' | 'multiply' | 'divide'; a: number; b: number }; output: number };
93
+ // }
94
+ ```
95
+
96
+ ## Related
97
+
98
+ - [`InferUITool`](/docs/reference/ai-sdk-ui/infer-ui-tool) - Infer types for a single tool
99
+ - [`useChat`](/docs/reference/ai-sdk-ui/use-chat) - Chat hook that supports typed tools
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: InferUITool
3
+ description: API Reference for InferUITool.
4
+ ---
5
+
6
+ # InferUITool
7
+
8
+ Infers the input and output types of a tool.
9
+
10
+ This type helper is useful when working with individual tools to ensure type safety for your tool inputs and outputs in `UIMessage`s.
11
+
12
+ ## Import
13
+
14
+ ```tsx
15
+ import { InferUITool } from 'ai';
16
+ ```
17
+
18
+ ## API Signature
19
+
20
+ ### Type Parameters
21
+
22
+ <PropertiesTable
23
+ content={[
24
+ {
25
+ name: 'TOOL',
26
+ type: 'Tool',
27
+ description: 'The tool to infer types from.',
28
+ },
29
+ ]}
30
+ />
31
+
32
+ ### Returns
33
+
34
+ A type that contains the inferred input and output types of the tool.
35
+
36
+ The resulting type has the shape:
37
+
38
+ ```typescript
39
+ {
40
+ input: InferToolInput<TOOL>;
41
+ output: InferToolOutput<TOOL>;
42
+ }
43
+ ```
44
+
45
+ ## Examples
46
+
47
+ ### Basic Usage
48
+
49
+ ```tsx
50
+ import { InferUITool } from 'ai';
51
+ import { z } from 'zod';
52
+
53
+ const weatherTool = {
54
+ description: 'Get the current weather',
55
+ inputSchema: z.object({
56
+ location: z.string().describe('The city and state'),
57
+ }),
58
+ execute: async ({ location }) => {
59
+ return `The weather in ${location} is sunny.`;
60
+ },
61
+ };
62
+
63
+ // Infer the types from the tool
64
+ type WeatherUITool = InferUITool<typeof weatherTool>;
65
+ // This creates a type with:
66
+ // {
67
+ // input: { location: string };
68
+ // output: string;
69
+ // }
70
+ ```
71
+
72
+ ## Related
73
+
74
+ - [`InferUITools`](/docs/reference/ai-sdk-ui/infer-ui-tools) - Infer types for a tool set
75
+ - [`ToolUIPart`](/docs/reference/ai-sdk-core/ui-message#tooluipart) - Tool part type for UI messages