mirror of
http://192.168.0.88:13333/lywsvip/openclaw-zero-token.git
synced 2026-05-09 00:34:04 +08:00
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
33 lines
831 B
TypeScript
33 lines
831 B
TypeScript
import fs from "node:fs";
|
|
import { isPathInside as isBoundaryPathInside } from "../infra/path-guards.js";
|
|
|
|
export function isPathInside(baseDir: string, targetPath: string): boolean {
|
|
return isBoundaryPathInside(baseDir, targetPath);
|
|
}
|
|
|
|
export function safeRealpathSync(targetPath: string, cache?: Map<string, string>): string | null {
|
|
const cached = cache?.get(targetPath);
|
|
if (cached) {
|
|
return cached;
|
|
}
|
|
try {
|
|
const resolved = fs.realpathSync(targetPath);
|
|
cache?.set(targetPath, resolved);
|
|
return resolved;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function safeStatSync(targetPath: string): fs.Stats | null {
|
|
try {
|
|
return fs.statSync(targetPath);
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function formatPosixMode(mode: number): string {
|
|
return (mode & 0o777).toString(8).padStart(3, "0");
|
|
}
|