openclaw/src/agents/workspace-dir.ts

21 lines
663 B
TypeScript

import path from "node:path";
import { resolveUserPath } from "../utils.js";
export function normalizeWorkspaceDir(workspaceDir?: string): string | null {
const trimmed = workspaceDir?.trim();
if (!trimmed) {
return null;
}
const expanded = trimmed.startsWith("~") ? resolveUserPath(trimmed) : trimmed;
const resolved = path.resolve(expanded);
// Refuse filesystem roots as "workspace" (too broad; almost always a bug).
if (resolved === path.parse(resolved).root) {
return null;
}
return resolved;
}
export function resolveWorkspaceRoot(workspaceDir?: string): string {
return normalizeWorkspaceDir(workspaceDir) ?? process.cwd();
}