A member of an ExAgent.Session: either an :agent (typically backed by an
ExAgent.Server) or a :human (a real person driving via LiveView/a channel).
Participants are identified by their id (any term, usually a stable string).
For agents, ref may hold a pid / registered name / app-defined handle so the
host app can drive the agent when its turn comes. ExAgent itself never assumes
a particular ref shape — the Session is agnostic.