Codex Handbook
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 }    }}