/** * [WHO]: Provides SettingsOverlayController + SettingsOverlayContext — interactive /settings overlay orchestration * [FROM]: Depends on AgentSession, SettingsManager, SettingsSelectorComponent, interactive theme/render/editor ports * [TO]: Consumed by modes/interactive/interactive-mode.ts for the /settings command * [HERE]: modes/interactive/controllers/settings-overlay-controller.ts — P5 settings-overlay slice (UI07, hybrid) * * Owns the interactive settings overlay wiring only. Settings persistence remains in SettingsManager, * session behavior remains in AgentSession, and render/editor/buddy effects are delegated through ports. */ import type { Component } from "@catui/tui"; import type { AgentSession } from "../../../core/runtime/agent-session.js"; import type { SettingsManager } from "../../../core/platform/config/settings-manager.js"; export interface SettingsOverlaySurface { showSelector(create: (done: () => void) => { component: Component; focus: Component; }): void; showStatus(message: string): void; showError(message: string): void; invalidateUi(): void; requestRender(): void; setShowHardwareCursor(enabled: boolean): void; setClearOnShrink(enabled: boolean): void; } export interface SettingsOverlayFooterPort { setAutoCompactEnabled(enabled: boolean): void; setShowTokenStats(enabled: boolean): void; invalidate(): void; } export interface SettingsOverlayEditorPort { setPaddingX(padding: number): void; setAutocompleteMaxVisible(maxVisible: number): void; updateBorderColor(): void; } export interface SettingsOverlayRenderPort { setToolImagesEnabled(enabled: boolean): void; setAssistantThinkingHidden(hidden: boolean): void; rebuildChatFromMessages(): void; } export interface SettingsOverlayContext { session: AgentSession; settingsManager: SettingsManager; surface: SettingsOverlaySurface; footer: SettingsOverlayFooterPort; editor: SettingsOverlayEditorPort; render: SettingsOverlayRenderPort; getHideThinkingBlock(): boolean; setHideThinkingBlock(hidden: boolean): void; rebuildAutocomplete(): void; syncBuddyPet(): void; } export declare class SettingsOverlayController { private readonly ctx; constructor(ctx: SettingsOverlayContext); showSettingsSelector(): void; }