@grafema/core 0.1.0-alpha.5 → 0.2.0-beta

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 (530) hide show
  1. package/README.md +0 -1
  2. package/dist/Orchestrator.d.ts +31 -2
  3. package/dist/Orchestrator.d.ts.map +1 -1
  4. package/dist/Orchestrator.js +222 -27
  5. package/dist/config/ConfigLoader.d.ts +90 -0
  6. package/dist/config/ConfigLoader.d.ts.map +1 -0
  7. package/dist/config/ConfigLoader.js +249 -0
  8. package/dist/config/index.d.ts +6 -0
  9. package/dist/config/index.d.ts.map +1 -0
  10. package/dist/config/index.js +4 -0
  11. package/dist/core/ASTWorker.d.ts +11 -36
  12. package/dist/core/ASTWorker.d.ts.map +1 -1
  13. package/dist/core/ASTWorker.js +93 -99
  14. package/dist/core/CoverageAnalyzer.d.ts +65 -0
  15. package/dist/core/CoverageAnalyzer.d.ts.map +1 -0
  16. package/dist/core/CoverageAnalyzer.js +198 -0
  17. package/dist/core/FileExplainer.d.ts +101 -0
  18. package/dist/core/FileExplainer.d.ts.map +1 -0
  19. package/dist/core/FileExplainer.js +139 -0
  20. package/dist/core/FileNodeManager.d.ts +40 -0
  21. package/dist/core/FileNodeManager.d.ts.map +1 -0
  22. package/dist/core/FileNodeManager.js +84 -0
  23. package/dist/core/GraphFreshnessChecker.d.ts +33 -0
  24. package/dist/core/GraphFreshnessChecker.d.ts.map +1 -0
  25. package/dist/core/GraphFreshnessChecker.js +101 -0
  26. package/dist/core/HashUtils.d.ts +24 -0
  27. package/dist/core/HashUtils.d.ts.map +1 -0
  28. package/dist/core/HashUtils.js +45 -0
  29. package/dist/core/IncrementalReanalyzer.d.ts +36 -0
  30. package/dist/core/IncrementalReanalyzer.d.ts.map +1 -0
  31. package/dist/core/IncrementalReanalyzer.js +132 -0
  32. package/dist/core/NodeFactory.d.ts +266 -19
  33. package/dist/core/NodeFactory.d.ts.map +1 -1
  34. package/dist/core/NodeFactory.js +256 -21
  35. package/dist/core/ScopeTracker.d.ts +84 -0
  36. package/dist/core/ScopeTracker.d.ts.map +1 -0
  37. package/dist/core/ScopeTracker.js +116 -0
  38. package/dist/core/SemanticId.d.ts +90 -0
  39. package/dist/core/SemanticId.d.ts.map +1 -0
  40. package/dist/core/SemanticId.js +115 -0
  41. package/dist/core/VersionManager.d.ts.map +1 -1
  42. package/dist/core/VersionManager.js +3 -2
  43. package/dist/core/nodes/ArgumentExpressionNode.d.ts +43 -0
  44. package/dist/core/nodes/ArgumentExpressionNode.d.ts.map +1 -0
  45. package/dist/core/nodes/ArgumentExpressionNode.js +60 -0
  46. package/dist/core/nodes/ArrayLiteralNode.d.ts +27 -0
  47. package/dist/core/nodes/ArrayLiteralNode.d.ts.map +1 -0
  48. package/dist/core/nodes/ArrayLiteralNode.js +43 -0
  49. package/dist/core/nodes/BranchNode.d.ts +41 -0
  50. package/dist/core/nodes/BranchNode.d.ts.map +1 -0
  51. package/dist/core/nodes/BranchNode.js +82 -0
  52. package/dist/core/nodes/CallSiteNode.d.ts +30 -2
  53. package/dist/core/nodes/CallSiteNode.d.ts.map +1 -1
  54. package/dist/core/nodes/CallSiteNode.js +54 -4
  55. package/dist/core/nodes/CaseNode.d.ts +43 -0
  56. package/dist/core/nodes/CaseNode.d.ts.map +1 -0
  57. package/dist/core/nodes/CaseNode.js +81 -0
  58. package/dist/core/nodes/ClassNode.d.ts +34 -2
  59. package/dist/core/nodes/ClassNode.d.ts.map +1 -1
  60. package/dist/core/nodes/ClassNode.js +52 -4
  61. package/dist/core/nodes/ConstantNode.d.ts +2 -2
  62. package/dist/core/nodes/ConstantNode.d.ts.map +1 -1
  63. package/dist/core/nodes/ConstantNode.js +6 -4
  64. package/dist/core/nodes/ConstructorCallNode.d.ts +51 -0
  65. package/dist/core/nodes/ConstructorCallNode.d.ts.map +1 -0
  66. package/dist/core/nodes/ConstructorCallNode.js +171 -0
  67. package/dist/core/nodes/DatabaseQueryNode.d.ts +3 -2
  68. package/dist/core/nodes/DatabaseQueryNode.d.ts.map +1 -1
  69. package/dist/core/nodes/DatabaseQueryNode.js +5 -2
  70. package/dist/core/nodes/DecoratorNode.d.ts +42 -0
  71. package/dist/core/nodes/DecoratorNode.d.ts.map +1 -0
  72. package/dist/core/nodes/DecoratorNode.js +64 -0
  73. package/dist/core/nodes/EnumNode.d.ts +42 -0
  74. package/dist/core/nodes/EnumNode.d.ts.map +1 -0
  75. package/dist/core/nodes/EnumNode.js +56 -0
  76. package/dist/core/nodes/EventListenerNode.d.ts +4 -4
  77. package/dist/core/nodes/EventListenerNode.d.ts.map +1 -1
  78. package/dist/core/nodes/EventListenerNode.js +7 -4
  79. package/dist/core/nodes/ExportNode.d.ts +38 -2
  80. package/dist/core/nodes/ExportNode.d.ts.map +1 -1
  81. package/dist/core/nodes/ExportNode.js +54 -4
  82. package/dist/core/nodes/ExpressionNode.d.ts +97 -0
  83. package/dist/core/nodes/ExpressionNode.d.ts.map +1 -0
  84. package/dist/core/nodes/ExpressionNode.js +180 -0
  85. package/dist/core/nodes/ExternalModuleNode.d.ts +32 -0
  86. package/dist/core/nodes/ExternalModuleNode.d.ts.map +1 -0
  87. package/dist/core/nodes/ExternalModuleNode.js +49 -0
  88. package/dist/core/nodes/ExternalStdioNode.d.ts +13 -6
  89. package/dist/core/nodes/ExternalStdioNode.d.ts.map +1 -1
  90. package/dist/core/nodes/ExternalStdioNode.js +15 -8
  91. package/dist/core/nodes/FunctionNode.d.ts +36 -0
  92. package/dist/core/nodes/FunctionNode.d.ts.map +1 -1
  93. package/dist/core/nodes/FunctionNode.js +80 -1
  94. package/dist/core/nodes/HttpRequestNode.d.ts +4 -4
  95. package/dist/core/nodes/HttpRequestNode.d.ts.map +1 -1
  96. package/dist/core/nodes/HttpRequestNode.js +7 -4
  97. package/dist/core/nodes/ImportNode.d.ts +28 -6
  98. package/dist/core/nodes/ImportNode.d.ts.map +1 -1
  99. package/dist/core/nodes/ImportNode.js +43 -8
  100. package/dist/core/nodes/InterfaceNode.d.ts +46 -0
  101. package/dist/core/nodes/InterfaceNode.d.ts.map +1 -0
  102. package/dist/core/nodes/InterfaceNode.js +57 -0
  103. package/dist/core/nodes/IssueNode.d.ts +73 -0
  104. package/dist/core/nodes/IssueNode.d.ts.map +1 -0
  105. package/dist/core/nodes/IssueNode.js +129 -0
  106. package/dist/core/nodes/LiteralNode.d.ts +2 -2
  107. package/dist/core/nodes/LiteralNode.d.ts.map +1 -1
  108. package/dist/core/nodes/LiteralNode.js +6 -4
  109. package/dist/core/nodes/MethodCallNode.d.ts +32 -2
  110. package/dist/core/nodes/MethodCallNode.d.ts.map +1 -1
  111. package/dist/core/nodes/MethodCallNode.js +57 -4
  112. package/dist/core/nodes/MethodNode.d.ts +34 -2
  113. package/dist/core/nodes/MethodNode.d.ts.map +1 -1
  114. package/dist/core/nodes/MethodNode.js +55 -3
  115. package/dist/core/nodes/ModuleNode.d.ts +31 -0
  116. package/dist/core/nodes/ModuleNode.d.ts.map +1 -1
  117. package/dist/core/nodes/ModuleNode.js +37 -0
  118. package/dist/core/nodes/NetworkRequestNode.d.ts +54 -0
  119. package/dist/core/nodes/NetworkRequestNode.d.ts.map +1 -0
  120. package/dist/core/nodes/NetworkRequestNode.js +65 -0
  121. package/dist/core/nodes/ObjectLiteralNode.d.ts +27 -0
  122. package/dist/core/nodes/ObjectLiteralNode.d.ts.map +1 -0
  123. package/dist/core/nodes/ObjectLiteralNode.js +43 -0
  124. package/dist/core/nodes/ParameterNode.d.ts +2 -2
  125. package/dist/core/nodes/ParameterNode.d.ts.map +1 -1
  126. package/dist/core/nodes/ParameterNode.js +5 -3
  127. package/dist/core/nodes/ScopeNode.d.ts +31 -0
  128. package/dist/core/nodes/ScopeNode.d.ts.map +1 -1
  129. package/dist/core/nodes/ScopeNode.js +49 -0
  130. package/dist/core/nodes/TypeNode.d.ts +36 -0
  131. package/dist/core/nodes/TypeNode.d.ts.map +1 -0
  132. package/dist/core/nodes/TypeNode.js +55 -0
  133. package/dist/core/nodes/VariableDeclarationNode.d.ts +29 -2
  134. package/dist/core/nodes/VariableDeclarationNode.d.ts.map +1 -1
  135. package/dist/core/nodes/VariableDeclarationNode.js +48 -4
  136. package/dist/core/nodes/index.d.ts +15 -1
  137. package/dist/core/nodes/index.d.ts.map +1 -1
  138. package/dist/core/nodes/index.js +17 -0
  139. package/dist/data/builtins/BuiltinRegistry.d.ts +78 -0
  140. package/dist/data/builtins/BuiltinRegistry.d.ts.map +1 -0
  141. package/dist/data/builtins/BuiltinRegistry.js +110 -0
  142. package/dist/data/builtins/definitions.d.ts +28 -0
  143. package/dist/data/builtins/definitions.d.ts.map +1 -0
  144. package/dist/data/builtins/definitions.js +250 -0
  145. package/dist/data/builtins/index.d.ts +10 -0
  146. package/dist/data/builtins/index.d.ts.map +1 -0
  147. package/dist/data/builtins/index.js +8 -0
  148. package/dist/data/builtins/jsGlobals.d.ts +18 -0
  149. package/dist/data/builtins/jsGlobals.d.ts.map +1 -0
  150. package/dist/data/builtins/jsGlobals.js +26 -0
  151. package/dist/data/builtins/types.d.ts +34 -0
  152. package/dist/data/builtins/types.d.ts.map +1 -0
  153. package/dist/data/builtins/types.js +7 -0
  154. package/dist/data/globals/definitions.d.ts +27 -0
  155. package/dist/data/globals/definitions.d.ts.map +1 -0
  156. package/dist/data/globals/definitions.js +117 -0
  157. package/dist/data/globals/index.d.ts +36 -0
  158. package/dist/data/globals/index.d.ts.map +1 -0
  159. package/dist/data/globals/index.js +52 -0
  160. package/dist/diagnostics/DiagnosticCollector.d.ts +98 -0
  161. package/dist/diagnostics/DiagnosticCollector.d.ts.map +1 -0
  162. package/dist/diagnostics/DiagnosticCollector.js +129 -0
  163. package/dist/diagnostics/DiagnosticReporter.d.ts +100 -0
  164. package/dist/diagnostics/DiagnosticReporter.d.ts.map +1 -0
  165. package/dist/diagnostics/DiagnosticReporter.js +247 -0
  166. package/dist/diagnostics/DiagnosticWriter.d.ts +31 -0
  167. package/dist/diagnostics/DiagnosticWriter.d.ts.map +1 -0
  168. package/dist/diagnostics/DiagnosticWriter.js +43 -0
  169. package/dist/diagnostics/index.d.ts +14 -0
  170. package/dist/diagnostics/index.d.ts.map +1 -0
  171. package/dist/diagnostics/index.js +11 -0
  172. package/dist/errors/GrafemaError.d.ts +161 -0
  173. package/dist/errors/GrafemaError.d.ts.map +1 -0
  174. package/dist/errors/GrafemaError.js +181 -0
  175. package/dist/index.d.ts +73 -1
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +70 -1
  178. package/dist/logging/Logger.d.ts +48 -0
  179. package/dist/logging/Logger.d.ts.map +1 -0
  180. package/dist/logging/Logger.js +134 -0
  181. package/dist/plugins/Plugin.d.ts +5 -1
  182. package/dist/plugins/Plugin.d.ts.map +1 -1
  183. package/dist/plugins/Plugin.js +33 -0
  184. package/dist/plugins/analysis/DatabaseAnalyzer.d.ts.map +1 -1
  185. package/dist/plugins/analysis/DatabaseAnalyzer.js +14 -6
  186. package/dist/plugins/analysis/ExpressAnalyzer.d.ts.map +1 -1
  187. package/dist/plugins/analysis/ExpressAnalyzer.js +29 -19
  188. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts +148 -0
  189. package/dist/plugins/analysis/ExpressResponseAnalyzer.d.ts.map +1 -0
  190. package/dist/plugins/analysis/ExpressResponseAnalyzer.js +495 -0
  191. package/dist/plugins/analysis/ExpressRouteAnalyzer.d.ts.map +1 -1
  192. package/dist/plugins/analysis/ExpressRouteAnalyzer.js +71 -29
  193. package/dist/plugins/analysis/FetchAnalyzer.d.ts +41 -0
  194. package/dist/plugins/analysis/FetchAnalyzer.d.ts.map +1 -1
  195. package/dist/plugins/analysis/FetchAnalyzer.js +187 -19
  196. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts +6 -3
  197. package/dist/plugins/analysis/IncrementalAnalysisPlugin.d.ts.map +1 -1
  198. package/dist/plugins/analysis/IncrementalAnalysisPlugin.js +76 -80
  199. package/dist/plugins/analysis/JSASTAnalyzer.d.ts +313 -19
  200. package/dist/plugins/analysis/JSASTAnalyzer.d.ts.map +1 -1
  201. package/dist/plugins/analysis/JSASTAnalyzer.js +3430 -503
  202. package/dist/plugins/analysis/ReactAnalyzer.d.ts.map +1 -1
  203. package/dist/plugins/analysis/ReactAnalyzer.js +56 -57
  204. package/dist/plugins/analysis/RustAnalyzer.d.ts.map +1 -1
  205. package/dist/plugins/analysis/RustAnalyzer.js +16 -11
  206. package/dist/plugins/analysis/SQLiteAnalyzer.d.ts.map +1 -1
  207. package/dist/plugins/analysis/SQLiteAnalyzer.js +11 -7
  208. package/dist/plugins/analysis/ServiceLayerAnalyzer.d.ts.map +1 -1
  209. package/dist/plugins/analysis/ServiceLayerAnalyzer.js +21 -9
  210. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts +9 -0
  211. package/dist/plugins/analysis/SocketIOAnalyzer.d.ts.map +1 -1
  212. package/dist/plugins/analysis/SocketIOAnalyzer.js +117 -21
  213. package/dist/plugins/analysis/SystemDbAnalyzer.d.ts.map +1 -1
  214. package/dist/plugins/analysis/SystemDbAnalyzer.js +15 -5
  215. package/dist/plugins/analysis/ast/GraphBuilder.d.ts +207 -4
  216. package/dist/plugins/analysis/ast/GraphBuilder.d.ts.map +1 -1
  217. package/dist/plugins/analysis/ast/GraphBuilder.js +1527 -316
  218. package/dist/plugins/analysis/ast/IdGenerator.d.ts +105 -0
  219. package/dist/plugins/analysis/ast/IdGenerator.d.ts.map +1 -0
  220. package/dist/plugins/analysis/ast/IdGenerator.js +116 -0
  221. package/dist/plugins/analysis/ast/types.d.ts +470 -5
  222. package/dist/plugins/analysis/ast/types.d.ts.map +1 -1
  223. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts +33 -0
  224. package/dist/plugins/analysis/ast/utils/createParameterNodes.d.ts.map +1 -0
  225. package/dist/plugins/analysis/ast/utils/createParameterNodes.js +89 -0
  226. package/dist/plugins/analysis/ast/utils/index.d.ts +6 -0
  227. package/dist/plugins/analysis/ast/utils/index.d.ts.map +1 -0
  228. package/dist/plugins/analysis/ast/utils/index.js +5 -0
  229. package/dist/plugins/analysis/ast/utils/location.d.ts +87 -0
  230. package/dist/plugins/analysis/ast/utils/location.d.ts.map +1 -0
  231. package/dist/plugins/analysis/ast/utils/location.js +78 -0
  232. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts +14 -5
  233. package/dist/plugins/analysis/ast/visitors/ASTVisitor.d.ts.map +1 -1
  234. package/dist/plugins/analysis/ast/visitors/ASTVisitor.js +6 -5
  235. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts +100 -9
  236. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.d.ts.map +1 -1
  237. package/dist/plugins/analysis/ast/visitors/CallExpressionVisitor.js +674 -125
  238. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts +4 -1
  239. package/dist/plugins/analysis/ast/visitors/ClassVisitor.d.ts.map +1 -1
  240. package/dist/plugins/analysis/ast/visitors/ClassVisitor.js +72 -32
  241. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts +14 -1
  242. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.d.ts.map +1 -1
  243. package/dist/plugins/analysis/ast/visitors/FunctionVisitor.js +190 -63
  244. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts +4 -0
  245. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.d.ts.map +1 -1
  246. package/dist/plugins/analysis/ast/visitors/ImportExportVisitor.js +112 -8
  247. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts +12 -1
  248. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.d.ts.map +1 -1
  249. package/dist/plugins/analysis/ast/visitors/TypeScriptVisitor.js +36 -14
  250. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts +20 -2
  251. package/dist/plugins/analysis/ast/visitors/VariableVisitor.d.ts.map +1 -1
  252. package/dist/plugins/analysis/ast/visitors/VariableVisitor.js +243 -45
  253. package/dist/plugins/discovery/MonorepoServiceDiscovery.d.ts.map +1 -1
  254. package/dist/plugins/discovery/MonorepoServiceDiscovery.js +3 -2
  255. package/dist/plugins/discovery/SimpleProjectDiscovery.d.ts.map +1 -1
  256. package/dist/plugins/discovery/SimpleProjectDiscovery.js +5 -1
  257. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts +22 -0
  258. package/dist/plugins/discovery/WorkspaceDiscovery.d.ts.map +1 -0
  259. package/dist/plugins/discovery/WorkspaceDiscovery.js +141 -0
  260. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts +46 -0
  261. package/dist/plugins/discovery/resolveSourceEntrypoint.d.ts.map +1 -0
  262. package/dist/plugins/discovery/resolveSourceEntrypoint.js +86 -0
  263. package/dist/plugins/discovery/workspaces/detector.d.ts +21 -0
  264. package/dist/plugins/discovery/workspaces/detector.d.ts.map +1 -0
  265. package/dist/plugins/discovery/workspaces/detector.js +49 -0
  266. package/dist/plugins/discovery/workspaces/globResolver.d.ts +35 -0
  267. package/dist/plugins/discovery/workspaces/globResolver.d.ts.map +1 -0
  268. package/dist/plugins/discovery/workspaces/globResolver.js +184 -0
  269. package/dist/plugins/discovery/workspaces/index.d.ts +9 -0
  270. package/dist/plugins/discovery/workspaces/index.d.ts.map +1 -0
  271. package/dist/plugins/discovery/workspaces/index.js +8 -0
  272. package/dist/plugins/discovery/workspaces/parsers.d.ts +38 -0
  273. package/dist/plugins/discovery/workspaces/parsers.d.ts.map +1 -0
  274. package/dist/plugins/discovery/workspaces/parsers.js +80 -0
  275. package/dist/plugins/enrichment/AliasTracker.d.ts.map +1 -1
  276. package/dist/plugins/enrichment/AliasTracker.js +29 -8
  277. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts +32 -0
  278. package/dist/plugins/enrichment/ArgumentParameterLinker.d.ts.map +1 -0
  279. package/dist/plugins/enrichment/ArgumentParameterLinker.js +175 -0
  280. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts +51 -0
  281. package/dist/plugins/enrichment/ClosureCaptureEnricher.d.ts.map +1 -0
  282. package/dist/plugins/enrichment/ClosureCaptureEnricher.js +205 -0
  283. package/dist/plugins/enrichment/ExternalCallResolver.d.ts +42 -0
  284. package/dist/plugins/enrichment/ExternalCallResolver.d.ts.map +1 -0
  285. package/dist/plugins/enrichment/ExternalCallResolver.js +213 -0
  286. package/dist/plugins/enrichment/FunctionCallResolver.d.ts +58 -0
  287. package/dist/plugins/enrichment/FunctionCallResolver.d.ts.map +1 -0
  288. package/dist/plugins/enrichment/FunctionCallResolver.js +340 -0
  289. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts +16 -3
  290. package/dist/plugins/enrichment/HTTPConnectionEnricher.d.ts.map +1 -1
  291. package/dist/plugins/enrichment/HTTPConnectionEnricher.js +78 -27
  292. package/dist/plugins/enrichment/ImportExportLinker.d.ts.map +1 -1
  293. package/dist/plugins/enrichment/ImportExportLinker.js +23 -6
  294. package/dist/plugins/enrichment/MethodCallResolver.d.ts.map +1 -1
  295. package/dist/plugins/enrichment/MethodCallResolver.js +33 -13
  296. package/dist/plugins/enrichment/MountPointResolver.d.ts +14 -12
  297. package/dist/plugins/enrichment/MountPointResolver.d.ts.map +1 -1
  298. package/dist/plugins/enrichment/MountPointResolver.js +173 -147
  299. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts +44 -0
  300. package/dist/plugins/enrichment/NodejsBuiltinsResolver.d.ts.map +1 -0
  301. package/dist/plugins/enrichment/NodejsBuiltinsResolver.js +271 -0
  302. package/dist/plugins/enrichment/PrefixEvaluator.d.ts.map +1 -1
  303. package/dist/plugins/enrichment/PrefixEvaluator.js +16 -7
  304. package/dist/plugins/enrichment/RustFFIEnricher.d.ts.map +1 -1
  305. package/dist/plugins/enrichment/RustFFIEnricher.js +6 -5
  306. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts +22 -27
  307. package/dist/plugins/enrichment/ValueDomainAnalyzer.d.ts.map +1 -1
  308. package/dist/plugins/enrichment/ValueDomainAnalyzer.js +185 -143
  309. package/dist/plugins/indexing/IncrementalModuleIndexer.d.ts.map +1 -1
  310. package/dist/plugins/indexing/IncrementalModuleIndexer.js +23 -14
  311. package/dist/plugins/indexing/JSModuleIndexer.d.ts +15 -0
  312. package/dist/plugins/indexing/JSModuleIndexer.d.ts.map +1 -1
  313. package/dist/plugins/indexing/JSModuleIndexer.js +121 -31
  314. package/dist/plugins/indexing/RustModuleIndexer.d.ts +1 -1
  315. package/dist/plugins/indexing/RustModuleIndexer.d.ts.map +1 -1
  316. package/dist/plugins/indexing/RustModuleIndexer.js +8 -7
  317. package/dist/plugins/indexing/ServiceDetector.d.ts +10 -0
  318. package/dist/plugins/indexing/ServiceDetector.d.ts.map +1 -1
  319. package/dist/plugins/indexing/ServiceDetector.js +28 -15
  320. package/dist/plugins/validation/BrokenImportValidator.d.ts +31 -0
  321. package/dist/plugins/validation/BrokenImportValidator.d.ts.map +1 -0
  322. package/dist/plugins/validation/BrokenImportValidator.js +249 -0
  323. package/dist/plugins/validation/CallResolverValidator.d.ts +21 -10
  324. package/dist/plugins/validation/CallResolverValidator.d.ts.map +1 -1
  325. package/dist/plugins/validation/CallResolverValidator.js +103 -77
  326. package/dist/plugins/validation/DataFlowValidator.d.ts.map +1 -1
  327. package/dist/plugins/validation/DataFlowValidator.js +62 -49
  328. package/dist/plugins/validation/EvalBanValidator.d.ts.map +1 -1
  329. package/dist/plugins/validation/EvalBanValidator.js +17 -16
  330. package/dist/plugins/validation/GraphConnectivityValidator.d.ts.map +1 -1
  331. package/dist/plugins/validation/GraphConnectivityValidator.js +44 -24
  332. package/dist/plugins/validation/NodeCreationValidator.d.ts +85 -0
  333. package/dist/plugins/validation/NodeCreationValidator.d.ts.map +1 -0
  334. package/dist/plugins/validation/NodeCreationValidator.js +415 -0
  335. package/dist/plugins/validation/SQLInjectionValidator.d.ts.map +1 -1
  336. package/dist/plugins/validation/SQLInjectionValidator.js +61 -19
  337. package/dist/plugins/validation/ShadowingDetector.d.ts.map +1 -1
  338. package/dist/plugins/validation/ShadowingDetector.js +6 -5
  339. package/dist/plugins/validation/TypeScriptDeadCodeValidator.d.ts.map +1 -1
  340. package/dist/plugins/validation/TypeScriptDeadCodeValidator.js +12 -11
  341. package/dist/plugins/vcs/GitPlugin.d.ts.map +1 -1
  342. package/dist/plugins/vcs/GitPlugin.js +10 -12
  343. package/dist/plugins/vcs/VCSPlugin.d.ts +3 -2
  344. package/dist/plugins/vcs/VCSPlugin.d.ts.map +1 -1
  345. package/dist/plugins/vcs/VCSPlugin.js +5 -5
  346. package/dist/queries/findCallsInFunction.d.ts +52 -0
  347. package/dist/queries/findCallsInFunction.d.ts.map +1 -0
  348. package/dist/queries/findCallsInFunction.js +135 -0
  349. package/dist/queries/findContainingFunction.d.ts +45 -0
  350. package/dist/queries/findContainingFunction.d.ts.map +1 -0
  351. package/dist/queries/findContainingFunction.js +54 -0
  352. package/dist/queries/index.d.ts +14 -0
  353. package/dist/queries/index.d.ts.map +1 -0
  354. package/dist/queries/index.js +11 -0
  355. package/dist/queries/traceValues.d.ts +70 -0
  356. package/dist/queries/traceValues.d.ts.map +1 -0
  357. package/dist/queries/traceValues.js +299 -0
  358. package/dist/queries/types.d.ts +163 -0
  359. package/dist/queries/types.d.ts.map +1 -0
  360. package/dist/queries/types.js +9 -0
  361. package/dist/schema/GraphSchemaExtractor.d.ts +53 -0
  362. package/dist/schema/GraphSchemaExtractor.d.ts.map +1 -0
  363. package/dist/schema/GraphSchemaExtractor.js +124 -0
  364. package/dist/schema/InterfaceSchemaExtractor.d.ts +73 -0
  365. package/dist/schema/InterfaceSchemaExtractor.d.ts.map +1 -0
  366. package/dist/schema/InterfaceSchemaExtractor.js +112 -0
  367. package/dist/schema/index.d.ts +5 -0
  368. package/dist/schema/index.d.ts.map +1 -0
  369. package/dist/schema/index.js +2 -0
  370. package/dist/storage/backends/RFDBServerBackend.d.ts +21 -34
  371. package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
  372. package/dist/storage/backends/RFDBServerBackend.js +72 -62
  373. package/dist/storage/backends/typeValidation.d.ts.map +1 -1
  374. package/dist/storage/backends/typeValidation.js +1 -0
  375. package/dist/validation/PathValidator.d.ts +1 -2
  376. package/dist/validation/PathValidator.d.ts.map +1 -1
  377. package/package.json +3 -3
  378. package/src/Orchestrator.ts +272 -27
  379. package/src/config/ConfigLoader.ts +354 -0
  380. package/src/config/index.ts +5 -0
  381. package/src/core/ASTWorker.ts +143 -139
  382. package/src/core/CoverageAnalyzer.ts +243 -0
  383. package/src/core/FileExplainer.ts +179 -0
  384. package/src/core/FileNodeManager.ts +100 -0
  385. package/src/core/GraphFreshnessChecker.ts +143 -0
  386. package/src/core/HashUtils.ts +48 -0
  387. package/src/core/IncrementalReanalyzer.ts +192 -0
  388. package/src/core/NodeFactory.ts +470 -23
  389. package/src/core/ScopeTracker.ts +154 -0
  390. package/src/core/SemanticId.ts +192 -0
  391. package/src/core/VersionManager.ts +3 -2
  392. package/src/core/nodes/ArgumentExpressionNode.ts +89 -0
  393. package/src/core/nodes/ArrayLiteralNode.ts +66 -0
  394. package/src/core/nodes/BranchNode.ts +113 -0
  395. package/src/core/nodes/CallSiteNode.ts +64 -4
  396. package/src/core/nodes/CaseNode.ts +123 -0
  397. package/src/core/nodes/ClassNode.ts +67 -4
  398. package/src/core/nodes/ConstantNode.ts +5 -4
  399. package/src/core/nodes/ConstructorCallNode.ts +217 -0
  400. package/src/core/nodes/DatabaseQueryNode.ts +5 -1
  401. package/src/core/nodes/DecoratorNode.ts +92 -0
  402. package/src/core/nodes/EnumNode.ts +87 -0
  403. package/src/core/nodes/EventListenerNode.ts +7 -4
  404. package/src/core/nodes/ExportNode.ts +74 -4
  405. package/src/core/nodes/ExpressionNode.ts +232 -0
  406. package/src/core/nodes/ExternalModuleNode.ts +65 -0
  407. package/src/core/nodes/ExternalStdioNode.ts +17 -9
  408. package/src/core/nodes/FunctionNode.ts +101 -1
  409. package/src/core/nodes/HttpRequestNode.ts +7 -4
  410. package/src/core/nodes/ImportNode.ts +62 -13
  411. package/src/core/nodes/InterfaceNode.ts +92 -0
  412. package/src/core/nodes/IssueNode.ts +177 -0
  413. package/src/core/nodes/LiteralNode.ts +5 -4
  414. package/src/core/nodes/MethodCallNode.ts +70 -4
  415. package/src/core/nodes/MethodNode.ts +68 -3
  416. package/src/core/nodes/ModuleNode.ts +50 -0
  417. package/src/core/nodes/NetworkRequestNode.ts +77 -0
  418. package/src/core/nodes/ObjectLiteralNode.ts +66 -0
  419. package/src/core/nodes/ParameterNode.ts +4 -3
  420. package/src/core/nodes/ScopeNode.ts +65 -0
  421. package/src/core/nodes/TypeNode.ts +79 -0
  422. package/src/core/nodes/VariableDeclarationNode.ts +58 -4
  423. package/src/core/nodes/index.ts +21 -1
  424. package/src/data/builtins/BuiltinRegistry.ts +124 -0
  425. package/src/data/builtins/definitions.ts +267 -0
  426. package/src/data/builtins/index.ts +10 -0
  427. package/src/data/builtins/jsGlobals.ts +28 -0
  428. package/src/data/builtins/types.ts +36 -0
  429. package/src/data/globals/definitions.ts +156 -0
  430. package/src/data/globals/index.ts +66 -0
  431. package/src/diagnostics/DiagnosticCollector.ts +163 -0
  432. package/src/diagnostics/DiagnosticReporter.ts +324 -0
  433. package/src/diagnostics/DiagnosticWriter.ts +50 -0
  434. package/src/diagnostics/index.ts +16 -0
  435. package/src/errors/GrafemaError.ts +239 -0
  436. package/src/index.ts +193 -1
  437. package/src/logging/Logger.ts +152 -0
  438. package/src/plugins/Plugin.ts +42 -0
  439. package/src/plugins/analysis/DatabaseAnalyzer.ts +16 -8
  440. package/src/plugins/analysis/ExpressAnalyzer.ts +33 -19
  441. package/src/plugins/analysis/ExpressResponseAnalyzer.ts +636 -0
  442. package/src/plugins/analysis/ExpressRouteAnalyzer.ts +76 -36
  443. package/src/plugins/analysis/FetchAnalyzer.ts +232 -21
  444. package/src/plugins/analysis/IncrementalAnalysisPlugin.ts +84 -101
  445. package/src/plugins/analysis/JSASTAnalyzer.ts +4265 -587
  446. package/src/plugins/analysis/ReactAnalyzer.ts +57 -57
  447. package/src/plugins/analysis/RustAnalyzer.ts +16 -11
  448. package/src/plugins/analysis/SQLiteAnalyzer.ts +13 -7
  449. package/src/plugins/analysis/ServiceLayerAnalyzer.ts +22 -16
  450. package/src/plugins/analysis/SocketIOAnalyzer.ts +151 -28
  451. package/src/plugins/analysis/SystemDbAnalyzer.ts +16 -11
  452. package/src/plugins/analysis/ast/GraphBuilder.ts +1947 -327
  453. package/src/plugins/analysis/ast/IdGenerator.ts +177 -0
  454. package/src/plugins/analysis/ast/types.ts +596 -6
  455. package/src/plugins/analysis/ast/utils/createParameterNodes.ts +104 -0
  456. package/src/plugins/analysis/ast/utils/index.ts +12 -0
  457. package/src/plugins/analysis/ast/utils/location.ts +103 -0
  458. package/src/plugins/analysis/ast/visitors/ASTVisitor.ts +19 -8
  459. package/src/plugins/analysis/ast/visitors/CallExpressionVisitor.ts +924 -83
  460. package/src/plugins/analysis/ast/visitors/ClassVisitor.ts +97 -44
  461. package/src/plugins/analysis/ast/visitors/FunctionVisitor.ts +234 -93
  462. package/src/plugins/analysis/ast/visitors/ImportExportVisitor.ts +124 -9
  463. package/src/plugins/analysis/ast/visitors/TypeScriptVisitor.ts +41 -14
  464. package/src/plugins/analysis/ast/visitors/VariableVisitor.ts +294 -49
  465. package/src/plugins/discovery/MonorepoServiceDiscovery.ts +3 -2
  466. package/src/plugins/discovery/SimpleProjectDiscovery.ts +6 -1
  467. package/src/plugins/discovery/WorkspaceDiscovery.ts +184 -0
  468. package/src/plugins/discovery/resolveSourceEntrypoint.ts +103 -0
  469. package/src/plugins/discovery/workspaces/detector.ts +63 -0
  470. package/src/plugins/discovery/workspaces/globResolver.ts +229 -0
  471. package/src/plugins/discovery/workspaces/index.ts +23 -0
  472. package/src/plugins/discovery/workspaces/parsers.ts +99 -0
  473. package/src/plugins/enrichment/AliasTracker.ts +35 -8
  474. package/src/plugins/enrichment/ArgumentParameterLinker.ts +240 -0
  475. package/src/plugins/enrichment/ClosureCaptureEnricher.ts +267 -0
  476. package/src/plugins/enrichment/ExternalCallResolver.ts +262 -0
  477. package/src/plugins/enrichment/FunctionCallResolver.ts +456 -0
  478. package/src/plugins/enrichment/HTTPConnectionEnricher.ts +84 -27
  479. package/src/plugins/enrichment/ImportExportLinker.ts +24 -6
  480. package/src/plugins/enrichment/MethodCallResolver.ts +39 -13
  481. package/src/plugins/enrichment/MountPointResolver.ts +208 -195
  482. package/src/plugins/enrichment/NodejsBuiltinsResolver.ts +365 -0
  483. package/src/plugins/enrichment/PrefixEvaluator.ts +16 -7
  484. package/src/plugins/enrichment/RustFFIEnricher.ts +6 -5
  485. package/src/plugins/enrichment/ValueDomainAnalyzer.ts +209 -189
  486. package/src/plugins/indexing/IncrementalModuleIndexer.ts +23 -14
  487. package/src/plugins/indexing/JSModuleIndexer.ts +140 -34
  488. package/src/plugins/indexing/RustModuleIndexer.ts +8 -7
  489. package/src/plugins/validation/BrokenImportValidator.ts +325 -0
  490. package/src/plugins/validation/CallResolverValidator.ts +131 -110
  491. package/src/plugins/validation/DataFlowValidator.ts +88 -67
  492. package/src/plugins/validation/EvalBanValidator.ts +17 -16
  493. package/src/plugins/validation/GraphConnectivityValidator.ts +58 -24
  494. package/src/plugins/validation/NodeCreationValidator.ts +554 -0
  495. package/src/plugins/validation/SQLInjectionValidator.ts +63 -20
  496. package/src/plugins/validation/ShadowingDetector.ts +6 -5
  497. package/src/plugins/validation/TypeScriptDeadCodeValidator.ts +12 -11
  498. package/src/plugins/vcs/GitPlugin.ts +40 -12
  499. package/src/plugins/vcs/VCSPlugin.ts +7 -5
  500. package/src/queries/README.md +46 -0
  501. package/src/queries/findCallsInFunction.ts +206 -0
  502. package/src/queries/findContainingFunction.ts +83 -0
  503. package/src/queries/index.ts +23 -0
  504. package/src/queries/traceValues.ts +398 -0
  505. package/src/queries/types.ts +187 -0
  506. package/src/schema/GraphSchemaExtractor.ts +177 -0
  507. package/src/schema/InterfaceSchemaExtractor.ts +173 -0
  508. package/src/schema/index.ts +5 -0
  509. package/src/storage/backends/RFDBServerBackend.ts +100 -98
  510. package/src/storage/backends/typeValidation.ts +1 -0
  511. package/src/validation/PathValidator.ts +1 -1
  512. package/dist/core/AnalysisWorker.d.ts +0 -14
  513. package/dist/core/AnalysisWorker.d.ts.map +0 -1
  514. package/dist/core/AnalysisWorker.js +0 -307
  515. package/dist/core/ParallelAnalyzer.d.ts +0 -120
  516. package/dist/core/ParallelAnalyzer.d.ts.map +0 -1
  517. package/dist/core/ParallelAnalyzer.js +0 -331
  518. package/dist/core/QueueWorker.d.ts +0 -12
  519. package/dist/core/QueueWorker.d.ts.map +0 -1
  520. package/dist/core/QueueWorker.js +0 -567
  521. package/dist/core/RFDBClient.d.ts +0 -179
  522. package/dist/core/RFDBClient.d.ts.map +0 -1
  523. package/dist/core/RFDBClient.js +0 -429
  524. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts +0 -19
  525. package/dist/plugins/discovery/ZonServiceDiscovery.d.ts.map +0 -1
  526. package/dist/plugins/discovery/ZonServiceDiscovery.js +0 -204
  527. package/src/core/AnalysisWorker.ts +0 -410
  528. package/src/core/ParallelAnalyzer.ts +0 -476
  529. package/src/core/QueueWorker.ts +0 -780
  530. package/src/plugins/indexing/ServiceDetector.ts +0 -230
@@ -9,10 +9,15 @@ import { fileURLToPath } from 'url';
9
9
  import { spawn, execSync, ChildProcess } from 'child_process';
10
10
  import { setTimeout as sleep } from 'timers/promises';
11
11
  import { SimpleProjectDiscovery } from './plugins/discovery/SimpleProjectDiscovery.js';
12
+ import { resolveSourceEntrypoint } from './plugins/discovery/resolveSourceEntrypoint.js';
12
13
  import { Profiler } from './core/Profiler.js';
13
14
  import { AnalysisQueue } from './core/AnalysisQueue.js';
15
+ import { DiagnosticCollector } from './diagnostics/DiagnosticCollector.js';
14
16
  import type { Plugin, PluginContext } from './plugins/Plugin.js';
15
- import type { GraphBackend } from '@grafema/types';
17
+ import type { GraphBackend, PluginPhase, Logger, LogLevel, IssueSpec, ServiceDefinition } from '@grafema/types';
18
+ import { createLogger } from './logging/Logger.js';
19
+ import { NodeFactory } from './core/NodeFactory.js';
20
+ import type { IssueSeverity } from './core/nodes/IssueNode.js';
16
21
 
17
22
  /**
18
23
  * Progress callback info
@@ -50,8 +55,24 @@ export interface OrchestratorOptions {
50
55
  onProgress?: ProgressCallback;
51
56
  forceAnalysis?: boolean;
52
57
  serviceFilter?: string | null;
58
+ /** Override entrypoint, bypasses auto-detection. Path relative to project root. */
59
+ entrypoint?: string;
53
60
  indexOnly?: boolean;
54
61
  parallel?: ParallelConfig | null;
62
+ /** Logger instance for structured logging. */
63
+ logger?: Logger;
64
+ /** Log level for the default logger. Ignored if logger is provided. */
65
+ logLevel?: LogLevel;
66
+ /**
67
+ * Config-provided services (REG-174).
68
+ * If provided and non-empty, discovery plugins are skipped.
69
+ */
70
+ services?: ServiceDefinition[];
71
+ /**
72
+ * Enable strict mode for fail-fast debugging.
73
+ * When true, enrichers report unresolved references as fatal errors.
74
+ */
75
+ strictMode?: boolean;
55
76
  }
56
77
 
57
78
  /**
@@ -125,12 +146,19 @@ export class Orchestrator {
125
146
  private onProgress: ProgressCallback;
126
147
  private forceAnalysis: boolean;
127
148
  private serviceFilter: string | null;
149
+ private entrypoint: string | undefined;
128
150
  private indexOnly: boolean;
129
151
  private profiler: Profiler;
130
152
  private parallelConfig: ParallelConfig | null;
131
153
  private analysisQueue: AnalysisQueue | null;
132
154
  private rfdbServerProcess: ChildProcess | null;
133
155
  private _serverWasExternal: boolean;
156
+ private diagnosticCollector: DiagnosticCollector;
157
+ private logger: Logger;
158
+ /** Config-provided services (REG-174) */
159
+ private configServices: ServiceDefinition[] | undefined;
160
+ /** Strict mode flag (REG-330) */
161
+ private strictMode: boolean;
134
162
 
135
163
  constructor(options: OrchestratorOptions = {}) {
136
164
  this.graph = options.graph!;
@@ -140,6 +168,7 @@ export class Orchestrator {
140
168
  this.onProgress = options.onProgress || (() => {}); // Callback для прогресса
141
169
  this.forceAnalysis = options.forceAnalysis || false; // Флаг для игнорирования кэша
142
170
  this.serviceFilter = options.serviceFilter || null; // Фильтр для одного сервиса
171
+ this.entrypoint = options.entrypoint; // Override entrypoint, bypasses discovery
143
172
  this.indexOnly = options.indexOnly || false; // Только DISCOVERY + INDEXING (для coverage)
144
173
  this.profiler = new Profiler('Orchestrator');
145
174
 
@@ -149,9 +178,24 @@ export class Orchestrator {
149
178
  this.rfdbServerProcess = null;
150
179
  this._serverWasExternal = false;
151
180
 
152
- // Auto-add default discovery if no discovery plugins provided
181
+ // Initialize diagnostic collector
182
+ this.diagnosticCollector = new DiagnosticCollector();
183
+
184
+ // Initialize logger (use provided or create default)
185
+ this.logger = options.logger ?? createLogger(options.logLevel ?? 'info');
186
+
187
+ // Store config-provided services (REG-174)
188
+ this.configServices = options.services;
189
+
190
+ // Strict mode configuration (REG-330)
191
+ this.strictMode = options.strictMode ?? false;
192
+
193
+ // Modified auto-add logic: SKIP auto-add if config services provided (REG-174)
153
194
  const hasDiscovery = this.plugins.some(p => p.metadata?.phase === 'DISCOVERY');
154
- if (!hasDiscovery) {
195
+ const hasConfigServices = this.configServices && this.configServices.length > 0;
196
+
197
+ if (!hasDiscovery && !hasConfigServices) {
198
+ // Only auto-add if NO discovery plugins AND NO config services
155
199
  this.plugins.unshift(new SimpleProjectDiscovery());
156
200
  }
157
201
  }
@@ -165,11 +209,38 @@ export class Orchestrator {
165
209
  // Resolve to absolute path
166
210
  const absoluteProjectPath = projectPath.startsWith('/') ? projectPath : resolve(projectPath);
167
211
 
212
+ // RADICAL SIMPLIFICATION: Clear entire graph once at the start if forceAnalysis
213
+ if (this.forceAnalysis && this.graph.clear) {
214
+ this.logger.info('Clearing entire graph (forceAnalysis=true)');
215
+ await this.graph.clear();
216
+ this.logger.info('Graph cleared successfully');
217
+ }
218
+
168
219
  this.onProgress({ phase: 'discovery', currentPlugin: 'Starting discovery...', message: 'Discovering services...', totalFiles: 0, processedFiles: 0 });
169
220
 
170
- // PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY
221
+ // PHASE 0: DISCOVERY - запуск плагинов фазы DISCOVERY (or use entrypoint override)
171
222
  this.profiler.start('DISCOVERY');
172
- const manifest = await this.discover(absoluteProjectPath);
223
+ let manifest: DiscoveryManifest;
224
+ if (this.entrypoint) {
225
+ // Skip discovery, create synthetic manifest with single service
226
+ const entrypointPath = this.entrypoint.startsWith('/')
227
+ ? this.entrypoint
228
+ : join(absoluteProjectPath, this.entrypoint);
229
+ const serviceName = this.entrypoint.split('/').pop()?.replace(/\.[^.]+$/, '') || 'main';
230
+ manifest = {
231
+ services: [{
232
+ id: `service:${serviceName}`,
233
+ name: serviceName,
234
+ path: entrypointPath,
235
+ metadata: { entrypoint: entrypointPath }
236
+ }],
237
+ entrypoints: [],
238
+ projectPath: absoluteProjectPath
239
+ };
240
+ this.logger.info('Using entrypoint override', { entrypoint: this.entrypoint, resolved: entrypointPath });
241
+ } else {
242
+ manifest = await this.discover(absoluteProjectPath);
243
+ }
173
244
  this.profiler.end('DISCOVERY');
174
245
 
175
246
  const epCount = manifest.entrypoints?.length || 0;
@@ -181,7 +252,7 @@ export class Orchestrator {
181
252
  totalFiles: 0,
182
253
  processedFiles: 0
183
254
  });
184
- console.log(`[Orchestrator] Discovery: ${svcCount} services, ${epCount} entrypoints`);
255
+ this.logger.info('Discovery complete', { services: svcCount, entrypoints: epCount });
185
256
 
186
257
  // Build unified list of indexing units from services AND entrypoints
187
258
  const indexingUnits = this.buildIndexingUnits(manifest);
@@ -195,13 +266,12 @@ export class Orchestrator {
195
266
  u.name.includes(this.serviceFilter!) ||
196
267
  u.path.includes(this.serviceFilter!)
197
268
  );
198
- console.log(`[Orchestrator] Filtering: ${this.serviceFilter} (found ${unitsToProcess.length} of ${indexingUnits.length})`);
269
+ this.logger.info('Filtering services', { filter: this.serviceFilter, found: unitsToProcess.length, total: indexingUnits.length });
199
270
  } else {
200
271
  unitsToProcess = indexingUnits;
201
272
  }
202
273
 
203
- console.log(`[Orchestrator] Processing ${unitsToProcess.length} indexing units (services + entrypoints)`);
204
- console.log(`[Orchestrator] Strategy: Phase-by-phase with DFS dependency tree per entrypoint`);
274
+ this.logger.info('Processing indexing units', { count: unitsToProcess.length, strategy: 'Phase-by-phase with DFS' });
205
275
 
206
276
  // PHASE 1: INDEXING - каждый сервис строит своё дерево зависимостей от entrypoint
207
277
  const indexingStart = Date.now();
@@ -232,6 +302,7 @@ export class Orchestrator {
232
302
  // Параллельно обрабатываем батч units
233
303
  await Promise.all(batch.map(async (unit, idx) => {
234
304
  const unitStart = Date.now();
305
+
235
306
  const unitManifest: UnitManifest = {
236
307
  projectPath: manifest.projectPath,
237
308
  service: {
@@ -243,9 +314,13 @@ export class Orchestrator {
243
314
  modules: []
244
315
  };
245
316
 
246
- await this.runPhase('INDEXING', { manifest: unitManifest, graph: this.graph, workerCount: 1 });
317
+ await this.runPhase('INDEXING', {
318
+ manifest: unitManifest,
319
+ graph: this.graph,
320
+ workerCount: 1,
321
+ });
247
322
  const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
248
- console.log(`[Orchestrator] ⏱️ INDEXING ${unit.name}: ${unitTime}s`);
323
+ this.logger.debug('INDEXING complete', { unit: unit.name, duration: unitTime });
249
324
 
250
325
  this.onProgress({
251
326
  phase: 'indexing',
@@ -260,13 +335,12 @@ export class Orchestrator {
260
335
  processedUnits += batch.length;
261
336
  }
262
337
  this.profiler.end('INDEXING');
263
- console.log(`[Orchestrator] ⏱️ INDEXING phase total: ${((Date.now() - indexingStart) / 1000).toFixed(2)}s`);
338
+ this.logger.info('INDEXING phase complete', { duration: ((Date.now() - indexingStart) / 1000).toFixed(2) });
264
339
 
265
340
  // Skip remaining phases if indexOnly mode (for coverage)
266
341
  if (this.indexOnly) {
267
342
  const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
268
- console.log(`[Orchestrator] ⏱️ indexOnly mode - skipping ANALYSIS/ENRICHMENT/VALIDATION`);
269
- console.log(`[Orchestrator] ⏱️ Total time: ${totalTime}s for ${unitsToProcess.length} units`);
343
+ this.logger.info('indexOnly mode - skipping remaining phases', { duration: totalTime, units: unitsToProcess.length });
270
344
  return manifest;
271
345
  }
272
346
 
@@ -313,9 +387,13 @@ export class Orchestrator {
313
387
  modules: []
314
388
  };
315
389
 
316
- await this.runPhase('ANALYSIS', { manifest: unitManifest, graph: this.graph, workerCount: 1 });
390
+ await this.runPhase('ANALYSIS', {
391
+ manifest: unitManifest,
392
+ graph: this.graph,
393
+ workerCount: 1,
394
+ });
317
395
  const unitTime = ((Date.now() - unitStart) / 1000).toFixed(2);
318
- console.log(`[Orchestrator] ⏱️ ANALYSIS ${unit.name}: ${unitTime}s`);
396
+ this.logger.debug('ANALYSIS complete', { unit: unit.name, duration: unitTime });
319
397
 
320
398
  this.onProgress({
321
399
  phase: 'analysis',
@@ -332,7 +410,7 @@ export class Orchestrator {
332
410
  }
333
411
 
334
412
  this.profiler.end('ANALYSIS');
335
- console.log(`[Orchestrator] ⏱️ ANALYSIS phase total: ${((Date.now() - analysisStart) / 1000).toFixed(2)}s`);
413
+ this.logger.info('ANALYSIS phase complete', { duration: ((Date.now() - analysisStart) / 1000).toFixed(2) });
336
414
 
337
415
  // PHASE 3: ENRICHMENT - post-processing, граф traversal, вычисления (глобально)
338
416
  const enrichmentStart = Date.now();
@@ -340,7 +418,28 @@ export class Orchestrator {
340
418
  this.onProgress({ phase: 'enrichment', currentPlugin: 'Starting enrichment...', message: 'Enriching graph data...', totalFiles: 0, processedFiles: 0 });
341
419
  await this.runPhase('ENRICHMENT', { manifest, graph: this.graph, workerCount: this.workerCount });
342
420
  this.profiler.end('ENRICHMENT');
343
- console.log(`[Orchestrator] ⏱️ ENRICHMENT phase: ${((Date.now() - enrichmentStart) / 1000).toFixed(2)}s`);
421
+ this.logger.info('ENRICHMENT phase complete', { duration: ((Date.now() - enrichmentStart) / 1000).toFixed(2) });
422
+
423
+ // STRICT MODE BARRIER: Check for fatal errors after ENRICHMENT (REG-330)
424
+ if (this.strictMode) {
425
+ const enrichmentDiagnostics = this.diagnosticCollector.getByPhase('ENRICHMENT');
426
+ const strictErrors = enrichmentDiagnostics.filter(d => d.severity === 'fatal');
427
+
428
+ if (strictErrors.length > 0) {
429
+ this.logger.error(`Strict mode: ${strictErrors.length} unresolved reference(s) found`);
430
+ for (const err of strictErrors) {
431
+ this.logger.error(` [${err.code}] ${err.message}`, {
432
+ file: err.file,
433
+ line: err.line,
434
+ plugin: err.plugin,
435
+ });
436
+ }
437
+ throw new Error(
438
+ `Strict mode: ${strictErrors.length} unresolved reference(s) found during ENRICHMENT. ` +
439
+ `Run without --strict for graceful degradation, or fix the underlying issues.`
440
+ );
441
+ }
442
+ }
344
443
 
345
444
  // PHASE 4: VALIDATION - проверка корректности графа (глобально)
346
445
  const validationStart = Date.now();
@@ -348,7 +447,7 @@ export class Orchestrator {
348
447
  this.onProgress({ phase: 'validation', currentPlugin: 'Starting validation...', message: 'Validating graph structure...', totalFiles: 0, processedFiles: 0 });
349
448
  await this.runPhase('VALIDATION', { manifest, graph: this.graph, workerCount: this.workerCount });
350
449
  this.profiler.end('VALIDATION');
351
- console.log(`[Orchestrator] ⏱️ VALIDATION phase: ${((Date.now() - validationStart) / 1000).toFixed(2)}s`);
450
+ this.logger.info('VALIDATION phase complete', { duration: ((Date.now() - validationStart) / 1000).toFixed(2) });
352
451
 
353
452
  // Flush graph to ensure all edges are persisted and queryable
354
453
  if (this.graph.flush) {
@@ -356,7 +455,7 @@ export class Orchestrator {
356
455
  }
357
456
 
358
457
  const totalTime = ((Date.now() - totalStartTime) / 1000).toFixed(2);
359
- console.log(`[Orchestrator] ⏱️ Total time: ${totalTime}s for ${unitsToProcess.length} units`);
458
+ this.logger.info('Analysis complete', { duration: totalTime, units: unitsToProcess.length });
360
459
 
361
460
  // Print profiling summary
362
461
  this.profiler.printSummary();
@@ -409,14 +508,86 @@ export class Orchestrator {
409
508
  }
410
509
 
411
510
  /**
412
- * PHASE 0: Discovery - запуск плагинов DISCOVERY фазы
511
+ * PHASE 0: Discovery - запуск плагинов DISCOVERY фазы.
512
+ * If config services are provided, they take precedence and plugins are skipped.
413
513
  */
414
514
  async discover(projectPath: string): Promise<DiscoveryManifest> {
515
+ // REG-174: If config provided services, use them directly instead of running discovery plugins
516
+ if (this.configServices && this.configServices.length > 0) {
517
+ this.logger.info('Using config-provided services (skipping discovery plugins)', {
518
+ serviceCount: this.configServices.length
519
+ });
520
+
521
+ const services: ServiceInfo[] = [];
522
+ // For each config service:
523
+ // 1. Resolve path relative to project root (validation ensures paths are relative)
524
+ // 2. Auto-detect entrypoint from package.json if not specified
525
+ // 3. Fall back to 'index.js' if detection fails
526
+ for (const configSvc of this.configServices) {
527
+ // All paths are relative (absolute paths rejected by ConfigLoader validation)
528
+ const servicePath = join(projectPath, configSvc.path);
529
+
530
+ // Resolve entrypoint
531
+ let entrypoint: string;
532
+ if (configSvc.entryPoint) {
533
+ entrypoint = configSvc.entryPoint;
534
+ } else {
535
+ // Auto-detect if not provided
536
+ const packageJsonPath = join(servicePath, 'package.json');
537
+ if (existsSync(packageJsonPath)) {
538
+ try {
539
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
540
+ entrypoint = resolveSourceEntrypoint(servicePath, pkg) ?? pkg.main ?? 'index.js';
541
+ } catch (e) {
542
+ this.logger.warn('Failed to read package.json for auto-detection', {
543
+ service: configSvc.name,
544
+ path: packageJsonPath,
545
+ error: (e as Error).message
546
+ });
547
+ entrypoint = 'index.js';
548
+ }
549
+ } else {
550
+ entrypoint = 'index.js';
551
+ }
552
+ }
553
+
554
+ // Create SERVICE node
555
+ const serviceNode = NodeFactory.createService(configSvc.name, servicePath, {
556
+ discoveryMethod: 'config',
557
+ entrypoint: entrypoint,
558
+ });
559
+ await this.graph.addNode(serviceNode);
560
+
561
+ services.push({
562
+ id: serviceNode.id,
563
+ name: configSvc.name,
564
+ path: servicePath,
565
+ metadata: {
566
+ entrypoint: join(servicePath, entrypoint),
567
+ },
568
+ });
569
+
570
+ this.logger.info('Registered config service', {
571
+ name: configSvc.name,
572
+ path: servicePath,
573
+ entrypoint: entrypoint
574
+ });
575
+ }
576
+
577
+ return {
578
+ services,
579
+ entrypoints: [], // Config services don't provide entrypoints
580
+ projectPath: projectPath
581
+ };
582
+ }
583
+
584
+ // ORIGINAL CODE: Run discovery plugins if no config services
415
585
  const context = {
416
586
  projectPath,
417
587
  graph: this.graph,
418
588
  config: this.config,
419
- phase: 'DISCOVERY'
589
+ phase: 'DISCOVERY',
590
+ logger: this.logger,
420
591
  };
421
592
 
422
593
  // Фильтруем плагины для фазы DISCOVERY
@@ -491,9 +662,76 @@ export class Orchestrator {
491
662
  const pluginContext: PluginContext = {
492
663
  ...context,
493
664
  onProgress: this.onProgress as unknown as PluginContext['onProgress'],
494
- forceAnalysis: this.forceAnalysis
665
+ forceAnalysis: this.forceAnalysis,
666
+ logger: this.logger,
667
+ strictMode: this.strictMode, // REG-330: Pass strict mode flag
495
668
  };
496
- await plugin.execute(pluginContext);
669
+
670
+ // Add reportIssue for VALIDATION phase
671
+ if (phaseName === 'VALIDATION') {
672
+ pluginContext.reportIssue = async (issue: IssueSpec): Promise<string> => {
673
+ const node = NodeFactory.createIssue(
674
+ issue.category,
675
+ issue.severity as IssueSeverity,
676
+ issue.message,
677
+ plugin.metadata.name,
678
+ issue.file,
679
+ issue.line,
680
+ issue.column || 0,
681
+ { context: issue.context }
682
+ );
683
+ await context.graph.addNode(node);
684
+ if (issue.targetNodeId) {
685
+ await context.graph.addEdge({
686
+ src: node.id,
687
+ dst: issue.targetNodeId,
688
+ type: 'AFFECTS',
689
+ });
690
+ }
691
+ return node.id;
692
+ };
693
+ }
694
+
695
+ try {
696
+ const result = await plugin.execute(pluginContext);
697
+
698
+ // Collect errors into diagnostics
699
+ this.diagnosticCollector.addFromPluginResult(
700
+ phaseName as PluginPhase,
701
+ plugin.metadata.name,
702
+ result
703
+ );
704
+
705
+ // Log plugin completion with warning if errors occurred
706
+ if (!result.success) {
707
+ console.warn(`[Orchestrator] Plugin ${plugin.metadata.name} reported failure`, {
708
+ errors: result.errors.length,
709
+ warnings: result.warnings.length,
710
+ });
711
+ }
712
+
713
+ // Check for fatal errors - STOP immediately
714
+ if (this.diagnosticCollector.hasFatal()) {
715
+ const allDiagnostics = this.diagnosticCollector.getAll();
716
+ const fatal = allDiagnostics.find(d => d.severity === 'fatal');
717
+ throw new Error(`Fatal error in ${plugin.metadata.name}: ${fatal?.message || 'Unknown fatal error'}`);
718
+ }
719
+ } catch (e) {
720
+ // Plugin threw an exception (not just returned errors)
721
+ const error = e instanceof Error ? e : new Error(String(e));
722
+
723
+ // Don't re-add if this was already a fatal error we threw
724
+ if (!this.diagnosticCollector.hasFatal()) {
725
+ this.diagnosticCollector.add({
726
+ code: 'ERR_PLUGIN_THREW',
727
+ severity: 'fatal',
728
+ message: error.message,
729
+ phase: phaseName as PluginPhase,
730
+ plugin: plugin.metadata.name,
731
+ });
732
+ }
733
+ throw error; // Re-throw to stop analysis
734
+ }
497
735
 
498
736
  // Send completion for this plugin
499
737
  this.onProgress({
@@ -504,6 +742,13 @@ export class Orchestrator {
504
742
  }
505
743
  }
506
744
 
745
+ /**
746
+ * Get the diagnostic collector for retrieving all collected diagnostics
747
+ */
748
+ getDiagnostics(): DiagnosticCollector {
749
+ return this.diagnosticCollector;
750
+ }
751
+
507
752
  /**
508
753
  * Run queue-based parallel analysis using worker_threads and RFDB server
509
754
  *
@@ -612,15 +857,15 @@ export class Orchestrator {
612
857
 
613
858
  // Check if server binary exists
614
859
  const projectRoot = join(dirname(fileURLToPath(import.meta.url)), '../..');
615
- const serverBinary = join(projectRoot, 'rust-engine/target/release/rfdb-server');
616
- const debugBinary = join(projectRoot, 'rust-engine/target/debug/rfdb-server');
860
+ const serverBinary = join(projectRoot, 'packages/rfdb-server/target/release/rfdb-server');
861
+ const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
617
862
 
618
863
  let binaryPath = existsSync(serverBinary) ? serverBinary : debugBinary;
619
864
 
620
865
  if (!existsSync(binaryPath)) {
621
866
  console.log(`[Orchestrator] RFDB server binary not found at ${binaryPath}, building...`);
622
867
  execSync('cargo build --bin rfdb-server', {
623
- cwd: join(projectRoot, 'rust-engine'),
868
+ cwd: join(projectRoot, 'packages/rfdb-server'),
624
869
  stdio: 'inherit',
625
870
  });
626
871
  binaryPath = debugBinary;