From 47059dc578100b0c12929b9f1ebb72441f9f8b7c Mon Sep 17 00:00:00 2001 From: Kunall Banerjee Date: Wed, 15 Apr 2026 09:12:32 -0400 Subject: [PATCH] settings: Remove `settings` field from HTTP `context_servers` (#48003) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HTTP context servers don’t support the settings field, so remove it during migration to avoid confusion. Other context server types are unaffected. Closes #44786. https://github.com/user-attachments/assets/4cabf405-c9e7-4d6e-a43d-f642fc4771e0 Release Notes: - Removed deprecated key from HTTP `context_servers` --------- Co-authored-by: Bennet Bo Fenner Co-authored-by: Bennet Bo Fenner --- crates/migrator/src/migrations.rs | 6 ++ .../src/migrations/m_2026_04_15/settings.rs | 19 ++++++ crates/migrator/src/migrator.rs | 61 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 crates/migrator/src/migrations/m_2026_04_15/settings.rs diff --git a/crates/migrator/src/migrations.rs b/crates/migrator/src/migrations.rs index ed9c6ff51513b706a7eda93fafe59438feb90c59..4ed4c0a2632074d08fcbf2591a18290cebcd33e0 100644 --- a/crates/migrator/src/migrations.rs +++ b/crates/migrator/src/migrations.rs @@ -334,3 +334,9 @@ pub(crate) mod m_2026_04_10 { pub(crate) use settings::rename_web_search_to_search_web; } + +pub(crate) mod m_2026_04_15 { + mod settings; + + pub(crate) use settings::remove_settings_from_http_context_servers; +} diff --git a/crates/migrator/src/migrations/m_2026_04_15/settings.rs b/crates/migrator/src/migrations/m_2026_04_15/settings.rs new file mode 100644 index 0000000000000000000000000000000000000000..32fde8347adc1002953dd55e7cb6872323f1f547 --- /dev/null +++ b/crates/migrator/src/migrations/m_2026_04_15/settings.rs @@ -0,0 +1,19 @@ +use anyhow::Result; +use serde_json::Value; + +pub fn remove_settings_from_http_context_servers(settings: &mut Value) -> Result<()> { + if let Some(obj) = settings.as_object_mut() { + if let Some(context_servers) = obj.get_mut("context_servers") { + if let Some(servers) = context_servers.as_object_mut() { + for (_, server) in servers.iter_mut() { + if let Some(server_obj) = server.as_object_mut() { + if server_obj.contains_key("url") { + server_obj.remove("settings"); + } + } + } + } + } + } + Ok(()) +} diff --git a/crates/migrator/src/migrator.rs b/crates/migrator/src/migrator.rs index 4a9873f9b574d9194052156cbdb685f93bccfcb4..b4a49130cb0854b2dbe150e814149969456920db 100644 --- a/crates/migrator/src/migrator.rs +++ b/crates/migrator/src/migrator.rs @@ -250,6 +250,7 @@ pub fn migrate_settings(text: &str) -> Result> { MigrationType::Json(migrations::m_2026_03_30::make_play_sound_when_agent_done_an_enum), MigrationType::Json(migrations::m_2026_04_01::restructure_profiles_with_settings_key), MigrationType::Json(migrations::m_2026_04_10::rename_web_search_to_search_web), + MigrationType::Json(migrations::m_2026_04_15::remove_settings_from_http_context_servers), ]; run_migrations(text, migrations) } @@ -4980,4 +4981,64 @@ mod tests { ), ); } + + #[test] + fn test_remove_settings_from_http_context_servers() { + assert_migrate_settings( + &r#" + { + "context_servers": { + "http_server": { + "url": "https://example.com/mcp", + "settings": {} + }, + "http_server_with_headers": { + "url": "https://example.com/mcp", + "headers": { + "Authorization": "Bearer token" + }, + "settings": {} + }, + "extension_server": { + "settings": { + "foo": "bar" + } + }, + "stdio_server": { + "command": "npx", + "args": ["-y", "some-server"] + } + } + } + "# + .unindent(), + Some( + &r#" + { + "context_servers": { + "http_server": { + "url": "https://example.com/mcp" + }, + "http_server_with_headers": { + "url": "https://example.com/mcp", + "headers": { + "Authorization": "Bearer token" + } + }, + "extension_server": { + "settings": { + "foo": "bar" + } + }, + "stdio_server": { + "command": "npx", + "args": ["-y", "some-server"] + } + } + } + "# + .unindent(), + ), + ); + } }