/** * Pluggable embedding backends. * * Privacy-by-default: workspace source is only ever sent to explicitly * configured LOCAL (loopback) backends. Remote OpenAI-compatible embedding is * disabled unless explicitly enabled by policy. A deterministic fixture backend * provides the no-paid-dependency test path. */ import type { EmbeddingBackend, EmbeddingRequest, EmbeddingResult } from "./types.js"; export type EmbeddingMode = "disabled" | "fixture" | "local" | "remote"; export interface EmbeddingConfig { mode: EmbeddingMode; modelId?: string; dimensions?: number; maximumInputTokens?: number; endpoint?: string; apiKey?: string; purpose?: string; allowed?: boolean; } export declare const DEFAULT_DIMENSIONS = 32; export declare const DEFAULT_MAX_TOKENS = 2048; /** Deterministic fixture embedder: stable hashed bag-of-ngrams vector. */ export declare class FixtureEmbeddingBackend implements EmbeddingBackend { backendId: string; modelId: string; dimensions: number; maximumInputTokens: number; local: boolean; constructor(modelId?: string, dimensions?: number); embed(request: EmbeddingRequest): Promise; /** Deterministic unit-norm vector derived from token hashes (ngram coverage). */ vectorFor(text: string): number[]; } /** Drag a seed-based deterministic vector (for test stability across runs). */ export declare function deterministicSeed(): string; /** Local loopback OpenAI-compatible embedding backend. */ export declare class LocalEmbeddingBackend implements EmbeddingBackend { backendId: string; modelId: string; dimensions: number; maximumInputTokens: number; local: boolean; private endpoint; private apiKey?; constructor(config: { endpoint: string; modelId: string; dimensions: number; maximumInputTokens?: number; apiKey?: string; }); assertLoopback(): void; embed(request: EmbeddingRequest): Promise; } /** A disabled backend that always throws — retrieval degrades to lexical/symbolic. */ export declare class DisabledEmbeddingBackend implements EmbeddingBackend { backendId: string; modelId: string; dimensions: number; maximumInputTokens: number; local: boolean; embed(): Promise; } /** Resolve config into an active backend. */ export declare function resolveEmbeddingBackend(config?: EmbeddingConfig): EmbeddingBackend; /** Impacts an accurate per-chunk token estimate (rough, deterministic bound). */ export declare function estimateTokens(text: string): number; /** Deterministic token-aware truncation of embedding text. */ export declare function truncateForEmbedding(text: string, maxTokens: number): string; //# sourceMappingURL=embedding.d.ts.map