execute method
Execute the command.
Implementation
@override
Future<CommandResult> execute(String args, ToolUseContext context) async {
final messages = getMessages();
if (messages.isEmpty) {
return const TextCommandResult('Nothing to compact.');
}
try {
final result = await compactionService.compactConversation(
messages: messages,
systemPrompt: getSystemPrompt(),
);
final saved = result.preCompactTokenCount - result.postCompactTokenCount;
return CompactCommandResult(
result.compactedMessages,
displayText:
'Conversation compacted. '
'Reduced from ~${result.preCompactTokenCount} to '
'~${result.postCompactTokenCount} tokens '
'(saved ~$saved tokens).',
);
} catch (e) {
return TextCommandResult('Compaction failed: $e');
}
}