UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

31 lines (30 loc) • 879 B
import { realpathSync } from "node:fs"; import { realpath } from "node:fs/promises"; import { basename, dirname, join, resolve } from "node:path"; export function physicalPathOf(p) { return realpathSync.native(p); } export function priorCallerCasedPathOf(p) { return realpathSync(p); } export async function physicalPathOfAsync(p) { return await realpath(p); } export function physicalPathOfExisting(p) { const abs = resolve(p); const missingTail = []; let cur = abs; for (;;) { try { const real = physicalPathOf(cur); return missingTail.length === 0 ? real : join(real, ...[...missingTail].reverse()); } catch { const parent = dirname(cur); if (parent === cur) return abs; missingTail.push(basename(cur)); cur = parent; } } }