import path from "node:path"; import { resolveGatewayProfileSuffix } from "./constants.js"; const windowsAbsolutePath = /^[a-zA-Z]:[\\/]/; const windowsUncPath = /^\\\\/; export function resolveHomeDir(env: Record): string { const home = env.HOME?.trim() || env.USERPROFILE?.trim(); if (!home) throw new Error("Missing HOME"); return home; } export function resolveUserPathWithHome(input: string, home?: string): string { const trimmed = input.trim(); if (!trimmed) return trimmed; if (trimmed.startsWith("~")) { if (!home) throw new Error("Missing HOME"); const expanded = trimmed.replace(/^~(?=$|[\\/])/, home); return path.resolve(expanded); } if (windowsAbsolutePath.test(trimmed) || windowsUncPath.test(trimmed)) { return trimmed; } return path.resolve(trimmed); } export function resolveGatewayStateDir(env: Record): string { const override = env.CLAWDBOT_STATE_DIR?.trim(); if (override) { const home = override.startsWith("~") ? resolveHomeDir(env) : undefined; return resolveUserPathWithHome(override, home); } const home = resolveHomeDir(env); const suffix = resolveGatewayProfileSuffix(env.CLAWDBOT_PROFILE); return path.join(home, `.clawdbot${suffix}`); }