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.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/00-introduction/index.mdx +76 -0
- package/docs/02-foundations/01-overview.mdx +43 -0
- package/docs/02-foundations/02-providers-and-models.mdx +163 -0
- package/docs/02-foundations/03-prompts.mdx +620 -0
- package/docs/02-foundations/04-tools.mdx +160 -0
- package/docs/02-foundations/05-streaming.mdx +62 -0
- package/docs/02-foundations/index.mdx +43 -0
- package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
- package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
- package/docs/02-getting-started/02-nextjs-app-router.mdx +556 -0
- package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
- package/docs/02-getting-started/04-svelte.mdx +627 -0
- package/docs/02-getting-started/05-nuxt.mdx +566 -0
- package/docs/02-getting-started/06-nodejs.mdx +512 -0
- package/docs/02-getting-started/07-expo.mdx +766 -0
- package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
- package/docs/02-getting-started/index.mdx +44 -0
- package/docs/03-agents/01-overview.mdx +96 -0
- package/docs/03-agents/02-building-agents.mdx +367 -0
- package/docs/03-agents/03-workflows.mdx +370 -0
- package/docs/03-agents/04-loop-control.mdx +350 -0
- package/docs/03-agents/05-configuring-call-options.mdx +286 -0
- package/docs/03-agents/index.mdx +40 -0
- package/docs/03-ai-sdk-core/01-overview.mdx +33 -0
- package/docs/03-ai-sdk-core/05-generating-text.mdx +600 -0
- package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +662 -0
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1102 -0
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +375 -0
- package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +144 -0
- package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
- package/docs/03-ai-sdk-core/30-embeddings.mdx +247 -0
- package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
- package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
- package/docs/03-ai-sdk-core/36-transcription.mdx +173 -0
- package/docs/03-ai-sdk-core/37-speech.mdx +167 -0
- package/docs/03-ai-sdk-core/40-middleware.mdx +480 -0
- package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
- package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
- package/docs/03-ai-sdk-core/55-testing.mdx +218 -0
- package/docs/03-ai-sdk-core/60-telemetry.mdx +313 -0
- package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
- package/docs/03-ai-sdk-core/index.mdx +88 -0
- package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
- package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
- package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
- package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
- package/docs/04-ai-sdk-ui/05-completion.mdx +186 -0
- package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
- package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
- package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
- package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
- package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
- package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
- package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
- package/docs/04-ai-sdk-ui/index.mdx +64 -0
- package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
- package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
- package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
- package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
- package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
- package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +158 -0
- package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
- package/docs/05-ai-sdk-rsc/08-error-handling.mdx +96 -0
- package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
- package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
- package/docs/05-ai-sdk-rsc/index.mdx +58 -0
- package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
- package/docs/06-advanced/02-stopping-streams.mdx +184 -0
- package/docs/06-advanced/03-backpressure.mdx +173 -0
- package/docs/06-advanced/04-caching.mdx +169 -0
- package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
- package/docs/06-advanced/06-rate-limiting.mdx +60 -0
- package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +213 -0
- package/docs/06-advanced/08-model-as-router.mdx +120 -0
- package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
- package/docs/06-advanced/09-sequential-generations.mdx +55 -0
- package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
- package/docs/06-advanced/index.mdx +11 -0
- package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2142 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3215 -0
- package/docs/07-reference/01-ai-sdk-core/03-generate-object.mdx +780 -0
- package/docs/07-reference/01-ai-sdk-core/04-stream-object.mdx +1140 -0
- package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +190 -0
- package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +171 -0
- package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
- package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +227 -0
- package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +138 -0
- package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +214 -0
- package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +203 -0
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +449 -0
- package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +148 -0
- package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +168 -0
- package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +144 -0
- package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +196 -0
- package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +175 -0
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +410 -0
- package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
- package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +55 -0
- package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
- package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
- package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
- package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
- package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
- package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +182 -0
- package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +121 -0
- package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
- package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
- package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
- package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +46 -0
- package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
- package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
- package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
- package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
- package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
- package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
- package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
- package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +43 -0
- package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
- package/docs/07-reference/01-ai-sdk-core/index.mdx +159 -0
- package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +446 -0
- package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +179 -0
- package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +178 -0
- package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +230 -0
- package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +151 -0
- package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +113 -0
- package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +73 -0
- package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
- package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
- package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
- package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
- package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
- package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
- package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
- package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
- package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +48 -0
- package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +78 -0
- package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
- package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
- package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
- package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
- package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
- package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
- package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +262 -0
- package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
- package/docs/07-reference/04-stream-helpers/01-ai-stream.mdx +89 -0
- package/docs/07-reference/04-stream-helpers/02-streaming-text-response.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/05-stream-to-response.mdx +108 -0
- package/docs/07-reference/04-stream-helpers/07-openai-stream.mdx +77 -0
- package/docs/07-reference/04-stream-helpers/08-anthropic-stream.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/09-aws-bedrock-stream.mdx +91 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-anthropic-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-messages-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/11-aws-bedrock-cohere-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/12-aws-bedrock-llama-2-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/13-cohere-stream.mdx +78 -0
- package/docs/07-reference/04-stream-helpers/14-google-generative-ai-stream.mdx +85 -0
- package/docs/07-reference/04-stream-helpers/15-hugging-face-stream.mdx +84 -0
- package/docs/07-reference/04-stream-helpers/16-langchain-adapter.mdx +98 -0
- package/docs/07-reference/04-stream-helpers/16-llamaindex-adapter.mdx +70 -0
- package/docs/07-reference/04-stream-helpers/17-mistral-stream.mdx +81 -0
- package/docs/07-reference/04-stream-helpers/18-replicate-stream.mdx +83 -0
- package/docs/07-reference/04-stream-helpers/19-inkeep-stream.mdx +80 -0
- package/docs/07-reference/04-stream-helpers/index.mdx +103 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +30 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/index.mdx +38 -0
- package/docs/07-reference/index.mdx +34 -0
- package/docs/08-migration-guides/00-versioning.mdx +46 -0
- package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
- package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
- package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
- package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
- package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
- package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
- package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
- package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
- package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
- package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
- package/docs/08-migration-guides/index.mdx +22 -0
- package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
- package/docs/09-troubleshooting/02-client-side-function-calls-not-invoked.mdx +22 -0
- package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
- package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
- package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
- package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
- package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
- package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
- package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
- package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
- package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
- package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
- package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
- package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
- package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
- package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
- package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
- package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
- package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
- package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
- package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
- package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
- package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
- package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +72 -0
- package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
- package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
- package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
- package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
- package/docs/09-troubleshooting/index.mdx +11 -0
- 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
|
+
```
|