use crate::embedding::EmbeddingError;
use crate::jobs::JobsError;
use crate::llm::LlmError;
use crate::store::StoreError;
use crate::vector::VectorError;
#[derive(Debug, thiserror::Error)]
pub enum ClientError {
#[error("embedding model failed: {0}")]
Embedding(#[from] EmbeddingError),
#[error("vector index failed: {0}")]
Vector(#[from] VectorError),
#[error("store failed: {0}")]
Store(#[from] StoreError),
#[error("jobs failed: {0}")]
Jobs(#[from] JobsError),
#[error("llm provider failed: {0}")]
Llm(#[from] LlmError),
#[error("migration failed: {0}")]
Migration(#[from] crate::migration::MigrationError),
#[error("database connection failed: {0}")]
Database(#[from] sea_orm::DbErr),
#[error(
"metadata uses reserved key '{key}'; reserved keys are owned by memoir-core's payload schema and cannot be set via metadata"
)]
ReservedMetadataKey { key: String },
#[error("nli classifier failed: {0}")]
Nli(String),
#[error("memory {pid} is not correctable via feedback: {reason}")]
NotCorrectable { pid: String, reason: String },
#[cfg(feature = "knowledge-graph")]
#[error("knowledge graph failed: {0}")]
Graph(#[from] crate::graph::GraphError),
#[cfg(feature = "knowledge-graph")]
#[error("a graph_name was configured but no falkor connection was supplied")]
GraphNotConfigured,
}