/**
 * 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 status;
    private cleanupInterval;
    private healthCheckInterval;
    private lastHealthCheck;
    constructor(failureDetector: FailureDetector, db: Database.Database, eventQueue?: AsyncTaskQueue);
    /**
     * Worker 시작
     */
    start(): Promise<boolean>;
    /**
     * Worker 중지
     */
    stop(): Promise<boolean>;
    /**
     * 헬스체크 시작
     */
    private startHealthCheck;
    /**
     * 헬스체크 수행
     */
    private performHealthCheck;
    /**
     * Worker 재시작 시도
     */
    private attemptRestart;
    /**
     * auto_reflect 내부 함수
     * 실패 정보를 바탕으로 Reflexion 데이터 생성 및 저장
     */
    private autoReflect;
    /**
     * 중복 감지
     */
    private isDuplicate;
    /**
     * 이벤트 키 생성: SHA256({tool_name}_{error_type}_{error_message_hash})
     */
    private generateEventKey;
    /**
     * 중복 윈도우 정리 (만료된 항목 제거)
     */
    private cleanupDuplicateWindow;
    /**
     * Reflexion 데이터 생성
     */
    private generateReflectionNote;
    /**
     * 교훈 추출 (템플릿 기반)
     */
    private generateLessonsLearned;
    /**
     * 개선 방안 제안 (템플릿 기반)
     */
    private generateSuggestedImprovements;
    /**
     * 반복 실패 패턴 분석
     * 동일 task_goal의 반복 실패 횟수 및 패턴을 분석
     */
    private analyzeFailurePattern;
    /**
     * 작업 목표 추출
     */
    private extractTaskGoal;
    /**
     * reflection_notes를 procedural memory로 자동 변환
     *
     * 변환 전략:
     * 1. reflection_notes에서 workflow_name, skill_name, steps, trigger_conditions 추출
     * 2. 기존 procedural memory와 유사도 계산
     * 3. 유사도 기반 병합 전략 결정 (replace, incremental, versioned)
     * 4. 결정된 전략에 따라 메모리 업데이트 또는 생성
     */
    private convertToProceduralMemory;
    /**
     * 기존 procedural memory 업데이트
     */
    private updateProceduralMemory;
    /**
     * 새 procedural memory 생성
     * @param existingMemoryIdForVersion versioned 모드일 때 기존 메모리 id (같은 시리즈의 version·version_series_id 이어받기)
     */
    private createProceduralMemory;
    /**
     * reflection_notes 파싱
     */
    private parseReflectionNotes;
    /**
     * FailureDetector의 큐에 핸들러 등록
     * FailureDetector가 실패 이벤트를 큐에 추가할 때 이 핸들러를 사용하도록 설정
     */
    registerHandler(): void;
    /**
     * 실패 이벤트를 큐에 추가 (큐 크기 제한 포함)
     * FailureDetector의 queueFailureEvent를 대체하는 메서드
     * AsyncTaskQueue가 자동으로 큐 크기 제한을 처리함
     */
    queueFailureEvent(event: FailureEvent): Promise<boolean>;
    /**
     * 가장 오래된 큐 이벤트 제거 (FIFO)
     * AsyncTaskQueue의 큐 크기 제한 기능을 사용하므로 여기서는 더 이상 필요 없음
     * @deprecated AsyncTaskQueue가 자동으로 처리하므로 사용하지 않음
     */
    private removeOldestQueuedEvent;
    /**
     * 실패 이벤트 처리 (재시도 및 백오프 포함)
     */
    processFailureEvent(event: FailureEvent): Promise<void>;
    /**
     * 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