fix(#697): agents unknown subcommand exits 1 with typed error; plugins remove aliases uninstall and errors on not-found

This commit is contained in:
YeonGyu-Kim
2026-05-25 13:39:10 +09:00
parent c613e8e676
commit 91a0681ae9
2 changed files with 13 additions and 3 deletions

View File

@@ -2260,7 +2260,7 @@ pub fn handle_plugins_slash_command(
reload_runtime: true, reload_runtime: true,
}) })
} }
Some("uninstall") => { Some("remove") | Some("uninstall") => {
let Some(target) = target else { let Some(target) = target else {
return Ok(PluginsCommandResult { return Ok(PluginsCommandResult {
message: "Usage: /plugins uninstall <plugin-id>".to_string(), message: "Usage: /plugins uninstall <plugin-id>".to_string(),
@@ -2327,7 +2327,10 @@ pub fn handle_agents_slash_command(args: Option<&str>, cwd: &Path) -> std::io::R
Ok(render_agents_report(&agents)) Ok(render_agents_report(&agents))
} }
Some(args) if is_help_arg(args) => Ok(render_agents_usage(None)), Some(args) if is_help_arg(args) => Ok(render_agents_usage(None)),
Some(args) => Ok(render_agents_usage(Some(args))), Some(args) => Err(std::io::Error::new(
std::io::ErrorKind::InvalidInput,
format!("unknown agents subcommand: {args}. Supported: list, help"),
)),
} }
} }
@@ -2348,7 +2351,10 @@ pub fn handle_agents_slash_command_json(args: Option<&str>, cwd: &Path) -> std::
Ok(render_agents_report_json(cwd, &agents)) Ok(render_agents_report_json(cwd, &agents))
} }
Some(args) if is_help_arg(args) => Ok(render_agents_usage_json(None)), Some(args) if is_help_arg(args) => Ok(render_agents_usage_json(None)),
Some(args) => Ok(render_agents_usage_json(Some(args))), Some(args) => Err(std::io::Error::new(
std::io::ErrorKind::InvalidInput,
format!("unknown agents subcommand: {args}. Supported: list, help"),
)),
} }
} }

View File

@@ -294,6 +294,10 @@ fn classify_error_kind(message: &str) -> &'static str {
"empty_prompt" "empty_prompt"
} else if message.starts_with("interactive_only:") || message.contains("stdin is not a TTY") { } else if message.starts_with("interactive_only:") || message.contains("stdin is not a TTY") {
"interactive_only" "interactive_only"
} else if message.starts_with("unknown agents subcommand:") {
"unknown_agents_subcommand"
} else if message.contains("is not installed") {
"plugin_not_found"
} else { } else {
"unknown" "unknown"
} }