use nexcore_error::Error;
#[derive(Debug, Error)]
pub enum CognitionError {
#[error("shape mismatch: expected {expected:?}, got {got:?} in {operation}")]
ShapeMismatch {
expected: Vec<usize>,
got: Vec<usize>,
operation: &'static str,
},
#[error("dimension {dim} out of range for tensor with {ndim} dimensions in {operation}")]
DimensionOutOfRange {
dim: usize,
ndim: usize,
operation: &'static str,
},
#[error("empty tensor in {operation}: {reason}")]
EmptyTensor {
operation: &'static str,
reason: &'static str,
},
#[error("numerical instability in {operation}: {detail}")]
NumericalInstability {
operation: &'static str,
detail: String,
},
#[error("invalid configuration: {0}")]
InvalidConfig(String),
#[error("generation halted: {reason}")]
GenerationHalted { reason: String },
#[error("token id {id} out of vocabulary range [0, {vocab_size})")]
TokenOutOfRange { id: usize, vocab_size: usize },
}
pub type Result<T> = std::result::Result<T, CognitionError>;