@hashbrownai/core
Version:
Runtime helpers for Hashbrown AI
76 lines • 3.33 kB
TypeScript
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