import { z } from "zod"; import { requireAdmin } from "@/lib/middleware/admin"; import { ChatSDKError } from "@/lib/errors"; import { listAiModelHealthEvents, restoreAiModelHealth, } from "@/lib/ai/runtime/model-health"; const restoreSchema = z.object({ modelId: z.string().uuid(), }); export async function GET(request: Request) { try { await requireAdmin(); const { searchParams } = new URL(request.url); const modelId = searchParams.get("modelId") || undefined; const limit = Number(searchParams.get("limit") || 80); const events = await listAiModelHealthEvents({ modelId, limit: Number.isFinite(limit) ? limit : 80, }); return Response.json({ events }); } catch (error) { if (error instanceof ChatSDKError) { return error.toResponse(); } return new ChatSDKError("offline:admin").toResponse(); } } export async function POST(request: Request) { try { await requireAdmin(); const body = await request.json(); const data = restoreSchema.parse(body); const models = await restoreAiModelHealth(data.modelId); if (models.length === 0) { return new ChatSDKError("bad_request:api", "Model not found").toResponse(); } return Response.json({ model: models[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(); } }