use thiserror::Error;
pub type Result<T> = std::result::Result<T, KnowledgeError>;
#[derive(Error, Debug)]
pub enum KnowledgeError {
#[error("uv command failed: {0}")]
UvCommandFailed(String),
#[error("package not found: {0}")]
PackageNotFound(String),
#[error("stub parse error in {file}: {message}")]
StubParseError { file: String, message: String },
#[error("database error: {0}")]
DatabaseError(String),
#[error("invalid type fact kind: {0}")]
InvalidKind(String),
#[error("symbol not found: {module}.{symbol}")]
SymbolNotFound { module: String, symbol: String },
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
#[error("arrow error: {0}")]
Arrow(#[from] arrow::error::ArrowError),
#[error("parquet error: {0}")]
Parquet(#[from] parquet::errors::ParquetError),
}