Spaces:
Runtime error
Runtime error
| import { NextResponse } from "next/server"; | |
| import { getSettings, updateSettings } from "@/lib/localDb"; | |
| import { | |
| setThinkingBudgetConfig, | |
| getThinkingBudgetConfig, | |
| ThinkingMode, | |
| } from "@omniroute/open-sse/services/thinkingBudget.ts"; | |
| import { updateThinkingBudgetSchema } from "@/shared/validation/schemas"; | |
| import { isValidationFailure, validateBody } from "@/shared/validation/helpers"; | |
| import { requireManagementAuth } from "@/lib/api/requireManagementAuth"; | |
| export async function GET(request: Request) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| try { | |
| const config = getThinkingBudgetConfig(); | |
| return NextResponse.json(config); | |
| } catch (error) { | |
| console.error("Error reading thinking budget config:", error); | |
| return NextResponse.json({ error: "Failed to read thinking budget config" }, { status: 500 }); | |
| } | |
| } | |
| export async function PUT(request: Request) { | |
| const authError = await requireManagementAuth(request); | |
| if (authError) return authError; | |
| let rawBody; | |
| try { | |
| rawBody = await request.json(); | |
| } catch { | |
| return NextResponse.json( | |
| { | |
| error: { | |
| message: "Invalid request", | |
| details: [{ field: "body", message: "Invalid JSON body" }], | |
| }, | |
| }, | |
| { status: 400 } | |
| ); | |
| } | |
| try { | |
| const validation = validateBody(updateThinkingBudgetSchema, rawBody); | |
| if (isValidationFailure(validation)) { | |
| return NextResponse.json({ error: validation.error }, { status: 400 }); | |
| } | |
| const body = validation.data; | |
| // Apply config in-memory | |
| setThinkingBudgetConfig(body); | |
| // Persist to settings DB | |
| await updateSettings({ thinkingBudget: body }); | |
| return NextResponse.json(getThinkingBudgetConfig()); | |
| } catch (error) { | |
| console.error("Error updating thinking budget config:", error); | |
| return NextResponse.json({ error: "Failed to update thinking budget config" }, { status: 500 }); | |
| } | |
| } | |