flush method

Future<void> flush()

Flush pending writes to disk.

Implementation

Future<void> flush() async {
  if (_pendingWrites.isEmpty) return;

  final toWrite = List<HistoryEntry>.from(_pendingWrites);
  _pendingWrites.clear();

  // Group by session.
  final bySession = <String, List<HistoryEntry>>{};
  for (final entry in toWrite) {
    bySession.putIfAbsent(entry.sessionId, () => []).add(entry);
  }

  // Append to session files.
  for (final entry in bySession.entries) {
    final file = File('$_baseDir/${entry.key}.jsonl');
    final lines = entry.value.map((e) => jsonEncode(e.toJson())).join('\n');
    await file.writeAsString('$lines\n', mode: FileMode.append);
  }
}