create method
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);
}