From 4181370135697f4fd997ba5895139c31c913f178 Mon Sep 17 00:00:00 2001 From: Gabriel Peal Date: Mon, 6 Oct 2025 12:01:31 -0700 Subject: [PATCH 1/2] --wip-- [skip ci] --- codex-rs/Cargo.lock | 4 ---- codex-rs/Cargo.toml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 350773a3c5b1..ba31e15b82de 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -4771,8 +4771,6 @@ dependencies = [ [[package]] name = "rmcp" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583d060e99feb3a3683fb48a1e4bf5f8d4a50951f429726f330ee5ff548837f8" dependencies = [ "base64", "bytes", @@ -4805,8 +4803,6 @@ dependencies = [ [[package]] name = "rmcp-macros" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "421d8b0ba302f479214889486f9550e63feca3af310f1190efcf6e2016802693" dependencies = [ "darling 0.21.3", "proc-macro2", diff --git a/codex-rs/Cargo.toml b/codex-rs/Cargo.toml index bcbe8445090c..813df6c0693b 100644 --- a/codex-rs/Cargo.toml +++ b/codex-rs/Cargo.toml @@ -249,4 +249,4 @@ codegen-units = 1 ratatui = { git = "https://github.com/nornagon/ratatui", branch = "nornagon-v0.29.0-patch" } # Uncomment to debug local changes. -# rmcp = { path = "../../rust-sdk/crates/rmcp" } +rmcp = { path = "../../rust-sdk/crates/rmcp" } From 23ebd2f36557e8e0f47e5f010061f4ce7ad18d2c Mon Sep 17 00:00:00 2001 From: Gabriel Peal Date: Mon, 6 Oct 2025 14:07:07 -0700 Subject: [PATCH 2/2] Works --- codex-rs/Cargo.lock | 4 ++++ codex-rs/Cargo.toml | 2 +- codex-rs/rmcp-client/src/rmcp_client.rs | 19 +++++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index ba31e15b82de..350773a3c5b1 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -4771,6 +4771,8 @@ dependencies = [ [[package]] name = "rmcp" version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583d060e99feb3a3683fb48a1e4bf5f8d4a50951f429726f330ee5ff548837f8" dependencies = [ "base64", "bytes", @@ -4803,6 +4805,8 @@ dependencies = [ [[package]] name = "rmcp-macros" version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "421d8b0ba302f479214889486f9550e63feca3af310f1190efcf6e2016802693" dependencies = [ "darling 0.21.3", "proc-macro2", diff --git a/codex-rs/Cargo.toml b/codex-rs/Cargo.toml index 813df6c0693b..bcbe8445090c 100644 --- a/codex-rs/Cargo.toml +++ b/codex-rs/Cargo.toml @@ -249,4 +249,4 @@ codegen-units = 1 ratatui = { git = "https://github.com/nornagon/ratatui", branch = "nornagon-v0.29.0-patch" } # Uncomment to debug local changes. -rmcp = { path = "../../rust-sdk/crates/rmcp" } +# rmcp = { path = "../../rust-sdk/crates/rmcp" } diff --git a/codex-rs/rmcp-client/src/rmcp_client.rs b/codex-rs/rmcp-client/src/rmcp_client.rs index d19bf8fe72f9..676af9a5dd7e 100644 --- a/codex-rs/rmcp-client/src/rmcp_client.rs +++ b/codex-rs/rmcp-client/src/rmcp_client.rs @@ -120,14 +120,17 @@ impl RmcpClient { url: &str, bearer_token: Option, ) -> Result { - let initial_tokens = match load_oauth_tokens(server_name, url) { - Ok(tokens) => tokens, - Err(err) => { - warn!("failed to read tokens for server `{server_name}`: {err}"); - None - } + let initial_oauth_tokens = match bearer_token { + Some(_) => None, + None => match load_oauth_tokens(server_name, url) { + Ok(tokens) => tokens, + Err(err) => { + warn!("failed to read tokens for server `{server_name}`: {err}"); + None + } + }, }; - let transport = if let Some(initial_tokens) = initial_tokens.clone() { + let transport = if let Some(initial_tokens) = initial_oauth_tokens.clone() { let (transport, oauth_persistor) = create_oauth_transport_and_runtime(server_name, url, initial_tokens).await?; PendingTransport::StreamableHttpWithOAuth { @@ -137,7 +140,7 @@ impl RmcpClient { } else { let mut http_config = StreamableHttpClientTransportConfig::with_uri(url.to_string()); if let Some(bearer_token) = bearer_token { - http_config = http_config.auth_header(format!("Bearer {bearer_token}")); + http_config = http_config.auth_header(bearer_token); } let transport = StreamableHttpClientTransport::from_config(http_config);