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]
      : 'show';

  switch (subcommand) {
    case 'show':
    case 'view':
      final current = getPromptAddition();
      if (current.isEmpty) {
        return const TextCommandResult(
          'No additional prompt instructions set.\n'
          'Use /prompt set <text> to add instructions.',
        );
      }
      return TextCommandResult('Current prompt addition:\n$current');
    case 'set':
      if (parts.length < 2) {
        return const TextCommandResult('Usage: /prompt set <text>');
      }
      final text = parts.sublist(1).join(' ');
      setPromptAddition(text);
      return TextCommandResult(
        'Prompt addition set (${text.length} characters).',
      );
    case 'clear':
      setPromptAddition('');
      return const TextCommandResult('Prompt addition cleared.');
    case 'append':
      if (parts.length < 2) {
        return const TextCommandResult('Usage: /prompt append <text>');
      }
      final current = getPromptAddition();
      final text = parts.sublist(1).join(' ');
      final newPrompt = current.isEmpty ? text : '$current\n$text';
      setPromptAddition(newPrompt);
      return TextCommandResult(
        'Appended to prompt addition (${newPrompt.length} characters total).',
      );
    default:
      // Treat entire args as a prompt to set
      setPromptAddition(args.trim());
      return TextCommandResult(
        'Prompt addition set (${args.trim().length} characters).',
      );
  }
}