Location: streaming/events.py:12
@dataclass(frozen=True)
class StreamEvent:
type: str # e.g. 'tool_call_started', 'run_completed'
payload: dict[str, Any]
def to_dict(self) -> dict[str, Any]:
# Returns {'type': self.type, **self.payload}emit_stream_event(
event: StreamEvent | dict[str, Any],
*,
out: TextIO | None = None, # defaults to sys.stdout
) -> NoneSerializes event to JSON (sort_keys=True) and prints with flush. One line per event.
Maps known event_type values to StreamEvent. Returns None for unknown types.
Mapped event types:
AuditEvent.event_type |
StreamEvent.type |
Key payload fields |
|---|---|---|
iteration_started |
iteration_started |
iteration |
tool_call_started |
tool_call_started |
tool_name, call_id |
tool_call_completed |
tool_call_completed |
tool_name, call_id |
tool_call_failed |
tool_call_failed |
tool_name, call_id, error |
run_failed |
run_failed |
category, message |
run_completed |
run_completed |
run_id |
approval_required |
approval_required |
(full payload) |
Same as above but takes raw dict from JSONL line instead of AuditEvent.
Returns a human-readable single-line progress string for stderr display.
Returns an AuditLogger sink that maps events to StreamEvent and calls emit(mapped).
Returns an AuditLogger sink that writes human progress lines to stderr.
Handler classes that wrap emit_stream_event for different output modes (JSON stream, progress, hybrid). See streaming/handlers.py for StreamHandler and ProgressHandler classes.
ContentFilter — configurable filter for blocking specific event types or payload patterns before emission. Used for PII/secret scrubbing in streamed output.