Skip to main content

mentedb_core/
error.rs

1//! Error types for MenteDB.
2
3use thiserror::Error;
4
5use crate::types::MemoryId;
6
7/// Top-level error type for MenteDB operations.
8#[derive(Debug, Error)]
9pub enum MenteError {
10    /// The requested memory was not found.
11    #[error("memory not found: {0}")]
12    MemoryNotFound(MemoryId),
13
14    /// A storage-layer error occurred.
15    #[error("storage error: {0}")]
16    Storage(String),
17
18    /// An index-layer error occurred.
19    #[error("index error: {0}")]
20    Index(String),
21
22    /// A query-layer error occurred.
23    #[error("query error: {0}")]
24    Query(String),
25
26    /// A serialization or deserialization error occurred.
27    #[error("serialization error: {0}")]
28    Serialization(String),
29
30    /// A capacity limit was exceeded.
31    #[error("capacity exceeded: {0}")]
32    CapacityExceeded(String),
33
34    /// The embedding dimension does not match the expected dimension.
35    #[error("embedding dimension mismatch: got {got}, expected {expected}")]
36    EmbeddingDimensionMismatch {
37        /// Actual dimension provided.
38        got: usize,
39        /// Expected dimension.
40        expected: usize,
41    },
42
43    /// The agent does not have permission to access the memory space.
44    #[error("permission denied: agent {agent_id} cannot access space {space_id}")]
45    PermissionDenied {
46        /// The agent that was denied access.
47        agent_id: crate::types::AgentId,
48        /// The space that was inaccessible.
49        space_id: crate::types::SpaceId,
50    },
51
52    /// A resource limit has been exhausted.
53    #[error("resource exhausted: {0}")]
54    ResourceExhausted(String),
55
56    /// An I/O error occurred.
57    #[error(transparent)]
58    Io(#[from] std::io::Error),
59}
60
61/// Convenience result type for MenteDB operations.
62pub type MenteResult<T> = Result<T, MenteError>;