/**
 * Procedural Memory Extractor 유틸리티
 * reflection_notes에서 procedural memory 필드 추출 및 변환
 *
 * 이 유틸리티는 reflexion-worker에서 생성된 reflection_notes를
 * procedural memory 형식(workflow_name, skill_name, steps, trigger_conditions)으로 변환합니다.
 */
import type { FailureEvent } from '../types/failure-event.js';
import type { ReflectionNotes, ExtractedProceduralMemory } from './procedural-memory-extractor.types.js';
import type { IProceduralMemoryExtractor } from './procedural-memory-extractor.types.js';
import Database from 'better-sqlite3';
export type { ReflectionNotes, ExtractedProceduralMemory } from './procedural-memory-extractor.types.js';
/**
 * 유사도 기반 병합 결과
 */
export interface SimilarityMergeResult {
    shouldMerge: boolean;
    similarity: number;
    existingMemoryId?: string;
    updateMode: 'replace' | 'incremental' | 'versioned';
}
/**
 * reflection_notes에서 workflow_name 추출
 *
 * 추출 전략:
 * 1. original_task에서 워크플로우 이름 추출
 * 2. tool_name을 기반으로 워크플로우 이름 추출
 * 3. failure_description에서 키워드 추출
 */
export declare function extractWorkflowName(reflectionNotes: ReflectionNotes | Record<string, unknown>, event?: FailureEvent): string | undefined;
/**
 * reflection_notes에서 skill_name 추출
 *
 * 추출 전략:
 * 1. tool_name을 skill_name으로 사용
 * 2. failure_type 기반 추출
 * 3. suggested_improvements에서 스킬 추출
 */
export declare function extractSkillName(reflectionNotes: ReflectionNotes | Record<string, unknown>, event?: FailureEvent): string | undefined;
/**
 * reflection_notes에서 steps 추출
 *
 * 추출 전략:
 * 1. suggested_improvements를 steps로 변환
 * 2. lessons_learned를 steps로 변환
 * 3. failure_description에서 단계 추출
 */
export declare function extractSteps(reflectionNotes: ReflectionNotes | Record<string, unknown>): string | undefined;
/**
 * 실패 이벤트 정보 기반 trigger_conditions 자동 생성
 *
 * 생성 전략:
 * 1. error_type 기반 조건 생성
 * 2. tool_name 기반 조건 생성
 * 3. error_message 키워드 기반 조건 생성
 * 4. context 정보 기반 조건 생성
 */
export declare function generateTriggerConditions(reflectionNotes: ReflectionNotes | Record<string, unknown>, event?: FailureEvent): string | undefined;
/**
 * reflection_notes에서 모든 procedural memory 필드 추출
 */
export declare function extractProceduralMemory(reflectionNotes: ReflectionNotes | Record<string, unknown>, event?: FailureEvent): ExtractedProceduralMemory;
/**
 * 기존 procedural memory와의 유사도 계산
 *
 * 유사도 계산 전략:
 * 1. workflow_name 일치 여부
 * 2. skill_name 일치 여부
 * 3. task_goal 유사도 (문자열 유사도)
 * 4. steps 유사도 (JSON 배열 비교)
 */
export declare function calculateSimilarity(extracted: ExtractedProceduralMemory, existing: {
    workflow_name?: string | null;
    skill_name?: string | null;
    task_goal?: string | null;
    steps?: string | null;
}): number;
/**
 * 유사도 기반 병합 결정
 *
 * 결정 전략:
 * 1. 유사도가 SIMILARITY_THRESHOLD 이상이면 병합
 * 2. 유사도가 HIGH_SIMILARITY_THRESHOLD 이상이면 replace 모드
 * 3. 그 외에는 incremental 모드
 * 4. 유사도가 임계값 미만이면 새로 생성 (versioned 모드)
 */
export declare function determineMergeStrategy(db: Database.Database, extracted: ExtractedProceduralMemory): Promise<SimilarityMergeResult>;
/**
 * 규칙 기반 Procedural Memory 추출기.
 * 기존 extractProceduralMemory를 래핑하여 IProceduralMemoryExtractor를 구현한다.
 * 항상 fallback으로 사용되며, 예외 시에만 null을 반환한다.
 */
export declare class RuleBasedProceduralExtractor implements IProceduralMemoryExtractor {
    extract(notes: ReflectionNotes | Record<string, unknown>, event?: FailureEvent): Promise<ExtractedProceduralMemory | null>;
}
//# sourceMappingURL=procedural-memory-extractor.d.ts.map