feat: Enhance status with detailed filter plugin information

Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-09-03 09:17:07 -03:00
parent bfe56f5266
commit e5f71c7c5d
2 changed files with 27 additions and 6 deletions

View File

@@ -9,13 +9,22 @@ use crate::compression_engine::program::CompressionEngineProgram;
use crate::meta_plugin::MetaPluginType; use crate::meta_plugin::MetaPluginType;
use crate::services::filter_service::get_available_filter_plugins; use crate::services::filter_service::get_available_filter_plugins;
use crate::filter_plugin::FilterOption;
#[derive(serde::Serialize, serde::Deserialize, ToSchema)]
pub struct FilterPluginInfo {
pub name: String,
pub options: Vec<FilterOption>,
pub description: String,
}
#[derive(serde::Serialize, serde::Deserialize, ToSchema)] #[derive(serde::Serialize, serde::Deserialize, ToSchema)]
pub struct StatusInfo { pub struct StatusInfo {
pub paths: PathInfo, pub paths: PathInfo,
pub compression: Vec<CompressionInfo>, pub compression: Vec<CompressionInfo>,
pub meta_plugins: std::collections::HashMap<String, MetaPluginInfo>, pub meta_plugins: std::collections::HashMap<String, MetaPluginInfo>,
pub enabled_meta_plugins: Vec<String>, pub enabled_meta_plugins: Vec<String>,
pub filter_plugins: Vec<String>, pub filter_plugins: Vec<FilterPluginInfo>,
pub configured_meta_plugins: Option<Vec<crate::config::MetaPluginConfig>>, pub configured_meta_plugins: Option<Vec<crate::config::MetaPluginConfig>>,
} }

View File

@@ -33,11 +33,23 @@ impl StatusService {
let mut status_info = 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 filter plugins information // Add detailed filter plugins information
status_info.filter_plugins = get_available_filter_plugins() let filter_plugins_map = get_available_filter_plugins();
.keys() let mut filter_plugins_info = Vec::new();
.map(|name| name.clone())
.collect(); for (name, creator) in filter_plugins_map {
let plugin = creator();
let options = plugin.options();
// For now, use a default description
let description = "Filter plugin".to_string();
filter_plugins_info.push(crate::common::status::FilterPluginInfo {
name,
options,
description,
});
}
status_info.filter_plugins = filter_plugins_info;
// Add configured meta plugins information // Add configured meta plugins information
status_info.configured_meta_plugins = settings.meta_plugins.clone(); status_info.configured_meta_plugins = settings.meta_plugins.clone();