@depup/ai 6.0.116-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/CHANGELOG.md +7350 -0
  2. package/LICENSE +13 -0
  3. package/README.md +25 -0
  4. package/changes.json +5 -0
  5. package/dist/index.d.mts +6429 -0
  6. package/dist/index.d.ts +6429 -0
  7. package/dist/index.js +13548 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/index.mjs +13514 -0
  10. package/dist/index.mjs.map +1 -0
  11. package/dist/internal/index.d.mts +314 -0
  12. package/dist/internal/index.d.ts +314 -0
  13. package/dist/internal/index.js +1316 -0
  14. package/dist/internal/index.js.map +1 -0
  15. package/dist/internal/index.mjs +1300 -0
  16. package/dist/internal/index.mjs.map +1 -0
  17. package/dist/test/index.d.mts +133 -0
  18. package/dist/test/index.d.ts +133 -0
  19. package/dist/test/index.js +275 -0
  20. package/dist/test/index.js.map +1 -0
  21. package/dist/test/index.mjs +245 -0
  22. package/dist/test/index.mjs.map +1 -0
  23. package/docs/00-introduction/index.mdx +76 -0
  24. package/docs/02-foundations/01-overview.mdx +43 -0
  25. package/docs/02-foundations/02-providers-and-models.mdx +156 -0
  26. package/docs/02-foundations/03-prompts.mdx +616 -0
  27. package/docs/02-foundations/04-tools.mdx +251 -0
  28. package/docs/02-foundations/05-streaming.mdx +62 -0
  29. package/docs/02-foundations/06-provider-options.mdx +337 -0
  30. package/docs/02-foundations/index.mdx +49 -0
  31. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  32. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  33. package/docs/02-getting-started/02-nextjs-app-router.mdx +559 -0
  34. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  35. package/docs/02-getting-started/04-svelte.mdx +627 -0
  36. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  37. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  38. package/docs/02-getting-started/07-expo.mdx +766 -0
  39. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  40. package/docs/02-getting-started/09-coding-agents.mdx +179 -0
  41. package/docs/02-getting-started/index.mdx +44 -0
  42. package/docs/03-agents/01-overview.mdx +96 -0
  43. package/docs/03-agents/02-building-agents.mdx +449 -0
  44. package/docs/03-agents/03-workflows.mdx +386 -0
  45. package/docs/03-agents/04-loop-control.mdx +394 -0
  46. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  47. package/docs/03-agents/06-memory.mdx +222 -0
  48. package/docs/03-agents/06-subagents.mdx +362 -0
  49. package/docs/03-agents/index.mdx +46 -0
  50. package/docs/03-ai-sdk-core/01-overview.mdx +31 -0
  51. package/docs/03-ai-sdk-core/05-generating-text.mdx +707 -0
  52. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +498 -0
  53. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1144 -0
  54. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +377 -0
  55. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +146 -0
  56. package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
  57. package/docs/03-ai-sdk-core/30-embeddings.mdx +245 -0
  58. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  59. package/docs/03-ai-sdk-core/35-image-generation.mdx +342 -0
  60. package/docs/03-ai-sdk-core/36-transcription.mdx +227 -0
  61. package/docs/03-ai-sdk-core/37-speech.mdx +169 -0
  62. package/docs/03-ai-sdk-core/38-video-generation.mdx +366 -0
  63. package/docs/03-ai-sdk-core/40-middleware.mdx +485 -0
  64. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  65. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  66. package/docs/03-ai-sdk-core/55-testing.mdx +219 -0
  67. package/docs/03-ai-sdk-core/60-telemetry.mdx +391 -0
  68. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  69. package/docs/03-ai-sdk-core/65-event-listeners.mdx +915 -0
  70. package/docs/03-ai-sdk-core/index.mdx +93 -0
  71. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  72. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
  73. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
  74. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  75. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  76. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  77. package/docs/04-ai-sdk-ui/05-completion.mdx +181 -0
  78. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  79. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  80. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  81. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  82. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  83. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  84. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
  85. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  86. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  87. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  88. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  89. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  90. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  91. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +157 -0
  92. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  93. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +94 -0
  94. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  95. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  96. package/docs/05-ai-sdk-rsc/index.mdx +63 -0
  97. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  98. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  99. package/docs/06-advanced/03-backpressure.mdx +173 -0
  100. package/docs/06-advanced/04-caching.mdx +169 -0
  101. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  102. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  103. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +225 -0
  104. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  105. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  106. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  107. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  108. package/docs/06-advanced/index.mdx +11 -0
  109. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2715 -0
  110. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3656 -0
  111. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +197 -0
  112. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +191 -0
  113. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
  114. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +251 -0
  115. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +152 -0
  116. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +221 -0
  117. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +264 -0
  118. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +235 -0
  119. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +973 -0
  120. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +154 -0
  121. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +173 -0
  122. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +150 -0
  123. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +209 -0
  124. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +223 -0
  125. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +416 -0
  126. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  127. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  128. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  129. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +58 -0
  130. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  131. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
  132. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
  133. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  134. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  135. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +198 -0
  136. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +157 -0
  137. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  138. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  139. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  140. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +74 -0
  141. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  142. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  143. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  144. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  145. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  146. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  147. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  148. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  149. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  150. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +30 -0
  151. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  152. package/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx +68 -0
  153. package/docs/07-reference/01-ai-sdk-core/index.mdx +160 -0
  154. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +493 -0
  155. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +185 -0
  156. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +196 -0
  157. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +231 -0
  158. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  159. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +162 -0
  160. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +119 -0
  161. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +77 -0
  162. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  163. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  164. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  165. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  166. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  167. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  168. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  169. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  170. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +78 -0
  171. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +79 -0
  172. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  173. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  174. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  175. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  176. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  177. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  178. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +266 -0
  179. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +31 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +28 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  184. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +26 -0
  185. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
  186. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
  187. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
  188. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +24 -0
  189. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
  190. package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
  191. package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
  192. package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
  193. package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
  194. package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
  195. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
  196. package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx +25 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +24 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +24 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx +39 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +25 -0
  207. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  208. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  209. package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
  210. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  211. package/docs/07-reference/05-ai-sdk-errors/index.mdx +39 -0
  212. package/docs/07-reference/index.mdx +28 -0
  213. package/docs/08-migration-guides/00-versioning.mdx +46 -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 +126 -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 +244 -0
  267. package/src/agent/tool-loop-agent.ts +206 -0
  268. package/src/embed/embed-many-result.ts +53 -0
  269. package/src/embed/embed-many.ts +386 -0
  270. package/src/embed/embed-result.ts +50 -0
  271. package/src/embed/embed.ts +217 -0
  272. package/src/embed/index.ts +4 -0
  273. package/src/error/index.ts +37 -0
  274. package/src/error/invalid-argument-error.ts +34 -0
  275. package/src/error/invalid-stream-part-error.ts +28 -0
  276. package/src/error/invalid-tool-approval-error.ts +26 -0
  277. package/src/error/invalid-tool-input-error.ts +33 -0
  278. package/src/error/missing-tool-result-error.ts +28 -0
  279. package/src/error/no-image-generated-error.ts +39 -0
  280. package/src/error/no-object-generated-error.ts +70 -0
  281. package/src/error/no-output-generated-error.ts +26 -0
  282. package/src/error/no-speech-generated-error.ts +28 -0
  283. package/src/error/no-such-tool-error.ts +35 -0
  284. package/src/error/no-transcript-generated-error.ts +30 -0
  285. package/src/error/no-video-generated-error.ts +57 -0
  286. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  287. package/src/error/tool-call-repair-error.ts +30 -0
  288. package/src/error/ui-message-stream-error.ts +48 -0
  289. package/src/error/unsupported-model-version-error.ts +23 -0
  290. package/src/error/verify-no-object-generated-error.ts +27 -0
  291. package/src/generate-image/generate-image-result.ts +42 -0
  292. package/src/generate-image/generate-image.ts +361 -0
  293. package/src/generate-image/index.ts +18 -0
  294. package/src/generate-object/generate-object-result.ts +67 -0
  295. package/src/generate-object/generate-object.ts +517 -0
  296. package/src/generate-object/index.ts +9 -0
  297. package/src/generate-object/inject-json-instruction.ts +30 -0
  298. package/src/generate-object/output-strategy.ts +415 -0
  299. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  300. package/src/generate-object/repair-text.ts +12 -0
  301. package/src/generate-object/stream-object-result.ts +120 -0
  302. package/src/generate-object/stream-object.ts +985 -0
  303. package/src/generate-object/validate-object-generation-input.ts +144 -0
  304. package/src/generate-speech/generate-speech-result.ts +30 -0
  305. package/src/generate-speech/generate-speech.ts +191 -0
  306. package/src/generate-speech/generated-audio-file.ts +65 -0
  307. package/src/generate-speech/index.ts +3 -0
  308. package/src/generate-text/callback-events.ts +332 -0
  309. package/src/generate-text/collect-tool-approvals.ts +116 -0
  310. package/src/generate-text/content-part.ts +25 -0
  311. package/src/generate-text/execute-tool-call.ts +197 -0
  312. package/src/generate-text/extract-reasoning-content.ts +17 -0
  313. package/src/generate-text/extract-text-content.ts +15 -0
  314. package/src/generate-text/generate-text-result.ts +168 -0
  315. package/src/generate-text/generate-text.ts +1535 -0
  316. package/src/generate-text/generated-file.ts +70 -0
  317. package/src/generate-text/index.ts +74 -0
  318. package/src/generate-text/is-approval-needed.ts +29 -0
  319. package/src/generate-text/output-utils.ts +23 -0
  320. package/src/generate-text/output.ts +590 -0
  321. package/src/generate-text/parse-tool-call.ts +188 -0
  322. package/src/generate-text/prepare-step.ts +103 -0
  323. package/src/generate-text/prune-messages.ts +167 -0
  324. package/src/generate-text/reasoning-output.ts +20 -0
  325. package/src/generate-text/reasoning.ts +8 -0
  326. package/src/generate-text/response-message.ts +10 -0
  327. package/src/generate-text/run-tools-transformation.ts +442 -0
  328. package/src/generate-text/smooth-stream.ts +162 -0
  329. package/src/generate-text/step-result.ts +290 -0
  330. package/src/generate-text/stop-condition.ts +29 -0
  331. package/src/generate-text/stream-text-result.ts +463 -0
  332. package/src/generate-text/stream-text.ts +2807 -0
  333. package/src/generate-text/to-response-messages.ts +163 -0
  334. package/src/generate-text/tool-approval-request-output.ts +21 -0
  335. package/src/generate-text/tool-call-repair-function.ts +27 -0
  336. package/src/generate-text/tool-call.ts +47 -0
  337. package/src/generate-text/tool-error.ts +34 -0
  338. package/src/generate-text/tool-output-denied.ts +21 -0
  339. package/src/generate-text/tool-output.ts +7 -0
  340. package/src/generate-text/tool-result.ts +36 -0
  341. package/src/generate-text/tool-set.ts +14 -0
  342. package/src/generate-video/generate-video-result.ts +36 -0
  343. package/src/generate-video/generate-video.ts +402 -0
  344. package/src/generate-video/index.ts +3 -0
  345. package/src/global.ts +36 -0
  346. package/src/index.ts +49 -0
  347. package/src/logger/index.ts +6 -0
  348. package/src/logger/log-warnings.ts +140 -0
  349. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  350. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  351. package/src/middleware/default-settings-middleware.ts +33 -0
  352. package/src/middleware/extract-json-middleware.ts +197 -0
  353. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  354. package/src/middleware/index.ts +10 -0
  355. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  356. package/src/middleware/wrap-embedding-model.ts +86 -0
  357. package/src/middleware/wrap-image-model.ts +85 -0
  358. package/src/middleware/wrap-language-model.ts +104 -0
  359. package/src/middleware/wrap-provider.ts +51 -0
  360. package/src/model/as-embedding-model-v3.ts +24 -0
  361. package/src/model/as-image-model-v3.ts +24 -0
  362. package/src/model/as-language-model-v3.ts +103 -0
  363. package/src/model/as-provider-v3.ts +36 -0
  364. package/src/model/as-speech-model-v3.ts +24 -0
  365. package/src/model/as-transcription-model-v3.ts +24 -0
  366. package/src/model/resolve-model.ts +159 -0
  367. package/src/prompt/call-settings.ts +148 -0
  368. package/src/prompt/content-part.ts +215 -0
  369. package/src/prompt/convert-to-language-model-prompt.ts +526 -0
  370. package/src/prompt/create-tool-model-output.ts +34 -0
  371. package/src/prompt/data-content.ts +134 -0
  372. package/src/prompt/index.ts +27 -0
  373. package/src/prompt/invalid-data-content-error.ts +29 -0
  374. package/src/prompt/invalid-message-role-error.ts +27 -0
  375. package/src/prompt/message-conversion-error.ts +28 -0
  376. package/src/prompt/message.ts +68 -0
  377. package/src/prompt/prepare-call-settings.ts +108 -0
  378. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  379. package/src/prompt/prompt.ts +43 -0
  380. package/src/prompt/split-data-url.ts +17 -0
  381. package/src/prompt/standardize-prompt.ts +99 -0
  382. package/src/prompt/wrap-gateway-error.ts +29 -0
  383. package/src/registry/custom-provider.ts +176 -0
  384. package/src/registry/index.ts +7 -0
  385. package/src/registry/no-such-provider-error.ts +41 -0
  386. package/src/registry/provider-registry.ts +328 -0
  387. package/src/rerank/index.ts +2 -0
  388. package/src/rerank/rerank-result.ts +70 -0
  389. package/src/rerank/rerank.ts +239 -0
  390. package/src/telemetry/assemble-operation-name.ts +21 -0
  391. package/src/telemetry/get-base-telemetry-attributes.ts +53 -0
  392. package/src/telemetry/get-global-telemetry-integration.ts +85 -0
  393. package/src/telemetry/get-tracer.ts +20 -0
  394. package/src/telemetry/index.ts +4 -0
  395. package/src/telemetry/noop-tracer.ts +69 -0
  396. package/src/telemetry/record-span.ts +75 -0
  397. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  398. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  399. package/src/telemetry/telemetry-integration-registry.ts +17 -0
  400. package/src/telemetry/telemetry-integration.ts +24 -0
  401. package/src/telemetry/telemetry-settings.ts +53 -0
  402. package/src/test/mock-embedding-model-v2.ts +35 -0
  403. package/src/test/mock-embedding-model-v3.ts +48 -0
  404. package/src/test/mock-image-model-v2.ts +28 -0
  405. package/src/test/mock-image-model-v3.ts +28 -0
  406. package/src/test/mock-language-model-v2.ts +72 -0
  407. package/src/test/mock-language-model-v3.ts +77 -0
  408. package/src/test/mock-provider-v2.ts +68 -0
  409. package/src/test/mock-provider-v3.ts +80 -0
  410. package/src/test/mock-reranking-model-v3.ts +25 -0
  411. package/src/test/mock-server-response.ts +69 -0
  412. package/src/test/mock-speech-model-v2.ts +24 -0
  413. package/src/test/mock-speech-model-v3.ts +24 -0
  414. package/src/test/mock-tracer.ts +156 -0
  415. package/src/test/mock-transcription-model-v2.ts +24 -0
  416. package/src/test/mock-transcription-model-v3.ts +24 -0
  417. package/src/test/mock-values.ts +4 -0
  418. package/src/test/mock-video-model-v3.ts +28 -0
  419. package/src/test/not-implemented.ts +3 -0
  420. package/src/text-stream/create-text-stream-response.ts +30 -0
  421. package/src/text-stream/index.ts +2 -0
  422. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  423. package/src/transcribe/index.ts +2 -0
  424. package/src/transcribe/transcribe-result.ts +60 -0
  425. package/src/transcribe/transcribe.ts +187 -0
  426. package/src/types/embedding-model-middleware.ts +3 -0
  427. package/src/types/embedding-model.ts +18 -0
  428. package/src/types/image-model-middleware.ts +3 -0
  429. package/src/types/image-model-response-metadata.ts +16 -0
  430. package/src/types/image-model.ts +19 -0
  431. package/src/types/index.ts +29 -0
  432. package/src/types/json-value.ts +15 -0
  433. package/src/types/language-model-middleware.ts +3 -0
  434. package/src/types/language-model-request-metadata.ts +6 -0
  435. package/src/types/language-model-response-metadata.ts +21 -0
  436. package/src/types/language-model.ts +104 -0
  437. package/src/types/provider-metadata.ts +16 -0
  438. package/src/types/provider.ts +55 -0
  439. package/src/types/reranking-model.ts +6 -0
  440. package/src/types/speech-model-response-metadata.ts +21 -0
  441. package/src/types/speech-model.ts +6 -0
  442. package/src/types/transcription-model-response-metadata.ts +16 -0
  443. package/src/types/transcription-model.ts +9 -0
  444. package/src/types/usage.ts +200 -0
  445. package/src/types/video-model-response-metadata.ts +28 -0
  446. package/src/types/video-model.ts +11 -0
  447. package/src/types/warning.ts +7 -0
  448. package/src/ui/call-completion-api.ts +157 -0
  449. package/src/ui/chat-transport.ts +83 -0
  450. package/src/ui/chat.ts +751 -0
  451. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  452. package/src/ui/convert-to-model-messages.ts +376 -0
  453. package/src/ui/default-chat-transport.ts +36 -0
  454. package/src/ui/direct-chat-transport.ts +118 -0
  455. package/src/ui/http-chat-transport.ts +284 -0
  456. package/src/ui/index.ts +71 -0
  457. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  458. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  459. package/src/ui/process-text-stream.ts +16 -0
  460. package/src/ui/process-ui-message-stream.ts +793 -0
  461. package/src/ui/text-stream-chat-transport.ts +23 -0
  462. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  463. package/src/ui/ui-messages.ts +536 -0
  464. package/src/ui/use-completion.ts +84 -0
  465. package/src/ui/validate-ui-messages.ts +506 -0
  466. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  467. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  468. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  469. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  470. package/src/ui-message-stream/index.ts +14 -0
  471. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  472. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  473. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  474. package/src/ui-message-stream/ui-message-chunks.ts +346 -0
  475. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  476. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  477. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  478. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  479. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  480. package/src/util/as-array.ts +3 -0
  481. package/src/util/async-iterable-stream.ts +94 -0
  482. package/src/util/consume-stream.ts +31 -0
  483. package/src/util/cosine-similarity.ts +46 -0
  484. package/src/util/create-resolvable-promise.ts +30 -0
  485. package/src/util/create-stitchable-stream.ts +112 -0
  486. package/src/util/data-url.ts +17 -0
  487. package/src/util/deep-partial.ts +84 -0
  488. package/src/util/detect-media-type.ts +226 -0
  489. package/src/util/download/create-download.ts +13 -0
  490. package/src/util/download/download-function.ts +45 -0
  491. package/src/util/download/download.ts +69 -0
  492. package/src/util/error-handler.ts +1 -0
  493. package/src/util/fix-json.ts +401 -0
  494. package/src/util/get-potential-start-index.ts +39 -0
  495. package/src/util/index.ts +12 -0
  496. package/src/util/is-deep-equal-data.ts +48 -0
  497. package/src/util/is-non-empty-object.ts +5 -0
  498. package/src/util/job.ts +1 -0
  499. package/src/util/log-v2-compatibility-warning.ts +21 -0
  500. package/src/util/merge-abort-signals.ts +43 -0
  501. package/src/util/merge-objects.ts +79 -0
  502. package/src/util/notify.ts +22 -0
  503. package/src/util/now.ts +4 -0
  504. package/src/util/parse-partial-json.ts +30 -0
  505. package/src/util/prepare-headers.ts +14 -0
  506. package/src/util/prepare-retries.ts +47 -0
  507. package/src/util/retry-error.ts +41 -0
  508. package/src/util/retry-with-exponential-backoff.ts +154 -0
  509. package/src/util/serial-job-executor.ts +36 -0
  510. package/src/util/simulate-readable-stream.ts +39 -0
  511. package/src/util/split-array.ts +20 -0
  512. package/src/util/value-of.ts +65 -0
  513. package/src/util/write-to-server-response.ts +49 -0
  514. package/src/version.ts +5 -0
  515. package/test.d.ts +1 -0
@@ -0,0 +1,346 @@
1
+ import { z } from 'zod/v4';
2
+ import {
3
+ ProviderMetadata,
4
+ providerMetadataSchema,
5
+ } from '../types/provider-metadata';
6
+ import { FinishReason } from '../types/language-model';
7
+ import {
8
+ InferUIMessageData,
9
+ InferUIMessageMetadata,
10
+ UIDataTypes,
11
+ UIMessage,
12
+ } from '../ui/ui-messages';
13
+ import { ValueOf } from '../util/value-of';
14
+ import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';
15
+
16
+ export const uiMessageChunkSchema = lazySchema(() =>
17
+ zodSchema(
18
+ z.union([
19
+ z.strictObject({
20
+ type: z.literal('text-start'),
21
+ id: z.string(),
22
+ providerMetadata: providerMetadataSchema.optional(),
23
+ }),
24
+ z.strictObject({
25
+ type: z.literal('text-delta'),
26
+ id: z.string(),
27
+ delta: z.string(),
28
+ providerMetadata: providerMetadataSchema.optional(),
29
+ }),
30
+ z.strictObject({
31
+ type: z.literal('text-end'),
32
+ id: z.string(),
33
+ providerMetadata: providerMetadataSchema.optional(),
34
+ }),
35
+ z.strictObject({
36
+ type: z.literal('error'),
37
+ errorText: z.string(),
38
+ }),
39
+ z.strictObject({
40
+ type: z.literal('tool-input-start'),
41
+ toolCallId: z.string(),
42
+ toolName: z.string(),
43
+ providerExecuted: z.boolean().optional(),
44
+ providerMetadata: providerMetadataSchema.optional(),
45
+ dynamic: z.boolean().optional(),
46
+ title: z.string().optional(),
47
+ }),
48
+ z.strictObject({
49
+ type: z.literal('tool-input-delta'),
50
+ toolCallId: z.string(),
51
+ inputTextDelta: z.string(),
52
+ }),
53
+ z.strictObject({
54
+ type: z.literal('tool-input-available'),
55
+ toolCallId: z.string(),
56
+ toolName: z.string(),
57
+ input: z.unknown(),
58
+ providerExecuted: z.boolean().optional(),
59
+ providerMetadata: providerMetadataSchema.optional(),
60
+ dynamic: z.boolean().optional(),
61
+ title: z.string().optional(),
62
+ }),
63
+ z.strictObject({
64
+ type: z.literal('tool-input-error'),
65
+ toolCallId: z.string(),
66
+ toolName: z.string(),
67
+ input: z.unknown(),
68
+ providerExecuted: z.boolean().optional(),
69
+ providerMetadata: providerMetadataSchema.optional(),
70
+ dynamic: z.boolean().optional(),
71
+ errorText: z.string(),
72
+ title: z.string().optional(),
73
+ }),
74
+ z.strictObject({
75
+ type: z.literal('tool-approval-request'),
76
+ approvalId: z.string(),
77
+ toolCallId: z.string(),
78
+ }),
79
+ z.strictObject({
80
+ type: z.literal('tool-output-available'),
81
+ toolCallId: z.string(),
82
+ output: z.unknown(),
83
+ providerExecuted: z.boolean().optional(),
84
+ dynamic: z.boolean().optional(),
85
+ preliminary: z.boolean().optional(),
86
+ }),
87
+ z.strictObject({
88
+ type: z.literal('tool-output-error'),
89
+ toolCallId: z.string(),
90
+ errorText: z.string(),
91
+ providerExecuted: z.boolean().optional(),
92
+ dynamic: z.boolean().optional(),
93
+ }),
94
+ z.strictObject({
95
+ type: z.literal('tool-output-denied'),
96
+ toolCallId: z.string(),
97
+ }),
98
+ z.strictObject({
99
+ type: z.literal('reasoning-start'),
100
+ id: z.string(),
101
+ providerMetadata: providerMetadataSchema.optional(),
102
+ }),
103
+ z.strictObject({
104
+ type: z.literal('reasoning-delta'),
105
+ id: z.string(),
106
+ delta: z.string(),
107
+ providerMetadata: providerMetadataSchema.optional(),
108
+ }),
109
+ z.strictObject({
110
+ type: z.literal('reasoning-end'),
111
+ id: z.string(),
112
+ providerMetadata: providerMetadataSchema.optional(),
113
+ }),
114
+ z.strictObject({
115
+ type: z.literal('source-url'),
116
+ sourceId: z.string(),
117
+ url: z.string(),
118
+ title: z.string().optional(),
119
+ providerMetadata: providerMetadataSchema.optional(),
120
+ }),
121
+ z.strictObject({
122
+ type: z.literal('source-document'),
123
+ sourceId: z.string(),
124
+ mediaType: z.string(),
125
+ title: z.string(),
126
+ filename: z.string().optional(),
127
+ providerMetadata: providerMetadataSchema.optional(),
128
+ }),
129
+ z.strictObject({
130
+ type: z.literal('file'),
131
+ url: z.string(),
132
+ mediaType: z.string(),
133
+ providerMetadata: providerMetadataSchema.optional(),
134
+ }),
135
+ z.strictObject({
136
+ type: z.custom<`data-${string}`>(
137
+ (value): value is `data-${string}` =>
138
+ typeof value === 'string' && value.startsWith('data-'),
139
+ { message: 'Type must start with "data-"' },
140
+ ),
141
+ id: z.string().optional(),
142
+ data: z.unknown(),
143
+ transient: z.boolean().optional(),
144
+ }),
145
+ z.strictObject({
146
+ type: z.literal('start-step'),
147
+ }),
148
+ z.strictObject({
149
+ type: z.literal('finish-step'),
150
+ }),
151
+ z.strictObject({
152
+ type: z.literal('start'),
153
+ messageId: z.string().optional(),
154
+ messageMetadata: z.unknown().optional(),
155
+ }),
156
+ z.strictObject({
157
+ type: z.literal('finish'),
158
+ finishReason: z
159
+ .enum([
160
+ 'stop',
161
+ 'length',
162
+ 'content-filter',
163
+ 'tool-calls',
164
+ 'error',
165
+ 'other',
166
+ ] as const satisfies readonly FinishReason[])
167
+ .optional(),
168
+ messageMetadata: z.unknown().optional(),
169
+ }),
170
+ z.strictObject({
171
+ type: z.literal('abort'),
172
+ reason: z.string().optional(),
173
+ }),
174
+ z.strictObject({
175
+ type: z.literal('message-metadata'),
176
+ messageMetadata: z.unknown(),
177
+ }),
178
+ ]),
179
+ ),
180
+ );
181
+
182
+ export type DataUIMessageChunk<DATA_TYPES extends UIDataTypes> = ValueOf<{
183
+ [NAME in keyof DATA_TYPES & string]: {
184
+ type: `data-${NAME}`;
185
+ id?: string;
186
+ data: DATA_TYPES[NAME];
187
+ transient?: boolean;
188
+ };
189
+ }>;
190
+
191
+ export type UIMessageChunk<
192
+ METADATA = unknown,
193
+ DATA_TYPES extends UIDataTypes = UIDataTypes,
194
+ > =
195
+ | {
196
+ type: 'text-start';
197
+ id: string;
198
+ providerMetadata?: ProviderMetadata;
199
+ }
200
+ | {
201
+ type: 'text-delta';
202
+ delta: string;
203
+ id: string;
204
+ providerMetadata?: ProviderMetadata;
205
+ }
206
+ | {
207
+ type: 'text-end';
208
+ id: string;
209
+ providerMetadata?: ProviderMetadata;
210
+ }
211
+ | {
212
+ type: 'reasoning-start';
213
+ id: string;
214
+ providerMetadata?: ProviderMetadata;
215
+ }
216
+ | {
217
+ type: 'reasoning-delta';
218
+ id: string;
219
+ delta: string;
220
+ providerMetadata?: ProviderMetadata;
221
+ }
222
+ | {
223
+ type: 'reasoning-end';
224
+ id: string;
225
+ providerMetadata?: ProviderMetadata;
226
+ }
227
+ | {
228
+ type: 'error';
229
+ errorText: string;
230
+ }
231
+ | {
232
+ type: 'tool-input-available';
233
+ toolCallId: string;
234
+ toolName: string;
235
+ input: unknown;
236
+ providerExecuted?: boolean;
237
+ providerMetadata?: ProviderMetadata;
238
+ dynamic?: boolean;
239
+ title?: string;
240
+ }
241
+ | {
242
+ type: 'tool-input-error';
243
+ toolCallId: string;
244
+ toolName: string;
245
+ input: unknown;
246
+ providerExecuted?: boolean;
247
+ providerMetadata?: ProviderMetadata;
248
+ dynamic?: boolean;
249
+ errorText: string;
250
+ title?: string;
251
+ }
252
+ | {
253
+ type: 'tool-approval-request';
254
+ approvalId: string;
255
+ toolCallId: string;
256
+ }
257
+ | {
258
+ type: 'tool-output-available';
259
+ toolCallId: string;
260
+ output: unknown;
261
+ providerExecuted?: boolean;
262
+ dynamic?: boolean;
263
+ preliminary?: boolean;
264
+ }
265
+ | {
266
+ type: 'tool-output-error';
267
+ toolCallId: string;
268
+ errorText: string;
269
+ providerExecuted?: boolean;
270
+ dynamic?: boolean;
271
+ }
272
+ | {
273
+ type: 'tool-output-denied';
274
+ toolCallId: string;
275
+ }
276
+ | {
277
+ type: 'tool-input-start';
278
+ toolCallId: string;
279
+ toolName: string;
280
+ providerExecuted?: boolean;
281
+ providerMetadata?: ProviderMetadata;
282
+ dynamic?: boolean;
283
+ title?: string;
284
+ }
285
+ | {
286
+ type: 'tool-input-delta';
287
+ toolCallId: string;
288
+ inputTextDelta: string;
289
+ }
290
+ | {
291
+ type: 'source-url';
292
+ sourceId: string;
293
+ url: string;
294
+ title?: string;
295
+ providerMetadata?: ProviderMetadata;
296
+ }
297
+ | {
298
+ type: 'source-document';
299
+ sourceId: string;
300
+ mediaType: string;
301
+ title: string;
302
+ filename?: string;
303
+ providerMetadata?: ProviderMetadata;
304
+ }
305
+ | {
306
+ type: 'file';
307
+ url: string;
308
+ mediaType: string;
309
+ providerMetadata?: ProviderMetadata;
310
+ }
311
+ | DataUIMessageChunk<DATA_TYPES>
312
+ | {
313
+ type: 'start-step';
314
+ }
315
+ | {
316
+ type: 'finish-step';
317
+ }
318
+ | {
319
+ type: 'start';
320
+ messageId?: string;
321
+ messageMetadata?: METADATA;
322
+ }
323
+ | {
324
+ type: 'finish';
325
+ finishReason?: FinishReason;
326
+ messageMetadata?: METADATA;
327
+ }
328
+ | {
329
+ type: 'abort';
330
+ reason?: string;
331
+ }
332
+ | {
333
+ type: 'message-metadata';
334
+ messageMetadata: METADATA;
335
+ };
336
+
337
+ export function isDataUIMessageChunk(
338
+ chunk: UIMessageChunk,
339
+ ): chunk is DataUIMessageChunk<UIDataTypes> {
340
+ return chunk.type.startsWith('data-');
341
+ }
342
+
343
+ export type InferUIMessageChunk<T extends UIMessage> = UIMessageChunk<
344
+ InferUIMessageMetadata<T>,
345
+ InferUIMessageData<T>
346
+ >;
@@ -0,0 +1,7 @@
1
+ export const UI_MESSAGE_STREAM_HEADERS = {
2
+ 'content-type': 'text/event-stream',
3
+ 'cache-control': 'no-cache',
4
+ connection: 'keep-alive',
5
+ 'x-vercel-ai-ui-message-stream': 'v1',
6
+ 'x-accel-buffering': 'no', // disable nginx buffering
7
+ };
@@ -0,0 +1,32 @@
1
+ import { FinishReason } from '../types/language-model';
2
+ import { UIMessage } from '../ui/ui-messages';
3
+
4
+ export type UIMessageStreamOnFinishCallback<UI_MESSAGE extends UIMessage> =
5
+ (event: {
6
+ /**
7
+ * The updated list of UI messages.
8
+ */
9
+ messages: UI_MESSAGE[];
10
+
11
+ /**
12
+ * Indicates whether the response message is a continuation of the last original message,
13
+ * or if a new message was created.
14
+ */
15
+ isContinuation: boolean;
16
+
17
+ /**
18
+ * Indicates whether the stream was aborted.
19
+ */
20
+ isAborted: boolean;
21
+
22
+ /**
23
+ * The message that was sent to the client as a response
24
+ * (including the original message if it was extended).
25
+ */
26
+ responseMessage: UI_MESSAGE;
27
+
28
+ /**
29
+ * The reason why the generation finished.
30
+ */
31
+ finishReason?: FinishReason;
32
+ }) => PromiseLike<void> | void;
@@ -0,0 +1,25 @@
1
+ import { UIMessage } from '../ui/ui-messages';
2
+
3
+ /**
4
+ * Callback that is called when a step finishes during streaming.
5
+ * This is useful for persisting intermediate UI messages during multi-step agent runs.
6
+ */
7
+ export type UIMessageStreamOnStepFinishCallback<UI_MESSAGE extends UIMessage> =
8
+ (event: {
9
+ /**
10
+ * The updated list of UI messages at the end of this step.
11
+ */
12
+ messages: UI_MESSAGE[];
13
+
14
+ /**
15
+ * Indicates whether the response message is a continuation of the last original message,
16
+ * or if a new message was created.
17
+ */
18
+ isContinuation: boolean;
19
+
20
+ /**
21
+ * The message that was sent to the client as a response
22
+ * (including the original message if it was extended).
23
+ */
24
+ responseMessage: UI_MESSAGE;
25
+ }) => PromiseLike<void> | void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Options for creating a UI message stream response.
3
+ * Extends the standard `ResponseInit` with additional streaming options.
4
+ */
5
+ export type UIMessageStreamResponseInit = ResponseInit & {
6
+ /**
7
+ * Optional callback to consume a copy of the SSE stream independently.
8
+ * This is useful for logging, debugging, or processing the stream in parallel.
9
+ * The callback receives a tee'd copy of the stream and does not block the response.
10
+ */
11
+ consumeSseStream?: (options: {
12
+ stream: ReadableStream<string>;
13
+ }) => PromiseLike<void> | void;
14
+ };
@@ -0,0 +1,24 @@
1
+ import { UIMessage } from '../ui';
2
+ import { ErrorHandler } from '../util/error-handler';
3
+ import { InferUIMessageChunk } from './ui-message-chunks';
4
+
5
+ export interface UIMessageStreamWriter<
6
+ UI_MESSAGE extends UIMessage = UIMessage,
7
+ > {
8
+ /**
9
+ * Appends a data stream part to the stream.
10
+ */
11
+ write(part: InferUIMessageChunk<UI_MESSAGE>): void;
12
+
13
+ /**
14
+ * Merges the contents of another stream to this stream.
15
+ */
16
+ merge(stream: ReadableStream<InferUIMessageChunk<UI_MESSAGE>>): void;
17
+
18
+ /**
19
+ * Error handler that is used by the data stream writer.
20
+ * This is intended for forwarding when merging streams
21
+ * to prevent duplicated error masking.
22
+ */
23
+ onError: ErrorHandler | undefined;
24
+ }
@@ -0,0 +1,3 @@
1
+ export function asArray<T>(value: T | T[] | undefined): T[] {
2
+ return value === undefined ? [] : Array.isArray(value) ? value : [value];
3
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * A type that combines AsyncIterable and ReadableStream.
3
+ * This allows a ReadableStream to be consumed using for-await-of syntax.
4
+ */
5
+ export type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
6
+
7
+ /**
8
+ * Wraps a ReadableStream and returns an object that is both a ReadableStream and an AsyncIterable.
9
+ * This enables consumption of the stream using for-await-of, with proper resource cleanup on early exit or error.
10
+ *
11
+ * @template T The type of the stream's chunks.
12
+ * @param source The source ReadableStream to wrap.
13
+ * @returns An AsyncIterableStream that can be used as both a ReadableStream and an AsyncIterable.
14
+ */
15
+ export function createAsyncIterableStream<T>(
16
+ source: ReadableStream<T>,
17
+ ): AsyncIterableStream<T> {
18
+ // Pipe through a TransformStream to ensure a fresh, unlocked stream.
19
+ const stream = source.pipeThrough(new TransformStream<T, T>());
20
+
21
+ /**
22
+ * Implements the async iterator protocol for the stream.
23
+ * Ensures proper cleanup (cancelling and releasing the reader) on completion, early exit, or error.
24
+ */
25
+ (stream as AsyncIterableStream<T>)[Symbol.asyncIterator] = function (
26
+ this: ReadableStream<T>,
27
+ ): AsyncIterator<T> {
28
+ const reader = this.getReader();
29
+
30
+ let finished = false;
31
+
32
+ /**
33
+ * Cleans up the reader by cancelling and releasing the lock.
34
+ */
35
+ async function cleanup(cancelStream: boolean) {
36
+ if (finished) return;
37
+
38
+ finished = true;
39
+ try {
40
+ if (cancelStream) {
41
+ await reader.cancel?.();
42
+ }
43
+ } finally {
44
+ try {
45
+ reader.releaseLock();
46
+ } catch {}
47
+ }
48
+ }
49
+
50
+ return {
51
+ /**
52
+ * Reads the next chunk from the stream.
53
+ * @returns A promise resolving to the next IteratorResult.
54
+ */
55
+ async next(): Promise<IteratorResult<T>> {
56
+ if (finished) {
57
+ return { done: true, value: undefined };
58
+ }
59
+
60
+ const { done, value } = await reader.read();
61
+
62
+ if (done) {
63
+ await cleanup(true);
64
+ return { done: true, value: undefined };
65
+ }
66
+
67
+ return { done: false, value };
68
+ },
69
+
70
+ /**
71
+ * May be called on early exit (e.g., break from for-await) or after completion.
72
+ * Ensures the stream is cancelled and resources are released.
73
+ * @returns A promise resolving to a completed IteratorResult.
74
+ */
75
+ async return(): Promise<IteratorResult<T>> {
76
+ await cleanup(true);
77
+ return { done: true, value: undefined };
78
+ },
79
+
80
+ /**
81
+ * Called on early exit with error.
82
+ * Ensures the stream is cancelled and resources are released, then rethrows the error.
83
+ * @param err The error to throw.
84
+ * @returns A promise that rejects with the provided error.
85
+ */
86
+ async throw(err: unknown): Promise<IteratorResult<T>> {
87
+ await cleanup(true);
88
+ throw err;
89
+ },
90
+ };
91
+ };
92
+
93
+ return stream as AsyncIterableStream<T>;
94
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Consumes a ReadableStream until it's fully read.
3
+ *
4
+ * This function reads the stream chunk by chunk until the stream is exhausted.
5
+ * It doesn't process or return the data from the stream; it simply ensures
6
+ * that the entire stream is read.
7
+ *
8
+ * @param options - The options for consuming the stream.
9
+ * @param options.stream - The ReadableStream to be consumed.
10
+ * @param options.onError - Optional callback to handle errors that occur during consumption.
11
+ * @returns A promise that resolves when the stream is fully consumed.
12
+ */
13
+ export async function consumeStream({
14
+ stream,
15
+ onError,
16
+ }: {
17
+ stream: ReadableStream;
18
+ onError?: (error: unknown) => void;
19
+ }): Promise<void> {
20
+ const reader = stream.getReader();
21
+ try {
22
+ while (true) {
23
+ const { done } = await reader.read();
24
+ if (done) break;
25
+ }
26
+ } catch (error) {
27
+ onError?.(error);
28
+ } finally {
29
+ reader.releaseLock();
30
+ }
31
+ }
@@ -0,0 +1,46 @@
1
+ import { InvalidArgumentError } from '../error/invalid-argument-error';
2
+
3
+ /**
4
+ * Calculates the cosine similarity between two vectors. This is a useful metric for
5
+ * comparing the similarity of two vectors such as embeddings.
6
+ *
7
+ * @param vector1 - The first vector.
8
+ * @param vector2 - The second vector.
9
+ *
10
+ * @returns The cosine similarity between vector1 and vector2, or 0 if either vector is the zero vector.
11
+ *
12
+ * @throws {InvalidArgumentError} If the vectors do not have the same length.
13
+ */
14
+ export function cosineSimilarity(vector1: number[], vector2: number[]): number {
15
+ if (vector1.length !== vector2.length) {
16
+ throw new InvalidArgumentError({
17
+ parameter: 'vector1,vector2',
18
+ value: { vector1Length: vector1.length, vector2Length: vector2.length },
19
+ message: `Vectors must have the same length`,
20
+ });
21
+ }
22
+
23
+ const n = vector1.length;
24
+
25
+ if (n === 0) {
26
+ return 0; // Return 0 for empty vectors if no error is thrown
27
+ }
28
+
29
+ let magnitudeSquared1 = 0;
30
+ let magnitudeSquared2 = 0;
31
+ let dotProduct = 0;
32
+
33
+ for (let i = 0; i < n; i++) {
34
+ const value1 = vector1[i];
35
+ const value2 = vector2[i];
36
+
37
+ magnitudeSquared1 += value1 * value1;
38
+ magnitudeSquared2 += value2 * value2;
39
+ dotProduct += value1 * value2;
40
+ }
41
+
42
+ return magnitudeSquared1 === 0 || magnitudeSquared2 === 0
43
+ ? 0
44
+ : dotProduct /
45
+ (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2));
46
+ }
@@ -0,0 +1,30 @@
1
+ import { ErrorHandler } from './error-handler';
2
+
3
+ /**
4
+ * Creates a Promise with externally accessible resolve and reject functions.
5
+ *
6
+ * @template T - The type of the value that the Promise will resolve to.
7
+ * @returns An object containing:
8
+ * - promise: A Promise that can be resolved or rejected externally.
9
+ * - resolve: A function to resolve the Promise with a value of type T.
10
+ * - reject: A function to reject the Promise with an error.
11
+ */
12
+ export function createResolvablePromise<T = any>(): {
13
+ promise: Promise<T>;
14
+ resolve: (value: T) => void;
15
+ reject: ErrorHandler;
16
+ } {
17
+ let resolve: (value: T) => void;
18
+ let reject: ErrorHandler;
19
+
20
+ const promise = new Promise<T>((res, rej) => {
21
+ resolve = res;
22
+ reject = rej;
23
+ });
24
+
25
+ return {
26
+ promise,
27
+ resolve: resolve!,
28
+ reject: reject!,
29
+ };
30
+ }