listSessions method

Future<List<SessionMetadata>> listSessions({
  1. int limit = 50,
})

List all sessions for the current project.

Implementation

Future<List<SessionMetadata>> listSessions({int limit = 50}) async {
  final projectDir = getProjectDir(cwd);
  final dir = Directory(projectDir);
  if (!await dir.exists()) return [];

  final sessions = <SessionMetadata>[];
  await for (final entity in dir.list()) {
    if (entity is! File) continue;
    if (!entity.path.endsWith('.jsonl')) continue;

    final metadata = await readLiteMetadata(entity.path);
    if (metadata != null) {
      sessions.add(metadata);
    }
  }

  // Sort by last modified, newest first.
  sessions.sort((a, b) {
    final aTime = a.lastModified ?? DateTime(2000);
    final bTime = b.lastModified ?? DateTime(2000);
    return bTime.compareTo(aTime);
  });

  return sessions.take(limit).toList();
}