use std::time::Duration;
use thiserror::Error;
#[derive(Debug, Clone, Error)]
pub enum SandboxError {
#[error("execution timed out after {timeout:?}")]
Timeout {
timeout: Duration,
},
#[error("memory limit exceeded: {limit_mb} MB")]
MemoryExceeded {
limit_mb: u32,
},
#[error("execution failed: {0}")]
ExecutionFailed(String),
#[error("invalid request: {0}")]
InvalidRequest(String),
#[error("backend unavailable: {0}")]
BackendUnavailable(String),
}
impl From<std::io::Error> for SandboxError {
fn from(err: std::io::Error) -> Self {
SandboxError::ExecutionFailed(format!("I/O error: {err}"))
}
}