/** * Resource Path Resolvers * Issue #136: Phase 1 - Task 1.2 * * Provides Strategy pattern implementation for resolving resource paths: * - Database paths (cm.db, cm-{issueNo}.db) * - PID file paths (.commandmate.pid, pids/{issueNo}.pid) * - Log file paths (commandmate.log, commandmate-{issueNo}.log) * * SF-SEC-001: TOCTOU protection via try-catch pattern in validate() * * @module resource-resolvers */ /** * Interface for resource path resolvers * Strategy pattern for unified resource path handling */ export interface ResourcePathResolver { /** * Resolve the path for a resource * @param issueNo - Optional issue number for worktree-specific resources * @returns Absolute path to the resource */ resolve(issueNo?: number): string; /** * Validate that a path is within the allowed directory * SF-SEC-001: Uses try-catch pattern for TOCTOU protection * * @param targetPath - Path to validate * @returns true if path is valid and within allowed boundaries */ validate(targetPath: string): boolean; } /** * Database path resolver * * @example * ```typescript * const resolver = new DbPathResolver(); * resolver.resolve(); // ~/.commandmate/data/cm.db * resolver.resolve(135); // ~/.commandmate/data/cm-135.db * ``` */ export declare class DbPathResolver implements ResourcePathResolver { resolve(issueNo?: number): string; validate(targetPath: string): boolean; } /** * PID file path resolver * * Maintains backward compatibility: * - No issueNo: ~/.commandmate/.commandmate.pid (main server) * - With issueNo: ~/.commandmate/pids/{issueNo}.pid (worktree server) * * @example * ```typescript * const resolver = new PidPathResolver(); * resolver.resolve(); // ~/.commandmate/.commandmate.pid * resolver.resolve(135); // ~/.commandmate/pids/135.pid * ``` */ export declare class PidPathResolver implements ResourcePathResolver { resolve(issueNo?: number): string; validate(targetPath: string): boolean; } /** * Log file path resolver * * @example * ```typescript * const resolver = new LogPathResolver(); * resolver.resolve(); // ~/.commandmate/logs/commandmate.log * resolver.resolve(135); // ~/.commandmate/logs/commandmate-135.log * ``` */ export declare class LogPathResolver implements ResourcePathResolver { resolve(issueNo?: number): string; validate(targetPath: string): boolean; } /** * Factory function for DbPathResolver */ export declare function createDbPathResolver(): DbPathResolver; /** * Factory function for PidPathResolver */ export declare function createPidPathResolver(): PidPathResolver; /** * Factory function for LogPathResolver */ export declare function createLogPathResolver(): LogPathResolver; //# sourceMappingURL=resource-resolvers.d.ts.map