@fairyhunter13/ai-sdk 6.0.116-fork.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/CHANGELOG.md +7582 -0
  2. package/README.md +238 -0
  3. package/dist/index.d.mts +6751 -0
  4. package/dist/index.d.ts +6751 -0
  5. package/dist/index.js +14155 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +14127 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/internal/index.d.mts +324 -0
  10. package/dist/internal/index.d.ts +324 -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 +158 -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 +1144 -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 +246 -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 +1118 -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 +535 -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 +309 -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 +244 -0
  267. package/src/agent/tool-loop-agent.ts +205 -0
  268. package/src/embed/embed-events.ts +109 -0
  269. package/src/embed/embed-many-result.ts +53 -0
  270. package/src/embed/embed-many.ts +484 -0
  271. package/src/embed/embed-result.ts +50 -0
  272. package/src/embed/embed.ts +294 -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 +168 -0
  313. package/src/generate-text/create-stream-text-part-transform.ts +229 -0
  314. package/src/generate-text/execute-tool-call.ts +190 -0
  315. package/src/generate-text/extract-reasoning-content.ts +17 -0
  316. package/src/generate-text/extract-text-content.ts +15 -0
  317. package/src/generate-text/generate-text-result.ts +168 -0
  318. package/src/generate-text/generate-text.ts +1411 -0
  319. package/src/generate-text/generated-file.ts +70 -0
  320. package/src/generate-text/index.ts +74 -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-text-result.ts +536 -0
  334. package/src/generate-text/stream-text.ts +2693 -0
  335. package/src/generate-text/to-response-messages.ts +178 -0
  336. package/src/generate-text/tool-approval-request-output.ts +21 -0
  337. package/src/generate-text/tool-call-repair-function.ts +27 -0
  338. package/src/generate-text/tool-call.ts +47 -0
  339. package/src/generate-text/tool-error.ts +34 -0
  340. package/src/generate-text/tool-output-denied.ts +21 -0
  341. package/src/generate-text/tool-output.ts +7 -0
  342. package/src/generate-text/tool-result.ts +36 -0
  343. package/src/generate-text/tool-set.ts +14 -0
  344. package/src/generate-video/generate-video-result.ts +36 -0
  345. package/src/generate-video/generate-video.ts +402 -0
  346. package/src/generate-video/index.ts +3 -0
  347. package/src/global.ts +36 -0
  348. package/src/index.ts +49 -0
  349. package/src/logger/index.ts +6 -0
  350. package/src/logger/log-warnings.ts +140 -0
  351. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  352. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  353. package/src/middleware/default-settings-middleware.ts +33 -0
  354. package/src/middleware/extract-json-middleware.ts +197 -0
  355. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  356. package/src/middleware/index.ts +10 -0
  357. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  358. package/src/middleware/wrap-embedding-model.ts +89 -0
  359. package/src/middleware/wrap-image-model.ts +92 -0
  360. package/src/middleware/wrap-language-model.ts +108 -0
  361. package/src/middleware/wrap-provider.ts +51 -0
  362. package/src/model/as-embedding-model-v3.ts +24 -0
  363. package/src/model/as-embedding-model-v4.ts +25 -0
  364. package/src/model/as-image-model-v3.ts +24 -0
  365. package/src/model/as-image-model-v4.ts +21 -0
  366. package/src/model/as-language-model-v3.ts +103 -0
  367. package/src/model/as-language-model-v4.ts +25 -0
  368. package/src/model/as-provider-v3.ts +36 -0
  369. package/src/model/as-provider-v4.ts +47 -0
  370. package/src/model/as-reranking-model-v4.ts +16 -0
  371. package/src/model/as-speech-model-v3.ts +24 -0
  372. package/src/model/as-speech-model-v4.ts +21 -0
  373. package/src/model/as-transcription-model-v3.ts +24 -0
  374. package/src/model/as-transcription-model-v4.ts +25 -0
  375. package/src/model/as-video-model-v4.ts +19 -0
  376. package/src/model/resolve-model.ts +172 -0
  377. package/src/prompt/call-settings.ts +177 -0
  378. package/src/prompt/content-part.ts +236 -0
  379. package/src/prompt/convert-to-language-model-prompt.ts +548 -0
  380. package/src/prompt/create-tool-model-output.ts +34 -0
  381. package/src/prompt/data-content.ts +134 -0
  382. package/src/prompt/index.ts +27 -0
  383. package/src/prompt/invalid-data-content-error.ts +29 -0
  384. package/src/prompt/invalid-message-role-error.ts +27 -0
  385. package/src/prompt/message-conversion-error.ts +28 -0
  386. package/src/prompt/message.ts +72 -0
  387. package/src/prompt/prepare-call-settings.ts +110 -0
  388. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  389. package/src/prompt/prompt.ts +43 -0
  390. package/src/prompt/split-data-url.ts +17 -0
  391. package/src/prompt/standardize-prompt.ts +99 -0
  392. package/src/prompt/wrap-gateway-error.ts +29 -0
  393. package/src/registry/custom-provider.ts +210 -0
  394. package/src/registry/index.ts +7 -0
  395. package/src/registry/no-such-provider-error.ts +41 -0
  396. package/src/registry/provider-registry.ts +331 -0
  397. package/src/rerank/index.ts +2 -0
  398. package/src/rerank/rerank-result.ts +70 -0
  399. package/src/rerank/rerank.ts +239 -0
  400. package/src/telemetry/assemble-operation-name.ts +21 -0
  401. package/src/telemetry/get-base-telemetry-attributes.ts +55 -0
  402. package/src/telemetry/get-global-telemetry-integration.ts +110 -0
  403. package/src/telemetry/get-tracer.ts +20 -0
  404. package/src/telemetry/index.ts +4 -0
  405. package/src/telemetry/noop-tracer.ts +69 -0
  406. package/src/telemetry/open-telemetry-integration.ts +537 -0
  407. package/src/telemetry/record-span.ts +75 -0
  408. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  409. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  410. package/src/telemetry/telemetry-integration-registry.ts +22 -0
  411. package/src/telemetry/telemetry-integration.ts +100 -0
  412. package/src/telemetry/telemetry-settings.ts +55 -0
  413. package/src/test/mock-embedding-model-v2.ts +35 -0
  414. package/src/test/mock-embedding-model-v3.ts +48 -0
  415. package/src/test/mock-embedding-model-v4.ts +48 -0
  416. package/src/test/mock-image-model-v2.ts +28 -0
  417. package/src/test/mock-image-model-v3.ts +28 -0
  418. package/src/test/mock-image-model-v4.ts +28 -0
  419. package/src/test/mock-language-model-v2.ts +72 -0
  420. package/src/test/mock-language-model-v3.ts +77 -0
  421. package/src/test/mock-language-model-v4.ts +77 -0
  422. package/src/test/mock-provider-v2.ts +68 -0
  423. package/src/test/mock-provider-v3.ts +80 -0
  424. package/src/test/mock-provider-v4.ts +80 -0
  425. package/src/test/mock-reranking-model-v3.ts +25 -0
  426. package/src/test/mock-reranking-model-v4.ts +25 -0
  427. package/src/test/mock-server-response.ts +69 -0
  428. package/src/test/mock-speech-model-v2.ts +24 -0
  429. package/src/test/mock-speech-model-v3.ts +24 -0
  430. package/src/test/mock-speech-model-v4.ts +24 -0
  431. package/src/test/mock-tracer.ts +156 -0
  432. package/src/test/mock-transcription-model-v2.ts +24 -0
  433. package/src/test/mock-transcription-model-v3.ts +24 -0
  434. package/src/test/mock-transcription-model-v4.ts +24 -0
  435. package/src/test/mock-values.ts +4 -0
  436. package/src/test/mock-video-model-v3.ts +28 -0
  437. package/src/test/mock-video-model-v4.ts +28 -0
  438. package/src/test/not-implemented.ts +3 -0
  439. package/src/text-stream/create-text-stream-response.ts +30 -0
  440. package/src/text-stream/index.ts +2 -0
  441. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  442. package/src/transcribe/index.ts +2 -0
  443. package/src/transcribe/transcribe-result.ts +60 -0
  444. package/src/transcribe/transcribe.ts +187 -0
  445. package/src/types/embedding-model-middleware.ts +15 -0
  446. package/src/types/embedding-model.ts +20 -0
  447. package/src/types/image-model-middleware.ts +15 -0
  448. package/src/types/image-model-response-metadata.ts +16 -0
  449. package/src/types/image-model.ts +19 -0
  450. package/src/types/index.ts +29 -0
  451. package/src/types/json-value.ts +15 -0
  452. package/src/types/language-model-middleware.ts +15 -0
  453. package/src/types/language-model-request-metadata.ts +6 -0
  454. package/src/types/language-model-response-metadata.ts +21 -0
  455. package/src/types/language-model.ts +106 -0
  456. package/src/types/provider-metadata.ts +16 -0
  457. package/src/types/provider.ts +55 -0
  458. package/src/types/reranking-model.ts +6 -0
  459. package/src/types/speech-model-response-metadata.ts +21 -0
  460. package/src/types/speech-model.ts +10 -0
  461. package/src/types/transcription-model-response-metadata.ts +16 -0
  462. package/src/types/transcription-model.ts +14 -0
  463. package/src/types/usage.ts +200 -0
  464. package/src/types/video-model-response-metadata.ts +28 -0
  465. package/src/types/video-model.ts +15 -0
  466. package/src/types/warning.ts +7 -0
  467. package/src/ui/call-completion-api.ts +157 -0
  468. package/src/ui/chat-transport.ts +83 -0
  469. package/src/ui/chat.ts +786 -0
  470. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  471. package/src/ui/convert-to-model-messages.ts +403 -0
  472. package/src/ui/default-chat-transport.ts +36 -0
  473. package/src/ui/direct-chat-transport.ts +117 -0
  474. package/src/ui/http-chat-transport.ts +273 -0
  475. package/src/ui/index.ts +76 -0
  476. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  477. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  478. package/src/ui/process-text-stream.ts +16 -0
  479. package/src/ui/process-ui-message-stream.ts +858 -0
  480. package/src/ui/text-stream-chat-transport.ts +23 -0
  481. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  482. package/src/ui/ui-messages.ts +602 -0
  483. package/src/ui/use-completion.ts +84 -0
  484. package/src/ui/validate-ui-messages.ts +521 -0
  485. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  486. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  487. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  488. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  489. package/src/ui-message-stream/index.ts +14 -0
  490. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  491. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  492. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  493. package/src/ui-message-stream/ui-message-chunks.ts +372 -0
  494. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  495. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  496. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  497. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  498. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  499. package/src/util/as-array.ts +3 -0
  500. package/src/util/async-iterable-stream.ts +94 -0
  501. package/src/util/consume-stream.ts +31 -0
  502. package/src/util/cosine-similarity.ts +46 -0
  503. package/src/util/create-resolvable-promise.ts +30 -0
  504. package/src/util/create-stitchable-stream.ts +112 -0
  505. package/src/util/data-url.ts +17 -0
  506. package/src/util/deep-partial.ts +84 -0
  507. package/src/util/detect-media-type.ts +226 -0
  508. package/src/util/download/create-download.ts +13 -0
  509. package/src/util/download/download-function.ts +45 -0
  510. package/src/util/download/download.ts +74 -0
  511. package/src/util/error-handler.ts +1 -0
  512. package/src/util/fix-json.ts +401 -0
  513. package/src/util/get-potential-start-index.ts +39 -0
  514. package/src/util/index.ts +12 -0
  515. package/src/util/is-deep-equal-data.ts +48 -0
  516. package/src/util/is-non-empty-object.ts +5 -0
  517. package/src/util/job.ts +1 -0
  518. package/src/util/log-v2-compatibility-warning.ts +21 -0
  519. package/src/util/merge-abort-signals.ts +43 -0
  520. package/src/util/merge-objects.ts +79 -0
  521. package/src/util/notify.ts +22 -0
  522. package/src/util/now.ts +4 -0
  523. package/src/util/parse-partial-json.ts +30 -0
  524. package/src/util/prepare-headers.ts +14 -0
  525. package/src/util/prepare-retries.ts +47 -0
  526. package/src/util/retry-error.ts +41 -0
  527. package/src/util/retry-with-exponential-backoff.ts +154 -0
  528. package/src/util/serial-job-executor.ts +36 -0
  529. package/src/util/simulate-readable-stream.ts +39 -0
  530. package/src/util/split-array.ts +20 -0
  531. package/src/util/value-of.ts +65 -0
  532. package/src/util/write-to-server-response.ts +49 -0
  533. package/src/version.ts +5 -0
  534. package/test.d.ts +1 -0
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: Streaming Status Shows But No Text Appears
3
+ description: Why useChat shows "streaming" status without any visible content
4
+ ---
5
+
6
+ # Streaming Status Shows But No Text Appears
7
+
8
+ ## Issue
9
+
10
+ When using `useChat`, the status changes to "streaming" immediately, but no text appears for several seconds.
11
+
12
+ ## Background
13
+
14
+ The status changes to "streaming" as soon as the connection to the server is established and streaming begins - this includes metadata streaming, not just the LLM's generated tokens.
15
+
16
+ ## Solution
17
+
18
+ Create a custom loading state that checks if the last assistant message actually contains content:
19
+
20
+ ```tsx
21
+ 'use client';
22
+
23
+ import { useChat } from '@ai-sdk/react';
24
+
25
+ export default function Page() {
26
+ const { messages, status } = useChat();
27
+
28
+ const lastMessage = messages.at(-1);
29
+
30
+ const showLoader =
31
+ status === 'streaming' &&
32
+ lastMessage?.role === 'assistant' &&
33
+ lastMessage?.parts?.length === 0;
34
+
35
+ return (
36
+ <>
37
+ {messages.map(message => (
38
+ <div key={message.id}>
39
+ {message.role === 'user' ? 'User: ' : 'AI: '}
40
+ {message.parts.map((part, index) =>
41
+ part.type === 'text' ? <span key={index}>{part.text}</span> : null,
42
+ )}
43
+ </div>
44
+ ))}
45
+
46
+ {showLoader && <div>Loading...</div>}
47
+ </>
48
+ );
49
+ }
50
+ ```
51
+
52
+ You can also check for specific part types if you're waiting for something specific:
53
+
54
+ ```tsx
55
+ const showLoader =
56
+ status === 'streaming' &&
57
+ lastMessage?.role === 'assistant' &&
58
+ !lastMessage?.parts?.some(part => part.type === 'text');
59
+ ```
60
+
61
+ ## Related Issues
62
+
63
+ - [GitHub Issue #7586](https://github.com/vercel/ai/issues/7586)
@@ -0,0 +1,141 @@
1
+ ---
2
+ title: Stale body values with useChat
3
+ description: Troubleshooting stale values when passing information via the body parameter of useChat
4
+ ---
5
+
6
+ # Stale body values with useChat
7
+
8
+ ## Issue
9
+
10
+ When using `useChat` and passing dynamic information via the `body` parameter at the hook level, the data remains stale and only reflects the value from the initial component render. This occurs because the body configuration is captured once when the hook is initialized and doesn't update with subsequent component re-renders.
11
+
12
+ ```tsx
13
+ // Problematic code - body data will be stale
14
+ export default function Chat() {
15
+ const [temperature, setTemperature] = useState(0.7);
16
+ const [userId, setUserId] = useState('user123');
17
+
18
+ // This body configuration is captured once and won't update
19
+ const { messages, sendMessage } = useChat({
20
+ transport: new DefaultChatTransport({
21
+ api: '/api/chat',
22
+ body: {
23
+ temperature, // Always the initial value (0.7)
24
+ userId, // Always the initial value ('user123')
25
+ },
26
+ }),
27
+ });
28
+
29
+ // Even if temperature or userId change, the body in requests will still use initial values
30
+ return (
31
+ <div>
32
+ <input
33
+ type="range"
34
+ value={temperature}
35
+ onChange={e => setTemperature(parseFloat(e.target.value))}
36
+ />
37
+ {/* Chat UI */}
38
+ </div>
39
+ );
40
+ }
41
+ ```
42
+
43
+ ## Background
44
+
45
+ The hook-level body configuration is evaluated once during the initial render and doesn't re-evaluate when component state changes.
46
+
47
+ ## Solution
48
+
49
+ Pass dynamic variables via the second argument of the `sendMessage` function instead of at the hook level. Request-level options are evaluated on each call and take precedence over hook-level options.
50
+
51
+ ```tsx
52
+ export default function Chat() {
53
+ const [temperature, setTemperature] = useState(0.7);
54
+ const [userId, setUserId] = useState('user123');
55
+ const [input, setInput] = useState('');
56
+
57
+ const { messages, sendMessage } = useChat({
58
+ // Static configuration only
59
+ transport: new DefaultChatTransport({
60
+ api: '/api/chat',
61
+ }),
62
+ });
63
+
64
+ return (
65
+ <div>
66
+ <input
67
+ type="range"
68
+ value={temperature}
69
+ onChange={e => setTemperature(parseFloat(e.target.value))}
70
+ />
71
+
72
+ <form
73
+ onSubmit={event => {
74
+ event.preventDefault();
75
+ if (input.trim()) {
76
+ // Pass dynamic values as request-level options
77
+ sendMessage(
78
+ { text: input },
79
+ {
80
+ body: {
81
+ temperature, // Current value at request time
82
+ userId, // Current value at request time
83
+ },
84
+ },
85
+ );
86
+ setInput('');
87
+ }
88
+ }}
89
+ >
90
+ <input value={input} onChange={e => setInput(e.target.value)} />
91
+ </form>
92
+ </div>
93
+ );
94
+ }
95
+ ```
96
+
97
+ ### Alternative: Dynamic Hook-Level Configuration
98
+
99
+ If you need hook-level configuration that responds to changes, you can use functions that return configuration values. However, for component state, you'll need to use `useRef` to access current values:
100
+
101
+ ```tsx
102
+ export default function Chat() {
103
+ const temperatureRef = useRef(0.7);
104
+
105
+ const { messages, sendMessage } = useChat({
106
+ transport: new DefaultChatTransport({
107
+ api: '/api/chat',
108
+ body: () => ({
109
+ temperature: temperatureRef.current, // Access via ref.current
110
+ sessionId: getCurrentSessionId(), // Function calls work directly
111
+ }),
112
+ }),
113
+ });
114
+
115
+ // ...
116
+ }
117
+ ```
118
+
119
+ **Recommendation:** Request-level configuration is simpler and more reliable for component state. Use it whenever you need to pass dynamic values that change during the component lifecycle.
120
+
121
+ ### Server-side handling
122
+
123
+ On your server side, retrieve the custom fields by destructuring the request body:
124
+
125
+ ```tsx
126
+ // app/api/chat/route.ts
127
+ export async function POST(req: Request) {
128
+ const { messages, temperature, userId } = await req.json();
129
+
130
+ const result = streamText({
131
+ model: 'openai/gpt-5-mini',
132
+ messages: await convertToModelMessages(messages),
133
+ temperature, // Use the dynamic temperature from the request
134
+ // ... other configuration
135
+ });
136
+
137
+ return result.toUIMessageStreamResponse();
138
+ }
139
+ ```
140
+
141
+ For more information, see [chatbot request configuration documentation](/docs/ai-sdk-ui/chatbot#request-configuration).
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Type Error with onToolCall
3
+ description: How to handle TypeScript type errors when using the onToolCall callback
4
+ ---
5
+
6
+ # Type Error with onToolCall
7
+
8
+ When using the `onToolCall` callback with TypeScript, you may encounter type errors when trying to pass tool properties directly to `addToolOutput`.
9
+
10
+ ## Problem
11
+
12
+ TypeScript cannot automatically narrow the type of `toolCall.toolName` when you have both static and dynamic tools, leading to type errors:
13
+
14
+ ```tsx
15
+ // ❌ This causes a TypeScript error
16
+ const { messages, sendMessage, addToolOutput } = useChat({
17
+ async onToolCall({ toolCall }) {
18
+ addToolOutput({
19
+ tool: toolCall.toolName, // Type 'string' is not assignable to type '"yourTool" | "yourOtherTool"'
20
+ toolCallId: toolCall.toolCallId,
21
+ output: someOutput,
22
+ });
23
+ },
24
+ });
25
+ ```
26
+
27
+ The error occurs because:
28
+
29
+ - Static tools have specific literal types for their names (e.g., `"getWeatherInformation"`)
30
+ - Dynamic tools have `toolName` as a generic `string`
31
+ - TypeScript can't guarantee that `toolCall.toolName` matches your specific tool names
32
+
33
+ ## Solution
34
+
35
+ Check if the tool is dynamic first to enable proper type narrowing:
36
+
37
+ ```tsx
38
+ // ✅ Correct approach with type narrowing
39
+ const { messages, sendMessage, addToolOutput } = useChat({
40
+ async onToolCall({ toolCall }) {
41
+ // Check if it's a dynamic tool first
42
+ if (toolCall.dynamic) {
43
+ return;
44
+ }
45
+
46
+ // Now TypeScript knows this is a static tool with the correct type
47
+ addToolOutput({
48
+ tool: toolCall.toolName, // No type error!
49
+ toolCallId: toolCall.toolCallId,
50
+ output: someOutput,
51
+ });
52
+ },
53
+ });
54
+ ```
55
+
56
+ <Note>
57
+ If you're still using the deprecated `addToolResult` method, this solution
58
+ applies the same way. Consider migrating to `addToolOutput` for consistency
59
+ with the latest API.
60
+ </Note>
61
+
62
+ ## Related
63
+
64
+ - [Chatbot Tool Usage](/docs/ai-sdk-ui/chatbot-tool-usage)
65
+ - [Dynamic Tools](/docs/reference/ai-sdk-core/dynamic-tool)
66
+ - [useChat Reference](/docs/reference/ai-sdk-ui/use-chat)
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Unsupported model version error
3
+ description: Troubleshooting the AI_UnsupportedModelVersionError when migrating to AI SDK 5
4
+ ---
5
+
6
+ # Unsupported model version error
7
+
8
+ ## Issue
9
+
10
+ When migrating to AI SDK 5, you might encounter an error stating that your model uses an unsupported version:
11
+
12
+ ```
13
+ AI_UnsupportedModelVersionError: Unsupported model version v1 for provider "ollama.chat" and model "gamma3:4b".
14
+ AI SDK 5 only supports models that implement specification version "v2".
15
+ ```
16
+
17
+ This error occurs because the version of the provider package you're using implements the older (v1) model specification.
18
+
19
+ ## Background
20
+
21
+ AI SDK 5 requires all provider packages to implement specification version "v2". When you upgrade to AI SDK 5 but don't update your provider packages to compatible versions, they continue using the older "v1" specification, causing this error.
22
+
23
+ ## Solution
24
+
25
+ ### Update provider packages to AI SDK 5 compatible versions
26
+
27
+ Update all your `@ai-sdk/*` provider packages to compatible version `2.0.0` or later. These versions implement the v2 specification required by AI SDK 5.
28
+
29
+ ```bash
30
+ pnpm install ai@latest @ai-sdk/openai@latest @ai-sdk/anthropic@latest
31
+ ```
32
+
33
+ For AI SDK 5 compatibility, you need:
34
+
35
+ - `ai` package: `5.0.0` or later
36
+ - `@ai-sdk/*` packages: `2.0.0` or later (for example, `@ai-sdk/openai`, `@ai-sdk/anthropic`, `@ai-sdk/google`)
37
+ - `@ai-sdk/provider` package: `2.0.0` or later
38
+ - `zod` package: `4.1.8` or later
39
+
40
+ ### Check provider compatibility
41
+
42
+ If you're using a third-party or custom provider, verify that it has been updated to support AI SDK 5. Not all providers may have v2-compatible versions available yet.
43
+
44
+ To check if a provider supports AI SDK 5:
45
+
46
+ 1. Check the provider's package.json for `@ai-sdk/provider` peer dependency version `2.0.0` or later
47
+ 2. Review the provider's changelog or migration guide
48
+ 3. Check the provider's repository for AI SDK 5 support
49
+
50
+ For more information on migrating to AI SDK 5, see the [AI SDK 5.0 migration guide](/docs/migration-guides/migration-guide-5-0).
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Object generation failed with OpenAI
3
+ description: Troubleshooting NoObjectGeneratedError with finish-reason content-filter caused by incompatible Zod schema types when using OpenAI structured outputs
4
+ ---
5
+
6
+ # Object generation failed with OpenAI
7
+
8
+ ## Issue
9
+
10
+ When using structured output generation with OpenAI, you may encounter a `NoObjectGeneratedError` with the finish reason `content-filter`. This error occurs when your Zod schema contains incompatible types that OpenAI's structured output feature cannot process.
11
+
12
+ ```typescript
13
+ // Problematic code - incompatible schema types
14
+ import { generateText, Output } from 'ai';
15
+ import { openai } from '@ai-sdk/openai';
16
+ import { z } from 'zod';
17
+
18
+ const result = await generateText({
19
+ model: openai('gpt-4o-2024-08-06'),
20
+ output: Output.object({
21
+ schema: z.object({
22
+ name: z.string().nullish(), // ❌ .nullish() is not supported
23
+ email: z.string().optional(), // ❌ .optional() is not supported
24
+ age: z.number().nullable(), // ✅ .nullable() is supported
25
+ }),
26
+ }),
27
+ prompt: 'Generate a user profile',
28
+ });
29
+
30
+ // Error: NoObjectGeneratedError: No object generated.
31
+ // Finish reason: content-filter
32
+ ```
33
+
34
+ ## Background
35
+
36
+ OpenAI's structured output generation uses JSON Schema under the hood and has specific requirements for schema compatibility. The Zod methods `.nullish()` and `.optional()` generate JSON Schema patterns that are incompatible with OpenAI's implementation, causing the model to reject the schema and return a content-filter finish reason.
37
+
38
+ ## Solution
39
+
40
+ Replace `.nullish()` and `.optional()` with `.nullable()` in your Zod schemas when using structured output generation with OpenAI models.
41
+
42
+ ```typescript
43
+ import { generateText, Output } from 'ai';
44
+ import { openai } from '@ai-sdk/openai';
45
+ import { z } from 'zod';
46
+
47
+ // Correct approach - use .nullable()
48
+ const result = await generateText({
49
+ model: openai('gpt-4o-2024-08-06'),
50
+ output: Output.object({
51
+ schema: z.object({
52
+ name: z.string().nullable(), // ✅ Use .nullable() instead of .nullish()
53
+ email: z.string().nullable(), // ✅ Use .nullable() instead of .optional()
54
+ age: z.number().nullable(),
55
+ }),
56
+ }),
57
+ prompt: 'Generate a user profile',
58
+ });
59
+
60
+ console.log(result.output);
61
+ // { name: "John Doe", email: "john@example.com", age: 30 }
62
+ // or { name: null, email: null, age: 25 }
63
+ ```
64
+
65
+ ### Schema Type Comparison
66
+
67
+ | Zod Type | Compatible | JSON Schema Behavior |
68
+ | ------------- | ---------- | ------------------------------------------------------ |
69
+ | `.nullable()` | ✅ Yes | Allows `null` or the specified type |
70
+ | `.optional()` | ❌ No | Field can be omitted (not supported) |
71
+ | `.nullish()` | ❌ No | Allows `null`, `undefined`, or omitted (not supported) |
72
+
73
+ ## Related Information
74
+
75
+ - For more details on structured output generation, see [Generating Structured Data](/docs/ai-sdk-core/generating-structured-data)
76
+ - For OpenAI-specific structured output configuration, see [OpenAI Provider - Structured Outputs](/providers/ai-sdk-providers/openai#structured-outputs)
@@ -0,0 +1,82 @@
1
+ ---
2
+ title: Missing Tool Results Error
3
+ description: How to fix the "Tool results are missing for tool calls" error when using the AI SDK.
4
+ ---
5
+
6
+ # Missing Tool Results Error
7
+
8
+ ## Issue
9
+
10
+ You encounter the error `AI_MissingToolResultsError` with a message like:
11
+
12
+ > Tool results are missing for tool calls: ...
13
+
14
+ ## Cause
15
+
16
+ This error occurs when you attempt to send a new message to the Large Language Model (LLM) while there are pending tool calls from a previous turn that have not yet been resolved.
17
+
18
+ The AI SDK core logic validates that all `tool-call` parts in the conversation history are resolved before proceeding. "Resolved" typically means:
19
+
20
+ 1. The tool has been executed and a `tool-result` has been added to the history.
21
+ 2. Or, the tool call has triggered a `tool-approval-response` (if using tool approvals).
22
+
23
+ If a tool call is found without a corresponding result or approval response, this error is thrown to prevent sending an invalid conversation history to the model.
24
+
25
+ ## Solution
26
+
27
+ Ensure that every tool call in your conversation history is properly handled.
28
+
29
+ ### 1. Provide Tool Results
30
+
31
+ For standard tool calls, ensure that you provide the output of the tool execution.
32
+
33
+ ```typescript
34
+ const messages = [
35
+ { role: 'user', content: 'What is the weather in NY?' },
36
+ {
37
+ role: 'assistant',
38
+ content: [
39
+ {
40
+ type: 'tool-call',
41
+ toolCallId: 'call_123',
42
+ toolName: 'getWeather',
43
+ args: { location: 'New York' },
44
+ },
45
+ ],
46
+ },
47
+ // You MUST include this tool message with the result:
48
+ {
49
+ role: 'tool',
50
+ content: [
51
+ {
52
+ type: 'tool-result',
53
+ toolCallId: 'call_123',
54
+ toolName: 'getWeather',
55
+ result: 'Sunny, 25°C',
56
+ },
57
+ ],
58
+ },
59
+ // Now you can add a new user message
60
+ { role: 'user', content: 'And in London?' },
61
+ ];
62
+ ```
63
+
64
+ ### 2. Handle Tool Approvals
65
+
66
+ If you are using the tool approval workflow, ensure that you include the `tool-approval-response`.
67
+
68
+ ```typescript
69
+ const messages = [
70
+ // ... assistant requests tool execution (needs approval)
71
+ {
72
+ role: 'tool',
73
+ content: [
74
+ {
75
+ type: 'tool-approval-response',
76
+ approvalId: 'approval_123',
77
+ approved: true, // or false
78
+ },
79
+ ],
80
+ },
81
+ ];
82
+ ```
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Model is not assignable to type "LanguageModelV1"
3
+ description: Troubleshooting errors related to incompatible models.
4
+ ---
5
+
6
+ # Model is not assignable to type "LanguageModelV1"
7
+
8
+ ## Issue
9
+
10
+ I have updated the AI SDK and now I get the following error: `Type 'SomeModel' is not assignable to type 'LanguageModelV1'.`
11
+
12
+ <Note>Similar errors can occur with `EmbeddingModelV4` as well.</Note>
13
+
14
+ ## Background
15
+
16
+ Sometimes new features are being added to the model specification.
17
+ This can cause incompatibilities with older provider versions.
18
+
19
+ ## Solution
20
+
21
+ Update your provider packages and the AI SDK to the latest version.
@@ -0,0 +1,24 @@
1
+ ---
2
+ title: TypeScript error "Cannot find namespace 'JSX'"
3
+ description: Troubleshooting errors related to TypeScript and JSX.
4
+ ---
5
+
6
+ # TypeScript error "Cannot find namespace 'JSX'"
7
+
8
+ ## Issue
9
+
10
+ I am using the AI SDK in a project without React, e.g. an Hono server, and I get the following error:
11
+ `error TS2503: Cannot find namespace 'JSX'.`
12
+
13
+ ## Background
14
+
15
+ The AI SDK has a dependency on `@types/react` which defines the `JSX` namespace.
16
+ It will be removed in the next major version of the AI SDK.
17
+
18
+ ## Solution
19
+
20
+ You can install the `@types/react` package as a dependency to fix the error.
21
+
22
+ ```bash
23
+ npm install @types/react
24
+ ```
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: React error "Maximum update depth exceeded"
3
+ description: Troubleshooting errors related to the "Maximum update depth exceeded" error.
4
+ ---
5
+
6
+ # React error "Maximum update depth exceeded"
7
+
8
+ ## Issue
9
+
10
+ I am using the AI SDK in a React project with the `useChat` or `useCompletion` hooks
11
+ and I get the following error when AI responses stream in: `Maximum update depth exceeded`.
12
+
13
+ ## Background
14
+
15
+ By default, the UI is re-rendered on every chunk that arrives.
16
+ This can overload the rendering, especially on slower devices or when complex components
17
+ need updating (e.g. Markdown). Throttling can mitigate this.
18
+
19
+ ## Solution
20
+
21
+ Use the `experimental_throttle` option to throttle the UI updates:
22
+
23
+ ### `useChat`
24
+
25
+ ```tsx filename="page.tsx" highlight="2-3"
26
+ const { messages, ... } = useChat({
27
+ // Throttle the messages and data updates to 50ms:
28
+ experimental_throttle: 50
29
+ })
30
+ ```
31
+
32
+ ### `useCompletion`
33
+
34
+ ```tsx filename="page.tsx" highlight="2-3"
35
+ const { completion, ... } = useCompletion({
36
+ // Throttle the completion and data updates to 50ms:
37
+ experimental_throttle: 50
38
+ })
39
+ ```
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: "Jest: cannot find module '@ai-sdk/rsc'"
3
+ description: "Troubleshooting AI SDK errors related to the Jest: cannot find module '@ai-sdk/rsc' error"
4
+ ---
5
+
6
+ # Jest: cannot find module '@ai-sdk/rsc'
7
+
8
+ ## Issue
9
+
10
+ I am using AI SDK RSC and am writing tests for my RSC components with Jest.
11
+
12
+ I am getting the following error: `Cannot find module '@ai-sdk/rsc'`.
13
+
14
+ ## Solution
15
+
16
+ Configure the module resolution via `jest config update` in `moduleNameMapper`:
17
+
18
+ ```json filename="jest.config.js"
19
+ "moduleNameMapper": {
20
+ "^@ai-sdk/rsc$": "<rootDir>/node_modules/@ai-sdk/rsc/dist"
21
+ }
22
+ ```