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 @@
|
|
|
1
|
+
{"version":3,"file":"JsMinCut.js","sourceRoot":"","sources":["../../../../src/code-intelligence/analysis/mincut/JsMinCut.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { MinCutResult, MinCutGraphInput, MinCutConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* MinCut analyzer using the Stoer-Wagner algorithm.
|
|
4
|
+
*
|
|
5
|
+
* This is a pure JavaScript implementation optimized for code intelligence
|
|
6
|
+
* and fleet topology analysis. The algorithm runs in O(V³) time complexity
|
|
7
|
+
* and O(V²) space complexity.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const analyzer = new MinCutAnalyzer();
|
|
12
|
+
* const result = await analyzer.computeMinCut({
|
|
13
|
+
* nodes: [{ id: 'A', label: 'A' }, { id: 'B', label: 'B' }],
|
|
14
|
+
* edges: [{ source: 'A', target: 'B', weight: 1.0 }],
|
|
15
|
+
* directed: false,
|
|
16
|
+
* });
|
|
17
|
+
* console.log('Min cut value:', result.cutValue);
|
|
18
|
+
* console.log('Partitions:', result.partition1, result.partition2);
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @see JsMinCut for the underlying Stoer-Wagner implementation
|
|
22
|
+
*/
|
|
23
|
+
export declare class MinCutAnalyzer {
|
|
24
|
+
private config;
|
|
25
|
+
private jsMinCut;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new MinCutAnalyzer
|
|
28
|
+
*
|
|
29
|
+
* @param config - Partial configuration (merged with defaults)
|
|
30
|
+
*/
|
|
31
|
+
constructor(config?: Partial<MinCutConfig>);
|
|
32
|
+
/**
|
|
33
|
+
* Compute the minimum cut of a graph using the Stoer-Wagner algorithm
|
|
34
|
+
*
|
|
35
|
+
* @param graph - Input graph with nodes and edges
|
|
36
|
+
* @returns Promise resolving to MinCutResult
|
|
37
|
+
* @throws Error if graph exceeds maxNodes limit or computation times out
|
|
38
|
+
*/
|
|
39
|
+
computeMinCut(graph: MinCutGraphInput): Promise<MinCutResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Find multiple minimum cuts by iteratively removing cut edges
|
|
42
|
+
*
|
|
43
|
+
* This is useful for identifying alternative module boundaries or
|
|
44
|
+
* finding all equally optimal partitions.
|
|
45
|
+
*
|
|
46
|
+
* @param graph - Input graph
|
|
47
|
+
* @param maxCuts - Maximum number of cuts to find (default: 3)
|
|
48
|
+
* @returns Promise resolving to array of MinCutResults, sorted by cut value
|
|
49
|
+
*/
|
|
50
|
+
findAllMinCuts(graph: MinCutGraphInput, maxCuts?: number): Promise<MinCutResult[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Validate graph constraints
|
|
53
|
+
*/
|
|
54
|
+
private validateGraph;
|
|
55
|
+
/**
|
|
56
|
+
* Compute min cut using Stoer-Wagner JS implementation
|
|
57
|
+
*/
|
|
58
|
+
private computeJS;
|
|
59
|
+
/**
|
|
60
|
+
* Wrap computation with timeout
|
|
61
|
+
*/
|
|
62
|
+
private computeWithTimeout;
|
|
63
|
+
/**
|
|
64
|
+
* Clone graph for iterative cut finding
|
|
65
|
+
*/
|
|
66
|
+
private cloneGraph;
|
|
67
|
+
/**
|
|
68
|
+
* Remove cut edges from graph
|
|
69
|
+
*/
|
|
70
|
+
private removeCutEdges;
|
|
71
|
+
/**
|
|
72
|
+
* Get current configuration
|
|
73
|
+
*/
|
|
74
|
+
getConfig(): Readonly<MinCutConfig>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if native bindings are available.
|
|
77
|
+
*
|
|
78
|
+
* Currently always returns false as the implementation uses
|
|
79
|
+
* pure JavaScript Stoer-Wagner algorithm which is performant
|
|
80
|
+
* for graphs up to ~500 nodes.
|
|
81
|
+
*/
|
|
82
|
+
isNativeAvailable(): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Get algorithm information
|
|
85
|
+
*/
|
|
86
|
+
getAlgorithmInfo(): {
|
|
87
|
+
name: string;
|
|
88
|
+
complexity: string;
|
|
89
|
+
implementation: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=MinCutAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MinCutAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/code-intelligence/analysis/mincut/MinCutAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAMjG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAE3B;;;;OAIG;gBACS,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAW9C;;;;;;OAMG;IACU,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAU1E;;;;;;;;;OASG;IACU,cAAc,CACzB,KAAK,EAAE,gBAAgB,EACvB,OAAO,SAAI,GACV,OAAO,CAAC,YAAY,EAAE,CAAC;IA+B1B;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;YACW,SAAS;IAavB;;OAEG;YACW,kBAAkB;IAoBhC;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACI,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;IAI1C;;;;;;OAMG;IACI,iBAAiB,IAAI,OAAO;IAInC;;OAEG;IACI,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;CAOxF"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MinCutAnalyzer = void 0;
|
|
4
|
+
const types_js_1 = require("./types.js");
|
|
5
|
+
const JsMinCut_js_1 = require("./JsMinCut.js");
|
|
6
|
+
const Logger_js_1 = require("../../../utils/Logger.js");
|
|
7
|
+
const logger = Logger_js_1.Logger.getInstance();
|
|
8
|
+
/**
|
|
9
|
+
* MinCut analyzer using the Stoer-Wagner algorithm.
|
|
10
|
+
*
|
|
11
|
+
* This is a pure JavaScript implementation optimized for code intelligence
|
|
12
|
+
* and fleet topology analysis. The algorithm runs in O(V³) time complexity
|
|
13
|
+
* and O(V²) space complexity.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const analyzer = new MinCutAnalyzer();
|
|
18
|
+
* const result = await analyzer.computeMinCut({
|
|
19
|
+
* nodes: [{ id: 'A', label: 'A' }, { id: 'B', label: 'B' }],
|
|
20
|
+
* edges: [{ source: 'A', target: 'B', weight: 1.0 }],
|
|
21
|
+
* directed: false,
|
|
22
|
+
* });
|
|
23
|
+
* console.log('Min cut value:', result.cutValue);
|
|
24
|
+
* console.log('Partitions:', result.partition1, result.partition2);
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @see JsMinCut for the underlying Stoer-Wagner implementation
|
|
28
|
+
*/
|
|
29
|
+
class MinCutAnalyzer {
|
|
30
|
+
/**
|
|
31
|
+
* Create a new MinCutAnalyzer
|
|
32
|
+
*
|
|
33
|
+
* @param config - Partial configuration (merged with defaults)
|
|
34
|
+
*/
|
|
35
|
+
constructor(config = {}) {
|
|
36
|
+
this.config = { ...types_js_1.DEFAULT_MINCUT_CONFIG, ...config };
|
|
37
|
+
this.jsMinCut = new JsMinCut_js_1.JsMinCut();
|
|
38
|
+
logger.info('MinCutAnalyzer initialized (Stoer-Wagner algorithm)', {
|
|
39
|
+
maxNodes: this.config.maxNodes,
|
|
40
|
+
timeout: this.config.timeout,
|
|
41
|
+
normalizeWeights: this.config.normalizeWeights,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Compute the minimum cut of a graph using the Stoer-Wagner algorithm
|
|
46
|
+
*
|
|
47
|
+
* @param graph - Input graph with nodes and edges
|
|
48
|
+
* @returns Promise resolving to MinCutResult
|
|
49
|
+
* @throws Error if graph exceeds maxNodes limit or computation times out
|
|
50
|
+
*/
|
|
51
|
+
async computeMinCut(graph) {
|
|
52
|
+
// Validate graph size
|
|
53
|
+
this.validateGraph(graph);
|
|
54
|
+
// Use Stoer-Wagner JS implementation with timeout protection
|
|
55
|
+
return await this.computeWithTimeout(() => this.computeJS(graph));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find multiple minimum cuts by iteratively removing cut edges
|
|
59
|
+
*
|
|
60
|
+
* This is useful for identifying alternative module boundaries or
|
|
61
|
+
* finding all equally optimal partitions.
|
|
62
|
+
*
|
|
63
|
+
* @param graph - Input graph
|
|
64
|
+
* @param maxCuts - Maximum number of cuts to find (default: 3)
|
|
65
|
+
* @returns Promise resolving to array of MinCutResults, sorted by cut value
|
|
66
|
+
*/
|
|
67
|
+
async findAllMinCuts(graph, maxCuts = 3) {
|
|
68
|
+
const results = [];
|
|
69
|
+
let workingGraph = this.cloneGraph(graph);
|
|
70
|
+
for (let i = 0; i < maxCuts; i++) {
|
|
71
|
+
try {
|
|
72
|
+
const result = await this.computeMinCut(workingGraph);
|
|
73
|
+
results.push(result);
|
|
74
|
+
// If no cut was found or cut value is infinite, stop
|
|
75
|
+
if (result.cutValue === 0 || result.cutValue === Infinity) {
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
// Remove cut edges for next iteration
|
|
79
|
+
workingGraph = this.removeCutEdges(workingGraph, result.cutEdges);
|
|
80
|
+
// If graph becomes disconnected or empty, stop
|
|
81
|
+
if (workingGraph.edges.length === 0) {
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
logger.warn('Failed to find additional min cut', { iteration: i, error });
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Sort by cut value (ascending)
|
|
91
|
+
return results.sort((a, b) => a.cutValue - b.cutValue);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate graph constraints
|
|
95
|
+
*/
|
|
96
|
+
validateGraph(graph) {
|
|
97
|
+
if (graph.nodes.length > this.config.maxNodes) {
|
|
98
|
+
throw new Error(`Graph has ${graph.nodes.length} nodes, exceeding limit of ${this.config.maxNodes}`);
|
|
99
|
+
}
|
|
100
|
+
if (graph.nodes.length === 0) {
|
|
101
|
+
throw new Error('Graph must have at least one node');
|
|
102
|
+
}
|
|
103
|
+
// Check for invalid edges
|
|
104
|
+
const nodeIds = new Set(graph.nodes.map(n => n.id));
|
|
105
|
+
for (const edge of graph.edges) {
|
|
106
|
+
if (!nodeIds.has(edge.source)) {
|
|
107
|
+
throw new Error(`Edge source '${edge.source}' not found in nodes`);
|
|
108
|
+
}
|
|
109
|
+
if (!nodeIds.has(edge.target)) {
|
|
110
|
+
throw new Error(`Edge target '${edge.target}' not found in nodes`);
|
|
111
|
+
}
|
|
112
|
+
if (edge.weight < 0) {
|
|
113
|
+
throw new Error(`Edge weight must be non-negative, got ${edge.weight}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Compute min cut using Stoer-Wagner JS implementation
|
|
119
|
+
*/
|
|
120
|
+
async computeJS(graph) {
|
|
121
|
+
// Run in next tick to allow for async timeout handling
|
|
122
|
+
return new Promise((resolve) => {
|
|
123
|
+
setImmediate(() => {
|
|
124
|
+
const result = this.jsMinCut.computeMinCut(graph, this.config.normalizeWeights);
|
|
125
|
+
resolve(result);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Wrap computation with timeout
|
|
131
|
+
*/
|
|
132
|
+
async computeWithTimeout(fn) {
|
|
133
|
+
return new Promise((resolve, reject) => {
|
|
134
|
+
const timer = setTimeout(() => {
|
|
135
|
+
reject(new Error(`MinCut computation exceeded timeout of ${this.config.timeout}ms`));
|
|
136
|
+
}, this.config.timeout);
|
|
137
|
+
fn()
|
|
138
|
+
.then((result) => {
|
|
139
|
+
clearTimeout(timer);
|
|
140
|
+
resolve(result);
|
|
141
|
+
})
|
|
142
|
+
.catch((error) => {
|
|
143
|
+
clearTimeout(timer);
|
|
144
|
+
reject(error);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Clone graph for iterative cut finding
|
|
150
|
+
*/
|
|
151
|
+
cloneGraph(graph) {
|
|
152
|
+
return {
|
|
153
|
+
nodes: graph.nodes.map(n => ({ ...n })),
|
|
154
|
+
edges: graph.edges.map(e => ({ ...e })),
|
|
155
|
+
directed: graph.directed,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Remove cut edges from graph
|
|
160
|
+
*/
|
|
161
|
+
removeCutEdges(graph, cutEdges) {
|
|
162
|
+
const cutSet = new Set(cutEdges.map(e => `${e.source}->${e.target}`));
|
|
163
|
+
// Also add reverse direction for undirected graphs
|
|
164
|
+
cutEdges.forEach(e => {
|
|
165
|
+
cutSet.add(`${e.target}->${e.source}`);
|
|
166
|
+
});
|
|
167
|
+
return {
|
|
168
|
+
...graph,
|
|
169
|
+
edges: graph.edges.filter(e => !cutSet.has(`${e.source}->${e.target}`)),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get current configuration
|
|
174
|
+
*/
|
|
175
|
+
getConfig() {
|
|
176
|
+
return { ...this.config };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Check if native bindings are available.
|
|
180
|
+
*
|
|
181
|
+
* Currently always returns false as the implementation uses
|
|
182
|
+
* pure JavaScript Stoer-Wagner algorithm which is performant
|
|
183
|
+
* for graphs up to ~500 nodes.
|
|
184
|
+
*/
|
|
185
|
+
isNativeAvailable() {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get algorithm information
|
|
190
|
+
*/
|
|
191
|
+
getAlgorithmInfo() {
|
|
192
|
+
return {
|
|
193
|
+
name: 'Stoer-Wagner',
|
|
194
|
+
complexity: 'O(V³) time, O(V²) space',
|
|
195
|
+
implementation: 'pure-javascript',
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.MinCutAnalyzer = MinCutAnalyzer;
|
|
200
|
+
//# sourceMappingURL=MinCutAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MinCutAnalyzer.js","sourceRoot":"","sources":["../../../../src/code-intelligence/analysis/mincut/MinCutAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module Coupling Analyzer
|
|
3
|
+
*
|
|
4
|
+
* High-level analyzer for module coupling that provides actionable insights
|
|
5
|
+
* for code quality improvement. Uses MinCut analysis to identify optimal
|
|
6
|
+
* module boundaries and coupling reduction points.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const graph = graphBuilder.exportGraph();
|
|
11
|
+
* const analyzer = new ModuleCouplingAnalyzer(graph, {
|
|
12
|
+
* moduleGrouping: 'directory',
|
|
13
|
+
* minCouplingThreshold: 0.1
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Analyze coupling between two modules
|
|
17
|
+
* const result = await analyzer.analyzeCoupling('src/auth', 'src/user');
|
|
18
|
+
* console.log('Coupling strength:', result.couplingStrength);
|
|
19
|
+
* console.log('Recommendations:', result.recommendations);
|
|
20
|
+
*
|
|
21
|
+
* // Find all highly coupled module pairs
|
|
22
|
+
* const coupled = await analyzer.findHighlyCoupledModules(0.7);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { ModuleCouplingResult, MinCutConfig } from './types.js';
|
|
26
|
+
import { CodeGraph } from '../../graph/types.js';
|
|
27
|
+
/**
|
|
28
|
+
* Options for module coupling analysis
|
|
29
|
+
*/
|
|
30
|
+
export interface ModuleCouplingOptions {
|
|
31
|
+
/** Configuration for MinCut analyzer */
|
|
32
|
+
minCutConfig?: Partial<MinCutConfig>;
|
|
33
|
+
/** How to group code into modules */
|
|
34
|
+
moduleGrouping?: 'directory' | 'file' | 'custom';
|
|
35
|
+
/** Custom function to extract module identifier from file path */
|
|
36
|
+
customModuleExtractor?: (filePath: string) => string;
|
|
37
|
+
/** Minimum coupling threshold - ignore pairs below this value */
|
|
38
|
+
minCouplingThreshold?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* ModuleCouplingAnalyzer - High-level analyzer for module coupling
|
|
42
|
+
*
|
|
43
|
+
* Provides actionable insights about module coupling and recommendations
|
|
44
|
+
* for improving code quality through better module boundaries.
|
|
45
|
+
*/
|
|
46
|
+
export declare class ModuleCouplingAnalyzer {
|
|
47
|
+
private graph;
|
|
48
|
+
private analyzer;
|
|
49
|
+
private options;
|
|
50
|
+
/**
|
|
51
|
+
* Create a new ModuleCouplingAnalyzer
|
|
52
|
+
*
|
|
53
|
+
* @param graph - Code graph to analyze (from GraphBuilder.exportGraph())
|
|
54
|
+
* @param options - Analysis options
|
|
55
|
+
*/
|
|
56
|
+
constructor(graph: CodeGraph, options?: ModuleCouplingOptions);
|
|
57
|
+
/**
|
|
58
|
+
* Analyze coupling between two specific modules
|
|
59
|
+
*
|
|
60
|
+
* @param module1Path - Path to first module
|
|
61
|
+
* @param module2Path - Path to second module
|
|
62
|
+
* @returns Promise resolving to coupling analysis result
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const result = await analyzer.analyzeCoupling('src/auth', 'src/user');
|
|
67
|
+
* if (result.couplingStrength > 0.7) {
|
|
68
|
+
* console.log('High coupling detected!');
|
|
69
|
+
* console.log('Recommendations:', result.recommendations);
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
analyzeCoupling(module1Path: string, module2Path: string): Promise<ModuleCouplingResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Find all highly coupled module pairs
|
|
76
|
+
*
|
|
77
|
+
* @param threshold - Minimum coupling strength to include (0-1, default 0.7)
|
|
78
|
+
* @returns Promise resolving to array of coupling results, sorted by strength
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const coupled = await analyzer.findHighlyCoupledModules(0.7);
|
|
83
|
+
* for (const pair of coupled) {
|
|
84
|
+
* console.log(`${pair.module1} <-> ${pair.module2}: ${pair.couplingStrength}`);
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
findHighlyCoupledModules(threshold?: number): Promise<ModuleCouplingResult[]>;
|
|
89
|
+
/**
|
|
90
|
+
* Get a coupling summary for the entire codebase
|
|
91
|
+
*
|
|
92
|
+
* @returns Promise resolving to overall coupling statistics and recommendations
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const overview = await analyzer.getCouplingOverview();
|
|
97
|
+
* console.log('Average coupling:', overview.averageCoupling);
|
|
98
|
+
* console.log('Recommendations:', overview.recommendations);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
getCouplingOverview(): Promise<{
|
|
102
|
+
averageCoupling: number;
|
|
103
|
+
maxCoupling: number;
|
|
104
|
+
highlyCoupledPairs: number;
|
|
105
|
+
circularDependencies: number;
|
|
106
|
+
recommendations: string[];
|
|
107
|
+
}>;
|
|
108
|
+
/**
|
|
109
|
+
* Get all nodes belonging to a module
|
|
110
|
+
*/
|
|
111
|
+
private getModuleNodes;
|
|
112
|
+
/**
|
|
113
|
+
* Extract module subgraph containing only specified nodes
|
|
114
|
+
*/
|
|
115
|
+
private extractModuleSubgraph;
|
|
116
|
+
/**
|
|
117
|
+
* Calculate coupling strength from MinCut result
|
|
118
|
+
*
|
|
119
|
+
* Coupling strength is calculated as:
|
|
120
|
+
* - If cutValue is 0: coupling = 0 (no connection)
|
|
121
|
+
* - Otherwise: coupling = normalized based on cut edges and graph structure
|
|
122
|
+
*/
|
|
123
|
+
private calculateCouplingStrength;
|
|
124
|
+
/**
|
|
125
|
+
* Check if there's a circular dependency between module nodes
|
|
126
|
+
*/
|
|
127
|
+
private hasCircularDependency;
|
|
128
|
+
/**
|
|
129
|
+
* Find dependencies shared by both modules
|
|
130
|
+
*/
|
|
131
|
+
private findSharedDependencies;
|
|
132
|
+
/**
|
|
133
|
+
* Generate actionable recommendations based on coupling analysis
|
|
134
|
+
*/
|
|
135
|
+
private generateRecommendations;
|
|
136
|
+
/**
|
|
137
|
+
* Get unique module identifiers from the graph
|
|
138
|
+
*/
|
|
139
|
+
private getUniqueModules;
|
|
140
|
+
/**
|
|
141
|
+
* Extract module path from file path based on grouping strategy
|
|
142
|
+
*/
|
|
143
|
+
private extractModulePath;
|
|
144
|
+
/**
|
|
145
|
+
* Default module extractor - extracts directory path
|
|
146
|
+
*/
|
|
147
|
+
private defaultModuleExtractor;
|
|
148
|
+
/**
|
|
149
|
+
* Get current analysis options
|
|
150
|
+
*/
|
|
151
|
+
getOptions(): Readonly<Required<ModuleCouplingOptions>>;
|
|
152
|
+
/**
|
|
153
|
+
* Get the underlying graph
|
|
154
|
+
*/
|
|
155
|
+
getGraph(): Readonly<CodeGraph>;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=ModuleCouplingAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleCouplingAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/code-intelligence/analysis/mincut/ModuleCouplingAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAwB,MAAM,sBAAsB,CAAC;AAKvE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAErC,qCAAqC;IACrC,cAAc,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEjD,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAErD,iEAAiE;IACjE,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAkC;IAEjD;;;;;OAKG;gBACS,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,qBAA0B;IAiBjE;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAmFhC;;;;;;;;;;;;;OAaG;IACG,wBAAwB,CAC5B,SAAS,SAAM,GACd,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA8BlC;;;;;;;;;;;OAWG;IACG,mBAAmB,IAAI,OAAO,CAAC;QACnC,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IAuDF;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAuBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8C/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACI,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAI9D;;OAEG;IACI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC;CAGvC"}
|