mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
aa46f2debf
This is phase 1 of a 4 phase stack: 1. **Add protocol and host crates for new IPC code mode implementation** 2. Create the new standalone binary 3. Create a new IPC `CodeModeSessionProvider` to use new binary 4. Remove v8 from core and only use IPC provider ## Add protocol and host crates for new IPC code mode implementation Establish a clean process boundary without changing the existing in-process behavior. - Add the codex-code-mode-protocol crate for shared session, runtime, response, and tool-definition types. - Move protocol-facing code out of the V8-backed implementation. - Add a buildable codex-code-mode-host crate as the foundation for the standalone process. - Keep the existing in-process runtime as the active implementation.
90 lines
2.4 KiB
Rust
90 lines
2.4 KiB
Rust
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>,
|
|
}
|