@grafema/core 0.2.8 → 0.2.9

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.
Files changed (72) hide show
  1. package/dist/Orchestrator.d.ts +3 -1
  2. package/dist/Orchestrator.d.ts.map +1 -1
  3. package/dist/Orchestrator.js +25 -8
  4. package/dist/Orchestrator.js.map +1 -1
  5. package/dist/PhaseRunner.d.ts +4 -5
  6. package/dist/PhaseRunner.d.ts.map +1 -1
  7. package/dist/PhaseRunner.js +31 -20
  8. package/dist/PhaseRunner.js.map +1 -1
  9. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  10. package/dist/plugins/analysis/DatabaseAnalyzer.js +3 -4
  11. package/dist/plugins/analysis/DatabaseAnalyzer.js.map +1 -1
  12. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  13. package/dist/plugins/analysis/ExpressAnalyzer.js +1 -0
  14. package/dist/plugins/analysis/ExpressAnalyzer.js.map +1 -1
  15. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -1
  16. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +11 -34
  17. package/dist/plugins/analysis/ExpressResponseAnalyzer.js.map +1 -1
  18. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  19. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +1 -0
  20. package/dist/plugins/analysis/ExpressRouteAnalyzer.js.map +1 -1
  21. package/dist/plugins/analysis/NestJSRouteAnalyzer.d.ts.map +1 -1
  22. package/dist/plugins/analysis/NestJSRouteAnalyzer.js +1 -0
  23. package/dist/plugins/analysis/NestJSRouteAnalyzer.js.map +1 -1
  24. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  25. package/dist/plugins/analysis/ReactAnalyzer.js +1 -0
  26. package/dist/plugins/analysis/ReactAnalyzer.js.map +1 -1
  27. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  28. package/dist/plugins/analysis/SQLiteAnalyzer.js +7 -9
  29. package/dist/plugins/analysis/SQLiteAnalyzer.js.map +1 -1
  30. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  31. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +7 -9
  32. package/dist/plugins/analysis/ServiceLayerAnalyzer.js.map +1 -1
  33. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  34. package/dist/plugins/analysis/SocketIOAnalyzer.js +1 -0
  35. package/dist/plugins/analysis/SocketIOAnalyzer.js.map +1 -1
  36. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +18 -8
  37. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  38. package/dist/plugins/analysis/ast/GraphBuilder.js +92 -34
  39. package/dist/plugins/analysis/ast/GraphBuilder.js.map +1 -1
  40. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  41. package/dist/plugins/enrichment/MethodCallResolver.js +8 -3
  42. package/dist/plugins/enrichment/MethodCallResolver.js.map +1 -1
  43. package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts +22 -0
  44. package/dist/plugins/enrichment/method-call/MethodCallIndexers.d.ts.map +1 -1
  45. package/dist/plugins/enrichment/method-call/MethodCallIndexers.js +138 -0
  46. package/dist/plugins/enrichment/method-call/MethodCallIndexers.js.map +1 -1
  47. package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts +11 -1
  48. package/dist/plugins/enrichment/method-call/MethodCallResolution.d.ts.map +1 -1
  49. package/dist/plugins/enrichment/method-call/MethodCallResolution.js +39 -1
  50. package/dist/plugins/enrichment/method-call/MethodCallResolution.js.map +1 -1
  51. package/dist/storage/backends/RFDBServerBackend.d.ts +9 -0
  52. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  53. package/dist/storage/backends/RFDBServerBackend.js +40 -0
  54. package/dist/storage/backends/RFDBServerBackend.js.map +1 -1
  55. package/package.json +3 -3
  56. package/src/Orchestrator.ts +25 -8
  57. package/src/PhaseRunner.ts +34 -24
  58. package/src/plugins/analysis/DatabaseAnalyzer.ts +3 -5
  59. package/src/plugins/analysis/ExpressAnalyzer.ts +1 -0
  60. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +11 -36
  61. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +1 -0
  62. package/src/plugins/analysis/NestJSRouteAnalyzer.ts +1 -0
  63. package/src/plugins/analysis/ReactAnalyzer.ts +1 -0
  64. package/src/plugins/analysis/SQLiteAnalyzer.ts +10 -11
  65. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +7 -9
  66. package/src/plugins/analysis/SocketIOAnalyzer.ts +1 -0
  67. package/src/plugins/analysis/ast/GraphBuilder.ts +96 -35
  68. package/src/plugins/analysis/ast/builders/types.ts +1 -1
  69. package/src/plugins/enrichment/MethodCallResolver.ts +17 -3
  70. package/src/plugins/enrichment/method-call/MethodCallIndexers.ts +159 -0
  71. package/src/plugins/enrichment/method-call/MethodCallResolution.ts +53 -1
  72. package/src/storage/backends/RFDBServerBackend.ts +39 -0
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * GraphBuilder - orchestrator that delegates to domain-specific builders
3
- * OPTIMIZED: Uses batched writes to reduce FFI overhead
3
+ * Writes nodes/edges directly to graph during RFDBClient batch window.
4
+ * Only FUNCTION nodes are deferred (pending metadata mutation by ModuleRuntimeBuilder).
4
5
  */
5
6
  import { brandNodeInternal } from '../../../core/brandNodeInternal.js';
6
7
  import { parseSemanticId } from '../../../core/SemanticId.js';
@@ -8,7 +9,15 @@ import { CoreBuilder, ControlFlowBuilder, AssignmentBuilder, CallFlowBuilder, Mu
8
9
  export class GraphBuilder {
9
10
  // Track singleton nodes to avoid duplicates (net:stdio, net:request, etc.)
10
11
  _createdSingletons = new Set();
11
- // Batching buffers for optimized writes
12
+ // Graph reference for direct writes (set during build(), cleared after)
13
+ _graph = null;
14
+ // Pending function nodes (deferred until domain builders can mutate metadata)
15
+ _pendingFunctions = new Map();
16
+ // Sync batch mode: push directly to RFDBClient batch arrays (no intermediate buffer)
17
+ _useSyncBatch = false;
18
+ _directNodeCount = 0;
19
+ _directEdgeCount = 0;
20
+ // Fallback buffers (when graph.batchNode is not available)
12
21
  _nodeBuffer = [];
13
22
  _edgeBuffer = [];
14
23
  // Domain builders
@@ -41,7 +50,7 @@ export class GraphBuilder {
41
50
  bufferEdge: (edge) => this._bufferEdge(edge),
42
51
  isCreated: (key) => this._createdSingletons.has(key),
43
52
  markCreated: (key) => { this._createdSingletons.add(key); },
44
- findBufferedNode: (id) => this._nodeBuffer.find(n => n.id === id),
53
+ findBufferedNode: (id) => this._pendingFunctions.get(id),
45
54
  findFunctionByName: (functions, name, file, callScopeId) => this.findFunctionByName(functions, name, file, callScopeId),
46
55
  resolveVariableInScope: (name, scopePath, file, variables) => this.resolveVariableInScope(name, scopePath, file, variables),
47
56
  resolveParameterInScope: (name, scopePath, file, parameters) => this.resolveParameterInScope(name, scopePath, file, parameters),
@@ -49,43 +58,79 @@ export class GraphBuilder {
49
58
  };
50
59
  }
51
60
  /**
52
- * Buffer a node for batched writing
61
+ * Buffer a node for batched writing.
62
+ * INVARIANT: Only FUNCTION nodes are deferred (stored in _pendingFunctions)
63
+ * because ModuleRuntimeBuilder mutates their metadata (rejectionPatterns)
64
+ * after buffering. All other nodes go to sync batch or fallback buffer.
53
65
  */
54
66
  _bufferNode(node) {
55
- this._nodeBuffer.push(node);
67
+ if (!this._graph)
68
+ throw new Error('_bufferNode called outside build() — _graph is null');
69
+ const branded = brandNodeInternal(node);
70
+ if (node.type === 'FUNCTION') {
71
+ this._pendingFunctions.set(node.id, branded);
72
+ }
73
+ else if (this._useSyncBatch) {
74
+ this._graph.batchNode(branded);
75
+ this._directNodeCount++;
76
+ }
77
+ else {
78
+ this._nodeBuffer.push(branded);
79
+ }
56
80
  }
57
81
  /**
58
- * Buffer an edge for batched writing
82
+ * Buffer an edge for batched writing.
59
83
  */
60
84
  _bufferEdge(edge) {
61
- this._edgeBuffer.push(edge);
85
+ if (!this._graph)
86
+ throw new Error('_bufferEdge called outside build() — _graph is null');
87
+ if (this._useSyncBatch) {
88
+ this._graph.batchEdge(edge);
89
+ this._directEdgeCount++;
90
+ }
91
+ else {
92
+ this._edgeBuffer.push(edge);
93
+ }
62
94
  }
63
95
  /**
64
- * Flush all buffered nodes to the graph
96
+ * Flush pending function nodes to the graph.
97
+ * In sync batch mode, pushes each to batchNode. In fallback mode, uses addNodes.
98
+ * Returns count of function nodes flushed.
65
99
  */
66
- async _flushNodes(graph) {
67
- if (this._nodeBuffer.length > 0) {
68
- // Brand nodes before flushing - they're validated by builders
69
- const brandedNodes = this._nodeBuffer.map(node => brandNodeInternal(node));
70
- await graph.addNodes(brandedNodes);
71
- const count = this._nodeBuffer.length;
72
- this._nodeBuffer = [];
73
- return count;
100
+ async _flushPendingFunctions(graph) {
101
+ const pendingFunctions = Array.from(this._pendingFunctions.values());
102
+ if (pendingFunctions.length === 0)
103
+ return 0;
104
+ // Nodes already branded in _bufferNode() — no need to brand again
105
+ if (this._useSyncBatch) {
106
+ for (const node of pendingFunctions) {
107
+ graph.batchNode(node);
108
+ }
109
+ }
110
+ else {
111
+ await graph.addNodes(pendingFunctions);
74
112
  }
75
- return 0;
113
+ const count = pendingFunctions.length;
114
+ this._pendingFunctions.clear();
115
+ return count;
76
116
  }
77
117
  /**
78
- * Flush all buffered edges to the graph
79
- * Note: skip_validation=true because nodes were just flushed
118
+ * Flush fallback buffers (only used when sync batch is not available).
80
119
  */
81
- async _flushEdges(graph) {
120
+ async _flushFallbackBuffers(graph) {
121
+ let nodesCreated = 0;
122
+ if (this._nodeBuffer.length > 0) {
123
+ await graph.addNodes(this._nodeBuffer);
124
+ nodesCreated = this._nodeBuffer.length;
125
+ }
126
+ let edgesCreated = 0;
82
127
  if (this._edgeBuffer.length > 0) {
83
- await graph.addEdges(this._edgeBuffer, true /* skip_validation */);
84
- const count = this._edgeBuffer.length;
85
- this._edgeBuffer = [];
86
- return count;
128
+ await graph.addEdges(this._edgeBuffer, true);
129
+ edgesCreated = this._edgeBuffer.length;
87
130
  }
88
- return 0;
131
+ this._nodeBuffer = [];
132
+ this._edgeBuffer = [];
133
+ return { nodes: nodesCreated, edges: edgesCreated };
89
134
  }
90
135
  /**
91
136
  * Создаёт ноды и рёбра в графе (BATCHED VERSION)
@@ -95,7 +140,12 @@ export class GraphBuilder {
95
140
  const { functions, parameters = [], scopes, branches = [], cases = [], loops = [], tryBlocks = [], catchBlocks = [], finallyBlocks = [], variableDeclarations, callSites, constructorCalls = [],
96
141
  // Post-flush fields
97
142
  variableAssignments = [], propertyAccesses = [], hasTopLevelAwait = false } = data;
98
- // Reset buffers for this build
143
+ // Reset state for this build
144
+ this._graph = graph;
145
+ this._pendingFunctions.clear();
146
+ this._useSyncBatch = typeof graph.batchNode === 'function' && typeof graph.batchEdge === 'function';
147
+ this._directNodeCount = 0;
148
+ this._directEdgeCount = 0;
99
149
  this._nodeBuffer = [];
100
150
  this._edgeBuffer = [];
101
151
  // 1. Buffer all functions (without edges)
@@ -201,9 +251,18 @@ export class GraphBuilder {
201
251
  this._yieldBuilder.buffer(module, data);
202
252
  this._typeSystemBuilder.buffer(module, data);
203
253
  this._moduleRuntimeBuilder.buffer(module, data);
204
- // FLUSH: Write all nodes first, then edges in single batch calls
205
- const nodesCreated = await this._flushNodes(graph);
206
- const edgesCreated = await this._flushEdges(graph);
254
+ // FLUSH: Write pending function nodes (after domain builders mutated metadata)
255
+ const functionsCount = await this._flushPendingFunctions(graph);
256
+ // Flush fallback buffers if not using sync batch
257
+ let fallbackNodes = 0;
258
+ let fallbackEdges = 0;
259
+ if (!this._useSyncBatch) {
260
+ const fallback = await this._flushFallbackBuffers(graph);
261
+ fallbackNodes = fallback.nodes;
262
+ fallbackEdges = fallback.edges;
263
+ }
264
+ const nodesCreated = this._useSyncBatch ? this._directNodeCount + functionsCount : fallbackNodes + functionsCount;
265
+ const edgesCreated = this._useSyncBatch ? this._directEdgeCount : fallbackEdges;
207
266
  // Handle async operations for ASSIGNED_FROM with CLASS lookups
208
267
  const classAssignmentEdges = await this.createClassAssignmentEdges(variableAssignments, graph);
209
268
  // REG-300: Update MODULE node with import.meta metadata
@@ -211,6 +270,7 @@ export class GraphBuilder {
211
270
  await this.updateModuleImportMetaMetadata(module, graph, importMetaProps);
212
271
  // REG-297: Update MODULE node with hasTopLevelAwait metadata
213
272
  await this.updateModuleTopLevelAwaitMetadata(module, graph, hasTopLevelAwait);
273
+ this._graph = null; // release reference
214
274
  return { nodes: nodesCreated, edges: edgesCreated + classAssignmentEdges };
215
275
  }
216
276
  // ============= SHARED UTILITY METHODS =============
@@ -407,11 +467,9 @@ export class GraphBuilder {
407
467
  const parts = variableId.split('#');
408
468
  const file = parts.length >= 3 ? parts[2] : null;
409
469
  let classNode = null;
410
- for await (const node of graph.queryNodes({ type: 'CLASS' })) {
411
- if (node.name === className && (!file || node.file === file)) {
412
- classNode = node;
413
- break;
414
- }
470
+ for await (const node of graph.queryNodes(file ? { type: 'CLASS', name: className, file } : { type: 'CLASS', name: className })) {
471
+ classNode = node;
472
+ break;
415
473
  }
416
474
  if (classNode) {
417
475
  await graph.addEdge({
@@ -1 +1 @@
1
- {"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../../../src/plugins/analysis/ast/GraphBuilder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAahF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAY7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CAiN7D"}
1
+ {"version":3,"file":"MethodCallResolver.d.ts","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,EAAuB,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkBhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,qBAAa,kBAAmB,SAAQ,MAAM;IAC5C,IAAI,QAAQ,IAAI,cAAc,CAY7B;IAEK,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CA0N7D"}
@@ -22,7 +22,7 @@ import { StrictModeError } from '../../errors/GrafemaError.js';
22
22
  // Import from extracted modules
23
23
  import { BUILTIN_PROTOTYPE_METHODS } from './method-call/MethodCallData.js';
24
24
  import { isExternalMethod, isBuiltInObject, trackLibraryCall } from './method-call/MethodCallDetectors.js';
25
- import { buildClassMethodIndex, buildVariableTypeIndex } from './method-call/MethodCallIndexers.js';
25
+ import { buildClassMethodIndex, buildVariableTypeIndex, buildInterfaceMethodIndex, buildInterfaceImplementationIndex } from './method-call/MethodCallIndexers.js';
26
26
  import { resolveMethodCall } from './method-call/MethodCallResolution.js';
27
27
  import { analyzeResolutionFailure, generateContextualSuggestion } from './method-call/MethodCallErrorAnalysis.js';
28
28
  // Re-export for backward compatibility (used by packages/core/src/index.ts)
@@ -37,7 +37,7 @@ export class MethodCallResolver extends Plugin {
37
37
  edges: ['CALLS']
38
38
  },
39
39
  dependencies: ['ImportExportLinker'],
40
- consumes: ['CONTAINS', 'INSTANCE_OF', 'DERIVES_FROM'],
40
+ consumes: ['CONTAINS', 'INSTANCE_OF', 'DERIVES_FROM', 'IMPLEMENTS', 'EXTENDS'],
41
41
  produces: ['CALLS']
42
42
  };
43
43
  }
@@ -87,6 +87,11 @@ export class MethodCallResolver extends Plugin {
87
87
  const classMethodIndex = await buildClassMethodIndex(graph, logger);
88
88
  logger.info('Indexed classes', { count: classMethodIndex.size });
89
89
  const variableTypes = await buildVariableTypeIndex(graph, logger);
90
+ // Build interface indexes for CHA fallback (REG-485)
91
+ const methodToInterfaces = await buildInterfaceMethodIndex(graph, logger);
92
+ logger.info('Indexed interface methods', { methods: methodToInterfaces.size });
93
+ const interfaceImpls = await buildInterfaceImplementationIndex(graph, logger);
94
+ logger.info('Indexed interface implementations', { interfaces: interfaceImpls.size });
90
95
  // Cache for containing class lookups (local to this execution)
91
96
  const containingClassCache = new Map();
92
97
  const startTime = Date.now();
@@ -131,7 +136,7 @@ export class MethodCallResolver extends Plugin {
131
136
  continue; // Already linked
132
137
  }
133
138
  // Try to find method definition
134
- const targetMethod = await resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache);
139
+ const targetMethod = await resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache, methodToInterfaces, interfaceImpls);
135
140
  if (targetMethod) {
136
141
  await graph.addEdge({
137
142
  src: methodCall.id,
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallResolver.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MethodCallResolver.js","sourceRoot":"","sources":["../../../src/plugins/enrichment/MethodCallResolver.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,28 @@ import type { ClassEntry } from './MethodCallData.js';
12
12
  * Each class is indexed by name and by file:name for local resolution.
13
13
  */
14
14
  export declare function buildClassMethodIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, ClassEntry>>;
15
+ /**
16
+ * Builds an index of interface methods for CHA-based resolution (REG-485).
17
+ * Maps method name to the set of interface names that declare (or inherit) that method.
18
+ *
19
+ * Algorithm:
20
+ * 1. Query all INTERFACE nodes and extract method names from properties
21
+ * 2. Track EXTENDS edges between interfaces
22
+ * 3. Flatten inherited methods (walk EXTENDS chain with cycle protection, max depth 10)
23
+ * 4. Build final map: method name -> set of interface names
24
+ */
25
+ export declare function buildInterfaceMethodIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, Set<string>>>;
26
+ /**
27
+ * Builds an index of interface implementations for CHA-based resolution (REG-485).
28
+ * Maps interface name to the set of class names that implement it.
29
+ *
30
+ * Algorithm:
31
+ * 1. Query all CLASS nodes
32
+ * 2. For each class, get outgoing IMPLEMENTS edges
33
+ * 3. For each IMPLEMENTS edge, get the target INTERFACE node name
34
+ * 4. Accumulate: interface name -> Set of class names
35
+ */
36
+ export declare function buildInterfaceImplementationIndex(graph: PluginContext['graph'], logger: Logger): Promise<Map<string, Set<string>>>;
15
37
  /**
16
38
  * Builds an index of variables and their types (from INSTANCE_OF edges).
17
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallIndexers.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAwClC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgB9B"}
1
+ {"version":3,"file":"MethodCallIndexers.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAwClC;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAmGnC;AAED;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CA8BnC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAgB9B"}
@@ -42,6 +42,144 @@ export async function buildClassMethodIndex(graph, logger) {
42
42
  logger.debug('Indexed class entries', { count: index.size, time: `${totalTime}s` });
43
43
  return index;
44
44
  }
45
+ /**
46
+ * Builds an index of interface methods for CHA-based resolution (REG-485).
47
+ * Maps method name to the set of interface names that declare (or inherit) that method.
48
+ *
49
+ * Algorithm:
50
+ * 1. Query all INTERFACE nodes and extract method names from properties
51
+ * 2. Track EXTENDS edges between interfaces
52
+ * 3. Flatten inherited methods (walk EXTENDS chain with cycle protection, max depth 10)
53
+ * 4. Build final map: method name -> set of interface names
54
+ */
55
+ export async function buildInterfaceMethodIndex(graph, logger) {
56
+ const startTime = Date.now();
57
+ const index = new Map();
58
+ // Collect direct methods per interface and EXTENDS relationships
59
+ const interfaceMethods = new Map();
60
+ const interfaceExtends = new Map();
61
+ for await (const node of graph.queryNodes({ nodeType: 'INTERFACE' })) {
62
+ const interfaceName = node.name;
63
+ if (!interfaceName)
64
+ continue;
65
+ // Parse properties field (may be JSON string or already parsed array)
66
+ let properties = [];
67
+ if (node.properties) {
68
+ try {
69
+ properties = typeof node.properties === 'string'
70
+ ? JSON.parse(node.properties)
71
+ : node.properties;
72
+ }
73
+ catch {
74
+ // Skip unparseable properties
75
+ }
76
+ }
77
+ const methods = new Set();
78
+ if (Array.isArray(properties)) {
79
+ for (const prop of properties) {
80
+ if (prop && typeof prop.name === 'string' && prop.name) {
81
+ methods.add(prop.name);
82
+ }
83
+ }
84
+ }
85
+ interfaceMethods.set(interfaceName, methods);
86
+ // Track EXTENDS edges for inheritance flattening
87
+ const extendsEdges = await graph.getOutgoingEdges(node.id, ['EXTENDS']);
88
+ if (extendsEdges.length > 0) {
89
+ const parentNames = [];
90
+ for (const edge of extendsEdges) {
91
+ const parentNode = await graph.getNode(edge.dst);
92
+ if (parentNode && parentNode.name) {
93
+ parentNames.push(parentNode.name);
94
+ }
95
+ }
96
+ if (parentNames.length > 0) {
97
+ interfaceExtends.set(interfaceName, parentNames);
98
+ }
99
+ }
100
+ }
101
+ // Flatten inherited methods with cycle protection
102
+ const resolvedMethods = new Map();
103
+ function collectMethods(name, visited, depth) {
104
+ if (depth > 10 || visited.has(name))
105
+ return new Set();
106
+ if (resolvedMethods.has(name))
107
+ return resolvedMethods.get(name);
108
+ visited.add(name);
109
+ const ownMethods = interfaceMethods.get(name) || new Set();
110
+ const allMethods = new Set(ownMethods);
111
+ const parents = interfaceExtends.get(name);
112
+ if (parents) {
113
+ for (const parent of parents) {
114
+ const parentMethods = collectMethods(parent, visited, depth + 1);
115
+ for (const m of parentMethods) {
116
+ allMethods.add(m);
117
+ }
118
+ }
119
+ }
120
+ resolvedMethods.set(name, allMethods);
121
+ return allMethods;
122
+ }
123
+ for (const name of interfaceMethods.keys()) {
124
+ collectMethods(name, new Set(), 0);
125
+ }
126
+ // Build final index: method name -> set of interface names
127
+ for (const [interfaceName, methods] of resolvedMethods) {
128
+ for (const methodName of methods) {
129
+ let interfaces = index.get(methodName);
130
+ if (!interfaces) {
131
+ interfaces = new Set();
132
+ index.set(methodName, interfaces);
133
+ }
134
+ interfaces.add(interfaceName);
135
+ }
136
+ }
137
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
138
+ logger.debug('Built interface method index', {
139
+ interfaces: interfaceMethods.size,
140
+ methods: index.size,
141
+ time: `${elapsed}s`
142
+ });
143
+ return index;
144
+ }
145
+ /**
146
+ * Builds an index of interface implementations for CHA-based resolution (REG-485).
147
+ * Maps interface name to the set of class names that implement it.
148
+ *
149
+ * Algorithm:
150
+ * 1. Query all CLASS nodes
151
+ * 2. For each class, get outgoing IMPLEMENTS edges
152
+ * 3. For each IMPLEMENTS edge, get the target INTERFACE node name
153
+ * 4. Accumulate: interface name -> Set of class names
154
+ */
155
+ export async function buildInterfaceImplementationIndex(graph, logger) {
156
+ const startTime = Date.now();
157
+ const index = new Map();
158
+ for await (const classNode of graph.queryNodes({ nodeType: 'CLASS' })) {
159
+ const className = classNode.name;
160
+ if (!className)
161
+ continue;
162
+ const implementsEdges = await graph.getOutgoingEdges(classNode.id, ['IMPLEMENTS']);
163
+ for (const edge of implementsEdges) {
164
+ const interfaceNode = await graph.getNode(edge.dst);
165
+ if (!interfaceNode || !interfaceNode.name)
166
+ continue;
167
+ const interfaceName = interfaceNode.name;
168
+ let classes = index.get(interfaceName);
169
+ if (!classes) {
170
+ classes = new Set();
171
+ index.set(interfaceName, classes);
172
+ }
173
+ classes.add(className);
174
+ }
175
+ }
176
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
177
+ logger.debug('Built interface implementation index', {
178
+ interfaces: index.size,
179
+ time: `${elapsed}s`
180
+ });
181
+ return index;
182
+ }
45
183
  /**
46
184
  * Builds an index of variables and their types (from INSTANCE_OF edges).
47
185
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallIndexers.js","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MethodCallIndexers.js","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallIndexers.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,18 @@ import type { MethodCallNode, ClassEntry } from './MethodCallData.js';
16
16
  * 2. Local class in same file
17
17
  * 3. "this" reference to containing class
18
18
  * 4. Variable type index (INSTANCE_OF)
19
+ * 5. Interface-aware CHA fallback (REG-485)
19
20
  */
20
- export declare function resolveMethodCall(methodCall: MethodCallNode, classMethodIndex: Map<string, ClassEntry>, variableTypes: Map<string, string>, graph: PluginContext['graph'], containingClassCache: Map<string, BaseNodeRecord | null>): Promise<BaseNodeRecord | null>;
21
+ export declare function resolveMethodCall(methodCall: MethodCallNode, classMethodIndex: Map<string, ClassEntry>, variableTypes: Map<string, string>, graph: PluginContext['graph'], containingClassCache: Map<string, BaseNodeRecord | null>, methodToInterfaces?: Map<string, Set<string>>, interfaceImpls?: Map<string, Set<string>>): Promise<BaseNodeRecord | null>;
22
+ /**
23
+ * Step 5: Interface-aware CHA fallback (REG-485).
24
+ *
25
+ * When steps 1-4 fail, look up method name in interface method index,
26
+ * find implementing classes, and resolve to their method definition.
27
+ * Also checks parent classes via DERIVES_FROM for inherited methods.
28
+ * This enables resolution for calls on variables typed as interfaces.
29
+ */
30
+ export declare function resolveViaInterfaceCHA(methodName: string, classMethodIndex: Map<string, ClassEntry>, methodToInterfaces: Map<string, Set<string>>, interfaceImpls: Map<string, Set<string>>, graph: PluginContext['graph']): Promise<BaseNodeRecord | null>;
21
31
  /**
22
32
  * REG-400: Walk DERIVES_FROM inheritance chain to find inherited methods.
23
33
  * Used when method is not found on the direct class.
@@ -1 +1 @@
1
- {"version":3,"file":"MethodCallResolution.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallResolution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,GACvD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgEhC;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,QAAQ,GAAE,MAAU,EACpB,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwBhC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgBhC"}
1
+ {"version":3,"file":"MethodCallResolution.d.ts","sourceRoot":"","sources":["../../../../src/plugins/enrichment/method-call/MethodCallResolution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,EACxD,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC7C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACxC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwEhC;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC5C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACxC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAyBhC;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACzC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,QAAQ,GAAE,MAAU,EACpB,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwBhC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgBhC"}
@@ -13,8 +13,9 @@
13
13
  * 2. Local class in same file
14
14
  * 3. "this" reference to containing class
15
15
  * 4. Variable type index (INSTANCE_OF)
16
+ * 5. Interface-aware CHA fallback (REG-485)
16
17
  */
17
- export async function resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache) {
18
+ export async function resolveMethodCall(methodCall, classMethodIndex, variableTypes, graph, containingClassCache, methodToInterfaces, interfaceImpls) {
18
19
  const { object, method, file } = methodCall;
19
20
  if (!object || !method)
20
21
  return null;
@@ -68,6 +69,43 @@ export async function resolveMethodCall(methodCall, classMethodIndex, variableTy
68
69
  }
69
70
  }
70
71
  }
72
+ // 5. Interface-aware CHA fallback (REG-485)
73
+ if (methodToInterfaces && interfaceImpls) {
74
+ const chaResult = await resolveViaInterfaceCHA(method, classMethodIndex, methodToInterfaces, interfaceImpls, graph);
75
+ if (chaResult)
76
+ return chaResult;
77
+ }
78
+ return null;
79
+ }
80
+ /**
81
+ * Step 5: Interface-aware CHA fallback (REG-485).
82
+ *
83
+ * When steps 1-4 fail, look up method name in interface method index,
84
+ * find implementing classes, and resolve to their method definition.
85
+ * Also checks parent classes via DERIVES_FROM for inherited methods.
86
+ * This enables resolution for calls on variables typed as interfaces.
87
+ */
88
+ export async function resolveViaInterfaceCHA(methodName, classMethodIndex, methodToInterfaces, interfaceImpls, graph) {
89
+ const candidateInterfaces = methodToInterfaces.get(methodName);
90
+ if (!candidateInterfaces || candidateInterfaces.size === 0)
91
+ return null;
92
+ for (const interfaceName of candidateInterfaces) {
93
+ const implementingClasses = interfaceImpls.get(interfaceName);
94
+ if (!implementingClasses)
95
+ continue;
96
+ for (const className of implementingClasses) {
97
+ const classEntry = classMethodIndex.get(className);
98
+ if (!classEntry)
99
+ continue;
100
+ if (classEntry.methods.has(methodName)) {
101
+ return classEntry.methods.get(methodName);
102
+ }
103
+ // Check parent classes via DERIVES_FROM chain
104
+ const inherited = await findMethodInParentClasses(classEntry.classNode, methodName, classMethodIndex, graph);
105
+ if (inherited)
106
+ return inherited;
107
+ }
108
+ }
71
109
  return null;
72
110
  }
73
111
  /**