export type BrowserTool = { description: string; parameters: Record; handler: ( input: unknown, context: { sessionId: string }, ) => unknown | Promise; }; export type BrowserToolMap = Record; type BrowserWebSocketMetadata = { accountId?: string | undefined; fedramp?: boolean | undefined; turnState?: string | undefined; }; export type BrowserWebSocketRequest = BrowserWebSocketMetadata & ( | { authorization: "bearer"; /** Resolved credential for this handshake. Do not retain or log it. */ bearerToken: string; } | { authorization: "host_managed"; bearerToken?: never; } ); export type BrowserWebSocketConnection = { socket: WebSocket; status?: number | undefined; requestId?: string | undefined; serverModel?: string | undefined; reasoningIncluded?: boolean | undefined; turnState?: string | undefined; }; export function createBrowserHost(options?: { WebSocketImpl?: typeof WebSocket; hostAuth?: boolean; createWebSocket?: ( endpoint: string, sessionId: string, request: BrowserWebSocketRequest, ) => WebSocket | BrowserWebSocketConnection | Promise; onEvent?: (eventJson: string) => void; tools?: BrowserToolMap; maxQueuedMessages?: number; maxQueuedBytes?: number; maxBufferedSendBytes?: number; }): unknown;