use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("Execution error: {0}")]
Execution(String),
#[error("Sandbox configuration error: {0}")]
Configuration(String),
#[error("Tool error: {0}")]
Tool(String),
#[error("Security violation: {0}")]
Security(String),
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("Serialization error: {0}")]
Serialization(#[from] serde_json::Error),
#[error("{0}")]
General(String),
}
pub type Result<T> = std::result::Result<T, Error>;
impl From<anyhow::Error> for Error {
fn from(err: anyhow::Error) -> Self {
Error::General(err.to_string())
}
}
impl From<String> for Error {
fn from(s: String) -> Self {
Error::General(s)
}
}
impl From<&str> for Error {
fn from(s: &str) -> Self {
Error::General(s.to_string())
}
}