EXPERIMENTAL: Agent APIs are likely to change.
Who put a message on the conversation record.
Another agent: the message was sent from within that agent's turn.
The engine, reporting a subscribed agent's lifecycle transition.
The user: a prompt submitted by a client rather than sent by an agent.
@type t() :: :USER | :AGENT | :EVENT
@spec agent() :: :AGENT
@spec event() :: :EVENT
@spec user() :: :USER