SessionEventComposer

The chat stream of a session, made from its events in the session store: the lane view reads events, not Claude Code's transcript (trove-parts §TPN-10, TPX-38).

Group libtrove

In the namespace octomy::trove::ui. Declared in src/libs/libtrove/trove/ui/SessionEventComposer.hpp.

Detailed description

Each event of the part's types (§TPN-3) becomes at most one message of the shared ChatStreamWidget:

  • prompt is the operator's message, text the assistant's, and a tool_use a chip of one line with the tool and its salient argument. An image of a prompt shows as its placeholder.
  • system, thinking, limit and a turn_end that did not end well are collapsed cards, set aside from the LLM's own output (§UI-3.6, TPX-10). The title of a card is the subtype of the event.
  • error is a warning, open. An authentication error says how to sign in (TPX-40).
  • usage and tool_result are not rows: the header of the lane view sums the usage (TPX-5).
  • A system event that only counts progress, as Claude Code's thinking_tokens, is not a row. Claude Code sends one for each step of its thinking, so a card for each one buried the stream under identical cards (trove-unified-ui owner check, 2026-10-19, TUX-28). The thinking event that follows shows the thinking.

See also octomy::trove::ui::SessionEventFollower, octomy::trove::TroveLaneActivity.

In this section