use crate::domain::{CommandResult, SlashCommand};
use crate::infrastructure::handlers;
pub async fn execute_command(command: SlashCommand) -> CommandResult {
match command {
SlashCommand::Help => handlers::handle_help(),
SlashCommand::Clear => handlers::handle_clear(),
SlashCommand::Compact => handlers::handle_compact(),
SlashCommand::Cost => CommandResult::Output("Use /cost from the main loop.".into()),
SlashCommand::Model(name) => handlers::handle_model(&name),
SlashCommand::Diff => handlers::handle_diff().await,
SlashCommand::Status => handlers::handle_status().await,
SlashCommand::Doctor => handlers::handle_doctor().await,
SlashCommand::Config => CommandResult::Output("Use /config from the main loop.".into()),
SlashCommand::Permissions => CommandResult::Output("Use /permissions from the main loop.".into()),
SlashCommand::Session(id) => handlers::handle_session(&id).await,
SlashCommand::Plan => CommandResult::Output("Use /plan from the main loop.".into()),
SlashCommand::Usage => CommandResult::Output("Use /usage from the main loop.".into()),
SlashCommand::Mode => CommandResult::Output("Use /mode from the main loop.".into()),
SlashCommand::Think => CommandResult::Output("Use /think from the main loop.".into()),
SlashCommand::Add(_) => CommandResult::Output("Use /add from the main loop.".into()),
SlashCommand::Files => CommandResult::Output("Use /files from the main loop.".into()),
SlashCommand::Memory => CommandResult::Output("Use /memory from the main loop.".into()),
SlashCommand::Export => CommandResult::Output("Use /export from the main loop.".into()),
SlashCommand::Rewind(_) => CommandResult::Output("Use /rewind from the main loop.".into()),
SlashCommand::Review => CommandResult::Output("Use /review from the main loop.".into()),
SlashCommand::Commit => CommandResult::Output("Use /commit from the main loop.".into()),
SlashCommand::Fast => CommandResult::Output("Use /fast from the main loop.".into()),
SlashCommand::Effort(_) => CommandResult::Output("Use /effort from the main loop.".into()),
SlashCommand::Copy => CommandResult::Output("Use /copy from the main loop.".into()),
SlashCommand::Login => CommandResult::Output("Use /login from the main loop.".into()),
SlashCommand::Logout => CommandResult::Output("Use /logout from the main loop.".into()),
SlashCommand::Vim => CommandResult::Output("Use /vim from the main loop.".into()),
SlashCommand::Version => CommandResult::Output("Use /version from the main loop.".into()),
SlashCommand::Quit => CommandResult::Quit,
}
}