/**
 * ConsolidationAdvisor — 提交前融合顾问
 *
 * 解决问题：Agent 逐条提交 Recipe 导致碎片化、低价值条目激增。
 *
 * 设计思路：在新知识提交前分析已有知识库，给出 4 种建议之一：
 *   create       — 独立有价值，正常新建（走正常可信度判断）
 *   merge        — 与 1 条 Recipe 相似，将候选内容合并到已有 Recipe，合并后 Recipe → staging
 *   reorganize   — 与多条 Recipe 交叉重叠，将候选功能拆分到已有 Recipe 上，被修改的 Recipe → staging
 *   insufficient — 独立价值不足且已有足够 Recipe 覆盖，交给 Agent 与开发者决定
 *
 * 分析维度：
 *   1. 结构相似度 — 复用 RedundancyAnalyzer 的 4 维算法
 *   2. 语义域覆盖 — category + trigger 是否落在已有 Recipe 管辖范围
 *   3. 独立价值   — 内容长度、具体性、是否有独立 coreCode
 */
import type KnowledgeRepositoryImpl from '../../repository/knowledge/KnowledgeRepository.impl.js';
/** 提交候选的必要字段 */
export interface CandidateForConsolidation {
    title: string;
    description?: string;
    doClause?: string;
    dontClause?: string;
    coreCode?: string;
    category?: string;
    trigger?: string;
    whenClause?: string;
    kind?: string;
    content?: {
        pattern?: string;
        markdown?: string;
        [key: string]: unknown;
    };
}
/** 建议类型 */
export type ConsolidationAction = 'create' | 'merge' | 'reorganize' | 'insufficient';
/** 融合方向分析 — 描述候选能为已有 Recipe 补充什么 */
export interface MergeDirection {
    /** 候选提供的新维度（已有 Recipe 缺失的） */
    addedDimensions: string[];
    /** 融合建议摘要 */
    summary: string;
}
/** 融合分析结果 */
export interface ConsolidationAdvice {
    action: ConsolidationAction;
    confidence: number;
    reason: string;
    /** action=merge 时，将候选内容合并到的目标 Recipe */
    targetRecipe?: {
        id: string;
        title: string;
        similarity: number;
    };
    /** action=merge 时，候选能为目标 Recipe 补充的新维度 */
    mergeDirection?: MergeDirection;
    /** action=reorganize 时，需要重新组织的 Recipe 列表 */
    reorganizeTargets?: {
        id: string;
        title: string;
        similarity: number;
    }[];
    /** action=insufficient 时，已覆盖该领域的 Recipe */
    coveredBy?: {
        id: string;
        title: string;
        similarity: number;
    }[];
    /** 需要 Agent 关注的上下文 */
    relatedRecipes?: {
        id: string;
        title: string;
        similarity: number;
    }[];
}
/** 批量分析结果 — 每个候选一条分析 + 批次内重叠检测 */
export interface BatchConsolidationResult {
    items: {
        index: number;
        advice: ConsolidationAdvice;
    }[];
    /** 批次内部候选之间的重叠 */
    internalOverlaps: {
        indexA: number;
        indexB: number;
        similarity: number;
    }[];
}
export declare class ConsolidationAdvisor {
    #private;
    constructor(knowledgeRepo: KnowledgeRepositoryImpl);
    /**
     * 分析候选知识与现有知识库的关系，返回融合建议。
     *
     * @param candidate - 待提交的候选数据
     * @returns ConsolidationAdvice — 建议 + 理由 + 上下文
     */
    analyze(candidate: CandidateForConsolidation): Promise<ConsolidationAdvice>;
    /**
     * 批量分析候选知识与现有知识库的关系。
     *
     * 除了对每个候选独立运行 analyze() 外，
     * 还检测批次内部候选之间的重叠（防止批量提交碎片化）。
     *
     * @param candidates - 待提交的候选数组
     * @returns BatchConsolidationResult — 每条分析 + 批次内重叠
     */
    analyzeBatch(candidates: CandidateForConsolidation[]): Promise<BatchConsolidationResult>;
}
