use thiserror::Error;
pub type Result<T> = std::result::Result<T, LambdaError>;
#[derive(Error, Debug)]
pub enum LambdaError {
#[error("Type conversion failed: {0}")]
TypeConversion(String),
#[error("HTTP error: {0}")]
Http(#[from] http::Error),
#[error("Hyper error: {0}")]
Hyper(#[from] hyper::Error),
#[error("Lambda HTTP error: {0}")]
LambdaHttp(#[from] lambda_http::Error),
#[error("Session storage error: {0}")]
SessionStorage(String),
#[error("MCP framework error: {0}")]
McpFramework(String),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[error("Body processing error: {0}")]
Body(String),
#[cfg(feature = "cors")]
#[error("CORS error: {0}")]
Cors(String),
#[cfg(feature = "sse")]
#[error("SSE streaming error: {0}")]
Sse(String),
#[error("Configuration error: {0}")]
Configuration(String),
#[error("Session error: {0}")]
Session(String),
}
impl From<turul_http_mcp_server::HttpMcpError> for LambdaError {
fn from(err: turul_http_mcp_server::HttpMcpError) -> Self {
LambdaError::McpFramework(err.to_string())
}
}
impl From<turul_mcp_session_storage::SessionStorageError> for LambdaError {
fn from(err: turul_mcp_session_storage::SessionStorageError) -> Self {
LambdaError::SessionStorage(err.to_string())
}
}