RunEventType
AgentPrism.Abstractions.dllEvent types produced during a run. The user interface maps these directly onto visual elements, so the values must stay stable.
[JsonConverter(typeof(JsonStringEnumConverter<RunEventType>))]public enum RunEventTypeFields
Section titled “Fields”ChildRunCompleted = 9
A child agent run finished. Text carries the child agent’s name and
Payload the child run id.
ChildRunStarted = 8
This run started a child agent run. Text carries the child agent’s
name and Payload the child run id.
The child run’s own events are not mirrored into the root stream; only its start and end are reported. Full mirroring would multiply the event volume along the tree and send the same text to the client twice.
ContentBlocked = 21
An IContentGuard blocked content. Text carries the guard
name, the rule name and the direction.
The payload does not carry the blocked content. After the
event the run becomes Failed and runs.error_type is written as
content_blocked.
ContentMasked = 20
An IContentGuard masked content. Text carries the guard
name, the rule name and the direction; Payload carries the match count.
Neither Text nor Payload carries the masked
content — they only report THAT masking happened. When the text the
model sees differs from what the user wrote, that is an event and it cannot
stay silent (that rule: a decision that cannot be recorded is a decision
that was not taken).
ExecutorCompleted = 15
An executor completed. Text carries the executor id.
ExecutorFailed = 16
An executor failed. Text carries the executor id and Payload
the error message.
ExecutorInvoked = 14
An executor was invoked. Text carries the executor id.
HistoryCompacted = 10
The chat history was compacted. Text carries a short summary sentence
and Payload the before/after message and token counts.
MessageCompleted = 2
A message completed.
MessageDelta = 1
A text fragment arrived from the model. Produced only for streaming runs.
ModelFallbackUsed = 22
The primary model provider was unavailable and a
ModelBinding.Fallbacks link answered instead. Text
carries the fallback provider and model ("{provider}/{model}");
Payload carries the primary and fallback bindings and the reason
the primary was skipped.
A model switch is never silent. This event is written in addition to a span tag, not instead of it — an operator reading only the run record must still see which model actually answered.
ReasoningDelta = 23
A reasoning (thinking) delta arrived from the model. Off by default
(AgentPrismRunRecordingOptions.RecordReasoningDeltas).
RunAwaitingInput = 19
The run stopped because it waits for a human answer. It is the last event of the stream.
Separate from RunEventType.RunCompleted and RunEventType.RunFailed: the work neither finished nor failed. On this event the user interface shows the pending request card.
RunCompleted = 6
The run finished successfully.
RunFailed = 7
The run ended with an error.
RunStarted = 0
The run started.
SuperStepCompleted = 13
A super-step completed. Text carries the step number and
Payload the activated executor names plus the checkpoint id, if any.
SuperStepStarted = 12
A super-step started. Text carries the step number and Payload
the names of the executors that sent messages.
ToolFailed = 5
A tool failed.
ToolInvoked = 4
A tool completed successfully. The result is in the event payload.
ToolInvoking = 3
A tool is about to be called. The arguments are in the event payload.
WorkflowOutput = 17
The workflow produced an output. Text carries a text summary of it.
WorkflowRequest = 18
The workflow waits for an external answer (human in the loop). Text
carries the request id and Payload a JSON summary of the request.
The payload carries enough to rebuild the pending request: port id, request id, request and response type names, and the data to display. Pending requests are read from these events; no separate table was added.
WorkflowStarted = 11
A workflow execution started. Text carries the workflow name.
This is separate from RunEventType.RunStarted: that one reports that the
runs row was opened, this one reports that the Microsoft Agent
Framework execution engine actually took over the graph. Compilation and
validation happen in between, and an error there ends the run before the
graph ever starts.
Remarks
Section titled “Remarks”Written to JSON by name ("Code"), not by number. The
wire contract explains itself that way and survives a change in value order.
The converter sits on the type, so the format is the same everywhere without
touching the consumer’s application-wide JSON options. No enum is PERSISTED as
JSON (RunStatus and RunEventType are smallint in the database,
AgentDefinitionOrigin is rebuilt on read), so a format change does not affect
stored data.