feat: Improve Java extraction, multi-symbol aggregation, and impact traversal

Java extraction:
- Handle Java method_invocation AST (receiver.method pattern)
- Support Java extends_interfaces and super_interfaces with type_list
- Create unresolved references for Java imports for cross-file resolution
- Extract interface inheritance via extractInheritance

MCP tools:
- Aggregate callers/callees/impact across ALL matching symbols (e.g. multiple
  overloads or same-named methods in different classes)
- New findAllSymbols() helper for multi-symbol lookup

Graph traversal:
- Impact analysis now traverses into container children (class → methods)
  so that callers of methods appear in the impact radius of their class

Other:
- Add deleteSpecificResolvedReferences() for precise cleanup after resolution
- Add 'instance-method' to resolvedBy union type
- Version bump to 0.6.8

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Colby McHenry
2026-04-03 12:30:28 -05:00
co-authored by Claude Opus 4.6
parent 8b541be894
commit d04a911309
7 changed files with 195 additions and 52 deletions
+17
View File
@@ -926,6 +926,23 @@ export class QueryBuilder {
this.db.prepare(`DELETE FROM unresolved_refs WHERE from_node_id IN (${placeholders})`).run(...fromNodeIds);
}
/**
* Delete specific resolved references by (fromNodeId, referenceName, referenceKind) tuples.
* More precise than deleteResolvedReferences — only removes refs that were actually resolved.
*/
deleteSpecificResolvedReferences(refs: Array<{ fromNodeId: string; referenceName: string; referenceKind: string }>): void {
if (refs.length === 0) return;
const stmt = this.db.prepare(
'DELETE FROM unresolved_refs WHERE from_node_id = ? AND reference_name = ? AND reference_kind = ?'
);
const deleteMany = this.db.transaction((items: typeof refs) => {
for (const ref of items) {
stmt.run(ref.fromNodeId, ref.referenceName, ref.referenceKind);
}
});
deleteMany(refs);
}
// ===========================================================================
// Statistics
// ===========================================================================