/** * [WHO]: Provides TreeOverlayController + TreeOverlayContext — interactive session tree/fork/resume overlays * [FROM]: Depends on AgentSession/SessionManager for session lifecycle, TUI containers/components, PromptHost-like prompts * [TO]: Consumed by modes/interactive/interactive-mode.ts for /tree, /fork, /resume, keybindings, extension session switch * [HERE]: modes/interactive/controllers/tree-overlay-controller.ts — P5 tree-overlay slice (UI05, pure move + rename) * * Owns interactive session selection overlays only. It delegates reusable session lifecycle behavior to * AgentSession and SessionManager; it does not parse or mutate session files directly except the existing * rename-session callback through SessionManager.open(). */ import type { Component, Container, TUI } from "@catui/tui"; import type { AgentSession } from "../../../core/runtime/agent-session.js"; import { SessionManager } from "../../../core/session/session-manager.js"; import type { KeybindingsManager } from "../../../core/platform/keybindings.js"; export interface TreeOverlaySurface { showSelector(create: (done: () => void) => { component: Component; focus: Component; }): void; showStatus(message: string): void; showError(message: string): void; requestRender(): void; getUi(): TUI; getChatContainer(): Container; getStatusContainer(): Container; clearChat(): void; clearTransientSessionUi(): void; addSessionNavigationBanner(message: string): void; renderInitialMessages(): void; getEditorText(): string; setEditorText(text: string): void; getEscapeHandler(): (() => void) | undefined; setEscapeHandler(handler: (() => void) | undefined): void; } export interface TreeOverlayPromptHost { selector(title: string, options: string[]): Promise; editor(title: string, prefill?: string): Promise; } export interface TreeOverlayContext { session: AgentSession; getSessionManager(): SessionManager; surface: TreeOverlaySurface; promptHost: TreeOverlayPromptHost; keybindings: KeybindingsManager; shutdown(): Promise; } export declare class TreeOverlayController { private readonly ctx; constructor(ctx: TreeOverlayContext); private get sessionManager(); showForkSelector(): void; showTreeSelector(initialSelectedId?: string): void; showSessionSelector(): void; resumeSession(sessionPath: string): Promise; }