@evalops/maestro 0.10.46 → 0.10.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/agent/providers/openai-codex-session.js +1 -1
- package/dist/agent/providers/openai-codex-session.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +2 -2
- package/dist/app-server/in-process-client.js.map +1 -1
- package/dist/app-server/protocol-modes-api.js +1 -1
- package/dist/app-server/protocol-modes-api.js.map +1 -1
- package/dist/app-server/sandbox-check-api.d.ts +21 -0
- package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
- package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
- package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
- package/dist/app-server/session-api.d.ts +5 -5
- package/dist/app-server/session-api.js +18 -18
- package/dist/app-server/session-api.js.map +1 -1
- package/dist/audit/logger.d.ts +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +3 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/codex.js +30 -3
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/update.d.ts +12 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +148 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +4 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli-tui/auth-state.d.ts +7 -0
- package/dist/cli-tui/auth-state.d.ts.map +1 -0
- package/dist/cli-tui/auth-state.js +46 -0
- package/dist/cli-tui/auth-state.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +8 -3
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
- package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
- package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
- package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.d.ts +1 -1
- package/dist/cli-tui/commands/subcommands/ui-commands.js +2 -2
- package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -1
- package/dist/cli-tui/footer.d.ts.map +1 -1
- package/dist/cli-tui/footer.js +1 -1
- package/dist/cli-tui/footer.js.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
- package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
- package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
- package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
- package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
- package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/oauth-selector.js +25 -2
- package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
- package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/ui-state-controller.js +5 -11
- package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
- package/dist/cli-tui/tui-renderer.d.ts +0 -4
- package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer.js +4 -29
- package/dist/cli-tui/tui-renderer.js.map +1 -1
- package/dist/cli-tui/ui-state.js +1 -1
- package/dist/cli-tui/ui-state.js.map +1 -1
- package/dist/cli-tui/utils/footer-utils.d.ts +1 -1
- package/dist/cli-tui/utils/footer-utils.d.ts.map +1 -1
- package/dist/cli-tui/utils/footer-utils.js.map +1 -1
- package/dist/cli.js +4800 -3779
- package/dist/cli.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +16 -2
- package/dist/codex/app-server-client.d.ts.map +1 -1
- package/dist/codex/app-server-client.js +67 -7
- package/dist/codex/app-server-client.js.map +1 -1
- package/dist/codex/auth.d.ts +4 -0
- package/dist/codex/auth.d.ts.map +1 -0
- package/dist/codex/auth.js +103 -0
- package/dist/codex/auth.js.map +1 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/evalops/agent-bootstrap.js +2 -2
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +10 -1
- package/dist/main.js.map +1 -1
- package/dist/models/config-loader.d.ts +12 -12
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
- package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts +2 -0
- package/dist/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -1
- package/dist/node_modules/@evalops/contracts/dist/scenario.js.map +1 -1
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/oauth/index.d.ts +1 -0
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +42 -2
- package/dist/oauth/index.js.map +1 -1
- package/dist/platform/operating-plane-client.d.ts +3 -3
- package/dist/platform/operating-plane-client.d.ts.map +1 -1
- package/dist/platform/operating-plane-client.js.map +1 -1
- package/dist/platform/operating-plane-summary.js +3 -6
- package/dist/platform/operating-plane-summary.js.map +1 -1
- package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -1
- package/dist/server/agent-trajectory-scenarios.js +29 -6
- package/dist/server/agent-trajectory-scenarios.js.map +1 -1
- package/dist/server/app-context.d.ts +2 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +44 -10
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +2 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
- package/dist/server/handlers/platform-a2a-push.js +113 -2
- package/dist/server/handlers/platform-a2a-push.js.map +1 -1
- package/dist/server/handlers/ui.d.ts.map +1 -1
- package/dist/server/handlers/ui.js +5 -5
- package/dist/server/handlers/ui.js.map +1 -1
- package/dist/server/headless-in-process-host.d.ts.map +1 -1
- package/dist/server/headless-in-process-host.js +1 -1
- package/dist/server/headless-in-process-host.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +54 -15
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/stores/ui-store.d.ts.map +1 -1
- package/dist/server/stores/ui-store.js +8 -1
- package/dist/server/stores/ui-store.js.map +1 -1
- package/dist/tools/background/task-runtime.js +1 -1
- package/dist/tools/background/task-runtime.js.map +1 -1
- package/dist/tools/background/task-types.d.ts +1 -1
- package/dist/update/check.d.ts +2 -0
- package/dist/update/check.d.ts.map +1 -1
- package/dist/update/check.js +100 -41
- package/dist/update/check.js.map +1 -1
- package/dist/update/startup-refresh.d.ts +56 -0
- package/dist/update/startup-refresh.d.ts.map +1 -0
- package/dist/update/startup-refresh.js +321 -0
- package/dist/update/startup-refresh.js.map +1 -0
- package/dist/version.json +2 -2
- package/package.json +297 -296
- package/dist/app-server/sandbox-proof-api.d.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-renderer.js","sourceRoot":"","sources":["../../src/cli-tui/tui-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SlashCommand } from \"@evalops/tui\";\nimport {\n\tContainer,\n\tMarkdown,\n\tProcessTerminal,\n\tScrollContainer,\n\tSpacer,\n\tTUI,\n\tText,\n\tdetectTerminalFeatures,\n} from \"@evalops/tui\";\nimport chalk from \"chalk\";\nimport type {\n\tActionApprovalDecision,\n\tActionApprovalRequest,\n\tActionApprovalService,\n} from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/agent.js\";\nimport type {\n\tToolRetryDecision,\n\tToolRetryRequest,\n\tToolRetryService,\n} from \"../agent/tool-retry.js\";\nimport type { AgentEvent, AgentState, AppMessage } from \"../agent/types.js\";\nimport { PATHS } from \"../config/constants.js\";\nimport type { CleanMode } from \"../conversation/render-model.js\";\nimport { mcpManager } from \"../mcp/index.js\";\nimport { withMcpPostKeepMessages } from \"../mcp/prompt-recovery.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport { listOAuthProviders, loadOAuthCredentials } from \"../oauth/storage.js\";\nimport { getOpenTelemetryStatus } from \"../opentelemetry.js\";\nimport {\n\ttype SessionModelMetadata,\n\ttoSessionModelMetadata,\n} from \"../session/manager.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { getTelemetryStatus } from \"../telemetry.js\";\nimport {\n\tSessionPerfCollector,\n\tformatPerfReport,\n} from \"../telemetry/session-perf.js\";\nimport { getCurrentThemeName, setTheme } from \"../theme/theme.js\";\nimport { getTrainingStatus } from \"../training.js\";\n\nimport { AutoCompactionMonitor } from \"../agent/auto-compaction.js\";\nimport {\n\ttype AutoRetryController,\n\tcreateAutoRetryController,\n} from \"../agent/auto-retry.js\";\nimport {\n\tcollectBackgroundTaskMessagesForCompaction,\n\tcollectMcpMessagesForCompaction,\n\tcollectPlanMessagesForCompaction,\n} from \"../agent/compaction-restoration.js\";\nimport { applySessionEndHooks } from \"../agent/session-lifecycle-hooks.js\";\nimport { SessionRecoveryManager } from \"../agent/session-recovery.js\";\nimport {\n\tapplySessionStartHooks,\n\tcollectPersistedSessionStartHookMessages,\n\trunUserPromptWithRecovery,\n} from \"../agent/user-prompt-runtime.js\";\nimport {\n\ttype AutoVerifyService,\n\tregisterTestVerificationHooks,\n} from \"../testing/index.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { AboutView } from \"./about-view.js\";\nimport type { AgentEventRouter } from \"./agent-event-router.js\";\nimport type { ApprovalController } from \"./approval/approval-controller.js\";\nimport type { BackgroundTasksController } from \"./background/background-tasks-controller.js\";\nimport { BashModeView } from \"./bash-mode-view.js\";\nimport { ChangelogView } from \"./changelog-view.js\";\nimport { formatCommandHelp } from \"./commands/argument-parser.js\";\nimport type {\n\tCommandEntry,\n\tCommandExecutionContext,\n} from \"./commands/types.js\";\nimport { ConfigView } from \"./config-view.js\";\nimport { ContextView } from \"./context-view.js\";\nimport { CustomEditor } from \"./custom-editor.js\";\nimport { EditorView } from \"./editor-view.js\";\nimport { FeedbackView } from \"./feedback-view.js\";\nimport { FooterComponent } from \"./footer.js\";\nimport { GitView } from \"./git/git-view.js\";\nimport { HotkeysView } from \"./hotkeys-view.js\";\nimport { ImportExportView } from \"./import-view.js\";\nimport { InfoView } from \"./info-view.js\";\nimport { InstructionPanelComponent } from \"./instruction-panel.js\";\nimport type { InterruptController } from \"./interrupt-controller.js\";\nimport {\n\ttype KeybindingConfigReport,\n\tinspectKeybindingConfig,\n\tsummarizeKeybindingConfigIssues,\n} from \"./keybindings-config.js\";\nimport {\n\tstartTuiKeybindingWatcher,\n\tstopTuiKeybindingWatcher,\n} from \"./keybindings-watcher.js\";\nimport { getTuiKeybindingLabel } from \"./keybindings.js\";\nimport type { LoaderView } from \"./loader/loader-view.js\";\nimport { LspView } from \"./lsp-view.js\";\nimport type { MessageView } from \"./message-view.js\";\nimport { NotificationView } from \"./notification-view.js\";\nimport type { OAuthFlowController } from \"./oauth/index.js\";\nimport { OllamaView } from \"./ollama-view.js\";\nimport type { PlanView } from \"./plan-view.js\";\nimport type { PlanController } from \"./plan/plan-controller.js\";\nimport type { PromptPayload, QueuedPrompt } from \"./prompt-queue.js\";\nimport { canQueueFollowUpShortcut } from \"./queue/follow-up-shortcut.js\";\nimport {\n\ttype QueueController,\n\ttype QueueMode,\n\tQueuePanelController,\n} from \"./queue/index.js\";\nimport { RunCommandView } from \"./run/run-command-view.js\";\nimport { RunController } from \"./run/run-controller.js\";\nimport { FileSearchView } from \"./search/file-search-view.js\";\nimport { ModelSelectorView } from \"./selectors/model-selector-view.js\";\nimport { QueueModeSelectorView } from \"./selectors/queue-mode-selector-view.js\";\nimport { ReportSelectorView } from \"./selectors/report-selector-view.js\";\nimport { ThemeSelectorView } from \"./selectors/theme-selector-view.js\";\nimport { ThinkingSelectorView } from \"./selectors/thinking-selector-view.js\";\nimport { TreeSelectorView } from \"./selectors/tree-selector-view.js\";\nimport { UserMessageSelectorView } from \"./selectors/user-message-selector-view.js\";\nimport { ConversationCompactor } from \"./session/conversation-compactor.js\";\nimport { SessionContext } from \"./session/session-context.js\";\nimport type { SessionView } from \"./session/session-view.js\";\nimport { SlashCommandMatcher, SlashCycleState } from \"./slash/index.js\";\nimport { renderStartupAnnouncements } from \"./startup-announcements.js\";\nimport { CostView } from \"./status/cost-view.js\";\nimport type { DiagnosticsView } from \"./status/diagnostics-view.js\";\nimport { QuotaView } from \"./status/quota-view.js\";\nimport { TelemetryView } from \"./status/telemetry-view.js\";\nimport { TrainingView } from \"./status/training-view.js\";\nimport type { ToolExecutionComponent } from \"./tool-execution.js\";\nimport type { ToolOutputView } from \"./tool-output-view.js\";\nimport type { ToolRetryController } from \"./tool-retry/tool-retry-controller.js\";\nimport { ToolStatusView } from \"./tool-status-view.js\";\nimport {\n\ttype AgentEventBridge,\n\tcreateAgentEventBridge,\n} from \"./tui-renderer/agent-event-bridge.js\";\nimport {\n\ttype AttachmentController,\n\tcreateAttachmentController,\n} from \"./tui-renderer/attachment-controller.js\";\nimport { buildTuiCommandRegistryOptions } from \"./tui-renderer/command-registry-options.js\";\nimport { buildTuiCommandRegistry } from \"./tui-renderer/command-registry.js\";\nimport {\n\ttype DelegatingCommandHandlerMap,\n\tcreateDelegatingCommandHandlers,\n} from \"./tui-renderer/delegating-command-handlers.js\";\nimport {\n\ttype FooterHintsController,\n\tcreateFooterHintsController,\n} from \"./tui-renderer/footer-hints-controller.js\";\nimport {\n\ttype HistoryController,\n\tcreateHistoryController,\n} from \"./tui-renderer/history-controller.js\";\nimport {\n\ttype HookUiController,\n\tcreateHookUiController,\n} from \"./tui-renderer/hook-ui-controller.js\";\nimport {\n\ttype MiscHandlers,\n\tcreateMiscHandlers,\n} from \"./tui-renderer/misc-handlers.js\";\nimport {\n\ttype SkillsController,\n\tcreateSkillsController,\n} from \"./tui-renderer/skills-controller.js\";\nimport { type UiState, saveCommandPrefs, saveUiState } from \"./ui-state.js\";\nimport { UpdateView } from \"./update-view.js\";\nimport { CommandPaletteView } from \"./utils/commands/command-palette-view.js\";\nimport { buildReviewPrompt } from \"./utils/commands/review-prompt.js\";\nimport { SlashHintBar } from \"./utils/commands/slash-hint-bar.js\";\nimport {\n\ttype FooterMode,\n\ttype FooterStats,\n\tcalculateFooterStats,\n} from \"./utils/footer-utils.js\";\nimport { WelcomeAnimation } from \"./welcome-animation.js\";\n\nimport { areAnimationsDisabled } from \"../config/env-vars.js\";\nimport {\n\tgetProjectOnboardingState,\n\tmarkProjectOnboardingSeen,\n} from \"../onboarding/project-onboarding.js\";\nimport type { UpdateCheckResult } from \"../update/check.js\";\nimport { resolveEnvPath } from \"../utils/path-expansion.js\";\nimport type { ClientToolController } from \"./client-tools/client-tool-controller.js\";\nimport type { TuiClientToolService } from \"./client-tools/local-client-tool-service.js\";\nimport { HookInputModal } from \"./hooks/hook-input-modal.js\";\nimport { ModalManager } from \"./modal-manager.js\";\nimport { PasteHandler } from \"./paste/paste-handler.js\";\nimport {\n\ttype LowBandwidthConfig,\n\tSSH_RENDER_INTERVAL_MS,\n\ttype TerminalCapabilities,\n\tisMinimalMode as checkMinimalMode,\n\tgetLowBandwidthConfig,\n\tgetTerminalCapabilities,\n\tprobeTerminalBackground,\n} from \"./terminal/terminal-utils.js\";\nimport { createApprovalController } from \"./tui-renderer/approval-setup.js\";\nimport { createBackgroundTasksController } from \"./tui-renderer/background-tasks-setup.js\";\nimport {\n\ttype BranchController,\n\tcreateBranchController,\n} from \"./tui-renderer/branch-controller.js\";\nimport {\n\ttype ClearController,\n\tcreateClearController,\n} from \"./tui-renderer/clear-controller.js\";\nimport { createClientToolController } from \"./tui-renderer/client-tools-setup.js\";\nimport {\n\ttype CompactionController,\n\tcreateCompactionController,\n} from \"./tui-renderer/compaction-controller.js\";\nimport {\n\ttype CustomCommandsController,\n\tcreateCustomCommandsController,\n} from \"./tui-renderer/custom-commands-controller.js\";\nimport { attachEditorBindings } from \"./tui-renderer/editor-bindings.js\";\nimport { loadInitialTuiRendererPreferences } from \"./tui-renderer/initial-preferences.js\";\nimport {\n\ttype InputController,\n\tcreateInputController,\n} from \"./tui-renderer/input-controller.js\";\nimport { createInterruptController } from \"./tui-renderer/interrupt-setup.js\";\nimport { createLoaderView } from \"./tui-renderer/loader-setup.js\";\nimport {\n\ttype McpEventsController,\n\tcreateMcpEventsController,\n} from \"./tui-renderer/mcp-events-setup.js\";\nimport { createOAuthFlowController } from \"./tui-renderer/oauth-setup.js\";\nimport { createPlanSubsystem } from \"./tui-renderer/plan-setup.js\";\nimport { createQueueController } from \"./tui-renderer/queue-setup.js\";\nimport {\n\ttype QuickSettingsController,\n\tcreateQuickSettingsController,\n} from \"./tui-renderer/quick-settings-controller.js\";\nimport { createSessionSubsystem } from \"./tui-renderer/session-setup.js\";\nimport {\n\ttype SessionStateController,\n\tcreateSessionStateController,\n} from \"./tui-renderer/session-state-controller.js\";\nimport {\n\ttype SlashHintController,\n\tcreateSlashHintController,\n} from \"./tui-renderer/slash-hint-controller.js\";\nimport { createToolRetryController } from \"./tui-renderer/tool-retry-setup.js\";\nimport { createToolingViews } from \"./tui-renderer/tooling-views-setup.js\";\nimport {\n\ttype UiStateController,\n\tcreateUiStateController,\n} from \"./tui-renderer/ui-state-setup.js\";\nimport { createDiagnosticsView } from \"./tui-renderer/utility-views-setup.js\";\nimport {\n\ttype ViewportController,\n\tcreateViewportController,\n} from \"./tui-renderer/viewport-controller.js\";\n\nconst logger = createLogger(\"tui:renderer\");\n\nconst getTodoStorePath = () =>\n\tresolveEnvPath(process.env.MAESTRO_TODO_FILE) ?? PATHS.TODO_STORE;\n\nfunction formatLoadedSessionToast(sessionInfo: {\n\tid: string;\n\tmessageCount: number;\n\tresumeSummary?: string;\n}): string {\n\tconst prefix = `Loaded session ${sessionInfo.id} (${sessionInfo.messageCount} messages).`;\n\tif (!sessionInfo.resumeSummary?.trim()) {\n\t\treturn prefix;\n\t}\n\treturn `${prefix} ${sessionInfo.resumeSummary.trim()}`;\n}\n\n/**\n * Main TUI (Terminal User Interface) renderer for the Maestro coding agent.\n *\n * This class orchestrates all UI components, event handling, and user interactions.\n * It manages:\n * - Message rendering (user, assistant, tool calls)\n * - Streaming text display with markdown formatting\n * - Command palette and slash command execution\n * - Session management and switching\n * - Cost tracking and telemetry views\n * - Model selection and configuration\n * - File search and path autocomplete\n * - Git integration and status display\n *\n * The TUI uses an event-driven architecture where the Agent emits events\n * (streaming deltas, tool calls, etc.) and the TuiRenderer subscribes to\n * update the UI accordingly.\n *\n * @example\n * ```typescript\n * const renderer = new TuiRenderer({\n * agent,\n * sessionManager,\n * version: \"0.8.2\",\n * sessionContext: { sessionFile: \"~/.maestro/agent/sessions/default.jsonl\" }\n * });\n *\n * await renderer.initialize();\n * renderer.setInputCallback(async (text) => {\n * await agent.prompt(text);\n * });\n *\n * await renderer.run();\n * ```\n */\nimport { SmartAutocompleteProvider } from \"./smart-autocomplete-provider.js\";\n\nexport class TuiRenderer {\n\tprivate ui: TUI;\n\tprivate startupContainer: Container;\n\tprivate headerContainer: Container;\n\tprivate chatContainer: Container;\n\tprivate scrollContainer: ScrollContainer;\n\tprivate statusContainer: Container;\n\tprivate editor: CustomEditor;\n\tprivate editorContainer: Container; // Container to swap between editor and selector\n\tprivate queuedInputPreview: Text;\n\tprivate footer: FooterComponent;\n\tprivate agent: Agent;\n\tprivate sessionManager: SessionManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate loaderView: LoaderView;\n\tprivate inputController!: InputController;\n\n\t// Tool execution tracking: toolCallId -> component\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate explicitApiKey?: string;\n\tprivate telemetryStatus = getTelemetryStatus();\n\tprivate trainingStatus = getTrainingStatus();\n\tprivate currentModelMetadata?: SessionModelMetadata;\n\tprivate perfCollector = new SessionPerfCollector();\n\n\t// Track if this is the first user message (to skip spacer)\n\t// Welcome animation shown before first interaction\n\tprivate welcomeAnimation: WelcomeAnimation | null = null;\n\n\tprivate readonly idleFooterHint =\n\t\t\"Try /help for commands or /tools for status\";\n\tprivate readonly workingFooterHint = \"Working… press esc to interrupt\";\n\tprivate autoCompactionMonitor: AutoCompactionMonitor;\n\tprivate autoRetryController: AutoRetryController;\n\tprivate sessionRecoveryManager: SessionRecoveryManager;\n\tprivate testVerificationService: AutoVerifyService | null = null;\n\tprivate hookUiController!: HookUiController;\n\tprivate delegatingHandlers!: DelegatingCommandHandlerMap;\n\tprivate footerHintsController!: FooterHintsController;\n\tprivate toolOutputView: ToolOutputView;\n\tprivate commandPaletteView?: CommandPaletteView;\n\tprivate slashCommands: SlashCommand[] = [];\n\tprivate commandEntries: CommandEntry[] = [];\n\tprivate recentCommands: string[] = [];\n\tprivate favoriteCommands = new Set<string>();\n\tprivate defaultAutocompleteProvider!: SmartAutocompleteProvider;\n\tprivate slashHintBar!: SlashHintBar;\n\tprivate slashCommandMatcher!: SlashCommandMatcher;\n\tprivate slashCycleState = new SlashCycleState();\n\tprivate planView: PlanView;\n\tprivate planController?: PlanController;\n\tprivate sessionView: SessionView;\n\tprivate sessionStateController!: SessionStateController;\n\tprivate importExportView?: ImportExportView;\n\tprivate runCommandView?: RunCommandView;\n\tprivate bashModeView?: BashModeView;\n\tprivate gitView: GitView;\n\tprivate toolStatusView?: ToolStatusView;\n\tprivate diagnosticsView?: DiagnosticsView;\n\tprivate telemetryView?: TelemetryView;\n\tprivate ollamaView?: OllamaView;\n\tprivate lspView?: LspView;\n\tprivate fileSearchView?: FileSearchView;\n\tprivate conversationCompactor: ConversationCompactor;\n\tprivate messageView: MessageView;\n\tprivate feedbackView?: FeedbackView;\n\tprivate aboutView?: AboutView;\n\tprivate changelogView?: ChangelogView;\n\tprivate hotkeysView?: HotkeysView;\n\tprivate trainingView?: TrainingView;\n\tprivate infoView?: InfoView;\n\tprivate thinkingSelectorView?: ThinkingSelectorView;\n\tprivate themeSelectorView?: ThemeSelectorView;\n\tprivate modelSelectorView?: ModelSelectorView;\n\tprivate reportSelectorView?: ReportSelectorView;\n\tprivate treeSelectorView?: TreeSelectorView;\n\tprivate oauthFlowController!: OAuthFlowController;\n\tprivate queueModeSelectorView?: QueueModeSelectorView;\n\tprivate userMessageSelectorView?: UserMessageSelectorView;\n\tprivate notificationView: NotificationView;\n\tprivate backgroundTasksController: BackgroundTasksController;\n\tprivate mcpEventsController: McpEventsController;\n\tprivate resizeHandler: () => void;\n\tprivate updateView?: UpdateView;\n\tprivate configView?: ConfigView;\n\tprivate costView?: CostView;\n\tprivate quotaView?: QuotaView;\n\tprivate runController: RunController;\n\tprivate agentEventBridge!: AgentEventBridge;\n\tprivate readonly focusEditor = (): void => {\n\t\tthis.ui.setFocus(this.editor);\n\t};\n\tprivate agentEventRouter!: AgentEventRouter;\n\tprivate sessionContext = new SessionContext();\n\tprivate skillsController!: SkillsController;\n\tprivate historyController!: HistoryController;\n\tprivate attachmentController!: AttachmentController;\n\tprivate queueController: QueueController;\n\tprivate editingQueuedFollowUp: QueuedPrompt | null = null;\n\tprivate queuePanelController?: QueuePanelController;\n\t// Default to soft deduplication so repeated streamed lines don't appear in the TUI.\n\t// Users can still override via /clean or env/UI state.\n\tprivate cleanMode: CleanMode = \"soft\";\n\tprivate uiState: UiState = {};\n\tprivate footerMode: FooterMode = \"ensemble\";\n\tprivate reducedMotion = false;\n\tprivate zenMode = false;\n\tprivate hideThinkingBlocks = false;\n\tprivate readonly minimalMode = checkMinimalMode();\n\tprivate isAgentRunning = false;\n\tprivate approvalController?: ApprovalController;\n\tprivate clientToolController?: ClientToolController;\n\tprivate toolRetryController?: ToolRetryController;\n\tprivate approvalService: ActionApprovalService;\n\tprivate toolRetryService: ToolRetryService;\n\tprivate modelScope: RegisteredModel[] = [];\n\tprivate startupChangelog?: string | null;\n\tprivate startupChangelogSummary?: string | null;\n\tprivate updateNotice?: UpdateCheckResult | null;\n\tprivate modalManager: ModalManager;\n\tprivate viewportController!: ViewportController;\n\tprivate terminalCapabilities: TerminalCapabilities =\n\t\tgetTerminalCapabilities();\n\tprivate terminalFeatures = detectTerminalFeatures();\n\tprivate lowBandwidthConfig: LowBandwidthConfig = getLowBandwidthConfig();\n\tprivate interruptController!: InterruptController;\n\tprivate pasteHandler!: PasteHandler;\n\tprivate miscHandlers!: MiscHandlers;\n\tprivate uiStateController!: UiStateController;\n\tprivate quickSettingsController!: QuickSettingsController;\n\tprivate branchController?: BranchController;\n\tprivate clearController?: ClearController;\n\tprivate compactionController!: CompactionController;\n\tprivate slashHintController!: SlashHintController;\n\tprivate customCommandsController?: CustomCommandsController;\n\tprivate lastKeybindingIssueSummary: string | null = null;\n\n\tconstructor(\n\t\tagent: Agent,\n\t\tsessionManager: SessionManager,\n\t\tversion: string,\n\t\tapprovalService: ActionApprovalService,\n\t\ttoolRetryService: ToolRetryService,\n\t\texplicitApiKey?: string,\n\t\toptions: {\n\t\t\tclientToolService?: TuiClientToolService;\n\t\t\tmodelScope?: RegisteredModel[];\n\t\t\tstartupChangelog?: string | null;\n\t\t\tstartupChangelogSummary?: string | null;\n\t\t\tupdateNotice?: UpdateCheckResult | null;\n\t\t\tretryConfig?: import(\"../config/toml-config.js\").RetryConfig;\n\t\t} = {},\n\t) {\n\t\tconst initialPrefs = loadInitialTuiRendererPreferences();\n\t\tthis.uiState = initialPrefs.uiState;\n\t\tconst initialSteeringMode: QueueMode = initialPrefs.initialSteeringMode;\n\t\tconst initialFollowUpMode: QueueMode = initialPrefs.initialFollowUpMode;\n\t\tif (initialPrefs.cleanMode) {\n\t\t\tthis.cleanMode = initialPrefs.cleanMode;\n\t\t}\n\t\tif (initialPrefs.footerMode) {\n\t\t\tthis.footerMode = initialPrefs.footerMode;\n\t\t}\n\t\tthis.reducedMotion = initialPrefs.reducedMotion ?? false;\n\t\tif (typeof initialPrefs.zenMode === \"boolean\") {\n\t\t\tthis.zenMode = initialPrefs.zenMode;\n\t\t}\n\t\tif (typeof initialPrefs.hideThinkingBlocks === \"boolean\") {\n\t\t\tthis.hideThinkingBlocks = initialPrefs.hideThinkingBlocks;\n\t\t}\n\n\t\t// Initialize UI state controller with loaded preferences\n\t\tthis.uiStateController = createUiStateController({\n\t\t\tinitialCleanMode: this.cleanMode,\n\t\t\tinitialFooterMode: this.footerMode,\n\t\t\tinitialZenMode: this.zenMode,\n\t\t\tinitialHideThinkingBlocks: this.hideThinkingBlocks,\n\t\t\tcallbacks: {\n\t\t\t\tonZenModeChange: (enabled) => {\n\t\t\t\t\tthis.zenMode = enabled;\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tthis.headerContainer?.clear();\n\t\t\t\t\t\tthis.footer?.setMode(\"solo\");\n\t\t\t\t\t\tif (this.welcomeAnimation) {\n\t\t\t\t\t\t\tthis.dismissWelcomeAnimation();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderHeader();\n\t\t\t\t\t\t// Restore footer mode from state if zen owned it\n\t\t\t\t\t\tconst currentFooterMode = this.footer?.getMode();\n\t\t\t\t\t\tif (currentFooterMode === \"solo\") {\n\t\t\t\t\t\t\tthis.footer?.setMode(this.footerMode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewportController.markHeaderDirty();\n\t\t\t\t\tthis.viewportController.markFooterDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t\tonFooterModeChange: (mode) => {\n\t\t\t\t\tthis.footerMode = mode;\n\t\t\t\t\tthis.footer?.setMode(mode);\n\t\t\t\t\tif (!this.isAgentRunning) {\n\t\t\t\t\t\tthis.refreshFooterHint();\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewportController.markFooterDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t\tonHideThinkingBlocksChange: (hidden) => {\n\t\t\t\t\tthis.hideThinkingBlocks = hidden;\n\t\t\t\t},\n\t\t\t\trequestRender: () => {\n\t\t\t\t\tthis.ui?.requestRender();\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tthis.recentCommands = initialPrefs.recentCommands;\n\t\tthis.favoriteCommands = initialPrefs.favoriteCommands;\n\t\tthis.agent = agent;\n\t\tthis.agent.setSteeringMode(initialSteeringMode === \"all\" ? \"all\" : \"one\");\n\t\tthis.agent.setFollowUpMode(initialFollowUpMode === \"all\" ? \"all\" : \"one\");\n\t\tthis.sessionManager = sessionManager;\n\t\tthis.version = version;\n\t\tthis.explicitApiKey = explicitApiKey;\n\t\tthis.modelScope = options.modelScope ?? [];\n\t\tthis.autoCompactionMonitor = new AutoCompactionMonitor({\n\t\t\tonCompactionRecommended: (stats) => {\n\t\t\t\tthis.compactionController?.handleAutoCompactionRecommendation(stats);\n\t\t\t},\n\t\t});\n\t\tthis.autoRetryController = createAutoRetryController();\n\t\t// Load retry config if available\n\t\tif (options.retryConfig) {\n\t\t\tthis.autoRetryController.loadFromRetryConfig(options.retryConfig);\n\t\t}\n\t\tthis.sessionRecoveryManager = new SessionRecoveryManager();\n\t\tthis.startupChangelog = options.startupChangelog;\n\t\tthis.startupChangelogSummary = options.startupChangelogSummary;\n\t\tthis.updateNotice = options.updateNotice;\n\t\tthis.ui = new TUI(new ProcessTerminal(), this.terminalFeatures);\n\t\tthis.miscHandlers = createMiscHandlers({\n\t\t\tdeps: {\n\t\t\t\tui: this.ui,\n\t\t\t\tgetNotificationView: () => this.notificationView,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tgetTelemetryStatus: () => this.telemetryStatus,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t},\n\t\t});\n\t\tthis.autoRetryController.setEventListener((event) => {\n\t\t\tthis.miscHandlers.handleAutoRetryEvent(event);\n\t\t});\n\t\t// Initialize test verification with auto-test hooks\n\t\tthis.testVerificationService = registerTestVerificationHooks(\n\t\t\tprocess.cwd(),\n\t\t\t{\n\t\t\t\tonTestComplete: (result) => {\n\t\t\t\t\tthis.miscHandlers.handleTestVerificationResult(result);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tthis.configureRenderThrottle();\n\t\tthis.startupContainer = new Container();\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\t// Wrap chatContainer in ScrollContainer for viewport scrolling\n\t\tthis.scrollContainer = new ScrollContainer(this.chatContainer, {\n\t\t\tstickyScroll: true,\n\t\t\tshowIndicator: true,\n\t\t\t// We dynamically compute viewport height based on non-chat components.\n\t\t\treservedLines: 0,\n\t\t\tonScroll: () => this.ui.requestRender(),\n\t\t});\n\t\tthis.statusContainer = new Container();\n\t\tthis.editor = new CustomEditor();\n\t\tattachEditorBindings({\n\t\t\teditor: this.editor,\n\t\t\tscrollContainer: this.scrollContainer,\n\t\t\tui: this.ui,\n\t\t\thandlers: {\n\t\t\t\thandleLargePaste: (event) => this.pasteHandler.handleLargePaste(event),\n\t\t\t\thandlePasteImage: () =>\n\t\t\t\t\tthis.attachmentController.handleClipboardImagePaste(),\n\t\t\t\thandleTyping: () => this.handleEditorTyping(),\n\t\t\t\tcycleModel: () => this.quickSettingsController.cycleModel(),\n\t\t\t\ttoggleToolOutputs: () =>\n\t\t\t\t\tthis.quickSettingsController.toggleToolOutputs(),\n\t\t\t\ttoggleThinkingBlocks: () =>\n\t\t\t\t\tthis.quickSettingsController.toggleThinkingBlocks(),\n\t\t\t\topenExternalEditor: () => this.miscHandlers.handleExternalEditor(),\n\t\t\t\tsuspend: () => this.miscHandlers.handleCtrlZ(),\n\t\t\t\thandleSlashCycle: (reverse) =>\n\t\t\t\t\tthis.slashHintController?.handleSlashCycle(reverse) ?? false,\n\t\t\t\tcycleThinkingLevel: () =>\n\t\t\t\t\tthis.quickSettingsController.cycleThinkingLevel(),\n\t\t\t},\n\t\t});\n\t\tthis.editorContainer = new Container(); // Container to hold editor or selector\n\t\tthis.slashHintBar = new SlashHintBar();\n\t\tthis.queuedInputPreview = new Text(\"\", 1, 0);\n\t\tthis.editorContainer.addChild(this.slashHintBar);\n\t\tthis.editorContainer.addChild(this.queuedInputPreview);\n\t\tthis.editorContainer.addChild(this.editor); // Start with editor\n\t\tthis.modalManager = new ModalManager(\n\t\t\tthis.editorContainer,\n\t\t\tthis.ui,\n\t\t\tthis.editor,\n\t\t\t{\n\t\t\t\tonLayoutChange: () => {\n\t\t\t\t\tthis.viewportController.markEditorDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tthis.footer = new FooterComponent(agent.state, this.footerMode);\n\t\tthis.footer.startBranchTracking(() => this.ui.requestRender());\n\t\tthis.viewportController = createViewportController({\n\t\t\tdeps: {\n\t\t\t\theaderContainer: this.headerContainer,\n\t\t\t\tstartupContainer: this.startupContainer,\n\t\t\t\tstatusContainer: this.statusContainer,\n\t\t\t\teditorContainer: this.editorContainer,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tscrollContainer: this.scrollContainer,\n\t\t\t\tgetColumns: () => process.stdout.columns ?? 80,\n\t\t\t\tgetRows: () => process.stdout.rows ?? 24,\n\t\t\t},\n\t\t});\n\t\tthis.notificationView = new NotificationView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tfooter: this.footer,\n\t\t});\n\t\tthis.miscHandlers.updateTerminalTitle();\n\n\t\t// Initialize extracted controllers (attachment → skills → history)\n\t\tthis.attachmentController = createAttachmentController({\n\t\t\tdeps: {\n\t\t\t\tinsertEditorText: (text) => this.editor.insertText(text),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\n\t\tthis.skillsController = createSkillsController({\n\t\t\tdeps: {\n\t\t\t\tinjectMessage: (message) => this.agent.injectMessage(message),\n\t\t\t\tgetMessages: () => this.agent.state.messages,\n\t\t\t\tcwd: () => process.cwd(),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tpushCommandOutput: (text) => this.pushCommandOutput(text),\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\t},\n\t\t});\n\n\t\tthis.hookUiController = createHookUiController({\n\t\t\tdeps: {\n\t\t\t\tui: this.ui,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tmodalManager: this.modalManager,\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tcreateHookInputModal: (opts) => new HookInputModal(opts),\n\t\t\t\tcreateCommandContext: (params) => this.createCommandContext(params),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\tthis.hookUiController.initializeGlobalContext();\n\n\t\tthis.delegatingHandlers = createDelegatingCommandHandlers({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\taddMarkdown: (content) =>\n\t\t\t\tthis.chatContainer.addChild(new Markdown(content)),\n\t\t\taddSpacedText: (content) => {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tthis.chatContainer.addChild(new Text(content, 1, 0));\n\t\t\t},\n\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t});\n\n\t\t// Now that all core layout containers exist, compute the initial viewport\n\t\t// sizing and wire resize handling.\n\t\tthis.refreshTerminalCapabilities();\n\t\tthis.resizeHandler = () => this.refreshTerminalCapabilities();\n\t\tprocess.stdout.on(\"resize\", this.resizeHandler);\n\n\t\tthis.queueController = createQueueController({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\teditor: this.editor,\n\t\t\tinitialSteeringMode: initialSteeringMode,\n\t\t\tinitialFollowUpMode: initialFollowUpMode,\n\t\t\trefreshQueuePanel: () => this.queuePanelController?.refreshPanel(),\n\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\trequestRender: () => {\n\t\t\t\tthis.updateQueuedInputPreview();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\tpersistUiState: (state) => this.persistUiState(state),\n\t\t});\n\t\tthis.updateQueuedInputPreview();\n\n\t\tthis.oauthFlowController = createOAuthFlowController({\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t});\n\n\t\tthis.inputController = createInputController({\n\t\t\tdeps: {\n\t\t\t\teditor: this.editor,\n\t\t\t\tgetPasteHandler: () => this.pasteHandler,\n\t\t\t\tisBashModeActive: () => this.bashModeView?.isActive() ?? false,\n\t\t\t\tgetBashModeView: () => this.getBashModeView(),\n\t\t\t\tgetInterruptController: () => this.interruptController,\n\t\t\t\tautoRetryController: this.autoRetryController,\n\t\t\t\tconsumeAttachments: (text) =>\n\t\t\t\t\tthis.attachmentController.consumeAttachments(text),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t\tstopRenderer: () => this.stop(),\n\t\t\t\texitProcess: (code) => process.exit(code ?? 0),\n\t\t\t},\n\t\t});\n\n\t\tthis.interruptController = createInterruptController({\n\t\t\tfooter: this.footer,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonInterrupt: (options) => this.inputController.notifyInterrupt(options),\n\t\t\trestoreQueuedPrompts: (options) => {\n\t\t\t\tvoid this.handleInterruptedQueue(options);\n\t\t\t},\n\t\t\thasQueuedSteering: () =>\n\t\t\t\tthis.queueController.getQueuedSteeringCount() > 0,\n\t\t\tgetWorkingHint: () => this.buildWorkingFooterHint(),\n\t\t\tisMinimalMode: () => this.isMinimalMode(),\n\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\n\t\tthis.backgroundTasksController = createBackgroundTasksController({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\n\t\tthis.footerHintsController = createFooterHintsController({\n\t\t\tdeps: {\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t\tidleFooterHint: this.idleFooterHint,\n\t\t\t\tisReducedMotion: () => this.reducedMotion,\n\t\t\t\tisMinimalMode: () => this.minimalMode,\n\t\t\t\tgetSandboxMode: () =>\n\t\t\t\t\tthis.agent.state.sandboxMode ?? process.env.MAESTRO_SANDBOX ?? null,\n\t\t\t\tisSandboxActive: () =>\n\t\t\t\t\tBoolean(this.agent.state.sandboxEnabled) ||\n\t\t\t\t\tBoolean(this.agent.state.sandbox),\n\t\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t\t\tgetQueueData: () => ({\n\t\t\t\t\tfollowUpMode: this.queueController.getFollowUpMode(),\n\t\t\t\t\tqueuedCount: this.queueController.getQueuedCount(),\n\t\t\t\t\thasQueue: this.queueController.hasQueue(),\n\t\t\t\t\tqueueHint: this.queueController.buildQueueHint(),\n\t\t\t\t}),\n\t\t\t\tgetRunningHint: () => this.buildWorkingFooterHint(),\n\t\t\t\tgetThinkingLevel: () => this.agent.state.thinkingLevel,\n\t\t\t\tgetUnseenAlertCount: () => this.footer.getUnseenAlertCount(),\n\t\t\t\tgetHookStatusHints: () => this.hookUiController.getHookStatusHints(),\n\t\t\t\tgetActiveToast: () => this.footer.getActiveToast(),\n\t\t\t\tgetBackgroundCounts: () => this.backgroundTasksController.getCounts(),\n\t\t\t\tisCompacting: () => this.compactionController?.isCompacting() ?? false,\n\t\t\t\thasPendingPaste: () => this.pasteHandler?.hasPending() ?? false,\n\t\t\t\tisBashModeActive: () => this.bashModeView?.isActive() ?? false,\n\t\t\t\tsetRuntimeBadges: (badges) =>\n\t\t\t\t\tthis.footer.setRuntimeBadges(badges as string[]),\n\t\t\t\tsetHints: (hints) => this.footer.setHints(hints),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowToast: (message, tone) =>\n\t\t\t\t\tthis.notificationView.showToast(message, tone),\n\t\t\t\tsetToast: (message, tone) => this.footer.setToast(message, tone),\n\t\t\t},\n\t\t});\n\t\tthis.footerHintsController.surfaceStartupWarnings();\n\t\tthis.approvalController = createApprovalController({\n\t\t\tapprovalService,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\teditorContainer: this.editorContainer,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\t\tif (options.clientToolService) {\n\t\t\tthis.clientToolController = createClientToolController({\n\t\t\t\tclientToolService: options.clientToolService,\n\t\t\t\tui: this.ui,\n\t\t\t\teditor: this.editor,\n\t\t\t\teditorContainer: this.editorContainer,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tonPendingStatusChange: (toolCallId, status) => {\n\t\t\t\t\tconst component = this.pendingTools.get(toolCallId);\n\t\t\t\t\tcomponent?.setPendingStatus(status);\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tthis.toolRetryController = createToolRetryController({\n\t\t\ttoolRetryService,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\teditorContainer: this.editorContainer,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\t\tthis.approvalService = approvalService;\n\t\tthis.toolRetryService = toolRetryService;\n\t\tthis.loaderView = createLoaderView({\n\t\t\tui: this.ui,\n\t\t\tstatusContainer: this.statusContainer,\n\t\t\tfooter: this.footer,\n\t\t\tlowColor: this.terminalFeatures.lowColor,\n\t\t\tlowUnicode: this.terminalFeatures.lowUnicode,\n\t\t\tdisableAnimations: this.shouldDisableAnimations(),\n\t\t\tonLayoutChange: () => {\n\t\t\t\tthis.viewportController.markStatusDirty();\n\t\t\t\tthis.updateScrollViewport();\n\t\t\t},\n\t\t});\n\t\tconst planSubsystem = createPlanSubsystem({\n\t\t\tfilePath: getTodoStorePath(),\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsetPlanHint: (hint) => {\n\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t},\n\t\t\tonStoreChanged: (store) => this.planController?.handleStoreChanged(store),\n\t\t});\n\t\tthis.planView = planSubsystem.planView;\n\t\tthis.planController = planSubsystem.planController;\n\t\tthis.gitView = new GitView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tshowToast: (message, tone) =>\n\t\t\t\tthis.notificationView.showToast(message, tone),\n\t\t\tmodalManager: this.modalManager,\n\t\t});\n\t\tthis.runController = new RunController({\n\t\t\tloaderView: this.loaderView,\n\t\t\tui: this.ui,\n\t\t\tsetEditorDisabled: (_disabled) => {\n\t\t\t\tthis.editor.disableSubmit = false;\n\t\t\t},\n\t\t\tfocusEditor: () => this.focusEditor(),\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\tstopRenderer: () => this.stop(),\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\tnotifyFileChanges: () => this.gitView.notifyFileChanges(),\n\t\t\tinMinimalMode: () => this.isMinimalMode(),\n\t\t});\n\t\tthis.ui.setInterruptHandler(() => {\n\t\t\tvoid this.handleCtrlC();\n\t\t});\n\t\tconst sessionSubsystem = createSessionSubsystem({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\tapplyLoadedSessionContext: () => this.applyLoadedSessionContext(),\n\t\t\tonSessionLoaded: (sessionInfo) => {\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.notificationView.showInfo(formatLoadedSessionToast(sessionInfo));\n\t\t\t},\n\t\t});\n\t\tthis.sessionView = sessionSubsystem.sessionView;\n\n\t\t// History controller uses sessionContext stores\n\t\tthis.historyController = createHistoryController({\n\t\t\tdeps: { sessionContext: this.sessionContext },\n\t\t\tcallbacks: {\n\t\t\t\tpushCommandOutput: (text) => this.pushCommandOutput(text),\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t},\n\t\t});\n\n\t\t// Initialize paste handler\n\t\tthis.pasteHandler = new PasteHandler({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\teditor: this.editor,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\t\tconst toolingViews = createToolingViews({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tuiStateCompactTools: this.uiState.compactTools,\n\t\t\tpendingTools: this.pendingTools,\n\t\t\tlowBandwidth: this.lowBandwidthConfig,\n\t\t\tdisableAnimations: this.shouldDisableAnimations(),\n\t\t\tgetCleanMode: () => this.cleanMode,\n\t\t\tgetHideThinkingBlocks: () => this.hideThinkingBlocks,\n\t\t\tloaderView: this.loaderView,\n\t\t\trunController: this.runController,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\textractText: (message) => this.extractTextFromAppMessage(message),\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\tclearPendingTools: () => this.pendingTools.clear(),\n\t\t\trefreshPlanHint: () => this.planView.syncHintWithStore(),\n\t\t\tonAssistantMessageEnd: (message) =>\n\t\t\t\tthis.autoRetryController.trackAssistantMessage(message),\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\tthis.toolOutputView = toolingViews.toolOutputView;\n\t\tthis.messageView = toolingViews.messageView;\n\t\tthis.agentEventRouter = toolingViews.agentEventRouter;\n\t\tthis.sessionStateController = createSessionStateController({\n\t\t\tdeps: {\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tsessionContext: this.sessionContext,\n\t\t\t\tsessionRecoveryManager: this.sessionRecoveryManager,\n\t\t\t\teditor: this.editor,\n\t\t\t\tmessageView: this.messageView,\n\t\t\t\ttoolOutputView: this.toolOutputView,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tscrollContainer: this.scrollContainer,\n\t\t\t\tstartupContainer: this.startupContainer,\n\t\t\t\tplanView: this.planView,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tclearActiveSkills: () => this.skillsController.clearActiveSkills(),\n\t\t\t\trunSessionEndHooks: (reason) =>\n\t\t\t\t\tapplySessionEndHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\treason,\n\t\t\t\t\t}),\n\t\t\t\trunSessionStartHooks: (source) =>\n\t\t\t\t\tapplySessionStartHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\t\tsetPlanHint: (hint) => {\n\t\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\t},\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t},\n\t\t});\n\n\t\tthis.agentEventBridge = createAgentEventBridge({\n\t\t\tdeps: {\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tsessionRecoveryManager: this.sessionRecoveryManager,\n\t\t\t\tautoRetryController: this.autoRetryController,\n\t\t\t\tinterruptController: this.interruptController,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tagentEventRouter: this.agentEventRouter,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tensureInitialized: () => this.init(),\n\t\t\t\thandleApprovalRequired: (request) =>\n\t\t\t\t\tthis.handleApprovalRequired(request),\n\t\t\t\thandleApprovalResolved: (request, decision) =>\n\t\t\t\t\tthis.handleApprovalResolved(request, decision),\n\t\t\t\thandleToolRetryRequired: (request) =>\n\t\t\t\t\tthis.handleToolRetryRequired(request),\n\t\t\t\thandleToolRetryResolved: (request, decision) =>\n\t\t\t\t\tthis.handleToolRetryResolved(request, decision),\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\tmaybeShowContextWarning: (stats) => this.maybeShowContextWarning(stats),\n\t\t\t\tsetCurrentModelMetadata: (metadata) => {\n\t\t\t\t\tthis.currentModelMetadata = metadata;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\t// Initialize quick settings controller for keyboard shortcuts\n\t\tthis.quickSettingsController = createQuickSettingsController({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tmodelScope: this.modelScope,\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tpersistUiState: () => this.persistUiState(),\n\t\t\t\trenderConversationView: () => this.renderConversationView(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\tgetToolOutputCompact: () => this.toolOutputView.isCompact(),\n\t\t\t\ttoggleToolOutputCompact: () => this.toolOutputView.toggleCompactMode(),\n\t\t\t\tgetHideThinkingBlocks: () => this.hideThinkingBlocks,\n\t\t\t\tsetHideThinkingBlocks: (hidden) => {\n\t\t\t\t\tthis.hideThinkingBlocks = hidden;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tthis.conversationCompactor = new ConversationCompactor({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tfooter: this.footer,\n\t\t\tidleHint: this.idleFooterHint,\n\t\t\ttoolComponents: this.toolOutputView.getTrackedComponents(),\n\t\t\trenderMessages: () => this.renderInitialMessages(this.agent.state),\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tgetPostKeepMessages: async (source, preservedMessages) => {\n\t\t\t\tconst restorationMessages =\n\t\t\t\t\tsource === \"compact\"\n\t\t\t\t\t\t? this.collectOrderedCompactionRestorationMessages(\n\t\t\t\t\t\t\t\tpreservedMessages,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: [];\n\t\t\t\tconst sessionStartMessages =\n\t\t\t\t\tawait collectPersistedSessionStartHookMessages({\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t});\n\t\t\t\treturn [...restorationMessages, ...sessionStartMessages];\n\t\t\t},\n\t\t});\n\t\tthis.compactionController = createCompactionController({\n\t\t\tdeps: {\n\t\t\t\tgetAgentState: () => this.agent.state,\n\t\t\t\tgetSessionId: () => this.sessionManager.getSessionId(),\n\t\t\t\tconversationCompactor: this.conversationCompactor,\n\t\t\t\tautoCompactionMonitor: this.autoCompactionMonitor,\n\t\t\t\tsessionContext: this.sessionContext,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowInfo: (msg) => this.notificationView.showInfo(msg),\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tsetContextWarningLevel: (level) => {\n\t\t\t\t\tthis.footerHintsController.setContextWarningLevel(level);\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tconst registry = buildTuiCommandRegistry({\n\t\t\tcwd: process.cwd(),\n\t\t\tregistryOptions: buildTuiCommandRegistryOptions({\n\t\t\t\tgetRunCommandView: () => this.getRunCommandView(),\n\t\t\t\tgetToolStatusView: () => this.getToolStatusView(),\n\t\t\t\tsessionView: this.sessionView,\n\t\t\t\tgetClearController: () => this.getClearController(),\n\t\t\t\tgetDiagnosticsView: () => this.getDiagnosticsView(),\n\t\t\t\tplanController: this.planController,\n\t\t\t\tgitView: this.gitView,\n\t\t\t\tbackgroundTasksController: this.backgroundTasksController,\n\t\t\t\tcompactionController: this.compactionController,\n\t\t\t\tgetCustomCommandsController: () => this.getCustomCommandsController(),\n\t\t\t\tgetBranchController: () => this.getBranchController(),\n\t\t\t\toauthFlowController: this.oauthFlowController,\n\t\t\t\tapprovalService: this.approvalService,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tui: this.ui,\n\t\t\t\tuiStateController: this.uiStateController,\n\t\t\t\tgetImportExportView: () => this.getImportExportView(),\n\t\t\t\tgetReportSelectorView: () => this.getReportSelectorView(),\n\t\t\t\tgetFeedbackView: () => this.getFeedbackView(),\n\t\t\t\tgetAboutView: () => this.getAboutView(),\n\t\t\t\tgetInfoView: () => this.getInfoView(),\n\t\t\t\tgetUpdateView: () => this.getUpdateView(),\n\t\t\t\tgetChangelogView: () => this.getChangelogView(),\n\t\t\t\tgetHotkeysView: () => this.getHotkeysView(),\n\t\t\t\tgetConfigView: () => this.getConfigView(),\n\t\t\t\tgetCostView: () => this.getCostView(),\n\t\t\t\tgetQuotaView: () => this.getQuotaView(),\n\t\t\t\tgetTelemetryView: () => this.getTelemetryView(),\n\t\t\t\tgetTrainingView: () => this.getTrainingView(),\n\t\t\t\tgetOllamaView: () => this.getOllamaView(),\n\t\t\t\tgetThinkingSelectorView: () => this.getThinkingSelectorView(),\n\t\t\t\tgetModelSelectorView: () => this.getModelSelectorView(),\n\t\t\t\tgetThemeSelectorView: () => this.getThemeSelectorView(),\n\t\t\t\tgetLspView: () => this.getLspView(),\n\t\t\t\tgetFileSearchView: () => this.getFileSearchView(),\n\t\t\t\tgetQueuePanelController: () => this.getQueuePanelController(),\n\t\t\t\tgetMessages: () => this.agent.state.messages,\n\t\t\t\tcreateCommandContext: (ctx) => this.createCommandContext(ctx),\n\t\t\t\thandleReviewCommand: (context) => this.handleReviewCommand(context),\n\t\t\t\thandleHistoryCommand: (context) =>\n\t\t\t\t\tthis.historyController.handleHistoryCommand(context),\n\t\t\t\thandleToolHistoryCommand: (context) =>\n\t\t\t\t\tthis.historyController.handleToolHistoryCommand(context),\n\t\t\t\thandleSkillsCommand: (context) =>\n\t\t\t\t\tthis.skillsController.handleSkillsCommand(context),\n\t\t\t\thandleEnhancedUndoCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleEnhancedUndoCommand(context),\n\t\t\t\thandleFooterCommand: (context) => this.handleFooterCommand(context),\n\t\t\t\thandleCompactToolsCommand: (rawInput) =>\n\t\t\t\t\tthis.handleCompactToolsCommand(rawInput),\n\t\t\t\thandleSteerCommand: (context) => this.handleSteerCommand(context),\n\t\t\t\thandleStatsCommand: (context) => this.handleStatsCommand(context),\n\t\t\t\thandleNewChatCommand: (context) =>\n\t\t\t\t\tthis.sessionStateController.handleNewChatCommand(context),\n\t\t\t\thandleTreeCommand: (_context) => this.getTreeSelectorView().show(),\n\t\t\t\thandleMcpCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleMcpCommand(context),\n\t\t\t\thandleComposerCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleComposerCommand(context),\n\t\t\t\thandleContextCommand: (context) => this.handleContextCommand(context),\n\t\t\t\thandleFrameworkCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleFrameworkCommand(context),\n\t\t\t\thandleGuardianCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleGuardianCommand(context),\n\t\t\t\thandleWorkflowCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleWorkflowCommand(context),\n\t\t\t\thandleChangesCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleChangesCommand(context),\n\t\t\t\thandleCheckpointCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleCheckpointCommand(context),\n\t\t\t\thandleMemoryCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleMemoryCommand(context),\n\t\t\t\thandleModeCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleModeCommand(context),\n\t\t\t\tcommandSuite: {\n\t\t\t\t\tgetUiState: () => ({\n\t\t\t\t\t\t...this.uiStateController.getState(),\n\t\t\t\t\t\tcompactTools: this.toolOutputView?.isCompact() ?? false,\n\t\t\t\t\t}),\n\t\t\t\t\tgetAuthState: () => this.getActualAuthState(),\n\t\t\t\t\thandleSessionRecoverCommand: (context) =>\n\t\t\t\t\t\tthis.sessionStateController.handleSessionRecoverCommand(context),\n\t\t\t\t\thandleSessionCleanupCommand: (context) => {\n\t\t\t\t\t\tconst result = this.sessionManager.pruneSessions();\n\t\t\t\t\t\tif (result.removed === 0) {\n\t\t\t\t\t\t\tcontext.showInfo(\"No sessions to prune.\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.showInfo(\n\t\t\t\t\t\t\t`Pruned ${result.removed} session(s).${result.errors > 0 ? ` ${result.errors} error(s).` : \"\"}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandleSourcesCommand: (context) =>\n\t\t\t\t\t\tthis.delegatingHandlers.handleSourcesCommand(context),\n\t\t\t\t\thandlePerfCommand: () => this.showPerfReport(),\n\t\t\t\t\thandleAuthSourceOfTruthCommand: (argumentText, showError, showInfo) =>\n\t\t\t\t\t\tthis.oauthFlowController.handleSourceOfTruthPolicyCommand(\n\t\t\t\t\t\t\targumentText,\n\t\t\t\t\t\t\tshowError,\n\t\t\t\t\t\t\tshowInfo,\n\t\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tonQuit: async () => {\n\t\t\t\t\tawait this.stop();\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t},\n\t\t\t}),\n\t\t\texecutePromptTemplate: (promptName, userArgumentText, context) => {\n\t\t\t\tconst combined = [promptName, userArgumentText]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\" \");\n\t\t\t\tconst syntheticContext: CommandExecutionContext = {\n\t\t\t\t\t...context,\n\t\t\t\t\targumentText: combined,\n\t\t\t\t};\n\t\t\t\tthis.getCustomCommandsController().handlePromptsCommand(\n\t\t\t\t\tsyntheticContext,\n\t\t\t\t);\n\t\t\t},\n\t\t\tlogDebug: (message, meta) => logger.debug(message, meta),\n\t\t});\n\t\tconst hookRegistry = this.hookUiController.buildHookCommandEntries(\n\t\t\tregistry.commands,\n\t\t);\n\t\tif (hookRegistry.commands.length > 0) {\n\t\t\tregistry.entries.push(...hookRegistry.entries);\n\t\t\tregistry.commands.push(...hookRegistry.commands);\n\t\t}\n\n\t\tthis.commandEntries = registry.entries;\n\t\tthis.slashCommands = registry.commands;\n\t\tthis.slashCommandMatcher = new SlashCommandMatcher(this.slashCommands);\n\t\tthis.slashHintController = createSlashHintController({\n\t\t\tdeps: {\n\t\t\t\tslashHintBar: this.slashHintBar,\n\t\t\t\tslashCommandMatcher: this.slashCommandMatcher,\n\t\t\t\tslashCycleState: this.slashCycleState,\n\t\t\t\tgetSlashCommands: () => this.slashCommands,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tisShowingAutocomplete: () => this.editor.isShowingAutocomplete(),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tpersistUiState: (extra) => this.persistUiState(extra),\n\t\t\t\trequestRender: () => {\n\t\t\t\t\t// Slash hint updates can change editorContainer height (0 ↔ 1–2 lines).\n\t\t\t\t\t// Keep the scroll viewport sized so we never spill into scrollback.\n\t\t\t\t\tthis.viewportController.markEditorDirty();\n\t\t\t\t\tthis.updateScrollViewport({ fast: true });\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t},\n\t\t\t},\n\t\t\tinitialRecentCommands: this.recentCommands,\n\t\t\tinitialFavoriteCommands: this.favoriteCommands,\n\t\t});\n\n\t\tconst autocompleteProvider = new SmartAutocompleteProvider(\n\t\t\tthis.slashCommands,\n\t\t\tprocess.cwd(),\n\t\t);\n\t\tthis.defaultAutocompleteProvider = autocompleteProvider;\n\t\tthis.editor.setAutocompleteProvider(autocompleteProvider);\n\n\t\t// Keep the chat viewport within the terminal viewport. We recompute on\n\t\t// editor changes (including paste/history/backspace) so wrapping changes\n\t\t// don't push the UI into scrollback for a frame.\n\t\tconst previousOnChange = this.editor.onChange;\n\t\tthis.editor.onChange = (text) => {\n\t\t\tpreviousOnChange?.(text);\n\t\t\tthis.viewportController.markEditorDirty();\n\t\t\tthis.updateScrollViewport({ fast: true });\n\t\t};\n\n\t\tnew EditorView({\n\t\t\teditor: this.editor,\n\t\t\tgetCommandEntries: () => this.commandEntries,\n\t\t\tonFirstInput: () => this.dismissWelcomeAnimation(),\n\t\t\tonCommandExecuted: (name) =>\n\t\t\t\tthis.slashHintController.recordCommandUsage(name),\n\t\t\tonSubmit: (text) => {\n\t\t\t\tif (this.isAgentRunning) {\n\t\t\t\t\tvoid this.handleSteerSubmit(text);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvoid this.inputController.handleTextSubmit(text);\n\t\t\t},\n\t\t\tonFollowUp: (text) => {\n\t\t\t\tvoid this.handleFollowUpSubmit(text);\n\t\t\t},\n\t\t\tshouldFollowUp: () => this.isAgentRunning,\n\t\t\tcanSubmitEmpty: () => this.attachmentController.hasPendingAttachments(),\n\t\t\tshouldInterrupt: () =>\n\t\t\t\tthis.isAgentRunning || this.interruptController.isArmed(),\n\t\t\tonInterrupt: () => this.inputController.handleInterruptRequest(),\n\t\t\tonKeepPartial: () => this.inputController.handleKeepPartialRequest(),\n\t\t\tonCtrlC: () => {\n\t\t\t\tvoid this.handleCtrlC();\n\t\t\t},\n\t\t\tonCtrlD: () => {\n\t\t\t\tvoid this.inputController.handleCtrlDExit();\n\t\t\t},\n\t\t\tshowCommandPalette: () =>\n\t\t\t\tthis.getCommandPaletteView().showCommandPalette(),\n\t\t\tshowFileSearch: () => this.getFileSearchView().showFileSearch(),\n\t\t\tonEditLastQueuedFollowUp: () => this.editLastQueuedFollowUp(),\n\t\t});\n\n\t\t// Set up MCP and agent profile event handlers for notifications\n\t\tthis.mcpEventsController = createMcpEventsController({\n\t\t\tnotificationView: this.notificationView,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\t}\n\n\tpublic async ensureContextBudgetBeforePrompt(): Promise<void> {\n\t\tawait this.compactionController.ensureContextBudgetBeforePrompt();\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tawait this.detectAndApplyTerminalTheme();\n\t\tthis.runConnectivityProbe().catch((error) => {\n\t\t\tconst msg =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Model connectivity probe failed.\";\n\t\t\tthis.notificationView.showError(msg);\n\t\t});\n\n\t\t// Setup UI layout\n\t\tthis.ui.addChild(this.headerContainer);\n\n\t\tif (this.zenMode) {\n\t\t\tthis.footer.setMode(\"solo\");\n\t\t} else {\n\t\t\tthis.renderHeader();\n\t\t}\n\n\t\t// Show welcome animation initially (can be disabled in minimal mode)\n\t\tif (!this.isMinimalMode() && !this.zenMode) {\n\t\t\tconst onboardingState = getProjectOnboardingState(process.cwd());\n\t\t\tthis.welcomeAnimation = new WelcomeAnimation(\n\t\t\t\t() => this.ui.requestRender(),\n\t\t\t\t{ animate: !this.shouldDisableAnimations() },\n\t\t\t);\n\t\t\tthis.welcomeAnimation.setProjectOnboarding(onboardingState);\n\t\t\tif (onboardingState.shouldShow) {\n\t\t\t\tmarkProjectOnboardingSeen(process.cwd());\n\t\t\t}\n\t\t\tthis.chatContainer.addChild(this.welcomeAnimation);\n\t\t}\n\n\t\tthis.ui.addChild(this.startupContainer);\n\t\t// Use scrollContainer instead of chatContainer directly for scrolling support\n\t\tthis.ui.addChild(this.scrollContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\n\t\t// Disable TUI's auto-clipping since ScrollContainer handles viewport\n\t\tthis.ui.setAutoClip(false);\n\t\t// Set initial viewport height\n\t\tthis.updateScrollViewport();\n\n\t\tthis.ui.addChild(new Spacer(1));\n\t\tthis.ui.addChild(this.editorContainer); // Use container that can hold editor or selector\n\t\tthis.refreshFooterHint();\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\t\tthis.renderStartupAnnouncementsBlock();\n\t\tthis.lastKeybindingIssueSummary = summarizeKeybindingConfigIssues(\n\t\t\tinspectKeybindingConfig(),\n\t\t);\n\t\tstartTuiKeybindingWatcher({\n\t\t\tonReload: (report) => this.handleKeybindingConfigReload(report),\n\t\t});\n\n\t\tthis.ui.start();\n\t\tthis.isInitialized = true;\n\t}\n\n\tprivate getImportExportView(): ImportExportView {\n\t\tthis.importExportView ??= new ImportExportView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tapplyLoadedSessionContext: () => this.applyLoadedSessionContext(),\n\t\t\trecordShareArtifact: (filePath) =>\n\t\t\t\tthis.sessionContext.recordShareArtifact(filePath),\n\t\t\tloadImportedSession: (sessionFile) =>\n\t\t\t\tthis.loadImportedSession(sessionFile),\n\t\t});\n\t\treturn this.importExportView;\n\t}\n\n\tprivate getRunCommandView(): RunCommandView {\n\t\tthis.runCommandView ??= new RunCommandView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.runCommandView;\n\t}\n\n\tprivate getToolStatusView(): ToolStatusView {\n\t\tthis.toolStatusView ??= new ToolStatusView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetTools: () => this.agent.state.tools,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.toolStatusView;\n\t}\n\n\tprivate getDiagnosticsView(): DiagnosticsView {\n\t\tthis.diagnosticsView ??= createDiagnosticsView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\ttelemetryStatus: this.telemetryStatus,\n\t\t\ttrainingStatus: this.trainingStatus,\n\t\t\tversion: this.version,\n\t\t\texplicitApiKey: this.explicitApiKey,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetCurrentModelMetadata: () => this.currentModelMetadata,\n\t\t\tgetPendingTools: () => this.pendingTools,\n\t\t\tgitView: this.gitView,\n\t\t\ttodoStorePath: getTodoStorePath(),\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t\tgetAlertCount: () => this.footer.getUnseenAlertCount(),\n\t\t});\n\t\treturn this.diagnosticsView;\n\t}\n\n\tprivate getBashModeView(): BashModeView {\n\t\tthis.bashModeView ??= new BashModeView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tonStateChange: () => this.refreshFooterHint(),\n\t\t\teditor: this.editor,\n\t\t\tdefaultAutocomplete: this.defaultAutocompleteProvider,\n\t\t});\n\t\treturn this.bashModeView;\n\t}\n\n\tprivate getFeedbackView(): FeedbackView {\n\t\tthis.feedbackView ??= new FeedbackView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgitView: this.gitView,\n\t\t\tversion: this.version,\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t});\n\t\treturn this.feedbackView;\n\t}\n\n\tprivate getAboutView(): AboutView {\n\t\tthis.aboutView ??= new AboutView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tgitView: this.gitView,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tversion: this.version,\n\t\t\ttelemetryStatus: () => this.miscHandlers.describeTelemetryStatus(),\n\t\t\totelStatus: () => getOpenTelemetryStatus(),\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t});\n\t\treturn this.aboutView;\n\t}\n\n\tprivate getChangelogView(): ChangelogView {\n\t\tthis.changelogView ??= new ChangelogView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.changelogView;\n\t}\n\n\tprivate getHotkeysView(): HotkeysView {\n\t\tthis.hotkeysView ??= new HotkeysView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t\treturn this.hotkeysView;\n\t}\n\n\tprivate getInfoView(): InfoView {\n\t\tthis.infoView ??= new InfoView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetSlashCommands: () => this.slashCommands,\n\t\t\tisInteractive: () => this.terminalCapabilities.isTTY,\n\t\t\tgetRecentCommands: () => this.recentCommands,\n\t\t\tgetFavoriteCommands: () => this.favoriteCommands,\n\t\t});\n\t\treturn this.infoView;\n\t}\n\n\tprivate getThinkingSelectorView(): ThinkingSelectorView {\n\t\tthis.thinkingSelectorView ??= new ThinkingSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.thinkingSelectorView;\n\t}\n\n\tprivate getThemeSelectorView(): ThemeSelectorView {\n\t\tthis.themeSelectorView ??= new ThemeSelectorView({\n\t\t\tcurrentTheme: () => getCurrentThemeName(),\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tonThemeChange: () => this.ui.requestRender(),\n\t\t});\n\t\treturn this.themeSelectorView;\n\t}\n\n\tprivate getModelSelectorView(): ModelSelectorView {\n\t\tthis.modelSelectorView ??= new ModelSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tmodelScope: this.modelScope,\n\t\t});\n\t\treturn this.modelSelectorView;\n\t}\n\n\tprivate getReportSelectorView(): ReportSelectorView {\n\t\tthis.reportSelectorView ??= new ReportSelectorView({\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tonSelect: (type) => {\n\t\t\t\tif (type === \"bug\") {\n\t\t\t\t\tthis.getFeedbackView().handleBugCommand();\n\t\t\t\t} else {\n\t\t\t\t\tthis.getFeedbackView().handleFeedbackCommand();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn this.reportSelectorView;\n\t}\n\n\tprivate getUpdateView(): UpdateView {\n\t\tthis.updateView ??= new UpdateView({\n\t\t\tcurrentVersion: this.version,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.updateView;\n\t}\n\n\tprivate getConfigView(): ConfigView {\n\t\tthis.configView ??= new ConfigView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.configView;\n\t}\n\n\tprivate getCostView(): CostView {\n\t\tthis.costView ??= new CostView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.costView;\n\t}\n\n\tprivate getQuotaView(): QuotaView {\n\t\tthis.quotaView ??= new QuotaView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tgetSessionTokenUsage: () => {\n\t\t\t\tconst stats = calculateFooterStats(this.agent.state);\n\t\t\t\treturn stats.totalInput + stats.totalOutput;\n\t\t\t},\n\t\t});\n\t\treturn this.quotaView;\n\t}\n\n\tprivate getTelemetryView(): TelemetryView {\n\t\tthis.telemetryView ??= new TelemetryView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tonStatusChanged: (status) => {\n\t\t\t\tthis.telemetryStatus = status;\n\t\t\t\tthis.diagnosticsView?.setTelemetryStatus(status);\n\t\t\t},\n\t\t});\n\t\treturn this.telemetryView;\n\t}\n\n\tprivate getTrainingView(): TrainingView {\n\t\tthis.trainingView ??= new TrainingView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tonStatusChanged: (status) => {\n\t\t\t\tthis.trainingStatus = status;\n\t\t\t\tthis.diagnosticsView?.setTrainingStatus(status);\n\t\t\t},\n\t\t});\n\t\treturn this.trainingView;\n\t}\n\n\tprivate getOllamaView(): OllamaView {\n\t\tthis.ollamaView ??= new OllamaView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tshowErrorMessage: (message) => this.notificationView.showError(message),\n\t\t\tgetRegisteredModels: () => getRegisteredModels(),\n\t\t\tonUseModel: (model) => {\n\t\t\t\tthis.agent.setModel(model);\n\t\t\t\tthis.sessionManager.saveModelChange(\n\t\t\t\t\t`${model.provider}/${model.id}`,\n\t\t\t\t\ttoSessionModelMetadata(model),\n\t\t\t\t);\n\t\t\t\tthis.notificationView.showToast(`Switched to ${model.id}`, \"success\");\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.ollamaView;\n\t}\n\n\tprivate getLspView(): LspView {\n\t\tthis.lspView ??= new LspView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.lspView;\n\t}\n\n\tprivate getFileSearchView(): FileSearchView {\n\t\tthis.fileSearchView ??= new FileSearchView({\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.fileSearchView;\n\t}\n\n\tprivate getCommandPaletteView(): CommandPaletteView {\n\t\tthis.commandPaletteView ??= new CommandPaletteView({\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tgetCommands: () => this.slashCommands,\n\t\t\tgetRecentCommands: () =>\n\t\t\t\tthis.slashHintController?.getRecentCommands() ?? this.recentCommands,\n\t\t\tgetFavoriteCommands: () =>\n\t\t\t\tthis.slashHintController?.getFavoriteCommands() ??\n\t\t\t\tthis.favoriteCommands,\n\t\t\tonToggleFavorite: (name) =>\n\t\t\t\tthis.slashHintController?.toggleFavoriteCommand(name),\n\t\t});\n\t\treturn this.commandPaletteView;\n\t}\n\n\tprivate getUserMessageSelectorView(): UserMessageSelectorView {\n\t\tthis.userMessageSelectorView ??= new UserMessageSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonBranchCreated: () => {\n\t\t\t\t// Complete UI cleanup after branching (same as resetConversation)\n\t\t\t\tthis.sessionContext.resetArtifacts();\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.scrollContainer.clearHistory();\n\t\t\t\tthis.startupContainer.clear();\n\t\t\t\tthis.planView.syncHintWithStore();\n\t\t\t\tthis.footerHintsController.planHint = null;\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.userMessageSelectorView;\n\t}\n\n\tprivate getTreeSelectorView(): TreeSelectorView {\n\t\tthis.treeSelectorView ??= new TreeSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonNavigated: () => {\n\t\t\t\tthis.sessionContext.resetArtifacts();\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.scrollContainer.clearHistory();\n\t\t\t\tthis.startupContainer.clear();\n\t\t\t\tthis.planView.syncHintWithStore();\n\t\t\t\tthis.footerHintsController.planHint = null;\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.treeSelectorView;\n\t}\n\n\tprivate getQueueModeSelectorView(): QueueModeSelectorView {\n\t\tthis.queueModeSelectorView ??= new QueueModeSelectorView({\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonModeSelected: (kind, mode) => this.queueController.setMode(kind, mode),\n\t\t});\n\t\treturn this.queueModeSelectorView;\n\t}\n\n\tprivate getQueuePanelController(): QueuePanelController | null {\n\t\tif (!this.queueController.hasQueue()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.queuePanelController ??= new QueuePanelController({\n\t\t\tqueueController: this.queueController,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tqueueModeSelectorView: this.getQueueModeSelectorView(),\n\t\t\tchatContainer: this.chatContainer,\n\t\t});\n\t\treturn this.queuePanelController;\n\t}\n\n\tprivate getBranchController(): BranchController {\n\t\tthis.branchController ??= createBranchController({\n\t\t\tcallbacks: {\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t\tgetMessages: () => this.agent.state.messages ?? [],\n\t\t\t\tshowSelector: () => this.getUserMessageSelectorView().show(),\n\t\t\t\tcreateBranchedSession: (count) =>\n\t\t\t\t\tthis.sessionManager.createBranchedSession(this.agent.state, count),\n\t\t\t\tsetSessionFile: (path) => this.sessionManager.setSessionFile(path),\n\t\t\t\tresetConversation: (messages, seed, notification) =>\n\t\t\t\t\tthis.resetConversation(messages, seed, notification, {\n\t\t\t\t\t\tpreserveSession: true,\n\t\t\t\t\t}),\n\t\t\t\taddContent: (text) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\t\t\t},\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.branchController;\n\t}\n\n\tprivate getClearController(): ClearController {\n\t\tthis.clearController ??= createClearController({\n\t\t\tcallbacks: {\n\t\t\t\tabortAndWait: async () => {\n\t\t\t\t\tthis.agent.abort();\n\t\t\t\t\tawait this.agent.waitForIdle();\n\t\t\t\t},\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\tcancelQueuedPrompts: () =>\n\t\t\t\t\tthis.queueController.cancelAll({ silent: true }),\n\t\t\t\tstopLoader: () => this.loaderView.stop(),\n\t\t\t\tclearStatusContainer: () => this.statusContainer.clear(),\n\t\t\t\tresetAgent: () => this.agent.reset(),\n\t\t\t\tresetSession: () => this.sessionManager.reset(),\n\t\t\t\tresetArtifacts: () => this.sessionContext.resetArtifacts(),\n\t\t\t\tclearActiveSkills: () => this.skillsController.clearActiveSkills(),\n\t\t\t\tclearToolTracking: () => this.toolOutputView.clearTrackedComponents(),\n\t\t\t\tclearChatContainer: () => this.chatContainer.clear(),\n\t\t\t\tclearScrollHistory: () => this.scrollContainer.clearHistory(),\n\t\t\t\tclearStartupContainer: () => this.startupContainer.clear(),\n\t\t\t\tsyncPlanHint: () => this.planView.syncHintWithStore(),\n\t\t\t\tsetPlanHint: (hint) => {\n\t\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\t},\n\t\t\t\tclearEditor: () => this.editor.setText(\"\"),\n\t\t\t\tclearPendingTools: () => this.pendingTools.clear(),\n\t\t\t\tclearInterruptState: () => this.interruptController.clear(),\n\t\t\t\trenderInitialMessages: (state) => this.renderInitialMessages(state),\n\t\t\t\tgetAgentState: () => this.agent.state,\n\t\t\t\tupdateFooterState: (state) => this.footer.updateState(state),\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trunSessionEndHooks: (reason) =>\n\t\t\t\t\tapplySessionEndHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\treason,\n\t\t\t\t\t}),\n\t\t\t\trunSessionStartHooks: (source) =>\n\t\t\t\t\tapplySessionStartHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t}),\n\t\t\t\tshowSuccess: (msg) => this.notificationView.showToast(msg, \"success\"),\n\t\t\t\tshowError: (msg) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(msg, 1, 1));\n\t\t\t\t},\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.clearController;\n\t}\n\n\tprivate getCustomCommandsController(): CustomCommandsController {\n\t\tthis.customCommandsController ??= createCustomCommandsController({\n\t\t\tcwd: process.cwd(),\n\t\t\tcallbacks: {\n\t\t\t\taddContent: (text) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\t\t\t},\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tshowToast: (msg, type) => this.notificationView.showToast(msg, type),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.customCommandsController;\n\t}\n\n\tasync handleEvent(event: AgentEvent, state: AgentState): Promise<void> {\n\t\tthis.perfCollector.handleAgentEvent(event);\n\t\tawait this.agentEventBridge.handleEvent(event, state);\n\t\tthis.queueController.syncFromAgent();\n\t}\n\n\trenderInitialMessages(state: AgentState): void {\n\t\tthis.sessionStateController.renderInitialMessages(state);\n\t}\n\n\tprivate renderConversationView(): void {\n\t\tthis.sessionStateController.renderConversationView();\n\t}\n\n\tasync getUserInput(): Promise<PromptPayload> {\n\t\treturn this.inputController.getUserInput();\n\t}\n\n\tsetInterruptCallback(\n\t\tcallback: (options?: { keepPartial?: boolean }) => void,\n\t): void {\n\t\tthis.inputController.setInterruptCallback(callback);\n\t}\n\n\tprivate async handleCtrlC(): Promise<void> {\n\t\tconst bashModeView = this.bashModeView;\n\t\tif (bashModeView?.isCommandRunning()) {\n\t\t\tif (bashModeView.abortCurrentCommand()) {\n\t\t\t\tthis.runController.recordCtrlC();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tawait this.runController.handleCtrlC();\n\t}\n\n\tprivate renderHeader(): void {\n\t\tthis.headerContainer.clear();\n\t\tthis.viewportController.markHeaderDirty();\n\n\t\t// The full instruction panel is helpful but very tall; when it pushes the UI\n\t\t// into scrollback it becomes a major source of flicker (terminals can't update\n\t\t// scrollback, so we end up full-redrawing). Default to a compact header unless\n\t\t// we have enough vertical room.\n\t\tconst rows = process.stdout.rows ?? 24;\n\t\tconst showFullPanel = rows >= 40;\n\n\t\tif (showFullPanel) {\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\tthis.headerContainer.addChild(\n\t\t\t\tnew InstructionPanelComponent(this.version),\n\t\t\t);\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\treturn;\n\t\t}\n\n\t\tconst title =\n\t\t\tchalk.bold(`maestro v${this.version}`) + chalk.gray(\" · EvalOps\");\n\t\tconst hintParts = [\n\t\t\t`${chalk.gray(\"esc\")} interrupt`,\n\t\t\t`${chalk.gray(\"ctrl+c\")} clear`,\n\t\t\t`${chalk.gray(\n\t\t\t\tgetTuiKeybindingLabel(\"command-palette\").toLowerCase(),\n\t\t\t)} palette`,\n\t\t\t`${chalk.gray(\"/help\")} commands`,\n\t\t];\n\t\tconst hints = hintParts.join(chalk.gray(\" │ \"));\n\t\tthis.headerContainer.addChild(new Text(`${title}\\n${hints}`, 1, 0));\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t}\n\n\tprivate handleContextCommand(_context: CommandExecutionContext): void {\n\t\tconst contextView = new ContextView({\n\t\t\tstate: this.agent.state,\n\t\t\tonClose: () => this.modalManager.pop(),\n\t\t});\n\t\tthis.modalManager.push(contextView);\n\t}\n\n\tprivate updateQueuedInputPreview(): void {\n\t\tconst preview = this.queueController.buildInlinePreview();\n\t\tthis.queuedInputPreview.setText(preview ? chalk.dim(preview) : \"\");\n\t\tthis.viewportController.markEditorDirty();\n\t\tthis.updateScrollViewport();\n\t}\n\n\tprivate editLastQueuedFollowUp(): boolean {\n\t\tif (this.queueController.getQueuedFollowUpCount() === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst currentDraft = this.captureEditedQueuedFollowUpDraft();\n\t\tvoid this.rotateQueuedFollowUpForEditing(currentDraft);\n\t\treturn true;\n\t}\n\n\tprivate restoreQueuedPromptBatchToEditor(entries: QueuedPrompt[]): void {\n\t\tif (entries.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.editingQueuedFollowUp =\n\t\t\tentries.length === 1 && entries[0]?.kind === \"followUp\"\n\t\t\t\t? entries[0]\n\t\t\t\t: null;\n\t\tthis.attachmentController.clearPendingAttachments();\n\t\tif (entries.some((entry) => (entry.attachments?.length ?? 0) > 0)) {\n\t\t\tthis.attachmentController.restoreQueuedAttachments(entries);\n\t\t} else {\n\t\t\tthis.editor.setText(entries.map((entry) => entry.text).join(\"\\n\\n\"));\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate captureCurrentComposerDraftForQueueRestore(): QueuedPrompt | null {\n\t\tconst payload = this.attachmentController.snapshotAttachments(\n\t\t\tthis.editor.getText(),\n\t\t);\n\t\tconst hasText = payload.text.trim().length > 0;\n\t\tconst hasAttachments = (payload.attachments?.length ?? 0) > 0;\n\t\tif (!hasText && !hasAttachments) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tkind: \"prompt\",\n\t\t\ttext: payload.text,\n\t\t\tattachments: payload.attachments,\n\t\t};\n\t}\n\n\tprivate captureEditedQueuedFollowUpDraft(): QueuedPrompt | null {\n\t\tif (!this.editingQueuedFollowUp) {\n\t\t\treturn null;\n\t\t}\n\t\tconst payload = this.attachmentController.snapshotAttachments(\n\t\t\tthis.editor.getText(),\n\t\t);\n\t\tconst hasText = payload.text.trim().length > 0;\n\t\tconst hasAttachments = (payload.attachments?.length ?? 0) > 0;\n\t\tif (!hasText && !hasAttachments) {\n\t\t\treturn null;\n\t\t}\n\t\tif (payload.text.trimStart().startsWith(\"/\")) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\t...this.editingQueuedFollowUp,\n\t\t\ttext: payload.text,\n\t\t\tattachments: payload.attachments,\n\t\t};\n\t}\n\n\tprivate async rotateQueuedFollowUpForEditing(\n\t\tcurrentDraft: QueuedPrompt | null,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst restored =\n\t\t\t\tawait this.queueController.restoreQueuedFollowUpForEditing(\n\t\t\t\t\tcurrentDraft,\n\t\t\t\t);\n\t\t\tif (!restored) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.restoreQueuedPromptBatchToEditor([restored]);\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to rotate queued follow-up for editing.\",\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate mergeQueuedPromptBatch(entries: QueuedPrompt[]): PromptPayload {\n\t\tconst text = entries\n\t\t\t.map((entry) => entry.text.trim())\n\t\t\t.filter((segment) => segment.length > 0)\n\t\t\t.join(\"\\n\\n\");\n\t\tconst attachments = entries.flatMap((entry) => entry.attachments ?? []);\n\t\treturn {\n\t\t\ttext,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t};\n\t}\n\n\tprivate async handleInterruptedQueue(options: {\n\t\tkeepPartial: boolean;\n\t}): Promise<void> {\n\t\tif (!options.keepPartial) {\n\t\t\tconst steeringBatch =\n\t\t\t\tthis.queueController.drainSteeringBatchForInterrupt();\n\t\t\tif (steeringBatch.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.agent.waitForIdle();\n\t\t\t\t\tconst payload = this.mergeQueuedPromptBatch(steeringBatch);\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload.text.trim().length > 0 ||\n\t\t\t\t\t\t(payload.attachments?.length ?? 0) > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tvoid runUserPromptWithRecovery({\n\t\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\t\tprompt: payload.text,\n\t\t\t\t\t\t\tattachmentCount: payload.attachments?.length ?? 0,\n\t\t\t\t\t\t\tattachmentNames: payload.attachments?.map(\n\t\t\t\t\t\t\t\t(attachment) => attachment.fileName,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\tthis.agent.prompt(payload.text, payload.attachments),\n\t\t\t\t\t\t\tgetPostKeepMessages: withMcpPostKeepMessages(\n\t\t\t\t\t\t\t\t(preservedMessages) =>\n\t\t\t\t\t\t\t\t\tthis.collectActiveSkillMessagesForCompaction(\n\t\t\t\t\t\t\t\t\t\tpreservedMessages,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}).catch((error) => {\n\t\t\t\t\t\t\tthis.restoreQueuedPromptBatchToEditor(steeringBatch);\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t\t\t: String(error ?? \"unknown\");\n\t\t\t\t\t\t\tthis.notificationView.showError(\n\t\t\t\t\t\t\t\t`Failed to submit queued steering: ${message}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tthis.notificationView.showToast(\n\t\t\t\t\t\tsteeringBatch.length === 1\n\t\t\t\t\t\t\t? \"Submitting queued steer.\"\n\t\t\t\t\t\t\t: `Submitting ${steeringBatch.length} queued steers.`,\n\t\t\t\t\t\t\"info\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.restoreQueuedPromptBatchToEditor(steeringBatch);\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\t\t\tthis.notificationView.showError(\n\t\t\t\t\t\t`Failed to submit queued steering: ${message}`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst currentDraft = this.captureCurrentComposerDraftForQueueRestore();\n\t\tconst restored = this.queueController.restoreQueuedPrompts(currentDraft);\n\t\tthis.restoreQueuedPromptBatchToEditor(restored);\n\t}\n\n\tprivate handleFooterCommand(context: CommandExecutionContext): void {\n\t\tthis.uiStateController.handleFooterCommand(context, {\n\t\t\tgetToastHistory: (count: number) => this.footer.getToastHistory(count),\n\t\t\tclearAlerts: () => this.footer.clearAlerts(),\n\t\t});\n\t}\n\n\tprivate handleCompactToolsCommand(rawInput: string): void {\n\t\tthis.toolOutputView.handleCompactToolsCommand(rawInput);\n\t\tthis.persistUiState();\n\t}\n\n\tprivate handleSteerCommand(context: CommandExecutionContext): void {\n\t\tconst text = context.argumentText.trim();\n\t\tif (!text) {\n\t\t\tcontext.showError(\"Usage: /steer <message>\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst wasRunning = this.isAgentRunning;\n\t\tif (wasRunning && !this.queueController.canQueueSteering()) {\n\t\t\tcontext.showError(\n\t\t\t\t\"Steering mode set to one-at-a-time. Use /queue mode steer all to allow multiple steering messages.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (!wasRunning) {\n\t\t\tvoid this.inputController.handleTextSubmit(text);\n\t\t\treturn;\n\t\t}\n\t\tvoid this.agent\n\t\t\t.steer(this.buildQueuedUserMessage({ text }))\n\t\t\t.then(() => {\n\t\t\t\tthis.queueController.syncFromAgent();\n\t\t\t\tthis.notificationView.showToast(\n\t\t\t\t\t\"Queued steer for the next tool boundary.\",\n\t\t\t\t\t\"info\",\n\t\t\t\t);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message =\n\t\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\t\tcontext.showError(`Failed to queue steer: ${message}`);\n\t\t\t});\n\t}\n\n\tprivate async handleReviewCommand(\n\t\t_context: CommandExecutionContext,\n\t): Promise<void> {\n\t\tif (this.isAgentRunning) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Wait for the current run to finish before starting /review.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst reviewContext = this.gitView.getReviewContext();\n\t\tif (!reviewContext.ok) {\n\t\t\tthis.notificationView.showError(\n\t\t\t\treviewContext.error ?? \"Failed to collect git data for review.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst hasDiff =\n\t\t\treviewContext.stagedDiff.trim().length > 0 ||\n\t\t\treviewContext.worktreeDiff.trim().length > 0;\n\t\tif (!hasDiff) {\n\t\t\tthis.notificationView.showInfo(\"Working tree clean. Nothing to review.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst prompt = buildReviewPrompt(reviewContext);\n\t\ttry {\n\t\t\tawait runUserPromptWithRecovery({\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tcwd: process.cwd(),\n\t\t\t\tprompt,\n\t\t\t\texecute: () => this.agent.prompt(prompt),\n\t\t\t\tgetPostKeepMessages: withMcpPostKeepMessages((preservedMessages) =>\n\t\t\t\t\tthis.collectActiveSkillMessagesForCompaction(preservedMessages),\n\t\t\t\t),\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\tthis.notificationView.showError(\n\t\t\t\t`/review failed to run: ${message.slice(0, 200)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Skills, history rendering, and formatting have been extracted to:\n\t// - skills-controller.ts\n\t// - history-controller.ts\n\t// - utils/text-preview.ts\n\n\tprivate async handleStatsCommand(\n\t\t_context: CommandExecutionContext,\n\t): Promise<void> {\n\t\tthis.getDiagnosticsView().handleStatusCommand();\n\t\tconst costContext = this.createSyntheticContext(\"cost\", \"today\");\n\t\tthis.getCostView().handleCostCommand(costContext);\n\t}\n\n\tprivate clearEditor(): void {\n\t\tthis.editor.setText(\"\");\n\t\tthis.attachmentController.clearPendingAttachments();\n\t\tthis.editingQueuedFollowUp = null;\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async handleFollowUpSubmit(text: string): Promise<void> {\n\t\tif (this.isAgentRunning && !this.queueController.canQueueFollowUp()) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Follow-up mode set to one-at-a-time. Use /queue mode followup all to enable follow-ups while running.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning) {\n\t\t\tconst payload = await this.inputController.prepareQueuedPayload(text);\n\t\t\tif (!payload) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this.agent.followUp(this.buildQueuedUserMessage(payload));\n\t\t\tthis.clearEditor();\n\t\t\tthis.queueController.syncFromAgent();\n\t\t\tthis.notificationView.showToast(\"Queued follow-up message.\", \"info\");\n\t\t\tthis.refreshFooterHint();\n\t\t\treturn;\n\t\t}\n\t\tconst queued = await this.inputController.handleFollowUpSubmit(text);\n\t\tif (!queued) {\n\t\t\treturn;\n\t\t}\n\t\tthis.clearEditor();\n\t\tthis.refreshFooterHint();\n\t}\n\n\tprivate async handleSteerSubmit(text: string): Promise<void> {\n\t\tconst payload = await this.inputController.prepareQueuedPayload(text);\n\t\tif (!payload) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning && !this.queueController.canQueueSteering()) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Steering mode set to one-at-a-time. Use /queue mode steer all to enable multiple steering messages.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning) {\n\t\t\tawait this.agent.steer(this.buildQueuedUserMessage(payload));\n\t\t\tthis.clearEditor();\n\t\t\tthis.queueController.syncFromAgent();\n\t\t\tthis.notificationView.showToast(\n\t\t\t\t\"Queued steer for the next tool boundary.\",\n\t\t\t\t\"info\",\n\t\t\t);\n\t\t\tthis.refreshFooterHint();\n\t\t\treturn;\n\t\t}\n\t\tthis.inputController.submitPreparedPayload(payload);\n\t}\n\n\tprivate buildQueuedUserMessage(payload: PromptPayload): AppMessage {\n\t\treturn {\n\t\t\trole: \"user\",\n\t\t\tcontent: payload.text,\n\t\t\tattachments: payload.attachments?.length\n\t\t\t\t? payload.attachments\n\t\t\t\t: undefined,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n\n\t// consumePendingAttachmentMarkers, handleClipboardImagePaste,\n\t// restoreQueuedAttachments extracted to attachment-controller.ts\n\t// updateTerminalTitle, clearTerminalTitle, handleAutoRetryEvent,\n\t// handleExternalEditor, handleCtrlZ, handleTestVerificationResult,\n\t// describeTelemetryStatus extracted to misc-handlers.ts\n\n\tprivate handleApprovalRequired(request: ActionApprovalRequest): void {\n\t\tthis.approvalController?.enqueue(request);\n\t\tconst component = this.pendingTools.get(request.id);\n\t\tcomponent?.setPendingStatus(\n\t\t\trequest.actionDescription ?? request.reason ?? \"Awaiting approval\",\n\t\t);\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleApprovalResolved(\n\t\trequest: ActionApprovalRequest,\n\t\tdecision: ActionApprovalDecision,\n\t): void {\n\t\tthis.approvalController?.resolve(request, decision);\n\t\tconst component = this.pendingTools.get(request.id);\n\t\tcomponent?.setPendingStatus(null);\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleToolRetryRequired(request: ToolRetryRequest): void {\n\t\tthis.toolRetryController?.enqueue(request);\n\t\tconst component = this.pendingTools.get(request.toolCallId);\n\t\tcomponent?.setPendingStatus(request.summary ?? \"Retry required\");\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleToolRetryResolved(\n\t\trequest: ToolRetryRequest,\n\t\tdecision: ToolRetryDecision,\n\t): void {\n\t\tthis.toolRetryController?.resolve(request, decision);\n\t\tconst component = this.pendingTools.get(request.toolCallId);\n\t\tcomponent?.setPendingStatus(null);\n\t\tif (decision.action === \"abort\") {\n\t\t\tthis.agent.abort();\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate persistUiState(extra?: Partial<UiState>): void {\n\t\tconst recentCommands =\n\t\t\tthis.slashHintController?.getRecentCommands() ?? this.recentCommands;\n\t\tconst favoriteCommands =\n\t\t\tthis.slashHintController?.getFavoriteCommands() ?? this.favoriteCommands;\n\t\tsaveUiState({\n\t\t\tqueueMode: this.queueController.getFollowUpMode(),\n\t\t\tsteeringMode: this.queueController.getSteeringMode(),\n\t\t\tfollowUpMode: this.queueController.getFollowUpMode(),\n\t\t\tcompactTools: this.toolOutputView.isCompact(),\n\t\t\tfooterMode: this.footerMode,\n\t\t\treducedMotion: this.reducedMotion,\n\t\t\tcleanMode: this.cleanMode,\n\t\t\thideThinkingBlocks: this.hideThinkingBlocks,\n\t\t\trecentCommands,\n\t\t\tfavoriteCommands: Array.from(favoriteCommands),\n\t\t\t...extra,\n\t\t});\n\t\tsaveCommandPrefs({\n\t\t\tfavorites: Array.from(favoriteCommands),\n\t\t\trecents: recentCommands,\n\t\t});\n\t}\n\n\tprivate resetConversation(\n\t\tmessages: AppMessage[],\n\t\teditorSeed?: string,\n\t\ttoastMessage?: string,\n\t\toptions?: { preserveSession?: boolean; persistMessages?: boolean },\n\t): void {\n\t\tthis.sessionStateController.resetConversation(\n\t\t\tmessages,\n\t\t\teditorSeed,\n\t\t\ttoastMessage,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tprivate createCommandContext({\n\t\tcommand,\n\t\trawInput,\n\t\targumentText,\n\t\tparsedArgs,\n\t}: {\n\t\tcommand: SlashCommand;\n\t\trawInput: string;\n\t\targumentText: string;\n\t\tparsedArgs?: Record<string, unknown>;\n\t}): CommandExecutionContext {\n\t\treturn {\n\t\t\tcommand,\n\t\t\trawInput,\n\t\t\targumentText,\n\t\t\tparsedArgs,\n\t\t\tshowInfo: (message: string) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t\trenderHelp: () => this.renderCommandHelp(command),\n\t\t};\n\t}\n\n\tprivate createSyntheticContext(\n\t\tcommandName: string,\n\t\targumentText: string,\n\t): CommandExecutionContext {\n\t\tconst command = this.getSlashCommandByName(commandName);\n\t\treturn {\n\t\t\tcommand,\n\t\t\trawInput: `/${commandName}${argumentText ? ` ${argumentText}` : \"\"}`,\n\t\t\targumentText,\n\t\t\tshowInfo: (message: string) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t\trenderHelp: () => this.renderCommandHelp(command),\n\t\t};\n\t}\n\n\tprivate getSlashCommandByName(name: string): SlashCommand {\n\t\treturn (\n\t\t\tthis.slashCommands.find(\n\t\t\t\t(command) => command.name.toLowerCase() === name.toLowerCase(),\n\t\t\t) ?? { name }\n\t\t);\n\t}\n\n\tprivate renderCommandHelp(command: SlashCommand): void {\n\t\tconst help = formatCommandHelp(command);\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(help, 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate pushCommandOutput(text: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate dismissWelcomeAnimation(): void {\n\t\tif (!this.welcomeAnimation) {\n\t\t\treturn;\n\t\t}\n\t\tthis.welcomeAnimation.stop();\n\t\tthis.chatContainer.removeChild(this.welcomeAnimation);\n\t\tthis.welcomeAnimation = null;\n\t}\n\n\tprivate shouldDisableAnimations(): boolean {\n\t\t// Reduced motion is a user preference (and defaults on SSH/tmux).\n\t\t// MAESTRO_DISABLE_ANIMATIONS is an explicit hard-disable switch.\n\t\treturn this.reducedMotion || areAnimationsDisabled();\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tthis.notificationView.showError(errorMessage);\n\t\tthis.provideFailureHints(errorMessage);\n\t}\n\n\tshowInfo(message: string): void {\n\t\tthis.notificationView.showInfo(message);\n\t}\n\n\tpublic restoreActiveSkillsAfterCompaction(): number {\n\t\treturn this.skillsController.restoreActiveSkillsAfterCompaction();\n\t}\n\n\tpublic collectActiveSkillMessagesForCompaction(\n\t\tpreservedMessages?: AppMessage[],\n\t): AppMessage[] {\n\t\treturn this.skillsController.collectActiveSkillMessagesForCompaction(\n\t\t\tpreservedMessages,\n\t\t);\n\t}\n\n\tpublic collectOrderedCompactionRestorationMessages(\n\t\tpreservedMessages: AppMessage[],\n\t): AppMessage[] {\n\t\treturn [\n\t\t\t...collectPlanMessagesForCompaction(preservedMessages),\n\t\t\t...collectBackgroundTaskMessagesForCompaction(preservedMessages),\n\t\t\t...collectMcpMessagesForCompaction(\n\t\t\t\tpreservedMessages,\n\t\t\t\tmcpManager.getStatus().servers,\n\t\t\t),\n\t\t\t...this.collectActiveSkillMessagesForCompaction(preservedMessages),\n\t\t];\n\t}\n\n\tpublic refreshFooterHint(): void {\n\t\tthis.footerHintsController.refresh();\n\t}\n\n\tprivate buildWorkingFooterHint(): string {\n\t\treturn this.queueController.buildRunningHint({\n\t\t\tbaseHint: this.workingFooterHint,\n\t\t\tcanQueueFollowUp: this.canQueueFollowUpWhileRunning(),\n\t\t});\n\t}\n\n\tprivate canQueueFollowUpWhileRunning(): boolean {\n\t\tif (!this.isAgentRunning || !this.queueController.canQueueFollowUp()) {\n\t\t\treturn false;\n\t\t}\n\t\treturn canQueueFollowUpShortcut({\n\t\t\ttext: this.editor.getText(),\n\t\t\thasAttachments: this.attachmentController.hasPendingAttachments(),\n\t\t});\n\t}\n\n\tprivate handleEditorTyping(): void {\n\t\tthis.footer.clearToast();\n\t\tthis.slashHintController?.refreshSlashHintDebounced();\n\t}\n\n\tpublic extractTextFromAppMessage(message: AppMessage): string {\n\t\tconst rawContent = (message as { content?: unknown }).content;\n\t\tif (typeof rawContent === \"string\") {\n\t\t\treturn rawContent;\n\t\t}\n\t\tif (!Array.isArray(rawContent)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst textParts: string[] = [];\n\t\tfor (const chunk of rawContent as Array<Record<string, unknown>>) {\n\t\t\tconst typedChunk = chunk as {\n\t\t\t\ttype?: unknown;\n\t\t\t\ttext?: unknown;\n\t\t\t\tthinking?: unknown;\n\t\t\t};\n\t\t\tconst type =\n\t\t\t\ttypeof typedChunk.type === \"string\" ? typedChunk.type : undefined;\n\t\t\tif (type === \"text\" && typeof typedChunk.text === \"string\") {\n\t\t\t\ttextParts.push(typedChunk.text);\n\t\t\t} else if (\n\t\t\t\ttype === \"thinking\" &&\n\t\t\t\ttypeof typedChunk.thinking === \"string\"\n\t\t\t) {\n\t\t\t\ttextParts.push(typedChunk.thinking);\n\t\t\t}\n\t\t}\n\t\treturn textParts.join(\"\\n\");\n\t}\n\n\tprivate maybeShowContextWarning(stats: FooterStats): void {\n\t\tthis.footerHintsController.maybeShowContextWarning(stats);\n\t}\n\n\tprivate provideFailureHints(message: string): void {\n\t\tconst normalized = message.toLowerCase();\n\t\tconst hints: string[] = [];\n\t\tif (/(api key|credential|unauthorized|forbidden|token)/.test(normalized)) {\n\t\t\thints.push(\"Check credentials with /diag keys\");\n\t\t}\n\t\tif (/(context|token|length|window)/.test(normalized)) {\n\t\t\thints.push(\"Use /compact or /share to trim history\");\n\t\t}\n\t\tif (/(tool|bash|edit|read)/.test(normalized)) {\n\t\t\thints.push(\"Inspect failures via /tools failures\");\n\t\t}\n\t\tif (!hints.length) {\n\t\t\treturn;\n\t\t}\n\t\tthis.notificationView.showInfo(`Hint: ${hints.join(\" • \")}`);\n\t}\n\n\tprivate applyLoadedSessionContext(): void {\n\t\tthis.sessionStateController.applyLoadedSessionContext();\n\t}\n\n\tprivate loadImportedSession(sessionFile: string): void {\n\t\tthis.sessionManager.setSessionFile(sessionFile);\n\t\tthis.applyLoadedSessionContext();\n\t\tconst loadedMessages = this.sessionManager.loadMessages();\n\t\tthis.sessionStateController.resetConversation(\n\t\t\tloadedMessages,\n\t\t\tundefined,\n\t\t\tformatLoadedSessionToast({\n\t\t\t\tid: this.sessionManager.getSessionId(),\n\t\t\t\tmessageCount: loadedMessages.length,\n\t\t\t}),\n\t\t\t{ preserveSession: true, persistMessages: false },\n\t\t);\n\t}\n\n\tprivate isMinimalMode(): boolean {\n\t\treturn this.minimalMode;\n\t}\n\n\tprivate showPerfReport(): void {\n\t\tconst snap = this.perfCollector.snapshot();\n\t\tthis.notificationView.showInfo(formatPerfReport(snap));\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tawait this.agentEventBridge?.recordSessionClosed({\n\t\t\tcloseReason: \"MAESTRO_CLOSE_REASON_USER_STOPPED\",\n\t\t\tcloseMessage: \"TUI stopped\",\n\t\t});\n\t\tthis.slashHintController?.dispose();\n\t\tthis.loaderView.stop();\n\t\tthis.backgroundTasksController.stop();\n\t\tstopTuiKeybindingWatcher();\n\t\t// Clean up MCP and composer event listeners\n\t\tthis.mcpEventsController.stop();\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t\tthis.miscHandlers.clearTerminalTitle();\n\t\t// End session recovery tracking and create final backup\n\t\tthis.sessionRecoveryManager.endSession();\n\t\t// Stop test verification service\n\t\tthis.testVerificationService?.stop();\n\t\tthis.footer.dispose();\n\t\tprocess.stdout.off(\"resize\", this.resizeHandler);\n\t}\n\n\t/**\n\t * Get the actual OAuth authentication state by checking stored credentials.\n\t * Returns info about which provider the user is authenticated with.\n\t */\n\tprivate getActualAuthState(): {\n\t\tauthenticated: boolean;\n\t\tprovider?: string;\n\t\tmode?: string;\n\t} {\n\t\tconst providers = listOAuthProviders();\n\n\t\tif (providers.length === 0) {\n\t\t\treturn { authenticated: false };\n\t\t}\n\n\t\t// Get the primary provider (prefer current model provider if authenticated)\n\t\tconst currentProvider = this.agent.state.model?.provider;\n\t\tlet activeProvider = providers[0];\n\n\t\t// If we're using a provider that has OAuth credentials, use that one\n\t\tif (currentProvider && providers.includes(currentProvider)) {\n\t\t\tactiveProvider = currentProvider;\n\t\t}\n\n\t\t// Load credentials to get metadata (like mode)\n\t\tif (!activeProvider) {\n\t\t\treturn { authenticated: false, provider: undefined, mode: undefined };\n\t\t}\n\t\tconst credentials = loadOAuthCredentials(activeProvider);\n\t\tconst mode = credentials?.metadata?.mode as string | undefined;\n\n\t\treturn {\n\t\t\tauthenticated: true,\n\t\t\tprovider: activeProvider,\n\t\t\tmode,\n\t\t};\n\t}\n\n\tprivate async detectAndApplyTerminalTheme(): Promise<void> {\n\t\tconst auto = process.env.MAESTRO_TUI_AUTO_THEME;\n\t\tif (auto === \"0\" || auto === \"false\") return;\n\t\tconst detected = await probeTerminalBackground();\n\t\tif (!detected) return;\n\t\tconst current = getCurrentThemeName();\n\t\tif (current !== \"dark\" && current !== \"light\") return;\n\t\tif (detected === current) return;\n\t\tconst { success } = setTheme(detected);\n\t\tif (success) {\n\t\t\tthis.ui.requestRender();\n\t\t}\n\t}\n\n\tprivate configureRenderThrottle(): void {\n\t\tconst envValue = process.env.MAESTRO_TUI_RENDER_INTERVAL_MS;\n\t\tlet interval = Number.parseInt(envValue ?? \"\", 10);\n\t\tif (!Number.isFinite(interval)) {\n\t\t\tif (process.env.SSH_CONNECTION || process.env.SSH_TTY) {\n\t\t\t\tinterval = SSH_RENDER_INTERVAL_MS;\n\t\t\t} else {\n\t\t\t\tinterval = 0;\n\t\t\t}\n\t\t}\n\t\tthis.ui.setMinRenderInterval(Math.max(0, interval));\n\t}\n\n\tprivate refreshTerminalCapabilities(): void {\n\t\tthis.terminalCapabilities = {\n\t\t\tisTTY: Boolean(process.stdout.isTTY && process.stdin.isTTY),\n\t\t\tcolumns: process.stdout.columns ?? 80,\n\t\t\trows: process.stdout.rows ?? 24,\n\t\t\tcolorLevel: chalk.level || 0,\n\t\t};\n\t\tif (!this.zenMode) {\n\t\t\tthis.renderHeader();\n\t\t}\n\t\t// Update scroll viewport on resize\n\t\tthis.updateScrollViewport();\n\t}\n\n\t/**\n\t * Updates the scroll container's viewport height based on terminal size.\n\t * Called on init and resize.\n\t */\n\tprivate updateScrollViewport(options: { fast?: boolean } = {}): void {\n\t\tthis.viewportController.updateScrollViewport(options);\n\t}\n\n\t/**\n\t * Handles scroll keyboard shortcuts.\n\t * @returns true if the input was handled as a scroll command\n\t */\n\thandleScrollInput(data: string): boolean {\n\t\treturn this.scrollContainer.handleInput(data);\n\t}\n\n\t/**\n\t * Scrolls to the bottom of the chat and re-enables sticky scroll.\n\t */\n\tscrollToBottom(): void {\n\t\tthis.scrollContainer.scrollToBottom();\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Scrolls up by one page.\n\t */\n\tscrollPageUp(): void {\n\t\tthis.scrollContainer.pageUp();\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Scrolls down by one page.\n\t */\n\tscrollPageDown(): void {\n\t\tthis.scrollContainer.pageDown();\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate renderStartupAnnouncementsBlock(): void {\n\t\trenderStartupAnnouncements({\n\t\t\tcontainer: this.startupContainer,\n\t\t\tui: this.ui,\n\t\t\tupdateNotice: this.updateNotice,\n\t\t\tstartupChangelog: this.startupChangelog,\n\t\t\tstartupChangelogSummary: this.startupChangelogSummary,\n\t\t\tmodelScope: this.modelScope,\n\t\t\tonLayoutChange: () => {\n\t\t\t\tthis.viewportController.markStartupDirty();\n\t\t\t\tthis.updateScrollViewport();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate handleKeybindingConfigReload(report: KeybindingConfigReport): void {\n\t\tconst nextIssueSummary = summarizeKeybindingConfigIssues(report);\n\t\tif (\n\t\t\tnextIssueSummary &&\n\t\t\tnextIssueSummary !== this.lastKeybindingIssueSummary\n\t\t) {\n\t\t\tthis.notificationView.showToast(nextIssueSummary, \"warn\");\n\t\t} else if (!nextIssueSummary && this.lastKeybindingIssueSummary) {\n\t\t\tthis.notificationView.showToast(\n\t\t\t\t\"Keyboard shortcuts config reloaded cleanly.\",\n\t\t\t\t\"success\",\n\t\t\t);\n\t\t}\n\t\tthis.lastKeybindingIssueSummary = nextIssueSummary;\n\t\tthis.refreshFooterHint();\n\t\tthis.renderStartupAnnouncementsBlock();\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async runConnectivityProbe(): Promise<void> {\n\t\t// Fast, no-network probe: ensure a model is selected and transport is configured.\n\t\tconst state = this.agent.state;\n\t\tif (!state?.model) {\n\t\t\tthrow new Error(\"No default model configured. Use /model to select one.\");\n\t\t}\n\t\t// If transport exposes a light ping, use it without sending user content.\n\t\tawait this.agent.probeTransport().catch((error: unknown) => {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Model connectivity probe failed. Check API key and network.\";\n\t\t\tthrow new Error(message);\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tui-renderer.js","sourceRoot":"","sources":["../../src/cli-tui/tui-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SlashCommand } from \"@evalops/tui\";\nimport {\n\tContainer,\n\tMarkdown,\n\tProcessTerminal,\n\tScrollContainer,\n\tSpacer,\n\tTUI,\n\tText,\n\tdetectTerminalFeatures,\n} from \"@evalops/tui\";\nimport chalk from \"chalk\";\nimport type {\n\tActionApprovalDecision,\n\tActionApprovalRequest,\n\tActionApprovalService,\n} from \"../agent/action-approval.js\";\nimport type { Agent } from \"../agent/agent.js\";\nimport type {\n\tToolRetryDecision,\n\tToolRetryRequest,\n\tToolRetryService,\n} from \"../agent/tool-retry.js\";\nimport type { AgentEvent, AgentState, AppMessage } from \"../agent/types.js\";\nimport { PATHS } from \"../config/constants.js\";\nimport type { CleanMode } from \"../conversation/render-model.js\";\nimport { mcpManager } from \"../mcp/index.js\";\nimport { withMcpPostKeepMessages } from \"../mcp/prompt-recovery.js\";\nimport type { RegisteredModel } from \"../models/registry.js\";\nimport { getRegisteredModels } from \"../models/registry.js\";\nimport { getOpenTelemetryStatus } from \"../opentelemetry.js\";\nimport {\n\ttype SessionModelMetadata,\n\ttoSessionModelMetadata,\n} from \"../session/manager.js\";\nimport type { SessionManager } from \"../session/manager.js\";\nimport { getTelemetryStatus } from \"../telemetry.js\";\nimport {\n\tSessionPerfCollector,\n\tformatPerfReport,\n} from \"../telemetry/session-perf.js\";\nimport { getCurrentThemeName, setTheme } from \"../theme/theme.js\";\nimport { getTrainingStatus } from \"../training.js\";\nimport { getTuiAuthState } from \"./auth-state.js\";\n\nimport { AutoCompactionMonitor } from \"../agent/auto-compaction.js\";\nimport {\n\ttype AutoRetryController,\n\tcreateAutoRetryController,\n} from \"../agent/auto-retry.js\";\nimport {\n\tcollectBackgroundTaskMessagesForCompaction,\n\tcollectMcpMessagesForCompaction,\n\tcollectPlanMessagesForCompaction,\n} from \"../agent/compaction-restoration.js\";\nimport { applySessionEndHooks } from \"../agent/session-lifecycle-hooks.js\";\nimport { SessionRecoveryManager } from \"../agent/session-recovery.js\";\nimport {\n\tapplySessionStartHooks,\n\tcollectPersistedSessionStartHookMessages,\n\trunUserPromptWithRecovery,\n} from \"../agent/user-prompt-runtime.js\";\nimport {\n\ttype AutoVerifyService,\n\tregisterTestVerificationHooks,\n} from \"../testing/index.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { AboutView } from \"./about-view.js\";\nimport type { AgentEventRouter } from \"./agent-event-router.js\";\nimport type { ApprovalController } from \"./approval/approval-controller.js\";\nimport type { BackgroundTasksController } from \"./background/background-tasks-controller.js\";\nimport { BashModeView } from \"./bash-mode-view.js\";\nimport { ChangelogView } from \"./changelog-view.js\";\nimport { formatCommandHelp } from \"./commands/argument-parser.js\";\nimport type {\n\tCommandEntry,\n\tCommandExecutionContext,\n} from \"./commands/types.js\";\nimport { ConfigView } from \"./config-view.js\";\nimport { ContextView } from \"./context-view.js\";\nimport { CustomEditor } from \"./custom-editor.js\";\nimport { EditorView } from \"./editor-view.js\";\nimport { FeedbackView } from \"./feedback-view.js\";\nimport { FooterComponent } from \"./footer.js\";\nimport { GitView } from \"./git/git-view.js\";\nimport { HotkeysView } from \"./hotkeys-view.js\";\nimport { ImportExportView } from \"./import-view.js\";\nimport { InfoView } from \"./info-view.js\";\nimport { InstructionPanelComponent } from \"./instruction-panel.js\";\nimport type { InterruptController } from \"./interrupt-controller.js\";\nimport {\n\ttype KeybindingConfigReport,\n\tinspectKeybindingConfig,\n\tsummarizeKeybindingConfigIssues,\n} from \"./keybindings-config.js\";\nimport {\n\tstartTuiKeybindingWatcher,\n\tstopTuiKeybindingWatcher,\n} from \"./keybindings-watcher.js\";\nimport { getTuiKeybindingLabel } from \"./keybindings.js\";\nimport type { LoaderView } from \"./loader/loader-view.js\";\nimport { LspView } from \"./lsp-view.js\";\nimport type { MessageView } from \"./message-view.js\";\nimport { NotificationView } from \"./notification-view.js\";\nimport type { OAuthFlowController } from \"./oauth/index.js\";\nimport { OllamaView } from \"./ollama-view.js\";\nimport type { PlanView } from \"./plan-view.js\";\nimport type { PlanController } from \"./plan/plan-controller.js\";\nimport type { PromptPayload, QueuedPrompt } from \"./prompt-queue.js\";\nimport { canQueueFollowUpShortcut } from \"./queue/follow-up-shortcut.js\";\nimport {\n\ttype QueueController,\n\ttype QueueMode,\n\tQueuePanelController,\n} from \"./queue/index.js\";\nimport { RunCommandView } from \"./run/run-command-view.js\";\nimport { RunController } from \"./run/run-controller.js\";\nimport { FileSearchView } from \"./search/file-search-view.js\";\nimport { ModelSelectorView } from \"./selectors/model-selector-view.js\";\nimport { QueueModeSelectorView } from \"./selectors/queue-mode-selector-view.js\";\nimport { ReportSelectorView } from \"./selectors/report-selector-view.js\";\nimport { ThemeSelectorView } from \"./selectors/theme-selector-view.js\";\nimport { ThinkingSelectorView } from \"./selectors/thinking-selector-view.js\";\nimport { TreeSelectorView } from \"./selectors/tree-selector-view.js\";\nimport { UserMessageSelectorView } from \"./selectors/user-message-selector-view.js\";\nimport { ConversationCompactor } from \"./session/conversation-compactor.js\";\nimport { SessionContext } from \"./session/session-context.js\";\nimport type { SessionView } from \"./session/session-view.js\";\nimport { SlashCommandMatcher, SlashCycleState } from \"./slash/index.js\";\nimport { renderStartupAnnouncements } from \"./startup-announcements.js\";\nimport { CostView } from \"./status/cost-view.js\";\nimport type { DiagnosticsView } from \"./status/diagnostics-view.js\";\nimport { QuotaView } from \"./status/quota-view.js\";\nimport { TelemetryView } from \"./status/telemetry-view.js\";\nimport { TrainingView } from \"./status/training-view.js\";\nimport type { ToolExecutionComponent } from \"./tool-execution.js\";\nimport type { ToolOutputView } from \"./tool-output-view.js\";\nimport type { ToolRetryController } from \"./tool-retry/tool-retry-controller.js\";\nimport { ToolStatusView } from \"./tool-status-view.js\";\nimport {\n\ttype AgentEventBridge,\n\tcreateAgentEventBridge,\n} from \"./tui-renderer/agent-event-bridge.js\";\nimport {\n\ttype AttachmentController,\n\tcreateAttachmentController,\n} from \"./tui-renderer/attachment-controller.js\";\nimport { buildTuiCommandRegistryOptions } from \"./tui-renderer/command-registry-options.js\";\nimport { buildTuiCommandRegistry } from \"./tui-renderer/command-registry.js\";\nimport {\n\ttype DelegatingCommandHandlerMap,\n\tcreateDelegatingCommandHandlers,\n} from \"./tui-renderer/delegating-command-handlers.js\";\nimport {\n\ttype FooterHintsController,\n\tcreateFooterHintsController,\n} from \"./tui-renderer/footer-hints-controller.js\";\nimport {\n\ttype HistoryController,\n\tcreateHistoryController,\n} from \"./tui-renderer/history-controller.js\";\nimport {\n\ttype HookUiController,\n\tcreateHookUiController,\n} from \"./tui-renderer/hook-ui-controller.js\";\nimport {\n\ttype MiscHandlers,\n\tcreateMiscHandlers,\n} from \"./tui-renderer/misc-handlers.js\";\nimport {\n\ttype SkillsController,\n\tcreateSkillsController,\n} from \"./tui-renderer/skills-controller.js\";\nimport { type UiState, saveCommandPrefs, saveUiState } from \"./ui-state.js\";\nimport { UpdateView } from \"./update-view.js\";\nimport { CommandPaletteView } from \"./utils/commands/command-palette-view.js\";\nimport { buildReviewPrompt } from \"./utils/commands/review-prompt.js\";\nimport { SlashHintBar } from \"./utils/commands/slash-hint-bar.js\";\nimport {\n\ttype FooterMode,\n\ttype FooterStats,\n\tcalculateFooterStats,\n} from \"./utils/footer-utils.js\";\nimport { WelcomeAnimation } from \"./welcome-animation.js\";\n\nimport { areAnimationsDisabled } from \"../config/env-vars.js\";\nimport {\n\tgetProjectOnboardingState,\n\tmarkProjectOnboardingSeen,\n} from \"../onboarding/project-onboarding.js\";\nimport type { UpdateCheckResult } from \"../update/check.js\";\nimport { resolveEnvPath } from \"../utils/path-expansion.js\";\nimport type { ClientToolController } from \"./client-tools/client-tool-controller.js\";\nimport type { TuiClientToolService } from \"./client-tools/local-client-tool-service.js\";\nimport { HookInputModal } from \"./hooks/hook-input-modal.js\";\nimport { ModalManager } from \"./modal-manager.js\";\nimport { PasteHandler } from \"./paste/paste-handler.js\";\nimport {\n\ttype LowBandwidthConfig,\n\tSSH_RENDER_INTERVAL_MS,\n\ttype TerminalCapabilities,\n\tisMinimalMode as checkMinimalMode,\n\tgetLowBandwidthConfig,\n\tgetTerminalCapabilities,\n\tprobeTerminalBackground,\n} from \"./terminal/terminal-utils.js\";\nimport { createApprovalController } from \"./tui-renderer/approval-setup.js\";\nimport { createBackgroundTasksController } from \"./tui-renderer/background-tasks-setup.js\";\nimport {\n\ttype BranchController,\n\tcreateBranchController,\n} from \"./tui-renderer/branch-controller.js\";\nimport {\n\ttype ClearController,\n\tcreateClearController,\n} from \"./tui-renderer/clear-controller.js\";\nimport { createClientToolController } from \"./tui-renderer/client-tools-setup.js\";\nimport {\n\ttype CompactionController,\n\tcreateCompactionController,\n} from \"./tui-renderer/compaction-controller.js\";\nimport {\n\ttype CustomCommandsController,\n\tcreateCustomCommandsController,\n} from \"./tui-renderer/custom-commands-controller.js\";\nimport { attachEditorBindings } from \"./tui-renderer/editor-bindings.js\";\nimport { loadInitialTuiRendererPreferences } from \"./tui-renderer/initial-preferences.js\";\nimport {\n\ttype InputController,\n\tcreateInputController,\n} from \"./tui-renderer/input-controller.js\";\nimport { createInterruptController } from \"./tui-renderer/interrupt-setup.js\";\nimport { createLoaderView } from \"./tui-renderer/loader-setup.js\";\nimport {\n\ttype McpEventsController,\n\tcreateMcpEventsController,\n} from \"./tui-renderer/mcp-events-setup.js\";\nimport { createOAuthFlowController } from \"./tui-renderer/oauth-setup.js\";\nimport { createPlanSubsystem } from \"./tui-renderer/plan-setup.js\";\nimport { createQueueController } from \"./tui-renderer/queue-setup.js\";\nimport {\n\ttype QuickSettingsController,\n\tcreateQuickSettingsController,\n} from \"./tui-renderer/quick-settings-controller.js\";\nimport { createSessionSubsystem } from \"./tui-renderer/session-setup.js\";\nimport {\n\ttype SessionStateController,\n\tcreateSessionStateController,\n} from \"./tui-renderer/session-state-controller.js\";\nimport {\n\ttype SlashHintController,\n\tcreateSlashHintController,\n} from \"./tui-renderer/slash-hint-controller.js\";\nimport { createToolRetryController } from \"./tui-renderer/tool-retry-setup.js\";\nimport { createToolingViews } from \"./tui-renderer/tooling-views-setup.js\";\nimport {\n\ttype UiStateController,\n\tcreateUiStateController,\n} from \"./tui-renderer/ui-state-setup.js\";\nimport { createDiagnosticsView } from \"./tui-renderer/utility-views-setup.js\";\nimport {\n\ttype ViewportController,\n\tcreateViewportController,\n} from \"./tui-renderer/viewport-controller.js\";\n\nconst logger = createLogger(\"tui:renderer\");\n\nconst getTodoStorePath = () =>\n\tresolveEnvPath(process.env.MAESTRO_TODO_FILE) ?? PATHS.TODO_STORE;\n\nfunction formatLoadedSessionToast(sessionInfo: {\n\tid: string;\n\tmessageCount: number;\n\tresumeSummary?: string;\n}): string {\n\tconst prefix = `Loaded session ${sessionInfo.id} (${sessionInfo.messageCount} messages).`;\n\tif (!sessionInfo.resumeSummary?.trim()) {\n\t\treturn prefix;\n\t}\n\treturn `${prefix} ${sessionInfo.resumeSummary.trim()}`;\n}\n\n/**\n * Main TUI (Terminal User Interface) renderer for the Maestro coding agent.\n *\n * This class orchestrates all UI components, event handling, and user interactions.\n * It manages:\n * - Message rendering (user, assistant, tool calls)\n * - Streaming text display with markdown formatting\n * - Command palette and slash command execution\n * - Session management and switching\n * - Cost tracking and telemetry views\n * - Model selection and configuration\n * - File search and path autocomplete\n * - Git integration and status display\n *\n * The TUI uses an event-driven architecture where the Agent emits events\n * (streaming deltas, tool calls, etc.) and the TuiRenderer subscribes to\n * update the UI accordingly.\n *\n * @example\n * ```typescript\n * const renderer = new TuiRenderer({\n * agent,\n * sessionManager,\n * version: \"0.8.2\",\n * sessionContext: { sessionFile: \"~/.maestro/agent/sessions/default.jsonl\" }\n * });\n *\n * await renderer.initialize();\n * renderer.setInputCallback(async (text) => {\n * await agent.prompt(text);\n * });\n *\n * await renderer.run();\n * ```\n */\nimport { SmartAutocompleteProvider } from \"./smart-autocomplete-provider.js\";\n\nexport class TuiRenderer {\n\tprivate ui: TUI;\n\tprivate startupContainer: Container;\n\tprivate headerContainer: Container;\n\tprivate chatContainer: Container;\n\tprivate scrollContainer: ScrollContainer;\n\tprivate statusContainer: Container;\n\tprivate editor: CustomEditor;\n\tprivate editorContainer: Container; // Container to swap between editor and selector\n\tprivate queuedInputPreview: Text;\n\tprivate footer: FooterComponent;\n\tprivate agent: Agent;\n\tprivate sessionManager: SessionManager;\n\tprivate version: string;\n\tprivate isInitialized = false;\n\tprivate loaderView: LoaderView;\n\tprivate inputController!: InputController;\n\n\t// Tool execution tracking: toolCallId -> component\n\tprivate pendingTools = new Map<string, ToolExecutionComponent>();\n\tprivate explicitApiKey?: string;\n\tprivate telemetryStatus = getTelemetryStatus();\n\tprivate trainingStatus = getTrainingStatus();\n\tprivate currentModelMetadata?: SessionModelMetadata;\n\tprivate perfCollector = new SessionPerfCollector();\n\n\t// Track if this is the first user message (to skip spacer)\n\t// Welcome animation shown before first interaction\n\tprivate welcomeAnimation: WelcomeAnimation | null = null;\n\n\tprivate readonly idleFooterHint =\n\t\t\"Try /help for commands or /tools for status\";\n\tprivate readonly workingFooterHint = \"Working… press esc to interrupt\";\n\tprivate autoCompactionMonitor: AutoCompactionMonitor;\n\tprivate autoRetryController: AutoRetryController;\n\tprivate sessionRecoveryManager: SessionRecoveryManager;\n\tprivate testVerificationService: AutoVerifyService | null = null;\n\tprivate hookUiController!: HookUiController;\n\tprivate delegatingHandlers!: DelegatingCommandHandlerMap;\n\tprivate footerHintsController!: FooterHintsController;\n\tprivate toolOutputView: ToolOutputView;\n\tprivate commandPaletteView?: CommandPaletteView;\n\tprivate slashCommands: SlashCommand[] = [];\n\tprivate commandEntries: CommandEntry[] = [];\n\tprivate recentCommands: string[] = [];\n\tprivate favoriteCommands = new Set<string>();\n\tprivate defaultAutocompleteProvider!: SmartAutocompleteProvider;\n\tprivate slashHintBar!: SlashHintBar;\n\tprivate slashCommandMatcher!: SlashCommandMatcher;\n\tprivate slashCycleState = new SlashCycleState();\n\tprivate planView: PlanView;\n\tprivate planController?: PlanController;\n\tprivate sessionView: SessionView;\n\tprivate sessionStateController!: SessionStateController;\n\tprivate importExportView?: ImportExportView;\n\tprivate runCommandView?: RunCommandView;\n\tprivate bashModeView?: BashModeView;\n\tprivate gitView: GitView;\n\tprivate toolStatusView?: ToolStatusView;\n\tprivate diagnosticsView?: DiagnosticsView;\n\tprivate telemetryView?: TelemetryView;\n\tprivate ollamaView?: OllamaView;\n\tprivate lspView?: LspView;\n\tprivate fileSearchView?: FileSearchView;\n\tprivate conversationCompactor: ConversationCompactor;\n\tprivate messageView: MessageView;\n\tprivate feedbackView?: FeedbackView;\n\tprivate aboutView?: AboutView;\n\tprivate changelogView?: ChangelogView;\n\tprivate hotkeysView?: HotkeysView;\n\tprivate trainingView?: TrainingView;\n\tprivate infoView?: InfoView;\n\tprivate thinkingSelectorView?: ThinkingSelectorView;\n\tprivate themeSelectorView?: ThemeSelectorView;\n\tprivate modelSelectorView?: ModelSelectorView;\n\tprivate reportSelectorView?: ReportSelectorView;\n\tprivate treeSelectorView?: TreeSelectorView;\n\tprivate oauthFlowController!: OAuthFlowController;\n\tprivate queueModeSelectorView?: QueueModeSelectorView;\n\tprivate userMessageSelectorView?: UserMessageSelectorView;\n\tprivate notificationView: NotificationView;\n\tprivate backgroundTasksController: BackgroundTasksController;\n\tprivate mcpEventsController: McpEventsController;\n\tprivate resizeHandler: () => void;\n\tprivate updateView?: UpdateView;\n\tprivate configView?: ConfigView;\n\tprivate costView?: CostView;\n\tprivate quotaView?: QuotaView;\n\tprivate runController: RunController;\n\tprivate agentEventBridge!: AgentEventBridge;\n\tprivate readonly focusEditor = (): void => {\n\t\tthis.ui.setFocus(this.editor);\n\t};\n\tprivate agentEventRouter!: AgentEventRouter;\n\tprivate sessionContext = new SessionContext();\n\tprivate skillsController!: SkillsController;\n\tprivate historyController!: HistoryController;\n\tprivate attachmentController!: AttachmentController;\n\tprivate queueController: QueueController;\n\tprivate editingQueuedFollowUp: QueuedPrompt | null = null;\n\tprivate queuePanelController?: QueuePanelController;\n\t// Default to soft deduplication so repeated streamed lines don't appear in the TUI.\n\t// Users can still override via /clean or env/UI state.\n\tprivate cleanMode: CleanMode = \"soft\";\n\tprivate uiState: UiState = {};\n\tprivate footerMode: FooterMode = \"rich\";\n\tprivate reducedMotion = false;\n\tprivate zenMode = false;\n\tprivate hideThinkingBlocks = false;\n\tprivate readonly minimalMode = checkMinimalMode();\n\tprivate isAgentRunning = false;\n\tprivate approvalController?: ApprovalController;\n\tprivate clientToolController?: ClientToolController;\n\tprivate toolRetryController?: ToolRetryController;\n\tprivate approvalService: ActionApprovalService;\n\tprivate toolRetryService: ToolRetryService;\n\tprivate modelScope: RegisteredModel[] = [];\n\tprivate startupChangelog?: string | null;\n\tprivate startupChangelogSummary?: string | null;\n\tprivate updateNotice?: UpdateCheckResult | null;\n\tprivate modalManager: ModalManager;\n\tprivate viewportController!: ViewportController;\n\tprivate terminalCapabilities: TerminalCapabilities =\n\t\tgetTerminalCapabilities();\n\tprivate terminalFeatures = detectTerminalFeatures();\n\tprivate lowBandwidthConfig: LowBandwidthConfig = getLowBandwidthConfig();\n\tprivate interruptController!: InterruptController;\n\tprivate pasteHandler!: PasteHandler;\n\tprivate miscHandlers!: MiscHandlers;\n\tprivate uiStateController!: UiStateController;\n\tprivate quickSettingsController!: QuickSettingsController;\n\tprivate branchController?: BranchController;\n\tprivate clearController?: ClearController;\n\tprivate compactionController!: CompactionController;\n\tprivate slashHintController!: SlashHintController;\n\tprivate customCommandsController?: CustomCommandsController;\n\tprivate lastKeybindingIssueSummary: string | null = null;\n\n\tconstructor(\n\t\tagent: Agent,\n\t\tsessionManager: SessionManager,\n\t\tversion: string,\n\t\tapprovalService: ActionApprovalService,\n\t\ttoolRetryService: ToolRetryService,\n\t\texplicitApiKey?: string,\n\t\toptions: {\n\t\t\tclientToolService?: TuiClientToolService;\n\t\t\tmodelScope?: RegisteredModel[];\n\t\t\tstartupChangelog?: string | null;\n\t\t\tstartupChangelogSummary?: string | null;\n\t\t\tupdateNotice?: UpdateCheckResult | null;\n\t\t\tretryConfig?: import(\"../config/toml-config.js\").RetryConfig;\n\t\t} = {},\n\t) {\n\t\tconst initialPrefs = loadInitialTuiRendererPreferences();\n\t\tthis.uiState = initialPrefs.uiState;\n\t\tconst initialSteeringMode: QueueMode = initialPrefs.initialSteeringMode;\n\t\tconst initialFollowUpMode: QueueMode = initialPrefs.initialFollowUpMode;\n\t\tif (initialPrefs.cleanMode) {\n\t\t\tthis.cleanMode = initialPrefs.cleanMode;\n\t\t}\n\t\tif (initialPrefs.footerMode) {\n\t\t\tthis.footerMode = initialPrefs.footerMode;\n\t\t}\n\t\tthis.reducedMotion = initialPrefs.reducedMotion ?? false;\n\t\tif (typeof initialPrefs.zenMode === \"boolean\") {\n\t\t\tthis.zenMode = initialPrefs.zenMode;\n\t\t}\n\t\tif (typeof initialPrefs.hideThinkingBlocks === \"boolean\") {\n\t\t\tthis.hideThinkingBlocks = initialPrefs.hideThinkingBlocks;\n\t\t}\n\n\t\t// Initialize UI state controller with loaded preferences\n\t\tthis.uiStateController = createUiStateController({\n\t\t\tinitialCleanMode: this.cleanMode,\n\t\t\tinitialFooterMode: this.footerMode,\n\t\t\tinitialZenMode: this.zenMode,\n\t\t\tinitialHideThinkingBlocks: this.hideThinkingBlocks,\n\t\t\tcallbacks: {\n\t\t\t\tonZenModeChange: (enabled) => {\n\t\t\t\t\tthis.zenMode = enabled;\n\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\tthis.headerContainer?.clear();\n\t\t\t\t\t\tthis.footer?.setMode(\"solo\");\n\t\t\t\t\t\tif (this.welcomeAnimation) {\n\t\t\t\t\t\t\tthis.dismissWelcomeAnimation();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderHeader();\n\t\t\t\t\t\t// Restore footer mode from state if zen owned it\n\t\t\t\t\t\tconst currentFooterMode = this.footer?.getMode();\n\t\t\t\t\t\tif (currentFooterMode === \"solo\") {\n\t\t\t\t\t\t\tthis.footer?.setMode(this.footerMode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewportController.markHeaderDirty();\n\t\t\t\t\tthis.viewportController.markFooterDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t\tonFooterModeChange: (mode) => {\n\t\t\t\t\tthis.footerMode = mode;\n\t\t\t\t\tthis.footer?.setMode(mode);\n\t\t\t\t\tif (!this.isAgentRunning) {\n\t\t\t\t\t\tthis.refreshFooterHint();\n\t\t\t\t\t}\n\t\t\t\t\tthis.viewportController.markFooterDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t\tonHideThinkingBlocksChange: (hidden) => {\n\t\t\t\t\tthis.hideThinkingBlocks = hidden;\n\t\t\t\t},\n\t\t\t\trequestRender: () => {\n\t\t\t\t\tthis.ui?.requestRender();\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tthis.recentCommands = initialPrefs.recentCommands;\n\t\tthis.favoriteCommands = initialPrefs.favoriteCommands;\n\t\tthis.agent = agent;\n\t\tthis.agent.setSteeringMode(initialSteeringMode === \"all\" ? \"all\" : \"one\");\n\t\tthis.agent.setFollowUpMode(initialFollowUpMode === \"all\" ? \"all\" : \"one\");\n\t\tthis.sessionManager = sessionManager;\n\t\tthis.version = version;\n\t\tthis.explicitApiKey = explicitApiKey;\n\t\tthis.modelScope = options.modelScope ?? [];\n\t\tthis.autoCompactionMonitor = new AutoCompactionMonitor({\n\t\t\tonCompactionRecommended: (stats) => {\n\t\t\t\tthis.compactionController?.handleAutoCompactionRecommendation(stats);\n\t\t\t},\n\t\t});\n\t\tthis.autoRetryController = createAutoRetryController();\n\t\t// Load retry config if available\n\t\tif (options.retryConfig) {\n\t\t\tthis.autoRetryController.loadFromRetryConfig(options.retryConfig);\n\t\t}\n\t\tthis.sessionRecoveryManager = new SessionRecoveryManager();\n\t\tthis.startupChangelog = options.startupChangelog;\n\t\tthis.startupChangelogSummary = options.startupChangelogSummary;\n\t\tthis.updateNotice = options.updateNotice;\n\t\tthis.ui = new TUI(new ProcessTerminal(), this.terminalFeatures);\n\t\tthis.miscHandlers = createMiscHandlers({\n\t\t\tdeps: {\n\t\t\t\tui: this.ui,\n\t\t\t\tgetNotificationView: () => this.notificationView,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tgetTelemetryStatus: () => this.telemetryStatus,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t},\n\t\t});\n\t\tthis.autoRetryController.setEventListener((event) => {\n\t\t\tthis.miscHandlers.handleAutoRetryEvent(event);\n\t\t});\n\t\t// Initialize test verification with auto-test hooks\n\t\tthis.testVerificationService = registerTestVerificationHooks(\n\t\t\tprocess.cwd(),\n\t\t\t{\n\t\t\t\tonTestComplete: (result) => {\n\t\t\t\t\tthis.miscHandlers.handleTestVerificationResult(result);\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tthis.configureRenderThrottle();\n\t\tthis.startupContainer = new Container();\n\t\tthis.headerContainer = new Container();\n\t\tthis.chatContainer = new Container();\n\t\t// Wrap chatContainer in ScrollContainer for viewport scrolling\n\t\tthis.scrollContainer = new ScrollContainer(this.chatContainer, {\n\t\t\tstickyScroll: true,\n\t\t\tshowIndicator: true,\n\t\t\t// We dynamically compute viewport height based on non-chat components.\n\t\t\treservedLines: 0,\n\t\t\tonScroll: () => this.ui.requestRender(),\n\t\t});\n\t\tthis.statusContainer = new Container();\n\t\tthis.editor = new CustomEditor();\n\t\tattachEditorBindings({\n\t\t\teditor: this.editor,\n\t\t\tscrollContainer: this.scrollContainer,\n\t\t\tui: this.ui,\n\t\t\thandlers: {\n\t\t\t\thandleLargePaste: (event) => this.pasteHandler.handleLargePaste(event),\n\t\t\t\thandlePasteImage: () =>\n\t\t\t\t\tthis.attachmentController.handleClipboardImagePaste(),\n\t\t\t\thandleTyping: () => this.handleEditorTyping(),\n\t\t\t\tcycleModel: () => this.quickSettingsController.cycleModel(),\n\t\t\t\ttoggleToolOutputs: () =>\n\t\t\t\t\tthis.quickSettingsController.toggleToolOutputs(),\n\t\t\t\ttoggleThinkingBlocks: () =>\n\t\t\t\t\tthis.quickSettingsController.toggleThinkingBlocks(),\n\t\t\t\topenExternalEditor: () => this.miscHandlers.handleExternalEditor(),\n\t\t\t\tsuspend: () => this.miscHandlers.handleCtrlZ(),\n\t\t\t\thandleSlashCycle: (reverse) =>\n\t\t\t\t\tthis.slashHintController?.handleSlashCycle(reverse) ?? false,\n\t\t\t\tcycleThinkingLevel: () =>\n\t\t\t\t\tthis.quickSettingsController.cycleThinkingLevel(),\n\t\t\t},\n\t\t});\n\t\tthis.editorContainer = new Container(); // Container to hold editor or selector\n\t\tthis.slashHintBar = new SlashHintBar();\n\t\tthis.queuedInputPreview = new Text(\"\", 1, 0);\n\t\tthis.editorContainer.addChild(this.slashHintBar);\n\t\tthis.editorContainer.addChild(this.queuedInputPreview);\n\t\tthis.editorContainer.addChild(this.editor); // Start with editor\n\t\tthis.modalManager = new ModalManager(\n\t\t\tthis.editorContainer,\n\t\t\tthis.ui,\n\t\t\tthis.editor,\n\t\t\t{\n\t\t\t\tonLayoutChange: () => {\n\t\t\t\t\tthis.viewportController.markEditorDirty();\n\t\t\t\t\tthis.updateScrollViewport();\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\tthis.footer = new FooterComponent(agent.state, this.footerMode);\n\t\tthis.footer.startBranchTracking(() => this.ui.requestRender());\n\t\tthis.viewportController = createViewportController({\n\t\t\tdeps: {\n\t\t\t\theaderContainer: this.headerContainer,\n\t\t\t\tstartupContainer: this.startupContainer,\n\t\t\t\tstatusContainer: this.statusContainer,\n\t\t\t\teditorContainer: this.editorContainer,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tscrollContainer: this.scrollContainer,\n\t\t\t\tgetColumns: () => process.stdout.columns ?? 80,\n\t\t\t\tgetRows: () => process.stdout.rows ?? 24,\n\t\t\t},\n\t\t});\n\t\tthis.notificationView = new NotificationView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tfooter: this.footer,\n\t\t});\n\t\tthis.miscHandlers.updateTerminalTitle();\n\n\t\t// Initialize extracted controllers (attachment → skills → history)\n\t\tthis.attachmentController = createAttachmentController({\n\t\t\tdeps: {\n\t\t\t\tinsertEditorText: (text) => this.editor.insertText(text),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\n\t\tthis.skillsController = createSkillsController({\n\t\t\tdeps: {\n\t\t\t\tinjectMessage: (message) => this.agent.injectMessage(message),\n\t\t\t\tgetMessages: () => this.agent.state.messages,\n\t\t\t\tcwd: () => process.cwd(),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tpushCommandOutput: (text) => this.pushCommandOutput(text),\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\t},\n\t\t});\n\n\t\tthis.hookUiController = createHookUiController({\n\t\t\tdeps: {\n\t\t\t\tui: this.ui,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tmodalManager: this.modalManager,\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tcreateHookInputModal: (opts) => new HookInputModal(opts),\n\t\t\t\tcreateCommandContext: (params) => this.createCommandContext(params),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\tthis.hookUiController.initializeGlobalContext();\n\n\t\tthis.delegatingHandlers = createDelegatingCommandHandlers({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\taddMarkdown: (content) =>\n\t\t\t\tthis.chatContainer.addChild(new Markdown(content)),\n\t\t\taddSpacedText: (content) => {\n\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\tthis.chatContainer.addChild(new Text(content, 1, 0));\n\t\t\t},\n\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t});\n\n\t\t// Now that all core layout containers exist, compute the initial viewport\n\t\t// sizing and wire resize handling.\n\t\tthis.refreshTerminalCapabilities();\n\t\tthis.resizeHandler = () => this.refreshTerminalCapabilities();\n\t\tprocess.stdout.on(\"resize\", this.resizeHandler);\n\n\t\tthis.queueController = createQueueController({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\teditor: this.editor,\n\t\t\tinitialSteeringMode: initialSteeringMode,\n\t\t\tinitialFollowUpMode: initialFollowUpMode,\n\t\t\trefreshQueuePanel: () => this.queuePanelController?.refreshPanel(),\n\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\trequestRender: () => {\n\t\t\t\tthis.updateQueuedInputPreview();\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t\tpersistUiState: (state) => this.persistUiState(state),\n\t\t});\n\t\tthis.updateQueuedInputPreview();\n\n\t\tthis.oauthFlowController = createOAuthFlowController({\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t});\n\n\t\tthis.inputController = createInputController({\n\t\t\tdeps: {\n\t\t\t\teditor: this.editor,\n\t\t\t\tgetPasteHandler: () => this.pasteHandler,\n\t\t\t\tisBashModeActive: () => this.bashModeView?.isActive() ?? false,\n\t\t\t\tgetBashModeView: () => this.getBashModeView(),\n\t\t\t\tgetInterruptController: () => this.interruptController,\n\t\t\t\tautoRetryController: this.autoRetryController,\n\t\t\t\tconsumeAttachments: (text) =>\n\t\t\t\t\tthis.attachmentController.consumeAttachments(text),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t\tstopRenderer: () => this.stop(),\n\t\t\t\texitProcess: (code) => process.exit(code ?? 0),\n\t\t\t},\n\t\t});\n\n\t\tthis.interruptController = createInterruptController({\n\t\t\tfooter: this.footer,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonInterrupt: (options) => this.inputController.notifyInterrupt(options),\n\t\t\trestoreQueuedPrompts: (options) => {\n\t\t\t\tvoid this.handleInterruptedQueue(options);\n\t\t\t},\n\t\t\thasQueuedSteering: () =>\n\t\t\t\tthis.queueController.getQueuedSteeringCount() > 0,\n\t\t\tgetWorkingHint: () => this.buildWorkingFooterHint(),\n\t\t\tisMinimalMode: () => this.isMinimalMode(),\n\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\n\t\tthis.backgroundTasksController = createBackgroundTasksController({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\n\t\tthis.footerHintsController = createFooterHintsController({\n\t\t\tdeps: {\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t\tidleFooterHint: this.idleFooterHint,\n\t\t\t\tisReducedMotion: () => this.reducedMotion,\n\t\t\t\tisMinimalMode: () => this.minimalMode,\n\t\t\t\tgetSandboxMode: () =>\n\t\t\t\t\tthis.agent.state.sandboxMode ?? process.env.MAESTRO_SANDBOX ?? null,\n\t\t\t\tisSandboxActive: () =>\n\t\t\t\t\tBoolean(this.agent.state.sandboxEnabled) ||\n\t\t\t\t\tBoolean(this.agent.state.sandbox),\n\t\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t\t\tgetQueueData: () => ({\n\t\t\t\t\tfollowUpMode: this.queueController.getFollowUpMode(),\n\t\t\t\t\tqueuedCount: this.queueController.getQueuedCount(),\n\t\t\t\t\thasQueue: this.queueController.hasQueue(),\n\t\t\t\t\tqueueHint: this.queueController.buildQueueHint(),\n\t\t\t\t}),\n\t\t\t\tgetRunningHint: () => this.buildWorkingFooterHint(),\n\t\t\t\tgetThinkingLevel: () => this.agent.state.thinkingLevel,\n\t\t\t\tgetUnseenAlertCount: () => this.footer.getUnseenAlertCount(),\n\t\t\t\tgetHookStatusHints: () => this.hookUiController.getHookStatusHints(),\n\t\t\t\tgetActiveToast: () => this.footer.getActiveToast(),\n\t\t\t\tgetBackgroundCounts: () => this.backgroundTasksController.getCounts(),\n\t\t\t\tisCompacting: () => this.compactionController?.isCompacting() ?? false,\n\t\t\t\thasPendingPaste: () => this.pasteHandler?.hasPending() ?? false,\n\t\t\t\tisBashModeActive: () => this.bashModeView?.isActive() ?? false,\n\t\t\t\tsetRuntimeBadges: (badges) =>\n\t\t\t\t\tthis.footer.setRuntimeBadges(badges as string[]),\n\t\t\t\tsetHints: (hints) => this.footer.setHints(hints),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowToast: (message, tone) =>\n\t\t\t\t\tthis.notificationView.showToast(message, tone),\n\t\t\t\tsetToast: (message, tone) => this.footer.setToast(message, tone),\n\t\t\t},\n\t\t});\n\t\tthis.footerHintsController.surfaceStartupWarnings();\n\t\tthis.approvalController = createApprovalController({\n\t\t\tapprovalService,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\teditorContainer: this.editorContainer,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\t\tif (options.clientToolService) {\n\t\t\tthis.clientToolController = createClientToolController({\n\t\t\t\tclientToolService: options.clientToolService,\n\t\t\t\tui: this.ui,\n\t\t\t\teditor: this.editor,\n\t\t\t\teditorContainer: this.editorContainer,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tonPendingStatusChange: (toolCallId, status) => {\n\t\t\t\t\tconst component = this.pendingTools.get(toolCallId);\n\t\t\t\t\tcomponent?.setPendingStatus(status);\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tthis.toolRetryController = createToolRetryController({\n\t\t\ttoolRetryService,\n\t\t\tui: this.ui,\n\t\t\teditor: this.editor,\n\t\t\teditorContainer: this.editorContainer,\n\t\t\tnotificationView: this.notificationView,\n\t\t});\n\t\tthis.approvalService = approvalService;\n\t\tthis.toolRetryService = toolRetryService;\n\t\tthis.loaderView = createLoaderView({\n\t\t\tui: this.ui,\n\t\t\tstatusContainer: this.statusContainer,\n\t\t\tfooter: this.footer,\n\t\t\tlowColor: this.terminalFeatures.lowColor,\n\t\t\tlowUnicode: this.terminalFeatures.lowUnicode,\n\t\t\tdisableAnimations: this.shouldDisableAnimations(),\n\t\t\tonLayoutChange: () => {\n\t\t\t\tthis.viewportController.markStatusDirty();\n\t\t\t\tthis.updateScrollViewport();\n\t\t\t},\n\t\t});\n\t\tconst planSubsystem = createPlanSubsystem({\n\t\t\tfilePath: getTodoStorePath(),\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsetPlanHint: (hint) => {\n\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t},\n\t\t\tonStoreChanged: (store) => this.planController?.handleStoreChanged(store),\n\t\t});\n\t\tthis.planView = planSubsystem.planView;\n\t\tthis.planController = planSubsystem.planController;\n\t\tthis.gitView = new GitView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tshowToast: (message, tone) =>\n\t\t\t\tthis.notificationView.showToast(message, tone),\n\t\t\tmodalManager: this.modalManager,\n\t\t});\n\t\tthis.runController = new RunController({\n\t\t\tloaderView: this.loaderView,\n\t\t\tui: this.ui,\n\t\t\tsetEditorDisabled: (_disabled) => {\n\t\t\t\tthis.editor.disableSubmit = false;\n\t\t\t},\n\t\t\tfocusEditor: () => this.focusEditor(),\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\tstopRenderer: () => this.stop(),\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\tnotifyFileChanges: () => this.gitView.notifyFileChanges(),\n\t\t\tinMinimalMode: () => this.isMinimalMode(),\n\t\t});\n\t\tthis.ui.setInterruptHandler(() => {\n\t\t\tvoid this.handleCtrlC();\n\t\t});\n\t\tconst sessionSubsystem = createSessionSubsystem({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\tapplyLoadedSessionContext: () => this.applyLoadedSessionContext(),\n\t\t\tonSessionLoaded: (sessionInfo) => {\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.notificationView.showInfo(formatLoadedSessionToast(sessionInfo));\n\t\t\t},\n\t\t});\n\t\tthis.sessionView = sessionSubsystem.sessionView;\n\n\t\t// History controller uses sessionContext stores\n\t\tthis.historyController = createHistoryController({\n\t\t\tdeps: { sessionContext: this.sessionContext },\n\t\t\tcallbacks: {\n\t\t\t\tpushCommandOutput: (text) => this.pushCommandOutput(text),\n\t\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\t},\n\t\t});\n\n\t\t// Initialize paste handler\n\t\tthis.pasteHandler = new PasteHandler({\n\t\t\tagent: this.agent,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\teditor: this.editor,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\t\tconst toolingViews = createToolingViews({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tuiStateCompactTools: this.uiState.compactTools,\n\t\t\tpendingTools: this.pendingTools,\n\t\t\tlowBandwidth: this.lowBandwidthConfig,\n\t\t\tdisableAnimations: this.shouldDisableAnimations(),\n\t\t\tgetCleanMode: () => this.cleanMode,\n\t\t\tgetHideThinkingBlocks: () => this.hideThinkingBlocks,\n\t\t\tloaderView: this.loaderView,\n\t\t\trunController: this.runController,\n\t\t\tsessionContext: this.sessionContext,\n\t\t\textractText: (message) => this.extractTextFromAppMessage(message),\n\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\tclearPendingTools: () => this.pendingTools.clear(),\n\t\t\trefreshPlanHint: () => this.planView.syncHintWithStore(),\n\t\t\tonAssistantMessageEnd: (message) =>\n\t\t\t\tthis.autoRetryController.trackAssistantMessage(message),\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\tthis.toolOutputView = toolingViews.toolOutputView;\n\t\tthis.messageView = toolingViews.messageView;\n\t\tthis.agentEventRouter = toolingViews.agentEventRouter;\n\t\tthis.sessionStateController = createSessionStateController({\n\t\t\tdeps: {\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tsessionContext: this.sessionContext,\n\t\t\t\tsessionRecoveryManager: this.sessionRecoveryManager,\n\t\t\t\teditor: this.editor,\n\t\t\t\tmessageView: this.messageView,\n\t\t\t\ttoolOutputView: this.toolOutputView,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tscrollContainer: this.scrollContainer,\n\t\t\t\tstartupContainer: this.startupContainer,\n\t\t\t\tplanView: this.planView,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tclearActiveSkills: () => this.skillsController.clearActiveSkills(),\n\t\t\t\trunSessionEndHooks: (reason) =>\n\t\t\t\t\tapplySessionEndHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\treason,\n\t\t\t\t\t}),\n\t\t\t\trunSessionStartHooks: (source) =>\n\t\t\t\t\tapplySessionStartHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\tclearEditor: () => this.clearEditor(),\n\t\t\t\tsetPlanHint: (hint) => {\n\t\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\t},\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t},\n\t\t});\n\n\t\tthis.agentEventBridge = createAgentEventBridge({\n\t\t\tdeps: {\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tsessionRecoveryManager: this.sessionRecoveryManager,\n\t\t\t\tautoRetryController: this.autoRetryController,\n\t\t\t\tinterruptController: this.interruptController,\n\t\t\t\tfooter: this.footer,\n\t\t\t\tagentEventRouter: this.agentEventRouter,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tensureInitialized: () => this.init(),\n\t\t\t\thandleApprovalRequired: (request) =>\n\t\t\t\t\tthis.handleApprovalRequired(request),\n\t\t\t\thandleApprovalResolved: (request, decision) =>\n\t\t\t\t\tthis.handleApprovalResolved(request, decision),\n\t\t\t\thandleToolRetryRequired: (request) =>\n\t\t\t\t\tthis.handleToolRetryRequired(request),\n\t\t\t\thandleToolRetryResolved: (request, decision) =>\n\t\t\t\t\tthis.handleToolRetryResolved(request, decision),\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\tmaybeShowContextWarning: (stats) => this.maybeShowContextWarning(stats),\n\t\t\t\tsetCurrentModelMetadata: (metadata) => {\n\t\t\t\t\tthis.currentModelMetadata = metadata;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\t// Initialize quick settings controller for keyboard shortcuts\n\t\tthis.quickSettingsController = createQuickSettingsController({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tmodelScope: this.modelScope,\n\t\t\tcallbacks: {\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tpersistUiState: () => this.persistUiState(),\n\t\t\t\trenderConversationView: () => this.renderConversationView(),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t\tgetToolOutputCompact: () => this.toolOutputView.isCompact(),\n\t\t\t\ttoggleToolOutputCompact: () => this.toolOutputView.toggleCompactMode(),\n\t\t\t\tgetHideThinkingBlocks: () => this.hideThinkingBlocks,\n\t\t\t\tsetHideThinkingBlocks: (hidden) => {\n\t\t\t\t\tthis.hideThinkingBlocks = hidden;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tthis.conversationCompactor = new ConversationCompactor({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tfooter: this.footer,\n\t\t\tidleHint: this.idleFooterHint,\n\t\t\ttoolComponents: this.toolOutputView.getTrackedComponents(),\n\t\t\trenderMessages: () => this.renderInitialMessages(this.agent.state),\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tgetPostKeepMessages: async (source, preservedMessages) => {\n\t\t\t\tconst restorationMessages =\n\t\t\t\t\tsource === \"compact\"\n\t\t\t\t\t\t? this.collectOrderedCompactionRestorationMessages(\n\t\t\t\t\t\t\t\tpreservedMessages,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: [];\n\t\t\t\tconst sessionStartMessages =\n\t\t\t\t\tawait collectPersistedSessionStartHookMessages({\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t});\n\t\t\t\treturn [...restorationMessages, ...sessionStartMessages];\n\t\t\t},\n\t\t});\n\t\tthis.compactionController = createCompactionController({\n\t\t\tdeps: {\n\t\t\t\tgetAgentState: () => this.agent.state,\n\t\t\t\tgetSessionId: () => this.sessionManager.getSessionId(),\n\t\t\t\tconversationCompactor: this.conversationCompactor,\n\t\t\t\tautoCompactionMonitor: this.autoCompactionMonitor,\n\t\t\t\tsessionContext: this.sessionContext,\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tshowInfo: (msg) => this.notificationView.showInfo(msg),\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tsetContextWarningLevel: (level) => {\n\t\t\t\t\tthis.footerHintsController.setContextWarningLevel(level);\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tconst registry = buildTuiCommandRegistry({\n\t\t\tcwd: process.cwd(),\n\t\t\tregistryOptions: buildTuiCommandRegistryOptions({\n\t\t\t\tgetRunCommandView: () => this.getRunCommandView(),\n\t\t\t\tgetToolStatusView: () => this.getToolStatusView(),\n\t\t\t\tsessionView: this.sessionView,\n\t\t\t\tgetClearController: () => this.getClearController(),\n\t\t\t\tgetDiagnosticsView: () => this.getDiagnosticsView(),\n\t\t\t\tplanController: this.planController,\n\t\t\t\tgitView: this.gitView,\n\t\t\t\tbackgroundTasksController: this.backgroundTasksController,\n\t\t\t\tcompactionController: this.compactionController,\n\t\t\t\tgetCustomCommandsController: () => this.getCustomCommandsController(),\n\t\t\t\tgetBranchController: () => this.getBranchController(),\n\t\t\t\toauthFlowController: this.oauthFlowController,\n\t\t\t\tapprovalService: this.approvalService,\n\t\t\t\tnotificationView: this.notificationView,\n\t\t\t\tchatContainer: this.chatContainer,\n\t\t\t\tui: this.ui,\n\t\t\t\tuiStateController: this.uiStateController,\n\t\t\t\tgetImportExportView: () => this.getImportExportView(),\n\t\t\t\tgetReportSelectorView: () => this.getReportSelectorView(),\n\t\t\t\tgetFeedbackView: () => this.getFeedbackView(),\n\t\t\t\tgetAboutView: () => this.getAboutView(),\n\t\t\t\tgetInfoView: () => this.getInfoView(),\n\t\t\t\tgetUpdateView: () => this.getUpdateView(),\n\t\t\t\tgetChangelogView: () => this.getChangelogView(),\n\t\t\t\tgetHotkeysView: () => this.getHotkeysView(),\n\t\t\t\tgetConfigView: () => this.getConfigView(),\n\t\t\t\tgetCostView: () => this.getCostView(),\n\t\t\t\tgetQuotaView: () => this.getQuotaView(),\n\t\t\t\tgetTelemetryView: () => this.getTelemetryView(),\n\t\t\t\tgetTrainingView: () => this.getTrainingView(),\n\t\t\t\tgetOllamaView: () => this.getOllamaView(),\n\t\t\t\tgetThinkingSelectorView: () => this.getThinkingSelectorView(),\n\t\t\t\tgetModelSelectorView: () => this.getModelSelectorView(),\n\t\t\t\tgetThemeSelectorView: () => this.getThemeSelectorView(),\n\t\t\t\tgetLspView: () => this.getLspView(),\n\t\t\t\tgetFileSearchView: () => this.getFileSearchView(),\n\t\t\t\tgetQueuePanelController: () => this.getQueuePanelController(),\n\t\t\t\tgetMessages: () => this.agent.state.messages,\n\t\t\t\tcreateCommandContext: (ctx) => this.createCommandContext(ctx),\n\t\t\t\thandleReviewCommand: (context) => this.handleReviewCommand(context),\n\t\t\t\thandleHistoryCommand: (context) =>\n\t\t\t\t\tthis.historyController.handleHistoryCommand(context),\n\t\t\t\thandleToolHistoryCommand: (context) =>\n\t\t\t\t\tthis.historyController.handleToolHistoryCommand(context),\n\t\t\t\thandleSkillsCommand: (context) =>\n\t\t\t\t\tthis.skillsController.handleSkillsCommand(context),\n\t\t\t\thandleEnhancedUndoCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleEnhancedUndoCommand(context),\n\t\t\t\thandleFooterCommand: (context) => this.handleFooterCommand(context),\n\t\t\t\thandleCompactToolsCommand: (rawInput) =>\n\t\t\t\t\tthis.handleCompactToolsCommand(rawInput),\n\t\t\t\thandleSteerCommand: (context) => this.handleSteerCommand(context),\n\t\t\t\thandleStatsCommand: (context) => this.handleStatsCommand(context),\n\t\t\t\thandleNewChatCommand: (context) =>\n\t\t\t\t\tthis.sessionStateController.handleNewChatCommand(context),\n\t\t\t\thandleTreeCommand: (_context) => this.getTreeSelectorView().show(),\n\t\t\t\thandleMcpCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleMcpCommand(context),\n\t\t\t\thandleComposerCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleComposerCommand(context),\n\t\t\t\thandleContextCommand: (context) => this.handleContextCommand(context),\n\t\t\t\thandleFrameworkCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleFrameworkCommand(context),\n\t\t\t\thandleGuardianCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleGuardianCommand(context),\n\t\t\t\thandleWorkflowCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleWorkflowCommand(context),\n\t\t\t\thandleChangesCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleChangesCommand(context),\n\t\t\t\thandleCheckpointCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleCheckpointCommand(context),\n\t\t\t\thandleMemoryCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleMemoryCommand(context),\n\t\t\t\thandleModeCommand: (context) =>\n\t\t\t\t\tthis.delegatingHandlers.handleModeCommand(context),\n\t\t\t\tcommandSuite: {\n\t\t\t\t\tgetUiState: () => ({\n\t\t\t\t\t\t...this.uiStateController.getState(),\n\t\t\t\t\t\tcompactTools: this.toolOutputView?.isCompact() ?? false,\n\t\t\t\t\t}),\n\t\t\t\t\tgetAuthState: () => this.getActualAuthState(),\n\t\t\t\t\thandleSessionRecoverCommand: (context) =>\n\t\t\t\t\t\tthis.sessionStateController.handleSessionRecoverCommand(context),\n\t\t\t\t\thandleSessionCleanupCommand: (context) => {\n\t\t\t\t\t\tconst result = this.sessionManager.pruneSessions();\n\t\t\t\t\t\tif (result.removed === 0) {\n\t\t\t\t\t\t\tcontext.showInfo(\"No sessions to prune.\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.showInfo(\n\t\t\t\t\t\t\t`Pruned ${result.removed} session(s).${result.errors > 0 ? ` ${result.errors} error(s).` : \"\"}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\thandleSourcesCommand: (context) =>\n\t\t\t\t\t\tthis.delegatingHandlers.handleSourcesCommand(context),\n\t\t\t\t\thandlePerfCommand: () => this.showPerfReport(),\n\t\t\t\t\thandleAuthSourceOfTruthCommand: (argumentText, showError, showInfo) =>\n\t\t\t\t\t\tthis.oauthFlowController.handleSourceOfTruthPolicyCommand(\n\t\t\t\t\t\t\targumentText,\n\t\t\t\t\t\t\tshowError,\n\t\t\t\t\t\t\tshowInfo,\n\t\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\tonQuit: async () => {\n\t\t\t\t\tawait this.stop();\n\t\t\t\t\tprocess.exit(0);\n\t\t\t\t},\n\t\t\t}),\n\t\t\texecutePromptTemplate: (promptName, userArgumentText, context) => {\n\t\t\t\tconst combined = [promptName, userArgumentText]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\" \");\n\t\t\t\tconst syntheticContext: CommandExecutionContext = {\n\t\t\t\t\t...context,\n\t\t\t\t\targumentText: combined,\n\t\t\t\t};\n\t\t\t\tthis.getCustomCommandsController().handlePromptsCommand(\n\t\t\t\t\tsyntheticContext,\n\t\t\t\t);\n\t\t\t},\n\t\t\tlogDebug: (message, meta) => logger.debug(message, meta),\n\t\t});\n\t\tconst hookRegistry = this.hookUiController.buildHookCommandEntries(\n\t\t\tregistry.commands,\n\t\t);\n\t\tif (hookRegistry.commands.length > 0) {\n\t\t\tregistry.entries.push(...hookRegistry.entries);\n\t\t\tregistry.commands.push(...hookRegistry.commands);\n\t\t}\n\n\t\tthis.commandEntries = registry.entries;\n\t\tthis.slashCommands = registry.commands;\n\t\tthis.slashCommandMatcher = new SlashCommandMatcher(this.slashCommands);\n\t\tthis.slashHintController = createSlashHintController({\n\t\t\tdeps: {\n\t\t\t\tslashHintBar: this.slashHintBar,\n\t\t\t\tslashCommandMatcher: this.slashCommandMatcher,\n\t\t\t\tslashCycleState: this.slashCycleState,\n\t\t\t\tgetSlashCommands: () => this.slashCommands,\n\t\t\t\tgetEditorText: () => this.editor.getText(),\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tisShowingAutocomplete: () => this.editor.isShowingAutocomplete(),\n\t\t\t},\n\t\t\tcallbacks: {\n\t\t\t\tpersistUiState: (extra) => this.persistUiState(extra),\n\t\t\t\trequestRender: () => {\n\t\t\t\t\t// Slash hint updates can change editorContainer height (0 ↔ 1–2 lines).\n\t\t\t\t\t// Keep the scroll viewport sized so we never spill into scrollback.\n\t\t\t\t\tthis.viewportController.markEditorDirty();\n\t\t\t\t\tthis.updateScrollViewport({ fast: true });\n\t\t\t\t\tthis.ui.requestRender();\n\t\t\t\t},\n\t\t\t},\n\t\t\tinitialRecentCommands: this.recentCommands,\n\t\t\tinitialFavoriteCommands: this.favoriteCommands,\n\t\t});\n\n\t\tconst autocompleteProvider = new SmartAutocompleteProvider(\n\t\t\tthis.slashCommands,\n\t\t\tprocess.cwd(),\n\t\t);\n\t\tthis.defaultAutocompleteProvider = autocompleteProvider;\n\t\tthis.editor.setAutocompleteProvider(autocompleteProvider);\n\n\t\t// Keep the chat viewport within the terminal viewport. We recompute on\n\t\t// editor changes (including paste/history/backspace) so wrapping changes\n\t\t// don't push the UI into scrollback for a frame.\n\t\tconst previousOnChange = this.editor.onChange;\n\t\tthis.editor.onChange = (text) => {\n\t\t\tpreviousOnChange?.(text);\n\t\t\tthis.viewportController.markEditorDirty();\n\t\t\tthis.updateScrollViewport({ fast: true });\n\t\t};\n\n\t\tnew EditorView({\n\t\t\teditor: this.editor,\n\t\t\tgetCommandEntries: () => this.commandEntries,\n\t\t\tonFirstInput: () => this.dismissWelcomeAnimation(),\n\t\t\tonCommandExecuted: (name) =>\n\t\t\t\tthis.slashHintController.recordCommandUsage(name),\n\t\t\tonSubmit: (text) => {\n\t\t\t\tif (this.isAgentRunning) {\n\t\t\t\t\tvoid this.handleSteerSubmit(text);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvoid this.inputController.handleTextSubmit(text);\n\t\t\t},\n\t\t\tonFollowUp: (text) => {\n\t\t\t\tvoid this.handleFollowUpSubmit(text);\n\t\t\t},\n\t\t\tshouldFollowUp: () => this.isAgentRunning,\n\t\t\tcanSubmitEmpty: () => this.attachmentController.hasPendingAttachments(),\n\t\t\tshouldInterrupt: () =>\n\t\t\t\tthis.isAgentRunning || this.interruptController.isArmed(),\n\t\t\tonInterrupt: () => this.inputController.handleInterruptRequest(),\n\t\t\tonKeepPartial: () => this.inputController.handleKeepPartialRequest(),\n\t\t\tonCtrlC: () => {\n\t\t\t\tvoid this.handleCtrlC();\n\t\t\t},\n\t\t\tonCtrlD: () => {\n\t\t\t\tvoid this.inputController.handleCtrlDExit();\n\t\t\t},\n\t\t\tshowCommandPalette: () =>\n\t\t\t\tthis.getCommandPaletteView().showCommandPalette(),\n\t\t\tshowFileSearch: () => this.getFileSearchView().showFileSearch(),\n\t\t\tonEditLastQueuedFollowUp: () => this.editLastQueuedFollowUp(),\n\t\t});\n\n\t\t// Set up MCP and agent profile event handlers for notifications\n\t\tthis.mcpEventsController = createMcpEventsController({\n\t\t\tnotificationView: this.notificationView,\n\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t});\n\t}\n\n\tpublic async ensureContextBudgetBeforePrompt(): Promise<void> {\n\t\tawait this.compactionController.ensureContextBudgetBeforePrompt();\n\t}\n\n\tasync init(): Promise<void> {\n\t\tif (this.isInitialized) return;\n\n\t\tawait this.detectAndApplyTerminalTheme();\n\t\tthis.runConnectivityProbe().catch((error) => {\n\t\t\tconst msg =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Model connectivity probe failed.\";\n\t\t\tthis.notificationView.showError(msg);\n\t\t});\n\n\t\t// Setup UI layout\n\t\tthis.ui.addChild(this.headerContainer);\n\n\t\tif (this.zenMode) {\n\t\t\tthis.footer.setMode(\"solo\");\n\t\t} else {\n\t\t\tthis.renderHeader();\n\t\t}\n\n\t\t// Show welcome animation initially (can be disabled in minimal mode)\n\t\tif (!this.isMinimalMode() && !this.zenMode) {\n\t\t\tconst onboardingState = getProjectOnboardingState(process.cwd());\n\t\t\tthis.welcomeAnimation = new WelcomeAnimation(\n\t\t\t\t() => this.ui.requestRender(),\n\t\t\t\t{ animate: !this.shouldDisableAnimations() },\n\t\t\t);\n\t\t\tthis.welcomeAnimation.setProjectOnboarding(onboardingState);\n\t\t\tif (onboardingState.shouldShow) {\n\t\t\t\tmarkProjectOnboardingSeen(process.cwd());\n\t\t\t}\n\t\t\tthis.chatContainer.addChild(this.welcomeAnimation);\n\t\t}\n\n\t\tthis.ui.addChild(this.startupContainer);\n\t\t// Use scrollContainer instead of chatContainer directly for scrolling support\n\t\tthis.ui.addChild(this.scrollContainer);\n\t\tthis.ui.addChild(this.statusContainer);\n\n\t\t// Disable TUI's auto-clipping since ScrollContainer handles viewport\n\t\tthis.ui.setAutoClip(false);\n\t\t// Set initial viewport height\n\t\tthis.updateScrollViewport();\n\n\t\tthis.ui.addChild(new Spacer(1));\n\t\tthis.ui.addChild(this.editorContainer); // Use container that can hold editor or selector\n\t\tthis.refreshFooterHint();\n\t\tthis.ui.addChild(this.footer);\n\t\tthis.ui.setFocus(this.editor);\n\t\tthis.renderStartupAnnouncementsBlock();\n\t\tthis.lastKeybindingIssueSummary = summarizeKeybindingConfigIssues(\n\t\t\tinspectKeybindingConfig(),\n\t\t);\n\t\tstartTuiKeybindingWatcher({\n\t\t\tonReload: (report) => this.handleKeybindingConfigReload(report),\n\t\t});\n\n\t\tthis.ui.start();\n\t\tthis.isInitialized = true;\n\t}\n\n\tprivate getImportExportView(): ImportExportView {\n\t\tthis.importExportView ??= new ImportExportView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tapplyLoadedSessionContext: () => this.applyLoadedSessionContext(),\n\t\t\trecordShareArtifact: (filePath) =>\n\t\t\t\tthis.sessionContext.recordShareArtifact(filePath),\n\t\t\tloadImportedSession: (sessionFile) =>\n\t\t\t\tthis.loadImportedSession(sessionFile),\n\t\t});\n\t\treturn this.importExportView;\n\t}\n\n\tprivate getRunCommandView(): RunCommandView {\n\t\tthis.runCommandView ??= new RunCommandView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.runCommandView;\n\t}\n\n\tprivate getToolStatusView(): ToolStatusView {\n\t\tthis.toolStatusView ??= new ToolStatusView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetTools: () => this.agent.state.tools,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.toolStatusView;\n\t}\n\n\tprivate getDiagnosticsView(): DiagnosticsView {\n\t\tthis.diagnosticsView ??= createDiagnosticsView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\ttelemetryStatus: this.telemetryStatus,\n\t\t\ttrainingStatus: this.trainingStatus,\n\t\t\tversion: this.version,\n\t\t\texplicitApiKey: this.explicitApiKey,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetCurrentModelMetadata: () => this.currentModelMetadata,\n\t\t\tgetPendingTools: () => this.pendingTools,\n\t\t\tgitView: this.gitView,\n\t\t\ttodoStorePath: getTodoStorePath(),\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t\tgetAlertCount: () => this.footer.getUnseenAlertCount(),\n\t\t});\n\t\treturn this.diagnosticsView;\n\t}\n\n\tprivate getBashModeView(): BashModeView {\n\t\tthis.bashModeView ??= new BashModeView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tonStateChange: () => this.refreshFooterHint(),\n\t\t\teditor: this.editor,\n\t\t\tdefaultAutocomplete: this.defaultAutocompleteProvider,\n\t\t});\n\t\treturn this.bashModeView;\n\t}\n\n\tprivate getFeedbackView(): FeedbackView {\n\t\tthis.feedbackView ??= new FeedbackView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgitView: this.gitView,\n\t\t\tversion: this.version,\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t});\n\t\treturn this.feedbackView;\n\t}\n\n\tprivate getAboutView(): AboutView {\n\t\tthis.aboutView ??= new AboutView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tgitView: this.gitView,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tversion: this.version,\n\t\t\ttelemetryStatus: () => this.miscHandlers.describeTelemetryStatus(),\n\t\t\totelStatus: () => getOpenTelemetryStatus(),\n\t\t\tgetApprovalMode: () => this.approvalService.getMode(),\n\t\t});\n\t\treturn this.aboutView;\n\t}\n\n\tprivate getChangelogView(): ChangelogView {\n\t\tthis.changelogView ??= new ChangelogView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.changelogView;\n\t}\n\n\tprivate getHotkeysView(): HotkeysView {\n\t\tthis.hotkeysView ??= new HotkeysView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t});\n\t\treturn this.hotkeysView;\n\t}\n\n\tprivate getInfoView(): InfoView {\n\t\tthis.infoView ??= new InfoView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tgetSlashCommands: () => this.slashCommands,\n\t\t\tisInteractive: () => this.terminalCapabilities.isTTY,\n\t\t\tgetRecentCommands: () => this.recentCommands,\n\t\t\tgetFavoriteCommands: () => this.favoriteCommands,\n\t\t});\n\t\treturn this.infoView;\n\t}\n\n\tprivate getThinkingSelectorView(): ThinkingSelectorView {\n\t\tthis.thinkingSelectorView ??= new ThinkingSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.thinkingSelectorView;\n\t}\n\n\tprivate getThemeSelectorView(): ThemeSelectorView {\n\t\tthis.themeSelectorView ??= new ThemeSelectorView({\n\t\t\tcurrentTheme: () => getCurrentThemeName(),\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tonThemeChange: () => this.ui.requestRender(),\n\t\t});\n\t\treturn this.themeSelectorView;\n\t}\n\n\tprivate getModelSelectorView(): ModelSelectorView {\n\t\tthis.modelSelectorView ??= new ModelSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tmodelScope: this.modelScope,\n\t\t});\n\t\treturn this.modelSelectorView;\n\t}\n\n\tprivate getReportSelectorView(): ReportSelectorView {\n\t\tthis.reportSelectorView ??= new ReportSelectorView({\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tonSelect: (type) => {\n\t\t\t\tif (type === \"bug\") {\n\t\t\t\t\tthis.getFeedbackView().handleBugCommand();\n\t\t\t\t} else {\n\t\t\t\t\tthis.getFeedbackView().handleFeedbackCommand();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn this.reportSelectorView;\n\t}\n\n\tprivate getUpdateView(): UpdateView {\n\t\tthis.updateView ??= new UpdateView({\n\t\t\tcurrentVersion: this.version,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.updateView;\n\t}\n\n\tprivate getConfigView(): ConfigView {\n\t\tthis.configView ??= new ConfigView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.configView;\n\t}\n\n\tprivate getCostView(): CostView {\n\t\tthis.costView ??= new CostView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.costView;\n\t}\n\n\tprivate getQuotaView(): QuotaView {\n\t\tthis.quotaView ??= new QuotaView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tgetSessionTokenUsage: () => {\n\t\t\t\tconst stats = calculateFooterStats(this.agent.state);\n\t\t\t\treturn stats.totalInput + stats.totalOutput;\n\t\t\t},\n\t\t});\n\t\treturn this.quotaView;\n\t}\n\n\tprivate getTelemetryView(): TelemetryView {\n\t\tthis.telemetryView ??= new TelemetryView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tonStatusChanged: (status) => {\n\t\t\t\tthis.telemetryStatus = status;\n\t\t\t\tthis.diagnosticsView?.setTelemetryStatus(status);\n\t\t\t},\n\t\t});\n\t\treturn this.telemetryView;\n\t}\n\n\tprivate getTrainingView(): TrainingView {\n\t\tthis.trainingView ??= new TrainingView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t\tonStatusChanged: (status) => {\n\t\t\t\tthis.trainingStatus = status;\n\t\t\t\tthis.diagnosticsView?.setTrainingStatus(status);\n\t\t\t},\n\t\t});\n\t\treturn this.trainingView;\n\t}\n\n\tprivate getOllamaView(): OllamaView {\n\t\tthis.ollamaView ??= new OllamaView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t\tshowErrorMessage: (message) => this.notificationView.showError(message),\n\t\t\tgetRegisteredModels: () => getRegisteredModels(),\n\t\t\tonUseModel: (model) => {\n\t\t\t\tthis.agent.setModel(model);\n\t\t\t\tthis.sessionManager.saveModelChange(\n\t\t\t\t\t`${model.provider}/${model.id}`,\n\t\t\t\t\ttoSessionModelMetadata(model),\n\t\t\t\t);\n\t\t\t\tthis.notificationView.showToast(`Switched to ${model.id}`, \"success\");\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.ollamaView;\n\t}\n\n\tprivate getLspView(): LspView {\n\t\tthis.lspView ??= new LspView({\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfo: (message) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message) => this.notificationView.showError(message),\n\t\t});\n\t\treturn this.lspView;\n\t}\n\n\tprivate getFileSearchView(): FileSearchView {\n\t\tthis.fileSearchView ??= new FileSearchView({\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tchatContainer: this.chatContainer,\n\t\t\tui: this.ui,\n\t\t\tshowInfoMessage: (message) => this.notificationView.showInfo(message),\n\t\t});\n\t\treturn this.fileSearchView;\n\t}\n\n\tprivate getCommandPaletteView(): CommandPaletteView {\n\t\tthis.commandPaletteView ??= new CommandPaletteView({\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tgetCommands: () => this.slashCommands,\n\t\t\tgetRecentCommands: () =>\n\t\t\t\tthis.slashHintController?.getRecentCommands() ?? this.recentCommands,\n\t\t\tgetFavoriteCommands: () =>\n\t\t\t\tthis.slashHintController?.getFavoriteCommands() ??\n\t\t\t\tthis.favoriteCommands,\n\t\t\tonToggleFavorite: (name) =>\n\t\t\t\tthis.slashHintController?.toggleFavoriteCommand(name),\n\t\t});\n\t\treturn this.commandPaletteView;\n\t}\n\n\tprivate getUserMessageSelectorView(): UserMessageSelectorView {\n\t\tthis.userMessageSelectorView ??= new UserMessageSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonBranchCreated: () => {\n\t\t\t\t// Complete UI cleanup after branching (same as resetConversation)\n\t\t\t\tthis.sessionContext.resetArtifacts();\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.scrollContainer.clearHistory();\n\t\t\t\tthis.startupContainer.clear();\n\t\t\t\tthis.planView.syncHintWithStore();\n\t\t\t\tthis.footerHintsController.planHint = null;\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.userMessageSelectorView;\n\t}\n\n\tprivate getTreeSelectorView(): TreeSelectorView {\n\t\tthis.treeSelectorView ??= new TreeSelectorView({\n\t\t\tagent: this.agent,\n\t\t\tsessionManager: this.sessionManager,\n\t\t\teditor: this.editor,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonNavigated: () => {\n\t\t\t\tthis.sessionContext.resetArtifacts();\n\t\t\t\tthis.toolOutputView.clearTrackedComponents();\n\t\t\t\tthis.chatContainer.clear();\n\t\t\t\tthis.scrollContainer.clearHistory();\n\t\t\t\tthis.startupContainer.clear();\n\t\t\t\tthis.planView.syncHintWithStore();\n\t\t\t\tthis.footerHintsController.planHint = null;\n\t\t\t\tthis.footer.updateState(this.agent.state);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t\tthis.renderInitialMessages(this.agent.state);\n\t\t\t\tthis.ui.requestRender();\n\t\t\t},\n\t\t});\n\t\treturn this.treeSelectorView;\n\t}\n\n\tprivate getQueueModeSelectorView(): QueueModeSelectorView {\n\t\tthis.queueModeSelectorView ??= new QueueModeSelectorView({\n\t\t\tui: this.ui,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tonModeSelected: (kind, mode) => this.queueController.setMode(kind, mode),\n\t\t});\n\t\treturn this.queueModeSelectorView;\n\t}\n\n\tprivate getQueuePanelController(): QueuePanelController | null {\n\t\tif (!this.queueController.hasQueue()) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.queuePanelController ??= new QueuePanelController({\n\t\t\tqueueController: this.queueController,\n\t\t\tmodalManager: this.modalManager,\n\t\t\tui: this.ui,\n\t\t\tnotificationView: this.notificationView,\n\t\t\tqueueModeSelectorView: this.getQueueModeSelectorView(),\n\t\t\tchatContainer: this.chatContainer,\n\t\t});\n\t\treturn this.queuePanelController;\n\t}\n\n\tprivate getBranchController(): BranchController {\n\t\tthis.branchController ??= createBranchController({\n\t\t\tcallbacks: {\n\t\t\t\tisAgentRunning: () => this.isAgentRunning,\n\t\t\t\tgetMessages: () => this.agent.state.messages ?? [],\n\t\t\t\tshowSelector: () => this.getUserMessageSelectorView().show(),\n\t\t\t\tcreateBranchedSession: (count) =>\n\t\t\t\t\tthis.sessionManager.createBranchedSession(this.agent.state, count),\n\t\t\t\tsetSessionFile: (path) => this.sessionManager.setSessionFile(path),\n\t\t\t\tresetConversation: (messages, seed, notification) =>\n\t\t\t\t\tthis.resetConversation(messages, seed, notification, {\n\t\t\t\t\t\tpreserveSession: true,\n\t\t\t\t\t}),\n\t\t\t\taddContent: (text) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\t\t\t},\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.branchController;\n\t}\n\n\tprivate getClearController(): ClearController {\n\t\tthis.clearController ??= createClearController({\n\t\t\tcallbacks: {\n\t\t\t\tabortAndWait: async () => {\n\t\t\t\t\tthis.agent.abort();\n\t\t\t\t\tawait this.agent.waitForIdle();\n\t\t\t\t},\n\t\t\t\tsetAgentRunning: (running) => {\n\t\t\t\t\tthis.isAgentRunning = running;\n\t\t\t\t},\n\t\t\t\tcancelQueuedPrompts: () =>\n\t\t\t\t\tthis.queueController.cancelAll({ silent: true }),\n\t\t\t\tstopLoader: () => this.loaderView.stop(),\n\t\t\t\tclearStatusContainer: () => this.statusContainer.clear(),\n\t\t\t\tresetAgent: () => this.agent.reset(),\n\t\t\t\tresetSession: () => this.sessionManager.reset(),\n\t\t\t\tresetArtifacts: () => this.sessionContext.resetArtifacts(),\n\t\t\t\tclearActiveSkills: () => this.skillsController.clearActiveSkills(),\n\t\t\t\tclearToolTracking: () => this.toolOutputView.clearTrackedComponents(),\n\t\t\t\tclearChatContainer: () => this.chatContainer.clear(),\n\t\t\t\tclearScrollHistory: () => this.scrollContainer.clearHistory(),\n\t\t\t\tclearStartupContainer: () => this.startupContainer.clear(),\n\t\t\t\tsyncPlanHint: () => this.planView.syncHintWithStore(),\n\t\t\t\tsetPlanHint: (hint) => {\n\t\t\t\t\tthis.footerHintsController.planHint = hint;\n\t\t\t\t},\n\t\t\t\tclearEditor: () => this.editor.setText(\"\"),\n\t\t\t\tclearPendingTools: () => this.pendingTools.clear(),\n\t\t\t\tclearInterruptState: () => this.interruptController.clear(),\n\t\t\t\trenderInitialMessages: (state) => this.renderInitialMessages(state),\n\t\t\t\tgetAgentState: () => this.agent.state,\n\t\t\t\tupdateFooterState: (state) => this.footer.updateState(state),\n\t\t\t\trefreshFooterHint: () => this.refreshFooterHint(),\n\t\t\t\trunSessionEndHooks: (reason) =>\n\t\t\t\t\tapplySessionEndHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\treason,\n\t\t\t\t\t}),\n\t\t\t\trunSessionStartHooks: (source) =>\n\t\t\t\t\tapplySessionStartHooks({\n\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\tsource,\n\t\t\t\t\t}),\n\t\t\t\tshowSuccess: (msg) => this.notificationView.showToast(msg, \"success\"),\n\t\t\t\tshowError: (msg) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(msg, 1, 1));\n\t\t\t\t},\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.clearController;\n\t}\n\n\tprivate getCustomCommandsController(): CustomCommandsController {\n\t\tthis.customCommandsController ??= createCustomCommandsController({\n\t\t\tcwd: process.cwd(),\n\t\t\tcallbacks: {\n\t\t\t\taddContent: (text) => {\n\t\t\t\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\t\t\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\t\t\t},\n\t\t\t\tsetEditorText: (text) => this.editor.setText(text),\n\t\t\t\tshowToast: (msg, type) => this.notificationView.showToast(msg, type),\n\t\t\t\trequestRender: () => this.ui.requestRender(),\n\t\t\t},\n\t\t});\n\t\treturn this.customCommandsController;\n\t}\n\n\tasync handleEvent(event: AgentEvent, state: AgentState): Promise<void> {\n\t\tthis.perfCollector.handleAgentEvent(event);\n\t\tawait this.agentEventBridge.handleEvent(event, state);\n\t\tthis.queueController.syncFromAgent();\n\t}\n\n\trenderInitialMessages(state: AgentState): void {\n\t\tthis.sessionStateController.renderInitialMessages(state);\n\t}\n\n\tprivate renderConversationView(): void {\n\t\tthis.sessionStateController.renderConversationView();\n\t}\n\n\tasync getUserInput(): Promise<PromptPayload> {\n\t\treturn this.inputController.getUserInput();\n\t}\n\n\tsetInterruptCallback(\n\t\tcallback: (options?: { keepPartial?: boolean }) => void,\n\t): void {\n\t\tthis.inputController.setInterruptCallback(callback);\n\t}\n\n\tprivate async handleCtrlC(): Promise<void> {\n\t\tconst bashModeView = this.bashModeView;\n\t\tif (bashModeView?.isCommandRunning()) {\n\t\t\tif (bashModeView.abortCurrentCommand()) {\n\t\t\t\tthis.runController.recordCtrlC();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tawait this.runController.handleCtrlC();\n\t}\n\n\tprivate renderHeader(): void {\n\t\tthis.headerContainer.clear();\n\t\tthis.viewportController.markHeaderDirty();\n\n\t\t// The full instruction panel is helpful but very tall; when it pushes the UI\n\t\t// into scrollback it becomes a major source of flicker (terminals can't update\n\t\t// scrollback, so we end up full-redrawing). Default to a compact header unless\n\t\t// we have enough vertical room.\n\t\tconst rows = process.stdout.rows ?? 24;\n\t\tconst showFullPanel = rows >= 40;\n\n\t\tif (showFullPanel) {\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\tthis.headerContainer.addChild(\n\t\t\t\tnew InstructionPanelComponent(this.version),\n\t\t\t);\n\t\t\tthis.headerContainer.addChild(new Spacer(1));\n\t\t\treturn;\n\t\t}\n\n\t\tconst title =\n\t\t\tchalk.bold(`maestro v${this.version}`) + chalk.gray(\" · EvalOps\");\n\t\tconst hintParts = [\n\t\t\t`${chalk.gray(\"esc\")} interrupt`,\n\t\t\t`${chalk.gray(\"ctrl+c\")} clear`,\n\t\t\t`${chalk.gray(\n\t\t\t\tgetTuiKeybindingLabel(\"command-palette\").toLowerCase(),\n\t\t\t)} palette`,\n\t\t\t`${chalk.gray(\"/help\")} commands`,\n\t\t];\n\t\tconst hints = hintParts.join(chalk.gray(\" │ \"));\n\t\tthis.headerContainer.addChild(new Text(`${title}\\n${hints}`, 1, 0));\n\t\tthis.headerContainer.addChild(new Spacer(1));\n\t}\n\n\tprivate handleContextCommand(_context: CommandExecutionContext): void {\n\t\tconst contextView = new ContextView({\n\t\t\tstate: this.agent.state,\n\t\t\tonClose: () => this.modalManager.pop(),\n\t\t});\n\t\tthis.modalManager.push(contextView);\n\t}\n\n\tprivate updateQueuedInputPreview(): void {\n\t\tconst preview = this.queueController.buildInlinePreview();\n\t\tthis.queuedInputPreview.setText(preview ? chalk.dim(preview) : \"\");\n\t\tthis.viewportController.markEditorDirty();\n\t\tthis.updateScrollViewport();\n\t}\n\n\tprivate editLastQueuedFollowUp(): boolean {\n\t\tif (this.queueController.getQueuedFollowUpCount() === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst currentDraft = this.captureEditedQueuedFollowUpDraft();\n\t\tvoid this.rotateQueuedFollowUpForEditing(currentDraft);\n\t\treturn true;\n\t}\n\n\tprivate restoreQueuedPromptBatchToEditor(entries: QueuedPrompt[]): void {\n\t\tif (entries.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.editingQueuedFollowUp =\n\t\t\tentries.length === 1 && entries[0]?.kind === \"followUp\"\n\t\t\t\t? entries[0]\n\t\t\t\t: null;\n\t\tthis.attachmentController.clearPendingAttachments();\n\t\tif (entries.some((entry) => (entry.attachments?.length ?? 0) > 0)) {\n\t\t\tthis.attachmentController.restoreQueuedAttachments(entries);\n\t\t} else {\n\t\t\tthis.editor.setText(entries.map((entry) => entry.text).join(\"\\n\\n\"));\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate captureCurrentComposerDraftForQueueRestore(): QueuedPrompt | null {\n\t\tconst payload = this.attachmentController.snapshotAttachments(\n\t\t\tthis.editor.getText(),\n\t\t);\n\t\tconst hasText = payload.text.trim().length > 0;\n\t\tconst hasAttachments = (payload.attachments?.length ?? 0) > 0;\n\t\tif (!hasText && !hasAttachments) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tkind: \"prompt\",\n\t\t\ttext: payload.text,\n\t\t\tattachments: payload.attachments,\n\t\t};\n\t}\n\n\tprivate captureEditedQueuedFollowUpDraft(): QueuedPrompt | null {\n\t\tif (!this.editingQueuedFollowUp) {\n\t\t\treturn null;\n\t\t}\n\t\tconst payload = this.attachmentController.snapshotAttachments(\n\t\t\tthis.editor.getText(),\n\t\t);\n\t\tconst hasText = payload.text.trim().length > 0;\n\t\tconst hasAttachments = (payload.attachments?.length ?? 0) > 0;\n\t\tif (!hasText && !hasAttachments) {\n\t\t\treturn null;\n\t\t}\n\t\tif (payload.text.trimStart().startsWith(\"/\")) {\n\t\t\treturn null;\n\t\t}\n\t\treturn {\n\t\t\t...this.editingQueuedFollowUp,\n\t\t\ttext: payload.text,\n\t\t\tattachments: payload.attachments,\n\t\t};\n\t}\n\n\tprivate async rotateQueuedFollowUpForEditing(\n\t\tcurrentDraft: QueuedPrompt | null,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst restored =\n\t\t\t\tawait this.queueController.restoreQueuedFollowUpForEditing(\n\t\t\t\t\tcurrentDraft,\n\t\t\t\t);\n\t\t\tif (!restored) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.restoreQueuedPromptBatchToEditor([restored]);\n\t\t} catch (error) {\n\t\t\tthis.showError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to rotate queued follow-up for editing.\",\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate mergeQueuedPromptBatch(entries: QueuedPrompt[]): PromptPayload {\n\t\tconst text = entries\n\t\t\t.map((entry) => entry.text.trim())\n\t\t\t.filter((segment) => segment.length > 0)\n\t\t\t.join(\"\\n\\n\");\n\t\tconst attachments = entries.flatMap((entry) => entry.attachments ?? []);\n\t\treturn {\n\t\t\ttext,\n\t\t\tattachments: attachments.length > 0 ? attachments : undefined,\n\t\t};\n\t}\n\n\tprivate async handleInterruptedQueue(options: {\n\t\tkeepPartial: boolean;\n\t}): Promise<void> {\n\t\tif (!options.keepPartial) {\n\t\t\tconst steeringBatch =\n\t\t\t\tthis.queueController.drainSteeringBatchForInterrupt();\n\t\t\tif (steeringBatch.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.agent.waitForIdle();\n\t\t\t\t\tconst payload = this.mergeQueuedPromptBatch(steeringBatch);\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload.text.trim().length > 0 ||\n\t\t\t\t\t\t(payload.attachments?.length ?? 0) > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tvoid runUserPromptWithRecovery({\n\t\t\t\t\t\t\tagent: this.agent,\n\t\t\t\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\t\t\t\tcwd: process.cwd(),\n\t\t\t\t\t\t\tprompt: payload.text,\n\t\t\t\t\t\t\tattachmentCount: payload.attachments?.length ?? 0,\n\t\t\t\t\t\t\tattachmentNames: payload.attachments?.map(\n\t\t\t\t\t\t\t\t(attachment) => attachment.fileName,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\texecute: () =>\n\t\t\t\t\t\t\t\tthis.agent.prompt(payload.text, payload.attachments),\n\t\t\t\t\t\t\tgetPostKeepMessages: withMcpPostKeepMessages(\n\t\t\t\t\t\t\t\t(preservedMessages) =>\n\t\t\t\t\t\t\t\t\tthis.collectActiveSkillMessagesForCompaction(\n\t\t\t\t\t\t\t\t\t\tpreservedMessages,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}).catch((error) => {\n\t\t\t\t\t\t\tthis.restoreQueuedPromptBatchToEditor(steeringBatch);\n\t\t\t\t\t\t\tconst message =\n\t\t\t\t\t\t\t\terror instanceof Error\n\t\t\t\t\t\t\t\t\t? error.message\n\t\t\t\t\t\t\t\t\t: String(error ?? \"unknown\");\n\t\t\t\t\t\t\tthis.notificationView.showError(\n\t\t\t\t\t\t\t\t`Failed to submit queued steering: ${message}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tthis.notificationView.showToast(\n\t\t\t\t\t\tsteeringBatch.length === 1\n\t\t\t\t\t\t\t? \"Submitting queued steer.\"\n\t\t\t\t\t\t\t: `Submitting ${steeringBatch.length} queued steers.`,\n\t\t\t\t\t\t\"info\",\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.restoreQueuedPromptBatchToEditor(steeringBatch);\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\t\t\tthis.notificationView.showError(\n\t\t\t\t\t\t`Failed to submit queued steering: ${message}`,\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst currentDraft = this.captureCurrentComposerDraftForQueueRestore();\n\t\tconst restored = this.queueController.restoreQueuedPrompts(currentDraft);\n\t\tthis.restoreQueuedPromptBatchToEditor(restored);\n\t}\n\n\tprivate handleFooterCommand(context: CommandExecutionContext): void {\n\t\tthis.uiStateController.handleFooterCommand(context, {\n\t\t\tgetToastHistory: (count: number) => this.footer.getToastHistory(count),\n\t\t\tclearAlerts: () => this.footer.clearAlerts(),\n\t\t});\n\t}\n\n\tprivate handleCompactToolsCommand(rawInput: string): void {\n\t\tthis.toolOutputView.handleCompactToolsCommand(rawInput);\n\t\tthis.persistUiState();\n\t}\n\n\tprivate handleSteerCommand(context: CommandExecutionContext): void {\n\t\tconst text = context.argumentText.trim();\n\t\tif (!text) {\n\t\t\tcontext.showError(\"Usage: /steer <message>\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst wasRunning = this.isAgentRunning;\n\t\tif (wasRunning && !this.queueController.canQueueSteering()) {\n\t\t\tcontext.showError(\n\t\t\t\t\"Steering mode set to one-at-a-time. Use /queue mode steer all to allow multiple steering messages.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (!wasRunning) {\n\t\t\tvoid this.inputController.handleTextSubmit(text);\n\t\t\treturn;\n\t\t}\n\t\tvoid this.agent\n\t\t\t.steer(this.buildQueuedUserMessage({ text }))\n\t\t\t.then(() => {\n\t\t\t\tthis.queueController.syncFromAgent();\n\t\t\t\tthis.notificationView.showToast(\n\t\t\t\t\t\"Queued steer for the next tool boundary.\",\n\t\t\t\t\t\"info\",\n\t\t\t\t);\n\t\t\t\tthis.refreshFooterHint();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconst message =\n\t\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\t\tcontext.showError(`Failed to queue steer: ${message}`);\n\t\t\t});\n\t}\n\n\tprivate async handleReviewCommand(\n\t\t_context: CommandExecutionContext,\n\t): Promise<void> {\n\t\tif (this.isAgentRunning) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Wait for the current run to finish before starting /review.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst reviewContext = this.gitView.getReviewContext();\n\t\tif (!reviewContext.ok) {\n\t\t\tthis.notificationView.showError(\n\t\t\t\treviewContext.error ?? \"Failed to collect git data for review.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst hasDiff =\n\t\t\treviewContext.stagedDiff.trim().length > 0 ||\n\t\t\treviewContext.worktreeDiff.trim().length > 0;\n\t\tif (!hasDiff) {\n\t\t\tthis.notificationView.showInfo(\"Working tree clean. Nothing to review.\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst prompt = buildReviewPrompt(reviewContext);\n\t\ttry {\n\t\t\tawait runUserPromptWithRecovery({\n\t\t\t\tagent: this.agent,\n\t\t\t\tsessionManager: this.sessionManager,\n\t\t\t\tcwd: process.cwd(),\n\t\t\t\tprompt,\n\t\t\t\texecute: () => this.agent.prompt(prompt),\n\t\t\t\tgetPostKeepMessages: withMcpPostKeepMessages((preservedMessages) =>\n\t\t\t\t\tthis.collectActiveSkillMessagesForCompaction(preservedMessages),\n\t\t\t\t),\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error ? error.message : String(error ?? \"unknown\");\n\t\t\tthis.notificationView.showError(\n\t\t\t\t`/review failed to run: ${message.slice(0, 200)}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Skills, history rendering, and formatting have been extracted to:\n\t// - skills-controller.ts\n\t// - history-controller.ts\n\t// - utils/text-preview.ts\n\n\tprivate async handleStatsCommand(\n\t\t_context: CommandExecutionContext,\n\t): Promise<void> {\n\t\tthis.getDiagnosticsView().handleStatusCommand();\n\t\tconst costContext = this.createSyntheticContext(\"cost\", \"today\");\n\t\tthis.getCostView().handleCostCommand(costContext);\n\t}\n\n\tprivate clearEditor(): void {\n\t\tthis.editor.setText(\"\");\n\t\tthis.attachmentController.clearPendingAttachments();\n\t\tthis.editingQueuedFollowUp = null;\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async handleFollowUpSubmit(text: string): Promise<void> {\n\t\tif (this.isAgentRunning && !this.queueController.canQueueFollowUp()) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Follow-up mode set to one-at-a-time. Use /queue mode followup all to enable follow-ups while running.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning) {\n\t\t\tconst payload = await this.inputController.prepareQueuedPayload(text);\n\t\t\tif (!payload) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait this.agent.followUp(this.buildQueuedUserMessage(payload));\n\t\t\tthis.clearEditor();\n\t\t\tthis.queueController.syncFromAgent();\n\t\t\tthis.notificationView.showToast(\"Queued follow-up message.\", \"info\");\n\t\t\tthis.refreshFooterHint();\n\t\t\treturn;\n\t\t}\n\t\tconst queued = await this.inputController.handleFollowUpSubmit(text);\n\t\tif (!queued) {\n\t\t\treturn;\n\t\t}\n\t\tthis.clearEditor();\n\t\tthis.refreshFooterHint();\n\t}\n\n\tprivate async handleSteerSubmit(text: string): Promise<void> {\n\t\tconst payload = await this.inputController.prepareQueuedPayload(text);\n\t\tif (!payload) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning && !this.queueController.canQueueSteering()) {\n\t\t\tthis.notificationView.showInfo(\n\t\t\t\t\"Steering mode set to one-at-a-time. Use /queue mode steer all to enable multiple steering messages.\",\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tif (this.isAgentRunning) {\n\t\t\tawait this.agent.steer(this.buildQueuedUserMessage(payload));\n\t\t\tthis.clearEditor();\n\t\t\tthis.queueController.syncFromAgent();\n\t\t\tthis.notificationView.showToast(\n\t\t\t\t\"Queued steer for the next tool boundary.\",\n\t\t\t\t\"info\",\n\t\t\t);\n\t\t\tthis.refreshFooterHint();\n\t\t\treturn;\n\t\t}\n\t\tthis.inputController.submitPreparedPayload(payload);\n\t}\n\n\tprivate buildQueuedUserMessage(payload: PromptPayload): AppMessage {\n\t\treturn {\n\t\t\trole: \"user\",\n\t\t\tcontent: payload.text,\n\t\t\tattachments: payload.attachments?.length\n\t\t\t\t? payload.attachments\n\t\t\t\t: undefined,\n\t\t\ttimestamp: Date.now(),\n\t\t};\n\t}\n\n\t// consumePendingAttachmentMarkers, handleClipboardImagePaste,\n\t// restoreQueuedAttachments extracted to attachment-controller.ts\n\t// updateTerminalTitle, clearTerminalTitle, handleAutoRetryEvent,\n\t// handleExternalEditor, handleCtrlZ, handleTestVerificationResult,\n\t// describeTelemetryStatus extracted to misc-handlers.ts\n\n\tprivate handleApprovalRequired(request: ActionApprovalRequest): void {\n\t\tthis.approvalController?.enqueue(request);\n\t\tconst component = this.pendingTools.get(request.id);\n\t\tcomponent?.setPendingStatus(\n\t\t\trequest.actionDescription ?? request.reason ?? \"Awaiting approval\",\n\t\t);\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleApprovalResolved(\n\t\trequest: ActionApprovalRequest,\n\t\tdecision: ActionApprovalDecision,\n\t): void {\n\t\tthis.approvalController?.resolve(request, decision);\n\t\tconst component = this.pendingTools.get(request.id);\n\t\tcomponent?.setPendingStatus(null);\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleToolRetryRequired(request: ToolRetryRequest): void {\n\t\tthis.toolRetryController?.enqueue(request);\n\t\tconst component = this.pendingTools.get(request.toolCallId);\n\t\tcomponent?.setPendingStatus(request.summary ?? \"Retry required\");\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate handleToolRetryResolved(\n\t\trequest: ToolRetryRequest,\n\t\tdecision: ToolRetryDecision,\n\t): void {\n\t\tthis.toolRetryController?.resolve(request, decision);\n\t\tconst component = this.pendingTools.get(request.toolCallId);\n\t\tcomponent?.setPendingStatus(null);\n\t\tif (decision.action === \"abort\") {\n\t\t\tthis.agent.abort();\n\t\t}\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate persistUiState(extra?: Partial<UiState>): void {\n\t\tconst recentCommands =\n\t\t\tthis.slashHintController?.getRecentCommands() ?? this.recentCommands;\n\t\tconst favoriteCommands =\n\t\t\tthis.slashHintController?.getFavoriteCommands() ?? this.favoriteCommands;\n\t\tsaveUiState({\n\t\t\tqueueMode: this.queueController.getFollowUpMode(),\n\t\t\tsteeringMode: this.queueController.getSteeringMode(),\n\t\t\tfollowUpMode: this.queueController.getFollowUpMode(),\n\t\t\tcompactTools: this.toolOutputView.isCompact(),\n\t\t\tfooterMode: this.footerMode,\n\t\t\treducedMotion: this.reducedMotion,\n\t\t\tcleanMode: this.cleanMode,\n\t\t\thideThinkingBlocks: this.hideThinkingBlocks,\n\t\t\trecentCommands,\n\t\t\tfavoriteCommands: Array.from(favoriteCommands),\n\t\t\t...extra,\n\t\t});\n\t\tsaveCommandPrefs({\n\t\t\tfavorites: Array.from(favoriteCommands),\n\t\t\trecents: recentCommands,\n\t\t});\n\t}\n\n\tprivate resetConversation(\n\t\tmessages: AppMessage[],\n\t\teditorSeed?: string,\n\t\ttoastMessage?: string,\n\t\toptions?: { preserveSession?: boolean; persistMessages?: boolean },\n\t): void {\n\t\tthis.sessionStateController.resetConversation(\n\t\t\tmessages,\n\t\t\teditorSeed,\n\t\t\ttoastMessage,\n\t\t\toptions,\n\t\t);\n\t}\n\n\tprivate createCommandContext({\n\t\tcommand,\n\t\trawInput,\n\t\targumentText,\n\t\tparsedArgs,\n\t}: {\n\t\tcommand: SlashCommand;\n\t\trawInput: string;\n\t\targumentText: string;\n\t\tparsedArgs?: Record<string, unknown>;\n\t}): CommandExecutionContext {\n\t\treturn {\n\t\t\tcommand,\n\t\t\trawInput,\n\t\t\targumentText,\n\t\t\tparsedArgs,\n\t\t\tshowInfo: (message: string) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t\trenderHelp: () => this.renderCommandHelp(command),\n\t\t};\n\t}\n\n\tprivate createSyntheticContext(\n\t\tcommandName: string,\n\t\targumentText: string,\n\t): CommandExecutionContext {\n\t\tconst command = this.getSlashCommandByName(commandName);\n\t\treturn {\n\t\t\tcommand,\n\t\t\trawInput: `/${commandName}${argumentText ? ` ${argumentText}` : \"\"}`,\n\t\t\targumentText,\n\t\t\tshowInfo: (message: string) => this.notificationView.showInfo(message),\n\t\t\tshowError: (message: string) => this.notificationView.showError(message),\n\t\t\trenderHelp: () => this.renderCommandHelp(command),\n\t\t};\n\t}\n\n\tprivate getSlashCommandByName(name: string): SlashCommand {\n\t\treturn (\n\t\t\tthis.slashCommands.find(\n\t\t\t\t(command) => command.name.toLowerCase() === name.toLowerCase(),\n\t\t\t) ?? { name }\n\t\t);\n\t}\n\n\tprivate renderCommandHelp(command: SlashCommand): void {\n\t\tconst help = formatCommandHelp(command);\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(help, 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate pushCommandOutput(text: string): void {\n\t\tthis.chatContainer.addChild(new Spacer(1));\n\t\tthis.chatContainer.addChild(new Text(text, 1, 0));\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate dismissWelcomeAnimation(): void {\n\t\tif (!this.welcomeAnimation) {\n\t\t\treturn;\n\t\t}\n\t\tthis.welcomeAnimation.stop();\n\t\tthis.chatContainer.removeChild(this.welcomeAnimation);\n\t\tthis.welcomeAnimation = null;\n\t}\n\n\tprivate shouldDisableAnimations(): boolean {\n\t\t// Reduced motion is a user preference (and defaults on SSH/tmux).\n\t\t// MAESTRO_DISABLE_ANIMATIONS is an explicit hard-disable switch.\n\t\treturn this.reducedMotion || areAnimationsDisabled();\n\t}\n\n\tshowError(errorMessage: string): void {\n\t\tthis.notificationView.showError(errorMessage);\n\t\tthis.provideFailureHints(errorMessage);\n\t}\n\n\tshowInfo(message: string): void {\n\t\tthis.notificationView.showInfo(message);\n\t}\n\n\tpublic restoreActiveSkillsAfterCompaction(): number {\n\t\treturn this.skillsController.restoreActiveSkillsAfterCompaction();\n\t}\n\n\tpublic collectActiveSkillMessagesForCompaction(\n\t\tpreservedMessages?: AppMessage[],\n\t): AppMessage[] {\n\t\treturn this.skillsController.collectActiveSkillMessagesForCompaction(\n\t\t\tpreservedMessages,\n\t\t);\n\t}\n\n\tpublic collectOrderedCompactionRestorationMessages(\n\t\tpreservedMessages: AppMessage[],\n\t): AppMessage[] {\n\t\treturn [\n\t\t\t...collectPlanMessagesForCompaction(preservedMessages),\n\t\t\t...collectBackgroundTaskMessagesForCompaction(preservedMessages),\n\t\t\t...collectMcpMessagesForCompaction(\n\t\t\t\tpreservedMessages,\n\t\t\t\tmcpManager.getStatus().servers,\n\t\t\t),\n\t\t\t...this.collectActiveSkillMessagesForCompaction(preservedMessages),\n\t\t];\n\t}\n\n\tpublic refreshFooterHint(): void {\n\t\tthis.footerHintsController.refresh();\n\t}\n\n\tprivate buildWorkingFooterHint(): string {\n\t\treturn this.queueController.buildRunningHint({\n\t\t\tbaseHint: this.workingFooterHint,\n\t\t\tcanQueueFollowUp: this.canQueueFollowUpWhileRunning(),\n\t\t});\n\t}\n\n\tprivate canQueueFollowUpWhileRunning(): boolean {\n\t\tif (!this.isAgentRunning || !this.queueController.canQueueFollowUp()) {\n\t\t\treturn false;\n\t\t}\n\t\treturn canQueueFollowUpShortcut({\n\t\t\ttext: this.editor.getText(),\n\t\t\thasAttachments: this.attachmentController.hasPendingAttachments(),\n\t\t});\n\t}\n\n\tprivate handleEditorTyping(): void {\n\t\tthis.footer.clearToast();\n\t\tthis.slashHintController?.refreshSlashHintDebounced();\n\t}\n\n\tpublic extractTextFromAppMessage(message: AppMessage): string {\n\t\tconst rawContent = (message as { content?: unknown }).content;\n\t\tif (typeof rawContent === \"string\") {\n\t\t\treturn rawContent;\n\t\t}\n\t\tif (!Array.isArray(rawContent)) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst textParts: string[] = [];\n\t\tfor (const chunk of rawContent as Array<Record<string, unknown>>) {\n\t\t\tconst typedChunk = chunk as {\n\t\t\t\ttype?: unknown;\n\t\t\t\ttext?: unknown;\n\t\t\t\tthinking?: unknown;\n\t\t\t};\n\t\t\tconst type =\n\t\t\t\ttypeof typedChunk.type === \"string\" ? typedChunk.type : undefined;\n\t\t\tif (type === \"text\" && typeof typedChunk.text === \"string\") {\n\t\t\t\ttextParts.push(typedChunk.text);\n\t\t\t} else if (\n\t\t\t\ttype === \"thinking\" &&\n\t\t\t\ttypeof typedChunk.thinking === \"string\"\n\t\t\t) {\n\t\t\t\ttextParts.push(typedChunk.thinking);\n\t\t\t}\n\t\t}\n\t\treturn textParts.join(\"\\n\");\n\t}\n\n\tprivate maybeShowContextWarning(stats: FooterStats): void {\n\t\tthis.footerHintsController.maybeShowContextWarning(stats);\n\t}\n\n\tprivate provideFailureHints(message: string): void {\n\t\tconst normalized = message.toLowerCase();\n\t\tconst hints: string[] = [];\n\t\tif (/(api key|credential|unauthorized|forbidden|token)/.test(normalized)) {\n\t\t\thints.push(\"Check credentials with /diag keys\");\n\t\t}\n\t\tif (/(context|token|length|window)/.test(normalized)) {\n\t\t\thints.push(\"Use /compact or /share to trim history\");\n\t\t}\n\t\tif (/(tool|bash|edit|read)/.test(normalized)) {\n\t\t\thints.push(\"Inspect failures via /tools failures\");\n\t\t}\n\t\tif (!hints.length) {\n\t\t\treturn;\n\t\t}\n\t\tthis.notificationView.showInfo(`Hint: ${hints.join(\" • \")}`);\n\t}\n\n\tprivate applyLoadedSessionContext(): void {\n\t\tthis.sessionStateController.applyLoadedSessionContext();\n\t}\n\n\tprivate loadImportedSession(sessionFile: string): void {\n\t\tthis.sessionManager.setSessionFile(sessionFile);\n\t\tthis.applyLoadedSessionContext();\n\t\tconst loadedMessages = this.sessionManager.loadMessages();\n\t\tthis.sessionStateController.resetConversation(\n\t\t\tloadedMessages,\n\t\t\tundefined,\n\t\t\tformatLoadedSessionToast({\n\t\t\t\tid: this.sessionManager.getSessionId(),\n\t\t\t\tmessageCount: loadedMessages.length,\n\t\t\t}),\n\t\t\t{ preserveSession: true, persistMessages: false },\n\t\t);\n\t}\n\n\tprivate isMinimalMode(): boolean {\n\t\treturn this.minimalMode;\n\t}\n\n\tprivate showPerfReport(): void {\n\t\tconst snap = this.perfCollector.snapshot();\n\t\tthis.notificationView.showInfo(formatPerfReport(snap));\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tawait this.agentEventBridge?.recordSessionClosed({\n\t\t\tcloseReason: \"MAESTRO_CLOSE_REASON_USER_STOPPED\",\n\t\t\tcloseMessage: \"TUI stopped\",\n\t\t});\n\t\tthis.slashHintController?.dispose();\n\t\tthis.loaderView.stop();\n\t\tthis.backgroundTasksController.stop();\n\t\tstopTuiKeybindingWatcher();\n\t\t// Clean up MCP and composer event listeners\n\t\tthis.mcpEventsController.stop();\n\t\tif (this.isInitialized) {\n\t\t\tthis.ui.stop();\n\t\t\tthis.isInitialized = false;\n\t\t}\n\t\tthis.miscHandlers.clearTerminalTitle();\n\t\t// End session recovery tracking and create final backup\n\t\tthis.sessionRecoveryManager.endSession();\n\t\t// Stop test verification service\n\t\tthis.testVerificationService?.stop();\n\t\tthis.footer.dispose();\n\t\tprocess.stdout.off(\"resize\", this.resizeHandler);\n\t}\n\n\tprivate async getActualAuthState() {\n\t\treturn getTuiAuthState(this.agent.state.model?.provider);\n\t}\n\n\tprivate async detectAndApplyTerminalTheme(): Promise<void> {\n\t\tconst auto = process.env.MAESTRO_TUI_AUTO_THEME;\n\t\tif (auto === \"0\" || auto === \"false\") return;\n\t\tconst detected = await probeTerminalBackground();\n\t\tif (!detected) return;\n\t\tconst current = getCurrentThemeName();\n\t\tif (current !== \"dark\" && current !== \"light\") return;\n\t\tif (detected === current) return;\n\t\tconst { success } = setTheme(detected);\n\t\tif (success) {\n\t\t\tthis.ui.requestRender();\n\t\t}\n\t}\n\n\tprivate configureRenderThrottle(): void {\n\t\tconst envValue = process.env.MAESTRO_TUI_RENDER_INTERVAL_MS;\n\t\tlet interval = Number.parseInt(envValue ?? \"\", 10);\n\t\tif (!Number.isFinite(interval)) {\n\t\t\tif (process.env.SSH_CONNECTION || process.env.SSH_TTY) {\n\t\t\t\tinterval = SSH_RENDER_INTERVAL_MS;\n\t\t\t} else {\n\t\t\t\tinterval = 0;\n\t\t\t}\n\t\t}\n\t\tthis.ui.setMinRenderInterval(Math.max(0, interval));\n\t}\n\n\tprivate refreshTerminalCapabilities(): void {\n\t\tthis.terminalCapabilities = {\n\t\t\tisTTY: Boolean(process.stdout.isTTY && process.stdin.isTTY),\n\t\t\tcolumns: process.stdout.columns ?? 80,\n\t\t\trows: process.stdout.rows ?? 24,\n\t\t\tcolorLevel: chalk.level || 0,\n\t\t};\n\t\tif (!this.zenMode) {\n\t\t\tthis.renderHeader();\n\t\t}\n\t\t// Update scroll viewport on resize\n\t\tthis.updateScrollViewport();\n\t}\n\n\t/**\n\t * Updates the scroll container's viewport height based on terminal size.\n\t * Called on init and resize.\n\t */\n\tprivate updateScrollViewport(options: { fast?: boolean } = {}): void {\n\t\tthis.viewportController.updateScrollViewport(options);\n\t}\n\n\t/**\n\t * Handles scroll keyboard shortcuts.\n\t * @returns true if the input was handled as a scroll command\n\t */\n\thandleScrollInput(data: string): boolean {\n\t\treturn this.scrollContainer.handleInput(data);\n\t}\n\n\t/**\n\t * Scrolls to the bottom of the chat and re-enables sticky scroll.\n\t */\n\tscrollToBottom(): void {\n\t\tthis.scrollContainer.scrollToBottom();\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Scrolls up by one page.\n\t */\n\tscrollPageUp(): void {\n\t\tthis.scrollContainer.pageUp();\n\t\tthis.ui.requestRender();\n\t}\n\n\t/**\n\t * Scrolls down by one page.\n\t */\n\tscrollPageDown(): void {\n\t\tthis.scrollContainer.pageDown();\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate renderStartupAnnouncementsBlock(): void {\n\t\trenderStartupAnnouncements({\n\t\t\tcontainer: this.startupContainer,\n\t\t\tui: this.ui,\n\t\t\tupdateNotice: this.updateNotice,\n\t\t\tstartupChangelog: this.startupChangelog,\n\t\t\tstartupChangelogSummary: this.startupChangelogSummary,\n\t\t\tmodelScope: this.modelScope,\n\t\t\tonLayoutChange: () => {\n\t\t\t\tthis.viewportController.markStartupDirty();\n\t\t\t\tthis.updateScrollViewport();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate handleKeybindingConfigReload(report: KeybindingConfigReport): void {\n\t\tconst nextIssueSummary = summarizeKeybindingConfigIssues(report);\n\t\tif (\n\t\t\tnextIssueSummary &&\n\t\t\tnextIssueSummary !== this.lastKeybindingIssueSummary\n\t\t) {\n\t\t\tthis.notificationView.showToast(nextIssueSummary, \"warn\");\n\t\t} else if (!nextIssueSummary && this.lastKeybindingIssueSummary) {\n\t\t\tthis.notificationView.showToast(\n\t\t\t\t\"Keyboard shortcuts config reloaded cleanly.\",\n\t\t\t\t\"success\",\n\t\t\t);\n\t\t}\n\t\tthis.lastKeybindingIssueSummary = nextIssueSummary;\n\t\tthis.refreshFooterHint();\n\t\tthis.renderStartupAnnouncementsBlock();\n\t\tthis.ui.requestRender();\n\t}\n\n\tprivate async runConnectivityProbe(): Promise<void> {\n\t\t// Fast, no-network probe: ensure a model is selected and transport is configured.\n\t\tconst state = this.agent.state;\n\t\tif (!state?.model) {\n\t\t\tthrow new Error(\"No default model configured. Use /model to select one.\");\n\t\t}\n\t\t// If transport exposes a light ping, use it without sending user content.\n\t\tawait this.agent.probeTransport().catch((error: unknown) => {\n\t\t\tconst message =\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Model connectivity probe failed. Check API key and network.\";\n\t\t\tthrow new Error(message);\n\t\t});\n\t}\n}\n"]}
|