agentic-qe 2.6.5 → 2.6.6
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/CHANGELOG.md +52 -0
- package/README.md +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +31 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +159 -0
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +36 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +226 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/cli/commands/kg/mincut.d.ts +50 -0
- package/dist/cli/commands/kg/mincut.d.ts.map +1 -0
- package/dist/cli/commands/kg/mincut.js +372 -0
- package/dist/cli/commands/kg/mincut.js.map +1 -0
- package/dist/cli/index.js +91 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/claude-config.js +2 -2
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts +148 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js +393 -0
- package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts +169 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.js +335 -0
- package/dist/code-intelligence/analysis/mincut/GraphAdapter.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts +55 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.js +265 -0
- package/dist/code-intelligence/analysis/mincut/JsMinCut.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts +92 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js +200 -0
- package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts +157 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js +434 -0
- package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/index.d.ts +12 -0
- package/dist/code-intelligence/analysis/mincut/index.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/index.js +20 -0
- package/dist/code-intelligence/analysis/mincut/index.js.map +1 -0
- package/dist/code-intelligence/analysis/mincut/types.d.ts +145 -0
- package/dist/code-intelligence/analysis/mincut/types.d.ts.map +1 -0
- package/dist/code-intelligence/analysis/mincut/types.js +16 -0
- package/dist/code-intelligence/analysis/mincut/types.js.map +1 -0
- package/dist/code-intelligence/chunking/ASTChunker.d.ts +1 -1
- package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -1
- package/dist/code-intelligence/chunking/ASTChunker.js +4 -4
- package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -1
- package/dist/code-intelligence/graph/GraphBuilder.d.ts +120 -0
- package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -1
- package/dist/code-intelligence/graph/GraphBuilder.js +517 -0
- package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +3 -3
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
- package/dist/code-intelligence/parser/{TreeSitterParser.d.ts → WebTreeSitterParser.d.ts} +45 -10
- package/dist/code-intelligence/parser/WebTreeSitterParser.d.ts.map +1 -0
- package/dist/code-intelligence/parser/{TreeSitterParser.js → WebTreeSitterParser.js} +147 -54
- package/dist/code-intelligence/parser/WebTreeSitterParser.js.map +1 -0
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +12 -10
- package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js +7 -3
- package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/GoExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/RustExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +7 -5
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -1
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +2 -2
- package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -1
- package/dist/code-intelligence/parser/index.d.ts +7 -1
- package/dist/code-intelligence/parser/index.d.ts.map +1 -1
- package/dist/code-intelligence/parser/index.js +11 -3
- package/dist/code-intelligence/parser/index.js.map +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.js +7 -5
- package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/coverage/CriticalPathDetector.d.ts +240 -0
- package/dist/coverage/CriticalPathDetector.d.ts.map +1 -0
- package/dist/coverage/CriticalPathDetector.js +388 -0
- package/dist/coverage/CriticalPathDetector.js.map +1 -0
- package/dist/coverage/index.d.ts +13 -0
- package/dist/coverage/index.d.ts.map +1 -0
- package/dist/coverage/index.js +16 -0
- package/dist/coverage/index.js.map +1 -0
- package/dist/fleet/topology/SPOFMonitor.d.ts +181 -0
- package/dist/fleet/topology/SPOFMonitor.d.ts.map +1 -0
- package/dist/fleet/topology/SPOFMonitor.js +286 -0
- package/dist/fleet/topology/SPOFMonitor.js.map +1 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts +87 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts.map +1 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.js +472 -0
- package/dist/fleet/topology/TopologyMinCutAnalyzer.js.map +1 -0
- package/dist/fleet/topology/index.d.ts +13 -0
- package/dist/fleet/topology/index.d.ts.map +1 -0
- package/dist/fleet/topology/index.js +20 -0
- package/dist/fleet/topology/index.js.map +1 -0
- package/dist/fleet/topology/types.d.ts +139 -0
- package/dist/fleet/topology/types.d.ts.map +1 -0
- package/dist/fleet/topology/types.js +19 -0
- package/dist/fleet/topology/types.js.map +1 -0
- package/dist/mcp/handlers/test/test-execute-parallel.d.ts +34 -3
- package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-execute-parallel.js +120 -5
- package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +2 -2
- package/dist/mcp/server-instructions.d.ts.map +1 -1
- package/dist/mcp/server-instructions.js +2 -2
- package/dist/test/partition/MinCutPartitioner.d.ts +97 -0
- package/dist/test/partition/MinCutPartitioner.d.ts.map +1 -0
- package/dist/test/partition/MinCutPartitioner.js +459 -0
- package/dist/test/partition/MinCutPartitioner.js.map +1 -0
- package/dist/test/partition/RealTestExecutor.d.ts +86 -0
- package/dist/test/partition/RealTestExecutor.d.ts.map +1 -0
- package/dist/test/partition/RealTestExecutor.js +279 -0
- package/dist/test/partition/RealTestExecutor.js.map +1 -0
- package/dist/test/partition/TestDependencyAnalyzer.d.ts +75 -0
- package/dist/test/partition/TestDependencyAnalyzer.d.ts.map +1 -0
- package/dist/test/partition/TestDependencyAnalyzer.js +297 -0
- package/dist/test/partition/TestDependencyAnalyzer.js.map +1 -0
- package/dist/test/partition/index.d.ts +10 -0
- package/dist/test/partition/index.d.ts.map +1 -0
- package/dist/test/partition/index.js +26 -0
- package/dist/test/partition/index.js.map +1 -0
- package/dist/test/partition/types.d.ts +120 -0
- package/dist/test/partition/types.d.ts.map +1 -0
- package/dist/test/partition/types.js +21 -0
- package/dist/test/partition/types.js.map +1 -0
- package/package.json +4 -7
- package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +0 -1
- package/dist/code-intelligence/parser/TreeSitterParser.js.map +0 -1
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MinCut Analysis CLI Commands
|
|
4
|
+
*
|
|
5
|
+
* Provides CLI interface for module coupling analysis using MinCut algorithms:
|
|
6
|
+
* - coupling: Analyze coupling between two modules
|
|
7
|
+
* - coupling-all: Find all highly coupled module pairs
|
|
8
|
+
* - circular: Detect circular dependencies
|
|
9
|
+
* - boundaries: Suggest optimal module boundaries
|
|
10
|
+
* - overview: Get coupling overview for entire codebase
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.analyzeCoupling = analyzeCoupling;
|
|
17
|
+
exports.findHighlyCoupledModules = findHighlyCoupledModules;
|
|
18
|
+
exports.detectCircularDependencies = detectCircularDependencies;
|
|
19
|
+
exports.suggestModuleBoundaries = suggestModuleBoundaries;
|
|
20
|
+
exports.getCouplingOverview = getCouplingOverview;
|
|
21
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
const ora_1 = __importDefault(require("ora"));
|
|
23
|
+
const CodeIntelligenceOrchestrator_js_1 = require("../../../code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js");
|
|
24
|
+
const ModuleCouplingAnalyzer_js_1 = require("../../../code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js");
|
|
25
|
+
const CircularDependencyDetector_js_1 = require("../../../code-intelligence/analysis/mincut/CircularDependencyDetector.js");
|
|
26
|
+
/**
|
|
27
|
+
* Load code graph from knowledge graph
|
|
28
|
+
*/
|
|
29
|
+
async function loadCodeGraph() {
|
|
30
|
+
const spinner = (0, ora_1.default)('Loading code graph from knowledge graph...').start();
|
|
31
|
+
try {
|
|
32
|
+
// Initialize orchestrator
|
|
33
|
+
const orchestrator = new CodeIntelligenceOrchestrator_js_1.CodeIntelligenceOrchestrator({
|
|
34
|
+
rootDir: process.cwd(),
|
|
35
|
+
database: {
|
|
36
|
+
enabled: true,
|
|
37
|
+
host: 'localhost',
|
|
38
|
+
port: 5432,
|
|
39
|
+
database: 'ruvector_dev',
|
|
40
|
+
user: 'postgres',
|
|
41
|
+
password: 'postgres'
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
await orchestrator.initialize();
|
|
45
|
+
// Get graph builder
|
|
46
|
+
const graphBuilder = orchestrator.getGraphBuilder();
|
|
47
|
+
const graph = graphBuilder.exportGraph();
|
|
48
|
+
if (!graph || graph.nodes.length === 0) {
|
|
49
|
+
spinner.fail('No code graph found');
|
|
50
|
+
console.log(chalk_1.default.yellow('Run "aqe kg index" to index your codebase first.'));
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
spinner.succeed(`Code graph loaded: ${graph.nodes.length} nodes, ${graph.edges.length} edges`);
|
|
54
|
+
return graph;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
spinner.fail('Failed to load code graph');
|
|
58
|
+
if (error.message?.includes('connect')) {
|
|
59
|
+
console.error(chalk_1.default.red('❌ Database connection failed.'));
|
|
60
|
+
console.log(chalk_1.default.yellow('Make sure PostgreSQL is running and accessible.'));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
64
|
+
}
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Format coupling strength with color
|
|
70
|
+
*/
|
|
71
|
+
function formatCoupling(strength) {
|
|
72
|
+
const percentage = (strength * 100).toFixed(0);
|
|
73
|
+
if (strength >= 0.8) {
|
|
74
|
+
return chalk_1.default.red(`${percentage}% (Very High)`);
|
|
75
|
+
}
|
|
76
|
+
if (strength >= 0.6) {
|
|
77
|
+
return chalk_1.default.yellow(`${percentage}% (High)`);
|
|
78
|
+
}
|
|
79
|
+
if (strength >= 0.4) {
|
|
80
|
+
return chalk_1.default.blue(`${percentage}% (Moderate)`);
|
|
81
|
+
}
|
|
82
|
+
return chalk_1.default.green(`${percentage}% (Low)`);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Display coupling analysis result
|
|
86
|
+
*/
|
|
87
|
+
function displayCouplingResult(result, json) {
|
|
88
|
+
if (json) {
|
|
89
|
+
console.log(JSON.stringify(result, null, 2));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
console.log(chalk_1.default.bold.cyan(`\n📊 Coupling Analysis: ${result.module1} ↔ ${result.module2}\n`));
|
|
93
|
+
console.log(`Coupling Strength: ${formatCoupling(result.couplingStrength)}`);
|
|
94
|
+
console.log(`Circular Dependency: ${result.circularDependency ? chalk_1.default.red('Yes ⚠️') : chalk_1.default.green('No ✓')}`);
|
|
95
|
+
if (result.sharedDependencies.length > 0) {
|
|
96
|
+
console.log(chalk_1.default.gray(`\nShared Dependencies (${result.sharedDependencies.length}):`));
|
|
97
|
+
result.sharedDependencies.slice(0, 5).forEach(dep => {
|
|
98
|
+
console.log(chalk_1.default.gray(` • ${dep}`));
|
|
99
|
+
});
|
|
100
|
+
if (result.sharedDependencies.length > 5) {
|
|
101
|
+
console.log(chalk_1.default.gray(` ... and ${result.sharedDependencies.length - 5} more`));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (result.cutEdges.length > 0) {
|
|
105
|
+
console.log(chalk_1.default.gray(`\nKey Dependencies (${result.cutEdges.length}):`));
|
|
106
|
+
result.cutEdges.slice(0, 5).forEach(edge => {
|
|
107
|
+
console.log(chalk_1.default.gray(` • ${edge.source} → ${edge.target}`));
|
|
108
|
+
});
|
|
109
|
+
if (result.cutEdges.length > 5) {
|
|
110
|
+
console.log(chalk_1.default.gray(` ... and ${result.cutEdges.length - 5} more`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (result.recommendations.length > 0) {
|
|
114
|
+
console.log(chalk_1.default.yellow('\n💡 Recommendations:'));
|
|
115
|
+
result.recommendations.forEach(r => {
|
|
116
|
+
console.log(` ${r}`);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
console.log(); // Empty line
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Analyze coupling between two modules
|
|
123
|
+
*/
|
|
124
|
+
async function analyzeCoupling(module1, module2, options) {
|
|
125
|
+
const graph = await loadCodeGraph();
|
|
126
|
+
const threshold = options.threshold ? parseFloat(options.threshold) : 0.3;
|
|
127
|
+
const spinner = (0, ora_1.default)('Analyzing module coupling...').start();
|
|
128
|
+
try {
|
|
129
|
+
// Convert graph to CodeGraph format
|
|
130
|
+
const codeGraph = {
|
|
131
|
+
nodes: new Map(graph.nodes.map(n => [n.id, n])),
|
|
132
|
+
edges: new Map(graph.edges.map(e => [e.id, e])),
|
|
133
|
+
fileNodes: new Map(),
|
|
134
|
+
outgoingEdges: new Map(),
|
|
135
|
+
incomingEdges: new Map()
|
|
136
|
+
};
|
|
137
|
+
// Build index maps
|
|
138
|
+
for (const node of graph.nodes) {
|
|
139
|
+
const fileNodes = codeGraph.fileNodes.get(node.filePath) || [];
|
|
140
|
+
fileNodes.push(node.id);
|
|
141
|
+
codeGraph.fileNodes.set(node.filePath, fileNodes);
|
|
142
|
+
codeGraph.outgoingEdges.set(node.id, []);
|
|
143
|
+
codeGraph.incomingEdges.set(node.id, []);
|
|
144
|
+
}
|
|
145
|
+
for (const edge of graph.edges) {
|
|
146
|
+
const outgoing = codeGraph.outgoingEdges.get(edge.source) || [];
|
|
147
|
+
outgoing.push(edge.id);
|
|
148
|
+
codeGraph.outgoingEdges.set(edge.source, outgoing);
|
|
149
|
+
const incoming = codeGraph.incomingEdges.get(edge.target) || [];
|
|
150
|
+
incoming.push(edge.id);
|
|
151
|
+
codeGraph.incomingEdges.set(edge.target, incoming);
|
|
152
|
+
}
|
|
153
|
+
const analyzer = new ModuleCouplingAnalyzer_js_1.ModuleCouplingAnalyzer(codeGraph, {
|
|
154
|
+
minCouplingThreshold: threshold
|
|
155
|
+
});
|
|
156
|
+
const result = await analyzer.analyzeCoupling(module1, module2);
|
|
157
|
+
spinner.succeed('Analysis complete');
|
|
158
|
+
displayCouplingResult(result, options.json || false);
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
spinner.fail('Analysis failed');
|
|
162
|
+
console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Find all highly coupled module pairs
|
|
168
|
+
*/
|
|
169
|
+
async function findHighlyCoupledModules(options) {
|
|
170
|
+
const graph = await loadCodeGraph();
|
|
171
|
+
const threshold = options.threshold ? parseFloat(options.threshold) : 0.5;
|
|
172
|
+
const limit = options.limit ? parseInt(options.limit) : 10;
|
|
173
|
+
const spinner = (0, ora_1.default)('Finding highly coupled modules...').start();
|
|
174
|
+
try {
|
|
175
|
+
// Convert graph to CodeGraph format
|
|
176
|
+
const codeGraph = {
|
|
177
|
+
nodes: new Map(graph.nodes.map(n => [n.id, n])),
|
|
178
|
+
edges: new Map(graph.edges.map(e => [e.id, e])),
|
|
179
|
+
fileNodes: new Map(),
|
|
180
|
+
outgoingEdges: new Map(),
|
|
181
|
+
incomingEdges: new Map()
|
|
182
|
+
};
|
|
183
|
+
// Build index maps
|
|
184
|
+
for (const node of graph.nodes) {
|
|
185
|
+
const fileNodes = codeGraph.fileNodes.get(node.filePath) || [];
|
|
186
|
+
fileNodes.push(node.id);
|
|
187
|
+
codeGraph.fileNodes.set(node.filePath, fileNodes);
|
|
188
|
+
codeGraph.outgoingEdges.set(node.id, []);
|
|
189
|
+
codeGraph.incomingEdges.set(node.id, []);
|
|
190
|
+
}
|
|
191
|
+
for (const edge of graph.edges) {
|
|
192
|
+
const outgoing = codeGraph.outgoingEdges.get(edge.source) || [];
|
|
193
|
+
outgoing.push(edge.id);
|
|
194
|
+
codeGraph.outgoingEdges.set(edge.source, outgoing);
|
|
195
|
+
const incoming = codeGraph.incomingEdges.get(edge.target) || [];
|
|
196
|
+
incoming.push(edge.id);
|
|
197
|
+
codeGraph.incomingEdges.set(edge.target, incoming);
|
|
198
|
+
}
|
|
199
|
+
const analyzer = new ModuleCouplingAnalyzer_js_1.ModuleCouplingAnalyzer(codeGraph);
|
|
200
|
+
const results = await analyzer.findHighlyCoupledModules(threshold);
|
|
201
|
+
const limitedResults = results.slice(0, limit);
|
|
202
|
+
spinner.succeed(`Found ${results.length} highly coupled module pairs`);
|
|
203
|
+
if (options.json) {
|
|
204
|
+
console.log(JSON.stringify(limitedResults, null, 2));
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (limitedResults.length === 0) {
|
|
208
|
+
console.log(chalk_1.default.green('\n✓ No highly coupled modules found (threshold: ' + (threshold * 100).toFixed(0) + '%)'));
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
console.log(chalk_1.default.bold.cyan(`\n🔗 Highly Coupled Modules (showing ${limitedResults.length} of ${results.length}):\n`));
|
|
212
|
+
for (const result of limitedResults) {
|
|
213
|
+
console.log(`${formatCoupling(result.couplingStrength)} ${chalk_1.default.bold(result.module1)} ↔ ${chalk_1.default.bold(result.module2)}`);
|
|
214
|
+
if (result.circularDependency) {
|
|
215
|
+
console.log(chalk_1.default.red(' ⚠️ Circular dependency detected'));
|
|
216
|
+
}
|
|
217
|
+
console.log();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
spinner.fail('Analysis failed');
|
|
222
|
+
console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Detect circular dependencies
|
|
228
|
+
*/
|
|
229
|
+
async function detectCircularDependencies(options) {
|
|
230
|
+
const graph = await loadCodeGraph();
|
|
231
|
+
const spinner = (0, ora_1.default)('Detecting circular dependencies...').start();
|
|
232
|
+
try {
|
|
233
|
+
// Convert graph to CodeGraph format
|
|
234
|
+
const codeGraph = {
|
|
235
|
+
nodes: new Map(graph.nodes.map(n => [n.id, n])),
|
|
236
|
+
edges: new Map(graph.edges.map(e => [e.id, e])),
|
|
237
|
+
fileNodes: new Map(),
|
|
238
|
+
outgoingEdges: new Map(),
|
|
239
|
+
incomingEdges: new Map()
|
|
240
|
+
};
|
|
241
|
+
// Build index maps
|
|
242
|
+
for (const node of graph.nodes) {
|
|
243
|
+
const fileNodes = codeGraph.fileNodes.get(node.filePath) || [];
|
|
244
|
+
fileNodes.push(node.id);
|
|
245
|
+
codeGraph.fileNodes.set(node.filePath, fileNodes);
|
|
246
|
+
codeGraph.outgoingEdges.set(node.id, []);
|
|
247
|
+
codeGraph.incomingEdges.set(node.id, []);
|
|
248
|
+
}
|
|
249
|
+
for (const edge of graph.edges) {
|
|
250
|
+
const outgoing = codeGraph.outgoingEdges.get(edge.source) || [];
|
|
251
|
+
outgoing.push(edge.id);
|
|
252
|
+
codeGraph.outgoingEdges.set(edge.source, outgoing);
|
|
253
|
+
const incoming = codeGraph.incomingEdges.get(edge.target) || [];
|
|
254
|
+
incoming.push(edge.id);
|
|
255
|
+
codeGraph.incomingEdges.set(edge.target, incoming);
|
|
256
|
+
}
|
|
257
|
+
const detector = new CircularDependencyDetector_js_1.CircularDependencyDetector(codeGraph);
|
|
258
|
+
const cycles = await detector.detectAll();
|
|
259
|
+
// Filter by severity if specified
|
|
260
|
+
const filteredCycles = options.severity
|
|
261
|
+
? cycles.filter(c => {
|
|
262
|
+
const severityOrder = { low: 1, medium: 2, high: 3 };
|
|
263
|
+
return severityOrder[c.severity] >= severityOrder[options.severity];
|
|
264
|
+
})
|
|
265
|
+
: cycles;
|
|
266
|
+
spinner.succeed(`Detected ${cycles.length} circular dependencies`);
|
|
267
|
+
if (options.json) {
|
|
268
|
+
console.log(JSON.stringify(filteredCycles, null, 2));
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
if (filteredCycles.length === 0) {
|
|
272
|
+
console.log(chalk_1.default.green('\n✓ No circular dependencies found'));
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
console.log(chalk_1.default.bold.red(`\n🔄 Circular Dependencies Found: ${filteredCycles.length}\n`));
|
|
276
|
+
for (const cycle of filteredCycles) {
|
|
277
|
+
const severityIcon = {
|
|
278
|
+
high: '🔴',
|
|
279
|
+
medium: '🟡',
|
|
280
|
+
low: '🟢'
|
|
281
|
+
}[cycle.severity];
|
|
282
|
+
console.log(`${severityIcon} ${chalk_1.default.bold(cycle.severity.toUpperCase())}: ${cycle.cycle.join(' → ')}`);
|
|
283
|
+
if (cycle.breakPoints.length > 0) {
|
|
284
|
+
console.log(chalk_1.default.gray(' Break points:'));
|
|
285
|
+
for (const bp of cycle.breakPoints.slice(0, 3)) {
|
|
286
|
+
console.log(chalk_1.default.gray(` • ${bp.source} → ${bp.target} (${bp.effort} effort)`));
|
|
287
|
+
}
|
|
288
|
+
if (cycle.breakPoints.length > 3) {
|
|
289
|
+
console.log(chalk_1.default.gray(` ... and ${cycle.breakPoints.length - 3} more`));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
console.log();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
spinner.fail('Detection failed');
|
|
297
|
+
console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
298
|
+
process.exit(1);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Suggest optimal module boundaries
|
|
303
|
+
*/
|
|
304
|
+
async function suggestModuleBoundaries(count, options) {
|
|
305
|
+
const graph = await loadCodeGraph();
|
|
306
|
+
const moduleCount = parseInt(count);
|
|
307
|
+
if (isNaN(moduleCount) || moduleCount < 2) {
|
|
308
|
+
console.error(chalk_1.default.red('❌ Invalid module count. Must be >= 2'));
|
|
309
|
+
process.exit(1);
|
|
310
|
+
}
|
|
311
|
+
console.log(chalk_1.default.yellow(`\n⚠️ Module boundary suggestion is not yet implemented.`));
|
|
312
|
+
console.log(chalk_1.default.gray('This feature will analyze the code graph and suggest optimal module boundaries'));
|
|
313
|
+
console.log(chalk_1.default.gray(`to partition the codebase into ${moduleCount} modules with minimal coupling.\n`));
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Get coupling overview for entire codebase
|
|
317
|
+
*/
|
|
318
|
+
async function getCouplingOverview(options) {
|
|
319
|
+
const graph = await loadCodeGraph();
|
|
320
|
+
const spinner = (0, ora_1.default)('Computing coupling overview...').start();
|
|
321
|
+
try {
|
|
322
|
+
// Convert graph to CodeGraph format
|
|
323
|
+
const codeGraph = {
|
|
324
|
+
nodes: new Map(graph.nodes.map(n => [n.id, n])),
|
|
325
|
+
edges: new Map(graph.edges.map(e => [e.id, e])),
|
|
326
|
+
fileNodes: new Map(),
|
|
327
|
+
outgoingEdges: new Map(),
|
|
328
|
+
incomingEdges: new Map()
|
|
329
|
+
};
|
|
330
|
+
// Build index maps
|
|
331
|
+
for (const node of graph.nodes) {
|
|
332
|
+
const fileNodes = codeGraph.fileNodes.get(node.filePath) || [];
|
|
333
|
+
fileNodes.push(node.id);
|
|
334
|
+
codeGraph.fileNodes.set(node.filePath, fileNodes);
|
|
335
|
+
codeGraph.outgoingEdges.set(node.id, []);
|
|
336
|
+
codeGraph.incomingEdges.set(node.id, []);
|
|
337
|
+
}
|
|
338
|
+
for (const edge of graph.edges) {
|
|
339
|
+
const outgoing = codeGraph.outgoingEdges.get(edge.source) || [];
|
|
340
|
+
outgoing.push(edge.id);
|
|
341
|
+
codeGraph.outgoingEdges.set(edge.source, outgoing);
|
|
342
|
+
const incoming = codeGraph.incomingEdges.get(edge.target) || [];
|
|
343
|
+
incoming.push(edge.id);
|
|
344
|
+
codeGraph.incomingEdges.set(edge.target, incoming);
|
|
345
|
+
}
|
|
346
|
+
const analyzer = new ModuleCouplingAnalyzer_js_1.ModuleCouplingAnalyzer(codeGraph);
|
|
347
|
+
const overview = await analyzer.getCouplingOverview();
|
|
348
|
+
spinner.succeed('Overview computed');
|
|
349
|
+
if (options.json) {
|
|
350
|
+
console.log(JSON.stringify(overview, null, 2));
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
console.log(chalk_1.default.bold.cyan('\n📊 Coupling Overview\n'));
|
|
354
|
+
console.log(`Average Coupling: ${formatCoupling(overview.averageCoupling)}`);
|
|
355
|
+
console.log(`Maximum Coupling: ${formatCoupling(overview.maxCoupling)}`);
|
|
356
|
+
console.log(`Highly Coupled Pairs: ${chalk_1.default.yellow(overview.highlyCoupledPairs)}`);
|
|
357
|
+
console.log(`Circular Dependencies: ${overview.circularDependencies > 0 ? chalk_1.default.red(overview.circularDependencies) : chalk_1.default.green(overview.circularDependencies)}`);
|
|
358
|
+
if (overview.recommendations.length > 0) {
|
|
359
|
+
console.log(chalk_1.default.yellow('\n💡 Recommendations:'));
|
|
360
|
+
overview.recommendations.forEach(r => {
|
|
361
|
+
console.log(` ${r}`);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
console.log();
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
spinner.fail('Overview computation failed');
|
|
368
|
+
console.error(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
369
|
+
process.exit(1);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=mincut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mincut.js","sourceRoot":"","sources":["../../../../src/cli/commands/kg/mincut.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -65,6 +65,7 @@ const constitution_1 = require("./commands/constitution");
|
|
|
65
65
|
const ruvector_1 = require("./commands/ruvector");
|
|
66
66
|
const knowledge_graph_js_1 = require("./commands/knowledge-graph.js");
|
|
67
67
|
const telemetryCommands = __importStar(require("./commands/telemetry"));
|
|
68
|
+
const mincutCommands = __importStar(require("./commands/kg/mincut.js"));
|
|
68
69
|
const SleepScheduler_1 = require("../learning/scheduler/SleepScheduler");
|
|
69
70
|
const fs = __importStar(require("fs-extra"));
|
|
70
71
|
const path = __importStar(require("path"));
|
|
@@ -1500,6 +1501,96 @@ kgCommand
|
|
|
1500
1501
|
process.exit(1);
|
|
1501
1502
|
}
|
|
1502
1503
|
});
|
|
1504
|
+
/**
|
|
1505
|
+
* MinCut Analysis commands
|
|
1506
|
+
* Module coupling analysis and circular dependency detection
|
|
1507
|
+
*/
|
|
1508
|
+
const mincutCommand = kgCommand
|
|
1509
|
+
.command('mincut')
|
|
1510
|
+
.description('Module coupling analysis using MinCut algorithms');
|
|
1511
|
+
mincutCommand
|
|
1512
|
+
.command('coupling <module1> <module2>')
|
|
1513
|
+
.description('Analyze coupling between two modules')
|
|
1514
|
+
.option('--threshold <number>', 'Coupling threshold (0-1)', '0.3')
|
|
1515
|
+
.option('--json', 'Output as JSON')
|
|
1516
|
+
.action(async (module1, module2, options) => {
|
|
1517
|
+
try {
|
|
1518
|
+
await mincutCommands.analyzeCoupling(module1, module2, {
|
|
1519
|
+
threshold: options.threshold,
|
|
1520
|
+
json: options.json
|
|
1521
|
+
});
|
|
1522
|
+
}
|
|
1523
|
+
catch (error) {
|
|
1524
|
+
console.error(chalk_1.default.red('❌ Coupling analysis failed:'), error);
|
|
1525
|
+
process.exit(1);
|
|
1526
|
+
}
|
|
1527
|
+
});
|
|
1528
|
+
mincutCommand
|
|
1529
|
+
.command('coupling-all')
|
|
1530
|
+
.description('Find all highly coupled module pairs')
|
|
1531
|
+
.option('--threshold <number>', 'Min coupling to report (0-1)', '0.5')
|
|
1532
|
+
.option('--limit <number>', 'Max results to show', '10')
|
|
1533
|
+
.option('--json', 'Output as JSON')
|
|
1534
|
+
.action(async (options) => {
|
|
1535
|
+
try {
|
|
1536
|
+
await mincutCommands.findHighlyCoupledModules({
|
|
1537
|
+
threshold: options.threshold,
|
|
1538
|
+
limit: options.limit,
|
|
1539
|
+
json: options.json
|
|
1540
|
+
});
|
|
1541
|
+
}
|
|
1542
|
+
catch (error) {
|
|
1543
|
+
console.error(chalk_1.default.red('❌ Coupling analysis failed:'), error);
|
|
1544
|
+
process.exit(1);
|
|
1545
|
+
}
|
|
1546
|
+
});
|
|
1547
|
+
mincutCommand
|
|
1548
|
+
.command('circular')
|
|
1549
|
+
.description('Detect circular dependencies')
|
|
1550
|
+
.option('--severity <level>', 'Min severity (low|medium|high)', 'low')
|
|
1551
|
+
.option('--json', 'Output as JSON')
|
|
1552
|
+
.action(async (options) => {
|
|
1553
|
+
try {
|
|
1554
|
+
await mincutCommands.detectCircularDependencies({
|
|
1555
|
+
severity: options.severity,
|
|
1556
|
+
json: options.json
|
|
1557
|
+
});
|
|
1558
|
+
}
|
|
1559
|
+
catch (error) {
|
|
1560
|
+
console.error(chalk_1.default.red('❌ Circular dependency detection failed:'), error);
|
|
1561
|
+
process.exit(1);
|
|
1562
|
+
}
|
|
1563
|
+
});
|
|
1564
|
+
mincutCommand
|
|
1565
|
+
.command('boundaries <count>')
|
|
1566
|
+
.description('Suggest optimal module boundaries')
|
|
1567
|
+
.option('--json', 'Output as JSON')
|
|
1568
|
+
.action(async (count, options) => {
|
|
1569
|
+
try {
|
|
1570
|
+
await mincutCommands.suggestModuleBoundaries(count, {
|
|
1571
|
+
json: options.json
|
|
1572
|
+
});
|
|
1573
|
+
}
|
|
1574
|
+
catch (error) {
|
|
1575
|
+
console.error(chalk_1.default.red('❌ Boundary suggestion failed:'), error);
|
|
1576
|
+
process.exit(1);
|
|
1577
|
+
}
|
|
1578
|
+
});
|
|
1579
|
+
mincutCommand
|
|
1580
|
+
.command('overview')
|
|
1581
|
+
.description('Get coupling overview for entire codebase')
|
|
1582
|
+
.option('--json', 'Output as JSON')
|
|
1583
|
+
.action(async (options) => {
|
|
1584
|
+
try {
|
|
1585
|
+
await mincutCommands.getCouplingOverview({
|
|
1586
|
+
json: options.json
|
|
1587
|
+
});
|
|
1588
|
+
}
|
|
1589
|
+
catch (error) {
|
|
1590
|
+
console.error(chalk_1.default.red('❌ Coupling overview failed:'), error);
|
|
1591
|
+
process.exit(1);
|
|
1592
|
+
}
|
|
1593
|
+
});
|
|
1503
1594
|
// Parse command line arguments
|
|
1504
1595
|
program.parse();
|
|
1505
1596
|
//# sourceMappingURL=index.js.map
|