1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum ContragError {
5 #[error("Configuration error: {0}")]
6 ConfigError(String),
7
8 #[error("Data source error: {0}")]
9 DataSourceError(String),
10
11 #[error("Embedder error: {0}")]
12 EmbedderError(String),
13
14 #[error("Vector store error: {0}")]
15 VectorStoreError(String),
16
17 #[error("Entity not found: {0}")]
18 EntityNotFound(String),
19
20 #[error("Invalid dimension: expected {expected}, got {actual}")]
21 DimensionMismatch { expected: usize, actual: usize },
22
23 #[error("HTTP outcall error: {0}")]
24 HttpOutcallError(String),
25
26 #[error("Serialization error: {0}")]
27 SerializationError(String),
28
29 #[error("Canister call error: {0}")]
30 CanisterCallError(String),
31
32 #[error("Invalid configuration: {0}")]
33 InvalidConfig(String),
34
35 #[error("Storage error: {0}")]
36 StorageError(String),
37
38 #[error("Context building error: {0}")]
39 ContextBuildError(String),
40}
41
42pub type Result<T> = std::result::Result<T, ContragError>;
43
44impl From<serde_json::Error> for ContragError {
45 fn from(err: serde_json::Error) -> Self {
46 ContragError::SerializationError(err.to_string())
47 }
48}