use thiserror::Error;
pub type FierrosResult<T> = Result<T, FierrosError>;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum FierrosError {
#[error("configuration error: {0}")]
Configuration(String),
#[error("invalid input: {0}")]
InvalidInput(String),
#[error("provider error: {0}")]
Provider(String),
#[error("retrieval error: {0}")]
Retrieval(String),
#[error("graph error: {0}")]
Graph(String),
#[error("tool error: {0}")]
Tool(String),
#[error("policy error: {0}")]
Policy(String),
#[error("evaluation error: {0}")]
Eval(String),
#[error("internal error: {0}")]
Internal(String),
}