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 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');
  }
}