From 7e0056fbdfe9e9342f1aa74aefada6aba0deb881 Mon Sep 17 00:00:00 2001 From: Dylan Hurd Date: Wed, 20 Aug 2025 23:46:20 -0700 Subject: [PATCH] [mcp] Add InputItem type --- codex-rs/core/src/models.rs | 3 +++ codex-rs/mcp-server/src/codex_message_processor.rs | 6 ++++++ codex-rs/protocol/src/mcp_protocol.rs | 8 ++++++++ codex-rs/protocol/src/protocol.rs | 8 ++++++++ 4 files changed, 25 insertions(+) diff --git a/codex-rs/core/src/models.rs b/codex-rs/core/src/models.rs index 0c509ee282..6aa6d3351f 100644 --- a/codex-rs/core/src/models.rs +++ b/codex-rs/core/src/models.rs @@ -183,6 +183,9 @@ impl From> for ResponseInputItem { None } }, + InputItem::FileReference { name, path } => Some(ContentItem::InputText { + text: format!("[{name}]({})", path.to_string_lossy()), + }), _ => None, }) .collect::>(), diff --git a/codex-rs/mcp-server/src/codex_message_processor.rs b/codex-rs/mcp-server/src/codex_message_processor.rs index 0bbf6ff849..507c45440a 100644 --- a/codex-rs/mcp-server/src/codex_message_processor.rs +++ b/codex-rs/mcp-server/src/codex_message_processor.rs @@ -417,6 +417,9 @@ impl CodexMessageProcessor { WireInputItem::Text { text } => CoreInputItem::Text { text }, WireInputItem::Image { image_url } => CoreInputItem::Image { image_url }, WireInputItem::LocalImage { path } => CoreInputItem::LocalImage { path }, + WireInputItem::FileReference { name, path } => { + CoreInputItem::FileReference { name, path } + } }) .collect(); @@ -465,6 +468,9 @@ impl CodexMessageProcessor { WireInputItem::Text { text } => CoreInputItem::Text { text }, WireInputItem::Image { image_url } => CoreInputItem::Image { image_url }, WireInputItem::LocalImage { path } => CoreInputItem::LocalImage { path }, + WireInputItem::FileReference { name, path } => { + CoreInputItem::FileReference { name, path } + } }) .collect(); diff --git a/codex-rs/protocol/src/mcp_protocol.rs b/codex-rs/protocol/src/mcp_protocol.rs index 7fb087cf2a..6ff41e2925 100644 --- a/codex-rs/protocol/src/mcp_protocol.rs +++ b/codex-rs/protocol/src/mcp_protocol.rs @@ -292,6 +292,14 @@ pub enum InputItem { LocalImage { path: PathBuf, }, + + /// A reference to a file in the user's workspace. + FileReference { + /// The name of the file + name: String, + /// The relative path to the file in the user's workspace. + path: PathBuf, + }, } // TODO(mbolin): Need test to ensure these constants match the enum variants. diff --git a/codex-rs/protocol/src/protocol.rs b/codex-rs/protocol/src/protocol.rs index fbe052bf95..e3ca2edc09 100644 --- a/codex-rs/protocol/src/protocol.rs +++ b/codex-rs/protocol/src/protocol.rs @@ -376,6 +376,14 @@ pub enum InputItem { LocalImage { path: std::path::PathBuf, }, + + /// A reference to a file in the user's workspace. + FileReference { + /// The name of the file + name: String, + /// The relative path to the file in the user's workspace. + path: PathBuf, + }, } /// Event Queue Entry - events from agent