/** * QA360 Gitleaks Secrets Adapter (Sécurité Réelle) * Scan for hardcoded secrets in source code */ import { PackSecurity } from '../types/pack-v1.js'; export interface GitleaksConfig { workingDir: string; security?: PackSecurity; timeout?: number; excludePaths?: string[]; configFile?: string; verbose?: boolean; } export interface GitleaksFinding { Description: string; StartLine: number; EndLine: number; StartColumn: number; EndColumn: number; Match: string; Secret: string; File: string; SymlinkFile: string; Commit: string; Entropy: number; Author: string; Email: string; Date: string; Message: string; Tags: string[]; RuleID: string; Fingerprint: string; } export interface GitleaksScanResult { success: boolean; findings: GitleaksFinding[]; summary: { total: number; by_rule: Record; by_file: Record; high_entropy: number; }; budgetCheck: { findings_passed: boolean; }; scannedPath: string; error?: string; rawOutput?: string; junit?: string; errorCode?: string; } export declare class GitleaksSecretsAdapter { private redactor; private workingDir; constructor(workingDir?: string); /** * Execute Gitleaks secrets scan */ runSecretsScan(config: GitleaksConfig): Promise; /** * Prepare gitleaks configuration */ private prepareConfig; /** * Generate TOML config from object */ private generateTomlConfig; /** * Execute gitleaks scanner */ private executeGitleaks; /** * Parse gitleaks results */ private parseGitleaksResults; /** * Fallback mock scan when gitleaks not available */ private fallbackMockScan; /** * Calculate findings summary */ private calculateSummary; /** * Generate budget check based on security config */ private generateBudgetCheck; /** * Get empty summary structure */ private getEmptySummary; /** * Get default budget check structure */ private getDefaultBudgetCheck; /** * Generate JUnit XML report */ private generateJUnit; /** * Validate gitleaks scan configuration */ static validateConfig(config: GitleaksConfig): { valid: boolean; errors: string[]; }; /** * Check if Gitleaks is available */ static isAvailable(): Promise<{ available: boolean; error?: string; }>; }