@barissozen/csns 0.7.8 → 0.8.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.
@@ -12,4 +12,6 @@ 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';
16
+ export { CrossFileChecker } from './tracer/index.js';
15
17
  //# 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;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -10,4 +10,6 @@ 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';
14
+ export { CrossFileChecker } from './tracer/index.js';
13
15
  //# 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;AAChD,OAAO,EAAE,gBAAgB,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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpD,8DAA8D;AAC9D,WAAW;AACX,8DAA8D;AAE9D,MAAM,OAAO,WAAW;IACd,WAAW,CAAS;IACpB,OAAO,GAAsB,IAAI,CAAC;IAE1C,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAmB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC5E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpB,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAElD,kBAAkB;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAElD,4BAA4B;YAC5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACxE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC3B,CAAC;QAED,sCAAsC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAe;QAC/B,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhE,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,QAAQ;gBAAE,SAAS;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa;gBAAE,SAAS;YACxC,yBAAyB;YACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC1E,kBAAkB;YAClB,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEvD,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,sCAAsC;YACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CACxD,CAAC;YAEF,IAAI,CAAC,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,MAAM;oBAChB,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,MAAM,EAAE,EAAE,CAAC,IAAI;oBACf,MAAM,EAAE,sBAAsB,EAAE,CAAC,IAAI,4CAA4C,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,GAAG;oBACtG,UAAU,EAAE,6CAA6C;iBAC1D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8DAA8D;IAC9D,2BAA2B;IAC3B,8DAA8D;IAEtD,YAAY;QAClB,MAAM,UAAU,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACpC,IAAI,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,cAAc,CAAC,UAAmB;QACxC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1F,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE;gBAChD,GAAG,MAAM,CAAC,OAAO;gBACjB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC3E,CAAC;QAED,oCAAoC;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAW,QAAQ,CAC7B,yEAAyE,EACzE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAC9D,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YAChG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,kCAAkC;IAClC,8DAA8D;IAEtD,cAAc,CAAC,EAAiB,EAAE,OAAe;QACvD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;YACzB,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,eAAe,GAAI,IAAI,CAAC,eAAoC,CAAC,IAAI,CAAC;gBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,IAAI,KAAK,CAAC;gBAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;gBAE7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,iBAAiB;oBACjB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;wBAC3B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,CAAC;oBACD,0BAA0B;oBAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;wBACpC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;4BACvD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gCAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC7B,CAAC;wBACH,CAAC;wBACD,2BAA2B;wBAC3B,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,EAAE,EAAE,eAAe;oBACnB,OAAO;oBACP,UAAU;oBACV,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8DAA8D;IAC9D,kCAAkC;IAClC,8DAA8D;IAEtD,cAAc,CAAC,EAAiB,EAAE,OAAe;QACvD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE;YAC9B,4BAA4B;YAC5B,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;YACzF,MAAM,SAAS,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;YAEzF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEjE,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1G,CAAC;qBAAM,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,CAAC;qBAAM,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;wBACrD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/E,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,CAAC;qBAAM,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;YAED,kDAAkD;YAClD,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACjE,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9D,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;wBAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8DAA8D;IAC9D,mCAAmC;IACnC,8DAA8D;IAEtD,wBAAwB,CAAC,EAAiB,EAAE,OAAe;QAIjE,MAAM,KAAK,GAAmB,EAAE,CAAC;QACjC,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,IAAI,eAAe,GAAkB,IAAI,CAAC;QAE1C,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,EAAE;YAC9B,8BAA8B;YAC9B,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;gBACzF,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAElG,MAAM,YAAY,GAAG,eAAe,CAAC;gBACrC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,eAAe,GAAG,YAAY,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,yCAAyC;YACzC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAE3F,MAAM,YAAY,GAAG,eAAe,CAAC;gBACrC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,eAAe,GAAG,YAAY,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,mDAAmD;YACnD,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;gBAChF,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACxF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;gBACnC,MAAM,SAAS,GAAG,MAAM,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9F,MAAM,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;gBACzF,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAE/F,MAAM,YAAY,GAAG,eAAe,CAAC;gBACrC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7B,eAAe,GAAG,YAAY,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,EAAE,CAAC;gBACjD,IAAI,UAAU,GAAkB,IAAI,CAAC;gBAErC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACpC,CAAC;qBAAM,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzC,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;oBACjE,SAAS,CAAC,IAAI,CAAC;wBACb,MAAM,EAAE,GAAG,OAAO,KAAK,eAAe,EAAE;wBACxC,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,OAAO;wBACb,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,8DAA8D;IAC9D,yDAAyD;IACzD,8DAA8D;IAEtD,UAAU,CAAC,OAAqB,EAAE,OAAoB;QAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,UAAU;oBAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;oBACf,MAAM,EAAE,GAAG,CAAC,IAAI;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,GAAG,CAAC,UAAU;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,iBAAiB,CAAC,QAAgB,EAAE,UAAkB,EAAE,OAAoB;QAClF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG;YACjB,WAAW;YACX,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;YACnC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;YACpC,GAAG,WAAW,KAAK;YACnB,GAAG,WAAW,MAAM;YACpB,GAAG,WAAW,WAAW;YACzB,GAAG,WAAW,YAAY;SAC3B,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Cross-File Value Checker — Detect Mismatches Across Files
3
+ *
4
+ * Finds values that should be consistent but aren't:
5
+ * - Token TTL vs Cookie maxAge
6
+ * - Port numbers vs service URLs
7
+ * - Env vars used but not in .env.example
8
+ * - Schema field names vs DB column names
9
+ * - Rate limit values vs Redis TTL
10
+ * - Duplicated constants with different values
11
+ *
12
+ * This is the thing no other tool does well — CSNS's differentiator.
13
+ */
14
+ export interface ValueMismatch {
15
+ id: string;
16
+ category: 'ttl-mismatch' | 'port-url-mismatch' | 'env-undefined' | 'duplicate-constant' | 'schema-mismatch';
17
+ severity: 'high' | 'medium' | 'low';
18
+ description: string;
19
+ locations: Array<{
20
+ file: string;
21
+ line: number;
22
+ value: string;
23
+ }>;
24
+ fix: string;
25
+ }
26
+ export interface CrossFileReport {
27
+ mismatches: ValueMismatch[];
28
+ envUsage: {
29
+ defined: string[];
30
+ used: string[];
31
+ missing: string[];
32
+ unused: string[];
33
+ };
34
+ summary: {
35
+ total: number;
36
+ high: number;
37
+ medium: number;
38
+ low: number;
39
+ };
40
+ duration: number;
41
+ }
42
+ export declare class CrossFileChecker {
43
+ private projectRoot;
44
+ constructor(projectRoot: string);
45
+ check(): Promise<CrossFileReport>;
46
+ private analyzeEnvVars;
47
+ private getLineNumber;
48
+ private collectFiles;
49
+ private walk;
50
+ }
51
+ //# sourceMappingURL=cross-file-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-file-checker.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/cross-file-checker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,GAAG,mBAAmB,GAAG,eAAe,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;IAC5G,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrF,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2CD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAIzB,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;YA0GzB,cAAc;IA8C5B,OAAO,CAAC,aAAa;YAUP,YAAY;YAMZ,IAAI;CAgBnB"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Cross-File Value Checker — Detect Mismatches Across Files
3
+ *
4
+ * Finds values that should be consistent but aren't:
5
+ * - Token TTL vs Cookie maxAge
6
+ * - Port numbers vs service URLs
7
+ * - Env vars used but not in .env.example
8
+ * - Schema field names vs DB column names
9
+ * - Rate limit values vs Redis TTL
10
+ * - Duplicated constants with different values
11
+ *
12
+ * This is the thing no other tool does well — CSNS's differentiator.
13
+ */
14
+ import { readFile, readdir } from 'node:fs/promises';
15
+ import { join, relative, extname } from 'node:path';
16
+ const EXTRACT_PATTERNS = [
17
+ // TTL / expiry / maxAge values
18
+ { category: 'ttl', pattern: /(?:TTL|ttl|expir(?:es?|y|ation)|maxAge|max_age|timeout|TIMEOUT)\s*[:=]\s*['"]?(\w+)['"]?\s*.*?(\d+[\s*]*(?:\*[\s*]*\d+)*|'\d+[smhd]')/gi, keyGroup: 0, valueGroup: 2 },
19
+ // Port numbers
20
+ { category: 'port', pattern: /(?:PORT|port)\s*[:=]\s*['"]?(\d{4,5})['"]?/g, keyGroup: 0, valueGroup: 1 },
21
+ // Service URLs with ports
22
+ { category: 'url', pattern: /(?:URL|url|endpoint|host|HOST)\s*[:=]\s*['"`]?(https?:\/\/[^'"`\s,;]+)['"`]?/g, keyGroup: 0, valueGroup: 1 },
23
+ // Rate limits
24
+ { category: 'rate-limit', pattern: /(?:RATE_LIMIT|rateLimit|limit|MAX_REQUESTS|maxRequests)\s*[:=]\s*(\d+)/gi, keyGroup: 0, valueGroup: 1 },
25
+ // Secret/key names (for consistency check)
26
+ { category: 'secret-name', pattern: /process\.env\[?['"]?(\w+(?:SECRET|KEY|TOKEN|PASSWORD)\w*)['"]?\]?/g, keyGroup: 0, valueGroup: 1 },
27
+ ];
28
+ const SOURCE_EXTS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.env', '.env.example', '.env.local']);
29
+ const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', 'coverage', '.next', '.turbo']);
30
+ // ═══════════════════════════════════════════════════════════
31
+ // Checker
32
+ // ═══════════════════════════════════════════════════════════
33
+ export class CrossFileChecker {
34
+ projectRoot;
35
+ constructor(projectRoot) {
36
+ this.projectRoot = projectRoot;
37
+ }
38
+ async check() {
39
+ const start = Date.now();
40
+ const files = await this.collectFiles();
41
+ const mismatches = [];
42
+ let mismatchCounter = 0;
43
+ // 1. Extract all values
44
+ const allValues = [];
45
+ for (const file of files) {
46
+ let content;
47
+ try {
48
+ content = await readFile(join(this.projectRoot, file), 'utf-8');
49
+ }
50
+ catch {
51
+ continue;
52
+ }
53
+ for (const pattern of EXTRACT_PATTERNS) {
54
+ const regex = new RegExp(pattern.pattern.source, pattern.pattern.flags);
55
+ let match;
56
+ while ((match = regex.exec(content)) !== null) {
57
+ const lineNum = this.getLineNumber(content, match.index);
58
+ allValues.push({
59
+ file,
60
+ line: lineNum,
61
+ key: match[pattern.keyGroup] ?? match[0] ?? '',
62
+ value: match[pattern.valueGroup] ?? '',
63
+ category: pattern.category,
64
+ });
65
+ }
66
+ }
67
+ }
68
+ // 2. Env var analysis
69
+ const envUsage = await this.analyzeEnvVars(files);
70
+ for (const missing of envUsage.missing) {
71
+ mismatches.push({
72
+ id: `XVAL-${++mismatchCounter}`,
73
+ category: 'env-undefined',
74
+ severity: 'medium',
75
+ description: `Environment variable '${missing}' is used in code but not defined in .env.example`,
76
+ locations: allValues
77
+ .filter(v => v.category === 'secret-name' && v.value === missing)
78
+ .map(v => ({ file: v.file, line: v.line, value: `process.env.${missing}` })),
79
+ fix: `Add ${missing}= to .env.example with a placeholder value`,
80
+ });
81
+ }
82
+ // 3. Port/URL consistency
83
+ const ports = allValues.filter(v => v.category === 'port');
84
+ const urls = allValues.filter(v => v.category === 'url');
85
+ for (const port of ports) {
86
+ const portNum = port.value;
87
+ const matchingUrls = urls.filter(u => u.value.includes(`:${portNum}`));
88
+ const nonMatchingUrls = urls.filter(u => u.value.includes('localhost') &&
89
+ !u.value.includes(`:${portNum}`) &&
90
+ u.file !== port.file);
91
+ if (matchingUrls.length > 0 && nonMatchingUrls.length > 0) {
92
+ mismatches.push({
93
+ id: `XVAL-${++mismatchCounter}`,
94
+ category: 'port-url-mismatch',
95
+ severity: 'medium',
96
+ description: `Port ${portNum} defined in ${port.file} but some URLs point to different ports`,
97
+ locations: [
98
+ { file: port.file, line: port.line, value: `PORT=${portNum}` },
99
+ ...nonMatchingUrls.map(u => ({ file: u.file, line: u.line, value: u.value })),
100
+ ],
101
+ fix: 'Ensure all service URLs use the correct port, or centralize port config',
102
+ });
103
+ }
104
+ }
105
+ // 4. Duplicate constants with different values
106
+ const constants = allValues.filter(v => v.category === 'ttl' || v.category === 'rate-limit');
107
+ const byKey = new Map();
108
+ for (const c of constants) {
109
+ const normalizedKey = c.key.toLowerCase().replace(/[_\s-]/g, '');
110
+ if (!byKey.has(normalizedKey))
111
+ byKey.set(normalizedKey, []);
112
+ byKey.get(normalizedKey).push(c);
113
+ }
114
+ for (const [key, values] of byKey) {
115
+ if (values.length < 2)
116
+ continue;
117
+ const uniqueValues = new Set(values.map(v => v.value));
118
+ if (uniqueValues.size > 1) {
119
+ mismatches.push({
120
+ id: `XVAL-${++mismatchCounter}`,
121
+ category: 'duplicate-constant',
122
+ severity: 'low',
123
+ description: `Constant '${key}' has different values across files: ${[...uniqueValues].join(' vs ')}`,
124
+ locations: values.map(v => ({ file: v.file, line: v.line, value: v.value })),
125
+ fix: 'Extract to a shared constants file to ensure consistency',
126
+ });
127
+ }
128
+ }
129
+ const summary = {
130
+ total: mismatches.length,
131
+ high: mismatches.filter(m => m.severity === 'high').length,
132
+ medium: mismatches.filter(m => m.severity === 'medium').length,
133
+ low: mismatches.filter(m => m.severity === 'low').length,
134
+ };
135
+ return { mismatches, envUsage, summary, duration: Date.now() - start };
136
+ }
137
+ // ═══════════════════════════════════════════════════════════
138
+ // Env Var Analysis
139
+ // ═══════════════════════════════════════════════════════════
140
+ async analyzeEnvVars(files) {
141
+ // Collect used env vars from code
142
+ const used = new Set();
143
+ for (const file of files) {
144
+ if (file.endsWith('.env') || file.endsWith('.env.example'))
145
+ continue;
146
+ let content;
147
+ try {
148
+ content = await readFile(join(this.projectRoot, file), 'utf-8');
149
+ }
150
+ catch {
151
+ continue;
152
+ }
153
+ const regex = /process\.env\[?['"]?(\w+)['"]?\]?/g;
154
+ let match;
155
+ while ((match = regex.exec(content)) !== null) {
156
+ if (match[1])
157
+ used.add(match[1]);
158
+ }
159
+ }
160
+ // Collect defined env vars from .env.example
161
+ const defined = new Set();
162
+ const envFiles = ['.env.example', '.env.local', '.env'];
163
+ for (const ef of envFiles) {
164
+ try {
165
+ const content = await readFile(join(this.projectRoot, ef), 'utf-8');
166
+ for (const line of content.split('\n')) {
167
+ const match = line.match(/^(\w+)\s*=/);
168
+ if (match?.[1] && !match[1].startsWith('#'))
169
+ defined.add(match[1]);
170
+ }
171
+ }
172
+ catch { /* file not found */ }
173
+ }
174
+ // Common Node.js env vars — don't flag these
175
+ const builtins = new Set(['NODE_ENV', 'PORT', 'HOME', 'PATH', 'USER', 'SHELL', 'PWD', 'TERM', 'LANG', 'TZ']);
176
+ const missing = [...used].filter(v => !defined.has(v) && !builtins.has(v));
177
+ const unused = [...defined].filter(v => !used.has(v) && !builtins.has(v));
178
+ return {
179
+ defined: [...defined],
180
+ used: [...used],
181
+ missing,
182
+ unused,
183
+ };
184
+ }
185
+ // ═══════════════════════════════════════════════════════════
186
+ // Helpers
187
+ // ═══════════════════════════════════════════════════════════
188
+ getLineNumber(content, charIndex) {
189
+ let count = 0;
190
+ const lines = content.split('\n');
191
+ for (let i = 0; i < lines.length; i++) {
192
+ count += lines[i].length + 1;
193
+ if (count > charIndex)
194
+ return i + 1;
195
+ }
196
+ return lines.length;
197
+ }
198
+ async collectFiles() {
199
+ const files = [];
200
+ await this.walk(this.projectRoot, files);
201
+ return files;
202
+ }
203
+ async walk(dir, files) {
204
+ let entries;
205
+ try {
206
+ entries = await readdir(dir, { withFileTypes: true });
207
+ }
208
+ catch {
209
+ return;
210
+ }
211
+ for (const entry of entries) {
212
+ if (entry.isDirectory()) {
213
+ if (SKIP_DIRS.has(entry.name) || entry.name.startsWith('.'))
214
+ continue;
215
+ await this.walk(join(dir, entry.name), files);
216
+ }
217
+ else if (entry.isFile()) {
218
+ const ext = extname(entry.name).toLowerCase();
219
+ const name = entry.name;
220
+ if (SOURCE_EXTS.has(ext) || name === '.env.example' || name === '.env' || name === '.env.local') {
221
+ files.push(relative(this.projectRoot, join(dir, entry.name)).replace(/\\/g, '/'));
222
+ }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ //# sourceMappingURL=cross-file-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-file-checker.js","sourceRoot":"","sources":["../../../src/agent/tracer/cross-file-checker.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,8 @@ 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';
12
+ export { CrossFileChecker } from './cross-file-checker.js';
13
+ export type { CrossFileReport, ValueMismatch } from './cross-file-checker.js';
10
14
  //# 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;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
@@ -4,4 +4,6 @@ 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';
8
+ export { CrossFileChecker } from './cross-file-checker.js';
7
9
  //# 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;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,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.1",
4
4
  "description": "CSNS — Code-aware Self-correcting Never-forgetting System",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",