1use thiserror::Error;
6
7#[derive(Error, Debug)]
9pub enum MemoryError {
10 #[error("memory with id {0} not found")]
12 NotFound(String),
13
14 #[error("embedding dimension mismatch: expected {expected}, got {actual}")]
16 DimensionMismatch { expected: usize, actual: usize },
17
18 #[error("embedding error: {0}")]
20 Embedding(#[from] EmbeddingError),
21
22 #[error("vector store error: {0}")]
24 VectorStore(#[from] VectorStoreError),
25
26 #[error("LLM error: {0}")]
28 LLM(#[from] LLMError),
29
30 #[error("configuration error: {0}")]
32 Config(String),
33
34 #[error("serialization error: {0}")]
36 Serialization(#[from] serde_json::Error),
37
38 #[error("invalid input: {0}")]
40 InvalidInput(String),
41
42 #[error("history database error: {0}")]
44 History(String),
45
46 #[error("reranking error: {0}")]
48 Reranker(String),
49}
50
51#[derive(Error, Debug)]
53pub enum EmbeddingError {
54 #[error("API error: {0}")]
56 Api(String),
57
58 #[error("network error: {0}")]
60 Network(String),
61
62 #[error("rate limit exceeded")]
64 RateLimited,
65
66 #[error("invalid response: {0}")]
68 InvalidResponse(String),
69
70 #[error("embedding provider not configured")]
72 NotConfigured,
73}
74
75#[derive(Error, Debug)]
77pub enum VectorStoreError {
78 #[error("connection error: {0}")]
80 Connection(String),
81
82 #[error("record not found: {0}")]
84 NotFound(String),
85
86 #[error("insert error: {0}")]
88 Insert(String),
89
90 #[error("search error: {0}")]
92 Search(String),
93
94 #[error("delete error: {0}")]
96 Delete(String),
97
98 #[error("update error: {0}")]
100 Update(String),
101
102 #[error("collection error: {0}")]
104 Collection(String),
105
106 #[error("vector store not configured")]
108 NotConfigured,
109}
110
111#[derive(Error, Debug)]
113pub enum LLMError {
114 #[error("API error: {0}")]
116 Api(String),
117
118 #[error("network error: {0}")]
120 Network(String),
121
122 #[error("rate limit exceeded")]
124 RateLimited,
125
126 #[error("invalid response: {0}")]
128 InvalidResponse(String),
129
130 #[error("JSON parsing error: {0}")]
132 JsonParse(String),
133
134 #[error("LLM provider not configured")]
136 NotConfigured,
137}
138
139pub type Result<T> = std::result::Result<T, MemoryError>;