1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum Error {
8 #[error("Configuration error: {0}")]
10 Config(String),
11
12 #[error("I/O error: {0}")]
14 Io(#[from] std::io::Error),
15
16 #[error("Serialization error: {0}")]
18 Serialization(String),
19
20 #[error("Session error: {0}")]
22 Session(String),
23
24 #[error("Channel error: {0}")]
26 Channel(String),
27
28 #[error("Provider error: {0}")]
30 Provider(String),
31
32 #[error("Tool error: {0}")]
34 Tool(String),
35
36 #[error("Validation error: {0}")]
38 Validation(String),
39
40 #[error("Not found: {0}")]
42 NotFound(String),
43
44 #[error("Unauthorized: {0}")]
46 Unauthorized(String),
47
48 #[error("Internal error: {0}")]
50 Internal(String),
51}
52
53pub type Result<T> = std::result::Result<T, Error>;
55
56impl From<serde_json::Error> for Error {
57 fn from(e: serde_json::Error) -> Self {
58 Error::Serialization(e.to_string())
59 }
60}
61
62impl From<config::ConfigError> for Error {
63 fn from(e: config::ConfigError) -> Self {
64 Error::Config(e.to_string())
65 }
66}