SPB Git

spb/autoscholar

Public
1.5 KB · 47 lines typescript
1import { allSettings, getEnv, SETTING_KEYS, setSetting } from "@autoscholar/core";2import { z } from "zod";3import { handler, json, parseBody } from "@/lib/server/api";4import { db } from "@/lib/server/db";5import { requireAdmin } from "@/lib/server/session";67export const runtime = "nodejs";89export const GET = handler(async (req) => {10  await requireAdmin(req);11  const env = getEnv();12  return json({13    settings: await allSettings(db()),14    env: {15      publishingEnabled: env.PUBLISHING_ENABLED === 1,16      dispatchEnabled: env.DISPATCH_ENABLED === 1,17      stagingMode: env.STAGING_MODE === 1,18      model: env.ANTHROPIC_MODEL,19      reviewerModel: env.ANTHROPIC_REVIEWER_MODEL,20      defaultBudgetUsd: env.DEFAULT_MAX_BUDGET_USD,21      defaultRuntimeMinutes: env.DEFAULT_MAX_RUNTIME_MINUTES,22      leaseTtlSeconds: env.LEASE_TTL_SECONDS,23    },24    providers: {25      anthropicKeyOnControlPlane: !!process.env.ANTHROPIC_API_KEY,26      enrollmentSecretConfigured: !!env.WORKER_ENROLLMENT_SECRET,27    },28  });29});3031export const POST = handler(async (req) => {32  const sess = await requireAdmin(req, { mutation: true });33  const body = await parseBody(34    req,35    z.object({36      key: z.enum([37        SETTING_KEYS.dispatchPaused,38        SETTING_KEYS.publishingHalted,39        SETTING_KEYS.publishingHaltedModes,40      ]),41      value: z.union([z.boolean(), z.array(z.string())]),42    }),43  );44  await setSetting(db(), body.key, body.value, { id: sess.userId, ip: sess.ip });45  return json({ ok: true });46});47
Files · main
Menu

Theme