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 parts = args.trim().split(RegExp(r'\s+'));
  final subcommand = parts.isNotEmpty && parts[0].isNotEmpty
      ? parts[0]
      : 'list';

  switch (subcommand) {
    case 'list':
      return _listPermissions();
    case 'allow':
      if (parts.length < 2) {
        return const TextCommandResult('Usage: /permissions allow <tool>');
      }
      setPermission(parts[1], 'allow');
      return TextCommandResult('Allowed: ${parts[1]}');
    case 'deny':
      if (parts.length < 2) {
        return const TextCommandResult('Usage: /permissions deny <tool>');
      }
      setPermission(parts[1], 'deny');
      return TextCommandResult('Denied: ${parts[1]}');
    case 'ask':
      if (parts.length < 2) {
        return const TextCommandResult('Usage: /permissions ask <tool>');
      }
      setPermission(parts[1], 'ask');
      return TextCommandResult('Set to ask: ${parts[1]}');
    default:
      return TextCommandResult(
        'Unknown subcommand: $subcommand\n'
        'Usage: /permissions [list|allow <tool>|deny <tool>|ask <tool>]',
      );
  }
}