exportTrajectoryMarkdown function
Renders snapshot as readable Markdown: one ## section per model turn,
one ### row per record, full texts and tool payloads in fenced blocks.
Implementation
String exportTrajectoryMarkdown(TrajectorySnapshot snapshot) {
final buffer = StringBuffer('# Trajectory export\n');
var turn = 0;
var shownTurn = 0;
for (final record in snapshot.records) {
final recordTurn = switch (record) {
TrajectoryAssistantRecord(:final turn) => turn,
TrajectoryUserRecord(:final opensTurn) => opensTurn ? turn + 1 : null,
_ => null,
};
if (recordTurn != null) turn = recordTurn;
if (turn != shownTurn && turn > 0) {
buffer
..write('\n## Turn $turn\n')
..write('\n');
shownTurn = turn;
}
buffer
..write(_markdownRow(record))
..write('\n');
}
_markdownBlobs(snapshot.blobs, buffer);
return buffer.toString();
}