diff --git a/codex-rs/AGENTS.md b/codex-rs/AGENTS.md new file mode 100644 index 0000000000..a16874ffbb --- /dev/null +++ b/codex-rs/AGENTS.md @@ -0,0 +1,5 @@ +# Suggestions +* Always check your work with: + * `cargo build` + * `cargo test` + * `cargo clippy --all-features --tests -- -D warnings` \ No newline at end of file diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index a25e0f8be0..e5f0dc1f70 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -677,6 +677,7 @@ dependencies = [ "pretty_assertions", "rand 0.9.1", "reqwest", + "schemars 0.8.22", "seccompiler", "serde", "serde_json", diff --git a/codex-rs/core/Cargo.toml b/codex-rs/core/Cargo.toml index e192a71f39..7830e9bf09 100644 --- a/codex-rs/core/Cargo.toml +++ b/codex-rs/core/Cargo.toml @@ -26,6 +26,7 @@ mcp-types = { path = "../mcp-types" } mime_guess = "2.0" rand = "0.9" reqwest = { version = "0.12", features = ["json", "stream"] } +schemars = "0.8.22" serde = { version = "1", features = ["derive"] } serde_json = "1" sha1 = "0.10.6" diff --git a/codex-rs/core/src/protocol.rs b/codex-rs/core/src/protocol.rs index b233d4f27b..919f8b379d 100644 --- a/codex-rs/core/src/protocol.rs +++ b/codex-rs/core/src/protocol.rs @@ -17,6 +17,7 @@ use crate::config_types::ReasoningEffort as ReasoningEffortConfig; use crate::config_types::ReasoningSummary as ReasoningSummaryConfig; use crate::message_history::HistoryEntry; use crate::model_provider_info::ModelProviderInfo; +use schemars::JsonSchema; /// Submission Queue Entry - requests from user #[derive(Debug, Clone, Deserialize, Serialize)] @@ -486,7 +487,7 @@ pub struct SessionConfiguredEvent { } /// User's decision in response to an ExecApprovalRequest. -#[derive(Debug, Default, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)] +#[derive(Debug, Default, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "snake_case")] pub enum ReviewDecision { /// User has approved this command and the agent should execute it. diff --git a/codex-rs/mcp-server/src/codex_tool_config.rs b/codex-rs/mcp-server/src/codex_tool_config.rs index 8555524942..ba21c99850 100644 --- a/codex-rs/mcp-server/src/codex_tool_config.rs +++ b/codex-rs/mcp-server/src/codex_tool_config.rs @@ -2,6 +2,7 @@ use codex_core::config_types::SandboxMode; use codex_core::protocol::AskForApproval; +use codex_core::protocol::ReviewDecision; use mcp_types::Tool; use mcp_types::ToolInputSchema; use schemars::JsonSchema; @@ -156,6 +157,14 @@ impl CodexToolCallParam { } } +/// Client-supplied configuration for a `codex/experimental/approve_patch` tool-call. +#[derive(Debug, Clone, Deserialize, JsonSchema)] +#[serde(rename_all = "kebab-case")] +pub(crate) struct CodexApprovePatchToolCallParam { + /// The user's decision in response to the patch approval request. + pub review_decision: ReviewDecision, +} + #[cfg(test)] mod tests { use super::*;