execute method
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>]',
);
}
}