/** * Reflexion Worker 서비스 * 실패 이벤트를 처리하여 reflection_notes를 자동 생성하고 저장 */ import type { IReflexionWorker, IWorkerStatus } from '../shared/interfaces/reflexion-worker.interface.js'; import { FailureDetector, type FailureEvent } from '../domains/monitoring/services/failure-detector.js'; import { AsyncTaskQueue } from './async-optimizer.js'; import Database from 'better-sqlite3'; /** * Worker 상태 (내부 구현용, IWorkerStatus와 호환) */ interface WorkerStatus extends IWorkerStatus { } /** * ReflexionWorker 서비스 클래스 */ export declare class ReflexionWorker implements IReflexionWorker { private failureDetector; private db; private eventQueue; private duplicateWindow; private readonly WINDOW_SIZE_MS; private readonly MAX_CONCURRENT; private readonly MAX_QUEUE_SIZE; private readonly MAX_RETRIES; private readonly RETRY_DELAYS; private readonly QUEUE_WARNING_THRESHOLD; private readonly MAX_RESTART_ATTEMPTS; private readonly proceduralMemoryService; private readonly reflectionRecorder; private status; private cleanupInterval; private healthCheckInterval; private lastHealthCheck; constructor(failureDetector: FailureDetector, db: Database.Database, eventQueue?: AsyncTaskQueue); private getHealthDeps; private getEventQueueDeps; private getFailureHandlerDeps; private getMetricsDeps; /** * Worker 시작 */ start(): Promise; /** * Worker 중지 */ stop(): Promise; /** * 헬스체크 시작 */ private startHealthCheck; /** * Worker 재시작 시도 */ private attemptRestart; /** * FailureDetector의 큐에 핸들러 등록 * FailureDetector가 실패 이벤트를 큐에 추가할 때 이 핸들러를 사용하도록 설정 */ registerHandler(): void; /** * 실패 이벤트를 큐에 추가 (큐 크기 제한 포함) * FailureDetector의 queueFailureEvent를 대체하는 메서드 * AsyncTaskQueue가 자동으로 큐 크기 제한을 처리함 */ queueFailureEvent(event: FailureEvent): Promise; /** * 실패 이벤트 처리 (재시도 및 백오프 포함) */ processFailureEvent(event: FailureEvent): Promise; private updateProceduralMemory; /** * Worker 상태 조회 */ getStatus(): WorkerStatus; /** * 큐 적체 경고 확인 */ checkQueueBacklog(): void; /** * Reflexion 기록 메트릭 수집 */ getReflexionMetrics(): { processedCount: number; failedCount: number; successRate: number; averageProcessingTime: number; queueSize: number; activeWorkers: number; restartCount: number; }; /** * 통합 메트릭 수집 (FailureDetector + ReflexionWorker) */ getIntegratedMetrics(): { detection: { totalDetections: number; toolErrorCount: number; userFeedbackCount: number; metricFailureCount: number; detectionRate: number; }; reflexion: { processedCount: number; failedCount: number; successRate: number; averageProcessingTime: number; queueSize: number; activeWorkers: number; restartCount: number; }; overall: { recall: number; precision: number; reflexionSuccessRate: number; }; }; } export {}; //# sourceMappingURL=reflexion-worker.d.ts.map