export type Embedder = (texts: string[]) => Promise; export declare const DEFAULT_EMBEDDING_MODEL = "text-embedding-3-small"; /** Split text into chunks of at most maxChars (embeddings have token limits). */ export declare function chunkText(text: string, maxChars?: number): string[]; /** Pack a float vector into a compact Float32 BLOB for SQLite storage. */ export declare function serializeVector(vec: number[]): Buffer; /** Unpack a Float32 BLOB back into a vector. */ export declare function deserializeVector(buf: Buffer): Float32Array; /** Real embedder backed by the OpenAI embeddings API (reads OPENAI_API_KEY). */ export declare function openaiEmbedder(model?: string): Embedder; export interface EmbedOptions { /** Embedder to use (defaults to OpenAI). Inject a fake in tests. */ embedder?: Embedder; model?: string; /** Max messages to embed in this run. */ limit?: number; maxChars?: number; } export interface EmbedResult { messagesProcessed: number; chunksEmbedded: number; } /** * Generate embeddings for messages that don't have any yet, storing one row per * chunk in the embeddings table. Idempotent — already-embedded messages are skipped. */ export declare function embedSessions(opts?: EmbedOptions): Promise; //# sourceMappingURL=embeddings.d.ts.map