aonyx_core/error.rs
1//! Canonical error type for Aonyx Agent.
2
3use thiserror::Error;
4
5/// Every fallible operation in the workspace returns `Result<T> = std::result::Result<T, AonyxError>`.
6#[derive(Debug, Error)]
7pub enum AonyxError {
8 /// Configuration is missing or malformed.
9 #[error("configuration error: {0}")]
10 Config(String),
11
12 /// LLM provider returned an error or could not be reached.
13 #[error("provider error: {0}")]
14 Provider(String),
15
16 /// Memory palace operation failed (KG, diary, search, indexing).
17 #[error("memory error: {0}")]
18 Memory(String),
19
20 /// Tool invocation failed before, during, or after execution.
21 #[error("tool error: {0}")]
22 Tool(String),
23
24 /// Skill could not be loaded, matched, or executed.
25 #[error("skill error: {0}")]
26 Skill(String),
27
28 /// MCP client or server protocol error.
29 #[error("mcp error: {0}")]
30 Mcp(String),
31
32 /// Channel adapter (Telegram / Discord / HTTP server) failure.
33 #[error("adapter error: {0}")]
34 Adapter(String),
35
36 /// A destructive action was rejected by the approval gate.
37 #[error("approval rejected: {0}")]
38 ApprovalRejected(String),
39
40 /// Underlying filesystem / network I/O failure.
41 #[error(transparent)]
42 Io(#[from] std::io::Error),
43
44 /// JSON (de)serialization failure.
45 #[error(transparent)]
46 Json(#[from] serde_json::Error),
47}
48
49/// Workspace-wide `Result` alias.
50pub type Result<T> = std::result::Result<T, AonyxError>;