/** * System-wide logging architecture for DebuggAI CLI * * Provides two distinct logging modes: * 1. DevLogger: For --dev flag - sequential output with full technical details * 2. UserLogger: Default mode - clean spinner interface with minimal user-friendly messages * * Usage: * import { systemLogger } from '../util/system-logger'; * systemLogger.api.request('POST', '/test-suite'); * systemLogger.tunnel.connecting('localhost:3000'); * systemLogger.progress.start('Creating test suite...'); */ export interface LogContext { timestamp?: boolean; category?: string; details?: Record; truncate?: number; } export interface TunnelLogContext extends LogContext { port?: number; url?: string; uuid?: string; status?: 'connecting' | 'connected' | 'failed' | 'disconnected'; } export interface ApiLogContext extends LogContext { method?: string; url?: string; status?: number; timing?: number; requestId?: string; } export interface GitLogContext extends LogContext { commitHash?: string; branch?: string; fileCount?: number; changeType?: 'working' | 'commit' | 'range'; } export interface TestLogContext extends LogContext { suiteId?: string; testCount?: number; completed?: number; phase?: 'analyze' | 'create' | 'run' | 'download' | 'complete'; } /** * Environment detection and logger selection */ declare class SystemLogger { private devLogger; private userLogger; private isDevMode; constructor(); private detectDevMode; /** * Force dev mode (useful for testing or programmatic usage) */ setDevMode(enabled: boolean): void; /** * Check if currently in dev mode */ getDevMode(): boolean; get tunnel(): { connecting: (target: string, context?: TunnelLogContext) => void; connected: (url: string, timing?: number, context?: TunnelLogContext) => void; failed: (target: string, error: string, timing?: number, context?: TunnelLogContext) => void; disconnected: (url: string, timing?: number, context?: TunnelLogContext) => void; status: (uuid: string, active: boolean, context?: TunnelLogContext) => void; } | { connecting: (target: string) => void; connected: (url: string) => void; failed: (target: string) => void; disconnected: () => void; }; get api(): { request: (method: string, url: string, context?: ApiLogContext) => void; response: (status: number, url: string, timing?: number, context?: ApiLogContext) => void; error: (method: string, url: string, error: string, context?: ApiLogContext) => void; auth: (success: boolean, userInfo?: string, context?: ApiLogContext) => void; } | { auth: (success: boolean, userInfo?: string) => void; request: (message: string) => void; }; get git(): { analyzing: (type: "working" | "commit" | "range", target: string, context?: GitLogContext) => void; found: (fileCount: number, type: "working" | "commit" | "range", context?: GitLogContext) => void; commit: (hash: string, message?: string, fileCount?: number, context?: GitLogContext) => void; branch: (branch: string, context?: GitLogContext) => void; error: (operation: string, error: string, context?: GitLogContext) => void; } | { analyzing: () => void; found: (fileCount: number, type: string) => void; noChanges: () => void; }; get test(): { phase: (phase: TestLogContext["phase"], message: string, context?: TestLogContext) => void; suite: (action: "creating" | "created" | "waiting" | "completed", suiteId?: string, context?: TestLogContext) => void; progress: (completed: number, total: number, context?: TestLogContext) => void; artifact: (type: "script" | "recording" | "details", filename: string, success: boolean, context?: TestLogContext) => void; } | { creating: () => void; created: (suiteId: string) => void; running: (completed?: number, total?: number) => void; downloading: () => void; completed: (testCount: number) => void; failed: (error: string) => void; }; get progress(): { server: (port: number, status: "waiting" | "ready" | "timeout", timing?: number, context?: LogContext) => void; } | { start: (message: string) => void; update: (message: string) => void; succeed: (message: string) => void; fail: (message: string) => void; warn: (message: string) => void; stop: () => void; }; info(message: string, context?: LogContext): void; success(message: string, context?: LogContext): void; warn(message: string, context?: LogContext): void; error(message: string, context?: LogContext): void; debug(message: string, context?: LogContext): void; displayResults(suite: any): void; displayFileList(files: string[], repoPath: string): void; } export declare const systemLogger: SystemLogger; export {}; //# sourceMappingURL=system-logger.d.ts.map