Codex Handbook
code-mode-protocol/src/runtime.rs 89 lines
use codex_protocol::ToolName;use serde::Deserialize;use serde::Serialize;use serde_json::Value as JsonValue;use crate::CellId;use crate::CodeModeToolKind;use crate::FunctionCallOutputContentItem;use crate::ToolDefinition;pub const DEFAULT_EXEC_YIELD_TIME_MS: u64 = 10_000;pub const DEFAULT_WAIT_YIELD_TIME_MS: u64 = 10_000;pub const DEFAULT_MAX_OUTPUT_TOKENS_PER_EXEC_CALL: usize = 10_000;#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]pub struct ExecuteRequest {    pub tool_call_id: String,    pub enabled_tools: Vec<ToolDefinition>,    pub source: String,    pub yield_time_ms: Option<u64>,    pub max_output_tokens: Option<usize>,}#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]pub struct WaitRequest {    pub cell_id: CellId,    pub yield_time_ms: u64,}#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]pub struct WaitToPendingRequest {    pub cell_id: CellId,}#[derive(Debug, Deserialize, PartialEq, Serialize)]pub enum WaitOutcome {    LiveCell(RuntimeResponse),    MissingCell(RuntimeResponse),}#[derive(Debug, Deserialize, PartialEq, Serialize)]pub enum ExecuteToPendingOutcome {    Pending {        cell_id: CellId,        content_items: Vec<FunctionCallOutputContentItem>,        pending_tool_call_ids: Vec<String>,    },    Completed(RuntimeResponse),}#[derive(Debug, Deserialize, PartialEq, Serialize)]pub enum WaitToPendingOutcome {    LiveCell(ExecuteToPendingOutcome),    MissingCell(RuntimeResponse),}impl From<WaitOutcome> for RuntimeResponse {    fn from(outcome: WaitOutcome) -> Self {        match outcome {            WaitOutcome::LiveCell(response) | WaitOutcome::MissingCell(response) => response,        }    }}#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]pub enum RuntimeResponse {    Yielded {        cell_id: CellId,        content_items: Vec<FunctionCallOutputContentItem>,    },    Terminated {        cell_id: CellId,        content_items: Vec<FunctionCallOutputContentItem>,    },    Result {        cell_id: CellId,        content_items: Vec<FunctionCallOutputContentItem>,        error_text: Option<String>,    },}#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]pub struct CodeModeNestedToolCall {    pub cell_id: CellId,    pub runtime_tool_call_id: String,    pub tool_name: ToolName,    pub tool_kind: CodeModeToolKind,    pub input: Option<JsonValue>,}