forkSession method
Fork a session from a specific point.
Implementation
Future<String> forkSession(
String sessionId, {
required int fromTurnIndex,
}) async {
final entries = await getSessionHistory(sessionId);
final forked = entries.where((e) => e.turnIndex <= fromTurnIndex).toList();
final newId = 'fork_${DateTime.now().millisecondsSinceEpoch}';
// Write forked entries.
for (final entry in forked) {
await record(
sessionId: newId,
type: entry.type,
role: entry.role,
content: entry.content,
metadata: {
...?entry.metadata,
'forkedFrom': sessionId,
'forkPoint': fromTurnIndex,
},
toolName: entry.toolName,
toolId: entry.toolId,
tokenCount: entry.tokenCount,
cost: entry.cost,
latency: entry.latency,
turnIndex: entry.turnIndex,
);
}
return newId;
}