import type { AgentSession, AgentSessionRuntime } from "@earendil-works/pi-coding-agent"; import type { ImageContent } from "../../input-editor.js"; import type { Entry, SessionActivity, SubmittedUserMessage } from "../types.js"; export type AppQueuedMessageControllerHost = { runtime(): AgentSessionRuntime | undefined; requireRuntime(): AgentSessionRuntime; awaitCurrentSessionExtensions(runtime: AgentSessionRuntime): Promise; visibleEntries(): readonly Entry[]; isRunning(): boolean; render(): void; addEntry(entry: Entry): void; addSessionAbortedEntry(): void; setStatus(status: string): void; setSessionStatus(session: AgentSession | undefined): void; setSessionActivity(activity: SessionActivity): void; showToast(message: string, kind: "success" | "error" | "warning" | "info"): void; inputText(): string; resetRequestHistoryNavigation(): void; clearInput(): void; setInput(value: string): void; insertInput(value: string): void; attachImage(data: string, mimeType: string): void; requeueAutoUserMessageForSession?(session: AgentSession, message: SubmittedUserMessage): void; onDeferredUserMessagesChanged?(): void; }; export declare class AppQueuedMessageController { private readonly host; readonly autoUserMessages: SubmittedUserMessage[]; readonly deferredUserMessages: SubmittedUserMessage[]; private readonly promptSubmissionsInFlight; private immediateSendInProgress; constructor(host: AppQueuedMessageControllerHost); reset(): void; captureAutoUserMessages(): SubmittedUserMessage[]; restoreAutoUserMessages(messages: readonly SubmittedUserMessage[]): void; captureDeferredUserMessages(): SubmittedUserMessage[]; restoreDeferredUserMessages(messages: readonly SubmittedUserMessage[]): void; createSubmittedUserMessage(promptText: string, displayText: string, images: ImageContent[]): SubmittedUserMessage; submitUserMessage(message: SubmittedUserMessage, session?: AgentSession): Promise; sendUserMessageToSession(message: SubmittedUserMessage, options?: { streamingBehavior?: "steer" | "followUp"; }, session?: AgentSession): Promise; flushAutoUserMessages(expectedSession?: AgentSession): Promise; queuedMessageCounts(): { steering: number; followUp: number; }; totalQueuedMessageCount(): number; updateQueuedMessageStatus(): void; restoreQueuedMessagesToEditorForAbort(): number; cancelQueuedMessage(entryId: string): Promise; editQueuedMessage(entryId: string): Promise; sendQueuedMessageImmediately(entryId: string): Promise; private sendQueuedEntryImmediately; findQueuedEntry(entryId: string): Extract | undefined; queuedEntries(): Extract[]; autoQueuedEntries(): Extract[]; deferredQueuedEntries(): Extract[]; private shouldQueueUserMessageAsSteering; private queueUserMessageAsSteering; deferUserMessage(message: SubmittedUserMessage): void; private rewriteSdkQueuedMessages; private takeQueuedEntryForInterruptedSend; private restoreSdkQueuedMessages; private interruptSessionForImmediateSend; private waitForCompactionToStop; private sessionActivity; private removeQueuedEntry; private requeueRemovedEntry; private restoreSubmittedMessageToEditor; private restorableSubmittedMessageText; private notifyDeferredUserMessagesChanged; private notifyAutoUserMessagesChanged; }