@linara/infrastructure

Client factory functions — connection status and signatures

environment variables

NEXT_PUBLIC_SUPABASE_URLset
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYset
SUPABASE_SERVICE_ROLE_KEYmissing
LINARA_OPENAI_PRIMARYmissing
ANTHROPIC_API_KEYmissing
GEMINI_API_KEYmissing
UPSTASH_REDIS_REST_URLmissing

factory functions

createBrowserClient(url, publishableKey)

Browser-side Supabase — respects RLS, persists session

via @supabase/supabase-js

createServerClient(url, key, cookieStore)

SSR Supabase — reads/writes session cookies, use publishable key

via @supabase/ssr

createAdminClient(url, serviceRoleKey)

Service-role Supabase — bypasses RLS, no cookie management

via @supabase/supabase-js

getOpenAIClient()

Singleton OpenAI client using LINARA_OPENAI_PRIMARY

via openai

getAnthropicClient()

Singleton Anthropic client using ANTHROPIC_API_KEY

via @anthropic-ai/sdk

getGeminiClient()

Singleton Gemini client using GEMINI_API_KEY

via @google/generative-ai

new Cache<T>(options)

Generic LRU/TTL cache — wraps @upstash/redis or in-memory fallback

via @upstash/redis