diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 3b3f771fca..a2e393b6bd 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -83,6 +83,7 @@ use codex_protocol::config_types::Settings; use codex_protocol::config_types::WebSearchMode; use codex_protocol::dynamic_tools::DynamicToolResponse; use codex_protocol::dynamic_tools::DynamicToolSpec; +use codex_protocol::item_metadata::stamp_user_message_type_on_input_item; use codex_protocol::items::PlanItem; use codex_protocol::items::TurnItem; use codex_protocol::items::UserMessageItem; @@ -90,6 +91,7 @@ use codex_protocol::items::build_hook_prompt_message; use codex_protocol::mcp::CallToolResult; use codex_protocol::models::BaseInstructions; use codex_protocol::models::PermissionProfile; +use codex_protocol::models::ResponseItemMessageMetadata; use codex_protocol::models::UserMessageType; use codex_protocol::models::format_allow_prefixes; use codex_protocol::openai_models::ModelInfo; @@ -331,7 +333,6 @@ use codex_protocol::models::ContentItem; use codex_protocol::models::DeveloperInstructions; use codex_protocol::models::ResponseInputItem; use codex_protocol::models::ResponseItem; -use codex_protocol::models::ResponseItemMessageMetadata; use codex_protocol::openai_models::ReasoningEffort as ReasoningEffortConfig; use codex_protocol::protocol::CodexErrorInfo; use codex_protocol::protocol::InitialHistory; @@ -1002,20 +1003,6 @@ fn local_time_context() -> (String, String) { } } -fn stamp_user_message_type_on_input_item(item: &mut ResponseInputItem, kind: UserMessageType) { - let ResponseInputItem::Message { role, metadata, .. } = item else { - return; - }; - if role != "user" { - return; - } - let mut metadata_value = metadata - .take() - .unwrap_or_else(|| ResponseItemMessageMetadata::new(None)); - metadata_value.user_message_type = Some(kind); - *metadata = Some(metadata_value); -} - #[derive(Clone)] pub(crate) struct SessionConfiguration { /// Provider identifier ("openai", "openrouter", ...). diff --git a/codex-rs/protocol/src/item_metadata.rs b/codex-rs/protocol/src/item_metadata.rs new file mode 100644 index 0000000000..09e04a4938 --- /dev/null +++ b/codex-rs/protocol/src/item_metadata.rs @@ -0,0 +1,17 @@ +use crate::models::ResponseInputItem; +use crate::models::ResponseItemMessageMetadata; +use crate::models::UserMessageType; + +pub fn stamp_user_message_type_on_input_item(item: &mut ResponseInputItem, kind: UserMessageType) { + let ResponseInputItem::Message { role, metadata, .. } = item else { + return; + }; + if role != "user" { + return; + } + let mut metadata_value = metadata + .take() + .unwrap_or_else(|| ResponseItemMessageMetadata::new(None)); + metadata_value.user_message_type = Some(kind); + *metadata = Some(metadata_value); +} diff --git a/codex-rs/protocol/src/lib.rs b/codex-rs/protocol/src/lib.rs index 08466ba4ea..10b4c55efe 100644 --- a/codex-rs/protocol/src/lib.rs +++ b/codex-rs/protocol/src/lib.rs @@ -5,6 +5,7 @@ pub mod approvals; pub mod config_types; pub mod custom_prompts; pub mod dynamic_tools; +pub mod item_metadata; pub mod items; pub mod mcp; pub mod memory_citation;