UI-neutral event emitted by Vibe sessions.
TUI and Phoenix LiveView clients consume these events and reduce them into the same state. Events should describe Vibe semantics, not terminal rendering.
Summary
Types
@type t() :: %Vibe.Event{ at: DateTime.t(), data: term(), id: String.t(), session_id: String.t(), type: atom() }