Chat

@Composable
fun Chat(controller: ChatController, modifier: Modifier = Modifier, placeholder: String? = null, voiceMode: Boolean = true, toolbar: @Composable RowScope.() -> Unit = {}, replay: RunReplay? = null)(source)

A complete chat screen body: the Conversation (streaming Markdown, tools and approvals, sub-agents, plans, branches, checkpoints) above a PromptInput with stop and queueing, all wired to controller. With voiceMode (and speech recognition on the device), the send button of an empty input starts a VoiceMode conversation. Wrap it in AiElementsTheme; add your own buttons to the input with toolbar.

Replies that browse, run commands or edit files show the agent's computer (AgentComputerCard, AgentComputerPanel): beside the chat when it is wide enough, in a bottom sheet otherwise. With replay (e.g. AgUiEventLog.replayOf), a run can be replayed from its recorded events.