gdprScrub function
Redacts user-correlatable fields from event for GDPR-safe transmission.
Sinks should call this when MeterConfig.gdprMode is true. Currently
scrubs conversationId, requestId, and any user_* metadata keys.
Implementation
MeterEvent gdprScrub(MeterEvent event) {
final Map<String, Object?> safeMeta = <String, Object?>{};
for (final MapEntry<String, Object?> entry in event.metadata.entries) {
if (entry.key.startsWith('user') ||
entry.key.contains('email') ||
entry.key.contains('ip')) {
continue;
}
safeMeta[entry.key] = entry.value;
}
return MeterEvent(
provider: event.provider,
model: event.model,
tokensIn: event.tokensIn,
tokensOut: event.tokensOut,
cachedTokensIn: event.cachedTokensIn,
costUsd: event.costUsd,
latency: event.latency,
timestamp: event.timestamp,
streaming: event.streaming,
error: event.error,
metadata: safeMeta,
);
}