use thiserror::Error;
pub type ReasoningResult<T> = std::result::Result<T, ReasoningError>;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum ReasoningError {
#[error("operator `{operator}` failed: {message}")]
OperatorFailed {
operator: String,
message: String,
},
#[error("invalid state transition: {message}")]
InvalidTransition {
message: String,
},
#[error("strategy compilation failed: {message}")]
CompilationFailed {
message: String,
},
#[error("graph execution exceeded max iterations: {max}")]
MaxIterationsExceeded {
max: usize,
},
#[error("verification failed: {message}")]
VerificationFailed {
message: String,
},
#[error("graph validation failed: {message}")]
GraphValidation {
message: String,
},
#[error("graph contains a cycle")]
CycleDetected,
}