From 983af9b30f971662be97909cb7abae6a9aa15450 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Thu, 28 Aug 2025 17:04:14 -0300 Subject: [PATCH] feat: add meta plugin options to status information Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) --- src/common/status.rs | 2 ++ src/services/status_service.rs | 40 ++++++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/common/status.rs b/src/common/status.rs index fd6c280..a6738b6 100644 --- a/src/common/status.rs +++ b/src/common/status.rs @@ -41,6 +41,7 @@ pub struct MetaPluginInfo { pub binary: String, pub args: String, pub outputs: std::collections::HashMap, + pub options: std::collections::HashMap, } pub fn generate_status_info( @@ -151,6 +152,7 @@ pub fn generate_status_info( binary: binary_display, args: args_display, outputs: outputs_display, + options: std::collections::HashMap::new(), }); } diff --git a/src/services/status_service.rs b/src/services/status_service.rs index 00ac980..c878aee 100644 --- a/src/services/status_service.rs +++ b/src/services/status_service.rs @@ -36,7 +36,25 @@ impl StatusService { Some(crate::compression_engine::default_compression_type()) }; - generate_status_info(data_path, db_path, &meta_plugin_types, enabled_compression_type) + let mut status_info = generate_status_info(data_path, db_path, &meta_plugin_types, enabled_compression_type); + + // Add options to each meta plugin info + for meta_plugin_info in &mut status_info.meta_plugins { + let meta_plugin_type = MetaPluginType::from_str(&meta_plugin_info.meta_name).unwrap(); + let plugin = crate::meta_plugin::get_meta_plugin(meta_plugin_type, None, None); + + // Convert options to a serializable format + let options: std::collections::HashMap = plugin + .options() + .iter() + .map(|(k, v)| (k.clone(), v.clone())) + .collect(); + + // Add options to the meta plugin info + meta_plugin_info.options = options; + } + + status_info } pub fn generate_supported_status( @@ -55,7 +73,25 @@ impl StatusService { // Default to LZ4 compression for the API status endpoint let enabled_compression_type = Some(CompressionType::LZ4); - generate_status_info(data_path, db_path, &supported_meta_plugins, enabled_compression_type) + let mut status_info = generate_status_info(data_path, db_path, &supported_meta_plugins, enabled_compression_type); + + // Add options to each meta plugin info + for meta_plugin_info in &mut status_info.meta_plugins { + let meta_plugin_type = MetaPluginType::from_str(&meta_plugin_info.meta_name).unwrap(); + let plugin = crate::meta_plugin::get_meta_plugin(meta_plugin_type, None, None); + + // Convert options to a serializable format + let options: std::collections::HashMap = plugin + .options() + .iter() + .map(|(k, v)| (k.clone(), v.clone())) + .collect(); + + // Add options to the meta plugin info + meta_plugin_info.options = options; + } + + status_info } }