import { artifacts, researchRuns, reviewFindings } from "@autoscholar/db"; import { and, desc, eq, inArray } from "drizzle-orm"; import Link from "next/link"; import { StatusBadge } from "@/components/StatusBadge"; import { fmtDateTime } from "@/lib/format"; import { db } from "@/lib/server/db"; export const dynamic = "force-dynamic"; export default async function ManuscriptsPage({ searchParams }: { searchParams: Promise<{ run?: string }> }) { const { run: selected } = await searchParams; const d = db(); const rows = await d .selectDistinctOn([researchRuns.id], { run: researchRuns, pdf: artifacts }) .from(artifacts) .innerJoin(researchRuns, eq(artifacts.runId, researchRuns.id)) .where(eq(artifacts.path, "manuscript/main.pdf")) .orderBy(researchRuns.id, desc(artifacts.version)); rows.sort((a, b) => b.run.updatedAt.getTime() - a.run.updatedAt.getTime()); const cur = rows.find((r) => r.run.id === selected) ?? rows[0]; let meta: Record | null = null; let review: Record | null = null; let findings: (typeof reviewFindings.$inferSelect)[] = []; let versions: (typeof artifacts.$inferSelect)[] = []; if (cur) { const { storage } = await import("@/lib/server/db"); const latest = await d .select() .from(artifacts) .where( and( eq(artifacts.runId, cur.run.id), inArray(artifacts.path, [ "manuscript/metadata.json", "review/review-1.json", "manuscript/main.pdf", ]), ), ) .orderBy(desc(artifacts.version)); const m = latest.find((a) => a.path === "manuscript/metadata.json"); const r = latest.find((a) => a.path === "review/review-1.json"); versions = latest.filter((a) => a.path === "manuscript/main.pdf"); try { if (m) meta = JSON.parse((await storage().get(m.storageKey)).toString("utf8")); } catch { meta = null; } try { if (r) review = JSON.parse((await storage().get(r.storageKey)).toString("utf8")); } catch { review = null; } findings = await d.select().from(reviewFindings).where(eq(reviewFindings.runId, cur.run.id)); } return (

Output

Manuscripts

Draft and final PDFs with metadata and review findings, from private run artifacts.

{rows.length === 0 ? (
No run has produced a manuscript yet.
) : (
    {rows.map((r) => (
  • {r.run.title} {" "} {fmtDateTime(r.run.updatedAt)}
  • ))}
{cur && (

{(meta?.title as string) ?? cur.run.title}

Run Quality main.tex
Download PDF {versions.length > 1 && (

PDF versions:{" "} {versions.map((v) => ( v{v.version} ))}

)} {meta && (

Metadata

Abstract. {String(meta.abstract ?? "")}

Keywords: {(meta.keywords as string[] | undefined)?.join(", ")} · synthetic:{" "} {String(meta.synthetic ?? false)}

)} {review && (

Independent review — round {String(review.round)} · {String(review.recommendation)}

{String(review.summary ?? "")}

    {((review.rubric as Array<{ dimension: string; score: number }>) ?? []).map((r) => (
  • {r.dimension}: {r.score}/5
  • ))}

{String(review.limitationsOfThisReview ?? "")}

)} {findings.length > 0 && (

Review findings ({findings.length})

    {findings.map((f) => (
  • {f.title}{" "} ({f.category}, {f.resolution})

    {f.detail}

    {f.resolutionNote &&

    ↳ {f.resolutionNote}

    }
  • ))}
)}
)}
)}
); }