ai 6.0.31 → 6.0.33

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 (252) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.js +12 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +12 -2
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/internal/index.js +1 -1
  7. package/dist/internal/index.mjs +1 -1
  8. package/docs/00-introduction/index.mdx +76 -0
  9. package/docs/02-foundations/01-overview.mdx +43 -0
  10. package/docs/02-foundations/02-providers-and-models.mdx +163 -0
  11. package/docs/02-foundations/03-prompts.mdx +620 -0
  12. package/docs/02-foundations/04-tools.mdx +160 -0
  13. package/docs/02-foundations/05-streaming.mdx +62 -0
  14. package/docs/02-foundations/index.mdx +43 -0
  15. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  16. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  17. package/docs/02-getting-started/02-nextjs-app-router.mdx +556 -0
  18. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  19. package/docs/02-getting-started/04-svelte.mdx +627 -0
  20. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  21. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  22. package/docs/02-getting-started/07-expo.mdx +766 -0
  23. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  24. package/docs/02-getting-started/index.mdx +44 -0
  25. package/docs/03-agents/01-overview.mdx +96 -0
  26. package/docs/03-agents/02-building-agents.mdx +367 -0
  27. package/docs/03-agents/03-workflows.mdx +370 -0
  28. package/docs/03-agents/04-loop-control.mdx +350 -0
  29. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  30. package/docs/03-agents/index.mdx +40 -0
  31. package/docs/03-ai-sdk-core/01-overview.mdx +33 -0
  32. package/docs/03-ai-sdk-core/05-generating-text.mdx +600 -0
  33. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +662 -0
  34. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1102 -0
  35. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +375 -0
  36. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +144 -0
  37. package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
  38. package/docs/03-ai-sdk-core/30-embeddings.mdx +247 -0
  39. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  40. package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
  41. package/docs/03-ai-sdk-core/36-transcription.mdx +173 -0
  42. package/docs/03-ai-sdk-core/37-speech.mdx +167 -0
  43. package/docs/03-ai-sdk-core/40-middleware.mdx +480 -0
  44. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  45. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  46. package/docs/03-ai-sdk-core/55-testing.mdx +218 -0
  47. package/docs/03-ai-sdk-core/60-telemetry.mdx +313 -0
  48. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  49. package/docs/03-ai-sdk-core/index.mdx +88 -0
  50. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  51. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
  52. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
  53. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  54. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  55. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  56. package/docs/04-ai-sdk-ui/05-completion.mdx +186 -0
  57. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  58. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  59. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  60. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  61. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  62. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  63. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
  64. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  65. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  66. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  67. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  68. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  69. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  70. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +158 -0
  71. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  72. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +96 -0
  73. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  74. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  75. package/docs/05-ai-sdk-rsc/index.mdx +58 -0
  76. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  77. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  78. package/docs/06-advanced/03-backpressure.mdx +173 -0
  79. package/docs/06-advanced/04-caching.mdx +169 -0
  80. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  81. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  82. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +213 -0
  83. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  84. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  85. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  86. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  87. package/docs/06-advanced/index.mdx +11 -0
  88. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2142 -0
  89. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3215 -0
  90. package/docs/07-reference/01-ai-sdk-core/03-generate-object.mdx +780 -0
  91. package/docs/07-reference/01-ai-sdk-core/04-stream-object.mdx +1140 -0
  92. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +190 -0
  93. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +171 -0
  94. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
  95. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +227 -0
  96. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +138 -0
  97. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +214 -0
  98. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +203 -0
  99. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +449 -0
  100. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +148 -0
  101. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +168 -0
  102. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +144 -0
  103. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +196 -0
  104. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +175 -0
  105. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +410 -0
  106. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  107. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  108. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  109. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +55 -0
  110. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  111. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
  112. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
  113. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  114. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  115. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +182 -0
  116. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +121 -0
  117. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  118. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  119. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  120. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +46 -0
  121. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  122. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  123. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  124. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  125. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  126. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  127. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  128. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  129. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  130. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +43 -0
  131. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  132. package/docs/07-reference/01-ai-sdk-core/index.mdx +159 -0
  133. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +446 -0
  134. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +179 -0
  135. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +178 -0
  136. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +230 -0
  137. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  138. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +151 -0
  139. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +113 -0
  140. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +73 -0
  141. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  142. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  143. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  144. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  145. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  146. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  147. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  148. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  149. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +48 -0
  150. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +78 -0
  151. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  152. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  153. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  154. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  155. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  156. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  157. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +262 -0
  158. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  159. package/docs/07-reference/04-stream-helpers/01-ai-stream.mdx +89 -0
  160. package/docs/07-reference/04-stream-helpers/02-streaming-text-response.mdx +79 -0
  161. package/docs/07-reference/04-stream-helpers/05-stream-to-response.mdx +108 -0
  162. package/docs/07-reference/04-stream-helpers/07-openai-stream.mdx +77 -0
  163. package/docs/07-reference/04-stream-helpers/08-anthropic-stream.mdx +79 -0
  164. package/docs/07-reference/04-stream-helpers/09-aws-bedrock-stream.mdx +91 -0
  165. package/docs/07-reference/04-stream-helpers/10-aws-bedrock-anthropic-stream.mdx +96 -0
  166. package/docs/07-reference/04-stream-helpers/10-aws-bedrock-messages-stream.mdx +96 -0
  167. package/docs/07-reference/04-stream-helpers/11-aws-bedrock-cohere-stream.mdx +93 -0
  168. package/docs/07-reference/04-stream-helpers/12-aws-bedrock-llama-2-stream.mdx +93 -0
  169. package/docs/07-reference/04-stream-helpers/13-cohere-stream.mdx +78 -0
  170. package/docs/07-reference/04-stream-helpers/14-google-generative-ai-stream.mdx +85 -0
  171. package/docs/07-reference/04-stream-helpers/15-hugging-face-stream.mdx +84 -0
  172. package/docs/07-reference/04-stream-helpers/16-langchain-adapter.mdx +98 -0
  173. package/docs/07-reference/04-stream-helpers/16-llamaindex-adapter.mdx +70 -0
  174. package/docs/07-reference/04-stream-helpers/17-mistral-stream.mdx +81 -0
  175. package/docs/07-reference/04-stream-helpers/18-replicate-stream.mdx +83 -0
  176. package/docs/07-reference/04-stream-helpers/19-inkeep-stream.mdx +80 -0
  177. package/docs/07-reference/04-stream-helpers/index.mdx +103 -0
  178. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +30 -0
  179. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +27 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +25 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content.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 +25 -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-speech-generated-error.mdx +25 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +25 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +26 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  207. package/docs/07-reference/05-ai-sdk-errors/index.mdx +38 -0
  208. package/docs/07-reference/index.mdx +34 -0
  209. package/docs/08-migration-guides/00-versioning.mdx +46 -0
  210. package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
  211. package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
  212. package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
  213. package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
  214. package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
  215. package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
  216. package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
  217. package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
  218. package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
  219. package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
  220. package/docs/08-migration-guides/index.mdx +22 -0
  221. package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
  222. package/docs/09-troubleshooting/02-client-side-function-calls-not-invoked.mdx +22 -0
  223. package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
  224. package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
  225. package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
  226. package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
  227. package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
  228. package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
  229. package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
  230. package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
  231. package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
  232. package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
  233. package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
  234. package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
  235. package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
  236. package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
  237. package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
  238. package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
  239. package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
  240. package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
  241. package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
  242. package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
  243. package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
  244. package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
  245. package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
  246. package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +72 -0
  247. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
  248. package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
  249. package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
  250. package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
  251. package/docs/09-troubleshooting/index.mdx +11 -0
  252. package/package.json +8 -4
@@ -0,0 +1,415 @@
1
+ ---
2
+ title: ModelMessage
3
+ description: Message types for AI SDK Core (API Reference)
4
+ ---
5
+
6
+ # `ModelMessage`
7
+
8
+ `ModelMessage` represents the fundamental message structure used with AI SDK Core functions.
9
+ It encompasses various message types that can be used in the `messages` field of any AI SDK Core functions.
10
+
11
+ You can access the Zod schema for `ModelMessage` with the `modelMessageSchema` export.
12
+
13
+ ## `ModelMessage` Types
14
+
15
+ ### `SystemModelMessage`
16
+
17
+ A system message that can contain system information.
18
+
19
+ ```typescript
20
+ type SystemModelMessage = {
21
+ role: 'system';
22
+ content: string;
23
+ };
24
+ ```
25
+
26
+ You can access the Zod schema for `SystemModelMessage` with the `systemModelMessageSchema` export.
27
+
28
+ <Note>
29
+ Using the "system" property instead of a system message is recommended to
30
+ enhance resilience against prompt injection attacks.
31
+ </Note>
32
+
33
+ ### `UserModelMessage`
34
+
35
+ A user message that can contain text or a combination of text, images, and files.
36
+
37
+ ```typescript
38
+ type UserModelMessage = {
39
+ role: 'user';
40
+ content: UserContent;
41
+ };
42
+
43
+ type UserContent = string | Array<TextPart | ImagePart | FilePart>;
44
+ ```
45
+
46
+ You can access the Zod schema for `UserModelMessage` with the `userModelMessageSchema` export.
47
+
48
+ ### `AssistantModelMessage`
49
+
50
+ An assistant message that can contain text, tool calls, or a combination of both.
51
+
52
+ ```typescript
53
+ type AssistantModelMessage = {
54
+ role: 'assistant';
55
+ content: AssistantContent;
56
+ };
57
+
58
+ type AssistantContent = string | Array<TextPart | ToolCallPart>;
59
+ ```
60
+
61
+ You can access the Zod schema for `AssistantModelMessage` with the `assistantModelMessageSchema` export.
62
+
63
+ ### `ToolModelMessage`
64
+
65
+ A tool message that contains the result of one or more tool calls.
66
+
67
+ ```typescript
68
+ type ToolModelMessage = {
69
+ role: 'tool';
70
+ content: ToolContent;
71
+ };
72
+
73
+ type ToolContent = Array<ToolResultPart>;
74
+ ```
75
+
76
+ You can access the Zod schema for `ToolModelMessage` with the `toolModelMessageSchema` export.
77
+
78
+ ## `ModelMessage` Parts
79
+
80
+ ### `TextPart`
81
+
82
+ Represents a text content part of a prompt. It contains a string of text.
83
+
84
+ ```typescript
85
+ export interface TextPart {
86
+ type: 'text';
87
+ /**
88
+ * The text content.
89
+ */
90
+ text: string;
91
+ }
92
+ ```
93
+
94
+ ### `ImagePart`
95
+
96
+ Represents an image part in a user message.
97
+
98
+ ```typescript
99
+ export interface ImagePart {
100
+ type: 'image';
101
+
102
+ /**
103
+ * Image data. Can either be:
104
+ * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer
105
+ * - URL: a URL that points to the image
106
+ */
107
+ image: DataContent | URL;
108
+
109
+ /**
110
+ * Optional IANA media type of the image.
111
+ * We recommend leaving this out as it will be detected automatically.
112
+ */
113
+ mediaType?: string;
114
+ }
115
+ ```
116
+
117
+ ### `FilePart`
118
+
119
+ Represents an file part in a user message.
120
+
121
+ ```typescript
122
+ export interface FilePart {
123
+ type: 'file';
124
+
125
+ /**
126
+ * File data. Can either be:
127
+ * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer
128
+ * - URL: a URL that points to the file
129
+ */
130
+ data: DataContent | URL;
131
+
132
+ /**
133
+ * Optional filename of the file.
134
+ */
135
+ filename?: string;
136
+
137
+ /**
138
+ * IANA media type of the file.
139
+ */
140
+ mediaType: string;
141
+ }
142
+ ```
143
+
144
+ ### `ToolCallPart`
145
+
146
+ Represents a tool call content part of a prompt, typically generated by the AI model.
147
+
148
+ ```typescript
149
+ export interface ToolCallPart {
150
+ type: 'tool-call';
151
+
152
+ /**
153
+ * ID of the tool call. This ID is used to match the tool call with the tool result.
154
+ */
155
+ toolCallId: string;
156
+
157
+ /**
158
+ * Name of the tool that is being called.
159
+ */
160
+ toolName: string;
161
+
162
+ /**
163
+ * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.
164
+ */
165
+ args: unknown;
166
+ }
167
+ ```
168
+
169
+ ### `ToolResultPart`
170
+
171
+ Represents the result of a tool call in a tool message.
172
+
173
+ ```typescript
174
+ export interface ToolResultPart {
175
+ type: 'tool-result';
176
+
177
+ /**
178
+ * ID of the tool call that this result is associated with.
179
+ */
180
+ toolCallId: string;
181
+
182
+ /**
183
+ * Name of the tool that generated this result.
184
+ */
185
+ toolName: string;
186
+
187
+ /**
188
+ * Result of the tool call. This is a JSON-serializable object.
189
+ */
190
+ output: LanguageModelV3ToolResultOutput;
191
+
192
+ /**
193
+ Additional provider-specific metadata. They are passed through
194
+ to the provider from the AI SDK and enable provider-specific
195
+ functionality that can be fully encapsulated in the provider.
196
+ */
197
+ providerOptions?: ProviderOptions;
198
+ }
199
+ ```
200
+
201
+ ### `LanguageModelV3ToolResultOutput`
202
+
203
+ ```ts
204
+ /**
205
+ * Output of a tool result.
206
+ */
207
+ export type ToolResultOutput =
208
+ | {
209
+ /**
210
+ * Text tool output that should be directly sent to the API.
211
+ */
212
+ type: 'text';
213
+ value: string;
214
+
215
+ /**
216
+ * Provider-specific options.
217
+ */
218
+ providerOptions?: ProviderOptions;
219
+ }
220
+ | {
221
+ type: 'json';
222
+ value: JSONValue;
223
+
224
+ /**
225
+ * Provider-specific options.
226
+ */
227
+ providerOptions?: ProviderOptions;
228
+ }
229
+ | {
230
+ /**
231
+ * Type when the user has denied the execution of the tool call.
232
+ */
233
+ type: 'execution-denied';
234
+
235
+ /**
236
+ * Optional reason for the execution denial.
237
+ */
238
+ reason?: string;
239
+
240
+ /**
241
+ * Provider-specific options.
242
+ */
243
+ providerOptions?: ProviderOptions;
244
+ }
245
+ | {
246
+ type: 'error-text';
247
+ value: string;
248
+
249
+ /**
250
+ * Provider-specific options.
251
+ */
252
+ providerOptions?: ProviderOptions;
253
+ }
254
+ | {
255
+ type: 'error-json';
256
+ value: JSONValue;
257
+
258
+ /**
259
+ * Provider-specific options.
260
+ */
261
+ providerOptions?: ProviderOptions;
262
+ }
263
+ | {
264
+ type: 'content';
265
+ value: Array<
266
+ | {
267
+ type: 'text';
268
+
269
+ /**
270
+ Text content.
271
+ */
272
+ text: string;
273
+
274
+ /**
275
+ * Provider-specific options.
276
+ */
277
+ providerOptions?: ProviderOptions;
278
+ }
279
+ | {
280
+ /**
281
+ * @deprecated Use image-data or file-data instead.
282
+ */
283
+ type: 'media';
284
+ data: string;
285
+ mediaType: string;
286
+ }
287
+ | {
288
+ type: 'file-data';
289
+
290
+ /**
291
+ Base-64 encoded media data.
292
+ */
293
+ data: string;
294
+
295
+ /**
296
+ IANA media type.
297
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
298
+ */
299
+ mediaType: string;
300
+
301
+ /**
302
+ * Optional filename of the file.
303
+ */
304
+ filename?: string;
305
+
306
+ /**
307
+ * Provider-specific options.
308
+ */
309
+ providerOptions?: ProviderOptions;
310
+ }
311
+ | {
312
+ type: 'file-url';
313
+
314
+ /**
315
+ * URL of the file.
316
+ */
317
+ url: string;
318
+
319
+ /**
320
+ * Provider-specific options.
321
+ */
322
+ providerOptions?: ProviderOptions;
323
+ }
324
+ | {
325
+ type: 'file-id';
326
+
327
+ /**
328
+ * ID of the file.
329
+ *
330
+ * If you use multiple providers, you need to
331
+ * specify the provider specific ids using
332
+ * the Record option. The key is the provider
333
+ * name, e.g. 'openai' or 'anthropic'.
334
+ */
335
+ fileId: string | Record<string, string>;
336
+
337
+ /**
338
+ * Provider-specific options.
339
+ */
340
+ providerOptions?: ProviderOptions;
341
+ }
342
+ | {
343
+ /**
344
+ * Images that are referenced using base64 encoded data.
345
+ */
346
+ type: 'image-data';
347
+
348
+ /**
349
+ Base-64 encoded image data.
350
+ */
351
+ data: string;
352
+
353
+ /**
354
+ IANA media type.
355
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
356
+ */
357
+ mediaType: string;
358
+
359
+ /**
360
+ * Provider-specific options.
361
+ */
362
+ providerOptions?: ProviderOptions;
363
+ }
364
+ | {
365
+ /**
366
+ * Images that are referenced using a URL.
367
+ */
368
+ type: 'image-url';
369
+
370
+ /**
371
+ * URL of the image.
372
+ */
373
+ url: string;
374
+
375
+ /**
376
+ * Provider-specific options.
377
+ */
378
+ providerOptions?: ProviderOptions;
379
+ }
380
+ | {
381
+ /**
382
+ * Images that are referenced using a provider file id.
383
+ */
384
+ type: 'image-file-id';
385
+
386
+ /**
387
+ * Image that is referenced using a provider file id.
388
+ *
389
+ * If you use multiple providers, you need to
390
+ * specify the provider specific ids using
391
+ * the Record option. The key is the provider
392
+ * name, e.g. 'openai' or 'anthropic'.
393
+ */
394
+ fileId: string | Record<string, string>;
395
+
396
+ /**
397
+ * Provider-specific options.
398
+ */
399
+ providerOptions?: ProviderOptions;
400
+ }
401
+ | {
402
+ /**
403
+ * Custom content part. This can be used to implement
404
+ * provider-specific content parts.
405
+ */
406
+ type: 'custom';
407
+
408
+ /**
409
+ * Provider-specific options.
410
+ */
411
+ providerOptions?: ProviderOptions;
412
+ }
413
+ >;
414
+ };
415
+ ```
@@ -0,0 +1,246 @@
1
+ ---
2
+ title: UIMessage
3
+ description: API Reference for UIMessage
4
+ ---
5
+
6
+ # `UIMessage`
7
+
8
+ `UIMessage` serves as the source of truth for your application's state, representing the complete message history including metadata, data parts, and all contextual information. In contrast to `ModelMessage`, which represents the state or context passed to the model, `UIMessage` contains the full application state needed for UI rendering and client-side functionality.
9
+
10
+ ## Type Safety
11
+
12
+ `UIMessage` is designed to be type-safe and accepts three generic parameters to ensure proper typing throughout your application:
13
+
14
+ 1. **`METADATA`** - Custom metadata type for additional message information
15
+ 2. **`DATA_PARTS`** - Custom data part types for structured data components
16
+ 3. **`TOOLS`** - Tool definitions for type-safe tool interactions
17
+
18
+ ## Creating Your Own UIMessage Type
19
+
20
+ Here's an example of how to create a custom typed UIMessage for your application:
21
+
22
+ ```typescript
23
+ import { InferUITools, ToolSet, UIMessage, tool } from 'ai';
24
+ import z from 'zod';
25
+
26
+ const metadataSchema = z.object({
27
+ someMetadata: z.string().datetime(),
28
+ });
29
+
30
+ type MyMetadata = z.infer<typeof metadataSchema>;
31
+
32
+ const dataPartSchema = z.object({
33
+ someDataPart: z.object({}),
34
+ anotherDataPart: z.object({}),
35
+ });
36
+
37
+ type MyDataPart = z.infer<typeof dataPartSchema>;
38
+
39
+ const tools = {
40
+ someTool: tool({}),
41
+ } satisfies ToolSet;
42
+
43
+ type MyTools = InferUITools<typeof tools>;
44
+
45
+ export type MyUIMessage = UIMessage<MyMetadata, MyDataPart, MyTools>;
46
+ ```
47
+
48
+ ## `UIMessage` Interface
49
+
50
+ ```typescript
51
+ interface UIMessage<
52
+ METADATA = unknown,
53
+ DATA_PARTS extends UIDataTypes = UIDataTypes,
54
+ TOOLS extends UITools = UITools,
55
+ > {
56
+ /**
57
+ * A unique identifier for the message.
58
+ */
59
+ id: string;
60
+
61
+ /**
62
+ * The role of the message.
63
+ */
64
+ role: 'system' | 'user' | 'assistant';
65
+
66
+ /**
67
+ * The metadata of the message.
68
+ */
69
+ metadata?: METADATA;
70
+
71
+ /**
72
+ * The parts of the message. Use this for rendering the message in the UI.
73
+ */
74
+ parts: Array<UIMessagePart<DATA_PARTS, TOOLS>>;
75
+ }
76
+ ```
77
+
78
+ ## `UIMessagePart` Types
79
+
80
+ ### `TextUIPart`
81
+
82
+ A text part of a message.
83
+
84
+ ```typescript
85
+ type TextUIPart = {
86
+ type: 'text';
87
+ /**
88
+ * The text content.
89
+ */
90
+ text: string;
91
+ /**
92
+ * The state of the text part.
93
+ */
94
+ state?: 'streaming' | 'done';
95
+ };
96
+ ```
97
+
98
+ ### `ReasoningUIPart`
99
+
100
+ A reasoning part of a message.
101
+
102
+ ```typescript
103
+ type ReasoningUIPart = {
104
+ type: 'reasoning';
105
+ /**
106
+ * The reasoning text.
107
+ */
108
+ text: string;
109
+ /**
110
+ * The state of the reasoning part.
111
+ */
112
+ state?: 'streaming' | 'done';
113
+ /**
114
+ * The provider metadata.
115
+ */
116
+ providerMetadata?: Record<string, any>;
117
+ };
118
+ ```
119
+
120
+ ### `ToolUIPart`
121
+
122
+ A tool part of a message that represents tool invocations and their results.
123
+
124
+ <Note>
125
+ The type is based on the name of the tool (e.g., `tool-someTool` for a tool
126
+ named `someTool`).
127
+ </Note>
128
+
129
+ ```typescript
130
+ type ToolUIPart<TOOLS extends UITools = UITools> = ValueOf<{
131
+ [NAME in keyof TOOLS & string]: {
132
+ type: `tool-${NAME}`;
133
+ toolCallId: string;
134
+ } & (
135
+ | {
136
+ state: 'input-streaming';
137
+ input: DeepPartial<TOOLS[NAME]['input']> | undefined;
138
+ providerExecuted?: boolean;
139
+ output?: never;
140
+ errorText?: never;
141
+ }
142
+ | {
143
+ state: 'input-available';
144
+ input: TOOLS[NAME]['input'];
145
+ providerExecuted?: boolean;
146
+ output?: never;
147
+ errorText?: never;
148
+ }
149
+ | {
150
+ state: 'output-available';
151
+ input: TOOLS[NAME]['input'];
152
+ output: TOOLS[NAME]['output'];
153
+ errorText?: never;
154
+ providerExecuted?: boolean;
155
+ }
156
+ | {
157
+ state: 'output-error';
158
+ input: TOOLS[NAME]['input'];
159
+ output?: never;
160
+ errorText: string;
161
+ providerExecuted?: boolean;
162
+ }
163
+ );
164
+ }>;
165
+ ```
166
+
167
+ ### `SourceUrlUIPart`
168
+
169
+ A source URL part of a message.
170
+
171
+ ```typescript
172
+ type SourceUrlUIPart = {
173
+ type: 'source-url';
174
+ sourceId: string;
175
+ url: string;
176
+ title?: string;
177
+ providerMetadata?: Record<string, any>;
178
+ };
179
+ ```
180
+
181
+ ### `SourceDocumentUIPart`
182
+
183
+ A document source part of a message.
184
+
185
+ ```typescript
186
+ type SourceDocumentUIPart = {
187
+ type: 'source-document';
188
+ sourceId: string;
189
+ mediaType: string;
190
+ title: string;
191
+ filename?: string;
192
+ providerMetadata?: Record<string, any>;
193
+ };
194
+ ```
195
+
196
+ ### `FileUIPart`
197
+
198
+ A file part of a message.
199
+
200
+ ```typescript
201
+ type FileUIPart = {
202
+ type: 'file';
203
+ /**
204
+ * IANA media type of the file.
205
+ */
206
+ mediaType: string;
207
+ /**
208
+ * Optional filename of the file.
209
+ */
210
+ filename?: string;
211
+ /**
212
+ * The URL of the file.
213
+ * It can either be a URL to a hosted file or a Data URL.
214
+ */
215
+ url: string;
216
+ };
217
+ ```
218
+
219
+ ### `DataUIPart`
220
+
221
+ A data part of a message for custom data types.
222
+
223
+ <Note>
224
+ The type is based on the name of the data part (e.g., `data-someDataPart` for
225
+ a data part named `someDataPart`).
226
+ </Note>
227
+
228
+ ```typescript
229
+ type DataUIPart<DATA_TYPES extends UIDataTypes> = ValueOf<{
230
+ [NAME in keyof DATA_TYPES & string]: {
231
+ type: `data-${NAME}`;
232
+ id?: string;
233
+ data: DATA_TYPES[NAME];
234
+ };
235
+ }>;
236
+ ```
237
+
238
+ ### `StepStartUIPart`
239
+
240
+ A step boundary part of a message.
241
+
242
+ ```typescript
243
+ type StepStartUIPart = {
244
+ type: 'step-start';
245
+ };
246
+ ```