SPB Git
1.0 KB · 11 lines typescript
1import { z } from "zod";2import { handler, parseBody, uuid } from "@/lib/api";3import { sse } from "@/lib/ai/chat";4import { researchAI, RESEARCH_FEATURES } from "@/lib/research/ai";5export const maxDuration = 300;6/** POST { feature, pageId, referenceIds?, attachmentIds?, text?, instruction?, question?, latex?, language?, model? } → SSE (meta | text | result | done | error). Output is AI-generated and never written anywhere by this route. */7export const POST = handler(async ({ req, ws }) => {8  const b = await parseBody(req, z.object({ feature: z.enum(RESEARCH_FEATURES), pageId: uuid, referenceIds: z.array(uuid).max(50).optional(), attachmentIds: z.array(uuid).max(20).optional(), text: z.string().max(200_000).optional(), instruction: z.string().max(4000).optional(), question: z.string().max(4000).optional(), latex: z.string().max(20_000).optional(), language: z.enum(["fr", "en"]).nullable().optional(), model: z.string().max(80).nullable().optional() }));9  return sse(researchAI(ws.id, b, req.signal), req.signal);10});11
Files · main
Menu

Theme