mirror of
https://github.com/instructkr/claude-code.git
synced 2026-05-30 17:26:44 +00:00
fix: unknown slash command emits unknown_slash_command error_kind (#827)
Both direct-slash CLI path (claw /boguscommand) and resume slash path (claw --resume session /boguscommand) previously emitted error_kind:unknown (opaque fallback). Machine consumers could not distinguish unrecognized slash commands from other error classes. Fix: - format_unknown_direct_slash_command: prefix with 'unknown_slash_command:' - format_unknown_slash_command (resume path): prefix with 'unknown_slash_command:' - Add classifier arm for 'unknown_slash_command:' prefix One new regression test: direct_unknown_slash_command_emits_typed_error_kind Uses the direct-slash CLI path (no session load needed; reproducible on CI). 572 tests pass, 1 pre-existing worker_boot failure unrelated.
This commit is contained in:
@@ -271,7 +271,9 @@ Run `claw --help` for usage."
|
||||
/// matching against the error messages produced throughout the CLI surface.
|
||||
fn classify_error_kind(message: &str) -> &'static str {
|
||||
// Check specific patterns first (more specific before generic)
|
||||
if message.starts_with("command_not_found:") {
|
||||
if message.starts_with("unknown_slash_command:") {
|
||||
"unknown_slash_command"
|
||||
} else if message.starts_with("command_not_found:") {
|
||||
"command_not_found"
|
||||
} else if message.contains("missing Anthropic credentials") {
|
||||
"missing_credentials"
|
||||
@@ -1764,7 +1766,10 @@ fn format_unknown_option(option: &str) -> String {
|
||||
}
|
||||
|
||||
fn format_unknown_direct_slash_command(name: &str) -> String {
|
||||
let mut message = format!("unknown slash command outside the REPL: /{name}");
|
||||
// #827: prefix with classifier-friendly token so classify_error_kind
|
||||
// returns "unknown_slash_command" instead of the opaque fallback.
|
||||
let mut message =
|
||||
format!("unknown_slash_command: unknown slash command outside the REPL: /{name}");
|
||||
if let Some(suggestions) = render_suggestion_line("Did you mean", &suggest_slash_commands(name))
|
||||
{
|
||||
message.push('\n');
|
||||
@@ -1779,7 +1784,9 @@ fn format_unknown_direct_slash_command(name: &str) -> String {
|
||||
}
|
||||
|
||||
fn format_unknown_slash_command(name: &str) -> String {
|
||||
let mut message = format!("Unknown slash command: /{name}");
|
||||
// #827: prefix with classifier-friendly token so classify_error_kind
|
||||
// can return "unknown_slash_command" instead of the opaque fallback.
|
||||
let mut message = format!("unknown_slash_command: Unknown slash command: /{name}");
|
||||
if let Some(suggestions) = render_suggestion_line("Did you mean", &suggest_slash_commands(name))
|
||||
{
|
||||
message.push('\n');
|
||||
|
||||
Reference in New Issue
Block a user