SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
1.1 KB · 37 lines typescript
Raw Blame History
1import { NextResponse } from "next/server";2import { z } from "zod";3import { apiError, parseBody } from "@/lib/api.ts";4import { assertSameOrigin, requireRole } from "@/lib/auth/session.ts";5import { getPrompt, listPromptNames, promptHistory, savePromptVersion } from "@/lib/prompts.ts";67export async function GET(req: Request) {8  try {9    await requireRole("instructor");10    const url = new URL(req.url);11    const name = url.searchParams.get("name");12    if (name) {13      return NextResponse.json({ name, content: getPrompt(name), history: promptHistory(name) });14    }15    return NextResponse.json({ names: listPromptNames() });16  } catch (e) {17    return apiError(e);18  }19}2021const schema = z.object({22  name: z.string().min(1).max(80).regex(/^[a-z0-9-]+$/),23  content: z.string().min(10).max(20_000),24});2526export async function POST(req: Request) {27  try {28    await assertSameOrigin();29    const user = await requireRole("admin");30    const body = await parseBody(req, schema);31    const version = savePromptVersion(body.name, body.content, user.username);32    return NextResponse.json({ ok: true, version });33  } catch (e) {34    return apiError(e);35  }36}37