//! Command layer — all model mutations go through this layer so they can be //! replayed, scripted, and tested without the TUI. //! //! Commands are trait objects (`dyn Cmd`) that produce effects (`dyn Effect`). //! The headless CLI (--cmd / --script) parses quasi-lisp text into effects //! and applies them directly. pub mod cmd; pub mod keymap; pub mod parse; pub use parse::parse_line;