extractBashToolsFromMessages function

Set<String> extractBashToolsFromMessages(
  1. List<Map<String, dynamic>> messages
)

Extract the top-level CLI tools used in BashTool calls from messages.

Implementation

Set<String> extractBashToolsFromMessages(List<Map<String, dynamic>> messages) {
  final tools = <String>{};
  for (final message in messages) {
    if (message['type'] != 'assistant') continue;
    final content = message['message']?['content'];
    if (content is! List) continue;

    for (final block in content) {
      if (block is! Map<String, dynamic> ||
          block['type'] != 'tool_use' ||
          block['name'] != 'Bash') {
        continue;
      }
      final input = block['input'] as Map<String, dynamic>?;
      if (input == null) continue;
      final command = input['command'] as String?;
      final cliName = _extractCliName(command);
      if (cliName != null) tools.add(cliName);
    }
  }
  return tools;
}