// server/supabase/functions/embed-chunks/index.ts // Composition root: wires the real adapters into the embed-chunks use case. import { requireUser } from '../_shared/auth.ts' import { createServiceRoleClient } from '../_shared/quota.ts' import { readProviderKey } from '../_shared/provider-key.ts' import { createOpenAIEmbeddingProvider } from '../_shared/openai-embeddings.ts' import { createSupabaseEmbeddingUsageStore } from '../_shared/embedding-quota.ts' import { createEmbedChunksHandler } from './handler.ts' import { createSupabaseKnowledgeStore } from './supabase-knowledge-store.ts' let serviceClient: ReturnType | null = null function service(): ReturnType { serviceClient ??= createServiceRoleClient() return serviceClient } Deno.serve(createEmbedChunksHandler({ authenticate: requireUser, embeddingProvider: () => { const key = readProviderKey('OPENAI_API_KEY') return key ? createOpenAIEmbeddingProvider(key) : null }, knowledgeStore: () => createSupabaseKnowledgeStore(service()), usageStore: () => createSupabaseEmbeddingUsageStore(service()), }))