use openkind_core::ValidationError;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum EngineError {
#[error("invalid request: {0}")]
Invalid(#[from] ValidationError),
#[error("no backend registered for model `{0}`")]
UnknownModel(String),
#[error("backend `{backend}` does not support this request: {message}")]
Unsupported {
backend: String,
message: String,
},
#[error("backend `{backend}` is overloaded; retry after {retry_after_ms} ms")]
Overloaded {
backend: String,
retry_after_ms: u64,
},
#[error("backend `{backend}` evaluation exceeded its {timeout_ms} ms deadline")]
DeadlineExceeded {
backend: String,
timeout_ms: u64,
},
#[error("backend `{backend}` returned an invalid response: {source}")]
BackendValidation {
backend: String,
#[source]
source: ValidationError,
},
#[error("backend `{backend}` failed: {message}")]
Backend {
backend: String,
message: String,
},
}
pub type EngineResult<T> = Result<T, EngineError>;