extractTodosFromTranscript function
Scan transcript for the last TodoWrite tool_use block and return its todos.
Implementation
List<Map<String, dynamic>> extractTodosFromTranscript(
List<Map<String, dynamic>> messages,
) {
for (var i = messages.length - 1; i >= 0; i--) {
final msg = messages[i];
if (msg['type'] != 'assistant') continue;
final content = msg['message']?['content'];
if (content is! List) continue;
for (final block in content) {
if (block is Map<String, dynamic> &&
block['type'] == 'tool_use' &&
block['name'] == 'TodoWrite') {
final input = block['input'];
if (input is Map<String, dynamic>) {
final todos = input['todos'];
if (todos is List) {
return todos.cast<Map<String, dynamic>>();
}
}
return [];
}
}
}
return [];
}