/**
 * Workflow Chat Builder (M4) — 自动化页"意图先行"的对话搭图/改图(D18/D17)。
 *
 * 与 solo-spec-builder.runSpecChatRound 同构:进程内 runForkedAgent + 受限工具,纯推理产出,
 * 不直接落库。区别:产出的是 **工作流提案**——新建给完整 WorkflowDef,改已有给 WorkflowPatch[]。
 * 应用由调用方(前端经既有 workflow.create/patch RPC,触发 WS 回流画布)完成,故本轮无副作用、
 * 也无需访问引擎控制器。
 */
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 CapabilityEntry } from "./workflow/capability-catalog.js";
/** agent 通过此工具产出工作流提案:新建给 def,改已有给 patch。 */
export declare const PROPOSE_WORKFLOW_TOOL_NAME = "propose_workflow";
export declare const PROPOSE_WORKFLOW_TOOL_DEF: ToolDefinition;
/** 单轮入参。history 含到本轮为止的完整对话(末条为用户最新消息)。currentWorkflow 为已有图的渲染文本(改图上下文)。
 *  v1 不带 ask_user(不反问;直接用默认搭,用户再说一句改),故澄清往返的网关路由也无需接。 */
export interface WorkflowChatDeps {
    history: {
        role: "user" | "assistant";
        content: string;
    }[];
    currentWorkflow?: string;
    /** D19 框选局部修改:用户框选的节点 id;非空时指示 agent 只产出 scoped patch(引擎按同 scope 强制)。 */
    scope?: string[];
    /**
     * 真实能力目录(spec D24/IT-3):agent/tool/skill/mcp/memory(+网关注入的 channel)。
     * 注入后:① 系统提示带紧凑清单 ② agent 可用 list_capabilities 查长尾 ③ propose_workflow
     * 校验回环拒绝引用目录外能力(反幻觉)。缺省(无目录)时退回静态 kind 说明、不做 ref 校验。
     */
    catalog?: CapabilityEntry[];
    transport: LLMTransport;
    apiKey: string;
    model: string;
    createAgentRunner: ForkedAgentRunnerFactory;
    log: AgentLogger;
    parentSignal?: AbortSignal;
}
export interface WorkflowChatResult {
    reply: string;
    def?: Record<string, unknown>;
    patch?: unknown[];
    trigger?: Record<string, unknown>;
    /**
     * Fail-loud(§3/EX-A):本轮 agent 调过 propose_workflow 但**没有任何一次通过校验**时带上
     * (attempts=被拒次数,errors=最后一次的校验错误)。reply 此时只是 agent 的口头方案,
     * **不是**已落图的提案 —— 前端必须把失败 + 重试出路显式给用户,不许当正常回复展示。
     */
    rejected?: {
        attempts: number;
        errors: string[];
    };
    /**
     * AI-2: per-field {{ __ASK__ }} placeholders the agent left for genuinely-unknown REQUIRED values.
     * The def IS applied (so the user sees the shape) but these nodes show a 待补 badge and the
     * workflow cannot be activated until resolved. Absent/empty = nothing pending.
     */
    clarify?: {
        nodeId: string;
        field: string;
        question: string;
    }[];
}
/** agent 按需检索能力长尾(系统提示只放每类前 N 条)。 */
export declare const LIST_CAPABILITIES_TOOL_NAME = "list_capabilities";
/** 跑一轮对话式搭图/改图,返回自然语言 reply + 工作流提案(def 新建 / patch 改已有)。失败抛,由调用方降级。 */
export declare function runWorkflowChatRound(deps: WorkflowChatDeps): Promise<WorkflowChatResult>;
