@mohantn/gate-keeper 2.1.1 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +82 -46
  2. package/package.json +1 -1
  3. package/dist/cli/query-repl.d.ts +0 -37
  4. package/dist/cli/query-repl.d.ts.map +0 -1
  5. package/dist/cli/query-repl.js +0 -298
  6. package/dist/cli/query-repl.js.map +0 -1
  7. package/dist/cli/repl-algorithms.d.ts +0 -49
  8. package/dist/cli/repl-algorithms.d.ts.map +0 -1
  9. package/dist/cli/repl-algorithms.js +0 -147
  10. package/dist/cli/repl-algorithms.js.map +0 -1
  11. package/dist/cli/setup-core.d.ts +0 -38
  12. package/dist/cli/setup-core.d.ts.map +0 -1
  13. package/dist/cli/setup-core.js +0 -427
  14. package/dist/cli/setup-core.js.map +0 -1
  15. package/dist/cli/setup.d.ts +0 -25
  16. package/dist/cli/setup.d.ts.map +0 -1
  17. package/dist/cli/setup.js +0 -159
  18. package/dist/cli/setup.js.map +0 -1
  19. package/dist/github/app.d.ts +0 -34
  20. package/dist/github/app.d.ts.map +0 -1
  21. package/dist/github/app.js +0 -261
  22. package/dist/github/app.js.map +0 -1
  23. package/dist/github/commenter.d.ts +0 -67
  24. package/dist/github/commenter.d.ts.map +0 -1
  25. package/dist/github/commenter.js +0 -155
  26. package/dist/github/commenter.js.map +0 -1
  27. package/dist/hooks/git-hooks.d.ts +0 -30
  28. package/dist/hooks/git-hooks.d.ts.map +0 -1
  29. package/dist/hooks/git-hooks.js +0 -179
  30. package/dist/hooks/git-hooks.js.map +0 -1
  31. package/dist/mcp/cache-preload.d.ts +0 -29
  32. package/dist/mcp/cache-preload.d.ts.map +0 -1
  33. package/dist/mcp/cache-preload.js +0 -103
  34. package/dist/mcp/cache-preload.js.map +0 -1
  35. package/dist/mcp/handlers/context.d.ts +0 -25
  36. package/dist/mcp/handlers/context.d.ts.map +0 -1
  37. package/dist/mcp/handlers/context.js +0 -382
  38. package/dist/mcp/handlers/context.js.map +0 -1
  39. package/dist/mcp/handlers/graph-intelligence.d.ts +0 -26
  40. package/dist/mcp/handlers/graph-intelligence.d.ts.map +0 -1
  41. package/dist/mcp/handlers/graph-intelligence.js +0 -371
  42. package/dist/mcp/handlers/graph-intelligence.js.map +0 -1
  43. package/dist/mcp/handlers/graph-query.d.ts +0 -25
  44. package/dist/mcp/handlers/graph-query.d.ts.map +0 -1
  45. package/dist/mcp/handlers/graph-query.js +0 -410
  46. package/dist/mcp/handlers/graph-query.js.map +0 -1
  47. package/dist/mcp/handlers/impact.d.ts +0 -4
  48. package/dist/mcp/handlers/impact.d.ts.map +0 -1
  49. package/dist/mcp/handlers/impact.js +0 -139
  50. package/dist/mcp/handlers/impact.js.map +0 -1
  51. package/dist/mcp/handlers/improvement.d.ts +0 -4
  52. package/dist/mcp/handlers/improvement.d.ts.map +0 -1
  53. package/dist/mcp/handlers/improvement.js +0 -136
  54. package/dist/mcp/handlers/improvement.js.map +0 -1
  55. package/dist/mcp/handlers/platform-installer.d.ts +0 -10
  56. package/dist/mcp/handlers/platform-installer.d.ts.map +0 -1
  57. package/dist/mcp/handlers/platform-installer.js +0 -168
  58. package/dist/mcp/handlers/platform-installer.js.map +0 -1
  59. package/dist/mcp/handlers/pr-review.d.ts +0 -33
  60. package/dist/mcp/handlers/pr-review.d.ts.map +0 -1
  61. package/dist/mcp/handlers/pr-review.js +0 -170
  62. package/dist/mcp/handlers/pr-review.js.map +0 -1
  63. package/dist/mcp/token-tracker.d.ts +0 -47
  64. package/dist/mcp/token-tracker.d.ts.map +0 -1
  65. package/dist/mcp/token-tracker.js +0 -93
  66. package/dist/mcp/token-tracker.js.map +0 -1
  67. package/dist/quality-loop/file-lock.d.ts +0 -12
  68. package/dist/quality-loop/file-lock.d.ts.map +0 -1
  69. package/dist/quality-loop/file-lock.js +0 -38
  70. package/dist/quality-loop/file-lock.js.map +0 -1
  71. package/dist/quality-loop/fix-worker.d.ts +0 -44
  72. package/dist/quality-loop/fix-worker.d.ts.map +0 -1
  73. package/dist/quality-loop/fix-worker.js +0 -414
  74. package/dist/quality-loop/fix-worker.js.map +0 -1
  75. package/dist/quality-loop/orchestrator.d.ts +0 -137
  76. package/dist/quality-loop/orchestrator.d.ts.map +0 -1
  77. package/dist/quality-loop/orchestrator.js +0 -894
  78. package/dist/quality-loop/orchestrator.js.map +0 -1
  79. package/dist/quality-loop/queue-manager.d.ts +0 -45
  80. package/dist/quality-loop/queue-manager.d.ts.map +0 -1
  81. package/dist/quality-loop/queue-manager.js +0 -173
  82. package/dist/quality-loop/queue-manager.js.map +0 -1
@@ -1,136 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.handleSuggestRefactoring = handleSuggestRefactoring;
37
- exports.handleViolationPatterns = handleViolationPatterns;
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- const universal_analyzer_1 = require("../../analyzer/universal-analyzer");
41
- const refactoring_advisor_1 = require("../../analyzer/refactoring-advisor");
42
- const pattern_detector_1 = require("../../analyzer/pattern-detector");
43
- const helpers_1 = require("../helpers");
44
- const shared_1 = require("./shared");
45
- // ── Shared instances ───────────────────────────────────────
46
- const fileAnalyzer = new universal_analyzer_1.UniversalAnalyzer();
47
- const refactoringAdvisor = new refactoring_advisor_1.RefactoringAdvisor();
48
- const patternDetector = new pattern_detector_1.PatternDetector();
49
- // ── Handlers ───────────────────────────────────────────────
50
- async function handleSuggestRefactoring(args) {
51
- const filePath = String(args.file_path ?? '');
52
- if (!filePath)
53
- return (0, shared_1.text)('Error: file_path is required.');
54
- if (!fs.existsSync(filePath))
55
- return (0, shared_1.text)(`Error: File not found: ${filePath}`);
56
- if (!fileAnalyzer.isSupportedFile(filePath)) {
57
- return (0, shared_1.text)('Error: Unsupported file type. Supported: .ts, .tsx, .jsx, .js, .cs');
58
- }
59
- const analysis = await fileAnalyzer.analyze(filePath);
60
- if (!analysis)
61
- return (0, shared_1.text)('Error: Analysis returned no results.');
62
- const repo = (0, helpers_1.findGitRoot)(path.dirname(filePath));
63
- const encodedRepo = encodeURIComponent(repo);
64
- const cyclesRaw = await (0, helpers_1.fetchDaemonApi)(`/api/cycles?repo=${encodedRepo}`);
65
- const cycles = (cyclesRaw ?? []);
66
- const hints = refactoringAdvisor.suggest(analysis, cycles);
67
- if (hints.length === 0) {
68
- return (0, shared_1.envelope)('suggest_refactoring', { file: analysis, hints: [], rating: analysis.rating, totalPotentialGain: 0 }, `## Refactoring Suggestions: ${path.basename(filePath)}\n\nNo refactoring hints — file looks clean!`);
69
- }
70
- const lines = [
71
- `## Refactoring Suggestions: ${path.basename(filePath)}`,
72
- `**Current Rating: ${analysis.rating}/10** | **${hints.length} hint(s) found**`,
73
- `**Total Potential Gain: +${Math.round(hints.reduce((s, h) => s + h.estimatedRatingGain, 0) * 10) / 10} pts**`,
74
- '',
75
- ];
76
- hints.forEach((hint, i) => {
77
- const priorityIcon = hint.priority === 'high' ? '🔴' : hint.priority === 'medium' ? '🟡' : '🟢';
78
- lines.push(`### ${i + 1}. ${hint.patternName} ${priorityIcon}`);
79
- lines.push(`**Pattern:** \`${hint.violationType}\` | **Estimated Gain:** +${hint.estimatedRatingGain} pts`);
80
- lines.push(`**Why:** ${hint.rationale}`);
81
- lines.push('**Steps:**');
82
- hint.steps.forEach((step, j) => lines.push(`${j + 1}. ${step}`));
83
- lines.push('');
84
- });
85
- const totalPotentialGain = Math.round(hints.reduce((s, h) => s + h.estimatedRatingGain, 0) * 10) / 10;
86
- return (0, shared_1.envelope)('suggest_refactoring', { file: analysis, hints, rating: analysis.rating, totalPotentialGain }, lines.join('\n'));
87
- }
88
- async function handleViolationPatterns(args) {
89
- const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
90
- const encodedRepo = encodeURIComponent(repo);
91
- let reports = null;
92
- const daemonRaw = await (0, helpers_1.fetchDaemonApi)(`/api/patterns?repo=${encodedRepo}`);
93
- if (daemonRaw && Array.isArray(daemonRaw)) {
94
- reports = daemonRaw;
95
- }
96
- if (!reports) {
97
- const files = (0, helpers_1.findSourceFiles)(repo, 200);
98
- const analyses = [];
99
- for (const f of files) {
100
- const a = await fileAnalyzer.analyze(f);
101
- if (a)
102
- analyses.push(a);
103
- }
104
- reports = patternDetector.detect(analyses);
105
- }
106
- if (reports.length === 0) {
107
- return (0, shared_1.envelope)('get_violation_patterns', { repo, patterns: [], totalGain: 0, fixOrder: [] }, '## Violation Patterns\n\nNo violations found across the codebase. Everything looks clean!');
108
- }
109
- const totalGain = Math.round(reports.reduce((s, r) => s + r.estimatedRatingGain, 0) * 10) / 10;
110
- const lines = [
111
- `## Violation Patterns — ${path.basename(repo)}`,
112
- `**${reports.length} distinct violation types** across the codebase | **Total estimated gain if all fixed: +${totalGain} pts**`,
113
- '',
114
- '| Rank | Pattern | Severity | Files | Occurrences | Est. Gain |',
115
- '|------|---------|----------|-------|-------------|-----------|',
116
- ];
117
- reports.forEach((r, i) => {
118
- const sev = r.severity === 'error' ? '🔴 error' : r.severity === 'warning' ? '🟡 warning' : '🟢 info';
119
- lines.push(`| ${i + 1} | \`${r.violationType}\` | ${sev} | ${r.fileCount} | ${r.totalOccurrences} | +${r.estimatedRatingGain} |`);
120
- });
121
- lines.push('');
122
- lines.push('### Module-Wide Fix Suggestions (top 5 by impact)');
123
- for (const r of reports.slice(0, 5)) {
124
- lines.push(`**\`${r.violationType}\`** — ${r.moduleSuggestion}`);
125
- lines.push(` Affects: ${r.affectedFiles.slice(0, 3).map(f => path.relative(repo, f)).join(', ')}${r.fileCount > 3 ? ` ... and ${r.fileCount - 3} more` : ''}`);
126
- lines.push('');
127
- }
128
- // Aggregate files across all patterns to give the queue a single fix order.
129
- const fileSet = new Set();
130
- for (const r of reports)
131
- for (const f of r.affectedFiles)
132
- fileSet.add(f);
133
- const fixOrder = [...fileSet];
134
- return (0, shared_1.envelope)('get_violation_patterns', { repo, patterns: reports, totalGain, fixOrder }, lines.join('\n'));
135
- }
136
- //# sourceMappingURL=improvement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"improvement.js","sourceRoot":"","sources":["../../../src/mcp/handlers/improvement.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * MCP handlers for platform integration and git hook installation.
3
- *
4
- * install_platform — writes AI assistant config files (CLAUDE.md, copilot-instructions.md, etc.)
5
- * install_git_hooks — installs post-commit / post-checkout hooks into .git/hooks/
6
- */
7
- import { McpResponse } from './shared';
8
- export declare function handleInstallPlatform(args: Record<string, unknown>): Promise<McpResponse>;
9
- export declare function handleInstallGitHooks(args: Record<string, unknown>): Promise<McpResponse>;
10
- //# sourceMappingURL=platform-installer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-installer.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/platform-installer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAkB,WAAW,EAAE,MAAM,UAAU,CAAC;AAQvD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAyD/F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAwC/F"}
@@ -1,168 +0,0 @@
1
- "use strict";
2
- /**
3
- * MCP handlers for platform integration and git hook installation.
4
- *
5
- * install_platform — writes AI assistant config files (CLAUDE.md, copilot-instructions.md, etc.)
6
- * install_git_hooks — installs post-commit / post-checkout hooks into .git/hooks/
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.handleInstallPlatform = handleInstallPlatform;
43
- exports.handleInstallGitHooks = handleInstallGitHooks;
44
- const fs = __importStar(require("fs"));
45
- const path = __importStar(require("path"));
46
- const helpers_1 = require("../helpers");
47
- const shared_1 = require("./shared");
48
- const installer_1 = require("../installer");
49
- const git_hooks_1 = require("../../hooks/git-hooks");
50
- const GATE_KEEPER_DIR = path.join(__dirname, '..', '..', '..');
51
- const SUPPORTED_PLATFORMS = ['claude-code', 'copilot', 'cursor', 'vscode', 'github-action'];
52
- async function handleInstallPlatform(args) {
53
- const platform = String(args.platform ?? '');
54
- if (!SUPPORTED_PLATFORMS.includes(platform)) {
55
- return (0, shared_1.text)(`Error: unknown platform "${platform}". ` +
56
- `Supported: ${SUPPORTED_PLATFORMS.join(', ')}.`);
57
- }
58
- const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
59
- const force = Boolean(args.force ?? false);
60
- const gkPath = String(args.gate_keeper_path ?? GATE_KEEPER_DIR);
61
- const config = (0, installer_1.getPlatformConfig)(platform, repo, gkPath);
62
- const targetPath = config.filePath;
63
- const exists = fs.existsSync(targetPath);
64
- if (exists && !force && !config.append) {
65
- return (0, shared_1.text)(`File already exists: ${targetPath}\n` +
66
- `Pass force=true to overwrite, or use append mode if available.`);
67
- }
68
- try {
69
- const dir = path.dirname(targetPath);
70
- fs.mkdirSync(dir, { recursive: true });
71
- if (config.append && exists) {
72
- const current = fs.readFileSync(targetPath, 'utf8');
73
- if (current.includes('Gate Keeper')) {
74
- return (0, shared_1.text)(`Gate Keeper section already present in ${targetPath}. No changes made.`);
75
- }
76
- fs.appendFileSync(targetPath, config.content, 'utf8');
77
- }
78
- else {
79
- fs.writeFileSync(targetPath, config.content, 'utf8');
80
- }
81
- }
82
- catch (err) {
83
- const msg = err instanceof Error ? err.message : String(err);
84
- return (0, shared_1.text)(`Error writing ${targetPath}: ${msg}`);
85
- }
86
- const action = config.append ? 'appended to' : (exists ? 'updated' : 'created');
87
- const lines = [
88
- `## Platform Integration: ${platform}`,
89
- `**${action}:** ${targetPath}`,
90
- `**Description:** ${config.description}`,
91
- '',
92
- config.append
93
- ? `Content appended to existing file.`
94
- : `File written (${config.content.length} bytes).`,
95
- '',
96
- '**Next steps:**',
97
- ...nextSteps(platform, repo),
98
- ];
99
- return (0, shared_1.envelope)('install_platform', { platform, filePath: targetPath, action }, lines.join('\n'));
100
- }
101
- async function handleInstallGitHooks(args) {
102
- const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
103
- const force = Boolean(args.force ?? false);
104
- const gkPath = String(args.gate_keeper_path ?? GATE_KEEPER_DIR);
105
- let results;
106
- try {
107
- results = (0, git_hooks_1.installGitHooks)(repo, gkPath, force);
108
- }
109
- catch (err) {
110
- const msg = err instanceof Error ? err.message : String(err);
111
- return (0, shared_1.text)(`Error installing git hooks: ${msg}`);
112
- }
113
- const created = results.filter(r => r.action === 'created').length;
114
- const updated = results.filter(r => r.action === 'updated').length;
115
- const skipped = results.filter(r => r.action === 'skipped').length;
116
- const lines = [
117
- '## Git Hooks Installation',
118
- `**Repository:** ${repo}`,
119
- `**Created:** ${created} | **Updated:** ${updated} | **Skipped:** ${skipped}`,
120
- '',
121
- '| Hook | Path | Action |',
122
- '|------|------|--------|',
123
- ...results.map(r => `| ${r.hook} | ${path.relative(repo, r.path)} | ${r.action} |`),
124
- '',
125
- '**Merge driver (optional):**',
126
- 'To prevent merge conflicts in graph.json, add to .gitattributes:',
127
- '```',
128
- (0, git_hooks_1.gitAttributesEntry)().trim(),
129
- '```',
130
- 'And to .git/config:',
131
- '```',
132
- (0, git_hooks_1.gitConfigEntry)(gkPath).trim(),
133
- '```',
134
- '',
135
- '_Hooks run non-blocking after commits/checkouts — they do not slow down git operations._',
136
- ];
137
- return (0, shared_1.envelope)('install_git_hooks', { repo, results }, lines.join('\n'));
138
- }
139
- function nextSteps(platform, repo) {
140
- switch (platform) {
141
- case 'claude-code':
142
- return [
143
- '- Restart Claude Code to load the updated CLAUDE.md.',
144
- '- The session-start protocol will now automatically call `get_graph_report`.',
145
- ];
146
- case 'copilot':
147
- return [
148
- '- GitHub Copilot will read .github/copilot-instructions.md automatically.',
149
- '- Ensure the gate-keeper MCP server is running: `npm run mcp`.',
150
- ];
151
- case 'cursor':
152
- return [
153
- '- Cursor reads .cursorrules automatically on project open.',
154
- '- Ensure the gate-keeper MCP server is registered in Cursor settings.',
155
- ];
156
- case 'vscode':
157
- return [
158
- '- Open VS Code and accept the MCP server popup.',
159
- '- Or run: `npm run mcp` and check the MCP panel.',
160
- ];
161
- case 'github-action':
162
- return [
163
- `- Commit .github/workflows/gate-keeper.yml to activate the workflow.`,
164
- '- The workflow runs on push and PR, posting quality summaries as comments.',
165
- ];
166
- }
167
- }
168
- //# sourceMappingURL=platform-installer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-installer.js","sourceRoot":"","sources":["../../../src/mcp/handlers/platform-installer.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * PR review handler — risk-scores a set of changed files against the graph.
3
- *
4
- * Each changed file gets a traffic-light verdict:
5
- * GREEN — leaf node, no dependents, rating ≥ 7
6
- * YELLOW — some dependents OR rating 5–7
7
- * RED — god node with fragile dependents OR rating < 5
8
- *
9
- * Returns an overall risk summary plus per-file breakdown.
10
- */
11
- import { GraphResponse } from './types';
12
- import { McpResponse } from './shared';
13
- export type FileVerdict = 'GREEN' | 'YELLOW' | 'RED';
14
- export interface FileRisk {
15
- file: string;
16
- verdict: FileVerdict;
17
- rating: number | null;
18
- directDependents: number;
19
- fragileImpacted: number;
20
- reasons: string[];
21
- }
22
- export interface PRReviewResult {
23
- overallVerdict: FileVerdict;
24
- changedFiles: number;
25
- redFiles: number;
26
- yellowFiles: number;
27
- greenFiles: number;
28
- fileRisks: FileRisk[];
29
- recommendation: string;
30
- }
31
- export declare function assessFile(filePath: string, graph: GraphResponse, revAdj: Map<string, string[]>, ratings: Map<string, number>): FileRisk;
32
- export declare function handlePRReview(args: Record<string, unknown>): Promise<McpResponse>;
33
- //# sourceMappingURL=pr-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-review.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/pr-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAkB,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,WAAW,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAQD,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,QAAQ,CAsCV;AAgBD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CA6ExF"}
@@ -1,170 +0,0 @@
1
- "use strict";
2
- /**
3
- * PR review handler — risk-scores a set of changed files against the graph.
4
- *
5
- * Each changed file gets a traffic-light verdict:
6
- * GREEN — leaf node, no dependents, rating ≥ 7
7
- * YELLOW — some dependents OR rating 5–7
8
- * RED — god node with fragile dependents OR rating < 5
9
- *
10
- * Returns an overall risk summary plus per-file breakdown.
11
- */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || (function () {
29
- var ownKeys = function(o) {
30
- ownKeys = Object.getOwnPropertyNames || function (o) {
31
- var ar = [];
32
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
- return ar;
34
- };
35
- return ownKeys(o);
36
- };
37
- return function (mod) {
38
- if (mod && mod.__esModule) return mod;
39
- var result = {};
40
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
- __setModuleDefault(result, mod);
42
- return result;
43
- };
44
- })();
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.assessFile = assessFile;
47
- exports.handlePRReview = handlePRReview;
48
- const path = __importStar(require("path"));
49
- const child_process_1 = require("child_process");
50
- const helpers_1 = require("../helpers");
51
- const shared_1 = require("./shared");
52
- const graph_algorithms_1 = require("../../graph/graph-algorithms");
53
- function ratingMap(graph) {
54
- const m = new Map();
55
- for (const n of graph.nodes)
56
- m.set(n.id, n.rating);
57
- return m;
58
- }
59
- function assessFile(filePath, graph, revAdj, ratings) {
60
- const rating = ratings.get(filePath) ?? null;
61
- const impactSet = (0, graph_algorithms_1.getImpactSet)(filePath, revAdj, ratings, 2, 6);
62
- const directDependents = impactSet.filter(e => e.severity === 'direct').length;
63
- const fragileImpacted = impactSet.filter(e => e.fragile).length;
64
- const reasons = [];
65
- let verdict = 'GREEN';
66
- if (rating !== null && rating < 5) {
67
- verdict = 'RED';
68
- reasons.push(`Low quality file (rating ${rating}/10)`);
69
- }
70
- else if (rating !== null && rating < 7) {
71
- verdict = 'YELLOW';
72
- reasons.push(`Below-threshold quality (rating ${rating}/10)`);
73
- }
74
- if (fragileImpacted >= 3) {
75
- verdict = 'RED';
76
- reasons.push(`${fragileImpacted} fragile dependents (rating<6) will be impacted`);
77
- }
78
- else if (fragileImpacted >= 1) {
79
- if (verdict !== 'RED')
80
- verdict = 'YELLOW';
81
- reasons.push(`${fragileImpacted} fragile dependent(s) may be impacted`);
82
- }
83
- if (directDependents >= 10) {
84
- verdict = 'RED';
85
- reasons.push(`God node — ${directDependents} direct dependents`);
86
- }
87
- else if (directDependents >= 3) {
88
- if (verdict !== 'RED')
89
- verdict = 'YELLOW';
90
- reasons.push(`${directDependents} direct dependents`);
91
- }
92
- if (reasons.length === 0) {
93
- reasons.push(rating !== null ? `Healthy file (rating ${rating}/10)` : 'Not yet analyzed');
94
- }
95
- return { file: filePath, verdict, rating, directDependents, fragileImpacted, reasons };
96
- }
97
- function getChangedFilesFromGit(repo) {
98
- const result = (0, child_process_1.spawnSync)('git', ['diff', '--name-only', 'HEAD~1', 'HEAD'], { cwd: repo, encoding: 'utf8', timeout: 5000 });
99
- if (result.status !== 0)
100
- return [];
101
- return result.stdout
102
- .split('\n')
103
- .map(f => f.trim())
104
- .filter(f => f && /\.(ts|tsx|js|jsx|cs)$/.test(f))
105
- .map(f => path.join(repo, f));
106
- }
107
- async function handlePRReview(args) {
108
- const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
109
- const encodedRepo = encodeURIComponent(repo);
110
- // Resolve file list — explicit input takes precedence, fallback to git diff
111
- let changedFiles;
112
- if (Array.isArray(args.changed_files) && args.changed_files.length > 0) {
113
- changedFiles = args.changed_files.map(f => {
114
- const s = String(f);
115
- return path.isAbsolute(s) ? s : path.join(repo, s);
116
- });
117
- }
118
- else {
119
- changedFiles = getChangedFilesFromGit(repo);
120
- }
121
- if (changedFiles.length === 0) {
122
- return (0, shared_1.text)('No changed source files found. Pass changed_files[] or ensure HEAD~1 exists.');
123
- }
124
- const graphRaw = await (0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodedRepo}`);
125
- if (!graphRaw) {
126
- return (0, shared_1.text)('Error: Gate Keeper daemon is not running. Start it with `npm run daemon` or `npm run dev`.');
127
- }
128
- const graph = graphRaw;
129
- const revAdj = (0, graph_algorithms_1.buildReverseAdjacency)(graph.edges);
130
- const ratings = ratingMap(graph);
131
- const fileRisks = changedFiles.map(f => assessFile(f, graph, revAdj, ratings));
132
- const redFiles = fileRisks.filter(r => r.verdict === 'RED').length;
133
- const yellowFiles = fileRisks.filter(r => r.verdict === 'YELLOW').length;
134
- const greenFiles = fileRisks.filter(r => r.verdict === 'GREEN').length;
135
- const overallVerdict = redFiles > 0 ? 'RED' : yellowFiles > 0 ? 'YELLOW' : 'GREEN';
136
- const recommendation = redFiles > 0
137
- ? `❌ **Request changes** — ${redFiles} high-risk file(s) need attention before merge.`
138
- : yellowFiles > 0
139
- ? `⚠️ **Review carefully** — ${yellowFiles} medium-risk file(s). Verify downstream impact.`
140
- : `✅ **Approve** — all changed files are low-risk (no fragile dependents, quality ≥ 7).`;
141
- const icon = { GREEN: '🟢', YELLOW: '🟡', RED: '🔴' };
142
- const lines = [
143
- '## PR Risk Assessment',
144
- `**Changed files:** ${changedFiles.length} | 🔴 Red: ${redFiles} | 🟡 Yellow: ${yellowFiles} | 🟢 Green: ${greenFiles}`,
145
- '',
146
- recommendation,
147
- '',
148
- '| File | Verdict | Rating | Dependents | Fragile Impact | Reason |',
149
- '|------|---------|--------|------------|----------------|--------|',
150
- ];
151
- for (const r of fileRisks) {
152
- const rel = path.relative(repo, r.file);
153
- const ratingStr = r.rating !== null ? `${r.rating}/10` : '?';
154
- lines.push(`| ${rel} | ${icon[r.verdict]} ${r.verdict} | ${ratingStr} | ${r.directDependents} | ${r.fragileImpacted} | ${r.reasons[0]} |`);
155
- }
156
- const worstFiles = fileRisks.filter(r => r.verdict === 'RED');
157
- if (worstFiles.length > 0) {
158
- lines.push('', '**Action required for RED files:**');
159
- for (const r of worstFiles) {
160
- lines.push(`- **${path.basename(r.file)}**: ${r.reasons.join('; ')}`);
161
- lines.push(` → Run \`suggest_refactoring("${r.file}")\` for fix instructions`);
162
- }
163
- }
164
- const result = {
165
- overallVerdict, changedFiles: changedFiles.length,
166
- redFiles, yellowFiles, greenFiles, fileRisks, recommendation,
167
- };
168
- return (0, shared_1.envelope)('pr_review', result, lines.join('\n'));
169
- }
170
- //# sourceMappingURL=pr-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-review.js","sourceRoot":"","sources":["../../../src/mcp/handlers/pr-review.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Session-scoped token savings tracker.
3
- *
4
- * Maintains an in-memory tally of graph queries made and estimated tokens
5
- * saved vs. the naive "read every affected file" approach. The MCP server
6
- * exposes this via get_session_metrics so agents can report efficiency.
7
- */
8
- export interface QueryRecord {
9
- tool: string;
10
- filesNotRead: number;
11
- estimatedSavedTokens: number;
12
- responseTokens: number;
13
- timestamp: number;
14
- }
15
- export interface SessionMetrics {
16
- totalQueries: number;
17
- totalFilesNotRead: number;
18
- estimatedSavedTokens: number;
19
- estimatedNaiveTokens: number;
20
- savingsPercent: number;
21
- queries: QueryRecord[];
22
- }
23
- export interface ContextBudget {
24
- totalQueries: number;
25
- totalFilesNotRead: number;
26
- estimatedNaiveTokens: number;
27
- actualResponseTokens: number;
28
- savingsPercent: number;
29
- savingsTokens: number;
30
- perTool: Array<{
31
- tool: string;
32
- calls: number;
33
- filesAvoided: number;
34
- tokensSaved: number;
35
- }>;
36
- recommendations: string[];
37
- }
38
- export declare class TokenTracker {
39
- private records;
40
- record(tool: string, filesNotRead: number, responseText: string): void;
41
- getMetrics(): SessionMetrics;
42
- /** Richer budget breakdown with per-tool stats and recommendations. */
43
- getContextBudget(): ContextBudget;
44
- reset(): void;
45
- }
46
- export declare const tokenTracker: TokenTracker;
47
- //# sourceMappingURL=token-tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-tracker.d.ts","sourceRoot":"","sources":["../../src/mcp/token-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAID,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAqB;IAEpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAWtE,UAAU,IAAI,cAAc;IAoB5B,uEAAuE;IACvE,gBAAgB,IAAI,aAAa;IAqDjC,KAAK,IAAI,IAAI;CAGd;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}