SPB Git forge

spb/polyllm

Public
15commits 1branches 0releases
2.2 MBsize
maindefault branch
13 days agolast push
TypeScript 97.4% SQL 1% JavaScript 0.9% CSS 0.6%
1.1 KB · 25 lines typescript
Raw Blame History
1import { z } from "zod";2import { withUser, parseBody, json } from "@/lib/api";3import { arenaRunSchema } from "@/lib/chat/schemas";4import { createArenaSession, listArenaSessions, rateArenaResponse } from "@/lib/arena/service";5import { LIMITS } from "@/lib/rate-limit";67export const dynamic = "force-dynamic";89export const GET = withUser(async ({ user }) => json({ sessions: await listArenaSessions(user.id) }));1011/** POST /api/arena — create a session (validates keys/models); the client then opens one stream per model. */12export const POST = withUser(13  async ({ req, user }) => {14    const body = await parseBody(req, arenaRunSchema, 500_000);15    const session = await createArenaSession(user.id, body);16    return json({ session: { ...session, createdAt: session.createdAt.toISOString() } }, { status: 201 });17  },18  { limit: { ...LIMITS.arena, key: "arena" } },19);2021export const PATCH = withUser(async ({ req, user }) => {22  const body = await parseBody(req, z.object({ responseId: z.string().max(64), ratings: z.record(z.string().max(32), z.boolean()) }));23  return json({ response: await rateArenaResponse(user.id, body.responseId, body.ratings) });24});25