//! Internal app events delivered via channel. //! //! Background tasks (PTY child watchers, future hook listeners, etc.) send //! events to the main loop through this channel. No polling needed. use crate::detect::{Agent, AgentState}; use crate::layout::PaneId; /// An event from a background task to the main loop. #[derive(Debug)] pub enum AppEvent { /// A pane's child process exited. PaneDied { pane_id: PaneId }, /// Fallback detector state changed in a pane. StateChanged { pane_id: PaneId, agent: Option, state: AgentState, }, /// Hook-authoritative agent state was reported for a pane. HookStateReported { pane_id: PaneId, source: String, agent: Agent, state: AgentState, message: Option, }, /// Hook authority was explicitly cleared for a pane. HookAuthorityCleared { pane_id: PaneId, source: Option, }, /// The current detected agent gracefully released this pane back to the shell. HookAgentReleased { pane_id: PaneId, source: String, agent: Agent, }, /// A new version was downloaded and installed. Restart to use it. UpdateReady { version: String }, }