2026-02-19 14:59:34 -08:00

35 lines
1.1 KiB
TypeScript

import { setUIActiveProfile, getEffectiveProfile, resolveWorkspaceRoot, resolveOpenClawStateDir } from "@/lib/workspace";
export const dynamic = "force-dynamic";
export const runtime = "nodejs";
export async function POST(req: Request) {
const body = (await req.json()) as { profile?: string };
const profileName = body.profile?.trim();
if (!profileName) {
return Response.json({ error: "Missing profile name" }, { status: 400 });
}
// Validate profile name: letters, numbers, hyphens, underscores only
if (profileName !== "default" && !/^[a-zA-Z0-9_-]+$/.test(profileName)) {
return Response.json(
{ error: "Invalid profile name. Use letters, numbers, hyphens, or underscores." },
{ status: 400 },
);
}
// "default" clears the override
setUIActiveProfile(profileName === "default" ? null : profileName);
const activeProfile = getEffectiveProfile();
const workspaceRoot = resolveWorkspaceRoot();
const stateDir = resolveOpenClawStateDir();
return Response.json({
activeProfile: activeProfile || "default",
workspaceRoot,
stateDir,
});
}