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.0 KB · 26 lines typescript
Raw Blame History
1import { withUser, parseBody } from "@/lib/api";2import { arenaStreamSchema } from "@/lib/chat/schemas";3import { runArenaModel } from "@/lib/arena/service";4import { sseResponse } from "@/lib/chat/sse";5import { LIMITS } from "@/lib/rate-limit";67export const dynamic = "force-dynamic";8export const maxDuration = 900;910export const POST = withUser(11  async (ctx) => {12    const body = await parseBody(ctx.req, arenaStreamSchema);13    return sseResponse(14      async (emit, signal) => {15        const controller = new AbortController();16        const onAbort = () => controller.abort();17        signal.addEventListener("abort", onAbort, { once: true });18        ctx.req.signal?.addEventListener("abort", onAbort, { once: true });19        await runArenaModel({ userId: ctx.user.id, requestId: ctx.requestId }, body.sessionId, body.modelKey, emit, controller.signal);20      },21      { requestId: ctx.requestId },22    );23  },24  { limit: { max: LIMITS.arena.max * 4, windowMs: LIMITS.arena.windowMs, key: "arena-stream" } },25);26