execute method

  1. @override
Future<CommandResult> execute(
  1. String args,
  2. ToolUseContext context
)
override

Execute the command.

Implementation

@override
Future<CommandResult> execute(String args, ToolUseContext context) async {
  final arg = args.trim().toLowerCase();

  if (arg.isEmpty) {
    return TextCommandResult(
      'Current theme: ${getCurrentTheme()}\n'
      'Usage: /theme <name> or /theme list',
    );
  }

  if (arg == 'list') {
    final current = getCurrentTheme();
    final buffer = StringBuffer();
    buffer.writeln('Available themes:');
    for (final t in _availableThemes) {
      final marker = t == current ? ' (current)' : '';
      buffer.writeln('  $t$marker');
    }
    return TextCommandResult(buffer.toString());
  }

  if (!_availableThemes.contains(arg)) {
    return TextCommandResult(
      'Unknown theme: $arg\n'
      'Available: ${_availableThemes.join(", ")}',
    );
  }

  setTheme(arg);
  return TextCommandResult('Theme changed to: $arg');
}