import { type CallToolResult } from "@modelcontextprotocol/client"; import type { ConsentManager } from "./consent-manager.ts"; import type { McpServerManager } from "./server-manager.ts"; import type { McpExtensionState } from "./state.ts"; import { type SessionRecoveryDeps } from "./session-recovery.ts"; import { type McpConfig, type UiHostContext, type UiMessageParams, type UiModelContextParams, type UiResourceContent, type UiSessionMessages, type UiStreamSummary } from "./types.ts"; export interface UiServerOptions { serverName: string; toolName: string; toolArgs: Record; resource: UiResourceContent; manager: McpServerManager; /** * Live extension config, used to re-read the server definition when * recovering a terminated Streamable HTTP session (see * session-recovery.ts). Optional so existing embedders/tests that don't * need session recovery aren't forced to supply it; without it, proxied * tool calls run without recovery (unchanged pre-existing behavior). */ config?: McpConfig; /** Live state enables TUI approval prompts for iframe-originated tool calls. */ state?: McpExtensionState; onNeedsAuth?: SessionRecoveryDeps["onNeedsAuth"]; consentManager: ConsentManager; hostContext?: UiHostContext; initialResultPromise?: Promise; sessionToken?: string; port?: number; onMessage?: (params: UiMessageParams) => Promise | void; onContextUpdate?: (params: UiModelContextParams) => Promise | void; onComplete?: (reason: string) => void; } export interface UiServerHandle { url: string; port: number; sessionToken: string; serverName: string; toolName: string; viewer?: "browser" | "glimpse" | "suppressed"; windowOpen?: boolean; close: (reason?: string) => void; sendToolInput: (args: Record) => void; sendToolResult: (result: CallToolResult) => void; sendResultPatch: (result: CallToolResult) => void; sendToolCancelled: (reason: string) => void; sendHostContext: (context: UiHostContext) => void; /** Get accumulated messages from this session */ getSessionMessages: () => UiSessionMessages; getStreamSummary: () => UiStreamSummary | undefined; } export declare function startUiServer(options: UiServerOptions): Promise;