use serde::{Deserialize, Serialize}; #[expect(dead_code)] pub mod agents; #[expect(dead_code)] pub mod bash; #[expect(dead_code)] pub mod editor; #[expect(dead_code)] pub mod effort; #[expect(dead_code)] pub mod help; #[expect(dead_code)] pub mod key_input; #[expect(dead_code)] pub mod loading; #[expect(dead_code)] pub mod mcp; #[expect(dead_code)] pub mod onboard; #[expect(dead_code)] pub mod onboard_provider; #[expect(dead_code)] pub mod picker; #[expect(dead_code)] pub mod quit_confirm; #[expect(dead_code)] pub mod rewind; #[expect(dead_code)] pub mod security; #[expect(dead_code)] pub mod session_hub; #[expect(dead_code)] pub mod settings; #[expect(dead_code)] pub mod todo; #[expect(dead_code)] pub mod workflow; #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub enum ModeKind { Chat, Agents, Bash, Workflow, Help, Settings, SessionHub, QuitConfirm, Onboard, OnboardProvider, Picker, KeyInput, Editor, Effort, Mcp, Security, Todo, Rewind, Loading, } impl ModeKind { pub fn name(&self) -> &'static str { match self { ModeKind::Chat => "Chat", ModeKind::Agents => "Agents", ModeKind::Bash => "Bash", ModeKind::Workflow => "Workflow", ModeKind::Help => "Help", ModeKind::Settings => "Settings", ModeKind::SessionHub => "SessionHub", ModeKind::QuitConfirm => "QuitConfirm", ModeKind::Onboard => "Onboard", ModeKind::OnboardProvider => "OnboardProvider", ModeKind::Picker => "Picker", ModeKind::KeyInput => "KeyInput", ModeKind::Editor => "Editor", ModeKind::Effort => "Effort", ModeKind::Mcp => "MCP", ModeKind::Security => "Security", ModeKind::Todo => "Todo", ModeKind::Rewind => "Rewind", ModeKind::Loading => "Loading", } } pub fn is_overlay(self) -> bool { !matches!(self, ModeKind::Chat | ModeKind::Agents | ModeKind::Bash | ModeKind::Workflow) } }