cxgrd 0.1.13 → 0.1.15
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/dist/commands/input.d.ts.map +1 -1
- package/dist/commands/input.js +31 -14
- package/dist/commands/input.js.map +1 -1
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +51 -30
- package/dist/graph.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"AAeA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"AAeA,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuH3F"}
|
package/dist/commands/input.js
CHANGED
|
@@ -34,28 +34,48 @@ async function inputCommand(description, projectPath) {
|
|
|
34
34
|
cli_formatter_1.RichOutput.error('No dependency graph found. Run "cxgrd scan" first.');
|
|
35
35
|
process.exit(1);
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
const allFiles = Object.keys(graph.files || {});
|
|
38
|
+
const symbols = await cgDir.readSymbols().catch(() => ({}));
|
|
39
|
+
// Build symbol → file map (lowercase keys for matching)
|
|
40
|
+
const symbolToFile = {};
|
|
41
|
+
for (const [filePath, fileSymbols] of Object.entries(symbols)) {
|
|
42
|
+
for (const sym of fileSymbols) {
|
|
43
|
+
symbolToFile[sym.toLowerCase()] = filePath;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Tokenize description into whole identifiers using regex
|
|
47
|
+
// "renaming _set_session_cookie to set_cookie"
|
|
48
|
+
// → ["renaming", "_set_session_cookie", "to", "set_cookie"]
|
|
49
|
+
const descriptionTokens = new Set(description.toLowerCase().match(/[a-z_][a-z0-9_]*/g) || []);
|
|
50
|
+
// Match only exact symbol tokens — no substring matching
|
|
51
|
+
const symbolMatches = [];
|
|
52
|
+
for (const [sym, filePath] of Object.entries(symbolToFile)) {
|
|
53
|
+
if (descriptionTokens.has(sym)) {
|
|
54
|
+
if (!symbolMatches.includes(filePath)) {
|
|
55
|
+
symbolMatches.push(filePath);
|
|
56
|
+
cli_formatter_1.RichOutput.info(`Symbol match: "${sym}" → ${filePath}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Filename/path matching from description
|
|
38
61
|
const changeDetector = new change_detector_1.ChangeDetector(rootPath);
|
|
39
62
|
const gitChanges = changeDetector.getChangedFiles();
|
|
40
|
-
const descriptionMatch = changeDetector.parseDescription(description,
|
|
41
|
-
// Combine
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
const descriptionMatch = changeDetector.parseDescription(description, allFiles);
|
|
64
|
+
// Combine all sources
|
|
65
|
+
const uniqueFiles = [...new Set([
|
|
66
|
+
...gitChanges.files,
|
|
67
|
+
...descriptionMatch.files,
|
|
68
|
+
...symbolMatches,
|
|
69
|
+
])];
|
|
47
70
|
if (uniqueFiles.length === 0) {
|
|
48
71
|
cli_formatter_1.RichOutput.warning('Could not identify changed files. Using heuristics based on description.');
|
|
49
72
|
}
|
|
50
73
|
else {
|
|
51
74
|
cli_formatter_1.RichOutput.info(`Detected ${uniqueFiles.length} changed file(s)`);
|
|
52
75
|
}
|
|
53
|
-
// Run enhanced blast radius analysis
|
|
54
76
|
const analyzer = new blast_radius_analyzer_1.BlastRadiusAnalyzer(graph);
|
|
55
77
|
const result = analyzer.analyze(uniqueFiles.length > 0 ? uniqueFiles : []);
|
|
56
|
-
// Display results
|
|
57
78
|
displayBlastRadiusResults(result);
|
|
58
|
-
// Save to history
|
|
59
79
|
const history = await cgDir.readHistory();
|
|
60
80
|
history.push({
|
|
61
81
|
timestamp: Date.now(),
|
|
@@ -95,7 +115,6 @@ async function inputCommand(description, projectPath) {
|
|
|
95
115
|
function displayBlastRadiusResults(result) {
|
|
96
116
|
cli_formatter_1.RichOutput.blank();
|
|
97
117
|
cli_formatter_1.RichOutput.section('Impact Summary');
|
|
98
|
-
// Overall risk display
|
|
99
118
|
const riskBadge = cli_formatter_1.CLIFormatter.severity(result.riskLevel);
|
|
100
119
|
console.log(` Overall Risk: ${riskBadge}`);
|
|
101
120
|
console.log(` Risk Score: ${result.totalRisk}/100`);
|
|
@@ -120,7 +139,6 @@ function displayBlastRadiusResults(result) {
|
|
|
120
139
|
console.log(` ... and ${result.affectedFiles.length - 15} more files`);
|
|
121
140
|
}
|
|
122
141
|
}
|
|
123
|
-
// Change types
|
|
124
142
|
if (result.changeTypes.length > 0) {
|
|
125
143
|
cli_formatter_1.RichOutput.blank();
|
|
126
144
|
cli_formatter_1.RichOutput.section('Change Classification');
|
|
@@ -129,7 +147,6 @@ function displayBlastRadiusResults(result) {
|
|
|
129
147
|
console.log(` • ${change.type}: ${change.description} (${confidence}% confident)`);
|
|
130
148
|
}
|
|
131
149
|
}
|
|
132
|
-
// Recommendations
|
|
133
150
|
if (result.recommendations.length > 0) {
|
|
134
151
|
cli_formatter_1.RichOutput.blank();
|
|
135
152
|
cli_formatter_1.RichOutput.section('Recommendations');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/commands/input.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAOX;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAC7D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,KAAK,CAOX;IAEF,OAAO,CAAC,QAAQ,CAuBd;IAEF,OAAO,CAAC,cAAc;IA0DtB,OAAO,CAAC,mBAAmB;IA2B3B,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,eAAe;IA4B9F,QAAQ,IAAI,eAAe;CAG5B"}
|
package/dist/graph.js
CHANGED
|
@@ -10,23 +10,22 @@ class DependencyGraphBuilder {
|
|
|
10
10
|
languages: {},
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
|
-
// Regex patterns for extracting imports/requires
|
|
14
13
|
patterns = {
|
|
15
14
|
typescript: [
|
|
16
|
-
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](
|
|
17
|
-
/import\s+['"](
|
|
18
|
-
/from\s+['"](
|
|
19
|
-
/require\s*\(\s*['"](
|
|
15
|
+
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
16
|
+
/import\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
17
|
+
/from\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
18
|
+
/require\s*\(\s*['"](\.\.\/?[^'"]+|[^/][^'"]*)['"]\s*\)/gm,
|
|
20
19
|
],
|
|
21
20
|
javascript: [
|
|
22
|
-
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](
|
|
23
|
-
/import\s+['"](
|
|
24
|
-
/from\s+['"](
|
|
25
|
-
/require\s*\(\s*['"](
|
|
21
|
+
/import\s+(?:(?:\{[^}]*\}|\*\s+as\s+\w+|\w+)\s+from\s+)?['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
22
|
+
/import\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
23
|
+
/from\s+['"](\.\.\/?[^'"]+|[^/][^'"]*)['\"]/gm,
|
|
24
|
+
/require\s*\(\s*['"](\.\.\/?[^'"]+|[^/][^'"]*)['"]\s*\)/gm,
|
|
26
25
|
],
|
|
27
26
|
python: [
|
|
28
|
-
/from\s+([
|
|
29
|
-
/import\s+([
|
|
27
|
+
/from\s+([\.\w]+)\s+import/gm,
|
|
28
|
+
/import\s+([\.\w]+)/gm,
|
|
30
29
|
],
|
|
31
30
|
java: [
|
|
32
31
|
/import\s+([a-zA-Z0-9_.]+);/gm,
|
|
@@ -39,44 +38,67 @@ class DependencyGraphBuilder {
|
|
|
39
38
|
const symbols = [];
|
|
40
39
|
switch (language) {
|
|
41
40
|
case 'typescript':
|
|
42
|
-
case 'javascript':
|
|
43
|
-
//
|
|
44
|
-
const funcMatches = content.matchAll(/(?:export\s+)?(?:async\s+)?function\s+(\w+)|const\s+(\w+)\s
|
|
41
|
+
case 'javascript': {
|
|
42
|
+
// Top-level and exported functions
|
|
43
|
+
const funcMatches = content.matchAll(/(?:export\s+)?(?:async\s+)?function\s+(\w+)|(?:export\s+)?const\s+(\w+)\s*=\s*(?:async\s*)?\(/gm);
|
|
45
44
|
for (const match of funcMatches) {
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
symbols.push(
|
|
45
|
+
const sym = match[1] || match[2];
|
|
46
|
+
if (sym)
|
|
47
|
+
symbols.push(sym);
|
|
49
48
|
}
|
|
50
|
-
//
|
|
49
|
+
// Classes
|
|
51
50
|
const classMatches = content.matchAll(/(?:export\s+)?class\s+(\w+)/gm);
|
|
52
|
-
for (const match of classMatches)
|
|
51
|
+
for (const match of classMatches)
|
|
53
52
|
symbols.push(match[1]);
|
|
53
|
+
// Class methods
|
|
54
|
+
const methodMatches = content.matchAll(/^\s{2,}(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+\s*)?\{/gm);
|
|
55
|
+
for (const match of methodMatches) {
|
|
56
|
+
const sym = match[1];
|
|
57
|
+
if (sym && !['if', 'for', 'while', 'switch', 'catch'].includes(sym))
|
|
58
|
+
symbols.push(sym);
|
|
54
59
|
}
|
|
55
|
-
//
|
|
60
|
+
// Interfaces and types
|
|
56
61
|
const typeMatches = content.matchAll(/(?:export\s+)?(?:interface|type)\s+(\w+)/gm);
|
|
57
|
-
for (const match of typeMatches)
|
|
62
|
+
for (const match of typeMatches)
|
|
58
63
|
symbols.push(match[1]);
|
|
59
|
-
}
|
|
60
64
|
break;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
}
|
|
66
|
+
case 'python': {
|
|
67
|
+
// Top-level AND indented def/class — catches methods inside classes
|
|
68
|
+
const pyMatches = content.matchAll(/^[ \t]*(?:async\s+)?def\s+(\w+)|^[ \t]*class\s+(\w+)/gm);
|
|
64
69
|
for (const match of pyMatches) {
|
|
65
|
-
|
|
70
|
+
const sym = match[1] || match[2];
|
|
71
|
+
if (sym)
|
|
72
|
+
symbols.push(sym);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'rust': {
|
|
77
|
+
const rustMatches = content.matchAll(/(?:pub\s+)?(?:async\s+)?fn\s+(\w+)|(?:pub\s+)?struct\s+(\w+)|(?:pub\s+)?enum\s+(\w+)/gm);
|
|
78
|
+
for (const match of rustMatches) {
|
|
79
|
+
const sym = match[1] || match[2] || match[3];
|
|
80
|
+
if (sym)
|
|
81
|
+
symbols.push(sym);
|
|
66
82
|
}
|
|
67
83
|
break;
|
|
84
|
+
}
|
|
85
|
+
case 'go': {
|
|
86
|
+
const goMatches = content.matchAll(/func\s+(?:\(\w+\s+\*?\w+\)\s+)?(\w+)/gm);
|
|
87
|
+
for (const match of goMatches)
|
|
88
|
+
symbols.push(match[1]);
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
68
91
|
}
|
|
69
|
-
return [...new Set(symbols)];
|
|
92
|
+
return [...new Set(symbols)];
|
|
70
93
|
}
|
|
71
94
|
extractDependencies(filePath, content, language) {
|
|
72
95
|
const dependencies = [];
|
|
73
96
|
const patterns = this.patterns[language] || [];
|
|
74
|
-
let lineNum = 0;
|
|
75
97
|
const lines = content.split('\n');
|
|
76
98
|
for (let i = 0; i < lines.length; i++) {
|
|
77
99
|
const line = lines[i];
|
|
78
100
|
for (const pattern of patterns) {
|
|
79
|
-
pattern.lastIndex = 0;
|
|
101
|
+
pattern.lastIndex = 0;
|
|
80
102
|
let match;
|
|
81
103
|
while ((match = pattern.exec(line)) !== null) {
|
|
82
104
|
const importPath = match[1];
|
|
@@ -111,7 +133,6 @@ class DependencyGraphBuilder {
|
|
|
111
133
|
dependencies,
|
|
112
134
|
symbols,
|
|
113
135
|
};
|
|
114
|
-
// Update stats
|
|
115
136
|
this.graph.stats.languages[file.language] = (this.graph.stats.languages[file.language] || 0) + 1;
|
|
116
137
|
this.graph.stats.totalDependencies += dependencies.length;
|
|
117
138
|
}
|
package/dist/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":";;;AAuBA,MAAa,sBAAsB;IACzB,KAAK,GAAoB;QAC/B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE;YACL,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC;YACpB,SAAS,EAAE,EAAE;SACd;KACF,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|