1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum Error {
8 #[error("Execution error: {0}")]
10 Execution(String),
11
12 #[error("Sandbox configuration error: {0}")]
14 Configuration(String),
15
16 #[error("Tool error: {0}")]
18 Tool(String),
19
20 #[error("Security violation: {0}")]
22 Security(String),
23
24 #[error("IO error: {0}")]
26 Io(#[from] std::io::Error),
27
28 #[error("Serialization error: {0}")]
30 Serialization(#[from] serde_json::Error),
31
32 #[error("{0}")]
34 General(String),
35}
36
37pub type Result<T> = std::result::Result<T, Error>;
39
40impl From<anyhow::Error> for Error {
41 fn from(err: anyhow::Error) -> Self {
42 Error::General(err.to_string())
43 }
44}
45
46impl From<String> for Error {
47 fn from(s: String) -> Self {
48 Error::General(s)
49 }
50}
51
52impl From<&str> for Error {
53 fn from(s: &str) -> Self {
54 Error::General(s.to_string())
55 }
56}