/** * Core types for the Unified Logging System. * * These types are shared across the LogManager, all sinks, and all formatters. * See docs/LOGGING-DESIGN.md for the full RFC. */ export type LogCategory = 'application' | 'security' | 'performance' | 'telemetry'; export type LogLevel = 'debug' | 'info' | 'warn' | 'error'; /** * Numeric priority for each log level (higher = more severe). * Used by LogManager for minimum-level filtering. */ export declare const LOG_LEVEL_PRIORITY: Record; /** * Universal log entry format used across all sinks. * * - `id` format: `"LOG-{timestamp}-{counter}"` * - `timestamp`: ISO 8601, always UTC * - `error`: structured — never a raw Error object */ export interface UnifiedLogEntry { id: string; timestamp: string; category: LogCategory; level: LogLevel; source: string; message: string; data?: Record; error?: { name: string; message: string; stack?: string; }; correlationId?: string; } /** Output target for log entries. */ export interface ILogSink { /** Synchronous write — sinks buffer internally if needed. */ write(entry: UnifiedLogEntry): void; /** Flush any buffered data to the underlying store. */ flush(): Promise; /** Flush and release resources. */ close(): Promise; } /** Pluggable disk format (plain text, JSONL, etc.). */ export interface ILogFormatter { format(entry: UnifiedLogEntry): string; /** File extension including the dot, e.g. `'.log'` or `'.jsonl'`. */ fileExtension: string; } export interface LogQueryOptions { category?: LogCategory | 'all'; level?: LogLevel; source?: string; message?: string; since?: string; until?: string; limit?: number; offset?: number; correlationId?: string; } export interface LogQueryResult { entries: UnifiedLogEntry[]; total: number; hasMore: boolean; limit: number; offset: number; } /** Typed config for LogManager, mapped from `DOLLHOUSE_LOG_*` env vars. */ export interface LogManagerConfig { logDir: string; logFormat: 'text' | 'jsonl'; retentionDays: number; securityRetentionDays: number; flushIntervalMs: number; bufferSize: number; memoryCapacity: number; memoryAppCapacity: number; memorySecurityCapacity: number; memoryPerfCapacity: number; memoryTelemetryCapacity: number; maxEntrySize: number; immediateFlushRate: number; fileMaxSize: number; maxDirSizeBytes: number; maxFilesPerCategory: number; logLevel: LogLevel; } //# sourceMappingURL=types.d.ts.map