import { NextRequest } from "next/server";import { parseGitAction } from "@/features/agent/contracts";import { assertGitCwd, loadGitState, runGitAction } from "@/features/agent/git";import { requireApiAccess } from "@/lib/auth/guard";import { errorMessage, jsonError } from "@/app/api/_lib/route-helpers"; export const runtime = "nodejs";export const dynamic = "force-dynamic"; export async function GET(request: NextRequest) { const denied = requireApiAccess(request); if (denied) return denied; const { cwd, error } = assertGitCwd(request.nextUrl.searchParams.get("cwd")); if (error) return error; try { return Response.json(await loadGitState(cwd)); } catch (err) { return jsonError(errorMessage(err, "Git operation failed")); }} export async function POST(request: NextRequest) { const denied = requireApiAccess(request); if (denied) return denied; const { cwd, error } = assertGitCwd(request.nextUrl.searchParams.get("cwd")); if (error) return error; let body: unknown; try { body = await request.json(); } catch { return jsonError("Invalid JSON body"); } const action = parseGitAction(body); if (!action.ok) return jsonError(action.error); try { return Response.json(await runGitAction(cwd, action.value)); } catch (err) { return jsonError(errorMessage(err, "Git operation failed")); }}
import { NextRequest } from "next/server";
import { parseGitAction } from "@/features/agent/contracts";
import { assertGitCwd, loadGitState, runGitAction } from "@/features/agent/git";
import { requireApiAccess } from "@/lib/auth/guard";
import { errorMessage, jsonError } from "@/app/api/_lib/route-helpers";
export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export async function GET(request: NextRequest) {
const denied = requireApiAccess(request);
if (denied) return denied;
const { cwd, error } = assertGitCwd(request.nextUrl.searchParams.get("cwd"));
if (error) return error;
try {
return Response.json(await loadGitState(cwd));
} catch (err) {
return jsonError(errorMessage(err, "Git operation failed"));
}
}
export async function POST(request: NextRequest) {
const denied = requireApiAccess(request);
if (denied) return denied;
const { cwd, error } = assertGitCwd(request.nextUrl.searchParams.get("cwd"));
if (error) return error;
let body: unknown;
try {
body = await request.json();
} catch {
return jsonError("Invalid JSON body");
}
const action = parseGitAction(body);
if (!action.ok) return jsonError(action.error);
try {
return Response.json(await runGitAction(cwd, action.value));
} catch (err) {
return jsonError(errorMessage(err, "Git operation failed"));
}
}