import { allSettings, getEnv, SETTING_KEYS, setSetting } from "@autoscholar/core"; import { z } from "zod"; import { handler, json, parseBody } from "@/lib/server/api"; import { db } from "@/lib/server/db"; import { requireAdmin } from "@/lib/server/session"; export const runtime = "nodejs"; export const GET = handler(async (req) => { await requireAdmin(req); const env = getEnv(); return json({ settings: await allSettings(db()), env: { publishingEnabled: env.PUBLISHING_ENABLED === 1, dispatchEnabled: env.DISPATCH_ENABLED === 1, stagingMode: env.STAGING_MODE === 1, model: env.ANTHROPIC_MODEL, reviewerModel: env.ANTHROPIC_REVIEWER_MODEL, defaultBudgetUsd: env.DEFAULT_MAX_BUDGET_USD, defaultRuntimeMinutes: env.DEFAULT_MAX_RUNTIME_MINUTES, leaseTtlSeconds: env.LEASE_TTL_SECONDS, }, providers: { anthropicKeyOnControlPlane: !!process.env.ANTHROPIC_API_KEY, enrollmentSecretConfigured: !!env.WORKER_ENROLLMENT_SECRET, }, }); }); export const POST = handler(async (req) => { const sess = await requireAdmin(req, { mutation: true }); const body = await parseBody( req, z.object({ key: z.enum([ SETTING_KEYS.dispatchPaused, SETTING_KEYS.publishingHalted, SETTING_KEYS.publishingHaltedModes, ]), value: z.union([z.boolean(), z.array(z.string())]), }), ); await setSetting(db(), body.key, body.value, { id: sess.userId, ip: sess.ip }); return json({ ok: true }); });