extractBashToolsFromMessages function
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;
}