import type { ExtensionContext, ToolLoadout, ToolLoadoutChanges } from "@earendil-works/pi-coding-agent"; import { CodeModeNestedRenderStore } from "./trace-render-state.js"; import type { CodeModeToolDefinition, NotebookControlRequest, NotebookControlResult, RuntimeResponse, ToolExecutionContext } from "./types.js"; export type CodeModeExecutionKind = "code" | "notebook"; export interface OpaqueContextGuard { lazy: boolean; scope: string; owner: string; generation: number; deliver(response: RuntimeResponse, callId: string): string; valid(): Promise; resolveScope(): Promise; } export interface NotebookRuntimeOptions { maxHeapMiB: number; agentDir: string; profile?: string | undefined; } export interface CodeModeExecutionClient { execute(source: string, context: ToolExecutionContext, signal?: AbortSignal, tools?: CodeModeToolDefinition[]): Promise; wait(cellId: string, yieldTimeMs: number, context: ToolExecutionContext, signal?: AbortSignal): Promise; terminate(cellId: string, context: ToolExecutionContext, signal?: AbortSignal): Promise; checkpoint?(): Promise; controlNotebook?(request: NotebookControlRequest, context: ToolExecutionContext, signal?: AbortSignal): Promise; shutdown(): Promise; clearOpaqueResults?(): void; } export interface CodeModeToolProvider { getTools(ctx?: unknown): CodeModeToolDefinition[]; prepareLoadout?(loadout: ToolLoadout): ToolLoadoutChanges | undefined; documentationPath?: string | undefined; isActive?(ctx: unknown): boolean; providesRenderers?: boolean | undefined; richRendering?(): boolean; minimalOutput?(): boolean; executionKind?(ctx: unknown): CodeModeExecutionKind; notebookOptions?(ctx: unknown): NotebookRuntimeOptions; opaqueResultScope?(ctx: ExtensionContext): Promise; lazyOpaqueResultScope?(): boolean; deliverOpaqueResponse?(response: RuntimeResponse, callId: string, scope: string, ctx: ExtensionContext): string; } export declare class SharedCodeModeRuntime { readonly providers: Map; readonly renderStore: CodeModeNestedRenderStore; private clientPromise; private notebookClientPromise; private notebookClientOptionsKey; private notebookClientTransition; private clientStartupAbort; private customPromptToolsSnapshot; private opaqueGeneration; private readonly completedCells; opaqueContextGuard(ctx: ExtensionContext): Promise; deliverOpaqueResponse(response: RuntimeResponse, callId: string, guard?: OpaqueContextGuard): RuntimeResponse; completedCell(cellId: string, ctx: ExtensionContext): Promise; clearOpaqueResults(): void; private opaqueOwner; addProvider(provider: CodeModeToolProvider): object; removeProvider(id: object): void; prepareLoadout(loadout: ToolLoadout): ToolLoadoutChanges; activeProviders(ctx?: unknown): CodeModeToolProvider[]; collectTools(ctx?: unknown): CodeModeToolDefinition[]; refreshPromptTools(ctx?: unknown): CodeModeToolDefinition[]; resetPromptTools(): void; collectPromptTools(ctx?: unknown): CodeModeToolDefinition[]; collectRenderTools(): CodeModeToolDefinition[]; useRichRendering(): boolean; useMinimalOutput(): boolean; executionKind(ctx?: unknown): CodeModeExecutionKind; getClient(ctx?: unknown): Promise; private getNotebookClient; prepare(ctx?: unknown): Promise | undefined; checkpointNotebook(): Promise; controlNotebook(request: NotebookControlRequest, context: ToolExecutionContext, signal?: AbortSignal): Promise; shutdownHost(): Promise; private collectProviderTools; }