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 profile = await getProfile();

  final buffer = StringBuffer();
  buffer.writeln('Usage Profile');
  buffer.writeln('=============');
  buffer.writeln();

  final totalSessions = profile['totalSessions'] ?? 0;
  final totalTokens = profile['totalTokens'] ?? 0;
  final totalMessages = profile['totalMessages'] ?? 0;
  final totalToolUses = profile['totalToolUses'] ?? 0;
  final topTools = profile['topTools'] as List<dynamic>? ?? [];
  final activeSince = profile['activeSince'] as String? ?? 'unknown';

  buffer.writeln('  Active since:    $activeSince');
  buffer.writeln('  Total sessions:  $totalSessions');
  buffer.writeln('  Total messages:  $totalMessages');
  buffer.writeln('  Total tokens:    $totalTokens');
  buffer.writeln('  Tool invocations: $totalToolUses');

  if (topTools.isNotEmpty) {
    buffer.writeln();
    buffer.writeln('  Most used tools:');
    for (final tool in topTools.take(5)) {
      final name = tool['name'] ?? '?';
      final count = tool['count'] ?? 0;
      buffer.writeln('    $name: $count');
    }
  }

  return TextCommandResult(buffer.toString());
}