use thiserror::Error;
#[derive(Debug, Error)]
pub enum CoreError {
#[error("unknown module: {0}")]
UnknownModule(String),
#[error("missing module config: {0}")]
MissingConfig(String),
#[error("module timed out: {0}")]
ModuleTimeout(String),
#[error("invalid JSON input: {0}")]
InvalidJson(#[from] serde_json::Error),
#[error("invalid TOML: {0}")]
InvalidToml(#[from] toml::de::Error),
#[error("io error: {0}")]
Io(#[from] std::io::Error),
#[error("failed to read config at {path}: {source}")]
ConfigRead {
path: String,
source: std::io::Error,
},
#[error("invalid TOML at {path}: {source}")]
ConfigParse {
path: String,
source: toml::de::Error,
},
#[error("task panicked")]
TaskPanic,
#[error("worker disconnected")]
WorkerDisconnected,
#[error("invalid config: {0}")]
InvalidConfig(String),
#[cfg(feature = "git")]
#[error(transparent)]
Git(#[from] git2::Error),
}