/** * Code-Mode Audit Logger - Phase 5 * * Provides comprehensive audit trail for Code-Mode security events: * - Code execution (start, success, failure) * - Network access (requests, permissions, denials) * - Binding usage * - Security violations * * For enterprise compliance and security monitoring. */ /** * Audit event types */ export declare enum AuditEventType { CODE_EXECUTION_START = "code_execution_start", CODE_EXECUTION_SUCCESS = "code_execution_success", CODE_EXECUTION_ERROR = "code_execution_error", CODE_EXECUTION_TIMEOUT = "code_execution_timeout", NETWORK_REQUEST_ALLOWED = "network_request_allowed", NETWORK_REQUEST_DENIED = "network_request_denied", NETWORK_PERMISSION_GRANTED = "network_permission_granted", NETWORK_PERMISSION_DENIED = "network_permission_denied", NETWORK_PERMISSION_REVOKED = "network_permission_revoked", BINDING_ACCESSED = "binding_accessed", BINDING_CREATED = "binding_created", SECURITY_VIOLATION = "security_violation", PROTOTYPE_POLLUTION_BLOCKED = "prototype_pollution_blocked", WORKER_THREAD_FAILED = "worker_thread_failed" } /** * Audit event severity */ export declare enum AuditSeverity { INFO = "info", WARNING = "warning", ERROR = "error", CRITICAL = "critical" } /** * Base audit event structure */ export interface AuditEvent { timestamp: string; type: AuditEventType; severity: AuditSeverity; context: { mcpName?: string; bindingName?: string; userId?: string; sessionId?: string; }; details: Record; outcome: 'success' | 'failure' | 'blocked' | 'pending'; } /** * Audit logger configuration */ export interface AuditLoggerConfig { enabled: boolean; auditDir?: string; maxFileSizeMB?: number; maxFiles?: number; includeCodeSnippets?: boolean; redactSensitiveData?: boolean; } /** * Audit Logger for Code-Mode security events */ export declare class AuditLogger { private config; private auditDir; private currentFile; private sessionId; private rotationInProgress; constructor(config?: Partial); /** * Initialize audit logger (create directory if needed) */ initialize(): Promise; /** * Log an audit event */ logEvent(type: AuditEventType, details: Record, severity?: AuditSeverity, outcome?: 'success' | 'failure' | 'blocked' | 'pending', context?: AuditEvent['context']): Promise; /** * Log code execution start */ logCodeExecutionStart(code: string, context?: AuditEvent['context']): Promise; /** * Log code execution success */ logCodeExecutionSuccess(code: string, result: any, duration: number, context?: AuditEvent['context']): Promise; /** * Log code execution error */ logCodeExecutionError(code: string, error: string, context?: AuditEvent['context']): Promise; /** * Log network request allowed */ logNetworkRequestAllowed(url: string, method: string, context?: AuditEvent['context']): Promise; /** * Log network request denied */ logNetworkRequestDenied(url: string, reason: string, context?: AuditEvent['context']): Promise; /** * Log network permission granted */ logNetworkPermissionGranted(url: string, permanent: boolean, context?: AuditEvent['context']): Promise; /** * Log network permission denied */ logNetworkPermissionDenied(url: string, context?: AuditEvent['context']): Promise; /** * Log binding accessed */ logBindingAccessed(bindingName: string, method: string, context?: AuditEvent['context']): Promise; /** * Log security violation */ logSecurityViolation(violation: string, details: Record, context?: AuditEvent['context']): Promise; /** * Sanitize details (remove sensitive data) */ private sanitizeDetails; /** * Redact URL query parameters (may contain secrets) */ private redactUrl; /** * Truncate code for logging */ private truncateCode; /** * Truncate string */ private truncate; /** * Generate unique session ID */ private generateSessionId; /** * Get date string for file naming */ private getDateString; /** * Check if audit file needs rotation */ private checkRotation; private rotateLogFile; private cleanupOldFiles; } /** * Get global audit logger instance */ export declare function getAuditLogger(config?: Partial): AuditLogger; //# sourceMappingURL=audit-logger.d.ts.map