/** * Embedding Service — Multi-provider embedding abstraction * * Generates text embeddings for semantic search using multiple providers. * Auto-detects provider from available API keys. * * Provider detection (in priority order): * GITMEM_EMBEDDING_PROVIDER=openai|openrouter|ollama — force provider * OPENAI_API_KEY → OpenAI direct (text-embedding-3-small) * OPENROUTER_API_KEY → OpenRouter (text-embedding-3-small via openrouter.ai) * OLLAMA_URL → Ollama local (nomic-embed-text, 768-dim — requires pgvector dimension match) * * If no provider is configured, embed() returns null (graceful degradation). * Records stored without embeddings can still be retrieved by ID/filters, * but won't appear in semantic search results. */ export type EmbeddingProvider = "openai" | "openrouter" | "ollama" | "none"; interface EmbeddingConfig { provider: EmbeddingProvider; apiUrl: string; apiKey: string; model: string; expectedDim: number; } /** * Detect the best available embedding provider from environment. * * Resolution chain for OpenRouter key: * 1. process.env.OPENROUTER_API_KEY (env var) * 2. .gitmem/config.json → openrouter_key (written by `activate`) * * This matches how supabase-client.ts resolves credentials via getProConfig(). */ export declare function detectProvider(): EmbeddingConfig; /** * Get the current embedding configuration (cached) */ export declare function getEmbeddingConfig(): EmbeddingConfig; /** * Reset cached config (for testing) */ export declare function resetEmbeddingConfig(): void; /** * Generate an embedding for the given text. * * Returns normalized embedding vector, or null if no provider is configured. * Throws on API errors (network, auth, rate limit). */ export declare function embed(text: string): Promise; /** * Get the expected embedding dimension for the current provider. * Returns 0 if no provider configured. */ export declare function getEmbeddingDim(): number; /** * Check if embedding generation is available. */ export declare function isEmbeddingAvailable(): boolean; /** * Get the current provider name. */ export declare function getProviderName(): EmbeddingProvider; export {}; //# sourceMappingURL=embedding.d.ts.map