import type { Metadata } from "next"; import { Badge } from "@/components/ui/badge"; import { getAllSiteSettings } from "@/lib/site-settings"; import { AdminSettingsForm } from "@/components/admin/admin-settings-form"; import { AdminDefaultModelForm } from "@/components/admin/admin-default-model-form"; export const metadata: Metadata = {}; const SETTING_GROUP = { title: "Provider Keys & Routing", description: "Override the environment variable API keys at runtime (encrypted at rest), and set the OpenRouter/Ollama routing defaults. DB values here take precedence over environment variables — clear a value to fall back to the env var.", keys: ["OPENAI_API_KEY", "ANTHROPIC_API_KEY", "OPENROUTER_API_KEY", "OPENROUTER_DEFAULT_MODEL", "OLLAMA_BASE_URL"] as const, }; function resolveProvider(settings: Record) { if (settings["OPENROUTER_API_KEY"]?.value) return { provider: "OpenRouter", description: "Routes to many models via openrouter.ai" }; if (settings["OPENAI_API_KEY"]?.value) return { provider: "OpenAI", description: "Direct OpenAI API (GPT-4 etc.)" }; if (settings["ANTHROPIC_API_KEY"]?.value) return { provider: "Anthropic", description: "Direct Anthropic API (Claude models)" }; const url = settings["OLLAMA_BASE_URL"]?.value || "http://localhost:11434"; return { provider: "Ollama", description: `Local inference at ${url}` }; } export default async function AdminAiConfigPage() { const settings = await getAllSiteSettings(); const active = resolveProvider(settings); return (

AI Configuration

Provider keys, routing, and default models for AI generation.

Fallback provider (no default set below): {active.provider} — {active.description}
); }