@ragrabbit/mcp

by madarco
Verified
import { createEnv } from "@t3-oss/env-nextjs"; import { z } from "zod"; const bool = z .string() .optional() .transform((s) => s !== "false"); const required = z.string().min(1); const optional = z .string() .optional() .refine((s) => s === undefined || s.length > 0, { message: "Can't be empty" }); // NB: we try to avoid this circular dependency: //import "@repo/db/env.mjs"; const requireOpenAIAPIKey = process.env.LLM_MODEL === "openai" || !process.env.LLM_MODEL || process.env.EMBEDDING_MODEL === "openai" || !process.env.EMBEDDING_MODEL; export const env = createEnv({ server: { NODE_ENV: optional.default("development"), LLM_MODEL: z.enum(["openai", "groq", "anthropic"]).default("openai"), OPENAI_API_KEY: requireOpenAIAPIKey ? required : optional, OPENAI_API_BASE_URL: optional, GROQ_API_KEY: process.env.LLM_MODEL === "groq" ? required : optional, ANTHROPIC_API_KEY: process.env.LLM_MODEL === "anthropic" ? required : optional, EMBEDDING_MODEL: z.enum(["baai", "xenova", "openai"]).default(!!process.env.OPENAI_API_KEY ? "openai" : "baai"), }, shared: {}, });