/**
 * PipelineStrategy — 顺序多阶段执行策略
 *
 * 从 strategies.js 提取的独立模块。
 * 每个阶段可以有不同的 Capability 和 Budget，
 * 阶段间可插入质量门控 (Quality Gate)。
 *
 * 等价于 Anthropic 的 "Prompt Chaining" + "Evaluator-Optimizer"。
 *
 * 增强特性 (v3):
 *   - Gate 支持自定义 evaluator 函数 (三态: pass/retry/degrade)
 *   - Gate retry: 失败时回退重新执行前一阶段
 *   - Stage 支持 promptBuilder(context), systemPrompt, onToolCall
 *   - Per-stage 硬超时保护
 *   - 阶段隔离 (ContextWindow/ExplorationTracker 状态)
 *
 * @module PipelineStrategy
 */
import type { AgentMessage } from './AgentMessage.js';
import type { PipelineType } from './context/exploration/ExplorationStrategies.js';
import { Strategy } from './strategies.js';
/** Extended runtime — may carry an optional logger (AgentRuntime provides one) */
interface PipelineRuntime {
    id: string;
    reactLoop(prompt: string, opts?: Record<string, unknown>): Promise<StageResult>;
    logger?: {
        info?: (...args: unknown[]) => void;
    };
}
/** Result of a single stage execution */
interface StageResult {
    reply: string;
    toolCalls: Array<Record<string, unknown>>;
    tokenUsage: {
        input: number;
        output: number;
    };
    iterations: number;
    timedOut?: boolean;
    [key: string]: unknown;
}
/** Budget configuration for a pipeline stage */
interface StageBudget {
    maxIterations?: number;
    timeoutMs?: number;
    [key: string]: unknown;
}
/** Capability reference: plain string name or object with a name property */
type CapabilityRef = string | {
    name: string;
    [key: string]: unknown;
};
/** Quality Gate configuration */
interface GateConfig {
    evaluator?: (source: unknown, phaseResults: Record<string, unknown>, strategyContext: Record<string, unknown>) => {
        action?: string;
        pass?: boolean;
        reason?: string;
        artifact?: unknown;
    };
    maxRetries?: number;
    minEvidenceLength?: number;
    minFileRefs?: number;
    minToolCalls?: number;
    custom?: (source: Record<string, unknown>) => {
        pass: boolean;
        reason?: string;
    };
    [key: string]: unknown;
}
/** Pipeline stage definition */
interface PipelineStage {
    name: string;
    gate?: GateConfig;
    capabilities?: CapabilityRef[];
    promptBuilder?: (ctx: Record<string, unknown>) => Promise<string> | string;
    retryPromptBuilder?: (retryCtx: {
        reason?: string;
        artifact?: unknown;
    }, content: string, phaseResults: Record<string, unknown>) => string;
    promptTransform?: (content: string, phaseResults: Record<string, unknown>) => string;
    systemPrompt?: string;
    onToolCall?: (...args: unknown[]) => unknown;
    budget?: StageBudget;
    retryBudget?: StageBudget;
    skipOnDegrade?: boolean;
    skipOnFail?: boolean;
    submitToolName?: string;
    /** 管线类型标识 — 传递至 ExplorationTracker 用于统一场景判别 */
    pipelineType?: PipelineType;
    source?: string;
    [key: string]: unknown;
}
export declare class PipelineStrategy extends Strategy {
    #private;
    constructor({ stages, maxRetries, }?: {
        stages?: PipelineStage[];
        maxRetries?: number;
    });
    get name(): string;
    execute(runtime: PipelineRuntime, message: AgentMessage, opts?: Record<string, unknown>): Promise<{
        reply: string;
        toolCalls: Record<string, unknown>[];
        tokenUsage: {
            input: number;
            output: number;
        };
        iterations: number;
        phases: Record<string, unknown>;
        degraded: boolean;
    }>;
}
export {};
