Skip to main content

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>;