ChatEvent

sealed interface ChatEvent(source)

Protocol-neutral stream events. They map 1:1 onto the AI SDK UI Message Stream chunk types, so every backend (UI Message Stream, OpenAI, Anthropic, mock) translates its wire format into the same small vocabulary.

Inheritors

Types

Link copied to clipboard
data class Data(val id: String, val name: String, val data: JsonElement) : ChatEvent

An AI SDK data-* part; same id replaces.

Link copied to clipboard
data class Error(val message: String) : ChatEvent

An in-band error reported by the server.

Link copied to clipboard
data class File(val id: String, val mediaType: String, val url: String) : ChatEvent

A model-generated file (e.g. an image).

Link copied to clipboard
data object Finish : ChatEvent

Explicit end of the turn. Optional: a completed flow also ends the turn.

Link copied to clipboard
data class Metadata(val metadata: JsonObject) : ChatEvent

Merged into Message.metadata (AI SDK message-metadata).

Link copied to clipboard
data class ReasoningDelta(val id: String, val delta: String) : ChatEvent
Link copied to clipboard
data class ReasoningEnd(val id: String) : ChatEvent
Link copied to clipboard
data class SourceUrl(val id: String, val url: String, val title: String) : ChatEvent
Link copied to clipboard
data class SubagentUpdate(val id: String, val message: Message) : ChatEvent

Snapshot of a delegated agent's run inside tool call id (populated by the backend).

Link copied to clipboard
data class TextDelta(val id: String, val delta: String) : ChatEvent
Link copied to clipboard
data class TextEnd(val id: String) : ChatEvent
Link copied to clipboard
data class ToolApprovalRequest(val id: String, val answers: ApprovalAnswers = dev.ai.elements.core.model.ApprovalAnswers.All) : ChatEvent

The backend is waiting for ToolApprover to approve this tool call; answers says what its protocol can carry back beyond yes / no.

Link copied to clipboard
data class ToolApproved(val id: String) : ChatEvent

The user approved; the tool runs (or the server continues) next.

Link copied to clipboard
data class ToolDenied(val id: String, val reason: String? = null) : ChatEvent

The user denied the call, optionally saying why.

Link copied to clipboard
data class ToolError(val id: String, val error: String) : ChatEvent
Link copied to clipboard
data class ToolInputAvailable(val id: String, val name: String, val input: String, val title: String? = null, val kind: ToolKind? = null, val source: String? = null, val category: ToolCategory? = null, val location: String? = null) : ChatEvent
Link copied to clipboard
data class ToolInputDelta(val id: String, val delta: String) : ChatEvent
Link copied to clipboard
data class ToolInputStart(val id: String, val name: String, val title: String? = null) : ChatEvent
Link copied to clipboard
data class ToolOutput(val id: String, val output: String, val preliminary: Boolean = false) : ChatEvent

A tool result; preliminary results are replaced by later ones (AI SDK preliminary tool results).

Link copied to clipboard
data class Usage(val inputTokens: Int, val outputTokens: Int) : ChatEvent

Token usage of one model call; summed per turn.