#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum Error {
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("YAML parsing error: {0}")]
YamlParsing(#[from] serde_yaml::Error),
#[error("Tokio JoinError: {0}")]
TokioJoin(#[from] tokio::task::JoinError),
#[error("Tokio Channel error: {0}")]
TokioChannel(#[from] tokio::sync::mpsc::error::SendError<crate::ui::tui::screens::Event>),
#[error(transparent)]
Languages(#[from] crate::languages::Error),
#[error(transparent)]
Models(#[from] crate::models::Error),
#[error(transparent)]
Fs(#[from] crate::fs::Error),
#[error("Status mutex lock error: {0}")]
StatusLock(String),
#[error("TUI error: {0}")]
Tui(String),
#[error("Project directories error: {0}")]
ProjectDirs(String),
#[error("Command error: {0}")]
Command(String),
#[error("Initial events failed")]
InitialEvents,
}