using Spectre.Console; namespace AnchorCli.Commands; public class CommandDispatcher { private readonly CommandRegistry _registry; public CommandDispatcher(CommandRegistry registry) { _registry = registry; } public async Task TryExecuteAsync(string input, CancellationToken ct) { if (!input.StartsWith('/')) return false; var parts = input[1..].Split(' ', 2); var commandName = parts[0]; var args = parts.Length > 1 ? new[] { parts[1] } : Array.Empty(); var command = _registry.GetCommand(commandName); if (command == null) { AnsiConsole.MarkupLine($"[red]Unknown command: /{commandName}[/]"); return true; } await command.ExecuteAsync(args, ct); return true; } }