UNPKG

ccguard

Version:

Automated enforcement of net-negative LOC, complexity constraints, and quality standards for Claude code

76 lines 4.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DiagnoseCommand = void 0; const ConfigLoader_1 = require("../config/ConfigLoader"); exports.DiagnoseCommand = { name: 'diagnose', description: 'Diagnose potential issues with line counting and statistics', execute: async (guardManager) => { const isEnabled = await guardManager.isEnabled(); const stats = await guardManager.getSessionStats(); const baselineInfo = await guardManager.getBaselineInfo(); const configLoader = new ConfigLoader_1.ConfigLoader(); const config = configLoader.getConfig(); let message = 'CCGuard Diagnostic Report\n'; message += '========================\n\n'; // Status message += `Status: ${isEnabled ? 'ENABLED' : 'DISABLED'}\n`; message += `Mode: ${config.enforcement.mode}\n`; message += `Strategy: ${config.enforcement.strategy}\n`; message += `Ignore Empty Lines: ${config.enforcement.ignoreEmptyLines}\n\n`; // Baseline Info if (baselineInfo) { message += `Baseline Information:\n`; message += ` Total LOC: ${baselineInfo.totalLoc}\n`; message += ` File count: ${baselineInfo.fileCount}\n`; message += ` Established: ${new Date(baselineInfo.timestamp).toLocaleString()}\n\n`; } else { message += `Baseline: Not initialized\n\n`; } // Session Stats if (stats) { message += `Current Session Statistics:\n`; message += ` Lines added: ${stats.totalLinesAdded}\n`; message += ` Lines removed: ${stats.totalLinesRemoved}\n`; message += ` Net change: ${stats.netChange > 0 ? '+' : ''}${stats.netChange}\n`; message += ` Operations: ${stats.operationCount}\n`; message += ` Last updated: ${stats.lastUpdated}\n\n`; // Analysis if (stats.totalLinesAdded === 0 && stats.totalLinesRemoved > 0) { message += `⚠️ ISSUE DETECTED: Lines added is 0\n\n`; message += `Possible explanations:\n`; message += ` • Your operations only removed code (deletions/replacements with empty strings)\n`; message += ` • New content contains only empty lines (ignored when ignoreEmptyLines=true)\n`; message += ` • You're making edits that replace code with whitespace-only content\n`; message += ` • Operations are blocked before statistics are updated\n\n`; message += `Debugging steps:\n`; message += ` 1. Check if your recent edits actually added content\n`; message += ` 2. Verify new content isn't just whitespace/empty lines\n`; message += ` 3. Try setting ignoreEmptyLines=false in config if working with whitespace\n`; message += ` 4. Use 'ccguard reset' to clear stats and start fresh\n\n`; } if (stats.operationCount === 0) { message += `ℹ️ No operations tracked yet. Statistics will appear after file modifications.\n\n`; } } else { message += `No session statistics found.\n`; message += `This is normal for new sessions or after running 'ccguard reset'.\n\n`; } // Configuration message += `Configuration:\n`; message += ` Whitelist patterns: ${config.whitelist.patterns.length > 0 ? config.whitelist.patterns.join(', ') : 'none'}\n`; message += ` Whitelist extensions: ${config.whitelist.extensions.length > 0 ? config.whitelist.extensions.join(', ') : 'none'}\n`; message += ` Allowed positive lines: ${config.thresholds?.allowedPositiveLines ?? 0}\n\n`; message += `If issues persist:\n`; message += ` • Enable debug mode temporarily by modifying the source\n`; message += ` • Check that files aren't whitelisted unintentionally\n`; message += ` • Verify CCGuard is processing your operations (not skipped)\n`; return { decision: 'block', reason: message, }; } }; //# sourceMappingURL=DiagnoseCommand.js.map