Skip to main content

velesdb_core/agent/
error.rs

1//! Error types for `AgentMemory` operations.
2
3use super::snapshot::SnapshotError;
4use thiserror::Error;
5
6/// Error variants returned by agent memory operations.
7#[derive(Debug, Error)]
8#[non_exhaustive]
9pub enum AgentMemoryError {
10    /// Returned when a memory subsystem collection cannot be created or opened.
11    #[error("Failed to initialize memory: {0}")]
12    InitializationError(String),
13
14    /// Returned when an underlying collection operation fails.
15    #[error("Collection error: {0}")]
16    CollectionError(String),
17
18    /// Returned when a requested memory entry does not exist.
19    #[error("Item not found: {0}")]
20    NotFound(String),
21
22    /// Returned when a provided embedding dimension does not match the stored dimension.
23    #[error("Invalid embedding dimension: expected {expected}, got {actual}")]
24    DimensionMismatch {
25        /// Expected embedding dimension.
26        expected: usize,
27        /// Actual embedding dimension provided.
28        actual: usize,
29    },
30
31    /// Returned when a core database error propagates from the storage layer.
32    #[error("Database error: {0}")]
33    DatabaseError(#[from] crate::error::Error),
34
35    /// Returned when a snapshot operation fails.
36    #[error("Snapshot error: {0}")]
37    SnapshotError(String),
38
39    /// Returned when an IO error occurs during snapshot persistence.
40    #[error("IO error: {0}")]
41    IoError(String),
42}
43
44impl From<SnapshotError> for AgentMemoryError {
45    fn from(e: SnapshotError) -> Self {
46        Self::SnapshotError(e.to_string())
47    }
48}
49
50impl From<std::io::Error> for AgentMemoryError {
51    fn from(e: std::io::Error) -> Self {
52        Self::IoError(e.to_string())
53    }
54}