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]
: '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).',
);
}
}