exportTrajectoryMarkdown function

String exportTrajectoryMarkdown(
  1. TrajectorySnapshot snapshot
)

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();
}