import { collectSessionBrowserPayload, requireProjectCwd, } from "../../../../../src/web/bridge-service.ts" import { isSessionBrowserNameFilter, isSessionBrowserSortMode, } from "../../../../lib/session-browser-contract.ts" export const runtime = "nodejs" export const dynamic = "force-dynamic" function invalidQuery(message: string): Response { return Response.json({ error: message }, { status: 400, headers: { "Cache-Control": "no-store", }, }) } export async function GET(request: Request): Promise { const { searchParams } = new URL(request.url) const sortMode = searchParams.get("sortMode") const nameFilter = searchParams.get("nameFilter") if (sortMode !== null && !isSessionBrowserSortMode(sortMode)) { return invalidQuery(`Invalid sortMode: ${sortMode}`) } if (nameFilter !== null && !isSessionBrowserNameFilter(nameFilter)) { return invalidQuery(`Invalid nameFilter: ${nameFilter}`) } const projectCwd = requireProjectCwd(request) const payload = await collectSessionBrowserPayload({ query: searchParams.get("query") ?? undefined, sortMode: sortMode ?? undefined, nameFilter: nameFilter ?? undefined, }, projectCwd) return Response.json(payload, { headers: { "Cache-Control": "no-store", }, }) }