extractConversationText function
Flatten a message array into a single text string for Haiku title input.
Implementation
String extractConversationText(List<Map<String, dynamic>> messages) {
final parts = <String>[];
for (final msg in messages) {
final type = msg['type'] as String?;
if (type != 'user' && type != 'assistant') continue;
if (msg['isMeta'] == true) continue;
final origin = msg['origin'] as Map<String, dynamic>?;
if (origin != null && origin['kind'] != 'human') continue;
final content = msg['message']?['content'];
if (content is String) {
parts.add(content);
} else if (content is List) {
for (final block in content) {
if (block is Map<String, dynamic> &&
block['type'] == 'text' &&
block['text'] is String) {
parts.add(block['text'] as String);
}
}
}
}
final text = parts.join('\n');
return text.length > _maxConversationText
? text.substring(text.length - _maxConversationText)
: text;
}