Skip to main content

ai_agent/utils/plugins/
plugin_startup_check.rs

1// Source: ~/claudecode/openclaudecode/src/utils/plugins/pluginStartupCheck.ts
2#![allow(dead_code)]
3
4use super::installed_plugins_manager::get_in_memory_installed_plugins;
5use super::marketplace_manager::get_plugin_by_id;
6use super::plugin_identifier::parse_plugin_identifier;
7
8/// Check for enabled plugins across all settings sources.
9pub async fn check_enabled_plugins() -> Vec<String> {
10    // Stub: settings module not available
11    Vec::new()
12}
13
14/// Find plugins that are enabled but not installed.
15pub async fn find_missing_plugins(enabled_plugins: &[String]) -> Vec<String> {
16    let installed_plugins = match get_installed_plugin_ids() {
17        Ok(p) => p,
18        Err(_) => return Vec::new(),
19    };
20
21    let not_installed: Vec<_> = enabled_plugins
22        .iter()
23        .filter(|id| !installed_plugins.iter().any(|s| s.as_str() == id.as_str()))
24        .cloned()
25        .collect();
26
27    let mut missing = Vec::new();
28    for plugin_id in not_installed {
29        match get_plugin_by_id(&plugin_id).await {
30            Some(_) => missing.push(plugin_id),
31            None => log::debug!("Plugin {} not found in any marketplace", plugin_id),
32        }
33    }
34
35    missing
36}
37
38/// Get the list of currently installed plugins.
39pub async fn get_installed_plugins() -> Result<Vec<String>, String> {
40    let v2_data = get_in_memory_installed_plugins();
41    let installed: Vec<_> = v2_data.plugins.keys().cloned().collect();
42    log::debug!("Found {} installed plugins", installed.len());
43    Ok(installed)
44}
45
46fn get_installed_plugin_ids() -> Result<Vec<String>, String> {
47    let v2_data = get_in_memory_installed_plugins();
48    Ok(v2_data.plugins.keys().cloned().collect())
49}