serializeConversation function
Serialize messages to plain text for summarization prompts.
Ported from pi's serializeConversation: [User]:, [Assistant]:,
[Assistant thinking]:, [Assistant tool calls]:, and truncated
[Tool result]: lines, joined by blank lines. Image blocks are skipped.
Implementation
String serializeConversation(List<Message> messages) {
final parts = <String>[];
for (final msg in messages) {
switch (msg) {
case UserMessage(:final content):
_serializeUserMessage(content, parts);
case AssistantMessage(:final content):
_serializeAssistantMessage(content, parts);
case ToolResultMessage(:final content):
_serializeToolResultMessage(content, parts);
default:
}
}
return parts.join('\n\n');
}