Files
wifi-densepose/vendor/ruvector/examples/ruvLLM/src/error.rs

151 lines
3.4 KiB
Rust

//! Error types for RuvLLM
use thiserror::Error;
/// Result type for RuvLLM operations
pub type Result<T> = std::result::Result<T, Error>;
/// Error types for RuvLLM
#[derive(Error, Debug)]
pub enum Error {
/// Configuration error
#[error("Configuration error: {0}")]
Config(String),
/// Memory/database error
#[error("Memory error: {0}")]
Memory(#[from] MemoryError),
/// Router error
#[error("Router error: {0}")]
Router(#[from] RouterError),
/// Embedding error
#[error("Embedding error: {0}")]
Embedding(String),
/// Inference error
#[error("Inference error: {0}")]
Inference(#[from] InferenceError),
/// Learning service error
#[error("Learning error: {0}")]
Learning(String),
/// Attention computation error
#[error("Attention error: {0}")]
Attention(String),
/// IO error
#[error("IO error: {0}")]
Io(#[from] std::io::Error),
/// Serialization error
#[error("Serialization error: {0}")]
Serialization(String),
/// Session not found
#[error("Session not found: {0}")]
SessionNotFound(String),
/// Rate limit exceeded
#[error("Rate limit exceeded")]
RateLimitExceeded,
/// Timeout
#[error("Operation timed out")]
Timeout,
/// Internal error
#[error("Internal error: {0}")]
Internal(String),
}
/// Memory-specific errors
#[derive(Error, Debug)]
pub enum MemoryError {
/// Node not found
#[error("Node not found: {0}")]
NodeNotFound(String),
/// Edge not found
#[error("Edge not found: {src} -> {dst}")]
EdgeNotFound { src: String, dst: String },
/// Index error
#[error("Index error: {0}")]
Index(String),
/// Storage error
#[error("Storage error: {0}")]
Storage(String),
/// Capacity exceeded
#[error("Memory capacity exceeded")]
CapacityExceeded,
}
/// Router-specific errors
#[derive(Error, Debug)]
pub enum RouterError {
/// Invalid feature vector
#[error("Invalid feature vector: expected {expected} dims, got {actual}")]
InvalidFeatures { expected: usize, actual: usize },
/// Model not available
#[error("Model not available: {0:?}")]
ModelNotAvailable(crate::types::ModelSize),
/// Weight loading error
#[error("Failed to load weights: {0}")]
WeightLoadError(String),
/// Training error
#[error("Training error: {0}")]
TrainingError(String),
}
/// Inference-specific errors
#[derive(Error, Debug)]
pub enum InferenceError {
/// Model loading error
#[error("Failed to load model: {0}")]
ModelLoadError(String),
/// Generation error
#[error("Generation failed: {0}")]
GenerationError(String),
/// Generation failed (alias)
#[error("Generation failed: {0}")]
GenerationFailed(String),
/// Initialization error
#[error("Initialization failed: {0}")]
InitFailed(String),
/// Out of memory
#[error("Out of memory for model {0:?}")]
OutOfMemory(crate::types::ModelSize),
/// Invalid prompt
#[error("Invalid prompt: {0}")]
InvalidPrompt(String),
/// Context too long
#[error("Context exceeds maximum length: {length} > {max}")]
ContextTooLong { length: usize, max: usize },
}
impl From<anyhow::Error> for Error {
fn from(err: anyhow::Error) -> Self {
Error::Internal(err.to_string())
}
}
impl From<serde_json::Error> for Error {
fn from(err: serde_json::Error) -> Self {
Error::Serialization(err.to_string())
}
}