use thiserror::Error;

/// Root error type for things that genuinely cross crate boundaries.
///
/// Crate-specific errors (e.g. `executor_core::ExecError`) stay local. Only
/// promote a variant to `Error` when more than one crate needs to match on it.
#[derive(Debug, Error)]
pub enum Error {
    #[error("script not found: {0}")]
    ScriptNotFound(crate::ScriptId),

    #[error("invalid script source: {0}")]
    InvalidScript(String),

    #[error("app not found: {0}")]
    AppNotFound(crate::AppId),

    #[error("domain claim conflict: {0}")]
    DomainConflict(String),
}
