/** * F5 Requirement Tracker * Tracks implementation status of each requirement * * @module @f5/cli/core/requirement-tracker * @version 1.0.0 */ export type RequirementStatus = 'pending' | 'in_progress' | 'done' | 'blocked' | 'out_of_scope'; export type RequirementPriority = 'Critical' | 'High' | 'Medium' | 'Low'; export interface RequirementItem { id: string; description: string; acceptanceCriteria: string[]; priority: RequirementPriority; status: RequirementStatus; implementedIn: string[]; notes: string; blockedReason?: string; } export interface ImplementationChecklist { projectName: string; sourceDocument: string; generatedAt: string; lastUpdated: string; requirements: RequirementItem[]; outOfScope: string[]; stats: { total: number; done: number; pending: number; inProgress: number; blocked: number; outOfScope: number; }; } export declare class RequirementTracker { private checklist; private checklistPath; constructor(); /** * Create empty checklist */ private createEmptyChecklist; /** * Load requirements from markdown file and create checklist */ loadFromMarkdown(filePath: string): Promise; /** * Load existing checklist from JSON file */ loadFromChecklist(filePath: string): Promise; /** * Extract project name from content or filename */ private extractProjectName; /** * Parse requirements section and extract structured data */ private parseRequirements; /** * Finalize requirement with defaults */ private finalizeRequirement; /** * Parse priority from text */ private parsePriority; /** * Parse out of scope items */ private parseOutOfScope; /** * Calculate stats from requirements */ private calculateStats; /** * Mark requirement as done with file location */ markDone(reqId: string, fileLocation: string): boolean; /** * Mark requirement as in progress */ markInProgress(reqId: string): boolean; /** * Mark requirement as blocked with reason */ markBlocked(reqId: string, reason: string): boolean; /** * Mark requirement as pending (reset) */ markPending(reqId: string): boolean; /** * Add note to requirement */ addNote(reqId: string, note: string): boolean; /** * Get requirement by ID */ getRequirement(reqId: string): RequirementItem | undefined; /** * Get pending requirements */ getPending(): RequirementItem[]; /** * Get done requirements */ getDone(): RequirementItem[]; /** * Get blocked requirements */ getBlocked(): RequirementItem[]; /** * Get in progress requirements */ getInProgress(): RequirementItem[]; /** * Get critical requirements */ getCritical(): RequirementItem[]; /** * Get current checklist */ getChecklist(): ImplementationChecklist; /** * Save checklist to file */ save(outputPath?: string): Promise; /** * Generate pre-flight report for user confirmation */ generatePreflightReport(): string; /** * Generate progress report */ generateProgressReport(): string; }