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(), + ), + ); + } }