core/src/unified_exec/errors.rs
40 lines
use codex_protocol::exec_output::ExecToolCallOutput;use thiserror::Error;#[derive(Debug, Error)]pub(crate) enum UnifiedExecError { #[error("Failed to create unified exec process: {message}")] CreateProcess { message: String }, #[error("Unified exec process failed: {message}")] ProcessFailed { message: String }, // The model is trained on `session_id`, but internally we track a `process_id`. #[error("Unknown process id {process_id}")] UnknownProcessId { process_id: i32 }, #[error("failed to write to stdin")] WriteToStdin, #[error( "stdin is closed for this session; rerun exec_command with tty=true to keep stdin open" )] StdinClosed, #[error("missing command line for unified exec request")] MissingCommandLine, #[error("Command denied by sandbox: {message}")] SandboxDenied { message: String, output: ExecToolCallOutput, },}impl UnifiedExecError { pub(crate) fn create_process(message: String) -> Self { Self::CreateProcess { message } } pub(crate) fn process_failed(message: String) -> Self { Self::ProcessFailed { message } } pub(crate) fn sandbox_denied(message: String, output: ExecToolCallOutput) -> Self { Self::SandboxDenied { message, output } }}