import { FileSystemInterface } from '../utils/storage/FileSystemInterface.js'; /** * Interface for progress tracking details */ interface ProgressDetails { /** Description of the progress or action */ description: string; /** Optional filename related to the action */ filename?: string; /** Optional path related to the action */ path?: string; /** Optional status of the action (success, error, warning) */ status?: 'success' | 'error' | 'warning'; /** Optional timestamp of the action */ timestamp?: Date; /** Optional additional metadata as key-value pairs */ metadata?: Record; /** Optional username or GitHub profile URL of who performed the action */ userId?: string; /** * Any additional properties * @deprecated Use metadata for additional properties instead */ [key: string]: unknown; } /** * Interface for decision logging */ interface Decision { /** Title of the decision */ title: string; /** Context or background information for the decision */ context: string; /** The actual decision that was made */ decision: string; /** Alternatives that were considered (string or array of strings) */ alternatives?: string[] | string; /** Consequences of the decision (string or array of strings) */ consequences?: string[] | string; /** Optional date when the decision was made (defaults to current date) */ date?: Date; /** Optional tags to categorize the decision */ tags?: string[]; /** Optional username or GitHub profile URL of who made the decision */ userId?: string; } /** * Class for tracking progress and logging decisions * * This class handles all operations related to tracking progress, logging decisions, * and updating the active context in the Memory Bank. * * Supports both local and remote file systems through the FileSystemInterface. */ export declare class ProgressTracker { private memoryBankDir; private userId; private fileSystem; private memoryBankRelativePath; private isRemote; /** * Creates a new ProgressTracker instance * * @param memoryBankDir - Directory of the Memory Bank (for backwards compatibility) * @param userId - Username for progress tracking (can be name or GitHub URL) * @param fileSystem - Optional FileSystemInterface for remote support * @param memoryBankRelativePath - Relative path to memory bank from fileSystem baseDir */ constructor(memoryBankDir: string, userId?: string, fileSystem?: FileSystemInterface, memoryBankRelativePath?: string); /** * Sets the file system to use for operations * * @param fileSystem - FileSystemInterface implementation * @param relativePath - Relative path to memory bank from fileSystem baseDir */ setFileSystem(fileSystem: FileSystemInterface, relativePath: string): void; /** * Gets the path to a file, using either absolute path or relative path depending on mode * * @param filename - Name of the file * @returns Path to use for file operations */ private getFilePath; /** * Reads a file using either FileSystemInterface or FileUtils * * @param filename - Name of the file to read * @returns File contents */ private readFileContent; /** * Writes content to a file using either FileSystemInterface or FileUtils * * @param filename - Name of the file to write * @param content - Content to write */ private writeFileContent; /** * Formats the username for display in markdown * * If the userId is a GitHub URL, it will be formatted as [@username](url) * Otherwise, the username is returned as-is * * @param userId - The username or GitHub profile URL * @returns Formatted username string * @private */ private formatUserId; /** * Tracks progress by adding an entry to the progress file * * Note: All progress entries are stored in English regardless of the system locale or user settings. * * @param action - Action performed (e.g., 'Implemented feature', 'Fixed bug') * @param details - Details of the progress * @returns The updated progress content */ trackProgress(action: string, details: ProgressDetails): Promise; /** * Updates the progress file * * @param action - Action performed * @param details - Details of the action * @private */ private updateProgressFile; /** * Updates the active context file * * @param action - Action performed * @param details - Details of the action * @private */ private updateActiveContextFile; /** * Updates the active context * * Note: All content is stored in English regardless of the system locale or user settings. * * @param context - Context to update * @throws Error if update fails */ updateActiveContext(context: { tasks?: string[]; issues?: string[]; nextSteps?: string[]; }): Promise; /** * Clears the current session notes * * @throws Error if clearing fails */ clearSessionNotes(): Promise; /** * Logs a decision in the decision log * * Note: All decision entries are stored in English regardless of the system locale or user settings. * * @param decision - Decision to log * @throws Error if logging fails */ logDecision(decision: Decision): Promise; } export {}; //# sourceMappingURL=ProgressTracker.d.ts.map