export const dynamic = "force-dynamic"; import { eq } from "drizzle-orm"; import { requireAuth, unauthorizedResponse } from "@/lib/auth/guard"; import { getDb } from "@/lib/db/client"; import { runs } from "@/lib/db/schema"; import { cancelRun } from "@/lib/runner/registry"; export async function POST( request: Request, { params }: { params: Promise<{ runId: string }> }, ) { const auth = await requireAuth(request); if (!auth.authenticated) return unauthorizedResponse(); const { runId } = await params; const db = getDb(); const run = db.select().from(runs).where(eq(runs.id, runId)).get(); if (!run) return Response.json({ error: "Run not found" }, { status: 404 }); if (run.status !== "queued" && run.status !== "running") { return Response.json( { error: `Run already ${run.status}` }, { status: 409 }, ); } const cancelled = cancelRun(runId); if (!cancelled) { return Response.json( { error: "Run is not active in this server process" }, { status: 409 }, ); } return Response.json({ status: "cancelling" }, { status: 202 }); }