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:
@@ -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>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user