@mohantn/gate-keeper 2.2.0 → 2.2.2
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.
- package/README.md +82 -46
- package/package.json +2 -2
- package/dist/cli/query-repl.d.ts +0 -37
- package/dist/cli/query-repl.d.ts.map +0 -1
- package/dist/cli/query-repl.js +0 -298
- package/dist/cli/query-repl.js.map +0 -1
- package/dist/cli/repl-algorithms.d.ts +0 -49
- package/dist/cli/repl-algorithms.d.ts.map +0 -1
- package/dist/cli/repl-algorithms.js +0 -147
- package/dist/cli/repl-algorithms.js.map +0 -1
- package/dist/cli/setup-core.d.ts +0 -38
- package/dist/cli/setup-core.d.ts.map +0 -1
- package/dist/cli/setup-core.js +0 -427
- package/dist/cli/setup-core.js.map +0 -1
- package/dist/cli/setup.d.ts +0 -25
- package/dist/cli/setup.d.ts.map +0 -1
- package/dist/cli/setup.js +0 -159
- package/dist/cli/setup.js.map +0 -1
- package/dist/github/app.d.ts +0 -34
- package/dist/github/app.d.ts.map +0 -1
- package/dist/github/app.js +0 -261
- package/dist/github/app.js.map +0 -1
- package/dist/github/commenter.d.ts +0 -67
- package/dist/github/commenter.d.ts.map +0 -1
- package/dist/github/commenter.js +0 -155
- package/dist/github/commenter.js.map +0 -1
- package/dist/hooks/git-hooks.d.ts +0 -30
- package/dist/hooks/git-hooks.d.ts.map +0 -1
- package/dist/hooks/git-hooks.js +0 -179
- package/dist/hooks/git-hooks.js.map +0 -1
- package/dist/mcp/cache-preload.d.ts +0 -29
- package/dist/mcp/cache-preload.d.ts.map +0 -1
- package/dist/mcp/cache-preload.js +0 -103
- package/dist/mcp/cache-preload.js.map +0 -1
- package/dist/mcp/handlers/context.d.ts +0 -25
- package/dist/mcp/handlers/context.d.ts.map +0 -1
- package/dist/mcp/handlers/context.js +0 -382
- package/dist/mcp/handlers/context.js.map +0 -1
- package/dist/mcp/handlers/graph-intelligence.d.ts +0 -26
- package/dist/mcp/handlers/graph-intelligence.d.ts.map +0 -1
- package/dist/mcp/handlers/graph-intelligence.js +0 -371
- package/dist/mcp/handlers/graph-intelligence.js.map +0 -1
- package/dist/mcp/handlers/graph-query.d.ts +0 -25
- package/dist/mcp/handlers/graph-query.d.ts.map +0 -1
- package/dist/mcp/handlers/graph-query.js +0 -410
- package/dist/mcp/handlers/graph-query.js.map +0 -1
- package/dist/mcp/handlers/impact.d.ts +0 -4
- package/dist/mcp/handlers/impact.d.ts.map +0 -1
- package/dist/mcp/handlers/impact.js +0 -139
- package/dist/mcp/handlers/impact.js.map +0 -1
- package/dist/mcp/handlers/improvement.d.ts +0 -4
- package/dist/mcp/handlers/improvement.d.ts.map +0 -1
- package/dist/mcp/handlers/improvement.js +0 -136
- package/dist/mcp/handlers/improvement.js.map +0 -1
- package/dist/mcp/handlers/platform-installer.d.ts +0 -10
- package/dist/mcp/handlers/platform-installer.d.ts.map +0 -1
- package/dist/mcp/handlers/platform-installer.js +0 -168
- package/dist/mcp/handlers/platform-installer.js.map +0 -1
- package/dist/mcp/handlers/pr-review.d.ts +0 -33
- package/dist/mcp/handlers/pr-review.d.ts.map +0 -1
- package/dist/mcp/handlers/pr-review.js +0 -170
- package/dist/mcp/handlers/pr-review.js.map +0 -1
- package/dist/mcp/token-tracker.d.ts +0 -47
- package/dist/mcp/token-tracker.d.ts.map +0 -1
- package/dist/mcp/token-tracker.js +0 -93
- package/dist/mcp/token-tracker.js.map +0 -1
- package/dist/quality-loop/file-lock.d.ts +0 -12
- package/dist/quality-loop/file-lock.d.ts.map +0 -1
- package/dist/quality-loop/file-lock.js +0 -38
- package/dist/quality-loop/file-lock.js.map +0 -1
- package/dist/quality-loop/fix-worker.d.ts +0 -44
- package/dist/quality-loop/fix-worker.d.ts.map +0 -1
- package/dist/quality-loop/fix-worker.js +0 -414
- package/dist/quality-loop/fix-worker.js.map +0 -1
- package/dist/quality-loop/orchestrator.d.ts +0 -137
- package/dist/quality-loop/orchestrator.d.ts.map +0 -1
- package/dist/quality-loop/orchestrator.js +0 -894
- package/dist/quality-loop/orchestrator.js.map +0 -1
- package/dist/quality-loop/queue-manager.d.ts +0 -45
- package/dist/quality-loop/queue-manager.d.ts.map +0 -1
- package/dist/quality-loop/queue-manager.js +0 -173
- package/dist/quality-loop/queue-manager.js.map +0 -1
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Graph-intelligence MCP handlers — graphify-style knowledge queries.
|
|
4
|
-
*
|
|
5
|
-
* Tools implemented here:
|
|
6
|
-
* get_graph_report — narrative Markdown report (god nodes, surprising connections, suggested questions)
|
|
7
|
-
* query_graph — deterministic natural-language query dispatcher
|
|
8
|
-
* explain_node — deep node explanation (role, connections, centrality, questions)
|
|
9
|
-
* export_graph — JSON / GraphML / Neo4j export
|
|
10
|
-
* merge_graphs — union-merge two repos' graph data
|
|
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.handleGetGraphReport = handleGetGraphReport;
|
|
47
|
-
exports.resolveQueryPattern = resolveQueryPattern;
|
|
48
|
-
exports.handleQueryGraph = handleQueryGraph;
|
|
49
|
-
exports.handleExplainNode = handleExplainNode;
|
|
50
|
-
exports.handleExportGraph = handleExportGraph;
|
|
51
|
-
exports.handleGetGraphViz = handleGetGraphViz;
|
|
52
|
-
exports.handleMergeGraphs = handleMergeGraphs;
|
|
53
|
-
const path = __importStar(require("path"));
|
|
54
|
-
const fs = __importStar(require("fs"));
|
|
55
|
-
const os = __importStar(require("os"));
|
|
56
|
-
const helpers_1 = require("../helpers");
|
|
57
|
-
const shared_1 = require("./shared");
|
|
58
|
-
const token_tracker_1 = require("../token-tracker");
|
|
59
|
-
const graph_report_1 = require("../../graph/graph-report");
|
|
60
|
-
const graph_export_1 = require("../../graph/graph-export");
|
|
61
|
-
const graph_algorithms_1 = require("../../graph/graph-algorithms");
|
|
62
|
-
const surprising_connections_1 = require("../../graph/surprising-connections");
|
|
63
|
-
const question_suggester_1 = require("../../graph/question-suggester");
|
|
64
|
-
const graph_viz_1 = require("../../viz/graph-viz");
|
|
65
|
-
function daemonError() {
|
|
66
|
-
return (0, shared_1.text)('Error: Gate Keeper daemon is not running. Start it with `npm run daemon` or `npm run dev`.');
|
|
67
|
-
}
|
|
68
|
-
function ratingMap(graph) {
|
|
69
|
-
const m = new Map();
|
|
70
|
-
for (const n of graph.nodes)
|
|
71
|
-
m.set(n.id, n.rating);
|
|
72
|
-
return m;
|
|
73
|
-
}
|
|
74
|
-
// ── get_graph_report ───────────────────────────────────────
|
|
75
|
-
async function handleGetGraphReport(args) {
|
|
76
|
-
const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
|
|
77
|
-
const encodedRepo = encodeURIComponent(repo);
|
|
78
|
-
const [graphRaw, cyclesRaw, statusRaw] = await Promise.all([
|
|
79
|
-
(0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodedRepo}`),
|
|
80
|
-
(0, helpers_1.fetchDaemonApi)(`/api/cycles?repo=${encodedRepo}`),
|
|
81
|
-
(0, helpers_1.fetchDaemonApi)(`/api/status?repo=${encodedRepo}`),
|
|
82
|
-
]);
|
|
83
|
-
if (!graphRaw)
|
|
84
|
-
return daemonError();
|
|
85
|
-
const graph = graphRaw;
|
|
86
|
-
const cycles = (cyclesRaw ?? []);
|
|
87
|
-
const status = statusRaw;
|
|
88
|
-
const report = (0, graph_report_1.generateGraphReport)(graph.nodes, graph.edges, cycles, repo, status?.overallRating ?? null);
|
|
89
|
-
const godNodes = (0, graph_algorithms_1.computeCentrality)(graph.nodes, graph.edges).slice(0, 5);
|
|
90
|
-
const surprising = (0, surprising_connections_1.findSurprisingConnections)(graph.nodes, graph.edges, repo, 5);
|
|
91
|
-
const questions = (0, question_suggester_1.suggestQuestions)(graph.nodes, graph.edges, repo, 5);
|
|
92
|
-
const data = {
|
|
93
|
-
repo,
|
|
94
|
-
nodeCount: graph.nodes.length,
|
|
95
|
-
edgeCount: graph.edges.length,
|
|
96
|
-
overallRating: status?.overallRating ?? null,
|
|
97
|
-
godNodes,
|
|
98
|
-
surprisingConnections: surprising,
|
|
99
|
-
suggestedQuestions: questions,
|
|
100
|
-
cycleCount: cycles.length,
|
|
101
|
-
};
|
|
102
|
-
token_tracker_1.tokenTracker.record('get_graph_report', graph.nodes.length, report);
|
|
103
|
-
return (0, shared_1.envelope)('get_graph_report', data, report);
|
|
104
|
-
}
|
|
105
|
-
// ── query_graph ────────────────────────────────────────────
|
|
106
|
-
const QUERY_PATTERNS = [
|
|
107
|
-
{
|
|
108
|
-
pattern: /(what|which|show).*(connect|path|between|from).*\bto\b/i,
|
|
109
|
-
handler: (_, g, repo) => `Use trace_path with source and target file paths to find the connection. Available files: ${g.nodes.slice(0, 5).map(n => path.relative(repo, n.id)).join(', ')}…`,
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
pattern: /(what|which).*(break|fail|affected|impact).*(if|when|changing?)/i,
|
|
113
|
-
handler: (_, g, repo) => {
|
|
114
|
-
const top = (0, graph_algorithms_1.computeCentrality)(g.nodes, g.edges)[0];
|
|
115
|
-
return top
|
|
116
|
-
? `Most at-risk file to change: ${path.relative(repo, top.path)} (${top.totalDegree} dependents). Use get_impact_set for specific impact analysis.`
|
|
117
|
-
: 'No files analyzed yet.';
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
pattern: /(what|who).*(import|use|depend).*(on)/i,
|
|
122
|
-
handler: (_, g, repo) => {
|
|
123
|
-
const top = (0, graph_algorithms_1.computeCentrality)(g.nodes, g.edges).sort((a, b) => b.inDegree - a.inDegree)[0];
|
|
124
|
-
return top
|
|
125
|
-
? `Most-imported file: ${path.relative(repo, top.path)} (imported by ${top.inDegree} files). Use get_impact_set(depth=1) to see direct dependents.`
|
|
126
|
-
: 'No edges in graph yet.';
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
pattern: /(god|hotspot|central|most.connect|highest.blast)/i,
|
|
131
|
-
handler: (_, g, repo) => {
|
|
132
|
-
const ranked = (0, graph_algorithms_1.computeCentrality)(g.nodes, g.edges).slice(0, 5);
|
|
133
|
-
return ranked.map((n, i) => `${i + 1}. ${path.relative(repo, n.path)} — ${n.totalDegree} connections, rating ${n.rating}/10`).join('\n');
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
pattern: /(surprising|unexpected|cross.module|strange)/i,
|
|
138
|
-
handler: (_, g, repo) => {
|
|
139
|
-
const s = (0, surprising_connections_1.findSurprisingConnections)(g.nodes, g.edges, repo, 3);
|
|
140
|
-
if (s.length === 0)
|
|
141
|
-
return 'No surprising cross-module connections found.';
|
|
142
|
-
return s.map(c => `${path.relative(repo, c.source)} → ${path.relative(repo, c.target)} (score: ${c.score.toFixed(2)})`).join('\n');
|
|
143
|
-
},
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
pattern: /(explain|describe|tell.*about|what.*is)\s+(.+)/i,
|
|
147
|
-
handler: (m, g, repo) => {
|
|
148
|
-
const term = m[2]?.trim() ?? '';
|
|
149
|
-
const match = g.nodes.find(n => n.id.includes(term) || n.label.toLowerCase().includes(term.toLowerCase()));
|
|
150
|
-
if (!match)
|
|
151
|
-
return `File matching "${term}" not found in graph. Use explain_node with an absolute path.`;
|
|
152
|
-
return `${path.relative(repo, match.id)} — rating ${match.rating}/10, ${match.metrics.linesOfCode} LOC, ${match.metrics.importCount} imports. Use explain_node for full context.`;
|
|
153
|
-
},
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
pattern: /(health|quality|rating).*(worst|bad|poor|low)/i,
|
|
157
|
-
handler: (_, g, repo) => {
|
|
158
|
-
const worst = [...g.nodes].sort((a, b) => a.rating - b.rating).slice(0, 5);
|
|
159
|
-
return worst.map(n => `${path.relative(repo, n.id)} — ${n.rating}/10 (${n.violations.length} violations)`).join('\n');
|
|
160
|
-
},
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
pattern: /(suggest|recommend|question|what.*ask)/i,
|
|
164
|
-
handler: (_, g, repo) => {
|
|
165
|
-
const qs = (0, question_suggester_1.suggestQuestions)(g.nodes, g.edges, repo, 5);
|
|
166
|
-
return qs.map((q, i) => `${i + 1}. ${q.question}`).join('\n');
|
|
167
|
-
},
|
|
168
|
-
},
|
|
169
|
-
];
|
|
170
|
-
/**
|
|
171
|
-
* Pure function: resolve a natural language query against graph data.
|
|
172
|
-
* No I/O, no daemon — purely deterministic pattern matching.
|
|
173
|
-
*
|
|
174
|
-
* Exported for testing. Returns the answer text (or null for unrecognised queries).
|
|
175
|
-
*/
|
|
176
|
-
function resolveQueryPattern(query, graph, repo) {
|
|
177
|
-
for (const { pattern, handler } of QUERY_PATTERNS) {
|
|
178
|
-
const m = query.match(pattern);
|
|
179
|
-
if (m) {
|
|
180
|
-
return handler(m, graph, repo);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
async function handleQueryGraph(args) {
|
|
186
|
-
const query = String(args.query ?? '').trim();
|
|
187
|
-
if (!query)
|
|
188
|
-
return (0, shared_1.text)('Error: query is required.');
|
|
189
|
-
const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
|
|
190
|
-
const graphRaw = await (0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodeURIComponent(repo)}`);
|
|
191
|
-
if (!graphRaw)
|
|
192
|
-
return daemonError();
|
|
193
|
-
const graph = graphRaw;
|
|
194
|
-
let answer = resolveQueryPattern(query, graph, repo);
|
|
195
|
-
if (!answer) {
|
|
196
|
-
const qs = (0, question_suggester_1.suggestQuestions)(graph.nodes, graph.edges, repo, 4);
|
|
197
|
-
answer = `Query not recognized. Suggested questions:\n${qs.map((q, i) => `${i + 1}. ${q.question}`).join('\n')}\n\nOr use specific tools: get_impact_set, trace_path, get_centrality_rank, summarize_file.`;
|
|
198
|
-
}
|
|
199
|
-
const result = `## Query: ${query}\n\n${answer}`;
|
|
200
|
-
token_tracker_1.tokenTracker.record('query_graph', graph.nodes.length, result);
|
|
201
|
-
return (0, shared_1.envelope)('query_graph', { query, answer, repo }, result);
|
|
202
|
-
}
|
|
203
|
-
// ── explain_node ───────────────────────────────────────────
|
|
204
|
-
async function handleExplainNode(args) {
|
|
205
|
-
const filePath = String(args.file_path ?? '');
|
|
206
|
-
if (!filePath)
|
|
207
|
-
return (0, shared_1.text)('Error: file_path is required.');
|
|
208
|
-
const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(path.dirname(filePath)));
|
|
209
|
-
const encodedRepo = encodeURIComponent(repo);
|
|
210
|
-
const encodedFile = encodeURIComponent(filePath);
|
|
211
|
-
const [graphRaw, detailRaw] = await Promise.all([
|
|
212
|
-
(0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodedRepo}`),
|
|
213
|
-
(0, helpers_1.fetchDaemonApi)(`/api/file-detail?file=${encodedFile}&repo=${encodedRepo}`),
|
|
214
|
-
]);
|
|
215
|
-
if (!graphRaw)
|
|
216
|
-
return daemonError();
|
|
217
|
-
const graph = graphRaw;
|
|
218
|
-
const detail = detailRaw;
|
|
219
|
-
const node = graph.nodes.find(n => n.id === filePath);
|
|
220
|
-
if (!node && !detail) {
|
|
221
|
-
return (0, shared_1.text)(`File not in graph. Run analyze_file("${filePath}") first.`);
|
|
222
|
-
}
|
|
223
|
-
const rating = node?.rating ?? detail?.analysis?.rating ?? 0;
|
|
224
|
-
const centrality = (0, graph_algorithms_1.computeCentrality)(graph.nodes, graph.edges);
|
|
225
|
-
const rank = centrality.findIndex(c => c.path === filePath);
|
|
226
|
-
const centralityEntry = centrality[rank];
|
|
227
|
-
const revAdj = (0, graph_algorithms_1.buildReverseAdjacency)(graph.edges);
|
|
228
|
-
const ratings = ratingMap(graph);
|
|
229
|
-
const impactSet = (0, graph_algorithms_1.getImpactSet)(filePath, revAdj, ratings, 2, 6);
|
|
230
|
-
const imports = graph.edges.filter(e => e.source === filePath);
|
|
231
|
-
const dependents = graph.edges.filter(e => e.target === filePath);
|
|
232
|
-
const surprising = (0, surprising_connections_1.findSurprisingConnections)(graph.nodes, graph.edges, repo, 10)
|
|
233
|
-
.filter(s => s.source === filePath || s.target === filePath);
|
|
234
|
-
const questions = (0, question_suggester_1.suggestQuestions)([{ id: filePath, label: path.basename(filePath), rating }], [...imports.map(e => ({ source: filePath, target: e.target })),
|
|
235
|
-
...dependents.map(e => ({ source: e.source, target: filePath }))], repo, 3);
|
|
236
|
-
const fragileCount = impactSet.filter(e => e.fragile).length;
|
|
237
|
-
const riskIcon = fragileCount >= 3 ? '🔴' : fragileCount >= 1 ? '🟡' : '🟢';
|
|
238
|
-
const lines = [
|
|
239
|
-
`## Node Explanation: ${path.basename(filePath)}`,
|
|
240
|
-
`**Path:** ${path.relative(repo, filePath)}`,
|
|
241
|
-
`**Rating:** ${rating}/10 | **LOC:** ${node?.metrics.linesOfCode ?? '?'} | **Complexity:** ${node?.metrics.cyclomaticComplexity ?? '?'}`,
|
|
242
|
-
`**Centrality Rank:** ${rank >= 0 ? `#${rank + 1} of ${graph.nodes.length}` : 'not ranked'} (${centralityEntry?.totalDegree ?? 0} total connections)`,
|
|
243
|
-
`**Imports:** ${imports.length} files | **Imported by:** ${dependents.length} files`,
|
|
244
|
-
`**Impact Set (depth 2):** ${impactSet.length} affected files ${riskIcon} (${fragileCount} fragile)`,
|
|
245
|
-
'',
|
|
246
|
-
'**Role in architecture:**',
|
|
247
|
-
];
|
|
248
|
-
if (centralityEntry && centralityEntry.inDegree > 5) {
|
|
249
|
-
lines.push(`This is a god node — ${centralityEntry.inDegree} files depend on it. Changes here have wide blast radius.`);
|
|
250
|
-
}
|
|
251
|
-
else if (centralityEntry && centralityEntry.outDegree > 10) {
|
|
252
|
-
lines.push(`This file has many dependencies (${centralityEntry.outDegree} imports). High coupling risk.`);
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
lines.push(`Standard file with moderate connectivity.`);
|
|
256
|
-
}
|
|
257
|
-
if (surprising.length > 0) {
|
|
258
|
-
lines.push('', '**Surprising connections involving this file:**');
|
|
259
|
-
for (const s of surprising.slice(0, 3)) {
|
|
260
|
-
const other = s.source === filePath ? s.target : s.source;
|
|
261
|
-
lines.push(`- ${path.relative(repo, other)} (${s.explanation})`);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
if (questions.length > 0) {
|
|
265
|
-
lines.push('', '**Suggested follow-up questions:**');
|
|
266
|
-
questions.forEach((q, i) => lines.push(`${i + 1}. ${q.question} → \`${q.tool}\``));
|
|
267
|
-
}
|
|
268
|
-
const data = {
|
|
269
|
-
filePath, rating, rank: rank >= 0 ? rank + 1 : null,
|
|
270
|
-
centrality: centralityEntry ?? null,
|
|
271
|
-
impactSet, imports, dependents, fragileCount,
|
|
272
|
-
surprisingConnections: surprising,
|
|
273
|
-
suggestedQuestions: questions,
|
|
274
|
-
};
|
|
275
|
-
token_tracker_1.tokenTracker.record('explain_node', graph.nodes.length - 1, lines.join('\n'));
|
|
276
|
-
return (0, shared_1.envelope)('explain_node', data, lines.join('\n'));
|
|
277
|
-
}
|
|
278
|
-
// ── export_graph ───────────────────────────────────────────
|
|
279
|
-
async function handleExportGraph(args) {
|
|
280
|
-
const format = String(args.format ?? 'json');
|
|
281
|
-
if (!['json', 'graphml', 'neo4j'].includes(format)) {
|
|
282
|
-
return (0, shared_1.text)('Error: format must be "json", "graphml", or "neo4j".');
|
|
283
|
-
}
|
|
284
|
-
const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
|
|
285
|
-
const encodedRepo = encodeURIComponent(repo);
|
|
286
|
-
const [graphRaw, cyclesRaw, statusRaw] = await Promise.all([
|
|
287
|
-
(0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodedRepo}`),
|
|
288
|
-
(0, helpers_1.fetchDaemonApi)(`/api/cycles?repo=${encodedRepo}`),
|
|
289
|
-
(0, helpers_1.fetchDaemonApi)(`/api/status?repo=${encodedRepo}`),
|
|
290
|
-
]);
|
|
291
|
-
if (!graphRaw)
|
|
292
|
-
return daemonError();
|
|
293
|
-
const graph = graphRaw;
|
|
294
|
-
const cycles = (cyclesRaw ?? []);
|
|
295
|
-
const status = statusRaw;
|
|
296
|
-
const exported = (0, graph_export_1.exportGraph)(graph.nodes, graph.edges, cycles, {
|
|
297
|
-
format,
|
|
298
|
-
repoRoot: repo,
|
|
299
|
-
overallRating: status?.overallRating,
|
|
300
|
-
});
|
|
301
|
-
const summary = `## Graph Export: ${format.toUpperCase()}\n**Repo:** ${repo}\n**Nodes:** ${graph.nodes.length} | **Edges:** ${graph.edges.length}\n\n\`\`\`${format === 'graphml' ? 'xml' : format === 'neo4j' ? 'cypher' : 'json'}\n${exported.slice(0, 2000)}${exported.length > 2000 ? '\n... (truncated)' : ''}\n\`\`\``;
|
|
302
|
-
token_tracker_1.tokenTracker.record('export_graph', 0, summary);
|
|
303
|
-
return (0, shared_1.envelope)('export_graph', { format, repo, content: exported, nodeCount: graph.nodes.length }, summary);
|
|
304
|
-
}
|
|
305
|
-
// ── get_graph_viz ──────────────────────────────────────────
|
|
306
|
-
async function handleGetGraphViz(args) {
|
|
307
|
-
const repo = String(args.repo ?? (0, helpers_1.findGitRoot)(process.cwd()));
|
|
308
|
-
const outputPath = args.output_path
|
|
309
|
-
? String(args.output_path)
|
|
310
|
-
: path.join(os.homedir(), '.gate-keeper', 'graph-viz.html');
|
|
311
|
-
const graphRaw = await (0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodeURIComponent(repo)}`);
|
|
312
|
-
if (!graphRaw)
|
|
313
|
-
return daemonError();
|
|
314
|
-
const graph = graphRaw;
|
|
315
|
-
const title = `Gate Keeper — ${path.basename(repo)} (${graph.nodes.length} files)`;
|
|
316
|
-
const html = (0, graph_viz_1.generateGraphViz)(graph.nodes, graph.edges, { title });
|
|
317
|
-
try {
|
|
318
|
-
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
319
|
-
fs.writeFileSync(outputPath, html, 'utf8');
|
|
320
|
-
}
|
|
321
|
-
catch (err) {
|
|
322
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
323
|
-
return (0, shared_1.text)(`Error writing visualization to ${outputPath}: ${msg}`);
|
|
324
|
-
}
|
|
325
|
-
const lines = [
|
|
326
|
-
'## Interactive Graph Visualization',
|
|
327
|
-
`**Written to:** \`${outputPath}\``,
|
|
328
|
-
`**Nodes:** ${graph.nodes.length} | **Edges:** ${graph.edges.length}`,
|
|
329
|
-
'',
|
|
330
|
-
`Open in browser: \`open ${outputPath}\` (macOS) or \`xdg-open ${outputPath}\` (Linux)`,
|
|
331
|
-
'',
|
|
332
|
-
'_Features: force-directed layout, pan/zoom, search, click for details panel._',
|
|
333
|
-
];
|
|
334
|
-
token_tracker_1.tokenTracker.record('get_graph_viz', 0, lines.join('\n'));
|
|
335
|
-
return (0, shared_1.envelope)('get_graph_viz', { outputPath, nodeCount: graph.nodes.length, edgeCount: graph.edges.length }, lines.join('\n'));
|
|
336
|
-
}
|
|
337
|
-
// ── merge_graphs ───────────────────────────────────────────
|
|
338
|
-
async function handleMergeGraphs(args) {
|
|
339
|
-
const repoA = String(args.repo_a ?? '');
|
|
340
|
-
const repoB = String(args.repo_b ?? '');
|
|
341
|
-
if (!repoA || !repoB)
|
|
342
|
-
return (0, shared_1.text)('Error: repo_a and repo_b are required.');
|
|
343
|
-
const [graphAraw, graphBraw] = await Promise.all([
|
|
344
|
-
(0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodeURIComponent(repoA)}`),
|
|
345
|
-
(0, helpers_1.fetchDaemonApi)(`/api/graph?repo=${encodeURIComponent(repoB)}`),
|
|
346
|
-
]);
|
|
347
|
-
if (!graphAraw)
|
|
348
|
-
return (0, shared_1.text)(`Error: No graph data for repo_a (${repoA}). Is the daemon running?`);
|
|
349
|
-
if (!graphBraw)
|
|
350
|
-
return (0, shared_1.text)(`Error: No graph data for repo_b (${repoB}). Is the daemon running?`);
|
|
351
|
-
const gA = graphAraw;
|
|
352
|
-
const gB = graphBraw;
|
|
353
|
-
const result = (0, graph_export_1.mergeGraphs)({ nodes: gA.nodes, edges: gA.edges }, { nodes: gB.nodes, edges: gB.edges });
|
|
354
|
-
const lines = [
|
|
355
|
-
'## Merged Graph',
|
|
356
|
-
`**Source A:** ${repoA} (${gA.nodes.length} nodes, ${gA.edges.length} edges)`,
|
|
357
|
-
`**Source B:** ${repoB} (${gB.nodes.length} nodes, ${gB.edges.length} edges)`,
|
|
358
|
-
`**Merged:** ${result.nodes.length} nodes, ${result.edges.length} edges`,
|
|
359
|
-
`**Conflicts resolved:** ${result.conflicts.length}`,
|
|
360
|
-
];
|
|
361
|
-
if (result.conflicts.length > 0) {
|
|
362
|
-
lines.push('', '**Rating conflicts (took minimum):**');
|
|
363
|
-
for (const c of result.conflicts.slice(0, 10)) {
|
|
364
|
-
lines.push(`- ${path.basename(c.id)}: ${c.ratingA} vs ${c.ratingB} → resolved as ${c.resolved}`);
|
|
365
|
-
}
|
|
366
|
-
if (result.conflicts.length > 10)
|
|
367
|
-
lines.push(`... and ${result.conflicts.length - 10} more`);
|
|
368
|
-
}
|
|
369
|
-
return (0, shared_1.envelope)('merge_graphs', result, lines.join('\n'));
|
|
370
|
-
}
|
|
371
|
-
//# sourceMappingURL=graph-intelligence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-intelligence.js","sourceRoot":"","sources":["../../../src/mcp/handlers/graph-intelligence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Graph-aware MCP handlers — graphify-style token-efficient queries.
|
|
3
|
-
*
|
|
4
|
-
* Each handler returns a compact structured JSON response instead of prose,
|
|
5
|
-
* allowing agents to understand the impact of a change using 50–300 tokens
|
|
6
|
-
* rather than reading raw files (typically 5 000+ tokens each).
|
|
7
|
-
*
|
|
8
|
-
* Tools:
|
|
9
|
-
* get_impact_set — depth-bounded BFS over dependents
|
|
10
|
-
* get_centrality_rank — most-connected nodes (high blast-radius files)
|
|
11
|
-
* trace_path — shortest import path between two files
|
|
12
|
-
* summarize_file — structured file summary (no raw content)
|
|
13
|
-
* find_callers — grep-like search for a function/symbol across analyzed files
|
|
14
|
-
* check_pre_edit_safety — go/warn/block pre-edit safety assessment
|
|
15
|
-
* get_session_metrics — cumulative token savings for this MCP session
|
|
16
|
-
*/
|
|
17
|
-
import { McpResponse } from './shared';
|
|
18
|
-
export declare function handleGetImpactSet(args: Record<string, unknown>): Promise<McpResponse>;
|
|
19
|
-
export declare function handleGetCentralityRank(args: Record<string, unknown>): Promise<McpResponse>;
|
|
20
|
-
export declare function handleTracePath(args: Record<string, unknown>): Promise<McpResponse>;
|
|
21
|
-
export declare function handleSummarizeFile(args: Record<string, unknown>): Promise<McpResponse>;
|
|
22
|
-
export declare function handleFindCallers(args: Record<string, unknown>): Promise<McpResponse>;
|
|
23
|
-
export declare function handleCheckPreEditSafety(args: Record<string, unknown>): Promise<McpResponse>;
|
|
24
|
-
export declare function handleGetSessionMetrics(): McpResponse;
|
|
25
|
-
//# sourceMappingURL=graph-query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/graph-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAkB,WAAW,EAAE,MAAM,UAAU,CAAC;AA0BvD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAyC5F;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CA6BjG;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAyDzF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CA4E7F;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CA+E3F;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CA+DlG;AAED,wBAAgB,uBAAuB,IAAI,WAAW,CA2BrD"}
|