use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("validation error: {0}")]
Validation(String),
#[error(transparent)]
Memory(#[from] post_cortex_memory::error::Error),
#[error(transparent)]
Storage(#[from] post_cortex_storage::error::Error),
#[error("json error: {0}")]
Json(#[from] serde_json::Error),
#[error(transparent)]
External(#[from] anyhow::Error),
}
pub type Result<T, E = Error> = std::result::Result<T, E>;
impl Error {
#[must_use]
pub fn kind(&self) -> &'static str {
match self {
Self::Validation(_) => "validation",
Self::Memory(_) => "memory",
Self::Storage(_) => "storage",
Self::Json(_) => "json",
Self::External(_) => "external",
}
}
#[must_use]
pub fn mcp_code(&self) -> i32 {
match self {
Self::Validation(_) => -32602,
_ => -32603,
}
}
}