diff --git a/codex-rs/app-server/src/request_processors/plugins.rs b/codex-rs/app-server/src/request_processors/plugins.rs index cb515aac40..f9a7b499e9 100644 --- a/codex-rs/app-server/src/request_processors/plugins.rs +++ b/codex-rs/app-server/src/request_processors/plugins.rs @@ -731,17 +731,8 @@ impl PluginRequestProcessor { let plugins_input = config.plugins_config_input(); - let (mut data, mut marketplace_load_errors) = self - .load_local_installed_plugins( - plugins_manager.clone(), - &config, - &plugins_input, - roots.clone(), - ) - .await?; - - let (suggested_data, suggested_errors) = self - .load_suggested_plugins( + let (mut data, marketplace_load_errors) = self + .load_local_installed_and_suggested_plugins( plugins_manager.clone(), &config, &plugins_input, @@ -749,10 +740,6 @@ impl PluginRequestProcessor { install_suggestion_plugin_names, ) .await?; - for marketplace in suggested_data { - merge_plugin_marketplace_entry(&mut data, marketplace); - } - marketplace_load_errors.extend(suggested_errors); for marketplace in self .load_remote_installed_plugins(plugins_manager, &config, auth.as_ref()) @@ -767,56 +754,7 @@ impl PluginRequestProcessor { }) } - async fn load_local_installed_plugins( - &self, - plugins_manager: Arc, - config: &Config, - plugins_input: &codex_core_plugins::PluginsConfigInput, - roots: Vec, - ) -> Result { - let config_for_installed_listing = plugins_input.clone(); - let shared_plugin_ids_by_local_path = load_shared_plugin_ids_by_local_path(config)?; - match tokio::task::spawn_blocking(move || { - let outcome = plugins_manager.list_marketplaces_for_config( - &config_for_installed_listing, - &roots, - ConfiguredMarketplacePluginFilter::InstalledOnly, - )?; - Ok::(( - outcome - .marketplaces - .into_iter() - .map(|marketplace| { - convert_configured_marketplace_to_plugin_marketplace_entry( - marketplace, - &shared_plugin_ids_by_local_path, - ) - }) - .collect(), - outcome - .errors - .into_iter() - .map(|err| codex_app_server_protocol::MarketplaceLoadErrorInfo { - marketplace_path: err.path, - message: err.message, - }) - .collect(), - )) - }) - .await - { - Ok(Ok(outcome)) => Ok(outcome), - Ok(Err(err)) => Err(Self::marketplace_error( - err, - "list installed marketplace plugins", - )), - Err(err) => Err(internal_error(format!( - "failed to list installed plugins: {err}" - ))), - } - } - - async fn load_suggested_plugins( + async fn load_local_installed_and_suggested_plugins( &self, plugins_manager: Arc, config: &Config, @@ -824,10 +762,6 @@ impl PluginRequestProcessor { roots: Vec, install_suggestion_plugin_names: HashSet, ) -> Result { - if install_suggestion_plugin_names.is_empty() { - return Ok((Vec::new(), Vec::new())); - } - let config_for_marketplace_listing = plugins_input.clone(); let shared_plugin_ids_by_local_path = load_shared_plugin_ids_by_local_path(config)?; match tokio::task::spawn_blocking(move || { @@ -845,8 +779,8 @@ impl PluginRequestProcessor { .plugins .into_iter() .filter(|plugin| { - !plugin.installed - && install_suggestion_plugin_names.contains(&plugin.name) + plugin.installed + || install_suggestion_plugin_names.contains(&plugin.name) }) .map(|plugin| { convert_configured_marketplace_plugin_to_plugin_summary( @@ -883,10 +817,10 @@ impl PluginRequestProcessor { Ok(Ok(outcome)) => Ok(outcome), Ok(Err(err)) => Err(Self::marketplace_error( err, - "list plugin install suggestions", + "list installed and suggested marketplace plugins", )), Err(err) => Err(internal_error(format!( - "failed to list plugin install suggestions: {err}" + "failed to list installed and suggested plugins: {err}" ))), } }