Skip to main content

Events

AG-UI uses a streaming event-based architecture. Events are the units of communication from an agent backend to a frontend UI. In .NET, every protocol event derives from BaseEvent and has a type discriminator.

Event Type Constants

AGUIEventTypes defines the SCREAMING_SNAKE_CASE wire discriminators:

BaseEvent

All events inherit from BaseEvent.
C# propertyJSON fieldTypeDescription
TypetypestringEvent discriminator
Timestamptimestamplong?Optional event timestamp
RawEventrawEventJsonElement?Optional original event data

Lifecycle Events

Lifecycle events represent the run and step lifecycle.

RunStartedEvent

Signals the start of an agent run.
C# propertyJSON fieldTypeDescription
Typetype"RUN_STARTED"Event discriminator
ThreadIdthreadIdstringConversation thread ID
RunIdrunIdstringAgent run ID
ParentRunIdparentRunIdstring?Optional parent run ID
InputinputRunAgentInput?Optional input payload for the run

RunFinishedEvent

Signals the completion of an agent run.
C# propertyJSON fieldTypeDescription
Typetype"RUN_FINISHED"Event discriminator
ThreadIdthreadIdstringConversation thread ID
RunIdrunIdstringAgent run ID
ResultresultJsonElement?Optional run result
OutcomeoutcomeRunFinishedOutcome?Optional typed outcome
RunFinishedOutcome is a polymorphic value with type: "success" or type: "interrupt". RunFinishedInterruptOutcome carries interrupts, an IList<AGUIInterrupt>.

RunErrorEvent

Signals an error during an agent run.
C# propertyJSON fieldTypeDescription
Typetype"RUN_ERROR"Event discriminator
MessagemessagestringError message
Codecodestring?Optional error code

StepStartedEvent

Signals the start of a named step.
C# propertyJSON fieldTypeDescription
Typetype"STEP_STARTED"Event discriminator
StepNamestepNamestringStep name

StepFinishedEvent

Signals the completion of a named step.
C# propertyJSON fieldTypeDescription
Typetype"STEP_FINISHED"Event discriminator
StepNamestepNamestringStep name

Text Message Events

Text message events stream assistant text as a start/content/end sequence.

TextMessageStartEvent

C# propertyJSON fieldTypeDescription
Typetype"TEXT_MESSAGE_START"Event discriminator
MessageIdmessageIdstringMessage ID
RolerolestringMessage role, typically "assistant"
Namenamestring?Optional sender name

TextMessageContentEvent

C# propertyJSON fieldTypeDescription
Typetype"TEXT_MESSAGE_CONTENT"Event discriminator
MessageIdmessageIdstringMessage ID from the start event
DeltadeltastringText delta

TextMessageEndEvent

C# propertyJSON fieldTypeDescription
Typetype"TEXT_MESSAGE_END"Event discriminator
MessageIdmessageIdstringMessage ID from the start event

Tool Call Events

Tool call events stream tool invocation arguments and optional server-side results.

ToolCallStartEvent

C# propertyJSON fieldTypeDescription
Typetype"TOOL_CALL_START"Event discriminator
ParentMessageIdparentMessageIdstring?Optional parent assistant message ID
ToolCallIdtoolCallIdstringTool call ID
ToolCallNametoolCallNamestringTool name

ToolCallArgsEvent

C# propertyJSON fieldTypeDescription
Typetype"TOOL_CALL_ARGS"Event discriminator
ToolCallIdtoolCallIdstringTool call ID
DeltadeltastringArgument JSON chunk

ToolCallEndEvent

C# propertyJSON fieldTypeDescription
Typetype"TOOL_CALL_END"Event discriminator
ToolCallIdtoolCallIdstringTool call ID

ToolCallResultEvent

C# propertyJSON fieldTypeDescription
Typetype"TOOL_CALL_RESULT"Event discriminator
MessageIdmessageIdstringTool result message ID
ToolCallIdtoolCallIdstringTool call ID
ContentcontentstringTool result content
Rolerolestring?Optional role, typically "tool"

State Management Events

State events synchronize frontend state and message history.

StateSnapshotEvent

Provides a complete state snapshot.
C# propertyJSON fieldTypeDescription
Typetype"STATE_SNAPSHOT"Event discriminator
SnapshotsnapshotJsonElementComplete state value

StateDeltaEvent

Provides incremental state changes, commonly as JSON Patch operations.
C# propertyJSON fieldTypeDescription
Typetype"STATE_DELTA"Event discriminator
DeltadeltaJsonElementState delta payload

MessagesSnapshotEvent

Replaces the frontend conversation history with the server’s view.
C# propertyJSON fieldTypeDescription
Typetype"MESSAGES_SNAPSHOT"Event discriminator
MessagesmessagesIList<AGUIMessage>Complete message list

Reasoning Events

Reasoning events expose a model or agent reasoning stream. They can create and update AGUIReasoningMessage entries in message history.

ReasoningStartEvent

C# propertyJSON fieldTypeDescription
Typetype"REASONING_START"Event discriminator
MessageIdmessageIdstringReasoning phase ID

ReasoningMessageStartEvent

C# propertyJSON fieldTypeDescription
Typetype"REASONING_MESSAGE_START"Event discriminator
MessageIdmessageIdstringReasoning message ID
RolerolestringDefaults to "reasoning"

ReasoningMessageContentEvent

C# propertyJSON fieldTypeDescription
Typetype"REASONING_MESSAGE_CONTENT"Event discriminator
MessageIdmessageIdstringReasoning message ID
DeltadeltastringReasoning content delta

ReasoningMessageEndEvent

C# propertyJSON fieldTypeDescription
Typetype"REASONING_MESSAGE_END"Event discriminator
MessageIdmessageIdstringReasoning message ID

ReasoningMessageChunkEvent

Compact reasoning message chunk event with optional fields.
C# propertyJSON fieldTypeDescription
Typetype"REASONING_MESSAGE_CHUNK"Event discriminator
MessageIdmessageIdstring?Optional reasoning message ID
Deltadeltastring?Optional reasoning content delta

ReasoningEndEvent

C# propertyJSON fieldTypeDescription
Typetype"REASONING_END"Event discriminator
MessageIdmessageIdstringReasoning phase ID

ReasoningEncryptedValueEvent

Attaches an encrypted value to a message or tool call.
C# propertyJSON fieldTypeDescription
Typetype"REASONING_ENCRYPTED_VALUE"Event discriminator
SubtypesubtypestringEntity subtype, such as "message" or "tool-call"
EntityIdentityIdstringMessage or tool call ID
EncryptedValueencryptedValuestringOpaque encrypted value

Activity Events

Activity events carry structured progress state for UI renderers.

ActivitySnapshotEvent

C# propertyJSON fieldTypeDescription
Typetype"ACTIVITY_SNAPSHOT"Event discriminator
MessageIdmessageIdstringActivity message ID
ActivityTypeactivityTypestringActivity discriminator
ContentcontentJsonElementStructured activity content
Replacereplacebool?Optional replace/merge hint

ActivityDeltaEvent

C# propertyJSON fieldTypeDescription
Typetype"ACTIVITY_DELTA"Event discriminator
MessageIdmessageIdstringActivity message ID
ActivityTypeactivityTypestringActivity discriminator
PatchpatchJsonElementActivity JSON Patch payload

Special Events

RawEvent

Passes through unprocessed external data.
C# propertyJSON fieldTypeDescription
Typetype"RAW"Event discriminator
EventeventJsonElementRaw payload
Sourcesourcestring?Optional source identifier

CustomEvent

Carries application-specific data.
C# propertyJSON fieldTypeDescription
Typetype"CUSTOM"Event discriminator
NamenamestringCustom event name
ValuevalueJsonElement?Optional custom payload

Serialization

BaseEvent uses a discriminator-based JSON converter keyed on the type field. All concrete event types are registered in AGUIJsonSerializerContext.