import { listProjects, listTemplates } from "@autoscholar/core"; import { db } from "@/lib/server/db"; import { NewResearchForm } from "./NewResearchForm"; export const dynamic = "force-dynamic"; export default async function NewResearch({ searchParams, }: { searchParams: Promise<{ template?: string; project?: string }>; }) { const sp = await searchParams; const d = db(); const projects = (await listProjects(d)).map((p) => ({ id: p.project.id, title: p.project.title, discipline: p.project.discipline, })); const templates = (await listTemplates(d)).map((t) => ({ slug: t.slug, name: t.name, mode: t.mode, content: t.content, })); const env = { defaultBudget: Number(process.env.DEFAULT_MAX_BUDGET_USD ?? 25), defaultRuntime: Number(process.env.DEFAULT_MAX_RUNTIME_MINUTES ?? 240), model: process.env.ANTHROPIC_MODEL ?? "claude-opus-5-5", }; return (

Launch

New research

Upload or paste the paper-specific CLAUDE.md. The platform validates it, freezes it as an immutable version, builds a server-side manifest and launches an idempotent run on a MacLustr worker.

); }