use std::io;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum ExoMonadError {
#[error("JSON parse error: {source}")]
JsonParse {
#[source]
source: serde_json::Error,
},
#[error("JSON serialize error: {0}")]
JsonSerialize(#[source] serde_json::Error),
#[error("I/O error: {0}")]
Io(#[source] io::Error),
#[error("MCP server error: {0}")]
McpServer(String),
}
pub type Result<T> = std::result::Result<T, ExoMonadError>;
impl From<serde_json::Error> for ExoMonadError {
fn from(e: serde_json::Error) -> Self {
Self::JsonParse { source: e }
}
}
impl From<std::io::Error> for ExoMonadError {
fn from(e: std::io::Error) -> Self {
Self::Io(e)
}
}