/** * @fileoverview Auto-Fixer for Security Vulnerabilities * @module @nahisaho/musubix-security/remediation/auto-fixer * * Provides automated fix generation and application for detected vulnerabilities. */ import type { Vulnerability, Fix, FixStrategy } from '../types/index.js'; /** * Fix template for a vulnerability type */ export interface FixTemplate { /** Template ID */ id: string; /** Vulnerability types this template applies to */ vulnerabilityTypes: string[]; /** Rule patterns to match */ rulePatterns: string[]; /** Fix strategy */ strategy: FixStrategy; /** Template code transformations */ transformations: CodeTransformation[]; /** Required imports */ imports: ImportSpec[]; /** Confidence score for this template */ confidence: number; /** Whether fix might break functionality */ breakingChange: boolean; /** Description */ description: string; } /** * Code transformation specification */ export interface CodeTransformation { /** Transformation type */ type: 'replace' | 'wrap' | 'insert_before' | 'insert_after' | 'delete'; /** Pattern to match (regex) */ pattern?: string; /** Replacement template (can use $1, $2 etc for captured groups) */ replacement?: string; /** Wrapper template (for wrap type) */ wrapper?: { before: string; after: string; }; /** Content to insert */ content?: string; } /** * Import specification */ export interface ImportSpec { /** Module name */ module: string; /** Named imports */ namedImports?: string[]; /** Default import name */ defaultImport?: string; /** Is type import */ isTypeOnly?: boolean; } /** * Fix application result */ export interface FixApplicationResult { /** Whether fix was applied */ applied: boolean; /** Fix that was applied */ fix: Fix; /** Files modified */ modifiedFiles: string[]; /** Backup created */ backupPath?: string; /** Error if failed */ error?: string; /** Warnings */ warnings: string[]; } /** * Fix generation options */ export interface FixGenerationOptions { /** Maximum fixes to generate per vulnerability */ maxFixes?: number; /** Minimum confidence threshold */ minConfidence?: number; /** Include breaking changes */ includeBreakingChanges?: boolean; /** Preferred strategies */ preferredStrategies?: FixStrategy[]; /** Custom templates */ customTemplates?: FixTemplate[]; } /** * Auto-fixer options */ export interface AutoFixerOptions { /** Create backups before applying fixes */ createBackups?: boolean; /** Backup directory */ backupDir?: string; /** Dry run mode (don't actually modify files) */ dryRun?: boolean; /** Validate fixes after applying */ validateAfterApply?: boolean; /** Custom fix templates */ templates?: FixTemplate[]; } /** * AutoFixer for generating and applying security fixes * * @example * ```typescript * const fixer = createAutoFixer({ dryRun: true }); * const fixes = fixer.generateFixes(vulnerability); * const result = await fixer.applyFix(fixes[0], fileContent); * ``` */ export declare class AutoFixer { private templates; private options; constructor(options?: AutoFixerOptions); /** * Generate fixes for a vulnerability */ generateFixes(vulnerability: Vulnerability, options?: FixGenerationOptions): Fix[]; /** * Generate fix for multiple vulnerabilities */ generateBatchFixes(vulnerabilities: Vulnerability[], options?: FixGenerationOptions): Map; /** * Apply a fix to file content */ applyFix(fix: Fix, fileContent: string): FixApplicationResult; /** * Get available fix strategies for a vulnerability type */ getAvailableStrategies(vulnerabilityType: string): FixStrategy[]; /** * Get fix template by ID */ getTemplate(templateId: string): FixTemplate | undefined; /** * Register custom fix template */ registerTemplate(template: FixTemplate): void; /** * Validate a fix before applying */ validateFix(fix: Fix): { valid: boolean; errors: string[]; }; /** * Preview fix without applying */ previewFix(fix: Fix, fileContent: string): string; private findMatchingTemplates; private sortTemplates; private generateFixFromTemplate; private createEditFromTransformation; private applyReplacement; private applyEdit; private addImports; private getModifiedContent; } /** * Create an auto-fixer instance */ export declare function createAutoFixer(options?: AutoFixerOptions): AutoFixer; /** * Get all built-in fix templates */ export declare function getBuiltInTemplates(): FixTemplate[]; /** * Create a custom fix template */ export declare function createFixTemplate(config: Omit): FixTemplate; //# sourceMappingURL=auto-fixer.d.ts.map