//! Error types for the Docker execution sandbox. use std::time::Duration; /// Errors that can occur in the sandbox system. #[derive(Debug, thiserror::Error)] pub enum SandboxError { /// Docker daemon is not available or not running. #[error("Docker not available: {reason}")] DockerNotAvailable { reason: String }, /// Failed to create container. #[error("Container creation failed: {reason}")] ContainerCreationFailed { reason: String }, /// Failed to start container. #[error("Container start failed: {reason}")] ContainerStartFailed { reason: String }, /// Command execution failed inside container. #[error("Execution failed: {reason}")] ExecutionFailed { reason: String }, /// Command timed out. #[error("Command timed out after {0:?}")] Timeout(Duration), /// Container resource limit exceeded. #[error("Resource limit exceeded: {resource} limit of {limit}")] ResourceLimitExceeded { resource: String, limit: String }, /// Network proxy error. #[error("Proxy error: {reason}")] ProxyError { reason: String }, /// Network request blocked by policy. #[error("Network request blocked: {reason}")] NetworkBlocked { reason: String }, /// Credential injection failed. #[error("Credential injection failed for {domain}: {reason}")] CredentialInjectionFailed { domain: String, reason: String }, /// Docker API error. #[error("Docker API error: {0}")] Docker(#[from] bollard::errors::Error), /// I/O error. #[error("I/O error: {0}")] Io(#[from] std::io::Error), /// Configuration error. #[error("Configuration error: {reason}")] Config { reason: String }, } /// Result type for sandbox operations. pub type Result = std::result::Result;