/**
 * Solo Spec Builder — 小智(qlogicagent)主持的「一轮澄清 + 轻量 spec」过程。
 *
 * 路径选择:走 runForkedAgent(进程内推理 agent,同 team-delegate/dream),而非 solo 竞赛的
 * processManager.spawn(ACP 子进程)。理由:spec 阶段是交互式推理(分析→ask-user 澄清→产 spec),
 * 不改文件、不需 worktree,且需要 ask-user 交互 —— 这正是 runForkedAgent 的场景。
 *
 * 本模块是纯编排:askUser 后端 + ask_user 工具定义由调用方(Cut3 RPC handler)注入,
 * 这样模块本身不依赖全局 ask-user 回调或 toolCatalog。
 */
import type { ForkedAgentRunnerFactory } from "../runtime/ports/agent-execution-contracts.js";
import type { LLMTransport } from "../runtime/ports/index.js";
import type { ToolDefinition, AgentLogger } from "../agent/types.js";
import type { SoloSpec } from "../protocol/wire/acp-agent-management.js";
import { type AskUserQuestion } from "../skills/tools/ask-user-tool.js";
/** R3 多轮对话式 spec 的单轮入参。history 含到本轮为止的完整对话(末条为用户最新消息)。 */
export interface SpecChatDeps {
    rawTask: string;
    history: {
        role: "user" | "assistant";
        content: string;
    }[];
    transport: LLMTransport;
    apiKey: string;
    model: string;
    createAgentRunner: ForkedAgentRunnerFactory;
    askUserToolDef: ToolDefinition;
    askUser: (questions: AskUserQuestion[], signal?: AbortSignal) => Promise<Record<string, string> | null>;
    log: AgentLogger;
    parentSignal?: AbortSignal;
}
/** R3 多轮对话式 spec:agent 通过此工具产出/更新结构化规格(类比 plan_mode 的 plan 入参)。 */
export declare const SET_SPEC_TOOL_NAME = "set_spec";
export declare const SET_SPEC_TOOL_DEF: ToolDefinition;
/**
 * R3 单轮对话式 spec(无状态:每轮带全量 history 重跑 forked agent)。受限工具 = ask_user + set_spec,
 * 纯推理不改文件(plan-mode 式)。返回本轮自然语言 reply + 最新 SoloSpec(set_spec 未调时回退解析文本)。
 * 失败(LLM/连接级)会抛 —— 由调用方降级。
 */
export declare function runSpecChatRound(deps: SpecChatDeps): Promise<{
    reply: string;
    spec: SoloSpec;
}>;
/** 解析小智的标记块文本 → SoloSpec。带兜底,绝不抛(降级:goal=rawTask、acceptance 可空)。 */
export declare function parseSpecResponse(text: string, rawTask: string, clarifications?: {
    question: string;
    answer: string;
}[]): SoloSpec;
