Sessions
Session lifecycle operations are protocol-level Op variants (crates/protocol/src/protocol.rs) and are handled in core session handlers (crates/core/src/handlers/session.rs, crates/core/src/handlers/mode.rs).
Session Operations
| Operation | Op | Core behavior | Primary event |
|---|---|---|---|
| Resume | Op::ResumeSession | Loads messages from persisted rollout and restores session source metadata. | Event::SessionResumed |
| Rewind (conversation only) | Op::RewindTo | Truncates messages to selected user turn; does not restore files. | Event::RewindComplete |
| Undo (conversation + files) | Op::UndoTo | Attempts persistence backtrack with file restore; falls back to message-only rewind on failure. | Event::UndoToComplete |
| Fork | Op::ForkSession | Truncates to selected turn, creates a new SessionId, and continues in new session lineage. | Event::SessionForked |
| New session | Op::NewSession | Resets in-memory state and emits fresh SessionReady + AvailableSkills. | Event::SessionReady |
| Rename | Op::RenameSession | Updates active session title. | Event::SessionRenamed |
TUI Entry Points
From slash commands (crates/tui/src/app/update/commands.rs and crates/tui/src/app/update/modals.rs):
/resumeopens resume picker and eventually sendsOp::ResumeSession.- Double-
Escopens transcript picker in backtrack mode and sendsOp::RewindTo. /undoopens transcript picker in undo mode and sendsOp::UndoTo./forkopens transcript picker in fork mode and sendsOp::ForkSession./newresets UI state and sendsOp::NewSession./renameopens rename modal and sendsOp::RenameSession.
Export
/export and /export --json are TUI-side transcript exports (crates/tui/src/app/update/commands.rs):
- reads rollout items
- extracts message history
- writes
session-<id>.mdorsession-<id>.jsonin current working directory