diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index da228cfb..342bd91a 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -4033,6 +4033,8 @@ fn run_resume_command( "config_load_error": payload.config_load_error, "message": &payload.message, "reload_runtime": payload.reload_runtime, + "plugins": payload.plugins, + "load_failures": payload.load_failures, }); Ok(ResumeCommandOutcome { session: session.clone(), @@ -5636,6 +5638,8 @@ impl LiveCli { "config_load_error": payload.config_load_error, "message": payload.message, "reload_runtime": payload.reload_runtime, + "plugins": payload.plugins, + "load_failures": payload.load_failures, }))? ), } @@ -5803,7 +5807,6 @@ impl LiveCli { target: Option<&str>, ) -> Result> { let cwd = env::current_dir()?; - let loader = ConfigLoader::default_for(&cwd); let payload = plugins_command_payload_for(&cwd, action, target)?; println!("{}", payload.message); if payload.reload_runtime { @@ -7760,6 +7763,8 @@ struct PluginsCommandPayload { reload_runtime: bool, status: &'static str, config_load_error: Option, + plugins: Vec, + load_failures: Vec, } fn plugins_command_payload_for( @@ -7774,17 +7779,21 @@ fn plugins_command_payload_for( }; let mut manager = build_plugin_manager(cwd, &loader, &runtime_config); let result = handle_plugins_slash_command(action, target, &mut manager)?; + let report = manager.installed_plugin_registry_report()?; Ok(plugins_command_payload_from_result( result, config_load_error, + &report, )) } fn plugins_command_payload_from_result( result: PluginsCommandResult, config_load_error: Option, + report: &plugins::PluginRegistryReport, ) -> PluginsCommandPayload { - let status = if config_load_error.is_some() { + let failures = report.failures(); + let status = if config_load_error.is_some() || !failures.is_empty() { "degraded" } else { "ok" @@ -7801,6 +7810,8 @@ fn plugins_command_payload_from_result( reload_runtime: result.reload_runtime, status, config_load_error, + plugins: report.summaries().iter().map(plugin_summary_json).collect(), + load_failures: failures.iter().map(plugin_load_failure_json).collect(), } }