/** * Audit Logger for MCP * * Comprehensive audit logging for all LLM interactions with compliance support */ import { EventEmitter } from 'events'; import { AuditConfig, AuditExportFormat, LLMRequest, LLMResponse, UsageInfo, FunctionCall } from '../types'; import { MemoryStorageProvider } from '../../storage/providers/memory-storage-provider'; /** * Audit log entry */ export interface AuditLogEntry { id: string; timestamp: Date; eventType: AuditEventType; agentDID: string; sessionId?: string; requestId?: string; provider?: string; model?: string; action: string; resource?: string; status: 'success' | 'failure' | 'error'; duration?: number; metadata: { ip?: string; userAgent?: string; requestSize?: number; responseSize?: number; error?: string; usage?: UsageInfo; functionCalls?: FunctionCall[]; tags?: string[]; }; hash?: string; previousHash?: string; } /** * Audit event types */ export declare enum AuditEventType { AUTH_SUCCESS = "auth.success", AUTH_FAILURE = "auth.failure", AUTH_TOKEN_CREATED = "auth.token.created", AUTH_TOKEN_REFRESHED = "auth.token.refreshed", AUTH_SESSION_CREATED = "auth.session.created", AUTH_SESSION_EXPIRED = "auth.session.expired", AUTHZ_GRANTED = "authz.granted", AUTHZ_DENIED = "authz.denied", PERMISSION_CHANGED = "permission.changed", LLM_REQUEST = "llm.request", LLM_RESPONSE = "llm.response", LLM_ERROR = "llm.error", LLM_FUNCTION_CALL = "llm.function_call", LLM_STREAMING_START = "llm.streaming.start", LLM_STREAMING_END = "llm.streaming.end", PROVIDER_CONNECTED = "provider.connected", PROVIDER_DISCONNECTED = "provider.disconnected", PROVIDER_ERROR = "provider.error", PROVIDER_FAILOVER = "provider.failover", SECURITY_ALERT = "security.alert", RATE_LIMIT_EXCEEDED = "rate_limit.exceeded", CREDENTIAL_ACCESSED = "credential.accessed", CREDENTIAL_ROTATED = "credential.rotated", SYSTEM_START = "system.start", SYSTEM_SHUTDOWN = "system.shutdown", CONFIG_CHANGED = "config.changed" } /** * Audit query options */ export interface AuditQueryOptions { startDate?: Date; endDate?: Date; agentDID?: string; sessionId?: string; eventTypes?: AuditEventType[]; status?: string; provider?: string; limit?: number; offset?: number; sortBy?: 'timestamp' | 'duration' | 'requestSize'; sortOrder?: 'asc' | 'desc'; } /** * Audit statistics */ export interface AuditStatistics { totalEvents: number; eventsByType: Record; eventsByStatus: Record; eventsByProvider: Record; eventsByAgent: Record; averageResponseTime: number; totalTokensUsed: number; totalCost: number; errorRate: number; } /** * Compliance report */ export interface ComplianceReport { period: { start: Date; end: Date; }; summary: { totalRequests: number; successRate: number; averageResponseTime: number; totalCost: number; uniqueAgents: number; topAgents: Array<{ agentDID: string; requests: number; }>; topModels: Array<{ model: string; requests: number; }>; }; security: { authFailures: number; authzDenials: number; securityAlerts: number; rateLimitViolations: number; }; usage: { totalTokens: number; tokensByProvider: Record; costByProvider: Record; functionCalls: number; }; compliance: { dataRetentionCompliant: boolean; auditTrailIntegrity: boolean; unauthorizedAccessAttempts: number; }; } /** * Audit Logger */ export declare class AuditLogger extends EventEmitter { private config; private logs; private indexByAgent; private indexBySession; private indexByDate; private storageProvider; private hashChain; private retentionTimer?; constructor(config: AuditConfig, storageProvider?: MemoryStorageProvider); /** * Log LLM request */ logRequest(request: LLMRequest, agentDID: string, sessionId?: string): Promise; /** * Log LLM response */ logResponse(response: LLMResponse, request: LLMRequest, duration: number): Promise; /** * Log authentication event */ logAuthentication(agentDID: string, success: boolean, method: string, error?: string): Promise; /** * Log authorization event */ logAuthorization(agentDID: string, resource: string, action: string, granted: boolean, reasons?: string[]): Promise; /** * Log security alert */ logSecurityAlert(type: string, agentDID: string, details: any): Promise; /** * Add log entry */ private addLogEntry; /** * Update indices */ private updateIndices; /** * Calculate hash for log entry */ private calculateHash; /** * Query audit logs */ query(options?: AuditQueryOptions): Promise; /** * Get statistics */ getStatistics(options?: AuditQueryOptions): Promise; /** * Generate compliance report */ generateComplianceReport(startDate: Date, endDate: Date): Promise; /** * Export logs */ export(format: AuditExportFormat, options?: AuditQueryOptions): Promise; /** * Export as CSV */ private exportCSV; /** * Export as Syslog */ private exportSyslog; /** * Load logs from storage */ private loadLogs; /** * Persist log to storage */ private persistLog; /** * Start retention cleanup timer */ private startRetentionCleanup; /** * Clean up old logs */ private cleanupOldLogs; /** * Verify audit trail integrity */ verifyIntegrity(): Promise<{ valid: boolean; errors: string[]; }>; /** * Shutdown audit logger */ shutdown(): void; } export default AuditLogger; //# sourceMappingURL=audit-logger.d.ts.map