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.
Files changed (146) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +1 -1
  3. package/dist/agents/CoverageAnalyzerAgent.d.ts +31 -0
  4. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  5. package/dist/agents/CoverageAnalyzerAgent.js +159 -0
  6. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  7. package/dist/agents/FleetCommanderAgent.d.ts +36 -0
  8. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  9. package/dist/agents/FleetCommanderAgent.js +226 -0
  10. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  11. package/dist/cli/commands/kg/mincut.d.ts +50 -0
  12. package/dist/cli/commands/kg/mincut.d.ts.map +1 -0
  13. package/dist/cli/commands/kg/mincut.js +372 -0
  14. package/dist/cli/commands/kg/mincut.js.map +1 -0
  15. package/dist/cli/index.js +91 -0
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/init/claude-config.js +2 -2
  18. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts +148 -0
  19. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.d.ts.map +1 -0
  20. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js +393 -0
  21. package/dist/code-intelligence/analysis/mincut/CircularDependencyDetector.js.map +1 -0
  22. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts +169 -0
  23. package/dist/code-intelligence/analysis/mincut/GraphAdapter.d.ts.map +1 -0
  24. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js +335 -0
  25. package/dist/code-intelligence/analysis/mincut/GraphAdapter.js.map +1 -0
  26. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts +55 -0
  27. package/dist/code-intelligence/analysis/mincut/JsMinCut.d.ts.map +1 -0
  28. package/dist/code-intelligence/analysis/mincut/JsMinCut.js +265 -0
  29. package/dist/code-intelligence/analysis/mincut/JsMinCut.js.map +1 -0
  30. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts +92 -0
  31. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.d.ts.map +1 -0
  32. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js +200 -0
  33. package/dist/code-intelligence/analysis/mincut/MinCutAnalyzer.js.map +1 -0
  34. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts +157 -0
  35. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.d.ts.map +1 -0
  36. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js +434 -0
  37. package/dist/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.js.map +1 -0
  38. package/dist/code-intelligence/analysis/mincut/index.d.ts +12 -0
  39. package/dist/code-intelligence/analysis/mincut/index.d.ts.map +1 -0
  40. package/dist/code-intelligence/analysis/mincut/index.js +20 -0
  41. package/dist/code-intelligence/analysis/mincut/index.js.map +1 -0
  42. package/dist/code-intelligence/analysis/mincut/types.d.ts +145 -0
  43. package/dist/code-intelligence/analysis/mincut/types.d.ts.map +1 -0
  44. package/dist/code-intelligence/analysis/mincut/types.js +16 -0
  45. package/dist/code-intelligence/analysis/mincut/types.js.map +1 -0
  46. package/dist/code-intelligence/chunking/ASTChunker.d.ts +1 -1
  47. package/dist/code-intelligence/chunking/ASTChunker.d.ts.map +1 -1
  48. package/dist/code-intelligence/chunking/ASTChunker.js +4 -4
  49. package/dist/code-intelligence/chunking/ASTChunker.js.map +1 -1
  50. package/dist/code-intelligence/graph/GraphBuilder.d.ts +120 -0
  51. package/dist/code-intelligence/graph/GraphBuilder.d.ts.map +1 -1
  52. package/dist/code-intelligence/graph/GraphBuilder.js +517 -0
  53. package/dist/code-intelligence/graph/GraphBuilder.js.map +1 -1
  54. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
  55. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +3 -3
  56. package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
  57. package/dist/code-intelligence/parser/{TreeSitterParser.d.ts → WebTreeSitterParser.d.ts} +45 -10
  58. package/dist/code-intelligence/parser/WebTreeSitterParser.d.ts.map +1 -0
  59. package/dist/code-intelligence/parser/{TreeSitterParser.js → WebTreeSitterParser.js} +147 -54
  60. package/dist/code-intelligence/parser/WebTreeSitterParser.js.map +1 -0
  61. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts +12 -10
  62. package/dist/code-intelligence/parser/extractors/BaseExtractor.d.ts.map +1 -1
  63. package/dist/code-intelligence/parser/extractors/BaseExtractor.js +7 -3
  64. package/dist/code-intelligence/parser/extractors/BaseExtractor.js.map +1 -1
  65. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts +7 -5
  66. package/dist/code-intelligence/parser/extractors/GoExtractor.d.ts.map +1 -1
  67. package/dist/code-intelligence/parser/extractors/GoExtractor.js +2 -2
  68. package/dist/code-intelligence/parser/extractors/GoExtractor.js.map +1 -1
  69. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts +7 -5
  70. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.d.ts.map +1 -1
  71. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js +2 -2
  72. package/dist/code-intelligence/parser/extractors/JavaScriptExtractor.js.map +1 -1
  73. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts +7 -5
  74. package/dist/code-intelligence/parser/extractors/PythonExtractor.d.ts.map +1 -1
  75. package/dist/code-intelligence/parser/extractors/PythonExtractor.js +2 -2
  76. package/dist/code-intelligence/parser/extractors/PythonExtractor.js.map +1 -1
  77. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts +7 -5
  78. package/dist/code-intelligence/parser/extractors/RustExtractor.d.ts.map +1 -1
  79. package/dist/code-intelligence/parser/extractors/RustExtractor.js +2 -2
  80. package/dist/code-intelligence/parser/extractors/RustExtractor.js.map +1 -1
  81. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts +7 -5
  82. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.d.ts.map +1 -1
  83. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js +2 -2
  84. package/dist/code-intelligence/parser/extractors/TypeScriptExtractor.js.map +1 -1
  85. package/dist/code-intelligence/parser/index.d.ts +7 -1
  86. package/dist/code-intelligence/parser/index.d.ts.map +1 -1
  87. package/dist/code-intelligence/parser/index.js +11 -3
  88. package/dist/code-intelligence/parser/index.js.map +1 -1
  89. package/dist/code-intelligence/service/CodeIntelligenceService.d.ts.map +1 -1
  90. package/dist/code-intelligence/service/CodeIntelligenceService.js +7 -5
  91. package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
  92. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  93. package/dist/coverage/CriticalPathDetector.d.ts +240 -0
  94. package/dist/coverage/CriticalPathDetector.d.ts.map +1 -0
  95. package/dist/coverage/CriticalPathDetector.js +388 -0
  96. package/dist/coverage/CriticalPathDetector.js.map +1 -0
  97. package/dist/coverage/index.d.ts +13 -0
  98. package/dist/coverage/index.d.ts.map +1 -0
  99. package/dist/coverage/index.js +16 -0
  100. package/dist/coverage/index.js.map +1 -0
  101. package/dist/fleet/topology/SPOFMonitor.d.ts +181 -0
  102. package/dist/fleet/topology/SPOFMonitor.d.ts.map +1 -0
  103. package/dist/fleet/topology/SPOFMonitor.js +286 -0
  104. package/dist/fleet/topology/SPOFMonitor.js.map +1 -0
  105. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts +87 -0
  106. package/dist/fleet/topology/TopologyMinCutAnalyzer.d.ts.map +1 -0
  107. package/dist/fleet/topology/TopologyMinCutAnalyzer.js +472 -0
  108. package/dist/fleet/topology/TopologyMinCutAnalyzer.js.map +1 -0
  109. package/dist/fleet/topology/index.d.ts +13 -0
  110. package/dist/fleet/topology/index.d.ts.map +1 -0
  111. package/dist/fleet/topology/index.js +20 -0
  112. package/dist/fleet/topology/index.js.map +1 -0
  113. package/dist/fleet/topology/types.d.ts +139 -0
  114. package/dist/fleet/topology/types.d.ts.map +1 -0
  115. package/dist/fleet/topology/types.js +19 -0
  116. package/dist/fleet/topology/types.js.map +1 -0
  117. package/dist/mcp/handlers/test/test-execute-parallel.d.ts +34 -3
  118. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  119. package/dist/mcp/handlers/test/test-execute-parallel.js +120 -5
  120. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  121. package/dist/mcp/server-instructions.d.ts +2 -2
  122. package/dist/mcp/server-instructions.d.ts.map +1 -1
  123. package/dist/mcp/server-instructions.js +2 -2
  124. package/dist/test/partition/MinCutPartitioner.d.ts +97 -0
  125. package/dist/test/partition/MinCutPartitioner.d.ts.map +1 -0
  126. package/dist/test/partition/MinCutPartitioner.js +459 -0
  127. package/dist/test/partition/MinCutPartitioner.js.map +1 -0
  128. package/dist/test/partition/RealTestExecutor.d.ts +86 -0
  129. package/dist/test/partition/RealTestExecutor.d.ts.map +1 -0
  130. package/dist/test/partition/RealTestExecutor.js +279 -0
  131. package/dist/test/partition/RealTestExecutor.js.map +1 -0
  132. package/dist/test/partition/TestDependencyAnalyzer.d.ts +75 -0
  133. package/dist/test/partition/TestDependencyAnalyzer.d.ts.map +1 -0
  134. package/dist/test/partition/TestDependencyAnalyzer.js +297 -0
  135. package/dist/test/partition/TestDependencyAnalyzer.js.map +1 -0
  136. package/dist/test/partition/index.d.ts +10 -0
  137. package/dist/test/partition/index.d.ts.map +1 -0
  138. package/dist/test/partition/index.js +26 -0
  139. package/dist/test/partition/index.js.map +1 -0
  140. package/dist/test/partition/types.d.ts +120 -0
  141. package/dist/test/partition/types.d.ts.map +1 -0
  142. package/dist/test/partition/types.js +21 -0
  143. package/dist/test/partition/types.js.map +1 -0
  144. package/package.json +4 -7
  145. package/dist/code-intelligence/parser/TreeSitterParser.d.ts.map +0 -1
  146. 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