recordTranscript method
Record a transcript (public API, deduplicates against already-recorded).
Implementation
Future<String?> recordTranscript(
Transcript messages, {
String? startingParentUuidHint,
}) async {
final messageSet = await _getSessionMessages(_sessionId);
final newMessages = <Map<String, dynamic>>[];
String? startingParentUuid = startingParentUuidHint;
var seenNewMessage = false;
for (final m in messages) {
final uuid = m['uuid'] as String?;
if (uuid != null && messageSet.contains(uuid)) {
if (!seenNewMessage && m['type'] != 'progress') {
startingParentUuid = uuid;
}
} else {
newMessages.add(m);
seenNewMessage = true;
}
}
if (newMessages.isNotEmpty) {
await insertMessageChain(
newMessages,
startingParentUuid: startingParentUuid,
);
}
// Return last recorded chain participant's UUID.
final lastRecorded = newMessages.lastWhere(
(m) => m['type'] != 'progress',
orElse: () => <String, dynamic>{},
);
return (lastRecorded['uuid'] as String?) ?? startingParentUuid;
}