@claude-flow/cli 3.0.0-alpha.14 → 3.0.0-alpha.16

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 (66) hide show
  1. package/dist/src/commands/analyze.d.ts +19 -0
  2. package/dist/src/commands/analyze.d.ts.map +1 -0
  3. package/dist/src/commands/analyze.js +1819 -0
  4. package/dist/src/commands/analyze.js.map +1 -0
  5. package/dist/src/commands/doctor.d.ts.map +1 -1
  6. package/dist/src/commands/doctor.js +75 -2
  7. package/dist/src/commands/doctor.js.map +1 -1
  8. package/dist/src/commands/hooks.d.ts.map +1 -1
  9. package/dist/src/commands/hooks.js +325 -1
  10. package/dist/src/commands/hooks.js.map +1 -1
  11. package/dist/src/commands/index.d.ts +2 -0
  12. package/dist/src/commands/index.d.ts.map +1 -1
  13. package/dist/src/commands/index.js +12 -0
  14. package/dist/src/commands/index.js.map +1 -1
  15. package/dist/src/commands/route.d.ts +16 -0
  16. package/dist/src/commands/route.d.ts.map +1 -0
  17. package/dist/src/commands/route.js +597 -0
  18. package/dist/src/commands/route.js.map +1 -0
  19. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  20. package/dist/src/init/claudemd-generator.js +218 -362
  21. package/dist/src/init/claudemd-generator.js.map +1 -1
  22. package/dist/src/mcp-client.d.ts.map +1 -1
  23. package/dist/src/mcp-client.js +2 -0
  24. package/dist/src/mcp-client.js.map +1 -1
  25. package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
  26. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -0
  27. package/dist/src/mcp-tools/analyze-tools.js +317 -0
  28. package/dist/src/mcp-tools/analyze-tools.js.map +1 -0
  29. package/dist/src/mcp-tools/index.d.ts +2 -0
  30. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  31. package/dist/src/mcp-tools/index.js +2 -0
  32. package/dist/src/mcp-tools/index.js.map +1 -1
  33. package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  34. package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
  35. package/dist/src/ruvector/ast-analyzer.js +277 -0
  36. package/dist/src/ruvector/ast-analyzer.js.map +1 -0
  37. package/dist/src/ruvector/coverage-router.d.ts +145 -0
  38. package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
  39. package/dist/src/ruvector/coverage-router.js +451 -0
  40. package/dist/src/ruvector/coverage-router.js.map +1 -0
  41. package/dist/src/ruvector/coverage-tools.d.ts +33 -0
  42. package/dist/src/ruvector/coverage-tools.d.ts.map +1 -0
  43. package/dist/src/ruvector/coverage-tools.js +157 -0
  44. package/dist/src/ruvector/coverage-tools.js.map +1 -0
  45. package/dist/src/ruvector/diff-classifier.d.ts +154 -0
  46. package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
  47. package/dist/src/ruvector/diff-classifier.js +508 -0
  48. package/dist/src/ruvector/diff-classifier.js.map +1 -0
  49. package/dist/src/ruvector/graph-analyzer.d.ts +174 -0
  50. package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
  51. package/dist/src/ruvector/graph-analyzer.js +878 -0
  52. package/dist/src/ruvector/graph-analyzer.js.map +1 -0
  53. package/dist/src/ruvector/index.d.ts +27 -0
  54. package/dist/src/ruvector/index.d.ts.map +1 -0
  55. package/dist/src/ruvector/index.js +47 -0
  56. package/dist/src/ruvector/index.js.map +1 -0
  57. package/dist/src/ruvector/q-learning-router.d.ts +211 -0
  58. package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
  59. package/dist/src/ruvector/q-learning-router.js +681 -0
  60. package/dist/src/ruvector/q-learning-router.js.map +1 -0
  61. package/dist/src/ruvector/vector-db.d.ts +69 -0
  62. package/dist/src/ruvector/vector-db.d.ts.map +1 -0
  63. package/dist/src/ruvector/vector-db.js +243 -0
  64. package/dist/src/ruvector/vector-db.js.map +1 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -1
  66. package/package.json +13 -1
@@ -0,0 +1,277 @@
1
+ /**
2
+ * AST Analyzer for Code Analysis
3
+ *
4
+ * Analyzes Abstract Syntax Trees for code understanding
5
+ * and intelligent routing decisions.
6
+ *
7
+ * @module ast-analyzer
8
+ */
9
+ const DEFAULT_CONFIG = {
10
+ maxFileSize: 1024 * 1024,
11
+ languages: ['typescript', 'javascript', 'python', 'rust', 'go'],
12
+ includeComments: true,
13
+ extractTypes: true,
14
+ maxDepth: 20,
15
+ };
16
+ const LANGUAGE_PATTERNS = {
17
+ typescript: [/\.tsx?$/, /^import\s+.*from\s+['"]/, /:\s*(string|number|boolean|void)/],
18
+ javascript: [/\.jsx?$/, /^(const|let|var)\s+\w+\s*=/, /module\.exports/],
19
+ python: [/\.py$/, /^(def|class|import|from)\s+/, /^#!/],
20
+ rust: [/\.rs$/, /^(fn|struct|impl|use)\s+/, /^(pub\s+)?mod\s+/],
21
+ go: [/\.go$/, /^package\s+/, /^func\s+/],
22
+ };
23
+ export class ASTAnalyzer {
24
+ config;
25
+ ruvectorEngine = null;
26
+ useNative = false;
27
+ analysisCache = new Map();
28
+ constructor(config = {}) {
29
+ this.config = { ...DEFAULT_CONFIG, ...config };
30
+ }
31
+ async initialize() {
32
+ try {
33
+ // @ruvector/ast is optional - gracefully fallback if not installed
34
+ const ruvector = await import('@ruvector/ast').catch(() => null);
35
+ if (ruvector) {
36
+ this.ruvectorEngine = ruvector.createASTAnalyzer?.(this.config);
37
+ this.useNative = !!this.ruvectorEngine;
38
+ }
39
+ }
40
+ catch {
41
+ this.useNative = false;
42
+ }
43
+ }
44
+ analyze(code, filePath = 'unknown') {
45
+ const startTime = performance.now();
46
+ if (code.length > this.config.maxFileSize) {
47
+ throw new Error(`File too large: ${code.length} bytes exceeds ${this.config.maxFileSize}`);
48
+ }
49
+ const cacheKey = this.getCacheKey(code, filePath);
50
+ const cached = this.analysisCache.get(cacheKey);
51
+ if (cached)
52
+ return cached;
53
+ const language = this.detectLanguage(code, filePath);
54
+ const root = this.parseAST(code, language);
55
+ const functions = this.extractFunctions(root);
56
+ const classes = this.extractClasses(root);
57
+ const imports = this.extractImports(code, language);
58
+ const exports = this.extractExports(code, language);
59
+ const complexity = this.calculateComplexity(code, root);
60
+ const durationMs = performance.now() - startTime;
61
+ const analysis = {
62
+ filePath, language, root, functions, classes, imports, exports,
63
+ complexity, timestamp: Date.now(), durationMs,
64
+ };
65
+ this.analysisCache.set(cacheKey, analysis);
66
+ return analysis;
67
+ }
68
+ getFunctionAtLine(analysis, line) {
69
+ for (const func of analysis.functions) {
70
+ if (line >= func.startLine && line <= func.endLine)
71
+ return func;
72
+ }
73
+ return null;
74
+ }
75
+ getClassAtLine(analysis, line) {
76
+ for (const cls of analysis.classes) {
77
+ if (line >= cls.startLine && line <= cls.endLine)
78
+ return cls;
79
+ }
80
+ return null;
81
+ }
82
+ getSymbols(analysis) {
83
+ const symbols = [];
84
+ for (const func of analysis.functions)
85
+ symbols.push(func.name);
86
+ for (const cls of analysis.classes)
87
+ symbols.push(cls.name);
88
+ return symbols;
89
+ }
90
+ getStats() {
91
+ return { cacheSize: this.analysisCache.size, useNative: this.useNative ? 1 : 0 };
92
+ }
93
+ clearCache() { this.analysisCache.clear(); }
94
+ getCacheKey(code, filePath) {
95
+ let hash = 0;
96
+ const str = filePath + code.substring(0, 1000);
97
+ for (let i = 0; i < str.length; i++) {
98
+ const char = str.charCodeAt(i);
99
+ hash = ((hash << 5) - hash) + char;
100
+ hash = hash & hash;
101
+ }
102
+ return `ast_${hash}_${code.length}`;
103
+ }
104
+ detectLanguage(code, filePath) {
105
+ for (const [lang, patterns] of Object.entries(LANGUAGE_PATTERNS)) {
106
+ for (const pattern of patterns) {
107
+ if (pattern.test(filePath) || pattern.test(code))
108
+ return lang;
109
+ }
110
+ }
111
+ return 'unknown';
112
+ }
113
+ parseAST(code, language) {
114
+ const lines = code.split('\n');
115
+ const root = { type: 'program', name: 'root', startLine: 1, endLine: lines.length, children: [] };
116
+ for (let i = 0; i < lines.length; i++) {
117
+ const line = lines[i];
118
+ const lineNum = i + 1;
119
+ const funcMatch = this.matchFunction(line, language);
120
+ if (funcMatch) {
121
+ const funcNode = {
122
+ type: 'function', name: funcMatch.name, startLine: lineNum,
123
+ endLine: lineNum + this.findBlockEnd(lines, i), children: [],
124
+ metadata: { params: funcMatch.params },
125
+ };
126
+ root.children.push(funcNode);
127
+ continue;
128
+ }
129
+ const classMatch = this.matchClass(line, language);
130
+ if (classMatch) {
131
+ const classNode = {
132
+ type: 'class', name: classMatch.name, startLine: lineNum,
133
+ endLine: lineNum + this.findBlockEnd(lines, i), children: [],
134
+ metadata: { extends: classMatch.extends },
135
+ };
136
+ root.children.push(classNode);
137
+ }
138
+ }
139
+ return root;
140
+ }
141
+ matchFunction(line, language) {
142
+ const patterns = {
143
+ typescript: /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/,
144
+ javascript: /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/,
145
+ python: /def\s+(\w+)\s*\(([^)]*)\)/,
146
+ rust: /(?:pub\s+)?(?:async\s+)?fn\s+(\w+)\s*\(([^)]*)\)/,
147
+ go: /func\s+(?:\([^)]*\)\s+)?(\w+)\s*\(([^)]*)\)/,
148
+ };
149
+ const pattern = patterns[language];
150
+ if (!pattern)
151
+ return null;
152
+ const match = line.match(pattern);
153
+ if (match)
154
+ return { name: match[1], params: match[2] || '' };
155
+ const arrowMatch = line.match(/(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s+)?\([^)]*\)\s*=>/);
156
+ if (arrowMatch)
157
+ return { name: arrowMatch[1], params: '' };
158
+ const methodMatch = line.match(/^\s*(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+)?\s*\{/);
159
+ if (methodMatch && methodMatch[1] !== 'if' && methodMatch[1] !== 'while' && methodMatch[1] !== 'for') {
160
+ return { name: methodMatch[1], params: '' };
161
+ }
162
+ return null;
163
+ }
164
+ matchClass(line, language) {
165
+ const patterns = {
166
+ typescript: /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/,
167
+ javascript: /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/,
168
+ python: /class\s+(\w+)(?:\((\w+)\))?/,
169
+ rust: /(?:pub\s+)?struct\s+(\w+)/,
170
+ go: /type\s+(\w+)\s+struct/,
171
+ };
172
+ const pattern = patterns[language];
173
+ if (!pattern)
174
+ return null;
175
+ const match = line.match(pattern);
176
+ if (match)
177
+ return { name: match[1], extends: match[2] };
178
+ return null;
179
+ }
180
+ findBlockEnd(lines, startIdx) {
181
+ let depth = 0;
182
+ let inBlock = false;
183
+ for (let i = startIdx; i < lines.length; i++) {
184
+ const line = lines[i];
185
+ const opens = (line.match(/[\{]/g) || []).length;
186
+ const closes = (line.match(/[\}]/g) || []).length;
187
+ if (opens > 0)
188
+ inBlock = true;
189
+ depth += opens - closes;
190
+ if (inBlock && depth <= 0)
191
+ return i - startIdx;
192
+ }
193
+ return Math.min(50, lines.length - startIdx);
194
+ }
195
+ extractFunctions(root) {
196
+ const functions = [];
197
+ const visit = (node) => {
198
+ if (node.type === 'function')
199
+ functions.push(node);
200
+ for (const child of node.children)
201
+ visit(child);
202
+ };
203
+ visit(root);
204
+ return functions;
205
+ }
206
+ extractClasses(root) {
207
+ const classes = [];
208
+ const visit = (node) => {
209
+ if (node.type === 'class')
210
+ classes.push(node);
211
+ for (const child of node.children)
212
+ visit(child);
213
+ };
214
+ visit(root);
215
+ return classes;
216
+ }
217
+ extractImports(code, language) {
218
+ const imports = [];
219
+ const lines = code.split('\n');
220
+ const patterns = {
221
+ typescript: /import\s+(?:.*\s+from\s+)?['"]([^'"]+)['"]/,
222
+ javascript: /(?:import\s+.*from\s+|require\s*\(\s*)['"]([^'"]+)['"]/,
223
+ python: /(?:from\s+(\S+)\s+import|import\s+(\S+))/,
224
+ rust: /use\s+(\S+)/,
225
+ go: /import\s+(?:\(\s*)?["']([^"']+)["']/,
226
+ };
227
+ const pattern = patterns[language];
228
+ if (!pattern)
229
+ return imports;
230
+ for (const line of lines) {
231
+ const match = line.match(pattern);
232
+ if (match)
233
+ imports.push(match[1] || match[2]);
234
+ }
235
+ return imports;
236
+ }
237
+ extractExports(code, language) {
238
+ const exports = [];
239
+ const lines = code.split('\n');
240
+ for (const line of lines) {
241
+ const exportMatch = line.match(/export\s+(?:default\s+)?(?:const|let|var|function|class|interface|type|enum)\s+(\w+)/);
242
+ if (exportMatch)
243
+ exports.push(exportMatch[1]);
244
+ const namedExportMatch = line.match(/export\s*\{\s*([^}]+)\s*\}/);
245
+ if (namedExportMatch) {
246
+ const names = namedExportMatch[1].split(',').map(n => n.trim().split(/\s+as\s+/)[0]);
247
+ exports.push(...names);
248
+ }
249
+ }
250
+ return exports;
251
+ }
252
+ calculateComplexity(code, root) {
253
+ const lines = code.split('\n');
254
+ const nonEmptyLines = lines.filter(l => l.trim().length > 0);
255
+ const commentLines = lines.filter(l => /^\s*(\/\/|\/\*|\*|#)/.test(l));
256
+ const decisionPoints = (code.match(/\b(if|else|for|while|switch|case|catch|&&|\|\||\?)\b/g) || []).length;
257
+ const cyclomatic = decisionPoints + 1;
258
+ let cognitive = 0;
259
+ let nestingLevel = 0;
260
+ for (const line of lines) {
261
+ const opens = (line.match(/[\{]/g) || []).length;
262
+ const closes = (line.match(/[\}]/g) || []).length;
263
+ if (/\b(if|for|while|switch)\b/.test(line))
264
+ cognitive += 1 + nestingLevel;
265
+ nestingLevel += opens - closes;
266
+ nestingLevel = Math.max(0, nestingLevel);
267
+ }
268
+ return {
269
+ cyclomatic, cognitive, loc: nonEmptyLines.length,
270
+ commentDensity: lines.length > 0 ? commentLines.length / lines.length : 0,
271
+ };
272
+ }
273
+ }
274
+ export function createASTAnalyzer(config) {
275
+ return new ASTAnalyzer(config);
276
+ }
277
+ //# sourceMappingURL=ast-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../../src/ruvector/ast-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Coverage Router for Test Routing
3
+ */
4
+ export interface CoverageRouterConfig {
5
+ minCoverage: number;
6
+ targetCoverage: number;
7
+ incremental: boolean;
8
+ coverageTypes: ('line' | 'branch' | 'function' | 'statement')[];
9
+ }
10
+ export interface FileCoverage {
11
+ path: string;
12
+ lineCoverage: number;
13
+ branchCoverage: number;
14
+ functionCoverage: number;
15
+ statementCoverage: number;
16
+ uncoveredLines: number[];
17
+ totalLines: number;
18
+ coveredLines: number;
19
+ }
20
+ export interface CoverageReport {
21
+ overall: number;
22
+ byType: {
23
+ line: number;
24
+ branch: number;
25
+ function: number;
26
+ statement: number;
27
+ };
28
+ byFile: FileCoverage[];
29
+ lowestCoverage: FileCoverage[];
30
+ highestCoverage: FileCoverage[];
31
+ uncoveredCritical: string[];
32
+ timestamp: number;
33
+ }
34
+ export interface CoverageRouteResult {
35
+ action: 'add-tests' | 'review-coverage' | 'skip' | 'prioritize';
36
+ priority: number;
37
+ targetFiles: string[];
38
+ testTypes: ('unit' | 'integration' | 'e2e')[];
39
+ gaps: Array<{
40
+ file: string;
41
+ currentCoverage: number;
42
+ targetCoverage: number;
43
+ gap: number;
44
+ suggestedTests: string[];
45
+ }>;
46
+ estimatedEffort: number;
47
+ impactScore: number;
48
+ }
49
+ export declare class CoverageRouter {
50
+ private config;
51
+ private ruvectorEngine;
52
+ private useNative;
53
+ private coverageHistory;
54
+ constructor(config?: Partial<CoverageRouterConfig>);
55
+ initialize(): Promise<void>;
56
+ parseCoverage(data: unknown, format?: 'lcov' | 'istanbul' | 'cobertura' | 'json'): CoverageReport;
57
+ route(coverage: CoverageReport, changedFiles?: string[]): CoverageRouteResult;
58
+ getTrend(): {
59
+ direction: 'up' | 'down' | 'stable';
60
+ change: number;
61
+ };
62
+ addToHistory(report: CoverageReport): void;
63
+ getStats(): Record<string, number | boolean>;
64
+ private parseLcov;
65
+ private parseIstanbul;
66
+ private parseCobertura;
67
+ private parseJson;
68
+ private finalizeFileCoverage;
69
+ private buildReport;
70
+ private findCriticalUncovered;
71
+ private calculateGaps;
72
+ private suggestTests;
73
+ private prioritizeFiles;
74
+ private determineAction;
75
+ private calculatePriority;
76
+ private recommendTestTypes;
77
+ private estimateEffort;
78
+ private calculateImpact;
79
+ }
80
+ export declare function createCoverageRouter(config?: Partial<CoverageRouterConfig>): CoverageRouter;
81
+ /**
82
+ * Coverage suggestion result
83
+ */
84
+ export interface CoverageSuggestResult {
85
+ path: string;
86
+ suggestions: Array<{
87
+ file: string;
88
+ currentCoverage: number;
89
+ targetCoverage: number;
90
+ gap: number;
91
+ priority: number;
92
+ suggestedTests: string[];
93
+ }>;
94
+ totalGap: number;
95
+ estimatedEffort: number;
96
+ }
97
+ /**
98
+ * Coverage gaps result
99
+ */
100
+ export interface CoverageGapsResult {
101
+ totalGaps: number;
102
+ gaps: Array<{
103
+ file: string;
104
+ currentCoverage: number;
105
+ targetCoverage: number;
106
+ gap: number;
107
+ priority: number;
108
+ suggestedAgent: string;
109
+ }>;
110
+ byAgent: Record<string, string[]>;
111
+ summary: string;
112
+ }
113
+ /**
114
+ * Coverage route options
115
+ */
116
+ export interface CoverageRouteOptions {
117
+ projectRoot?: string;
118
+ threshold?: number;
119
+ useRuvector?: boolean;
120
+ }
121
+ /**
122
+ * Coverage suggest options
123
+ */
124
+ export interface CoverageSuggestOptions extends CoverageRouteOptions {
125
+ limit?: number;
126
+ }
127
+ /**
128
+ * Coverage gaps options
129
+ */
130
+ export interface CoverageGapsOptions extends CoverageRouteOptions {
131
+ groupByAgent?: boolean;
132
+ }
133
+ /**
134
+ * Route a task based on coverage analysis
135
+ */
136
+ export declare function coverageRoute(task: string, options?: CoverageRouteOptions): Promise<CoverageRouteResult>;
137
+ /**
138
+ * Suggest coverage improvements for a path
139
+ */
140
+ export declare function coverageSuggest(path: string, options?: CoverageSuggestOptions): Promise<CoverageSuggestResult>;
141
+ /**
142
+ * List all coverage gaps with agent assignments
143
+ */
144
+ export declare function coverageGaps(options?: CoverageGapsOptions): Promise<CoverageGapsResult>;
145
+ //# sourceMappingURL=coverage-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage-router.d.ts","sourceRoot":"","sources":["../../../src/ruvector/coverage-router.ts"],"names":[],"mappings":"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"}