contrag_core/
error.rs

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}