use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("I/O error: {0}")]
IoError(String),
#[error("JSON error: {0}")]
JsonError(String),
#[error("Tool error: {0}")]
ToolError(String),
#[error("Protocol error: {0}")]
ProtocolError(String),
#[error("Transport error: {0}")]
TransportError(String),
#[error("Session error: {0}")]
SessionError(String),
#[error("Prompt error: {0}")]
PromptError(String),
#[error("Resource error: {0}")]
ResourceError(String),
}
impl From<std::io::Error> for Error {
fn from(err: std::io::Error) -> Self {
Error::IoError(err.to_string())
}
}
impl From<serde_json::Error> for Error {
fn from(err: serde_json::Error) -> Self {
Error::JsonError(err.to_string())
}
}