UNPKG

@hashbrownai/core

Version:

Runtime helpers for Hashbrown AI

76 lines 3.33 kB
import { Transport, type TransportRequest, type TransportResponse } from './transport'; import { type DetectionResult, type ModelSpecFactory } from './model-spec'; import { PromptMessage, PromptOptions, PromptRequest } from './experimental-chrome-local-transport'; interface LanguageModelSession { prompt(input: PromptMessage[] | string, options?: PromptOptions): Promise<string>; promptStreaming(input: PromptMessage[] | string, options?: PromptOptions): Promise<ReadableStream<string>>; destroy?: () => void; } type LanguageModelAvailabilityStatus = 'unavailable' | 'available' | 'downloadable' | 'downloading'; /** * Configuration for the experimental Edge local transport. * @alpha */ export interface ExperimentalEdgeLocalTransportOptions { transformRequest?: (request: TransportRequest) => PromptRequest; events?: { downloadRequired?: (status: LanguageModelAvailabilityStatus) => Promise<void> | void; downloadProgress?: (percent: number) => void; availability?: (status: LanguageModelAvailabilityStatus) => void; sessionState?: (state: 'created' | 'destroyed' | 'error') => void; }; createSession?: () => Promise<LanguageModelSession>; } /** * Experimental transport that targets the Edge Prompt API. * @alpha */ export declare class ExperimentalEdgeLocalTransport implements Transport { private readonly options; readonly name = "ExperimentalEdgeLocalTransport"; private sessionPromise?; constructor(options?: ExperimentalEdgeLocalTransportOptions); send(request: TransportRequest): Promise<TransportResponse>; private ensureAvailability; destroy(): Promise<void>; private getSession; private createLanguageModelSession; private createFrameGenerator; private streamPromptToFrames; private readStream; } /** * Detects whether the Edge Prompt API is available. * @alpha */ export declare function detectEdgePromptApi(sessionOptions?: EdgeLanguageModelCreateOptions, opts?: { onAvailabilityChange?: (status: LanguageModelAvailabilityStatus) => void; }): Promise<DetectionResult>; /** * Model spec factory for Edge Prompt API transport. * @alpha */ export declare function experimentalEdgeLocalModelSpec(userOptions?: ExperimentalEdgeLocalTransportOptions): ModelSpecFactory; /** * Preferred snake_case helper name for consistency with other transport helpers. * Kept alongside the legacy `experimentalEdgeLocalModelSpec`. * @alpha */ export declare const experimental_edge: typeof experimentalEdgeLocalModelSpec; type EdgeLanguageModelCreateOptions = { signal?: AbortSignal; monitor?: EdgeMonitorCallback; initialPrompts?: PromptMessage[]; [key: string]: unknown; }; type EdgeMonitorCallback = ((monitor: EdgeLanguageModelDownloadMonitor) => void) | ((event: DownloadProgressEvent) => void); interface EdgeLanguageModelDownloadMonitor { addEventListener?: (type: 'downloadprogress', listener: (event: DownloadProgressEvent) => void) => void; } interface DownloadProgressEvent extends Event { loaded?: number; total?: number; } declare function composeMonitor(userMonitor?: EdgeMonitorCallback, onDownloadProgress?: (percent: number) => void): EdgeMonitorCallback | undefined; export { composeMonitor }; //# sourceMappingURL=experimental-edge-local-transport.d.ts.map