import type { NextRequest, NextResponse } from 'next/server' import { mothershipChatResourceEnvelopeSchema } from '@/lib/api/contracts/mothership-chats' import { validationErrorResponse } from '@/lib/api/server' import { withRouteHandler } from '@/lib/core/utils/with-route-handler' import { DELETE as copilotResourcesDelete, PATCH as copilotResourcesPatch, POST as copilotResourcesPost, } from '@/app/api/copilot/chat/resources/route' async function validateResourceRequestEnvelope(request: NextRequest): Promise { // boundary-raw-json: shim pre-validates the mothership envelope before delegating to the copilot handler that consumes the body const body = await request .clone() .json() .catch(() => undefined) if (body !== undefined) { const validation = mothershipChatResourceEnvelopeSchema.safeParse(body) if (!validation.success) return validationErrorResponse(validation.error) } return null } export const POST = withRouteHandler(async (request: NextRequest) => { const validationResponse = await validateResourceRequestEnvelope(request) if (validationResponse) return validationResponse return copilotResourcesPost(request, undefined) }) export const PATCH = withRouteHandler(async (request: NextRequest) => { const validationResponse = await validateResourceRequestEnvelope(request) if (validationResponse) return validationResponse return copilotResourcesPatch(request, undefined) }) export const DELETE = withRouteHandler(async (request: NextRequest) => { const validationResponse = await validateResourceRequestEnvelope(request) if (validationResponse) return validationResponse return copilotResourcesDelete(request, undefined) })