import type { ServerResponse } from "node:http"; import type { AgentAttachment } from "../agent/types.js"; type TurnAttachment = { clientId: string; id: string; name: string; type: string; size: number; width: number; height: number; dataUrl: string; }; export type CodexState = { busy: boolean; threadId: string; turnId: string; }; /** 管理网页画布连接、状态、附件和工具请求。 */ export declare class CanvasSession { private clients; private clientFocusOrder; private pending; private canvasStates; private turnAttachments; private activeClientId; private boundClientId; private focusSequence; private codexState; /** 获取当前目标网页的画布状态。 */ private get canvasState(); /** 获取当前 turn 绑定或最近激活的网页客户端。 */ private get targetClientId(); /** 返回 Canvas Agent 当前连接状态。 */ health(): { ok: boolean; hasCanvas: boolean; clients: number; codexBusy: boolean; }; /** 返回 Codex 是否正在执行任务。 */ get codexBusy(): boolean; /** 更新并广播 Codex 运行状态。 */ setCodexState(patch: Partial): void; /** 建立网页与 Canvas Agent 之间的 SSE 连接。 */ openEvents(url: URL, res: ServerResponse): void; /** 保存指定网页上报的最新画布快照。 */ updateState(body: unknown, clientId?: string): void; /** 将指定网页设为最近激活的工具目标。 */ activateClient(clientId: string): void; /** 将当前 Agent turn 固定绑定到指定网页。 */ bindClient(clientId: string): void; /** 解除当前 Agent turn 的网页绑定。 */ releaseClient(clientId: string): void; /** 保存当前 turn 可用的图片附件并返回安全引用。 */ setTurnAttachments(clientId: string, attachments: AgentAttachment[]): { id: string; name: string; type: string; size: number; width: number; height: number; }[]; /** 清理指定网页或全部 turn 附件。 */ clearTurnAttachments(clientId?: string): void; /** 获取属于指定网页 turn 的图片附件。 */ getTurnAttachment(clientId: string, attachmentId: string): TurnAttachment; /** 接收网页返回的工具调用结果。 */ resolveResult(clientId: string, body: { requestId?: string; error?: string; result?: unknown; }): boolean; /** 向全部已连接网页广播事件。 */ emitAll(type: string, payload: unknown): void; /** 向全部网页广播带线程归属的事件。 */ emitThread(type: string, threadId: string, payload?: Record): void; /** 校验工具参数并将调用分派到当前目标网页。 */ callTool(name: unknown, rawInput: unknown): Promise; /** 将当前 turn 的附件转换为画布图片节点。 */ private createAttachmentNodes; /** 向目标网页发送工具请求并等待调用结果。 */ private requestCanvasTool; } export {};