import { z } from "zod"; import { requireAdmin } from "@/lib/middleware/admin"; import { getAllToolConfigs, getToolConfig, upsertToolConfig, } from "@/lib/db/queries"; import { ChatSDKError } from "@/lib/errors"; const toolConfigSchema = z.object({ toolName: z.string(), isEnabled: z.boolean(), description: z.string().optional(), config: z.any().optional(), }); export async function GET(request: Request) { try { await requireAdmin(); const { searchParams } = new URL(request.url); const toolName = searchParams.get("toolName"); if (toolName) { const config = await getToolConfig({ toolName }); return Response.json({ config }); } const configs = await getAllToolConfigs(); return Response.json({ configs }); } catch (error) { if (error instanceof ChatSDKError) { return error.toResponse(); } return new ChatSDKError("offline:admin").toResponse(); } } export async function POST(request: Request) { try { const session = await requireAdmin(); const body = await request.json(); const { toolName, isEnabled, description, config } = toolConfigSchema.parse(body); const result = await upsertToolConfig({ toolName, isEnabled, description, config, updatedBy: session.user.id, }); return Response.json({ config: result[0] }); } catch (error) { if (error instanceof ChatSDKError) { return error.toResponse(); } if (error instanceof z.ZodError) { return new ChatSDKError("bad_request:api", error.message).toResponse(); } return new ChatSDKError("offline:admin").toResponse(); } }