gdprScrub function

MeterEvent gdprScrub(
  1. MeterEvent event
)

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,
  );
}