UIMessage Part
Since
0.3.0-beta01
Inheritors
Types
Typed custom data part. Mirrors v6 data-* UI parts while using an explicit type string instead of TypeScript literal keys.
Runtime-typed tool invocation — same lifecycle shape as ToolUI but for tools whose schema isn't known at compile time (the common case in subagents, where the parent agent's static ToolPartHandlerRegistry can't dispatch). Renderers branch on is DynamicToolUI and fall back to a generic "Calling toolName…" card with JSON-printed input / output. Per historical parity gap #9.
Generated file (image, audio, etc.).
Document-shaped source — a referenced file the model used as grounding (PDF, image, etc.). Per v6's SourceDocumentUIPart. Distinct from File which carries the file's payload — this variant is a CITATION POINTER to a document the model read, not a file the model produced.
URL-shaped citation / web grounding source. Per historical parity gap #29, this is the split from a single unified Source variant — v6's SourceUrlUIPart.
Step boundary marker — emitted between LLM call iterations when the agent does multi-step work (tool-call → tool-result → next LLM call). Preserves the v6 step-start UI part so a subagent handoff or multi-tool flow can render a visible divider in the chat list. Per historical parity gap #8.
One tool call's full lifecycle in the UI. State progresses InputStreaming → InputAvailable → OutputAvailable (or Error, or ApprovalRequired when the loop is paused on user decision). Component renderers can show the same card across states ("Looking up lineup..." → "Found 12 sets" → final card).