import type { EditorConnection } from './EditorConnection.js'; import type { ToolResult } from '../types.js'; import type { HealthMonitor } from './health-monitor.js'; export declare class EditorToolExecutor { private syncActive; private treeChangeRing; private treeChangeHead; private treeChangeCount; private static readonly MAX_BUFFER_SIZE; private readonly conn; private readonly healthMonitor?; private readonly isVerifying?; private executeChain; /** Bound handlers stored so we can remove them on destroy. */ private readonly _disconnectHandler; private readonly _reconnectHandler; constructor(conn: EditorConnection, healthMonitor?: HealthMonitor, isVerifying?: () => boolean); /** Remove all handlers from the connection. Call when discarding this executor. */ destroy(): void; execute(toolName: string, args: Record): Promise; private _executeInner; /** * 包裹 startOperation/endOperation 的长操作执行(nav_bake / test_run 共用)。 * startOperation 通知 GD 侧 heartbeat.gd 暂停 inactivity 检测;endOperation 恢复。 * IPC-R3 (2026-08-08): startOperation 后还暂停 TS 侧 health-monitor 心跳,防 GD 主循环 * 阻塞时 ping 5s 超时×5≈75s 误降级中断 110s/290s 操作。endOperation 后恢复(双保险)。 * finally 块的 .catch(() => {}) 防清理错误覆盖 try 抛出的原始错误(I-1 审查 finding)。 */ private _runWithOpTimeout; private handleTreeChange; /** Drain all buffered changes in insertion order and reset the ring. */ private drainChanges; private handleSyncStart; private handleSyncStop; private handleGetSceneTree; }