ccguard
Version:
Automated enforcement of net-negative LOC, complexity constraints, and quality standards for Claude code
46 lines • 2.53 kB
JavaScript
;
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