import { NextRequest, NextResponse } from 'next/server' import { requireAdmin } from '@/lib/auth' import { getAiConfig, updateAiConfig, getPreferredLanguage, setPreferredLanguage, getAiMaxRetries, setAiMaxRetries } from '@/lib/app-settings' export async function GET(request: NextRequest) { const auth = await requireAdmin(request) if (auth instanceof NextResponse) return auth const config = getAiConfig() const preferredLanguage = getPreferredLanguage() const maxRetries = getAiMaxRetries() return NextResponse.json({ ...config, preferredLanguage, maxRetries }) } export async function PUT(request: NextRequest) { const auth = await requireAdmin(request) if (auth instanceof NextResponse) return auth let body: { endpoint?: string model?: string modelTagging?: string modelDescribe?: string modelExtract?: string modelTranslate?: string enabled?: boolean preferredLanguage?: string promptDescribe?: string promptTagger?: string promptExtract?: string promptTranslate?: string maxRetries?: number } try { body = await request.json() } catch { return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 }) } const { endpoint, model, enabled, preferredLanguage, modelTagging, modelDescribe, modelExtract, modelTranslate, promptDescribe, promptTagger, promptExtract, promptTranslate, maxRetries, } = body if (typeof endpoint !== 'string') { return NextResponse.json({ error: 'endpoint is required' }, { status: 400 }) } if (typeof model !== 'string') { return NextResponse.json({ error: 'model is required' }, { status: 400 }) } if (typeof enabled !== 'boolean') { return NextResponse.json({ error: 'enabled must be a boolean' }, { status: 400 }) } updateAiConfig( endpoint, model, enabled, typeof modelTagging === 'string' ? modelTagging : undefined, typeof modelDescribe === 'string' ? modelDescribe : undefined, typeof modelExtract === 'string' ? modelExtract : undefined, typeof modelTranslate === 'string' ? modelTranslate : undefined, typeof promptDescribe === 'string' ? promptDescribe : undefined, typeof promptTagger === 'string' ? promptTagger : undefined, typeof promptExtract === 'string' ? promptExtract : undefined, typeof promptTranslate === 'string' ? promptTranslate : undefined, ) if (typeof preferredLanguage === 'string' && preferredLanguage.trim()) { setPreferredLanguage(preferredLanguage.trim()) } if (typeof maxRetries === 'number' && Number.isFinite(maxRetries)) { setAiMaxRetries(maxRetries) } const config = getAiConfig() return NextResponse.json({ ...config, preferredLanguage: getPreferredLanguage(), maxRetries: getAiMaxRetries() }) }