import { type ExtensionAPI, type ExtensionContext } from "@earendil-works/pi-coding-agent"; import { type Api, type Model, type TranscriptContext } from "@earendil-works/pi-ai"; import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { CodexConversionConfig } from "../adapter/activation/config.ts"; import type { AdapterState } from "../adapter/activation/state.ts"; import type { CodexPrewarmUsage, OpenAICodexStreamOptions, ResponsesBody } from "../providers/openai-codex/types.ts"; import { createExecCommandTracker } from "../tools/exec/command-state.ts"; import { createExecSessionManager } from "../tools/exec/session-manager.ts"; import type { BackgroundBashWidgetState } from "../ui/background-bash-widget.ts"; import { CodexVoiceController } from "../voice/controller.ts"; import { CodexLanVoiceServerController } from "../voice/lan/controller.ts"; import type { CodexDiagnosticsSink } from "../providers/openai-codex/types.ts"; import { createAutoReasoning } from "../adapter/auto-reasoning.ts"; export type CodexContext = ExtensionContext; export type CodexPrewarmResult = { status: "ready"; usage?: CodexPrewarmUsage | undefined; socketReused?: boolean | undefined; } | { status: "skipped"; } | { status: "aborted"; } | { status: "failed"; error: Error; }; export interface CodexExtensionRuntime { autoReasoning: ReturnType; state: AdapterState; tracker: ReturnType; sessions: ReturnType; backgroundWidget: BackgroundBashWidgetState; voice: CodexVoiceController; lanVoice: CodexLanVoiceServerController; projectContextMessages(ctx: CodexContext, messages?: readonly AgentMessage[]): AgentMessage[]; execEnv(config?: CodexConversionConfig): NodeJS.ProcessEnv; prepareTurn(ctx: CodexContext): void; finishTurn(): void; beforeRequestSend(model: Model, context: TranscriptContext, body: ResponsesBody, options: OpenAICodexStreamOptions | undefined, responsesLite: boolean): Promise; startCompactionPrewarm(ctx: CodexContext): Promise | undefined; startKeepalivePrewarm(ctx: CodexContext): Promise | undefined; armCacheKeepalive(ctx: CodexContext): void; cancelCacheKeepalive(): void; resetTransport(sessionId?: string): void; resetTransportAfterCompaction(sessionId: string): void; shutdownTransport(sessionId: string): void; configureDiagnostics(ctx: CodexContext, announceLog?: boolean): Promise; diagnosticsSink(): CodexDiagnosticsSink | undefined; shutdownDiagnostics(): Promise; } export declare function createCodexExtensionRuntime(pi: ExtensionAPI): CodexExtensionRuntime;