OpencodeProjector — maps a ConversationView back to an opencode Session (with messages and parts populated).
OpencodeProjector
ConversationView
Session