exportSession method
Export a session's history.
Implementation
Future<String> exportSession(
String sessionId, {
String format = 'markdown', // 'markdown', 'json', 'text'
}) async {
final entries = await getSessionHistory(sessionId);
switch (format) {
case 'json':
return jsonEncode(entries.map((e) => e.toJson()).toList());
case 'text':
final buffer = StringBuffer();
for (final e in entries) {
buffer.writeln('[${e.timestamp}] ${e.role}: ${e.content}');
buffer.writeln();
}
return buffer.toString();
case 'markdown':
default:
final buffer = StringBuffer();
buffer.writeln('# Session: $sessionId');
buffer.writeln();
for (final e in entries) {
if (e.type == HistoryEntryType.message) {
if (e.role == 'user') {
buffer.writeln('## User');
buffer.writeln(e.content);
} else if (e.role == 'assistant') {
buffer.writeln('## Assistant');
buffer.writeln(e.content);
}
} else if (e.type == HistoryEntryType.toolUse) {
buffer.writeln('### Tool: ${e.toolName}');
buffer.writeln('```json');
buffer.writeln(e.content);
buffer.writeln('```');
} else if (e.type == HistoryEntryType.toolResult) {
buffer.writeln('#### Result');
buffer.writeln('```');
buffer.writeln(
e.content.length > 500
? '${e.content.substring(0, 500)}...'
: e.content,
);
buffer.writeln('```');
}
buffer.writeln();
}
return buffer.toString();
}
}