export declare class PathValidator { private static ALLOWED_DIRECTORIES; private static ALLOWED_EXTENSIONS; private static resolvedAllowedDirs; static initialize(personasDir: string, allowedExtensions?: string[]): void; /** * Get allowed directories with symlinks resolved * Caches the result to avoid repeated filesystem calls */ private static getResolvedAllowedDirectories; /** * SECURITY FIX #1290: Resolve symlinks to prevent path traversal * Helper function to resolve symlinks in paths */ private static resolveSymlinks; /** * Helper to resolve symlinks in parent directory when target doesn't exist */ private static resolveParentSymlink; /** * Validate that the real path is within allowed directories * FIX: Now resolves symlinks in allowed directories to handle macOS /tmp -> /private/tmp */ private static validatePathIsAllowed; /** * Validate filename extension and format */ private static validateFilename; /** * Validate element path WITHOUT resolving symlinks * Used by BaseElementManager to validate paths while preserving the original path representation * * SECURITY: Rejects symlinks that point outside the allowed directory * * @param absolutePath - Absolute path to validate * @param allowedDir - Base directory that the path must be within * @throws Error if path is invalid, is a symlink pointing outside allowed directory, or outside allowed directory */ static validateElementPathOnly(absolutePath: string, allowedDir: string): Promise; /** * Stateless element path validation (generic for all element types) * Used by BaseElementManager for validating paths across all element types. * * @param userPath - User-provided path to validate * @param allowedDir - Base directory that the path must be within * @returns Validated absolute path with symlinks resolved * @deprecated Use validateElementPathOnly() for path validation without resolution */ static validateElementPath(userPath: string, allowedDir: string): Promise; /** * @deprecated Use validateElementPath() instead. This method uses class-level state. * Validate a persona path against pre-initialized allowed directories. * * @param userPath - User-provided path to validate * @returns Validated absolute path with symlinks resolved */ static validatePersonaPath(userPath: string): Promise; static safeReadFile(filePath: string): Promise; static safeWriteFile(filePath: string, content: string): Promise; } //# sourceMappingURL=pathValidator.d.ts.map