# Chat Variant

`variant: "chat"` keeps the AG-UI state machine and draws it as a chat: `XWUIChatTranscript` for the messages (tool calls as chips, the approval as a diff block with Approve and Decline, quick replies as chips) and `XWUIInputChat` with `busyAction: "stop"` for the composer. The transcript and the composer are mounted once; each update only pushes the changed rows. Display fields (`senderName`, `senderTags`, `time`, `tone`, `actions`, `options`) are set with `updateMessage()` and are never overwritten by the stream.
