create method

  1. @override
Future<Session> create(
  1. JsonlSessionCreateOptions options
)
override

Creates a new session.

Implementation

@override
Future<Session> create(JsonlSessionCreateOptions options) async {
  final id = options.id ?? createSessionId();
  final createdAt = DateTime.now();
  final sessionsRoot = await _getSessionsRoot();
  final cwdDir = _fsOrThrow(
    await _fs.joinPath([sessionsRoot, encodeSessionCwd(options.cwd)]),
    'Failed to resolve session directory for ${options.cwd}',
  );
  _fsOrThrow(
    await _fs.createDir(cwdDir, recursive: true),
    'Failed to create session directory for ${options.cwd}',
  );
  final filePath = await _createSessionFilePath(id, createdAt, options.cwd);
  final storage = await JsonlSessionStorage.create(
    _fs,
    filePath,
    cwd: options.cwd,
    sessionId: id,
    parentSessionPath: options.parentSessionPath,
    metadata: options.metadata,
    ioRetry: _ioRetry,
  );
  return Session(storage);
}