Skip to main content

Module event_log

Module event_log 

Source
Expand description

The session’s typed event history.

§Why the events are typed rather than a string

The CLI’s record mode replays this history, and a replay that has to parse a message to find out which transition it was is a replay that breaks when somebody rewords a message. Each variant is a fact, and a fact can be matched on.

§Why the version is a String

A protocol’s version is that protocol’s type: a date for MCP, a Major.Minor for A2A. Storing it as a string keeps this enum free of a dependency on either, and the engine renders it through Display on the way in. It is a lossy choice and a deliberate one — the log is for asking “what happened”, and the log answers that by naming the version that was agreed, not by being able to compare it.

§Redaction happens on the way out

These events carry the full request id, because the record mode has to correlate a notification with the request that caused it and a redacted id cannot do that. A sink that writes them to a log rather than to a file redacts at that boundary, which is where the redaction belongs — a value that cannot be logged is a value a record cannot hold.

Structs§

NullEventLog
An event log that goes nowhere.

Enums§

SessionEvent
One thing that happened to a session.

Traits§

EventLog
Where a session’s history goes.