UNPKG

ccguard

Version:

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

46 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.commands = void 0; const createCommand = (name, description, execute, aliases) => ({ name, description, execute, aliases }); exports.commands = [ createCommand('on', 'Enable CCGuard enforcement', async (gm) => ({ decision: 'block', reason: await gm.enable().then(() => 'CCGuard has been ENABLED') })), createCommand('off', 'Disable CCGuard enforcement', async (gm) => ({ decision: 'block', reason: await gm.disable().then(() => 'CCGuard has been DISABLED') })), createCommand('status', 'Show CCGuard status and session statistics', async (gm) => { const [isEnabled, stats] = await Promise.all([gm.isEnabled(), gm.getSessionStats()]); const status = isEnabled ? 'ENABLED' : 'DISABLED'; let msg = `CCGuard is ${status}\n\n`; if (stats) { msg += `Session Statistics:\n`; if (stats.initialSnapshot !== undefined) { msg += ` Initial LOC: ${stats.initialSnapshot}\n`; msg += ` Current LOC: ${stats.currentTotal ?? (stats.initialSnapshot + stats.netChange)}\n`; msg += ` Net change: ${stats.netChange > 0 ? '+' : ''}${stats.netChange}\n`; } else { // Fallback for sessions without snapshot msg += ` Lines added: ${stats.totalLinesAdded}\n`; msg += ` Lines removed: ${stats.totalLinesRemoved}\n`; msg += ` Net change: ${stats.netChange > 0 ? '+' : ''}${stats.netChange}\n`; } msg += ` Operations: ${stats.operationCount}`; if (stats.snapshotTimestamp) { msg += `\n Snapshot taken: ${new Date(stats.snapshotTimestamp).toLocaleString()}`; } } else { msg += 'No operations tracked yet in this session.'; } return { decision: 'block', reason: msg }; }), createCommand('reset', 'Reset session statistics', async (gm) => { await gm.resetStats(); const stats = await gm.getSessionStats(); let msg = 'Session statistics have been reset.'; if (stats?.initialSnapshot !== undefined) { msg += `\n\nNew snapshot taken: ${stats.initialSnapshot} LOC`; } return { decision: 'block', reason: msg }; }), createCommand('version', 'Show CCGuard version', async () => ({ decision: 'block', reason: `CCGuard version 0.1.3@dirty` })), ]; //# sourceMappingURL=commands.js.map