import type { TurnProjection } from "../../schemas/projection"; export interface RawEvent { type: string; payload: Record; } /** 在任何事件处理前确认 Socket.IO 批次已到达客户端。 */ export declare function acknowledgeTurnEvents(acknowledge?: () => void): void; export type ProjectionUpdate = { kind: "upsert"; turn: TurnProjection; } | { kind: "workspace_changed"; loopId: string; toolCallId?: string; toolName?: string; workspacePath?: string; }; /** 是否包含会改变聊天运行生命周期的事件。纯观测/整理事件不启动新一轮。 */ export declare function hasChatRunEvent(events: RawEvent[]): boolean; /** * 缺失 chat:end 时的终态兜底。只有被投影接受到当前 assistant turn 的 followup * 才能结束流式态;陈旧 followup 或其后已有新轮事件时均返回 false。 */ export declare function acceptedPostChatFollowupCompletesLatestRun(events: RawEvent[], updates: ProjectionUpdate[]): boolean; export declare class ClientProjectionBuilder { private activeTurns; private lastTurnIds; private latestTurns; private turnsById; private loopDescriptions; /** loop_name → 正在运行的子智能体起点,agent:end 结算并挂到父工具调用上。 */ private activeSubagentRuns; private pendingChildPauses; private pendingMemoryRefs; private activeCompactions; private failedCompactions; private chatRun; private chatTurnIds; private seq; private syntheticCounter; private displayNameResolver; constructor(displayNameResolver?: (name: string) => string); processBatch(events: RawEvent[]): ProjectionUpdate[]; processEvent(event: RawEvent): ProjectionUpdate[] | null; private processTurnEvent; reset(): void; seedSequence(maxSeq: number): void; _seedTurns(turns: TurnProjection[]): void; private onMemoryInject; private onContextEntry; private onLoopTurn; private onModeChange; private onPlanStatusUpdate; private onWorkspaceChanged; private onAgentStart; private onBgStarted; private onBgTasksCompleted; private onAskUserAnswer; private onUserMessage; private onPostChatFollowup; private onDelta; private onToolCallCreated; private onToolCallArgumentsDelta; private onResponseDone; private applyFirstTokenDelivery; private applyStreamTiming; private onToolResultDone; private onToolResultDelta; private onToolUi; private onToolBridge; private onToolApprovalRequired; private onChildPause; private onChatEnd; private onAgentEnd; private settleSubagentRun; private dropIncompleteToolCalls; private onCompaction; private syncPatch; private finalize; private shouldFinalizeAfterToolResults; private collectLoopUpdates; private nextSeq; private nextTurnId; }