From c13e71851b48af29c8c10e04c3bc0a03cfc4d91f Mon Sep 17 00:00:00 2001 From: clawdbot Date: Tue, 13 Oct 2026 00:02:35 +0000 Subject: [PATCH] Revert "Merge pull request #3333 from ultraworkers/implement-slash-commands" This reverts commit cf18dac3ee0ed15b87db48e47ca79eb241b4ce73, reversing changes made to a2eb74c00effdc815770f030d3a979aa89295d1b. --- rust/crates/commands/src/lib.rs | 149 ++------------------------------ 1 file changed, 7 insertions(+), 142 deletions(-) diff --git a/rust/crates/commands/src/lib.rs b/rust/crates/commands/src/lib.rs index 2c36a63e..a1e70069 100644 --- a/rust/crates/commands/src/lib.rs +++ b/rust/crates/commands/src/lib.rs @@ -5297,60 +5297,6 @@ fn mcp_server_json(name: &str, server: &ScopedMcpServerConfig) -> Value { }) } -fn render_session_status(session: &Session) -> String { - let message_count = session.messages.len(); - let mut total_input = 0u32; - let mut total_output = 0u32; - for msg in &session.messages { - if let Some(usage) = msg.usage { - total_input = total_input.saturating_add(usage.input_tokens); - total_output = total_output.saturating_add(usage.output_tokens); - } - } - format!( - "Session {}: {} messages, {} input tokens, {} output tokens", - &session.session_id[0..8], - message_count, - total_input, - total_output - ) -} - -fn render_token_cost(session: &Session) -> String { - let mut total_input = 0u32; - let mut total_output = 0u32; - let mut cache_creation = 0u32; - let mut cache_read = 0u32; - for msg in &session.messages { - if let Some(usage) = msg.usage { - total_input = total_input.saturating_add(usage.input_tokens); - total_output = total_output.saturating_add(usage.output_tokens); - cache_creation = cache_creation.saturating_add(usage.cache_creation_input_tokens); - cache_read = cache_read.saturating_add(usage.cache_read_input_tokens); - } - } - format!( - "Cumulative token usage for this session: - Input tokens: {} - Output tokens: {} - Cache creation tokens: {} - Cache read tokens: {} - Total input: {}", - total_input, - total_output, - cache_creation, - cache_read, - total_input - .saturating_add(cache_creation) - .saturating_add(cache_read) - ) -} - -fn render_version_info() -> String { - let version = env!("CARGO_PKG_VERSION"); - format!("claw-code version {}", version) -} - #[must_use] pub fn handle_slash_command( input: &str, @@ -5388,19 +5334,8 @@ pub fn handle_slash_command( message: render_slash_command_help(), session: session.clone(), }), - SlashCommand::Status => Some(SlashCommandResult { - message: render_session_status(session), - session: session.clone(), - }), - SlashCommand::Cost => Some(SlashCommandResult { - message: render_token_cost(session), - session: session.clone(), - }), - SlashCommand::Version => Some(SlashCommandResult { - message: render_version_info(), - session: session.clone(), - }), - SlashCommand::Bughunter { .. } + SlashCommand::Status + | SlashCommand::Bughunter { .. } | SlashCommand::Commit | SlashCommand::Pr { .. } | SlashCommand::Issue { .. } @@ -5411,6 +5346,7 @@ pub fn handle_slash_command( | SlashCommand::Model { .. } | SlashCommand::Permissions { .. } | SlashCommand::Clear { .. } + | SlashCommand::Cost | SlashCommand::Resume { .. } | SlashCommand::Config { .. } | SlashCommand::Workspace { .. } @@ -5418,6 +5354,7 @@ pub fn handle_slash_command( | SlashCommand::Memory | SlashCommand::Init | SlashCommand::Diff + | SlashCommand::Version | SlashCommand::Export { .. } | SlashCommand::Session { .. } | SlashCommand::Plugins { .. } @@ -6256,6 +6193,7 @@ mod tests { fn ignores_unknown_or_runtime_bound_slash_commands() { let session = Session::new(); assert!(handle_slash_command("/unknown", &session, CompactionConfig::default()).is_none()); + assert!(handle_slash_command("/status", &session, CompactionConfig::default()).is_none()); assert!(handle_slash_command("/sandbox", &session, CompactionConfig::default()).is_none()); assert!( handle_slash_command("/bughunter", &session, CompactionConfig::default()).is_none() @@ -6287,6 +6225,7 @@ mod tests { handle_slash_command("/clear --confirm", &session, CompactionConfig::default()) .is_none() ); + assert!(handle_slash_command("/cost", &session, CompactionConfig::default()).is_none()); assert!(handle_slash_command( "/resume session.json", &session, @@ -6305,6 +6244,7 @@ mod tests { ); assert!(handle_slash_command("/mcp list", &session, CompactionConfig::default()).is_none()); assert!(handle_slash_command("/diff", &session, CompactionConfig::default()).is_none()); + assert!(handle_slash_command("/version", &session, CompactionConfig::default()).is_none()); assert!( handle_slash_command("/export note.txt", &session, CompactionConfig::default()) .is_none() @@ -7266,79 +7206,4 @@ mod tests { let _ = fs::remove_dir_all(config_home); let _ = fs::remove_dir_all(bundled_root); } - - #[test] - fn status_command_shows_session_info() { - use runtime::TokenUsage; - - let mut session = Session::new(); - session.messages.push(ConversationMessage { - role: MessageRole::User, - blocks: vec![ContentBlock::Text { - text: "hello".to_string(), - }], - usage: Some(TokenUsage { - input_tokens: 10, - output_tokens: 20, - cache_creation_input_tokens: 0, - cache_read_input_tokens: 0, - }), - }); - session.messages.push(ConversationMessage { - role: MessageRole::Assistant, - blocks: vec![ContentBlock::Text { - text: "response".to_string(), - }], - usage: Some(TokenUsage { - input_tokens: 5, - output_tokens: 15, - cache_creation_input_tokens: 0, - cache_read_input_tokens: 0, - }), - }); - - let result = handle_slash_command("/status", &session, CompactionConfig::default()) - .expect("/status should be handled"); - assert!(result.message.contains("2 messages")); - assert!(result.message.contains("15 input tokens")); - assert!(result.message.contains("35 output tokens")); - assert_eq!(result.session, session); - } - - #[test] - fn cost_command_shows_token_usage() { - use runtime::TokenUsage; - - let mut session = Session::new(); - session.messages.push(ConversationMessage { - role: MessageRole::User, - blocks: vec![ContentBlock::Text { - text: "hello".to_string(), - }], - usage: Some(TokenUsage { - input_tokens: 100, - output_tokens: 200, - cache_creation_input_tokens: 50, - cache_read_input_tokens: 25, - }), - }); - - let result = handle_slash_command("/cost", &session, CompactionConfig::default()) - .expect("/cost should be handled"); - assert!(result.message.contains("100")); - assert!(result.message.contains("200")); - assert!(result.message.contains("50")); - assert!(result.message.contains("25")); - assert!(result.message.contains("Cumulative token usage")); - assert_eq!(result.session, session); - } - - #[test] - fn version_command_shows_version() { - let session = Session::new(); - let result = handle_slash_command("/version", &session, CompactionConfig::default()) - .expect("/version should be handled"); - assert!(result.message.contains("claw-code version")); - assert_eq!(result.session, session); - } }