Defined in: packages/ai/src/types.ts:361
TContent extends string | null | ContentPart[] = string | null | ContentPart[]
content: TContent;Defined in: packages/ai/src/types.ts:368
optional createdAt?: Date;Defined in: packages/ai/src/types.ts:396
Optional message creation timestamp. When present, message converters preserve it across persist → hydrate round-trips.
optional error?: string;Defined in: packages/ai/src/types.ts:374
Error reported by an AG-UI tool message.
optional id?: string;Defined in: packages/ai/src/types.ts:391
Optional stable message id. Providers ignore it; it exists so a persisted transcript can retain the streaming messageId and survive the persist → hydrate round-trip. When present, modelMessagesToUIMessages reuses it instead of generating a fresh id, so a hydrated message keeps the same identity as its live stream — which is what lets a mid-stream reload resume the SAME message bubble in place (see @tanstack/ai-persistence).
optional metadata?: Record<string, any>;Defined in: packages/ai/src/types.ts:376
Optional AG-UI message metadata. TanStack-owned fields live under tanstack.
optional name?: string;Defined in: packages/ai/src/types.ts:369
role: "assistant" | "user" | "tool";Defined in: packages/ai/src/types.ts:367
optional structuredOutput?: StructuredOutputPart<unknown>;Defined in: packages/ai/src/types.ts:382
Completed structured output represented by this assistant message. content remains the provider-facing JSON text; this field preserves the typed UI part across persistence and message conversion.
optional thinking?: object[];Defined in: packages/ai/src/types.ts:372
content: string;optional signature?: string;optional toolCallId?: string;Defined in: packages/ai/src/types.ts:371
optional toolCalls?: ToolCall<unknown>[];Defined in: packages/ai/src/types.ts:370