/** * 单个 Assistant Message 的流式写入器。 * * Writer 把 AI SDK chunk、Executor Tool 输入屏障和最终关闭操作收口到同一条 * 单写者队列,保证并发回调不会产生 revision 冲突。 */ import type { UIMessageChunk } from "ai"; import type { SessionMessages } from "../../session/SessionMessages.js"; import type { SessionAssistantFilePart, SessionAssistantMessagePart } from "../../types/session/SessionMessage.js"; import type { SessionToolInputReady } from "../../types/session/SessionTool.js"; /** 单个 Assistant Message 的流式 writer。 */ export declare class SessionAssistantMessageWriter { readonly message_id: string; private readonly recorder; private readonly pending_text_parts; private readonly active_text_part_ids; private readonly current_step_part_ids; private readonly tool_part_gate; private write_chain; private step_index; private step_active; private closed; constructor(recorder: SessionMessages, message_id: string); /** 应用一个原始 AI SDK UI chunk。 */ apply_chunk(chunk: UIMessageChunk): Promise; /** 建立一个独立模型 UI stream 的 canonical step 作用域。 */ begin_step(): Promise; /** * 校验当前 step 的最终快照并原子补充 metadata。 * * 最终快照不能创建、删除或重排 Part;任何不一致都表示 canonical chunk * 链路不完整,必须让当前 Turn 失败。 */ finish_step(parts: SessionAssistantMessagePart[]): Promise; /** 释放异常结束的 step 作用域并保留已经写入的 canonical Parts。 */ abort_step(): Promise; /** 在当前 Assistant writer 的单写者队列中应用原始 chunk。 */ private apply_chunk_serialized; /** 写入一个完整 Assistant part。 */ upsert_part(part: SessionAssistantMessagePart): Promise; /** Executor 在调用 Tool 实现前写入完整输入。 */ prepare_tool_input(input: SessionToolInputReady): Promise; /** 把最终结果中的文件补入当前 Assistant,并对流式已写入文件去重。 */ append_file_part(input: Pick): Promise; /** 把 Action 产生的完整 Assistant Parts 按当前消息顺序追加。 */ append_parts(parts: SessionAssistantMessagePart[]): Promise; /** 等待当前 Assistant writer 已入队的全部写操作完成。 */ flush(): Promise; /** 正常完成当前 Assistant Message。 */ complete(): Promise; /** 停止当前 Assistant Message,并保留已有 Parts。 */ stop(): Promise; /** 以失败状态关闭当前 Assistant Message。 */ fail(error: unknown): Promise; /** 读取当前 Assistant Message 快照。 */ private current_message; /** 读取当前 Assistant 中的指定 Tool Part。 */ private find_tool; /** 校验并合并同一位置的 canonical Part 与 step 最终快照。 */ private merge_step_part; /** 构造不包含正文与工具输出的结构化 step 快照错误。 */ private step_snapshot_error; /** 清理当前 step 的临时关联状态。 */ private reset_step_state; /** 计算下一个不可变 Part 顺序号。 */ private next_part_sequence; /** * 把 AI SDK 当前 stream 内的临时 chunk ID 映射为 Message 内唯一 Part ID。 * * AI SDK 会在不同 `streamText()` 调用中重复使用 `txt-0`、`reasoning-0` * 等 ID,因此这些 ID 只能用于关联当前尚未结束的文本片段。 */ private resolve_text_part_id; /** 构造当前流片段使用的临时关联键。 */ private source_text_part_id; /** 在首个有效 Delta 到达时才固定文本 Part 的真实顺序。 */ private ensure_text_part; /** 更新已经由 canonical stream 创建的 Tool Part。 */ private upsert_tool; /** 仅由 Tool 输入 stream chunk 创建 canonical Tool Part。 */ private create_tool; /** 将 Executor 完整输入写入已经由 stream 创建的 Tool Part。 */ private write_prepared_tool_input; /** 串行执行对当前 Assistant Message 的全部写操作。 */ private enqueue_write; /** 在队列内关闭当前 Assistant Message。 */ private close_serialized; } //# sourceMappingURL=SessionAssistantMessageWriter.d.ts.map