import 'dotenv/config'; const num = (v: string | undefined, d: number) => (v === undefined || v === '' ? d : Number(v)); export const env = { port: num(process.env.PORT, 3100), databaseUrl: process.env.DATABASE_URL ?? 'postgres://ontology:ontology@localhost:55432/ontology', redis: { host: process.env.REDIS_HOST ?? 'localhost', port: num(process.env.REDIS_PORT, 56379), }, llm: { provider: (process.env.LLM_PROVIDER ?? 'mock') as 'mock' | 'openai', apiKey: process.env.OPENAI_API_KEY ?? '', model: process.env.OPENAI_MODEL ?? 'gpt-4.1-mini', embeddingModel: process.env.OPENAI_EMBEDDING_MODEL ?? 'text-embedding-3-small', }, embedding: { provider: (process.env.EMBEDDING_PROVIDER ?? 'local') as 'mock' | 'local' | 'openai', localModel: process.env.EMBEDDING_LOCAL_MODEL ?? 'Xenova/multilingual-e5-small', }, dedup: { cosineThreshold: num(process.env.DEDUP_COSINE_THRESHOLD, 0.99), trigramThreshold: num(process.env.DEDUP_TRIGRAM_THRESHOLD, 0.6), candidateLimit: num(process.env.DEDUP_CANDIDATE_LIMIT, 20), }, generation: { targetKeywords: num(process.env.GENERATION_TARGET_KEYWORDS, 15), refreshIntervalDays: num(process.env.REFRESH_INTERVAL_DAYS, 30), }, } as const; export const EMBEDDING_DIM = 384; export const PROMPT_VERSION = 'kw-v1';