import type { AgentSession, AgentSessionRuntime, SessionInfo } from "@earendil-works/pi-coding-agent"; import type { SessionSearchResult } from "../session/session-search.js"; import type { AppRequestHistory } from "../session/request-history.js"; import type { ActivePopupMenu, AppOptions, Entry, ModelMenuValue, PixMenuItem, PixMenuOptions, PopupMenuPlacement, SessionModel, ThinkingMenuValue } from "../types.js"; import type { ToastNotifier } from "../../ui.js"; export type DirectPopupMenu = Exclude; export type CommandControllerHost = { readonly options: AppOptions; runtime(): AgentSessionRuntime | undefined; inputScopeKey?(): string | undefined; subagentTypes?(runtime: AgentSessionRuntime): readonly string[] | undefined; awaitCurrentSessionExtensions(runtime?: AgentSessionRuntime): Promise; requestHistory(): AppRequestHistory; getInput(): string; setInput(value: string): void; promptEnhancerModelRef(): string; autocompleteModelRef(): string; setAutocompleteModelRef(modelRef: string): void; ignoreContextFiles(): boolean; setIgnoreContextFiles(ignoreContextFiles: boolean): void; enhancePrompt(): Promise; isRunning(): boolean; stop(): void | Promise; addEntry(entry: Entry): void; setStatus(status: string): void; toast: ToastNotifier; render(): void; showMenu(items: readonly PixMenuItem[], options: PixMenuOptions): Promise; getModelMenuItems(query: string): readonly PixMenuItem[]; getThinkingMenuItems(query: string): readonly PixMenuItem[]; modelRef(model: SessionModel): string; setSessionStatus(session: AgentSession | undefined): void; queueUserMessage(text: string): void; resetSessionView(): void; loadSessionHistory(): void; afterSessionReplacement(message?: string): void; openDirectPopupMenu(menu: DirectPopupMenu, options?: { preserveStatus?: boolean; placement?: PopupMenuPlacement; }): void; getDirectPopupMenu(): DirectPopupMenu | undefined; setDirectPopupMenu(menu: DirectPopupMenu | undefined): void; setDirectPopupMenuPreserveStatus(preserveStatus: boolean): void; getDirectPopupMenuQuery(): string; setDirectPopupMenuQuery(query: string): void; setResumeMenuMode?(mode: "resume" | "draft"): void; refreshUserMessageJumpMenuItems(): Promise; getResumeLoading(): boolean; getResumeSessions(): readonly SessionInfo[]; setResumeLoading(loading: boolean): void; setResumeSessions(sessions: SessionInfo[]): void; openResumeMenuWithQuery(query: string): void; closeResumeMenu(): void; openNewTab(): Promise; openSearchResultInNewTab(result: SessionSearchResult): Promise; }; export type CommandScope = { readonly runtime: AgentSessionRuntime | undefined; readonly session: AgentSession | undefined; readonly inputScopeKey: string | undefined; }; export declare function captureCommandScope(host: CommandControllerHost): CommandScope; export declare function isCommandRuntimeActive(host: CommandControllerHost, runtime: AgentSessionRuntime): boolean; export declare function isCommandScopeActive(host: CommandControllerHost, scope: CommandScope): boolean;