@sema-agent/core
Version:
Stateless, task-oriented AI agent core
31 lines (30 loc) • 879 B
JavaScript
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;
}
}
}