Skip to content

RunEventType

Namespace AgentPrism · Assembly AgentPrism.Abstractions.dll

Event 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 RunEventType

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.

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.