import type { ProviderDriver, WindowCreateOptions, WindowMutation } from "../provider-engine.js"; import type { ProviderDirectoryList, ProviderFileDeleteOptions, ProviderFileDeleteResult, ProviderFileMkdirOptions, ProviderFileMkdirResult, ProviderFileRenameOptions, ProviderFileRenameResult, ProviderFileStat, ProviderFileWriteOptions, ProviderFileWriteResult } from "@termfleet/core/contracts/files.js"; import type { Bounds, OrphanSessionPruneResult, ProviderFilesystem, ProviderHealth, ProviderSnapshot, ProviderWindow, TerminalEffect, TerminalEffectKind, WindowCloseResult, WindowCreateResult, WindowMoveResult } from "@termfleet/core/types.js"; import { type AgentSessionReadResult } from "@termfleet/core/internal/agent-session-tail.js"; import { type AgentSessionDetails } from "@termfleet/core/internal/agent-session.js"; import { type CooperativeSignalEvent, type LifecycleSnapshot } from "@termfleet/core/internal/session-lifecycle.js"; export declare function isEndedAgentReapable(opts: { hadAgent: boolean; hasAgentNow: boolean; agentlessSinceMs: number | undefined; nowMs: number; thresholdMs: number; }): boolean; export declare function selectEmptyWindowSweep({ previous, protectedIds, windows }: { previous: ReadonlySet; protectedIds: ReadonlySet; windows: { id: number; tabs: number; visible: boolean; }[]; }): { next: Set; toClose: number[]; }; export declare class ItermDriver implements ProviderDriver { readonly kind: "iterm"; private readonly cwd; private readonly filesystemRoot; private readonly servedSession; private readonly mirrorOnly; private readonly socket; private readonly lifecycleStore; private readonly cooperativeSignalStore; private readonly effects; private nativeWindowIdByTerminalId; private nativeWindowIds; private lastNativeWindows; private lastNativeSessionIdOverrides; private readonly claudeSessionIdByPid; private readonly codexSessionIdByPid; private readonly agentWindowSeen; private readonly agentlessSince; private readonly controlByTerminal; private emptyWindowsSeen; private lastEmptyWindowSweepAtMs; constructor({ cwd, mirrorOnly, servedSession, socket }: { cwd: string; mirrorOnly?: boolean; servedSession: string; socket?: string; }); initialize(): Promise; pruneOrphanSessions(): OrphanSessionPruneResult; getHealth(): ProviderHealth; recordCooperativeSignal(options: { atMs: number; event: CooperativeSignalEvent; sessionId: string; }): void; getLifecycle(): Promise; getSnapshot(): Promise>; getWindows(lifecycle: LifecycleSnapshot): ProviderWindow[]; getDisplayBounds(): Bounds; getFilesystems(): ProviderFilesystem[]; createWindow(options?: WindowCreateOptions): Promise; moveWindow({ bounds, id }: WindowMutation): WindowMoveResult; setTerminalEffect({ durationMs, kind, terminalId }: { durationMs?: number; kind: TerminalEffectKind; terminalId: string; }): TerminalEffect; closeWindow(id: number): WindowCloseResult; resizeDisplay(): Bounds; captureTerminal({ lines, preserveEscapes, terminalId }: { preserveEscapes?: boolean; terminalId: string; lines?: number; }): string; getAgentSession({ cwd, sessionId }: { cwd?: string; sessionId: string; }): Promise; getAgentSessionTailed({ cwd, sessionId }: { cwd?: string; sessionId: string; }): Promise; sendTerminalInput({ data, deadlineMs, submitMode, terminalId }: { terminalId: string; data: string; deadlineMs?: number; submitMode?: "retry" | "single"; }): Promise<{ terminalId: string; bytes: number; delivery: string; }>; interruptTerminal({ terminalId }: { terminalId: string; }): Promise; readFile({ path, terminalId }: { terminalId: string; path: string; }): Buffer; readFileByFilesystem({ filesystemId, length, offset, path }: { filesystemId: string; length?: number; offset?: number; path: string; }): Buffer; listDirectory({ path, terminalId }: { terminalId: string; path: string; }): ProviderDirectoryList; listDirectoryByFilesystem({ filesystemId, path, terminalId }: { filesystemId: string; path: string; terminalId?: string; }): ProviderDirectoryList; statFile({ path, terminalId }: { terminalId: string; path: string; }): ProviderFileStat; statFileByFilesystem({ filesystemId, path, terminalId }: { filesystemId: string; path: string; terminalId?: string; }): ProviderFileStat; writeFile(options: ProviderFileWriteOptions): ProviderFileWriteResult; writeFileByFilesystem(options: Omit & { filesystemId: string; }): ProviderFileWriteResult; deleteFile(options: ProviderFileDeleteOptions): ProviderFileDeleteResult; deleteFileByFilesystem(options: Omit & { filesystemId: string; }): ProviderFileDeleteResult; makeDirectory(options: ProviderFileMkdirOptions): ProviderFileMkdirResult; makeDirectoryByFilesystem(options: Omit & { filesystemId: string; }): ProviderFileMkdirResult; renameFile(options: ProviderFileRenameOptions): ProviderFileRenameResult; renameFileByFilesystem(options: Omit & { filesystemId: string; }): ProviderFileRenameResult; private getManagedWindows; private observeNativeIterm; private resolvePidKeyedSessionIds; private getOwnedFleet; private requireOwnedFilesystem; private nativeWindowId; private requireKnownTerminal; private getItermWindows; noteControlSession({ cwd, terminalId }: { cwd?: string; terminalId: string; }): void; isControlTerminal(terminalId: string): boolean; isControlWindow(id: number): boolean; reapEndedSessions(lifecycle: LifecycleSnapshot, thresholdMs: number, nowMs: number): void; private sweepEmptyWindows; private requireOwnedSession; private requireOwnedItermWindowId; private observeLifecycle; private listPanesWithRecovery; private ensureManagedSessions; } export declare function parseItermSessionId(session: string): number | undefined; export declare function sendItermWindowInput({ data, deadlineMs, id }: { data: string; deadlineMs?: number; id: number; }): void; export declare function sendItermWindowInterrupt(id: number): void;