@promptwheel/core 0.7.21 → 0.7.34
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/codebase-index/ast-analysis.d.ts +33 -2
- package/dist/codebase-index/ast-analysis.d.ts.map +1 -1
- package/dist/codebase-index/ast-analysis.js +457 -2
- package/dist/codebase-index/ast-analysis.js.map +1 -1
- package/dist/codebase-index/ast-cache.d.ts +9 -1
- package/dist/codebase-index/ast-cache.d.ts.map +1 -1
- package/dist/codebase-index/ast-cache.js.map +1 -1
- package/dist/codebase-index/ast-patterns.d.ts +24 -4
- package/dist/codebase-index/ast-patterns.d.ts.map +1 -1
- package/dist/codebase-index/ast-patterns.js +274 -10
- package/dist/codebase-index/ast-patterns.js.map +1 -1
- package/dist/codebase-index/dead-code.d.ts +37 -4
- package/dist/codebase-index/dead-code.d.ts.map +1 -1
- package/dist/codebase-index/dead-code.js +152 -17
- package/dist/codebase-index/dead-code.js.map +1 -1
- package/dist/codebase-index/index.d.ts +4 -2
- package/dist/codebase-index/index.d.ts.map +1 -1
- package/dist/codebase-index/index.js +129 -14
- package/dist/codebase-index/index.js.map +1 -1
- package/dist/codebase-index/shared.d.ts +31 -0
- package/dist/codebase-index/shared.d.ts.map +1 -1
- package/dist/codebase-index/shared.js +50 -0
- package/dist/codebase-index/shared.js.map +1 -1
- package/dist/dedup/shared.d.ts +14 -0
- package/dist/dedup/shared.d.ts.map +1 -1
- package/dist/dedup/shared.js +40 -0
- package/dist/dedup/shared.js.map +1 -1
- package/dist/learnings/shared.d.ts +1 -1
- package/dist/learnings/shared.d.ts.map +1 -1
- package/dist/learnings/shared.js.map +1 -1
- package/dist/proposals/blueprint.d.ts +68 -0
- package/dist/proposals/blueprint.d.ts.map +1 -0
- package/dist/proposals/blueprint.js +292 -0
- package/dist/proposals/blueprint.js.map +1 -0
- package/dist/proposals/shared.d.ts +30 -2
- package/dist/proposals/shared.d.ts.map +1 -1
- package/dist/proposals/shared.js +58 -11
- package/dist/proposals/shared.js.map +1 -1
- package/dist/proposals/step-classifier.d.ts +32 -0
- package/dist/proposals/step-classifier.d.ts.map +1 -0
- package/dist/proposals/step-classifier.js +49 -0
- package/dist/proposals/step-classifier.js.map +1 -0
- package/dist/proposals/trajectory-critic.d.ts +35 -0
- package/dist/proposals/trajectory-critic.d.ts.map +1 -0
- package/dist/proposals/trajectory-critic.js +211 -0
- package/dist/proposals/trajectory-critic.js.map +1 -0
- package/dist/repos/tickets.d.ts +2 -0
- package/dist/repos/tickets.d.ts.map +1 -1
- package/dist/repos/tickets.js.map +1 -1
- package/dist/scout/index.d.ts.map +1 -1
- package/dist/scout/index.js +10 -1
- package/dist/scout/index.js.map +1 -1
- package/dist/scout/prompt.d.ts.map +1 -1
- package/dist/scout/prompt.js +7 -1
- package/dist/scout/prompt.js.map +1 -1
- package/dist/scout/runner.d.ts.map +1 -1
- package/dist/scout/runner.js +1 -0
- package/dist/scout/runner.js.map +1 -1
- package/dist/scout/types.d.ts +20 -1
- package/dist/scout/types.d.ts.map +1 -1
- package/dist/scout/types.js +4 -2
- package/dist/scout/types.js.map +1 -1
- package/dist/sectors/shared.d.ts +17 -0
- package/dist/sectors/shared.d.ts.map +1 -1
- package/dist/sectors/shared.js +65 -0
- package/dist/sectors/shared.js.map +1 -1
- package/dist/services/scout.d.ts +2 -0
- package/dist/services/scout.d.ts.map +1 -1
- package/dist/services/scout.js +1 -0
- package/dist/services/scout.js.map +1 -1
- package/dist/trajectory/io.d.ts +32 -0
- package/dist/trajectory/io.d.ts.map +1 -0
- package/dist/trajectory/io.js +201 -0
- package/dist/trajectory/io.js.map +1 -0
- package/dist/trajectory/shared.d.ts +50 -0
- package/dist/trajectory/shared.d.ts.map +1 -1
- package/dist/trajectory/shared.js +178 -0
- package/dist/trajectory/shared.js.map +1 -1
- package/dist/waves/conflict.d.ts +130 -0
- package/dist/waves/conflict.d.ts.map +1 -0
- package/dist/waves/conflict.js +400 -0
- package/dist/waves/conflict.js.map +1 -0
- package/dist/waves/merge.d.ts +75 -0
- package/dist/waves/merge.d.ts.map +1 -0
- package/dist/waves/merge.js +305 -0
- package/dist/waves/merge.js.map +1 -0
- package/dist/waves/shared.d.ts +6 -102
- package/dist/waves/shared.d.ts.map +1 -1
- package/dist/waves/shared.js +16 -346
- package/dist/waves/shared.js.map +1 -1
- package/package.json +17 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* The ast-grep parse() function is synchronous — no async needed.
|
|
9
9
|
*/
|
|
10
|
-
import type { AstAnalysisResult, ExportEntry } from './shared.js';
|
|
10
|
+
import type { AstAnalysisResult, ExportEntry, SymbolRange, CallEdge } from './shared.js';
|
|
11
11
|
import type { AstPattern } from './ast-patterns.js';
|
|
12
12
|
/**
|
|
13
13
|
* Minimal interface for the ast-grep/napi module.
|
|
@@ -43,9 +43,19 @@ export declare function mapExtensionToLang(ext: string): string | null;
|
|
|
43
43
|
*
|
|
44
44
|
* Falls back to null on any parse error (caller should use regex fallback).
|
|
45
45
|
*/
|
|
46
|
-
export declare function analyzeFileAst(content: string, filePath: string, langKey: string, astGrep: AstGrepModule, patterns?: AstPattern[]): AstAnalysisResult | null;
|
|
46
|
+
export declare function analyzeFileAst(content: string, filePath: string, langKey: string, astGrep: AstGrepModule, patterns?: AstPattern[], symbols?: SymbolRange[]): AstAnalysisResult | null;
|
|
47
47
|
/** Extract import specifiers from an AST root node. */
|
|
48
48
|
export declare function extractImportsAst(root: AstGrepNode, langKey: string): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Extract the actual imported binding names from import statements.
|
|
51
|
+
* Unlike extractImportsAst() which returns specifier paths ('./utils'),
|
|
52
|
+
* this returns the local binding names (foo, bar, MyClass) that appear
|
|
53
|
+
* in import destructuring. These match against export names for dead
|
|
54
|
+
* export detection.
|
|
55
|
+
*
|
|
56
|
+
* JS/TS only — other languages return empty array.
|
|
57
|
+
*/
|
|
58
|
+
export declare function extractImportedNames(root: AstGrepNode, langKey: string): string[];
|
|
49
59
|
/** Extract exported symbols from an AST root node. JS/TS only for now. */
|
|
50
60
|
export declare function extractExportsAst(root: AstGrepNode, langKey: string): ExportEntry[];
|
|
51
61
|
export declare function getLangFamily(langKey: string): string;
|
|
@@ -57,5 +67,26 @@ export declare function getLangFamily(langKey: string): string;
|
|
|
57
67
|
export declare function estimateCyclomaticComplexity(root: AstGrepNode, langKey: string): number;
|
|
58
68
|
/** Find all descendant nodes of a given kind using tree traversal. */
|
|
59
69
|
export declare function findAllByKind(root: AstGrepNode, kind: string): AstGrepNode[];
|
|
70
|
+
/**
|
|
71
|
+
* Extract top-level symbols (functions, classes, variables, types, etc.)
|
|
72
|
+
* with their line ranges from source code.
|
|
73
|
+
*
|
|
74
|
+
* Unlike extractExportsAst (which only captures exported symbols in JS/TS),
|
|
75
|
+
* this captures ALL top-level declarations — exported or not — since tickets
|
|
76
|
+
* can modify unexported internal functions.
|
|
77
|
+
*
|
|
78
|
+
* Returns null on parse failure (caller falls back to path-based conflict detection).
|
|
79
|
+
*/
|
|
80
|
+
export declare function extractTopLevelSymbols(content: string, langKey: string, astGrep: AstGrepModule): SymbolRange[] | null;
|
|
81
|
+
/**
|
|
82
|
+
* Extract call edges from a parsed AST.
|
|
83
|
+
*
|
|
84
|
+
* For each top-level function symbol, finds call expressions and maps them
|
|
85
|
+
* to either imported symbols (cross-file) or local top-level functions.
|
|
86
|
+
* Returns null on parse failure.
|
|
87
|
+
*
|
|
88
|
+
* JS/TS only for now — other languages return empty array.
|
|
89
|
+
*/
|
|
90
|
+
export declare function extractCallEdges(content: string, langKey: string, astGrep: AstGrepModule, symbols?: SymbolRange[]): CallEdge[] | null;
|
|
60
91
|
export {};
|
|
61
92
|
//# sourceMappingURL=ast-analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-analysis.d.ts","sourceRoot":"","sources":["../../src/codebase-index/ast-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ast-analysis.d.ts","sourceRoot":"","sources":["../../src/codebase-index/ast-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAc,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAOpD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACnC;AAED,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,gCAAgC;AAChC,UAAU,WAAW;IACnB,IAAI,IAAI,WAAW,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,WAAW;IAC1B,IAAI,IAAI,MAAM,CAAC;IACf,IAAI,IAAI,MAAM,CAAC;IACf,QAAQ,IAAI,WAAW,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,WAAW,EAAE,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC;CACpB;AAMD,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyB7D;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,EAAE,GACtB,iBAAiB,GAAG,IAAI,CAmB1B;AAMD,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmE9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAyDjF;AAMD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA2EnF;AA+BD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBrD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBvF;AAMD,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAqB5E;AAiLD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,WAAW,EAAE,GAAG,IAAI,CAkDtB;AAwDD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,WAAW,EAAE,GACtB,QAAQ,EAAE,GAAG,IAAI,CA0EnB"}
|
|
@@ -47,7 +47,7 @@ export function mapExtensionToLang(ext) {
|
|
|
47
47
|
*
|
|
48
48
|
* Falls back to null on any parse error (caller should use regex fallback).
|
|
49
49
|
*/
|
|
50
|
-
export function analyzeFileAst(content, filePath, langKey, astGrep, patterns) {
|
|
50
|
+
export function analyzeFileAst(content, filePath, langKey, astGrep, patterns, symbols) {
|
|
51
51
|
try {
|
|
52
52
|
const lang = astGrep.Lang[langKey];
|
|
53
53
|
if (!lang)
|
|
@@ -55,13 +55,16 @@ export function analyzeFileAst(content, filePath, langKey, astGrep, patterns) {
|
|
|
55
55
|
const root = astGrep.parse(lang, content).root();
|
|
56
56
|
const imports = extractImportsAst(root, langKey);
|
|
57
57
|
const exports = extractExportsAst(root, langKey);
|
|
58
|
+
const importedNames = extractImportedNames(root, langKey);
|
|
58
59
|
const complexity = estimateCyclomaticComplexity(root, langKey);
|
|
59
60
|
const findings = patterns
|
|
60
|
-
? scanPatterns(root, langKey, content, patterns) || undefined
|
|
61
|
+
? scanPatterns(root, langKey, content, patterns, symbols) || undefined
|
|
61
62
|
: undefined;
|
|
62
63
|
const result = { imports, exports, complexity };
|
|
63
64
|
if (findings && findings.length > 0)
|
|
64
65
|
result.findings = findings;
|
|
66
|
+
if (importedNames.length > 0)
|
|
67
|
+
result.importedNames = importedNames;
|
|
65
68
|
return result;
|
|
66
69
|
}
|
|
67
70
|
catch {
|
|
@@ -154,6 +157,68 @@ export function extractImportsAst(root, langKey) {
|
|
|
154
157
|
}
|
|
155
158
|
return imports;
|
|
156
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Extract the actual imported binding names from import statements.
|
|
162
|
+
* Unlike extractImportsAst() which returns specifier paths ('./utils'),
|
|
163
|
+
* this returns the local binding names (foo, bar, MyClass) that appear
|
|
164
|
+
* in import destructuring. These match against export names for dead
|
|
165
|
+
* export detection.
|
|
166
|
+
*
|
|
167
|
+
* JS/TS only — other languages return empty array.
|
|
168
|
+
*/
|
|
169
|
+
export function extractImportedNames(root, langKey) {
|
|
170
|
+
if (langKey !== 'TypeScript' && langKey !== 'Tsx' && langKey !== 'JavaScript') {
|
|
171
|
+
return [];
|
|
172
|
+
}
|
|
173
|
+
const names = [];
|
|
174
|
+
const importNodes = findAllByKind(root, 'import_statement');
|
|
175
|
+
for (const node of importNodes) {
|
|
176
|
+
const text = node.text();
|
|
177
|
+
// Named imports: import { foo, bar as baz } from '...'
|
|
178
|
+
const namedMatch = text.match(/\{([^}]+)\}/);
|
|
179
|
+
if (namedMatch) {
|
|
180
|
+
for (const part of namedMatch[1].split(',')) {
|
|
181
|
+
const trimmed = part.trim();
|
|
182
|
+
if (!trimmed)
|
|
183
|
+
continue;
|
|
184
|
+
// "foo as bar" → the original export name is "foo"
|
|
185
|
+
const asMatch = trimmed.match(/(\w+)\s+as\s+\w+/);
|
|
186
|
+
// For dead export detection we need the *original* name, not the alias
|
|
187
|
+
names.push(asMatch ? asMatch[1] : trimmed);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Default import: import Foo from '...' → maps to 'default' export
|
|
191
|
+
// Skip — we already skip 'default' in dead export detection
|
|
192
|
+
// Namespace import: import * as ns from '...' → all exports are used
|
|
193
|
+
const nsMatch = text.match(/import\s+\*\s+as\s+\w+\s+from/);
|
|
194
|
+
if (nsMatch) {
|
|
195
|
+
// Mark ALL exports from this module as used — extract the specifier
|
|
196
|
+
// and store a sentinel. We handle this in detectDeadExports by
|
|
197
|
+
// checking against the specifier-to-module mapping.
|
|
198
|
+
const specMatch = text.match(/['"]([^'"]+)['"]/);
|
|
199
|
+
if (specMatch) {
|
|
200
|
+
names.push(`*:${specMatch[1]}`); // sentinel: "all exports from this specifier"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Also handle re-exports: export { foo, bar } from './mod'
|
|
205
|
+
const exportNodes = findAllByKind(root, 'export_statement');
|
|
206
|
+
for (const node of exportNodes) {
|
|
207
|
+
const text = node.text();
|
|
208
|
+
// export { X, Y } from '...' — these names are used (re-exported)
|
|
209
|
+
const reExportMatch = text.match(/export\s*\{([^}]+)\}\s*from\s+['"]([^'"]+)['"]/);
|
|
210
|
+
if (reExportMatch) {
|
|
211
|
+
for (const part of reExportMatch[1].split(',')) {
|
|
212
|
+
const trimmed = part.trim();
|
|
213
|
+
if (!trimmed)
|
|
214
|
+
continue;
|
|
215
|
+
const asMatch = trimmed.match(/(\w+)\s+as\s+\w+/);
|
|
216
|
+
names.push(asMatch ? asMatch[1] : trimmed);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return names;
|
|
221
|
+
}
|
|
157
222
|
// ---------------------------------------------------------------------------
|
|
158
223
|
// Export extraction
|
|
159
224
|
// ---------------------------------------------------------------------------
|
|
@@ -322,6 +387,396 @@ export function findAllByKind(root, kind) {
|
|
|
322
387
|
return result;
|
|
323
388
|
}
|
|
324
389
|
}
|
|
390
|
+
// ---------------------------------------------------------------------------
|
|
391
|
+
// Top-level symbol extraction (for conflict detection)
|
|
392
|
+
// ---------------------------------------------------------------------------
|
|
393
|
+
/** Node kinds that represent top-level declarations, per language family. */
|
|
394
|
+
const TOP_LEVEL_DECL_KINDS = {
|
|
395
|
+
js: {
|
|
396
|
+
function_declaration: 'function',
|
|
397
|
+
class_declaration: 'class',
|
|
398
|
+
variable_declaration: 'variable',
|
|
399
|
+
lexical_declaration: 'variable',
|
|
400
|
+
interface_declaration: 'interface',
|
|
401
|
+
type_alias_declaration: 'type',
|
|
402
|
+
enum_declaration: 'enum',
|
|
403
|
+
export_statement: 'other', // unwrapped below
|
|
404
|
+
},
|
|
405
|
+
python: {
|
|
406
|
+
function_definition: 'function',
|
|
407
|
+
class_definition: 'class',
|
|
408
|
+
assignment: 'variable',
|
|
409
|
+
},
|
|
410
|
+
go: {
|
|
411
|
+
function_declaration: 'function',
|
|
412
|
+
type_declaration: 'type',
|
|
413
|
+
var_declaration: 'variable',
|
|
414
|
+
const_declaration: 'variable',
|
|
415
|
+
},
|
|
416
|
+
rust: {
|
|
417
|
+
function_item: 'function',
|
|
418
|
+
struct_item: 'class',
|
|
419
|
+
enum_item: 'enum',
|
|
420
|
+
impl_item: 'class',
|
|
421
|
+
const_item: 'variable',
|
|
422
|
+
type_alias: 'type',
|
|
423
|
+
},
|
|
424
|
+
java: {
|
|
425
|
+
method_declaration: 'function',
|
|
426
|
+
class_declaration: 'class',
|
|
427
|
+
field_declaration: 'variable',
|
|
428
|
+
interface_declaration: 'interface',
|
|
429
|
+
enum_declaration: 'enum',
|
|
430
|
+
},
|
|
431
|
+
};
|
|
432
|
+
/**
|
|
433
|
+
* Extract a declaration name from node text using language-specific patterns.
|
|
434
|
+
* Returns the symbol name or null if not identifiable.
|
|
435
|
+
*/
|
|
436
|
+
/* eslint-disable security/detect-unsafe-regex -- simple patterns on single-line AST text, no ReDoS risk */
|
|
437
|
+
function extractDeclName(text, kind, family) {
|
|
438
|
+
if (family === 'js') {
|
|
439
|
+
// Unwrap export: "export function foo" → treat as function_declaration
|
|
440
|
+
if (kind === 'export_statement') {
|
|
441
|
+
// export default — skip, anonymous
|
|
442
|
+
if (/^export\s+default\b/.test(text))
|
|
443
|
+
return null;
|
|
444
|
+
// export function foo / export async function foo
|
|
445
|
+
const fnMatch = text.match(/export\s+(?:async\s+)?function\s+(\w+)/);
|
|
446
|
+
if (fnMatch?.[1])
|
|
447
|
+
return fnMatch[1];
|
|
448
|
+
// export class Foo / export abstract class Foo
|
|
449
|
+
const classMatch = text.match(/export\s+(?:abstract\s+)?class\s+(\w+)/);
|
|
450
|
+
if (classMatch?.[1])
|
|
451
|
+
return classMatch[1];
|
|
452
|
+
// export interface Foo / export type Foo
|
|
453
|
+
const typeMatch = text.match(/export\s+(?:interface|type)\s+(\w+)/);
|
|
454
|
+
if (typeMatch?.[1])
|
|
455
|
+
return typeMatch[1];
|
|
456
|
+
// export enum Foo
|
|
457
|
+
const enumMatch = text.match(/export\s+(?:const\s+)?enum\s+(\w+)/);
|
|
458
|
+
if (enumMatch?.[1])
|
|
459
|
+
return enumMatch[1];
|
|
460
|
+
// export const/let/var foo
|
|
461
|
+
const varMatch = text.match(/export\s+(?:const|let|var)\s+(\w+)/);
|
|
462
|
+
if (varMatch?.[1])
|
|
463
|
+
return varMatch[1];
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
466
|
+
const fnMatch = text.match(/(?:async\s+)?function\s+(\w+)/);
|
|
467
|
+
if (fnMatch?.[1])
|
|
468
|
+
return fnMatch[1];
|
|
469
|
+
const classMatch = text.match(/(?:abstract\s+)?class\s+(\w+)/);
|
|
470
|
+
if (classMatch?.[1])
|
|
471
|
+
return classMatch[1];
|
|
472
|
+
const ifaceMatch = text.match(/interface\s+(\w+)/);
|
|
473
|
+
if (ifaceMatch?.[1])
|
|
474
|
+
return ifaceMatch[1];
|
|
475
|
+
const typeMatch = text.match(/type\s+(\w+)/);
|
|
476
|
+
if (typeMatch?.[1])
|
|
477
|
+
return typeMatch[1];
|
|
478
|
+
const enumMatch = text.match(/(?:const\s+)?enum\s+(\w+)/);
|
|
479
|
+
if (enumMatch?.[1])
|
|
480
|
+
return enumMatch[1];
|
|
481
|
+
const varMatch = text.match(/(?:const|let|var)\s+(\w+)/);
|
|
482
|
+
if (varMatch?.[1])
|
|
483
|
+
return varMatch[1];
|
|
484
|
+
}
|
|
485
|
+
else if (family === 'python') {
|
|
486
|
+
if (kind === 'function_definition') {
|
|
487
|
+
const m = text.match(/def\s+(\w+)/);
|
|
488
|
+
return m?.[1] ?? null;
|
|
489
|
+
}
|
|
490
|
+
if (kind === 'class_definition') {
|
|
491
|
+
const m = text.match(/class\s+(\w+)/);
|
|
492
|
+
return m?.[1] ?? null;
|
|
493
|
+
}
|
|
494
|
+
if (kind === 'assignment') {
|
|
495
|
+
const m = text.match(/^(\w+)\s*=/);
|
|
496
|
+
return m?.[1] ?? null;
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
else if (family === 'go') {
|
|
500
|
+
if (kind === 'function_declaration') {
|
|
501
|
+
const m = text.match(/func\s+(\w+)/);
|
|
502
|
+
return m?.[1] ?? null;
|
|
503
|
+
}
|
|
504
|
+
if (kind === 'type_declaration') {
|
|
505
|
+
const m = text.match(/type\s+(\w+)/);
|
|
506
|
+
return m?.[1] ?? null;
|
|
507
|
+
}
|
|
508
|
+
if (kind === 'var_declaration' || kind === 'const_declaration') {
|
|
509
|
+
const m = text.match(/(?:var|const)\s+(\w+)/);
|
|
510
|
+
return m?.[1] ?? null;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
else if (family === 'rust') {
|
|
514
|
+
if (kind === 'function_item') {
|
|
515
|
+
const m = text.match(/fn\s+(\w+)/);
|
|
516
|
+
return m?.[1] ?? null;
|
|
517
|
+
}
|
|
518
|
+
if (kind === 'struct_item') {
|
|
519
|
+
const m = text.match(/struct\s+(\w+)/);
|
|
520
|
+
return m?.[1] ?? null;
|
|
521
|
+
}
|
|
522
|
+
if (kind === 'enum_item') {
|
|
523
|
+
const m = text.match(/enum\s+(\w+)/);
|
|
524
|
+
return m?.[1] ?? null;
|
|
525
|
+
}
|
|
526
|
+
if (kind === 'impl_item') {
|
|
527
|
+
const m = text.match(/impl(?:\s*<[^>]*>)?\s+(\w+)/);
|
|
528
|
+
return m?.[1] ?? null;
|
|
529
|
+
}
|
|
530
|
+
if (kind === 'const_item') {
|
|
531
|
+
const m = text.match(/const\s+(\w+)/);
|
|
532
|
+
return m?.[1] ?? null;
|
|
533
|
+
}
|
|
534
|
+
if (kind === 'type_alias') {
|
|
535
|
+
const m = text.match(/type\s+(\w+)/);
|
|
536
|
+
return m?.[1] ?? null;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
else if (family === 'java') {
|
|
540
|
+
if (kind === 'method_declaration') {
|
|
541
|
+
// Java: return_type method_name(params)
|
|
542
|
+
const m = text.match(/\b(\w+)\s*\(/);
|
|
543
|
+
return m?.[1] ?? null;
|
|
544
|
+
}
|
|
545
|
+
if (kind === 'class_declaration') {
|
|
546
|
+
const m = text.match(/class\s+(\w+)/);
|
|
547
|
+
return m?.[1] ?? null;
|
|
548
|
+
}
|
|
549
|
+
if (kind === 'interface_declaration') {
|
|
550
|
+
const m = text.match(/interface\s+(\w+)/);
|
|
551
|
+
return m?.[1] ?? null;
|
|
552
|
+
}
|
|
553
|
+
if (kind === 'enum_declaration') {
|
|
554
|
+
const m = text.match(/enum\s+(\w+)/);
|
|
555
|
+
return m?.[1] ?? null;
|
|
556
|
+
}
|
|
557
|
+
if (kind === 'field_declaration') {
|
|
558
|
+
// Last word before = or ;
|
|
559
|
+
const m = text.match(/(\w+)\s*[=;]/);
|
|
560
|
+
return m?.[1] ?? null;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
return null;
|
|
564
|
+
}
|
|
565
|
+
/* eslint-enable security/detect-unsafe-regex */
|
|
566
|
+
/**
|
|
567
|
+
* Compute 1-based line numbers from a byte offset within source content.
|
|
568
|
+
* Counts newlines up to the given position.
|
|
569
|
+
*/
|
|
570
|
+
function offsetToLine(content, offset) {
|
|
571
|
+
let line = 1;
|
|
572
|
+
for (let i = 0; i < offset && i < content.length; i++) {
|
|
573
|
+
if (content[i] === '\n')
|
|
574
|
+
line++;
|
|
575
|
+
}
|
|
576
|
+
return line;
|
|
577
|
+
}
|
|
578
|
+
/**
|
|
579
|
+
* Extract top-level symbols (functions, classes, variables, types, etc.)
|
|
580
|
+
* with their line ranges from source code.
|
|
581
|
+
*
|
|
582
|
+
* Unlike extractExportsAst (which only captures exported symbols in JS/TS),
|
|
583
|
+
* this captures ALL top-level declarations — exported or not — since tickets
|
|
584
|
+
* can modify unexported internal functions.
|
|
585
|
+
*
|
|
586
|
+
* Returns null on parse failure (caller falls back to path-based conflict detection).
|
|
587
|
+
*/
|
|
588
|
+
export function extractTopLevelSymbols(content, langKey, astGrep) {
|
|
589
|
+
try {
|
|
590
|
+
const lang = astGrep.Lang[langKey];
|
|
591
|
+
if (!lang)
|
|
592
|
+
return null;
|
|
593
|
+
const root = astGrep.parse(lang, content).root();
|
|
594
|
+
const family = getLangFamily(langKey);
|
|
595
|
+
const declKinds = TOP_LEVEL_DECL_KINDS[family];
|
|
596
|
+
if (!declKinds)
|
|
597
|
+
return null;
|
|
598
|
+
const symbols = [];
|
|
599
|
+
const seen = new Set();
|
|
600
|
+
// Walk only direct children of root (top-level declarations)
|
|
601
|
+
const topChildren = root.children();
|
|
602
|
+
for (const child of topChildren) {
|
|
603
|
+
const nodeKind = child.kind();
|
|
604
|
+
const symbolKind = declKinds[nodeKind];
|
|
605
|
+
if (symbolKind === undefined)
|
|
606
|
+
continue;
|
|
607
|
+
const text = child.text();
|
|
608
|
+
const name = extractDeclName(text, nodeKind, family);
|
|
609
|
+
if (!name || seen.has(name))
|
|
610
|
+
continue;
|
|
611
|
+
seen.add(name);
|
|
612
|
+
// Resolve the actual symbol kind for export_statement wrappers
|
|
613
|
+
let resolvedKind = symbolKind;
|
|
614
|
+
if (nodeKind === 'export_statement') {
|
|
615
|
+
/* eslint-disable security/detect-unsafe-regex -- simple patterns on single-line AST text */
|
|
616
|
+
if (/export\s+(?:async\s+)?function\s/.test(text))
|
|
617
|
+
resolvedKind = 'function';
|
|
618
|
+
else if (/export\s+(?:abstract\s+)?class\s/.test(text))
|
|
619
|
+
resolvedKind = 'class';
|
|
620
|
+
else if (/export\s+(?:interface|type)\s/.test(text))
|
|
621
|
+
resolvedKind = 'type';
|
|
622
|
+
else if (/export\s+(?:const\s+)?enum\s/.test(text))
|
|
623
|
+
resolvedKind = 'enum';
|
|
624
|
+
else if (/export\s+(?:const|let|var)\s/.test(text))
|
|
625
|
+
resolvedKind = 'variable';
|
|
626
|
+
/* eslint-enable security/detect-unsafe-regex */
|
|
627
|
+
}
|
|
628
|
+
// Compute line ranges from text positions within content
|
|
629
|
+
const startOffset = content.indexOf(text);
|
|
630
|
+
if (startOffset === -1)
|
|
631
|
+
continue;
|
|
632
|
+
const startLine = offsetToLine(content, startOffset);
|
|
633
|
+
const endLine = offsetToLine(content, startOffset + text.length);
|
|
634
|
+
symbols.push({ name, kind: resolvedKind, startLine, endLine });
|
|
635
|
+
}
|
|
636
|
+
return symbols;
|
|
637
|
+
}
|
|
638
|
+
catch {
|
|
639
|
+
return null; // parse error — caller falls back to path-based
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
// ---------------------------------------------------------------------------
|
|
643
|
+
// Call edge extraction
|
|
644
|
+
// ---------------------------------------------------------------------------
|
|
645
|
+
/** Max call edges per file to avoid bloating the cache. */
|
|
646
|
+
const MAX_CALL_EDGES_PER_FILE = 50;
|
|
647
|
+
/**
|
|
648
|
+
* Extract named import bindings from JS/TS import statements.
|
|
649
|
+
* Returns a map: importedName → module specifier.
|
|
650
|
+
*
|
|
651
|
+
* Handles: `import { foo, bar as baz } from './mod'`
|
|
652
|
+
* `import X from './mod'`
|
|
653
|
+
* `const { foo } = require('./mod')`
|
|
654
|
+
*/
|
|
655
|
+
function extractImportBindings(root, langKey) {
|
|
656
|
+
const bindings = new Map();
|
|
657
|
+
const family = getLangFamily(langKey);
|
|
658
|
+
if (family !== 'js')
|
|
659
|
+
return bindings;
|
|
660
|
+
const importNodes = findAllByKind(root, 'import_statement');
|
|
661
|
+
for (const node of importNodes) {
|
|
662
|
+
const text = node.text();
|
|
663
|
+
const specMatch = text.match(/['"]([^'"]+)['"]/);
|
|
664
|
+
if (!specMatch)
|
|
665
|
+
continue;
|
|
666
|
+
const specifier = specMatch[1];
|
|
667
|
+
// Named imports: import { foo, bar as baz } from '...'
|
|
668
|
+
const namedMatch = text.match(/\{([^}]+)\}/);
|
|
669
|
+
if (namedMatch) {
|
|
670
|
+
for (const part of namedMatch[1].split(',')) {
|
|
671
|
+
const trimmed = part.trim();
|
|
672
|
+
// "foo as bar" → bind "bar", "foo" → bind "foo"
|
|
673
|
+
const asMatch = trimmed.match(/(\w+)\s+as\s+(\w+)/);
|
|
674
|
+
bindings.set(asMatch ? asMatch[2] : trimmed, specifier);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
// Default import: import Foo from '...'
|
|
678
|
+
const defaultMatch = text.match(/import\s+(\w+)\s+from/);
|
|
679
|
+
if (defaultMatch) {
|
|
680
|
+
bindings.set(defaultMatch[1], specifier);
|
|
681
|
+
}
|
|
682
|
+
// Namespace import: import * as ns from '...'
|
|
683
|
+
const nsMatch = text.match(/import\s+\*\s+as\s+(\w+)\s+from/);
|
|
684
|
+
if (nsMatch) {
|
|
685
|
+
bindings.set(nsMatch[1], specifier);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
return bindings;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Extract call edges from a parsed AST.
|
|
692
|
+
*
|
|
693
|
+
* For each top-level function symbol, finds call expressions and maps them
|
|
694
|
+
* to either imported symbols (cross-file) or local top-level functions.
|
|
695
|
+
* Returns null on parse failure.
|
|
696
|
+
*
|
|
697
|
+
* JS/TS only for now — other languages return empty array.
|
|
698
|
+
*/
|
|
699
|
+
export function extractCallEdges(content, langKey, astGrep, symbols) {
|
|
700
|
+
const family = getLangFamily(langKey);
|
|
701
|
+
if (family !== 'js')
|
|
702
|
+
return [];
|
|
703
|
+
try {
|
|
704
|
+
const lang = astGrep.Lang[langKey];
|
|
705
|
+
if (!lang)
|
|
706
|
+
return null;
|
|
707
|
+
const root = astGrep.parse(lang, content).root();
|
|
708
|
+
const importBindings = extractImportBindings(root, langKey);
|
|
709
|
+
const localSymbolNames = new Set(symbols?.map(s => s.name) ?? []);
|
|
710
|
+
const edges = [];
|
|
711
|
+
// Find all call expressions
|
|
712
|
+
const callNodes = findAllByKind(root, 'call_expression');
|
|
713
|
+
for (const callNode of callNodes) {
|
|
714
|
+
if (edges.length >= MAX_CALL_EDGES_PER_FILE)
|
|
715
|
+
break;
|
|
716
|
+
const callText = callNode.text();
|
|
717
|
+
// Extract the function name being called
|
|
718
|
+
// Handles: foo(), bar.baz(), ns.func()
|
|
719
|
+
let callee = null;
|
|
720
|
+
// Method call: obj.method(...)
|
|
721
|
+
const methodMatch = callText.match(/^(\w+)\.(\w+)\s*\(/);
|
|
722
|
+
if (methodMatch) {
|
|
723
|
+
const obj = methodMatch[1];
|
|
724
|
+
const method = methodMatch[2];
|
|
725
|
+
// Check if obj is a namespace import
|
|
726
|
+
if (importBindings.has(obj)) {
|
|
727
|
+
callee = method;
|
|
728
|
+
const callLine = offsetToLine(content, content.indexOf(callText));
|
|
729
|
+
const caller = findEnclosingFunction(callLine, symbols);
|
|
730
|
+
if (caller) {
|
|
731
|
+
edges.push({
|
|
732
|
+
caller: caller.name,
|
|
733
|
+
callee,
|
|
734
|
+
line: callLine,
|
|
735
|
+
importSource: importBindings.get(obj),
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
continue;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
// Simple call: foo(...)
|
|
742
|
+
const simpleMatch = callText.match(/^(\w+)\s*\(/);
|
|
743
|
+
if (simpleMatch) {
|
|
744
|
+
callee = simpleMatch[1];
|
|
745
|
+
// Skip common globals/builtins
|
|
746
|
+
if (/^(console|Math|JSON|Object|Array|String|Number|Boolean|Date|RegExp|Error|Promise|Set|Map|WeakMap|WeakSet|Symbol|setTimeout|setInterval|clearTimeout|clearInterval|parseInt|parseFloat|require|import)$/.test(callee)) {
|
|
747
|
+
continue;
|
|
748
|
+
}
|
|
749
|
+
const callLine = offsetToLine(content, content.indexOf(callText));
|
|
750
|
+
const caller = findEnclosingFunction(callLine, symbols);
|
|
751
|
+
if (!caller)
|
|
752
|
+
continue;
|
|
753
|
+
const importSource = importBindings.get(callee);
|
|
754
|
+
if (importSource || localSymbolNames.has(callee)) {
|
|
755
|
+
edges.push({
|
|
756
|
+
caller: caller.name,
|
|
757
|
+
callee,
|
|
758
|
+
line: callLine,
|
|
759
|
+
...(importSource ? { importSource } : {}),
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
return edges;
|
|
765
|
+
}
|
|
766
|
+
catch {
|
|
767
|
+
return null;
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
/** Find the enclosing function symbol for a given line. */
|
|
771
|
+
function findEnclosingFunction(line, symbols) {
|
|
772
|
+
if (!symbols?.length)
|
|
773
|
+
return undefined;
|
|
774
|
+
return symbols.find(s => (s.kind === 'function' || s.kind === 'class') &&
|
|
775
|
+
s.startLine <= line && line <= s.endLine);
|
|
776
|
+
}
|
|
777
|
+
// ---------------------------------------------------------------------------
|
|
778
|
+
// Helpers
|
|
779
|
+
// ---------------------------------------------------------------------------
|
|
325
780
|
/** Extract the first string literal value from a node's children. */
|
|
326
781
|
function extractStringLiteral(node) {
|
|
327
782
|
const text = node.text();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-analysis.js","sourceRoot":"","sources":["../../src/codebase-index/ast-analysis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ast-analysis.js","sourceRoot":"","sources":["../../src/codebase-index/ast-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Cache location: .promptwheel/ast-cache.json
|
|
9
9
|
* ~200 bytes per entry → ~200KB for 1000 files.
|
|
10
10
|
*/
|
|
11
|
-
import type { ExportEntry, AstFinding } from './shared.js';
|
|
11
|
+
import type { ExportEntry, AstFinding, SymbolRange, CallEdge } from './shared.js';
|
|
12
12
|
export interface AstCacheEntry {
|
|
13
13
|
mtime: number;
|
|
14
14
|
size: number;
|
|
@@ -17,6 +17,14 @@ export interface AstCacheEntry {
|
|
|
17
17
|
complexity: number;
|
|
18
18
|
findings?: AstFinding[];
|
|
19
19
|
findingsVersion?: number;
|
|
20
|
+
/** Top-level symbol names + line ranges (for conflict detection). */
|
|
21
|
+
symbols?: SymbolRange[];
|
|
22
|
+
/** Cross-file call edges (caller → callee via imports). */
|
|
23
|
+
callEdges?: CallEdge[];
|
|
24
|
+
/** Actual imported binding names (for dead export detection accuracy). */
|
|
25
|
+
importedNames?: string[];
|
|
26
|
+
/** Per-pattern versions at time of scan. Used for granular invalidation. */
|
|
27
|
+
patternVersions?: Record<string, number>;
|
|
20
28
|
}
|
|
21
29
|
export type AstCache = Record<string, AstCacheEntry>;
|
|
22
30
|
/** Load the AST cache from disk. Returns empty cache if missing or corrupted. */
|