UNPKG

morphbox

Version:

Docker-based AI sandbox for development with Claude integration

63 lines (60 loc) 2.15 kB
import { j as json } from './index-3BbzJtgI.js'; import { exec } from 'child_process'; import { promisify } from 'util'; import { W as WORKSPACE_DIR } from './workspace-CcQOwpY7.js'; import 'fs'; import 'path'; const execAsync = promisify(exec); const GET = async () => { try { try { await execAsync("git rev-parse --git-dir", { cwd: WORKSPACE_DIR }); } catch (error) { return json({ currentBranch: "", branches: [], files: [], error: "Not a git repository" }); } const { stdout: branch } = await execAsync("git branch --show-current", { cwd: WORKSPACE_DIR }); const currentBranch = branch.trim() || "main"; const { stdout: branchList } = await execAsync("git branch -a", { cwd: WORKSPACE_DIR }); const branches = branchList.split("\n").filter((b) => b.trim()).map((b) => { const name = b.replace(/^\*?\s+/, "").trim(); const current = b.startsWith("*"); return { name, current }; }); const { stdout: status } = await execAsync("git status --porcelain=v1", { cwd: WORKSPACE_DIR }); const files = status.split("\n").filter((line) => line.trim()).map((line) => { const indexStatus = line[0]; const workingStatus = line[1]; const path = line.substring(3); let status2 = "modified"; let staged = false; if (indexStatus === "A" || workingStatus === "A") { status2 = "added"; } else if (indexStatus === "D" || workingStatus === "D") { status2 = "deleted"; } else if (indexStatus === "R" || workingStatus === "R") { status2 = "renamed"; } else if (indexStatus === "?" && workingStatus === "?") { status2 = "untracked"; } if (indexStatus !== " " && indexStatus !== "?") { staged = true; } return { path, status: status2, staged }; }); return json({ currentBranch, branches, files }); } catch (error) { console.error("Git status error:", error); return json({ error: "Failed to get git status" }, { status: 500 }); } }; export { GET }; //# sourceMappingURL=_server.ts-Bxd73FcO.js.map