@barissozen/csns 0.7.8 → 0.8.0

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.
@@ -12,4 +12,5 @@ export { SemanticAnalyzer } from './tracer/index.js';
12
12
  export { RuntimeTracer } from './tracer/index.js';
13
13
  export { ReverseEngineer } from './tracer/index.js';
14
14
  export { SecurityScanner } from './tracer/index.js';
15
+ export { ASTAnalyzer } from './tracer/index.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -10,4 +10,5 @@ export { SemanticAnalyzer } from './tracer/index.js';
10
10
  export { RuntimeTracer } from './tracer/index.js';
11
11
  export { ReverseEngineer } from './tracer/index.js';
12
12
  export { SecurityScanner } from './tracer/index.js';
13
+ export { ASTAnalyzer } from './tracer/index.js';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * AST Analyzer — TypeScript Compiler API ile Kesin Import/Export + Call Graph
3
+ *
4
+ * Regex tabanlı StaticAnalyzer'ın yerini alır (opsiyonel — fallback olarak regex kalır).
5
+ * TypeScript compiler API ile:
6
+ * - Kesin import/export çözümlemesi (alias, re-export, barrel dahil)
7
+ * - Type-only import ayrımı (%100 doğru)
8
+ * - Function-level call graph (kim kimi çağırıyor)
9
+ * - Dead function detection (hiç çağrılmayan export'lar)
10
+ * - Interface/type kullanım takibi
11
+ *
12
+ * Gereksinim: typescript paketi (zaten devDependencies'te)
13
+ */
14
+ import type { ImportEdge, ExportNode, DependencyEdge, WiringIssue } from '../../types/index.js';
15
+ export interface FunctionNode {
16
+ name: string;
17
+ file: string;
18
+ line: number;
19
+ exported: boolean;
20
+ kind: 'function' | 'method' | 'arrow' | 'constructor';
21
+ }
22
+ export interface CallEdge {
23
+ caller: string;
24
+ callee: string;
25
+ file: string;
26
+ line: number;
27
+ }
28
+ export interface ASTGraph {
29
+ imports: ImportEdge[];
30
+ exports: ExportNode[];
31
+ edges: DependencyEdge[];
32
+ functions: FunctionNode[];
33
+ calls: CallEdge[];
34
+ files: string[];
35
+ }
36
+ export declare class ASTAnalyzer {
37
+ private projectRoot;
38
+ private program;
39
+ constructor(projectRoot: string);
40
+ /**
41
+ * Build full AST-based graph. Falls back to file-only parse if tsconfig not found.
42
+ */
43
+ buildGraph(): Promise<ASTGraph>;
44
+ /**
45
+ * Find dead functions — exported but never called from any other file.
46
+ */
47
+ findDeadFunctions(graph: ASTGraph): WiringIssue[];
48
+ private findTsConfig;
49
+ private getSourceFiles;
50
+ private extractImports;
51
+ private extractExports;
52
+ private extractFunctionsAndCalls;
53
+ private buildEdges;
54
+ private resolveImportPath;
55
+ }
56
+ //# sourceMappingURL=ast-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-analyzer.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/ast-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;CACvD;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA2B;gBAE9B,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;IAiCrC;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,EAAE;IAqCjD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,cAAc;IAoDtB,OAAO,CAAC,wBAAwB;IAmFhC,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,iBAAiB;CAoB1B"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * AST Analyzer — TypeScript Compiler API ile Kesin Import/Export + Call Graph
3
+ *
4
+ * Regex tabanlı StaticAnalyzer'ın yerini alır (opsiyonel — fallback olarak regex kalır).
5
+ * TypeScript compiler API ile:
6
+ * - Kesin import/export çözümlemesi (alias, re-export, barrel dahil)
7
+ * - Type-only import ayrımı (%100 doğru)
8
+ * - Function-level call graph (kim kimi çağırıyor)
9
+ * - Dead function detection (hiç çağrılmayan export'lar)
10
+ * - Interface/type kullanım takibi
11
+ *
12
+ * Gereksinim: typescript paketi (zaten devDependencies'te)
13
+ */
14
+ import ts from 'typescript';
15
+ import { readFileSync, existsSync } from 'node:fs';
16
+ import { join, relative, dirname } from 'node:path';
17
+ // ═══════════════════════════════════════════════════════════
18
+ // Analyzer
19
+ // ═══════════════════════════════════════════════════════════
20
+ export class ASTAnalyzer {
21
+ projectRoot;
22
+ program = null;
23
+ constructor(projectRoot) {
24
+ this.projectRoot = projectRoot;
25
+ }
26
+ /**
27
+ * Build full AST-based graph. Falls back to file-only parse if tsconfig not found.
28
+ */
29
+ async buildGraph() {
30
+ const configPath = this.findTsConfig();
31
+ const sourceFiles = this.getSourceFiles(configPath);
32
+ const imports = [];
33
+ const exports = [];
34
+ const functions = [];
35
+ const calls = [];
36
+ const files = [];
37
+ for (const sf of sourceFiles) {
38
+ const relPath = relative(this.projectRoot, sf.fileName).replace(/\\/g, '/');
39
+ if (relPath.includes('node_modules') || relPath.includes('dist/'))
40
+ continue;
41
+ files.push(relPath);
42
+ // Extract imports
43
+ imports.push(...this.extractImports(sf, relPath));
44
+ // Extract exports
45
+ exports.push(...this.extractExports(sf, relPath));
46
+ // Extract functions + calls
47
+ const { funcs, callEdges } = this.extractFunctionsAndCalls(sf, relPath);
48
+ functions.push(...funcs);
49
+ calls.push(...callEdges);
50
+ }
51
+ // Build dependency edges from imports
52
+ const edges = this.buildEdges(imports, new Set(files));
53
+ return { imports, exports, edges, functions, calls, files };
54
+ }
55
+ /**
56
+ * Find dead functions — exported but never called from any other file.
57
+ */
58
+ findDeadFunctions(graph) {
59
+ const issues = [];
60
+ const calledFunctions = new Set(graph.calls.map(c => c.callee));
61
+ for (const fn of graph.functions) {
62
+ if (!fn.exported)
63
+ continue;
64
+ if (fn.kind === 'constructor')
65
+ continue;
66
+ // Skip index/entry files
67
+ if (/index\.(ts|js)$/.test(fn.file) || fn.file.includes('bin/'))
68
+ continue;
69
+ // Skip test files
70
+ if (/\.(test|spec)\.(ts|tsx)$/.test(fn.file))
71
+ continue;
72
+ const qualifiedName = `${fn.file}::${fn.name}`;
73
+ // Check if called from any OTHER file
74
+ const calledExternally = graph.calls.some(c => c.callee === qualifiedName && !c.file.endsWith(fn.file));
75
+ if (!calledExternally && !calledFunctions.has(fn.name)) {
76
+ issues.push({
77
+ type: 'dead-export',
78
+ severity: 'info',
79
+ file: fn.file,
80
+ symbol: fn.name,
81
+ detail: `Exported function '${fn.name}' is never called from outside its file (${fn.file}:${fn.line})`,
82
+ suggestion: 'Remove export or make it internal if unused',
83
+ });
84
+ }
85
+ }
86
+ return issues;
87
+ }
88
+ // ═══════════════════════════════════════════════════════════
89
+ // TypeScript Program Setup
90
+ // ═══════════════════════════════════════════════════════════
91
+ findTsConfig() {
92
+ const candidates = ['tsconfig.json', 'tsconfig.build.json'];
93
+ for (const c of candidates) {
94
+ const p = join(this.projectRoot, c);
95
+ if (existsSync(p))
96
+ return p;
97
+ }
98
+ return undefined;
99
+ }
100
+ getSourceFiles(configPath) {
101
+ if (configPath) {
102
+ const configFile = ts.readConfigFile(configPath, p => readFileSync(p, 'utf-8'));
103
+ const parsed = ts.parseJsonConfigFileContent(configFile.config, ts.sys, this.projectRoot);
104
+ this.program = ts.createProgram(parsed.fileNames, {
105
+ ...parsed.options,
106
+ noEmit: true,
107
+ });
108
+ return this.program.getSourceFiles().filter(sf => !sf.isDeclarationFile);
109
+ }
110
+ // Fallback: manually find .ts files
111
+ const { execSync } = require('node:child_process');
112
+ try {
113
+ const output = execSync('find . -name "*.ts" -not -path "*/node_modules/*" -not -path "*/dist/*"', { cwd: this.projectRoot, encoding: 'utf-8', timeout: 10_000 });
114
+ const filePaths = output.trim().split('\n').filter(Boolean).map(f => join(this.projectRoot, f));
115
+ this.program = ts.createProgram(filePaths, { noEmit: true, allowJs: true });
116
+ return this.program.getSourceFiles().filter(sf => !sf.isDeclarationFile);
117
+ }
118
+ catch {
119
+ return [];
120
+ }
121
+ }
122
+ // ═══════════════════════════════════════════════════════════
123
+ // Import Extraction (AST-precise)
124
+ // ═══════════════════════════════════════════════════════════
125
+ extractImports(sf, relPath) {
126
+ const imports = [];
127
+ ts.forEachChild(sf, node => {
128
+ if (ts.isImportDeclaration(node)) {
129
+ const moduleSpecifier = node.moduleSpecifier.text;
130
+ const isTypeOnly = node.importClause?.isTypeOnly ?? false;
131
+ const symbols = [];
132
+ if (node.importClause) {
133
+ // Default import
134
+ if (node.importClause.name) {
135
+ symbols.push('default');
136
+ }
137
+ // Named imports: { X, Y }
138
+ if (node.importClause.namedBindings) {
139
+ if (ts.isNamedImports(node.importClause.namedBindings)) {
140
+ for (const el of node.importClause.namedBindings.elements) {
141
+ symbols.push(el.name.text);
142
+ }
143
+ }
144
+ // Namespace import: * as X
145
+ if (ts.isNamespaceImport(node.importClause.namedBindings)) {
146
+ symbols.push('*');
147
+ }
148
+ }
149
+ }
150
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
151
+ imports.push({
152
+ from: relPath,
153
+ to: moduleSpecifier,
154
+ symbols,
155
+ isTypeOnly,
156
+ line,
157
+ });
158
+ }
159
+ });
160
+ return imports;
161
+ }
162
+ // ═══════════════════════════════════════════════════════════
163
+ // Export Extraction (AST-precise)
164
+ // ═══════════════════════════════════════════════════════════
165
+ extractExports(sf, relPath) {
166
+ const exports = [];
167
+ const visit = (node) => {
168
+ // Check for export modifier
169
+ const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
170
+ const isExported = modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
171
+ const isDefault = modifiers?.some(m => m.kind === ts.SyntaxKind.DefaultKeyword) ?? false;
172
+ if (isExported) {
173
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
174
+ if (ts.isFunctionDeclaration(node) && node.name) {
175
+ exports.push({ file: relPath, symbol: node.name.text, kind: isDefault ? 'default' : 'function', line });
176
+ }
177
+ else if (ts.isClassDeclaration(node) && node.name) {
178
+ exports.push({ file: relPath, symbol: node.name.text, kind: isDefault ? 'default' : 'class', line });
179
+ }
180
+ else if (ts.isVariableStatement(node)) {
181
+ for (const decl of node.declarationList.declarations) {
182
+ if (ts.isIdentifier(decl.name)) {
183
+ exports.push({ file: relPath, symbol: decl.name.text, kind: 'const', line });
184
+ }
185
+ }
186
+ }
187
+ else if (ts.isTypeAliasDeclaration(node)) {
188
+ exports.push({ file: relPath, symbol: node.name.text, kind: 'type', line });
189
+ }
190
+ else if (ts.isInterfaceDeclaration(node)) {
191
+ exports.push({ file: relPath, symbol: node.name.text, kind: 'interface', line });
192
+ }
193
+ else if (ts.isEnumDeclaration(node)) {
194
+ exports.push({ file: relPath, symbol: node.name.text, kind: 'enum', line });
195
+ }
196
+ }
197
+ // Export declarations: export { X, Y } from '...'
198
+ if (ts.isExportDeclaration(node)) {
199
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
200
+ if (node.exportClause && ts.isNamedExports(node.exportClause)) {
201
+ for (const el of node.exportClause.elements) {
202
+ exports.push({ file: relPath, symbol: el.name.text, kind: 're-export', line });
203
+ }
204
+ }
205
+ }
206
+ ts.forEachChild(node, visit);
207
+ };
208
+ visit(sf);
209
+ return exports;
210
+ }
211
+ // ═══════════════════════════════════════════════════════════
212
+ // Function + Call Graph Extraction
213
+ // ═══════════════════════════════════════════════════════════
214
+ extractFunctionsAndCalls(sf, relPath) {
215
+ const funcs = [];
216
+ const callEdges = [];
217
+ let currentFunction = null;
218
+ const visit = (node) => {
219
+ // Track function declarations
220
+ if (ts.isFunctionDeclaration(node) && node.name) {
221
+ const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
222
+ const isExported = modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
223
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
224
+ funcs.push({ name: node.name.text, file: relPath, line, exported: isExported, kind: 'function' });
225
+ const prevFunction = currentFunction;
226
+ currentFunction = node.name.text;
227
+ ts.forEachChild(node, visit);
228
+ currentFunction = prevFunction;
229
+ return;
230
+ }
231
+ // Track method declarations (in classes)
232
+ if (ts.isMethodDeclaration(node) && node.name && ts.isIdentifier(node.name)) {
233
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
234
+ funcs.push({ name: node.name.text, file: relPath, line, exported: false, kind: 'method' });
235
+ const prevFunction = currentFunction;
236
+ currentFunction = node.name.text;
237
+ ts.forEachChild(node, visit);
238
+ currentFunction = prevFunction;
239
+ return;
240
+ }
241
+ // Track variable declarations with arrow functions
242
+ if (ts.isVariableDeclaration(node) && ts.isIdentifier(node.name) && node.initializer &&
243
+ (ts.isArrowFunction(node.initializer) || ts.isFunctionExpression(node.initializer))) {
244
+ const parent = node.parent?.parent;
245
+ const modifiers = parent && ts.canHaveModifiers(parent) ? ts.getModifiers(parent) : undefined;
246
+ const isExported = modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
247
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
248
+ funcs.push({ name: node.name.text, file: relPath, line, exported: isExported, kind: 'arrow' });
249
+ const prevFunction = currentFunction;
250
+ currentFunction = node.name.text;
251
+ ts.forEachChild(node, visit);
252
+ currentFunction = prevFunction;
253
+ return;
254
+ }
255
+ // Track call expressions
256
+ if (ts.isCallExpression(node) && currentFunction) {
257
+ let calleeName = null;
258
+ if (ts.isIdentifier(node.expression)) {
259
+ calleeName = node.expression.text;
260
+ }
261
+ else if (ts.isPropertyAccessExpression(node.expression) && ts.isIdentifier(node.expression.name)) {
262
+ calleeName = node.expression.name.text;
263
+ }
264
+ if (calleeName) {
265
+ const line = sf.getLineAndCharacterOfPosition(node.pos).line + 1;
266
+ callEdges.push({
267
+ caller: `${relPath}::${currentFunction}`,
268
+ callee: calleeName,
269
+ file: relPath,
270
+ line,
271
+ });
272
+ }
273
+ }
274
+ ts.forEachChild(node, visit);
275
+ };
276
+ visit(sf);
277
+ return { funcs, callEdges };
278
+ }
279
+ // ═══════════════════════════════════════════════════════════
280
+ // Edge Building (same as StaticAnalyzer but AST-precise)
281
+ // ═══════════════════════════════════════════════════════════
282
+ buildEdges(imports, fileSet) {
283
+ const edgeMap = new Map();
284
+ for (const imp of imports) {
285
+ const resolved = this.resolveImportPath(imp.from, imp.to, fileSet);
286
+ if (!resolved)
287
+ continue;
288
+ const key = `${imp.from}→${resolved}`;
289
+ const existing = edgeMap.get(key);
290
+ if (existing) {
291
+ existing.weight++;
292
+ if (!imp.isTypeOnly)
293
+ existing.typeOnly = false;
294
+ for (const s of imp.symbols) {
295
+ if (!existing.symbols.includes(s))
296
+ existing.symbols.push(s);
297
+ }
298
+ }
299
+ else {
300
+ edgeMap.set(key, {
301
+ source: imp.from,
302
+ target: resolved,
303
+ symbols: [...imp.symbols],
304
+ weight: 1,
305
+ typeOnly: imp.isTypeOnly,
306
+ });
307
+ }
308
+ }
309
+ return [...edgeMap.values()];
310
+ }
311
+ resolveImportPath(fromFile, importPath, fileSet) {
312
+ if (!importPath.startsWith('.'))
313
+ return null;
314
+ const fromDir = dirname(fromFile);
315
+ const rawResolved = join(fromDir, importPath).replace(/\\/g, '/');
316
+ const candidates = [
317
+ rawResolved,
318
+ rawResolved.replace(/\.js$/, '.ts'),
319
+ rawResolved.replace(/\.js$/, '.tsx'),
320
+ `${rawResolved}.ts`,
321
+ `${rawResolved}.tsx`,
322
+ `${rawResolved}/index.ts`,
323
+ `${rawResolved}/index.tsx`,
324
+ ];
325
+ for (const c of candidates) {
326
+ if (fileSet.has(c))
327
+ return c;
328
+ }
329
+ return null;
330
+ }
331
+ }
332
+ //# sourceMappingURL=ast-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-analyzer.js","sourceRoot":"","sources":["../../../src/agent/tracer/ast-analyzer.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,6 @@ export { ReverseEngineer } from './reverse-engineer.js';
7
7
  export type { AuditReport, FileClassification, DataFlowChain, ArchitectureViolation, DecisionAuditResult, ArchLayer, } from './reverse-engineer.js';
8
8
  export { SecurityScanner } from './security-scanner.js';
9
9
  export type { SecurityReport, SecurityFinding } from './security-scanner.js';
10
+ export { ASTAnalyzer } from './ast-analyzer.js';
11
+ export type { ASTGraph, FunctionNode, CallEdge } from './ast-analyzer.js';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
@@ -4,4 +4,5 @@ export { SemanticAnalyzer } from './semantic-analyzer.js';
4
4
  export { RuntimeTracer } from './runtime-tracer.js';
5
5
  export { ReverseEngineer } from './reverse-engineer.js';
6
6
  export { SecurityScanner } from './security-scanner.js';
7
+ export { ASTAnalyzer } from './ast-analyzer.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barissozen/csns",
3
- "version": "0.7.8",
3
+ "version": "0.8.0",
4
4
  "description": "CSNS — Code-aware Self-correcting Never-forgetting System",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",