Repository Public
1import { sql } from "@/lib/db";2import { createProject } from "@/lib/studio-ops";3import { out, studio } from "@/lib/studio-api";45/** GET /api/studio/projects — recent projects. POST — create a project from a single concept (same contract as /concepts). */6export async function GET(req: Request) {7 return studio(req, "viewer", async () => out({ projects: await sql`SELECT id, title, status, mode, language, running_stage, blocked_reason, error, created_at, updated_at FROM projects WHERE status <> 'archived' ORDER BY updated_at DESC LIMIT 100` }));8}9export async function POST(req: Request) {10 return studio(req, "editor", async (user, body) => {11 const r = await createProject(user, body, { idempotencyKey: req.headers.get("idempotency-key"), origin: "api" });12 return out({ projectId: r.id, duplicate: r.duplicate }, r.duplicate ? 200 : 201);13 });14}15