/** * 一轮 dispatch 内的 assistant 正文段缓冲: * - 同段修稿(新文延展/包住旧文)→ 覆盖 * - 流式分块新段 → 追加合并 * 在 tool 边界或轮次结束冲刷 HTTP。 */ import type { ReplyDeliverPayload } from "./send-service.js"; export type DeliverFlushKind = "interim" | "final"; export type BufferedDeliverEntry = { payload: ReplyDeliverPayload; textPart: string; rawTextPart: string; hasMedia: boolean; }; export type TurnDeliverBufferStats = { writeCount: number; /** write 时判定为修稿并覆盖 */ revisionOverwriteCount: number; /** write 时判定为新段并追加 */ segmentAppendCount: number; flushInterimCount: number; flushFinalCount: number; skippedDuplicateFlushCount: number; }; export type TakeForFlushResult = { status: "empty"; } | { status: "skipped_duplicate"; entry: BufferedDeliverEntry; } | { status: "ready"; entry: BufferedDeliverEntry; }; /** deliver 正文/附件是否值得写入 buffer 或立即 HTTP。 */ export declare function isDeliverPayloadSendable(args: { textPart: string; hasMedia: boolean; isThinking?: boolean; }): boolean; /** * 新文是否像对旧文的「修稿/延展」(可安全覆盖),而非另一完整分块。 * 无权威 OpenClaw 标记,偏保守:宁可追加重复,不可覆盖丢段。 */ export declare function isDeliverTextRevision(oldText: string, newText: string): boolean; /** * 段边界 / 轮末 flush 时,判断是否可用 `onPartialReply` 全量快照覆盖 deliver 拼接文本。 * 仅当快照(归一化后)与缓冲文本相等或为其超集时才覆盖,避免流式竞态下快照落后导致截断丢内容。 */ export declare function snapshotSupersedesBufferText(snapshot: string, bufferText: string): boolean; export declare class TurnDeliverBuffer { private buffer; private lastFlushedComparable; private readonly stats; hasContent(): boolean; getStats(): TurnDeliverBufferStats; write(entry: BufferedDeliverEntry): void; takeForFlush(kind: DeliverFlushKind): TakeForFlushResult; clear(): void; } //# sourceMappingURL=turn-deliver-buffer.d.ts.map