@claude-flow/plugin-code-intelligence 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +381 -0
- package/dist/bridges/gnn-bridge.d.ts +96 -0
- package/dist/bridges/gnn-bridge.d.ts.map +1 -0
- package/dist/bridges/gnn-bridge.js +527 -0
- package/dist/bridges/gnn-bridge.js.map +1 -0
- package/dist/bridges/index.d.ts +8 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +8 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/bridges/mincut-bridge.d.ts +81 -0
- package/dist/bridges/mincut-bridge.d.ts.map +1 -0
- package/dist/bridges/mincut-bridge.js +481 -0
- package/dist/bridges/mincut-bridge.js.map +1 -0
- package/dist/index.d.ts +113 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +156 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-tools.d.ts +98 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +794 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/types.d.ts +838 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +268 -0
- package/dist/types.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GNN Bridge for Code Graph Analysis
|
|
3
|
+
*
|
|
4
|
+
* Provides graph neural network operations for code structure analysis
|
|
5
|
+
* using ruvector-gnn-wasm for high-performance graph algorithms.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Code graph construction
|
|
9
|
+
* - Node embedding computation
|
|
10
|
+
* - Impact prediction using graph propagation
|
|
11
|
+
* - Community detection for module discovery
|
|
12
|
+
* - Pattern matching in code graphs
|
|
13
|
+
*
|
|
14
|
+
* Based on ADR-035: Advanced Code Intelligence Plugin
|
|
15
|
+
*
|
|
16
|
+
* @module v3/plugins/code-intelligence/bridges/gnn-bridge
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* GNN Bridge Implementation
|
|
20
|
+
*/
|
|
21
|
+
export class GNNBridge {
|
|
22
|
+
// WASM module for future performance optimization (currently uses JS fallback)
|
|
23
|
+
wasmModule = null;
|
|
24
|
+
initialized = false;
|
|
25
|
+
embeddingDim;
|
|
26
|
+
constructor(embeddingDim = 128) {
|
|
27
|
+
this.embeddingDim = embeddingDim;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the WASM module
|
|
31
|
+
*/
|
|
32
|
+
async initialize() {
|
|
33
|
+
if (this.initialized)
|
|
34
|
+
return;
|
|
35
|
+
try {
|
|
36
|
+
// Dynamic import of WASM module
|
|
37
|
+
this.wasmModule = await this.loadWasmModule();
|
|
38
|
+
this.initialized = true;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Fallback to pure JS implementation
|
|
42
|
+
console.warn('WASM GNN module not available, using JS fallback');
|
|
43
|
+
this.wasmModule = null;
|
|
44
|
+
this.initialized = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if initialized
|
|
49
|
+
*/
|
|
50
|
+
isInitialized() {
|
|
51
|
+
return this.initialized;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build code graph from files
|
|
55
|
+
*/
|
|
56
|
+
async buildCodeGraph(files, _includeCallGraph) {
|
|
57
|
+
if (!this.initialized) {
|
|
58
|
+
await this.initialize();
|
|
59
|
+
}
|
|
60
|
+
const nodes = [];
|
|
61
|
+
const edges = [];
|
|
62
|
+
const nodeMap = new Map();
|
|
63
|
+
// Create nodes for each file
|
|
64
|
+
for (let i = 0; i < files.length; i++) {
|
|
65
|
+
const file = files[i];
|
|
66
|
+
if (!file)
|
|
67
|
+
continue;
|
|
68
|
+
nodeMap.set(file, i);
|
|
69
|
+
nodes.push({
|
|
70
|
+
id: file,
|
|
71
|
+
label: file.split('/').pop() ?? file,
|
|
72
|
+
type: 'file',
|
|
73
|
+
language: this.detectLanguage(file),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Build edges from imports (simplified - in production would parse AST)
|
|
77
|
+
for (const file of files) {
|
|
78
|
+
const imports = await this.extractImports(file, files);
|
|
79
|
+
for (const imp of imports) {
|
|
80
|
+
if (nodeMap.has(imp)) {
|
|
81
|
+
edges.push({
|
|
82
|
+
from: file,
|
|
83
|
+
to: imp,
|
|
84
|
+
type: 'import',
|
|
85
|
+
weight: 1,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Calculate metadata
|
|
91
|
+
const avgDegree = edges.length > 0 ? (edges.length * 2) / nodes.length : 0;
|
|
92
|
+
const maxDepth = this.calculateMaxDepth(nodes, edges);
|
|
93
|
+
return {
|
|
94
|
+
nodes,
|
|
95
|
+
edges,
|
|
96
|
+
metadata: {
|
|
97
|
+
totalNodes: nodes.length,
|
|
98
|
+
totalEdges: edges.length,
|
|
99
|
+
avgDegree,
|
|
100
|
+
maxDepth,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Compute node embeddings using GNN
|
|
106
|
+
*/
|
|
107
|
+
async computeNodeEmbeddings(graph, embeddingDim) {
|
|
108
|
+
if (!this.initialized) {
|
|
109
|
+
await this.initialize();
|
|
110
|
+
}
|
|
111
|
+
const embeddings = new Map();
|
|
112
|
+
const nodeCount = graph.nodes.length;
|
|
113
|
+
if (nodeCount === 0) {
|
|
114
|
+
return embeddings;
|
|
115
|
+
}
|
|
116
|
+
// Create node lookup
|
|
117
|
+
const nodeMap = new Map();
|
|
118
|
+
graph.nodes.forEach((node, index) => {
|
|
119
|
+
nodeMap.set(node.id, index);
|
|
120
|
+
});
|
|
121
|
+
// Build adjacency list for WASM
|
|
122
|
+
const edgeArray = new Uint32Array(graph.edges.length * 2);
|
|
123
|
+
for (let i = 0; i < graph.edges.length; i++) {
|
|
124
|
+
const edge = graph.edges[i];
|
|
125
|
+
if (!edge)
|
|
126
|
+
continue;
|
|
127
|
+
const fromIdx = nodeMap.get(edge.from) ?? 0;
|
|
128
|
+
const toIdx = nodeMap.get(edge.to) ?? 0;
|
|
129
|
+
edgeArray[i * 2] = fromIdx;
|
|
130
|
+
edgeArray[i * 2 + 1] = toIdx;
|
|
131
|
+
}
|
|
132
|
+
// Initialize features (simple degree-based features)
|
|
133
|
+
const featureDim = 16;
|
|
134
|
+
const features = new Float32Array(nodeCount * featureDim);
|
|
135
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
136
|
+
const node = graph.nodes[i];
|
|
137
|
+
if (!node)
|
|
138
|
+
continue;
|
|
139
|
+
// In-degree
|
|
140
|
+
features[i * featureDim] = graph.edges.filter(e => e.to === node.id).length;
|
|
141
|
+
// Out-degree
|
|
142
|
+
features[i * featureDim + 1] = graph.edges.filter(e => e.from === node.id).length;
|
|
143
|
+
// Node type encoding
|
|
144
|
+
features[i * featureDim + 2] = this.encodeNodeType(node.type);
|
|
145
|
+
// Language encoding
|
|
146
|
+
features[i * featureDim + 3] = node.language ? this.encodeLanguage(node.language) : 0;
|
|
147
|
+
}
|
|
148
|
+
// Compute embeddings (using JS fallback)
|
|
149
|
+
const embeddingMatrix = this.computeEmbeddingsJS(graph, features, featureDim, embeddingDim);
|
|
150
|
+
// Extract embeddings per node
|
|
151
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
152
|
+
const node = graph.nodes[i];
|
|
153
|
+
if (!node)
|
|
154
|
+
continue;
|
|
155
|
+
const nodeEmbedding = embeddingMatrix.slice(i * embeddingDim, (i + 1) * embeddingDim);
|
|
156
|
+
embeddings.set(node.id, nodeEmbedding);
|
|
157
|
+
}
|
|
158
|
+
return embeddings;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Predict impact of changes using GNN
|
|
162
|
+
*/
|
|
163
|
+
async predictImpact(graph, changedNodes, depth) {
|
|
164
|
+
if (!this.initialized) {
|
|
165
|
+
await this.initialize();
|
|
166
|
+
}
|
|
167
|
+
const impact = new Map();
|
|
168
|
+
const nodeCount = graph.nodes.length;
|
|
169
|
+
if (nodeCount === 0) {
|
|
170
|
+
return impact;
|
|
171
|
+
}
|
|
172
|
+
// Create node lookup
|
|
173
|
+
const nodeMap = new Map();
|
|
174
|
+
graph.nodes.forEach((node, index) => {
|
|
175
|
+
nodeMap.set(node.id, index);
|
|
176
|
+
});
|
|
177
|
+
// Build adjacency list (reverse direction for impact propagation)
|
|
178
|
+
const adj = Array.from({ length: nodeCount }, () => []);
|
|
179
|
+
for (const edge of graph.edges) {
|
|
180
|
+
const fromIdx = nodeMap.get(edge.from);
|
|
181
|
+
const toIdx = nodeMap.get(edge.to);
|
|
182
|
+
if (fromIdx !== undefined && toIdx !== undefined) {
|
|
183
|
+
// Reverse: impact flows from dependency to dependent
|
|
184
|
+
adj[toIdx]?.push(fromIdx);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Initialize impact scores
|
|
188
|
+
const scores = new Float32Array(nodeCount);
|
|
189
|
+
for (const nodeId of changedNodes) {
|
|
190
|
+
const idx = nodeMap.get(nodeId);
|
|
191
|
+
if (idx !== undefined) {
|
|
192
|
+
scores[idx] = 1.0;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Propagate impact using BFS with decay
|
|
196
|
+
const visited = new Set();
|
|
197
|
+
const queue = [];
|
|
198
|
+
// Initialize queue with changed nodes
|
|
199
|
+
for (const nodeId of changedNodes) {
|
|
200
|
+
const idx = nodeMap.get(nodeId);
|
|
201
|
+
if (idx !== undefined) {
|
|
202
|
+
queue.push({ node: idx, depth: 0, score: 1.0 });
|
|
203
|
+
visited.add(idx);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// BFS propagation
|
|
207
|
+
while (queue.length > 0) {
|
|
208
|
+
const current = queue.shift();
|
|
209
|
+
if (!current || current.depth >= depth)
|
|
210
|
+
continue;
|
|
211
|
+
for (const neighbor of adj[current.node] ?? []) {
|
|
212
|
+
const newScore = current.score * 0.7; // Decay factor
|
|
213
|
+
const neighborScore = scores[neighbor];
|
|
214
|
+
if (neighborScore !== undefined && newScore > neighborScore) {
|
|
215
|
+
scores[neighbor] = newScore;
|
|
216
|
+
}
|
|
217
|
+
if (!visited.has(neighbor)) {
|
|
218
|
+
visited.add(neighbor);
|
|
219
|
+
queue.push({
|
|
220
|
+
node: neighbor,
|
|
221
|
+
depth: current.depth + 1,
|
|
222
|
+
score: newScore,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Convert to map
|
|
228
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
229
|
+
const node = graph.nodes[i];
|
|
230
|
+
const score = scores[i];
|
|
231
|
+
if (node && score !== undefined && score > 0) {
|
|
232
|
+
impact.set(node.id, score);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return impact;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Detect communities in code graph
|
|
239
|
+
*/
|
|
240
|
+
async detectCommunities(graph) {
|
|
241
|
+
if (!this.initialized) {
|
|
242
|
+
await this.initialize();
|
|
243
|
+
}
|
|
244
|
+
const communities = new Map();
|
|
245
|
+
const nodeCount = graph.nodes.length;
|
|
246
|
+
if (nodeCount === 0) {
|
|
247
|
+
return communities;
|
|
248
|
+
}
|
|
249
|
+
// Create node lookup
|
|
250
|
+
const nodeMap = new Map();
|
|
251
|
+
graph.nodes.forEach((node, index) => {
|
|
252
|
+
nodeMap.set(node.id, index);
|
|
253
|
+
});
|
|
254
|
+
// Build adjacency list (undirected)
|
|
255
|
+
const adj = Array.from({ length: nodeCount }, () => new Set());
|
|
256
|
+
for (const edge of graph.edges) {
|
|
257
|
+
const fromIdx = nodeMap.get(edge.from);
|
|
258
|
+
const toIdx = nodeMap.get(edge.to);
|
|
259
|
+
if (fromIdx !== undefined && toIdx !== undefined) {
|
|
260
|
+
adj[fromIdx]?.add(toIdx);
|
|
261
|
+
adj[toIdx]?.add(fromIdx);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Simple community detection using connected components
|
|
265
|
+
// In production, would use Louvain or similar
|
|
266
|
+
const community = new Array(nodeCount).fill(-1);
|
|
267
|
+
let communityId = 0;
|
|
268
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
269
|
+
if (community[i] !== -1)
|
|
270
|
+
continue;
|
|
271
|
+
// BFS to find connected component
|
|
272
|
+
const queue = [i];
|
|
273
|
+
community[i] = communityId;
|
|
274
|
+
while (queue.length > 0) {
|
|
275
|
+
const current = queue.shift();
|
|
276
|
+
for (const neighbor of adj[current] ?? []) {
|
|
277
|
+
if (community[neighbor] === -1) {
|
|
278
|
+
community[neighbor] = communityId;
|
|
279
|
+
queue.push(neighbor);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
communityId++;
|
|
284
|
+
}
|
|
285
|
+
// Convert to map
|
|
286
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
287
|
+
const node = graph.nodes[i];
|
|
288
|
+
const comm = community[i];
|
|
289
|
+
if (node && comm !== undefined) {
|
|
290
|
+
communities.set(node.id, comm);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return communities;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Find similar code patterns
|
|
297
|
+
*/
|
|
298
|
+
async findSimilarPatterns(graph, patternGraph, threshold) {
|
|
299
|
+
if (!this.initialized) {
|
|
300
|
+
await this.initialize();
|
|
301
|
+
}
|
|
302
|
+
const matches = [];
|
|
303
|
+
// Compute embeddings for both graphs
|
|
304
|
+
const graphEmbeddings = await this.computeNodeEmbeddings(graph, this.embeddingDim);
|
|
305
|
+
const patternEmbeddings = await this.computeNodeEmbeddings(patternGraph, this.embeddingDim);
|
|
306
|
+
// Average pattern embedding
|
|
307
|
+
const patternAvg = new Float32Array(this.embeddingDim);
|
|
308
|
+
let patternCount = 0;
|
|
309
|
+
for (const [, embedding] of patternEmbeddings) {
|
|
310
|
+
for (let i = 0; i < this.embeddingDim; i++) {
|
|
311
|
+
patternAvg[i] = (patternAvg[i] ?? 0) + (embedding[i] ?? 0);
|
|
312
|
+
}
|
|
313
|
+
patternCount++;
|
|
314
|
+
}
|
|
315
|
+
if (patternCount > 0) {
|
|
316
|
+
for (let i = 0; i < this.embeddingDim; i++) {
|
|
317
|
+
patternAvg[i] = (patternAvg[i] ?? 0) / patternCount;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Find similar nodes in main graph
|
|
321
|
+
for (const [nodeId, embedding] of graphEmbeddings) {
|
|
322
|
+
const similarity = this.cosineSimilarity(embedding, patternAvg);
|
|
323
|
+
if (similarity >= threshold) {
|
|
324
|
+
matches.push({ matchId: nodeId, score: similarity });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Sort by score descending
|
|
328
|
+
matches.sort((a, b) => b.score - a.score);
|
|
329
|
+
return matches;
|
|
330
|
+
}
|
|
331
|
+
// ============================================================================
|
|
332
|
+
// Private Helper Methods
|
|
333
|
+
// ============================================================================
|
|
334
|
+
/**
|
|
335
|
+
* Load WASM module dynamically
|
|
336
|
+
*/
|
|
337
|
+
async loadWasmModule() {
|
|
338
|
+
throw new Error('WASM module loading not implemented');
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Detect language from file extension
|
|
342
|
+
*/
|
|
343
|
+
detectLanguage(filePath) {
|
|
344
|
+
const ext = filePath.split('.').pop()?.toLowerCase();
|
|
345
|
+
const langMap = {
|
|
346
|
+
ts: 'typescript',
|
|
347
|
+
tsx: 'typescript',
|
|
348
|
+
js: 'javascript',
|
|
349
|
+
jsx: 'javascript',
|
|
350
|
+
py: 'python',
|
|
351
|
+
java: 'java',
|
|
352
|
+
go: 'go',
|
|
353
|
+
rs: 'rust',
|
|
354
|
+
cpp: 'cpp',
|
|
355
|
+
c: 'cpp',
|
|
356
|
+
cs: 'csharp',
|
|
357
|
+
rb: 'ruby',
|
|
358
|
+
php: 'php',
|
|
359
|
+
swift: 'swift',
|
|
360
|
+
kt: 'kotlin',
|
|
361
|
+
scala: 'scala',
|
|
362
|
+
};
|
|
363
|
+
return ext ? langMap[ext] : undefined;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Extract imports from file (simplified)
|
|
367
|
+
*/
|
|
368
|
+
async extractImports(_file, _allFiles) {
|
|
369
|
+
// In production, would parse AST
|
|
370
|
+
// For now, return empty array
|
|
371
|
+
return [];
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Calculate max depth of dependency graph
|
|
375
|
+
*/
|
|
376
|
+
calculateMaxDepth(nodes, edges) {
|
|
377
|
+
if (nodes.length === 0)
|
|
378
|
+
return 0;
|
|
379
|
+
// Build adjacency list
|
|
380
|
+
const adj = new Map();
|
|
381
|
+
for (const node of nodes) {
|
|
382
|
+
adj.set(node.id, []);
|
|
383
|
+
}
|
|
384
|
+
for (const edge of edges) {
|
|
385
|
+
adj.get(edge.from)?.push(edge.to);
|
|
386
|
+
}
|
|
387
|
+
// Find nodes with no incoming edges (roots)
|
|
388
|
+
const hasIncoming = new Set();
|
|
389
|
+
for (const edge of edges) {
|
|
390
|
+
hasIncoming.add(edge.to);
|
|
391
|
+
}
|
|
392
|
+
const roots = nodes.filter(n => !hasIncoming.has(n.id)).map(n => n.id);
|
|
393
|
+
if (roots.length === 0) {
|
|
394
|
+
// Cycle - use first node
|
|
395
|
+
roots.push(nodes[0].id);
|
|
396
|
+
}
|
|
397
|
+
// BFS to find max depth
|
|
398
|
+
let maxDepth = 0;
|
|
399
|
+
const visited = new Set();
|
|
400
|
+
const queue = [];
|
|
401
|
+
for (const root of roots) {
|
|
402
|
+
queue.push({ node: root, depth: 0 });
|
|
403
|
+
visited.add(root);
|
|
404
|
+
}
|
|
405
|
+
while (queue.length > 0) {
|
|
406
|
+
const current = queue.shift();
|
|
407
|
+
maxDepth = Math.max(maxDepth, current.depth);
|
|
408
|
+
for (const neighbor of adj.get(current.node) ?? []) {
|
|
409
|
+
if (!visited.has(neighbor)) {
|
|
410
|
+
visited.add(neighbor);
|
|
411
|
+
queue.push({ node: neighbor, depth: current.depth + 1 });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return maxDepth;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Encode node type as number
|
|
419
|
+
*/
|
|
420
|
+
encodeNodeType(type) {
|
|
421
|
+
const types = {
|
|
422
|
+
file: 0.1,
|
|
423
|
+
module: 0.2,
|
|
424
|
+
package: 0.3,
|
|
425
|
+
class: 0.4,
|
|
426
|
+
function: 0.5,
|
|
427
|
+
};
|
|
428
|
+
return types[type];
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Encode language as number
|
|
432
|
+
*/
|
|
433
|
+
encodeLanguage(language) {
|
|
434
|
+
const languages = {
|
|
435
|
+
typescript: 0.1,
|
|
436
|
+
javascript: 0.15,
|
|
437
|
+
python: 0.2,
|
|
438
|
+
java: 0.25,
|
|
439
|
+
go: 0.3,
|
|
440
|
+
rust: 0.35,
|
|
441
|
+
cpp: 0.4,
|
|
442
|
+
csharp: 0.45,
|
|
443
|
+
ruby: 0.5,
|
|
444
|
+
php: 0.55,
|
|
445
|
+
};
|
|
446
|
+
return languages[language] ?? 0;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Compute embeddings using JS (fallback)
|
|
450
|
+
*/
|
|
451
|
+
computeEmbeddingsJS(graph, features, featureDim, outputDim) {
|
|
452
|
+
const nodeCount = graph.nodes.length;
|
|
453
|
+
const embeddings = new Float32Array(nodeCount * outputDim);
|
|
454
|
+
// Create adjacency matrix
|
|
455
|
+
const nodeMap = new Map();
|
|
456
|
+
graph.nodes.forEach((node, index) => {
|
|
457
|
+
nodeMap.set(node.id, index);
|
|
458
|
+
});
|
|
459
|
+
// Simple message passing (1 layer)
|
|
460
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
461
|
+
const node = graph.nodes[i];
|
|
462
|
+
if (!node)
|
|
463
|
+
continue;
|
|
464
|
+
// Aggregate neighbor features
|
|
465
|
+
const neighbors = graph.edges
|
|
466
|
+
.filter(e => e.to === node.id)
|
|
467
|
+
.map(e => nodeMap.get(e.from))
|
|
468
|
+
.filter((idx) => idx !== undefined);
|
|
469
|
+
// Initialize with own features (projected to output dim)
|
|
470
|
+
for (let j = 0; j < outputDim; j++) {
|
|
471
|
+
const featureIdx = j % featureDim;
|
|
472
|
+
embeddings[i * outputDim + j] = features[i * featureDim + featureIdx] ?? 0;
|
|
473
|
+
}
|
|
474
|
+
// Add neighbor contributions
|
|
475
|
+
if (neighbors.length > 0) {
|
|
476
|
+
for (const neighborIdx of neighbors) {
|
|
477
|
+
for (let j = 0; j < outputDim; j++) {
|
|
478
|
+
const featureIdx = j % featureDim;
|
|
479
|
+
const contribution = (features[neighborIdx * featureDim + featureIdx] ?? 0) / neighbors.length;
|
|
480
|
+
const embIdx = i * outputDim + j;
|
|
481
|
+
embeddings[embIdx] = (embeddings[embIdx] ?? 0) + contribution * 0.5;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
// Normalize embeddings
|
|
487
|
+
for (let i = 0; i < nodeCount; i++) {
|
|
488
|
+
let norm = 0;
|
|
489
|
+
for (let j = 0; j < outputDim; j++) {
|
|
490
|
+
const val = embeddings[i * outputDim + j] ?? 0;
|
|
491
|
+
norm += val * val;
|
|
492
|
+
}
|
|
493
|
+
norm = Math.sqrt(norm);
|
|
494
|
+
if (norm > 0) {
|
|
495
|
+
for (let j = 0; j < outputDim; j++) {
|
|
496
|
+
embeddings[i * outputDim + j] = (embeddings[i * outputDim + j] ?? 0) / norm;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return embeddings;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Compute cosine similarity
|
|
504
|
+
*/
|
|
505
|
+
cosineSimilarity(a, b) {
|
|
506
|
+
let dot = 0;
|
|
507
|
+
let normA = 0;
|
|
508
|
+
let normB = 0;
|
|
509
|
+
for (let i = 0; i < a.length; i++) {
|
|
510
|
+
const aVal = a[i] ?? 0;
|
|
511
|
+
const bVal = b[i] ?? 0;
|
|
512
|
+
dot += aVal * bVal;
|
|
513
|
+
normA += aVal * aVal;
|
|
514
|
+
normB += bVal * bVal;
|
|
515
|
+
}
|
|
516
|
+
const denominator = Math.sqrt(normA) * Math.sqrt(normB);
|
|
517
|
+
return denominator > 0 ? dot / denominator : 0;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Create and export default bridge instance
|
|
522
|
+
*/
|
|
523
|
+
export function createGNNBridge(embeddingDim = 128) {
|
|
524
|
+
return new GNNBridge(embeddingDim);
|
|
525
|
+
}
|
|
526
|
+
export default GNNBridge;
|
|
527
|
+
//# sourceMappingURL=gnn-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gnn-bridge.js","sourceRoot":"","sources":["../../src/bridges/gnn-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Intelligence Plugin - Bridges Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module @claude-flow/plugin-code-intelligence/bridges
|
|
5
|
+
*/
|
|
6
|
+
export { GNNBridge, createGNNBridge, } from './gnn-bridge.js';
|
|
7
|
+
export { MinCutBridge, createMinCutBridge, } from './mincut-bridge.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Intelligence Plugin - Bridges Barrel Export
|
|
3
|
+
*
|
|
4
|
+
* @module @claude-flow/plugin-code-intelligence/bridges
|
|
5
|
+
*/
|
|
6
|
+
export { GNNBridge, createGNNBridge, } from './gnn-bridge.js';
|
|
7
|
+
export { MinCutBridge, createMinCutBridge, } from './mincut-bridge.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridges/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,SAAS,EACT,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MinCut Bridge for Module Splitting
|
|
3
|
+
*
|
|
4
|
+
* Provides graph min-cut operations for optimal module boundary detection
|
|
5
|
+
* using ruvector-mincut-wasm for high-performance graph partitioning.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Optimal module boundary detection
|
|
9
|
+
* - Multi-way graph partitioning
|
|
10
|
+
* - Constraint-aware splitting
|
|
11
|
+
* - Cut weight optimization
|
|
12
|
+
*
|
|
13
|
+
* Based on ADR-035: Advanced Code Intelligence Plugin
|
|
14
|
+
*
|
|
15
|
+
* @module v3/plugins/code-intelligence/bridges/mincut-bridge
|
|
16
|
+
*/
|
|
17
|
+
import type { IMinCutBridge, DependencyGraph, SplitConstraints } from '../types.js';
|
|
18
|
+
/**
|
|
19
|
+
* MinCut Bridge Implementation
|
|
20
|
+
*/
|
|
21
|
+
export declare class MinCutBridge implements IMinCutBridge {
|
|
22
|
+
private wasmModule;
|
|
23
|
+
private initialized;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the WASM module
|
|
26
|
+
*/
|
|
27
|
+
initialize(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Check if initialized
|
|
30
|
+
*/
|
|
31
|
+
isInitialized(): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Find optimal module boundaries using MinCut
|
|
34
|
+
*/
|
|
35
|
+
findOptimalCuts(graph: DependencyGraph, numModules: number, constraints: SplitConstraints): Promise<Map<string, number>>;
|
|
36
|
+
/**
|
|
37
|
+
* Calculate cut weight for a given partition
|
|
38
|
+
*/
|
|
39
|
+
calculateCutWeight(graph: DependencyGraph, partition: Map<string, number>): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Find minimum s-t cut
|
|
42
|
+
*/
|
|
43
|
+
minSTCut(graph: DependencyGraph, source: string, sink: string): Promise<{
|
|
44
|
+
cutValue: number;
|
|
45
|
+
cutEdges: Array<{
|
|
46
|
+
from: string;
|
|
47
|
+
to: string;
|
|
48
|
+
}>;
|
|
49
|
+
sourceSet: string[];
|
|
50
|
+
sinkSet: string[];
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Multi-way cut for module splitting
|
|
54
|
+
*/
|
|
55
|
+
multiWayCut(graph: DependencyGraph, terminals: string[], _weights: Map<string, number>): Promise<{
|
|
56
|
+
cutValue: number;
|
|
57
|
+
partitions: Map<string, number>;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Load WASM module dynamically
|
|
61
|
+
*/
|
|
62
|
+
private loadWasmModule;
|
|
63
|
+
/**
|
|
64
|
+
* Spectral partitioning using Fiedler vector
|
|
65
|
+
*/
|
|
66
|
+
private spectralPartition;
|
|
67
|
+
/**
|
|
68
|
+
* Edmonds-Karp algorithm (Ford-Fulkerson with BFS)
|
|
69
|
+
*/
|
|
70
|
+
private edmondsKarp;
|
|
71
|
+
/**
|
|
72
|
+
* Compute distances from terminals to all nodes
|
|
73
|
+
*/
|
|
74
|
+
private computeDistances;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create and export default bridge instance
|
|
78
|
+
*/
|
|
79
|
+
export declare function createMinCutBridge(): IMinCutBridge;
|
|
80
|
+
export default MinCutBridge;
|
|
81
|
+
//# sourceMappingURL=mincut-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mincut-bridge.d.ts","sourceRoot":"","sources":["../../src/bridges/mincut-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,aAAa,CAAC;AA4CrB;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IAEhD,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAuF/B;;OAEG;IACG,kBAAkB,CACtB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IAmBlB;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IA6FF;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;IAmEF;;OAEG;YACW,cAAc;IAI5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkGzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyEnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAwDzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AAED,eAAe,YAAY,CAAC"}
|