use thiserror::Error;
#[allow(dead_code)]
#[derive(Debug, Error)]
pub enum EmbeddingError {
#[error("embedding HTTP error: {0}")]
Http(String),
#[error("embedding auth failed (401/403)")]
Auth,
#[error("embedding rate-limited (429)")]
RateLimited,
#[error("embedding endpoint timed out")]
Timeout,
#[error("embedding network error")]
Network,
#[error("malformed embedding response: {0}")]
Malformed(String),
#[error("dimension mismatch: expected {expected}, got {got}")]
Dim {
expected: usize,
got: usize,
},
}
#[allow(dead_code)]
#[derive(Debug, Error)]
pub enum MemoryError {
#[error("crypto error: {0}")]
Crypto(String),
#[error("storage error: {0}")]
Storage(String),
#[error("embedding error: {0}")]
Embedding(#[from] EmbeddingError),
#[error("context budget exceeded by system+profile alone (config error)")]
BudgetUnsatisfiable,
#[error("invalid memory config: {0}")]
Config(String),
#[error("LLM provider error: {0}")]
Llm(String),
}