import { z } from "zod"; import { withUser, parseBody, json } from "@/lib/api"; import { listConversations, createConversation } from "@/lib/conversations/service"; import { isProviderId } from "@/lib/ai/core/types"; export const dynamic = "force-dynamic"; export const GET = withUser(async ({ req, user }) => { const url = new URL(req.url); const p = url.searchParams; const provider = p.get("provider"); const res = await listConversations(user.id, { q: p.get("q") ?? undefined, provider: provider && isProviderId(provider) ? provider : undefined, modelKey: p.get("model") ?? undefined, folderId: p.get("folder") ?? undefined, projectId: p.get("projectId") ?? undefined, archived: p.get("archived") === "1", pinned: p.get("pinned") === "1" ? true : undefined, since: p.get("since") ? new Date(p.get("since")!) : undefined, until: p.get("until") ? new Date(p.get("until")!) : undefined, limit: p.get("limit") ? Number(p.get("limit")) : undefined, cursor: p.get("cursor") ?? undefined, }); return json(res); }); const createSchema = z.object({ title: z.string().max(200).optional(), modelKey: z.string().max(120).nullable().optional(), systemPrompt: z.string().max(50_000).nullable().optional(), folderId: z.string().max(64).nullable().optional(), projectId: z.string().max(64).nullable().optional(), settings: z.record(z.string(), z.unknown()).optional(), }); export const POST = withUser(async ({ req, user }) => { const body = await parseBody(req, createSchema); const c = await createConversation(user.id, body); return json({ conversation: c }, { status: 201 }); });