UNPKG

@hashbrownai/core

Version:

Runtime helpers for Hashbrown AI

112 lines 3.99 kB
import { type Transport, type TransportFactory, type TransportRequest, type TransportResponse } from './transport'; import { type DetectionResult, type ModelSpecFactory } from './model-spec'; export type SupportedOutputLanguage = 'en' | 'es' | 'ja'; /** * Message format accepted by the Chrome Prompt API. * @alpha */ export interface PromptMessage { role: 'system' | 'user' | 'assistant'; content: string; } /** * Prompt options for the Chrome Prompt API. * @alpha */ export interface PromptOptions { responseConstraint?: unknown; temperature?: number; topK?: number; signal?: AbortSignal; outputLanguage?: SupportedOutputLanguage; tools?: never; } /** * Request shape passed to the Chrome Prompt API. * @alpha */ export interface PromptRequest { messages: PromptMessage[] | string; options?: PromptOptions; sessionOptions?: LanguageModelCreateOptions; } /** * Configuration for the experimental Chrome local transport. * @alpha */ export interface ExperimentalChromeLocalTransportOptions { 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>; outputLanguage?: SupportedOutputLanguage; } type LanguageModelAvailabilityStatus = 'unavailable' | 'available' | 'downloadable' | 'downloading'; interface LanguageModelCreateOptions { signal?: AbortSignal; monitor?: (event: DownloadProgressEvent) => void; expectedOutputs?: ExpectedOutput[]; [key: string]: unknown; } interface ExpectedOutput { type: string; languages?: SupportedOutputLanguage[]; } interface LanguageModelSession { prompt(input: PromptMessage[] | string, options?: PromptOptions): Promise<string>; promptStreaming(input: PromptMessage[] | string, options?: PromptOptions): Promise<ReadableStream<string>>; destroy?: () => void; } /** * Experimental transport that targets the Chrome Prompt API. * @alpha */ export declare class ExperimentalChromeLocalTransport implements Transport { private readonly options; readonly name = "ExperimentalChromeLocalTransport"; private sessionPromise?; constructor(options: ExperimentalChromeLocalTransportOptions); send(request: TransportRequest): Promise<TransportResponse>; destroy(): Promise<void>; private getLanguageModel; private ensureAvailability; private getSession; private createLanguageModelSession; private createFrameGenerator; private streamPromptToFrames; private readStream; } /** * Factory for the experimental Chrome local transport. * @alpha */ export declare function createExperimentalChromeLocalTransport(options?: ExperimentalChromeLocalTransportOptions): TransportFactory; /** * Detects whether the Chrome Prompt API is available. * @alpha */ export declare function detectChromePromptApi(sessionOptions?: LanguageModelCreateOptions, opts?: { outputLanguage?: SupportedOutputLanguage; onAvailabilityChange?: (status: LanguageModelAvailabilityStatus) => void; }): Promise<DetectionResult>; /** * Model spec factory for Chrome Prompt API transport. * @alpha */ export declare function experimentalChromeLocalModelSpec(userOptions?: ExperimentalChromeLocalTransportOptions): ModelSpecFactory; /** * Preferred snake_case helper name for consistency with other transport helpers. * Kept alongside the legacy `experimentalChromeLocalModelSpec`. * @alpha */ export declare const experimental_chrome: typeof experimentalChromeLocalModelSpec; interface DownloadProgressEvent extends Event { loaded?: number; total?: number; } export {}; //# sourceMappingURL=experimental-chrome-local-transport.d.ts.map