import { getCanvasAgentFeatureFlagsFromSystemSettings } from "@/lib/canvas/agent-feature-settings"; import { applyCanvasOperationPlan } from "@/lib/canvas/agent-mutations"; import { handleCanvasAgentOperationRouteRequest } from "@/lib/canvas/agent-operation-route"; import { z } from "zod"; import { openApiErrorResponse, requireOpenApiPrincipal, } from "@/lib/access-keys/openapi-auth"; const canvasIdSchema = z.string().uuid(); export async function POST( request: Request, { params }: { params: Promise<{ id: string }> } ) { try { const principal = await requireOpenApiPrincipal(request, "canvas:write"); const { id: rawId } = await params; const parsedId = canvasIdSchema.safeParse(rawId); if (!parsedId.success) { return Response.json( { success: false, error: "Invalid canvas ID", code: "INVALID_CANVAS_ID", }, { status: 400 } ); } const id = parsedId.data; const response = await handleCanvasAgentOperationRouteRequest({ userId: principal.userId, projectId: id, readBody: () => request.json(), features: await getCanvasAgentFeatureFlagsFromSystemSettings(), applyOperation: applyCanvasOperationPlan, logger: console, }); return Response.json(response.body, { status: response.status, headers: { "Cache-Control": "no-store" }, }); } catch (error) { return openApiErrorResponse(error); } }