/**
 * 发布问题真实 MCP 工具测试装置。
 *
 * callTool() 每次实际调用已注册 handler 时，记录不可由场景手填的 ToolInvocationObservation。
 * collectTrace() 必须从 ToolInvocationObservation 生成 tool_entrypoint 和 diagnostic_codes。
 */
import type { ProjectConfig } from "../../types/index.js";
import type { TaskContextManager } from "../pipeline/task_context.js";
import type { ToolRequest } from "./types.js";
import type { KnowledgeIndexManager } from "../../knowledge/index_manager.js";
export interface ToolInvocationObservation {
    /** 调用的工具名 */
    tool_name: string;
    /** 调用时的原始请求参数 */
    request: ToolRequest;
    /** 解析后的响应（JSON 对象或原始文本） */
    parsed_response: unknown;
    /** 是否为错误响应 */
    is_error: boolean;
    /** 关联的 task_id（从请求或响应提取） */
    task_id: string | undefined;
    /** 调用前的任务状态 */
    before_status: string | undefined;
    /** 调用后的任务状态 */
    after_status: string | undefined;
    /** 从响应中提取的诊断码 */
    diagnostic_code: string | undefined;
    /** 调用时间戳 */
    timestamp: string;
}
export interface ToolHarness {
    tmpDir: string;
    stateDir: string;
    config: ProjectConfig;
    taskContext: TaskContextManager;
    knowledgeIndex: KnowledgeIndexManager;
    /** 调用注册后的真实 MCP 工具，自动记录 ToolInvocationObservation */
    callTool(name: string, args: Record<string, unknown>): Promise<{
        content: Array<{
            type: string;
            text: string;
        }>;
        isError?: boolean;
    }>;
    /** 解析 MCP 工具返回的 JSON — 返回值由运行时 JSON 结构决定，调用方需按场景断言 */
    parseResult(raw: {
        content?: Array<{
            type: string;
            text: string;
        }>;
        isError?: boolean;
    }): any;
    /** 获取所有工具调用观察记录（只读） */
    getObservations(): ReadonlyArray<ToolInvocationObservation>;
    /** 获取最后一次工具调用观察 */
    getLastObservation(): ToolInvocationObservation | undefined;
    /** 从观察记录生成 production_trace（异步，需读取 consumption traces） */
    collectTrace(): Promise<{
        tool_entrypoint: string;
        diagnostic_codes: string[];
        gates_consumed: string[];
    }>;
    /** 显式设置计划提案门禁（场景需明确调用） */
    setupPlanGate(taskId: string): Promise<void>;
    /** 清理临时资源 */
    cleanup(): void;
}
export interface ToolHarnessOptions {
    /** 是否复制知识库到临时项目 */
    copyKnowledge?: boolean;
    /** 自定义技术栈 */
    techStack?: Partial<ProjectConfig["tech_stack"]>;
    /** 自定义 product_profile */
    productProfile?: string;
}
/**
 * 创建真实 MCP 工具测试装置。
 *
 * 每个 scenario runner 调用此函数获得独立的临时项目 + 工具注册环境，
 * 通过 callTool("需求分析", ...) 调用与生产一致的注册工具。
 * 每次 callTool 自动记录 ToolInvocationObservation。
 */
export declare function createToolHarness(options?: ToolHarnessOptions): Promise<ToolHarness>;
//# sourceMappingURL=release_tool_harness.d.ts.map