diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index 26e0e8bb16..00be6ef686 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -2815,8 +2815,11 @@ mod tests { use codex_protocol::items::HookPromptFragment; use codex_protocol::items::build_hook_prompt_message; use codex_protocol::mcp::CallToolResult; + use codex_protocol::models::ContentItem; use codex_protocol::models::FileSystemPermissions as CoreFileSystemPermissions; use codex_protocol::models::NetworkPermissions as CoreNetworkPermissions; + use codex_protocol::models::ResponseItem; + use codex_protocol::models::ResponseItemMetadata; use codex_protocol::plan_tool::PlanItemArg; use codex_protocol::plan_tool::StepStatus; use codex_protocol::protocol::CollabResumeBeginEvent; diff --git a/codex-rs/core/src/client_common.rs b/codex-rs/core/src/client_common.rs index ea6a209e2e..b87bc1ee34 100644 --- a/codex-rs/core/src/client_common.rs +++ b/codex-rs/core/src/client_common.rs @@ -46,7 +46,12 @@ pub struct Prompt { impl Prompt { pub(crate) fn get_formatted_input(&self) -> Vec { - let mut input = self.input.clone(); + let mut input: Vec = self + .input + .clone() + .into_iter() + .map(ResponseItem::with_generated_metadata_uuid) + .collect(); // when using the *Freeform* apply_patch tool specifically, tool outputs // should be structured text, not json. Do NOT reserialize when using diff --git a/codex-rs/core/src/state/turn.rs b/codex-rs/core/src/state/turn.rs index b39b1b1ca8..bdb79c4ba3 100644 --- a/codex-rs/core/src/state/turn.rs +++ b/codex-rs/core/src/state/turn.rs @@ -107,6 +107,13 @@ impl ApprovalOutcomeMetadata { approval_source, } } + + pub(crate) fn policy() -> Self { + Self { + review_decision: None, + approval_source: ApprovalSourceMetadata::Policy, + } + } } impl ActiveTurn {