/**
 * ExplorationStrategies — 探索策略定义
 *
 * 从 ExplorationTracker.js 提取的内置策略配置。
 * 每种策略定义了阶段序列、转换规则、toolChoice 逻辑和反思/规划开关。
 *
 * @module ExplorationStrategies
 */
/** 反思间隔（每 N 轮触发一次） */
export declare const DEFAULT_REFLECTION_INTERVAL = 5;
/** 默认重规划间隔 */
export declare const DEFAULT_REPLAN_INTERVAL = 8;
/**
 * 管线类型标识 — 用于统一的场景判别
 *
 * 替代原来散落在 ExplorationTracker / NudgeGenerator / AgentRuntime 中
 * 通过 `submitToolName === 'collect_scan_recipe'` 或 `strategy.name === 'analyst'`
 * 进行的隐式场景判别。
 *
 *   - scan:      scanKnowledge 管线（extract / summarize），纯文本总结，跳过 SUMMARIZE 阶段
 *   - bootstrap:  冷启动维度管线，输出 dimensionDigest JSON，经历完整阶段序列
 *   - analyst:    纯代码分析管线（无 produce），输出 Markdown 分析报告
 */
export type PipelineType = 'scan' | 'bootstrap' | 'analyst';
/** 探索指标数据 */
export interface ExplorationMetrics {
    iteration: number;
    submitCount: number;
    searchRoundsInPhase: number;
    phaseRounds: number;
    roundsSinceSubmit: number;
    roundsSinceNewInfo: number;
    /** 连续无任何工具调用的轮次数（用于 grace exit 判定） */
    consecutiveIdleRounds: number;
}
/** 探索预算配置 */
export interface ExplorationBudget {
    searchBudget: number;
    maxSubmits: number;
    idleRoundsToExit: number;
    searchBudgetGrace: number;
    softSubmitLimit: number;
    maxIterations: number;
}
/** 探索阶段 */
export type ExplorationPhase = 'SCAN' | 'EXPLORE' | 'PRODUCE' | 'VERIFY' | 'SUMMARIZE';
/** 完整探索指标（含 Set 集合，用于 NudgeGenerator / SignalDetector） */
export interface FullExplorationMetrics extends ExplorationMetrics {
    uniqueFiles: Set<string>;
    uniquePatterns: Set<string>;
    uniqueQueries: Set<string>;
    totalToolCalls: number;
}
/** 转换规则 */
export interface TransitionRule {
    onMetrics?: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
    onTextResponse?: boolean | ((m: ExplorationMetrics, b: ExplorationBudget) => boolean);
}
/** 转换条目 */
export type TransitionEntry = TransitionRule | ((m: ExplorationMetrics, b: ExplorationBudget) => boolean);
/** 探索策略配置 */
export interface ExplorationStrategy {
    name: string;
    phases: string[];
    transitions: Record<string, TransitionEntry>;
    getToolChoice: (phase: ExplorationPhase, m: ExplorationMetrics, b: ExplorationBudget) => 'required' | 'auto' | 'none';
    enableReflection: boolean;
    reflectionInterval: number;
    enablePlanning: boolean;
    replanInterval: number;
}
/** 追踪 trace 接口（ActiveContext 子集） */
export interface ExplorationTrace {
    getRecentSummary?(count: number): {
        thoughts: string[];
        roundCount: number;
        newInfoRatio: number;
    } | null;
    getStats?(): Record<string, number>;
    setReflection?(text: string): void;
    getPlan?(): {
        steps: Array<{
            description: string;
            status: string;
            keywords?: string[];
        }>;
        createdAtIteration: number;
    } | null;
    expectPlan?(): void;
    getPlanStepsMutable?(): Array<{
        description: string;
        status: string;
        keywords?: string[];
    }>;
    getCurrentRoundActions?(): Array<{
        tool: string;
        params?: Record<string, unknown>;
    }>;
}
/**
 * Bootstrap 策略（有 submit 阶段）
 * @param isSkillOnly skill-only 维度跳过 PRODUCE 阶段
 * @returns 策略配置
 */
export declare function createBootstrapStrategy(isSkillOnly?: boolean): {
    name: string;
    phases: string[];
    transitions: {
        'EXPLORE\u2192SUMMARIZE': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: boolean;
        };
    } | {
        'EXPLORE\u2192PRODUCE': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: boolean;
        };
        'PRODUCE\u2192SUMMARIZE': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
        };
    };
    getToolChoice: (phase: ExplorationPhase, m: ExplorationMetrics, b: ExplorationBudget) => "none" | "auto" | "required";
    enableReflection: boolean;
    reflectionInterval: number;
    enablePlanning: boolean;
    replanInterval: number;
};
/**
 * Analyst 策略（纯探索，无 submit 阶段）
 * 4 阶段: SCAN → EXPLORE → VERIFY → SUMMARIZE
 */
export declare const STRATEGY_ANALYST: {
    name: string;
    phases: string[];
    transitions: {
        'SCAN\u2192EXPLORE': {
            onMetrics: (m: ExplorationMetrics) => boolean;
            onTextResponse: boolean;
        };
        'EXPLORE\u2192VERIFY': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: boolean;
        };
        'VERIFY\u2192SUMMARIZE': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: boolean;
        };
    };
    getToolChoice: (phase: ExplorationPhase) => "none" | "auto" | "required";
    enableReflection: boolean;
    reflectionInterval: number;
    enablePlanning: boolean;
    replanInterval: number;
};
/**
 * Producer 策略（格式化+提交，不搜索）
 * 2 阶段: PRODUCE → SUMMARIZE
 */
export declare const STRATEGY_PRODUCER: {
    name: string;
    phases: string[];
    transitions: {
        'PRODUCE\u2192SUMMARIZE': {
            onMetrics: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
            onTextResponse: (m: ExplorationMetrics, b: ExplorationBudget) => boolean;
        };
    };
    getToolChoice: (phase: ExplorationPhase) => "none" | "auto";
    enableReflection: boolean;
    reflectionInterval: number;
    enablePlanning: boolean;
    replanInterval: number;
};
