UNPKG

@invisiblecities/sidequest-cqo

Version:

Configuration-agnostic TypeScript and ESLint orchestrator with real-time watch mode, SQLite persistence, and intelligent terminal detection

122 lines 3 kB
/** * Watch State Manager * Manages watch mode state transitions and coordinates between analysis and display * Prevents race conditions by enforcing explicit state machine */ import { EventEmitter } from "node:events"; export type WatchPhase = "initializing" | "analyzing" | "ready" | "running" | "paused" | "error" | "shutdown"; export interface WatchStateData { phase: WatchPhase; checksCount: number; sessionId: string | undefined; sessionStart: number; lastAnalysisTime: number; lastError: Error | undefined; analysisInProgress: boolean; metadata: { cwd: string; nodeVersion: string; platform: string; flags: Record<string, unknown>; }; } export interface StateTransition { from: WatchPhase; to: WatchPhase; timestamp: number; reason?: string | undefined; } /** * State machine for watch mode lifecycle * Enforces valid transitions and prevents race conditions */ export declare class WatchStateManager extends EventEmitter { private state; private transitionHistory; private readonly validTransitions; constructor(sessionId?: string, metadata?: Partial<WatchStateData["metadata"]>); /** * Transition to a new phase with validation */ transition(toPhase: WatchPhase, reason?: string): boolean; /** * Handle phase-specific logic */ private handlePhaseTransition; /** * Start analysis cycle (only if allowed) */ startAnalysis(): boolean; /** * Complete analysis cycle */ completeAnalysis(): boolean; /** * Handle analysis error */ handleAnalysisError(error: Error): boolean; /** * Recover from error state */ recover(): boolean; /** * Pause watch mode */ pause(): boolean; /** * Resume from pause */ resume(): boolean; /** * Shutdown (terminal state) */ shutdown(reason?: string): boolean; /** * Check if analysis can be started */ canStartAnalysis(): boolean; /** * Check if display updates are allowed */ canUpdateDisplay(): boolean; /** * Check if watch mode is active */ isActive(): boolean; /** * Check if currently analyzing */ isAnalyzing(): boolean; /** * Get current state (read-only) */ getState(): Readonly<WatchStateData>; /** * Get current phase */ getPhase(): WatchPhase; /** * Get checks count */ getChecksCount(): number; /** * Update session ID */ setSessionId(sessionId: string): void; /** * Get transition history */ getTransitionHistory(): readonly StateTransition[]; /** * Get state summary for debugging */ getStateSummary(): string; /** * Validate current state integrity */ validateState(): { valid: boolean; issues: string[]; }; } //# sourceMappingURL=watch-state-manager.d.ts.map