Conversation
Domain: Sessions & Persistence
Motivation
The conversation is the model-visible message thread a session projects from its event log. dsh-session derives it with session.deriveMessages(), projecting the log into the ordered Message[] the model sees each turn. Compaction can hide superseded entries from the active conversation without deleting them from the log.
Concrete Example
session.deriveMessages() is cached and incremental; surface events like user/message, assistant/message, and tool/result are what appear in the conversation.
Analogy
The visible chat window, as opposed to the full transcript behind it.