1use thiserror::Error;
2
3pub type McpResult<T> = Result<T, McpError>;
4
5#[derive(Error, Debug)]
6pub enum McpError {
7 #[error("Search error: {0}")]
8 #[allow(dead_code)]
9 Search(String),
10
11 #[error("Index error: {0}")]
12 #[allow(dead_code)]
13 Index(String),
14
15 #[error("Model error: {0}")]
16 #[allow(dead_code)]
17 Model(String),
18
19 #[error("IO error: {0}")]
20 Io(#[from] std::io::Error),
21
22 #[error("Invalid path: {0}")]
23 #[allow(dead_code)]
24 InvalidPath(String),
25
26 #[error("Operation cancelled")]
27 #[allow(dead_code)]
28 Cancelled,
29
30 #[error("Internal error: {0}")]
31 Internal(#[from] anyhow::Error),
32}
33
34impl McpError {
35 #[allow(dead_code)]
36 pub fn error_code(&self) -> &'static str {
37 match self {
38 McpError::Search(_) => "SEARCH_ERROR",
39 McpError::Index(_) => "INDEX_ERROR",
40 McpError::Model(_) => "MODEL_ERROR",
41 McpError::Io(_) => "IO_ERROR",
42 McpError::InvalidPath(_) => "INVALID_PATH",
43 McpError::Cancelled => "CANCELLED",
44 McpError::Internal(_) => "INTERNAL_ERROR",
45 }
46 }
47}