import type { AgentMessage, ToolCallRepairInfo } from "@caupulican/pi-agent-core"; import type { AssistantMessage } from "@caupulican/pi-ai"; import { type Container, type Loader, type LoaderIndicatorOptions, type MarkdownTheme, type TUI } from "@caupulican/pi-tui"; import type { AgentSession } from "../../core/agent-session.ts"; import type { AgentSessionEvent } from "../../core/agent-session-contracts.ts"; import type { FooterDataProvider } from "../../core/footer-data-provider.ts"; import type { SettingsManager } from "../../core/settings-manager.ts"; import type { ActiveToolCallRegistry } from "./components/active-tool-call-registry.ts"; import { type ActivityLaneComponent, type ActivityLaneKind } from "./components/activity-lane.ts"; import { AssistantMessageComponent } from "./components/assistant-message.ts"; import { CountdownTimer } from "./components/countdown-timer.ts"; import type { CustomEditor } from "./components/custom-editor.ts"; import type { FooterComponent } from "./components/footer.ts"; import type { ToolExecutionComponent } from "./components/tool-execution.ts"; /** Structural host consumed by the event owner. InteractiveMode deliberately remains a thin facade. */ export interface InteractiveEventHost { isInitialized: boolean; session: AgentSession; settingsManager: SettingsManager; footer: FooterComponent; footerDataProvider: FooterDataProvider; ui: TUI; defaultEditor: CustomEditor; statusContainer: Container; chatContainer: Container; activityLane: ActivityLaneComponent | undefined; loadingAnimation: Loader | undefined; workingVisible: boolean; workingIndicatorOptions: LoaderIndicatorOptions | undefined; retryEscapeHandler: (() => void) | undefined; retryCountdown: CountdownTimer | undefined; autoCompactionEscapeHandler: (() => void) | undefined; streamingComponent: AssistantMessageComponent | undefined; streamingMessage: AssistantMessage | undefined; hideThinkingBlock: boolean; lastStreamingUiUpdateAt: number; activeToolCalls: ActiveToolCallRegistry; init(): Promise; createWorkingLoader(): Loader; stopWorkingLoader(): void; clearActiveToolCalls(): void; getWorkingLoaderMessage(): string; updatePendingMessagesDisplay(): void; updateTerminalTitle(): void; refreshActivityLane(): void; updateEditorBorderColor(): void; showWarning(message: string): void; showError(message: string): void; addMessageToChat(message: AgentMessage): void; clearPendingStreamingUiUpdate(): void; getMarkdownThemeWithSettings(): MarkdownTheme; applyStreamingMessageUpdate(message: AssistantMessage, options?: { force?: boolean; }): void; updateRuntimeStatus(message?: AssistantMessage): void; trimLiveTuiHistory(): void; attachToolExecutionComponent(toolName: string, toolCallId: string, args: unknown, repair?: ToolCallRepairInfo): ToolExecutionComponent; toolActivityKind(toolName: string): ActivityLaneKind; toolActivityLabel(toolName: string): string; toolActivityTerminalStatus(isError: boolean, details: unknown): "success" | "failure" | "neutral"; isNativeReflectionEnabled(): boolean; maybeRunNativeReflection(messages: AgentMessage[]): void; maybeStartAutoLearn(): boolean; maybeStartAutonomyReview(messages: AgentMessage[]): boolean; checkShutdownRequested(): Promise; rebuildChatFromMessages(): Promise; flushCompactionQueue(options?: { willRetry?: boolean; }): Promise; } /** Single owner for AgentSessionEvent -> terminal UI state transitions. */ export declare function handleInteractiveEvent(host: InteractiveEventHost, event: AgentSessionEvent): Promise; //# sourceMappingURL=interactive-event-controller.d.ts.map