/** * Logger Utility with Audit Support (SMI-728) * * Enhanced logger with structured logging, audit trails, and security events. * Provides environment-aware logging with different verbosity levels and * support for audit event tracking. */ /** * Log severity levels */ export declare enum LogLevel { DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, AUDIT = 4, SECURITY = 5 } /** * Audit event types */ export type AuditEventType = 'skill.install' | 'skill.uninstall' | 'skill.fetch' | 'skill.scan' | 'adapter.request' | 'adapter.error' | 'cache.hit' | 'cache.miss' | 'security.violation'; /** * Security event types */ export type SecurityEventType = 'ssrf.blocked' | 'path_traversal.blocked' | 'validation.failed' | 'rate_limit.exceeded' | 'malware.detected' | 'suspicious.pattern'; /** * Audit event structure */ export interface AuditEvent { /** Type of audit event */ eventType: AuditEventType; /** When the event occurred */ timestamp: string; /** Who performed the action (user, system, adapter) */ actor: string; /** Resource being accessed (URL, path, skill_id) */ resource: string; /** Action being performed (fetch, read, install, scan) */ action: string; /** Result of the action (success, blocked, error) */ result: 'success' | 'blocked' | 'error'; /** Additional context as key-value pairs */ metadata?: Record; } /** * Security event structure */ export interface SecurityEvent { /** Type of security event */ eventType: SecurityEventType; /** When the event occurred */ timestamp: string; /** Severity level (low, medium, high, critical) */ severity: 'low' | 'medium' | 'high' | 'critical'; /** Resource being protected */ resource: string; /** Action that was blocked/detected */ action: string; /** Details about the security event */ details: string; /** Additional context */ metadata?: Record; } /** * Structured log entry */ export interface LogEntry { level: LogLevel; timestamp: string; namespace?: string; message: string; context?: Record; error?: Error; } /** * Log aggregator interface for future persistence */ export interface LogAggregator { /** Add a log entry to the aggregator */ add(entry: LogEntry): void; /** Add an audit event */ addAudit(event: AuditEvent): void; /** Add a security event */ addSecurity(event: SecurityEvent): void; /** Flush logs to persistence layer */ flush(): Promise; /** Get all logs */ getLogs(): LogEntry[]; /** Get all audit events */ getAuditEvents(): AuditEvent[]; /** Get all security events */ getSecurityEvents(): SecurityEvent[]; } /** * Logger interface with audit support */ export interface Logger { warn: (message: string, context?: Record) => void; error: (message: string, error?: Error, context?: Record) => void; info: (message: string, context?: Record) => void; debug: (message: string, context?: Record) => void; auditLog: (event: AuditEvent) => void; securityLog: (event: SecurityEvent) => void; } /** * Set the global log aggregator */ export declare function setLogAggregator(aggregator: LogAggregator): void; /** * Get the global log aggregator */ export declare function getLogAggregator(): LogAggregator; /** * Default logger instance * * Environment variables: * - NODE_ENV=test: Suppress warn/info/debug output * - DEBUG=true: Enable info and debug output * - LOG_FORMAT=json: Output logs in JSON format * - LOG_LEVEL=0-5: Minimum log level to output * - AUDIT_LOG=true: Enable audit log output * * @example * ```typescript * logger.info('Processing skill', { skillId: 'foo' }) * logger.error('Failed to fetch', new Error('Network error')) * logger.auditLog({ * eventType: 'skill.install', * timestamp: new Date().toISOString(), * actor: 'user', * resource: 'skill-id', * action: 'install', * result: 'success' * }) * ``` */ export declare const logger: Logger; /** * Create a namespaced logger * * @param namespace - The namespace prefix for log messages * @returns A Logger instance with namespaced messages * * @example * ```typescript * const log = createLogger('GitLabAdapter') * log.warn('Rate limit exceeded', { remaining: 0 }) * log.auditLog({ * eventType: 'adapter.request', * timestamp: new Date().toISOString(), * actor: 'GitLabAdapter', * resource: 'https://gitlab.com/api/v4/projects', * action: 'fetch', * result: 'success' * }) * ``` */ export declare function createLogger(namespace: string): Logger; /** * No-op logger for testing or silent operation */ export declare const silentLogger: Logger; /** * Helper to create audit events with current timestamp */ export declare function createAuditEvent(eventType: AuditEventType, actor: string, resource: string, action: string, result: 'success' | 'blocked' | 'error', metadata?: Record): AuditEvent; /** * Helper to create security events with current timestamp */ export declare function createSecurityEvent(eventType: SecurityEventType, severity: 'low' | 'medium' | 'high' | 'critical', resource: string, action: string, details: string, metadata?: Record): SecurityEvent; //# sourceMappingURL=logger.d.ts.map