/**
 * insight-analyst.js — Insight Analyst 领域函数
 *
 * 从旧 AnalystAgent.js 提取的纯领域逻辑:
 * - Analyst System Prompt
 * - 工具白名单
 * - 预算常量
 * - 9 段式 Prompt 构建器
 *
 * 被 PipelineStrategy 的 bootstrap preset 直接引用。
 * 不再包含任何 Agent 类 — Agent 由 AgentRuntime + PipelineStrategy 驱动。
 *
 * @module insight-analyst
 */
/** 维度配置 (Analyst) */
interface AnalystDimConfig {
    id: string;
    label: string;
    guide?: string;
    focusKeywords?: string[];
    outputType?: string;
    allowedKnowledgeTypes?: string[];
}
/** 项目信息 (Analyst) */
interface AnalystProjectInfo {
    name: string;
    lang: string;
    fileCount: number;
}
/** DimensionContext 最小接口 */
interface DimensionContextLike {
    buildContextForDimension(dimId: string): {
        previousDimensions: Record<string, DimensionDigestLike>;
    };
}
/** 维度摘要 */
interface DimensionDigestLike {
    summary?: string;
    keyFindings: string[];
    crossRefs?: Record<string, string>;
}
/** EpisodicMemory (SessionStore) 最小接口 */
interface EpisodicMemoryLike {
    buildContextForDimension(dimId: string, focusKeywords: string[]): string | null;
    getRelevantReflections(dimId: string): string | null;
}
/** PersistentMemory 最小接口 */
interface SemanticMemoryLike {
    toPromptSection(opts: {
        source: string;
        query: string;
        limit: number;
    }): Promise<string | null> | string | null;
}
/** CodeEntityGraph 最小接口 */
interface CodeEntityGraphLike {
    generateContextForAgent(opts: {
        maxEntities: number;
        maxEdges: number;
    }): string | null;
}
export declare const ANALYST_SYSTEM_PROMPT = "\u4F60\u662F\u4E00\u4F4D\u9AD8\u7EA7\u8F6F\u4EF6\u67B6\u6784\u5E08\uFF0C\u6B63\u5728\u6DF1\u5EA6\u5206\u6790\u4E00\u4E2A\u771F\u5B9E\u9879\u76EE\u7684\u67D0\u4E2A\u7EF4\u5EA6\u3002\n\n## \u6267\u884C\u8BA1\u5212\n\u4F60\u6709 **N \u8F6E**\u5DE5\u5177\u8C03\u7528\u673A\u4F1A\uFF08\u7CFB\u7EDF\u4F1A\u544A\u77E5\u5177\u4F53\u6570\u5B57\uFF09\u3002\u8BF7\u4E25\u683C\u6309\u4EE5\u4E0B\u8282\u594F\u5206\u914D\uFF1A\n\n| \u9636\u6BB5 | \u8F6E\u6B21\u5360\u6BD4 | \u76EE\u6807 |\n|------|---------|------|\n| 1. \u5168\u5C40\u626B\u63CF | \u7B2C 1-3 \u8F6E | get_project_overview + list_project_structure \u4E86\u89E3\u9879\u76EE\u7ED3\u6784 |\n| 2. \u7ED3\u6784\u5316\u63A2\u7D22 | \u7B2C 4-N\u00D760% \u8F6E | get_class_hierarchy / get_class_info \u7406\u89E3\u6838\u5FC3\u7C7B\uFF1Bsearch_project_code \u6279\u91CF\u641C\u7D22\u5173\u952E\u6A21\u5F0F |\n| 3. \u6DF1\u5EA6\u9A8C\u8BC1 | \u7B2C N\u00D760%-N\u00D780% \u8F6E | read_project_file \u9605\u8BFB\u5173\u952E\u5B9E\u73B0\uFF0C\u786E\u8BA4\u7EC6\u8282 |\n| 4. \u8F93\u51FA\u603B\u7ED3 | \u6700\u540E 20% | **\u505C\u6B62\u8C03\u7528\u5DE5\u5177**\uFF0C\u76F4\u63A5\u8F93\u51FA\u4F60\u7684\u5206\u6790\u6587\u672C |\n\n## \u5173\u952E\u89C4\u5219\n- **\u5230\u8FBE 80% \u8F6E\u6B21\u65F6\u5FC5\u987B\u5F00\u59CB\u5199\u603B\u7ED3**\uFF0C\u4E0D\u8981\u7B49\u7CFB\u7EDF\u63D0\u9192\n- \u6BCF\u4E00\u8F6E\u90FD\u5FC5\u987B\u8C03\u7528\u5DE5\u5177\u83B7\u53D6\u65B0\u4FE1\u606F\uFF0C\u4E0D\u8981\u82B1\u8F6E\u6B21\u5728\u7EAF\u6587\u672C\u601D\u8003\u4E0A\n- \u4E0D\u8981\u91CD\u590D\u641C\u7D22\u76F8\u540C\u5173\u952E\u8BCD\u6216\u8BFB\u53D6\u76F8\u540C\u6587\u4EF6\uFF08\u7CFB\u7EDF\u4F1A\u8FD4\u56DE\u7F13\u5B58\u5E76\u6263\u8F6E\u6B21\uFF09\n\n## \u5DE5\u5177\u6548\u7387\n- **\u6279\u91CF\u641C\u7D22**: search_project_code({ patterns: [\"keywordA\", \"keywordB\", \"keywordC\"] }) \u2014 \u4E00\u6B21\u641C 3-5 \u4E2A\n- **\u6279\u91CF\u8BFB\u6587\u4EF6**: read_project_file({ filePaths: [\"a.m\", \"b.m\", \"c.m\"] }) \u2014 \u4E00\u6B21\u8BFB 3-5 \u4E2A\n- **\u7ED3\u6784\u5316\u67E5\u8BE2\u4F18\u5148**: get_class_hierarchy / get_class_info \u6BD4\u6587\u672C\u641C\u7D22\u66F4\u7CBE\u786E\u9AD8\u6548\n\n## \u8F93\u51FA\u8981\u6C42\n\u8F93\u51FA\u4F60\u7684\u5206\u6790\u53D1\u73B0\uFF0C\u5305\u62EC\u5177\u4F53\u7684\u6587\u4EF6\u5B8C\u6574\u76F8\u5BF9\u8DEF\u5F84\uFF08\u4ECE\u9879\u76EE\u6839\u76EE\u5F55\u5F00\u59CB\uFF09\u548C\u884C\u53F7\u3002\n\u6BCF\u4E2A\u6587\u4EF6\u5F15\u7528\u683C\u5F0F: (\u6765\u6E90: Full/Relative/Path/FileName.ext:\u884C\u53F7)\n\u7981\u6B62\u53EA\u5199\u6587\u4EF6\u540D\uFF0C\u5FC5\u987B\u5199\u4ECE\u9879\u76EE\u6839\u5F00\u59CB\u7684\u5B8C\u6574\u8DEF\u5F84\u3002\n\u6807\u6CE8\u6BCF\u4E2A\u53D1\u73B0\u6240\u5C5E\u7684\u6A21\u5757/\u5305\u540D\u3002\n\u7528\u81EA\u7136\u8BED\u8A00\u63CF\u8FF0\u4F60\u7684\u7406\u89E3\uFF0C\u4E0D\u9700\u8981\u7279\u5B9A\u683C\u5F0F\u3002";
export declare const ANALYST_TOOLS: string[];
/** 默认 Analyst 预算（24 轮基线） */
export declare const ANALYST_BUDGET: {
    maxIterations: number;
    searchBudget: number;
    searchBudgetGrace: number;
    maxSubmits: number;
    softSubmitLimit: number;
    idleRoundsToExit: number;
};
/**
 * 根据项目规模自适应计算 Analyst 预算
 *
 * 策略: 以文件数为主要缩放因子，保持 searchBudget/maxIterations 的比例关系。
 *   - ≤40 文件: 基线 24 轮（小型项目无需额外预算）
 *   - 41~100 文件: 线性插值到 32 轮
 *   - 101~200 文件: 线性插值到 40 轮
 *   - >200 文件: 封顶 40 轮（避免单维度成本失控）
 *
 * searchBudget 按比例随 maxIterations 缩放（保持 75%）。
 * timeoutMs 按比例随 maxIterations 缩放（基线 300s 对应 24 轮）。
 */
export declare function computeAnalystBudget(fileCount: number): typeof ANALYST_BUDGET & {
    timeoutMs: number;
};
/** Panorama context — module role, layer, coupling, gaps */
interface PanoramaContextLike {
    moduleRole: string | null;
    moduleLayer: number | null;
    moduleCoupling: {
        fanIn: number;
        fanOut: number;
    } | null;
    knownGaps: string[];
    layerContext: string | null;
}
/** Evidence starters — per-dimension evidence hints from Phase 1-4 */
interface EvidenceStarterEntry {
    hint: string;
    data: unknown;
    strength?: number;
}
/** Rescan context — existing recipes in this dimension */
interface RescanContextLike {
    existingRecipes: Array<{
        title: string;
        trigger: string;
    }>;
    decayingRecipes?: Array<{
        title: string;
        trigger: string;
        id?: string;
        decayReason?: string;
    }>;
    gap: number;
    existing: number;
}
/**
 * 构建 Analyst Prompt
 *
 * 12 段结构:
 *   §1 任务描述
 *   §2 维度指引
 *   §3 SOP (分析步骤 + 常见错误)
 *   §4 输出要求
 *   §5 工具提示
 *   §6 前序维度上下文 (SessionStore / DimensionContext)
 *   §7 Tier Reflection 洞察
 *   §8 历史语义记忆 (Tier 3)
 *   §9 代码实体图谱 (Phase E)
 *   §ES 分析起点证据 (Phase 1-4 Evidence Starters)
 *   §M1 全景上下文 (Panorama Phase 1.8)
 *   §10 Rescan 已有知识上下文
 *
 * @param dimConfig 维度配置 { id, label, guide, focusKeywords, outputType }
 * @param projectInfo { name, lang, fileCount }
 * @param [dimensionContext] DimensionContext 实例 (跨维度上下文)
 * @param [episodicMemory] SessionStore 实例 (v4.0 增强上下文)
 * @param [semanticMemory] PersistentMemory 实例 (v4.1 历史记忆)
 * @param [codeEntityGraph] CodeEntityGraph 实例 (Phase E 代码实体图谱)
 * @param [rescanContext] Rescan 已有知识上下文 (增量扫描时注入)
 * @param [panorama] 全景上下文 — 模块角色/层级/耦合/空白区 (Phase 1.8)
 * @param [evidenceStarters] Phase 1-4 证据启发 — 维度级分析起点
 * @param [evolutionResult] Evolution Stage 产出 — 避免重复分析已处理的 Recipe
 */
export declare function buildAnalystPrompt(dimConfig: AnalystDimConfig, projectInfo: AnalystProjectInfo, dimensionContext: DimensionContextLike | null | undefined, episodicMemory: EpisodicMemoryLike | null | undefined, semanticMemory: SemanticMemoryLike | null | undefined, codeEntityGraph: CodeEntityGraphLike | null | undefined, rescanContext?: RescanContextLike | null, panorama?: PanoramaContextLike | null, evidenceStarters?: Record<string, EvidenceStarterEntry> | null, evolutionResult?: {
    evolved?: number;
    deprecated?: number;
    skipped?: number;
    totalRecipes?: number;
} | null): Promise<string>;
export {};
