auditLog static method
Audit log lifecycle hooks.
Logs key lifecycle events (session start/end, tool executions) to a provided callback for persistence or monitoring.
Implementation
static ConversationLifecycle auditLog({
required void Function(String entry) log,
}) {
return ConversationLifecycle(
onConversationStart: (event) async {
log(
'[${event.timestamp.toIso8601String()}] '
'Conversation started: ${event.conversationId}',
);
},
onTurnStart: (event) async {
log(
'[${event.timestamp.toIso8601String()}] '
'Turn ${event.turnIndex} started',
);
},
onTurnEnd: (event) async {
log(
'[${event.timestamp.toIso8601String()}] '
'Turn ${event.turnIndex} ended '
'(tokens: ${event.tokensUsed}, '
'tools: ${event.toolInvocations}, '
'duration: ${event.duration.inMilliseconds}ms)',
);
},
onConversationEnd: (event) async {
log(
'[${event.timestamp.toIso8601String()}] '
'Conversation ended: ${event.conversationId} '
'(${event.turnCount} turns, '
'${event.totalTokens} tokens)',
);
},
onCompaction: (event) async {
log(
'[${event.timestamp.toIso8601String()}] '
'Compaction: ${event.messagesRemoved} messages removed, '
'${event.tokensSaved} tokens saved',
);
},
);
}