memor-code-cli 0.2.0

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 (418) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/dist/IntentionalStructure/index.d.ts +13 -0
  4. package/dist/IntentionalStructure/index.d.ts.map +1 -0
  5. package/dist/IntentionalStructure/index.js +46 -0
  6. package/dist/IntentionalStructure/index.js.map +1 -0
  7. package/dist/IntentionalStructure/parseCompose.d.ts +13 -0
  8. package/dist/IntentionalStructure/parseCompose.d.ts.map +1 -0
  9. package/dist/IntentionalStructure/parseCompose.js +234 -0
  10. package/dist/IntentionalStructure/parseCompose.js.map +1 -0
  11. package/dist/IntentionalStructure/parseDeployConfigs.d.ts +7 -0
  12. package/dist/IntentionalStructure/parseDeployConfigs.d.ts.map +1 -0
  13. package/dist/IntentionalStructure/parseDeployConfigs.js +168 -0
  14. package/dist/IntentionalStructure/parseDeployConfigs.js.map +1 -0
  15. package/dist/IntentionalStructure/parseEnvWiring.d.ts +7 -0
  16. package/dist/IntentionalStructure/parseEnvWiring.d.ts.map +1 -0
  17. package/dist/IntentionalStructure/parseEnvWiring.js +159 -0
  18. package/dist/IntentionalStructure/parseEnvWiring.js.map +1 -0
  19. package/dist/IntentionalStructure/parseWorkspaces.d.ts +8 -0
  20. package/dist/IntentionalStructure/parseWorkspaces.d.ts.map +1 -0
  21. package/dist/IntentionalStructure/parseWorkspaces.js +179 -0
  22. package/dist/IntentionalStructure/parseWorkspaces.js.map +1 -0
  23. package/dist/IntentionalStructure/types.d.ts +34 -0
  24. package/dist/IntentionalStructure/types.d.ts.map +1 -0
  25. package/dist/IntentionalStructure/types.js +8 -0
  26. package/dist/IntentionalStructure/types.js.map +1 -0
  27. package/dist/RepoTypeDetection/applyRepoModeConsistency.d.ts +11 -0
  28. package/dist/RepoTypeDetection/applyRepoModeConsistency.d.ts.map +1 -0
  29. package/dist/RepoTypeDetection/applyRepoModeConsistency.js +53 -0
  30. package/dist/RepoTypeDetection/applyRepoModeConsistency.js.map +1 -0
  31. package/dist/RepoTypeDetection/detectAppArchetype.d.ts +12 -0
  32. package/dist/RepoTypeDetection/detectAppArchetype.d.ts.map +1 -0
  33. package/dist/RepoTypeDetection/detectAppArchetype.js +162 -0
  34. package/dist/RepoTypeDetection/detectAppArchetype.js.map +1 -0
  35. package/dist/RepoTypeDetection/detectPackageArchetype.d.ts +10 -0
  36. package/dist/RepoTypeDetection/detectPackageArchetype.d.ts.map +1 -0
  37. package/dist/RepoTypeDetection/detectPackageArchetype.js +149 -0
  38. package/dist/RepoTypeDetection/detectPackageArchetype.js.map +1 -0
  39. package/dist/RepoTypeDetection/detectRepoCenterSystems.d.ts +11 -0
  40. package/dist/RepoTypeDetection/detectRepoCenterSystems.d.ts.map +1 -0
  41. package/dist/RepoTypeDetection/detectRepoCenterSystems.js +123 -0
  42. package/dist/RepoTypeDetection/detectRepoCenterSystems.js.map +1 -0
  43. package/dist/RepoTypeDetection/detectRepoMode.d.ts +16 -0
  44. package/dist/RepoTypeDetection/detectRepoMode.d.ts.map +1 -0
  45. package/dist/RepoTypeDetection/detectRepoMode.js +338 -0
  46. package/dist/RepoTypeDetection/detectRepoMode.js.map +1 -0
  47. package/dist/RepoTypeDetection/detectRepoSignals.d.ts +13 -0
  48. package/dist/RepoTypeDetection/detectRepoSignals.d.ts.map +1 -0
  49. package/dist/RepoTypeDetection/detectRepoSignals.js +451 -0
  50. package/dist/RepoTypeDetection/detectRepoSignals.js.map +1 -0
  51. package/dist/RepoTypeDetection/inferSupportRole.d.ts +8 -0
  52. package/dist/RepoTypeDetection/inferSupportRole.d.ts.map +1 -0
  53. package/dist/RepoTypeDetection/inferSupportRole.js +177 -0
  54. package/dist/RepoTypeDetection/inferSupportRole.js.map +1 -0
  55. package/dist/RuntimeInference/detectEnvConsumers.d.ts +7 -0
  56. package/dist/RuntimeInference/detectEnvConsumers.d.ts.map +1 -0
  57. package/dist/RuntimeInference/detectEnvConsumers.js +108 -0
  58. package/dist/RuntimeInference/detectEnvConsumers.js.map +1 -0
  59. package/dist/RuntimeInference/detectHttpEdges.d.ts +4 -0
  60. package/dist/RuntimeInference/detectHttpEdges.d.ts.map +1 -0
  61. package/dist/RuntimeInference/detectHttpEdges.js +146 -0
  62. package/dist/RuntimeInference/detectHttpEdges.js.map +1 -0
  63. package/dist/RuntimeInference/detectOrmConsumers.d.ts +5 -0
  64. package/dist/RuntimeInference/detectOrmConsumers.d.ts.map +1 -0
  65. package/dist/RuntimeInference/detectOrmConsumers.js +117 -0
  66. package/dist/RuntimeInference/detectOrmConsumers.js.map +1 -0
  67. package/dist/RuntimeInference/detectProxyRewrites.d.ts +5 -0
  68. package/dist/RuntimeInference/detectProxyRewrites.d.ts.map +1 -0
  69. package/dist/RuntimeInference/detectProxyRewrites.js +137 -0
  70. package/dist/RuntimeInference/detectProxyRewrites.js.map +1 -0
  71. package/dist/RuntimeInference/detectTrpcEdges.d.ts +4 -0
  72. package/dist/RuntimeInference/detectTrpcEdges.d.ts.map +1 -0
  73. package/dist/RuntimeInference/detectTrpcEdges.js +137 -0
  74. package/dist/RuntimeInference/detectTrpcEdges.js.map +1 -0
  75. package/dist/RuntimeInference/index.d.ts +17 -0
  76. package/dist/RuntimeInference/index.d.ts.map +1 -0
  77. package/dist/RuntimeInference/index.js +32 -0
  78. package/dist/RuntimeInference/index.js.map +1 -0
  79. package/dist/RuntimeInference/types.d.ts +8 -0
  80. package/dist/RuntimeInference/types.d.ts.map +1 -0
  81. package/dist/RuntimeInference/types.js +3 -0
  82. package/dist/RuntimeInference/types.js.map +1 -0
  83. package/dist/SystemSynthesis/index.d.ts +27 -0
  84. package/dist/SystemSynthesis/index.d.ts.map +1 -0
  85. package/dist/SystemSynthesis/index.js +31 -0
  86. package/dist/SystemSynthesis/index.js.map +1 -0
  87. package/dist/SystemSynthesis/mergeLayerOutputs.d.ts +13 -0
  88. package/dist/SystemSynthesis/mergeLayerOutputs.d.ts.map +1 -0
  89. package/dist/SystemSynthesis/mergeLayerOutputs.js +220 -0
  90. package/dist/SystemSynthesis/mergeLayerOutputs.js.map +1 -0
  91. package/dist/SystemSynthesis/stampDeterministic.d.ts +11 -0
  92. package/dist/SystemSynthesis/stampDeterministic.d.ts.map +1 -0
  93. package/dist/SystemSynthesis/stampDeterministic.js +177 -0
  94. package/dist/SystemSynthesis/stampDeterministic.js.map +1 -0
  95. package/dist/SystemSynthesis/synthesize.d.ts +15 -0
  96. package/dist/SystemSynthesis/synthesize.d.ts.map +1 -0
  97. package/dist/SystemSynthesis/synthesize.js +258 -0
  98. package/dist/SystemSynthesis/synthesize.js.map +1 -0
  99. package/dist/SystemSynthesis/types.d.ts +110 -0
  100. package/dist/SystemSynthesis/types.d.ts.map +1 -0
  101. package/dist/SystemSynthesis/types.js +12 -0
  102. package/dist/SystemSynthesis/types.js.map +1 -0
  103. package/dist/amGeneration/buildFlowGraph.d.ts +39 -0
  104. package/dist/amGeneration/buildFlowGraph.d.ts.map +1 -0
  105. package/dist/amGeneration/buildFlowGraph.js +643 -0
  106. package/dist/amGeneration/buildFlowGraph.js.map +1 -0
  107. package/dist/amGeneration/enrichAMEdges.d.ts +16 -0
  108. package/dist/amGeneration/enrichAMEdges.d.ts.map +1 -0
  109. package/dist/amGeneration/enrichAMEdges.js +291 -0
  110. package/dist/amGeneration/enrichAMEdges.js.map +1 -0
  111. package/dist/amGeneration/generateAM.d.ts +23 -0
  112. package/dist/amGeneration/generateAM.d.ts.map +1 -0
  113. package/dist/amGeneration/generateAM.js +131 -0
  114. package/dist/amGeneration/generateAM.js.map +1 -0
  115. package/dist/amGeneration/generateAMForRepo.d.ts +6 -0
  116. package/dist/amGeneration/generateAMForRepo.d.ts.map +1 -0
  117. package/dist/amGeneration/generateAMForRepo.js +130 -0
  118. package/dist/amGeneration/generateAMForRepo.js.map +1 -0
  119. package/dist/amGeneration/generateFlows.d.ts +27 -0
  120. package/dist/amGeneration/generateFlows.d.ts.map +1 -0
  121. package/dist/amGeneration/generateFlows.js +320 -0
  122. package/dist/amGeneration/generateFlows.js.map +1 -0
  123. package/dist/amGeneration/promptBuilder.d.ts +24 -0
  124. package/dist/amGeneration/promptBuilder.d.ts.map +1 -0
  125. package/dist/amGeneration/promptBuilder.js +299 -0
  126. package/dist/amGeneration/promptBuilder.js.map +1 -0
  127. package/dist/amGeneration/selectStrategicFiles.d.ts +42 -0
  128. package/dist/amGeneration/selectStrategicFiles.d.ts.map +1 -0
  129. package/dist/amGeneration/selectStrategicFiles.js +672 -0
  130. package/dist/amGeneration/selectStrategicFiles.js.map +1 -0
  131. package/dist/amGeneration/types.d.ts +83 -0
  132. package/dist/amGeneration/types.d.ts.map +1 -0
  133. package/dist/amGeneration/types.js +9 -0
  134. package/dist/amGeneration/types.js.map +1 -0
  135. package/dist/amSections.d.ts +29 -0
  136. package/dist/amSections.d.ts.map +1 -0
  137. package/dist/amSections.js +424 -0
  138. package/dist/amSections.js.map +1 -0
  139. package/dist/analysis/analysisCache.d.ts +4 -0
  140. package/dist/analysis/analysisCache.d.ts.map +1 -0
  141. package/dist/analysis/analysisCache.js +92 -0
  142. package/dist/analysis/analysisCache.js.map +1 -0
  143. package/dist/analysis/buildBranchStory.d.ts +95 -0
  144. package/dist/analysis/buildBranchStory.d.ts.map +1 -0
  145. package/dist/analysis/buildBranchStory.js +1264 -0
  146. package/dist/analysis/buildBranchStory.js.map +1 -0
  147. package/dist/analysis/buildDetailedFileXRay.d.ts +49 -0
  148. package/dist/analysis/buildDetailedFileXRay.d.ts.map +1 -0
  149. package/dist/analysis/buildDetailedFileXRay.js +607 -0
  150. package/dist/analysis/buildDetailedFileXRay.js.map +1 -0
  151. package/dist/analysis/buildFileXRay.d.ts +35 -0
  152. package/dist/analysis/buildFileXRay.d.ts.map +1 -0
  153. package/dist/analysis/buildFileXRay.js +305 -0
  154. package/dist/analysis/buildFileXRay.js.map +1 -0
  155. package/dist/analysis/classifySilentKiller.d.ts +14 -0
  156. package/dist/analysis/classifySilentKiller.d.ts.map +1 -0
  157. package/dist/analysis/classifySilentKiller.js +235 -0
  158. package/dist/analysis/classifySilentKiller.js.map +1 -0
  159. package/dist/analysis/diffChunks.d.ts +21 -0
  160. package/dist/analysis/diffChunks.d.ts.map +1 -0
  161. package/dist/analysis/diffChunks.js +302 -0
  162. package/dist/analysis/diffChunks.js.map +1 -0
  163. package/dist/analysis/extractRouteMap.d.ts +49 -0
  164. package/dist/analysis/extractRouteMap.d.ts.map +1 -0
  165. package/dist/analysis/extractRouteMap.js +354 -0
  166. package/dist/analysis/extractRouteMap.js.map +1 -0
  167. package/dist/analysis/generateFileInsight.d.ts +19 -0
  168. package/dist/analysis/generateFileInsight.d.ts.map +1 -0
  169. package/dist/analysis/generateFileInsight.js +103 -0
  170. package/dist/analysis/generateFileInsight.js.map +1 -0
  171. package/dist/analysis/llmXRay.d.ts +39 -0
  172. package/dist/analysis/llmXRay.d.ts.map +1 -0
  173. package/dist/analysis/llmXRay.js +208 -0
  174. package/dist/analysis/llmXRay.js.map +1 -0
  175. package/dist/analysis/simulateFailure.d.ts +44 -0
  176. package/dist/analysis/simulateFailure.d.ts.map +1 -0
  177. package/dist/analysis/simulateFailure.js +407 -0
  178. package/dist/analysis/simulateFailure.js.map +1 -0
  179. package/dist/anthropic.d.ts +3 -0
  180. package/dist/anthropic.d.ts.map +1 -0
  181. package/dist/anthropic.js +16 -0
  182. package/dist/anthropic.js.map +1 -0
  183. package/dist/app/buildAppPage.d.ts +34 -0
  184. package/dist/app/buildAppPage.d.ts.map +1 -0
  185. package/dist/app/buildAppPage.js +3085 -0
  186. package/dist/app/buildAppPage.js.map +1 -0
  187. package/dist/app-bundle.js +122 -0
  188. package/dist/buildAppData.d.ts +3 -0
  189. package/dist/buildAppData.d.ts.map +1 -0
  190. package/dist/buildAppData.js +207 -0
  191. package/dist/buildAppData.js.map +1 -0
  192. package/dist/builders/analyzeRepo.d.ts +25 -0
  193. package/dist/builders/analyzeRepo.d.ts.map +1 -0
  194. package/dist/builders/analyzeRepo.js +873 -0
  195. package/dist/builders/analyzeRepo.js.map +1 -0
  196. package/dist/builders/buildSystemConnections.d.ts +3 -0
  197. package/dist/builders/buildSystemConnections.d.ts.map +1 -0
  198. package/dist/builders/buildSystemConnections.js +388 -0
  199. package/dist/builders/buildSystemConnections.js.map +1 -0
  200. package/dist/builders/buildTextSummary.d.ts +61 -0
  201. package/dist/builders/buildTextSummary.d.ts.map +1 -0
  202. package/dist/builders/buildTextSummary.js +178 -0
  203. package/dist/builders/buildTextSummary.js.map +1 -0
  204. package/dist/builders/deriveRecommendedStartPath.d.ts +11 -0
  205. package/dist/builders/deriveRecommendedStartPath.d.ts.map +1 -0
  206. package/dist/builders/deriveRecommendedStartPath.js +140 -0
  207. package/dist/builders/deriveRecommendedStartPath.js.map +1 -0
  208. package/dist/builders/deriveRuntimeRole.d.ts +4 -0
  209. package/dist/builders/deriveRuntimeRole.d.ts.map +1 -0
  210. package/dist/builders/deriveRuntimeRole.js +30 -0
  211. package/dist/builders/deriveRuntimeRole.js.map +1 -0
  212. package/dist/builders/detectRunCommands.d.ts +16 -0
  213. package/dist/builders/detectRunCommands.d.ts.map +1 -0
  214. package/dist/builders/detectRunCommands.js +285 -0
  215. package/dist/builders/detectRunCommands.js.map +1 -0
  216. package/dist/builders/generateSystemNarrative.d.ts +12 -0
  217. package/dist/builders/generateSystemNarrative.d.ts.map +1 -0
  218. package/dist/builders/generateSystemNarrative.js +474 -0
  219. package/dist/builders/generateSystemNarrative.js.map +1 -0
  220. package/dist/builders/gitLogParser.d.ts +15 -0
  221. package/dist/builders/gitLogParser.d.ts.map +1 -0
  222. package/dist/builders/gitLogParser.js +116 -0
  223. package/dist/builders/gitLogParser.js.map +1 -0
  224. package/dist/builders/readRepoContext.d.ts +30 -0
  225. package/dist/builders/readRepoContext.d.ts.map +1 -0
  226. package/dist/builders/readRepoContext.js +323 -0
  227. package/dist/builders/readRepoContext.js.map +1 -0
  228. package/dist/builders/readSystemReadme.d.ts +39 -0
  229. package/dist/builders/readSystemReadme.d.ts.map +1 -0
  230. package/dist/builders/readSystemReadme.js +133 -0
  231. package/dist/builders/readSystemReadme.js.map +1 -0
  232. package/dist/builders/systemRanking.d.ts +24 -0
  233. package/dist/builders/systemRanking.d.ts.map +1 -0
  234. package/dist/builders/systemRanking.js +153 -0
  235. package/dist/builders/systemRanking.js.map +1 -0
  236. package/dist/cli.d.ts +3 -0
  237. package/dist/cli.d.ts.map +1 -0
  238. package/dist/cli.js +170 -0
  239. package/dist/cli.js.map +1 -0
  240. package/dist/detectors/applyRunnableConfidenceGate.d.ts +8 -0
  241. package/dist/detectors/applyRunnableConfidenceGate.d.ts.map +1 -0
  242. package/dist/detectors/applyRunnableConfidenceGate.js +166 -0
  243. package/dist/detectors/applyRunnableConfidenceGate.js.map +1 -0
  244. package/dist/detectors/classifySystemType.d.ts +17 -0
  245. package/dist/detectors/classifySystemType.d.ts.map +1 -0
  246. package/dist/detectors/classifySystemType.js +460 -0
  247. package/dist/detectors/classifySystemType.js.map +1 -0
  248. package/dist/detectors/detectAppInternalUnits.d.ts +20 -0
  249. package/dist/detectors/detectAppInternalUnits.d.ts.map +1 -0
  250. package/dist/detectors/detectAppInternalUnits.js +454 -0
  251. package/dist/detectors/detectAppInternalUnits.js.map +1 -0
  252. package/dist/detectors/detectBlocks.d.ts +6 -0
  253. package/dist/detectors/detectBlocks.d.ts.map +1 -0
  254. package/dist/detectors/detectBlocks.js +354 -0
  255. package/dist/detectors/detectBlocks.js.map +1 -0
  256. package/dist/detectors/detectComposeServices.d.ts +23 -0
  257. package/dist/detectors/detectComposeServices.d.ts.map +1 -0
  258. package/dist/detectors/detectComposeServices.js +255 -0
  259. package/dist/detectors/detectComposeServices.js.map +1 -0
  260. package/dist/detectors/detectEntryPoints.d.ts +6 -0
  261. package/dist/detectors/detectEntryPoints.d.ts.map +1 -0
  262. package/dist/detectors/detectEntryPoints.js +376 -0
  263. package/dist/detectors/detectEntryPoints.js.map +1 -0
  264. package/dist/detectors/detectSubsystems.d.ts +6 -0
  265. package/dist/detectors/detectSubsystems.d.ts.map +1 -0
  266. package/dist/detectors/detectSubsystems.js +376 -0
  267. package/dist/detectors/detectSubsystems.js.map +1 -0
  268. package/dist/detectors/detectSystemCandidates.d.ts +3 -0
  269. package/dist/detectors/detectSystemCandidates.d.ts.map +1 -0
  270. package/dist/detectors/detectSystemCandidates.js +577 -0
  271. package/dist/detectors/detectSystemCandidates.js.map +1 -0
  272. package/dist/devWatcher.d.ts +14 -0
  273. package/dist/devWatcher.d.ts.map +1 -0
  274. package/dist/devWatcher.js +96 -0
  275. package/dist/devWatcher.js.map +1 -0
  276. package/dist/graph/buildCodebaseGraph.d.ts +3 -0
  277. package/dist/graph/buildCodebaseGraph.d.ts.map +1 -0
  278. package/dist/graph/buildCodebaseGraph.js +602 -0
  279. package/dist/graph/buildCodebaseGraph.js.map +1 -0
  280. package/dist/graph/buildLLMPayload.d.ts +89 -0
  281. package/dist/graph/buildLLMPayload.d.ts.map +1 -0
  282. package/dist/graph/buildLLMPayload.js +715 -0
  283. package/dist/graph/buildLLMPayload.js.map +1 -0
  284. package/dist/graph/callLLM.d.ts +16 -0
  285. package/dist/graph/callLLM.d.ts.map +1 -0
  286. package/dist/graph/callLLM.js +274 -0
  287. package/dist/graph/callLLM.js.map +1 -0
  288. package/dist/graph/types.d.ts +76 -0
  289. package/dist/graph/types.d.ts.map +1 -0
  290. package/dist/graph/types.js +5 -0
  291. package/dist/graph/types.js.map +1 -0
  292. package/dist/graph/walkExports.d.ts +2 -0
  293. package/dist/graph/walkExports.d.ts.map +1 -0
  294. package/dist/graph/walkExports.js +172 -0
  295. package/dist/graph/walkExports.js.map +1 -0
  296. package/dist/heuristics/file-patterns.json +325 -0
  297. package/dist/heuristics/known-packages.json +1022 -0
  298. package/dist/heuristics/loader.d.ts +121 -0
  299. package/dist/heuristics/loader.d.ts.map +1 -0
  300. package/dist/heuristics/loader.js +196 -0
  301. package/dist/heuristics/loader.js.map +1 -0
  302. package/dist/heuristics/repo-mode-signals.json +248 -0
  303. package/dist/index.d.ts +3 -0
  304. package/dist/index.d.ts.map +1 -0
  305. package/dist/index.js +93 -0
  306. package/dist/index.js.map +1 -0
  307. package/dist/mcp.d.ts +3 -0
  308. package/dist/mcp.d.ts.map +1 -0
  309. package/dist/mcp.js +356 -0
  310. package/dist/mcp.js.map +1 -0
  311. package/dist/scanner/buildImportGraph.d.ts +23 -0
  312. package/dist/scanner/buildImportGraph.d.ts.map +1 -0
  313. package/dist/scanner/buildImportGraph.js +186 -0
  314. package/dist/scanner/buildImportGraph.js.map +1 -0
  315. package/dist/scanner/detectDBOps.d.ts +21 -0
  316. package/dist/scanner/detectDBOps.d.ts.map +1 -0
  317. package/dist/scanner/detectDBOps.js +346 -0
  318. package/dist/scanner/detectDBOps.js.map +1 -0
  319. package/dist/scanner/detectOutbound.d.ts +6 -0
  320. package/dist/scanner/detectOutbound.d.ts.map +1 -0
  321. package/dist/scanner/detectOutbound.js +101 -0
  322. package/dist/scanner/detectOutbound.js.map +1 -0
  323. package/dist/scanner/detectRepoPurpose.d.ts +19 -0
  324. package/dist/scanner/detectRepoPurpose.d.ts.map +1 -0
  325. package/dist/scanner/detectRepoPurpose.js +335 -0
  326. package/dist/scanner/detectRepoPurpose.js.map +1 -0
  327. package/dist/scanner/detectRoutes.d.ts +22 -0
  328. package/dist/scanner/detectRoutes.d.ts.map +1 -0
  329. package/dist/scanner/detectRoutes.js +406 -0
  330. package/dist/scanner/detectRoutes.js.map +1 -0
  331. package/dist/scanner/filterNoise.d.ts +4 -0
  332. package/dist/scanner/filterNoise.d.ts.map +1 -0
  333. package/dist/scanner/filterNoise.js +95 -0
  334. package/dist/scanner/filterNoise.js.map +1 -0
  335. package/dist/scanner/loadTsAliases.d.ts +20 -0
  336. package/dist/scanner/loadTsAliases.d.ts.map +1 -0
  337. package/dist/scanner/loadTsAliases.js +135 -0
  338. package/dist/scanner/loadTsAliases.js.map +1 -0
  339. package/dist/scanner/routeHandlers.d.ts +15 -0
  340. package/dist/scanner/routeHandlers.d.ts.map +1 -0
  341. package/dist/scanner/routeHandlers.js +154 -0
  342. package/dist/scanner/routeHandlers.js.map +1 -0
  343. package/dist/scanner/scanRepo.d.ts +10 -0
  344. package/dist/scanner/scanRepo.d.ts.map +1 -0
  345. package/dist/scanner/scanRepo.js +165 -0
  346. package/dist/scanner/scanRepo.js.map +1 -0
  347. package/dist/scanner/walkImports.d.ts +14 -0
  348. package/dist/scanner/walkImports.d.ts.map +1 -0
  349. package/dist/scanner/walkImports.js +162 -0
  350. package/dist/scanner/walkImports.js.map +1 -0
  351. package/dist/server.d.ts +2 -0
  352. package/dist/server.d.ts.map +1 -0
  353. package/dist/server.js +956 -0
  354. package/dist/server.js.map +1 -0
  355. package/dist/session/diff.d.ts +4 -0
  356. package/dist/session/diff.d.ts.map +1 -0
  357. package/dist/session/diff.js +150 -0
  358. package/dist/session/diff.js.map +1 -0
  359. package/dist/session/snapshot.d.ts +5 -0
  360. package/dist/session/snapshot.d.ts.map +1 -0
  361. package/dist/session/snapshot.js +114 -0
  362. package/dist/session/snapshot.js.map +1 -0
  363. package/dist/session/store.d.ts +8 -0
  364. package/dist/session/store.d.ts.map +1 -0
  365. package/dist/session/store.js +101 -0
  366. package/dist/session/store.js.map +1 -0
  367. package/dist/session/types.d.ts +46 -0
  368. package/dist/session/types.d.ts.map +1 -0
  369. package/dist/session/types.js +4 -0
  370. package/dist/session/types.js.map +1 -0
  371. package/dist/types.d.ts +350 -0
  372. package/dist/types.d.ts.map +1 -0
  373. package/dist/types.js +4 -0
  374. package/dist/types.js.map +1 -0
  375. package/dist/utils/file.d.ts +5 -0
  376. package/dist/utils/file.d.ts.map +1 -0
  377. package/dist/utils/file.js +76 -0
  378. package/dist/utils/file.js.map +1 -0
  379. package/dist/utils/path.d.ts +7 -0
  380. package/dist/utils/path.d.ts.map +1 -0
  381. package/dist/utils/path.js +62 -0
  382. package/dist/utils/path.js.map +1 -0
  383. package/dist/utils/text.d.ts +5 -0
  384. package/dist/utils/text.d.ts.map +1 -0
  385. package/dist/utils/text.js +29 -0
  386. package/dist/utils/text.js.map +1 -0
  387. package/dist/viewBuilders/buildSystemFolders.d.ts +39 -0
  388. package/dist/viewBuilders/buildSystemFolders.d.ts.map +1 -0
  389. package/dist/viewBuilders/buildSystemFolders.js +198 -0
  390. package/dist/viewBuilders/buildSystemFolders.js.map +1 -0
  391. package/dist/watcher/repoWatcher.d.ts +17 -0
  392. package/dist/watcher/repoWatcher.d.ts.map +1 -0
  393. package/dist/watcher/repoWatcher.js +87 -0
  394. package/dist/watcher/repoWatcher.js.map +1 -0
  395. package/package.json +102 -0
  396. package/public/memor_logo.svg +18 -0
  397. package/public/memor_transparent_logo.svg +25 -0
  398. package/public/tIcons/bun.svg +1 -0
  399. package/public/tIcons/css.svg +1 -0
  400. package/public/tIcons/docker.svg +3 -0
  401. package/public/tIcons/expressjs.svg +1 -0
  402. package/public/tIcons/html5.svg +6 -0
  403. package/public/tIcons/javascript.svg +1 -0
  404. package/public/tIcons/jest.svg +4 -0
  405. package/public/tIcons/json.svg +1 -0
  406. package/public/tIcons/markdown-light.svg +1 -0
  407. package/public/tIcons/nestjs.svg +1 -0
  408. package/public/tIcons/nextjs_icon_dark.svg +1 -0
  409. package/public/tIcons/npm.svg +1 -0
  410. package/public/tIcons/pnpm.svg +1 -0
  411. package/public/tIcons/prisma.svg +1 -0
  412. package/public/tIcons/react_dark.svg +11 -0
  413. package/public/tIcons/supabase.svg +15 -0
  414. package/public/tIcons/tailwindcss.svg +1 -0
  415. package/public/tIcons/turborepo-icon-light.svg +1 -0
  416. package/public/tIcons/typescript.svg +1 -0
  417. package/public/tIcons/vite.svg +1 -0
  418. package/public/tIcons/yarn.svg +1 -0
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stampDeterministic = stampDeterministic;
4
+ // ── Edge source classification ────────────────────────────────────────────
5
+ function edgeToSource(e) {
6
+ if (e.kind === "import")
7
+ return "import";
8
+ if (e.kind === "intentional")
9
+ return "intentional";
10
+ const t = e.type ?? "";
11
+ if (t === "ENV_CONSUMES")
12
+ return "env";
13
+ if (t === "ORM_CONSUMES")
14
+ return "orm";
15
+ if (t === "HTTP_CALL")
16
+ return "http";
17
+ if (t === "TRPC_CALL")
18
+ return "trpc";
19
+ if (t === "PROXY_ROUTE")
20
+ return "proxy";
21
+ return "import";
22
+ }
23
+ // ── Build connection refs to other NAMED systems ──────────────────────────
24
+ function buildConnectionRefs(nodeId, enriched, clusterToSystemName, direction) {
25
+ const byTarget = new Map();
26
+ for (const e of enriched.edges) {
27
+ const isMatch = direction === "outgoing" ? e.from === nodeId : e.to === nodeId;
28
+ if (!isMatch)
29
+ continue;
30
+ const targetId = direction === "outgoing" ? e.to : e.from;
31
+ const targetName = clusterToSystemName.get(targetId);
32
+ if (!targetName)
33
+ continue; // only reference systems the LLM has named
34
+ const existing = byTarget.get(targetName);
35
+ if (!existing || e.confidence > existing.confidence) {
36
+ byTarget.set(targetName, {
37
+ target: targetName,
38
+ confidence: Math.round(e.confidence * 100) / 100,
39
+ source: edgeToSource(e),
40
+ });
41
+ }
42
+ }
43
+ return [...byTarget.values()].sort((a, b) => b.confidence - a.confidence);
44
+ }
45
+ // ── Build infra refs (DB, cache, queue, external services) ────────────────
46
+ function buildInfraRefs(node, enriched) {
47
+ const infraIds = new Set(enriched.nodes
48
+ .filter((n) => n.kind !== "cluster" && n.kind !== "package")
49
+ .map((n) => n.id));
50
+ const byTarget = new Map();
51
+ // Runtime edges from this node to infra nodes
52
+ for (const e of enriched.edges) {
53
+ if (e.from !== node.id)
54
+ continue;
55
+ if (!infraIds.has(e.to))
56
+ continue;
57
+ const infraNode = enriched.nodes.find((n) => n.id === e.to);
58
+ if (!infraNode)
59
+ continue;
60
+ const existing = byTarget.get(infraNode.name);
61
+ if (!existing || e.confidence > existing.confidence) {
62
+ byTarget.set(infraNode.name, {
63
+ target: infraNode.name,
64
+ confidence: Math.round(e.confidence * 100) / 100,
65
+ source: edgeToSource(e),
66
+ });
67
+ }
68
+ }
69
+ // Also capture env_consumes and ormUses that may not have a matching infra node
70
+ // (e.g. synthetic "database" target when L1 has no matching system declared)
71
+ for (const target of node.envConsumes) {
72
+ if (!byTarget.has(target)) {
73
+ byTarget.set(target, { target, confidence: 0.9, source: "env" });
74
+ }
75
+ }
76
+ for (const evidence of node.ormUses) {
77
+ // evidence is e.g. "@prisma/client" — use it as the target label
78
+ const label = evidence.replace("@", "").split("/")[0]; // "@prisma/client" → "prisma"
79
+ if (!byTarget.has(label)) {
80
+ byTarget.set(label, { target: label, confidence: 0.95, source: "orm" });
81
+ }
82
+ }
83
+ return [...byTarget.values()].sort((a, b) => b.confidence - a.confidence);
84
+ }
85
+ // ── Graph-driven tier computation ────────────────────────────────────────
86
+ // Tier is a structural property the graph knows with certainty.
87
+ // The LLM's tier guess is always discarded — only this function decides.
88
+ // Archetypes that are always support regardless of how many systems import them.
89
+ // config/type-defs are imported everywhere by design — that's infrastructure, not product core.
90
+ const ALWAYS_SUPPORT_ARCHETYPES = new Set([
91
+ "type-defs", // pure type declarations — no runtime role
92
+ "config", // configuration only — imported by everything, still infrastructure
93
+ "db-migration", // migration scripts — run offline, not imported at runtime
94
+ ]);
95
+ function computeGraphTier(calledBy, archetype, maxInDegree, ownsRoutes) {
96
+ const inDeg = calledBy.length;
97
+ const arc = archetype ?? "";
98
+ // Support: config/type-defs/migrations are always support — even when widely imported.
99
+ // Must run before the primary check or these will be promoted incorrectly.
100
+ if (ALWAYS_SUPPORT_ARCHETYPES.has(arc))
101
+ return "support";
102
+ // Support: web-page — pages users navigate to, nothing should import them.
103
+ // Keep inDeg guard: a shared layout template legitimately has callers.
104
+ if (arc === "web-page" && inDeg === 0)
105
+ return "support";
106
+ // Primary: at least 2 callers AND at least half the graph's maximum inDegree.
107
+ if (inDeg >= 2 && inDeg >= Math.ceil(maxInDegree / 2))
108
+ return "primary";
109
+ // Support: any cluster with only UI routes (no /api/) and zero callers.
110
+ // Covers admin pages, marketing pages, etc. — structurally identical to web-page
111
+ // leaf consumers regardless of whether the archetype was applied to them.
112
+ if (inDeg === 0 &&
113
+ ownsRoutes.length > 0 &&
114
+ ownsRoutes.every((r) => !r.startsWith("/api/")))
115
+ return "support";
116
+ // Secondary: everything else.
117
+ return "secondary";
118
+ }
119
+ // ── Main stamp function ───────────────────────────────────────────────────
120
+ function stampDeterministic(llmSystems, enriched, clusterArchetype) {
121
+ // Build lookup: cluster id → system name (for connection refs)
122
+ const clusterToSystemName = new Map();
123
+ for (const s of llmSystems)
124
+ clusterToSystemName.set(s.clusterId, s.name);
125
+ const nodeById = new Map();
126
+ for (const n of enriched.nodes)
127
+ nodeById.set(n.id, n);
128
+ const result = llmSystems.map((llm, i) => {
129
+ const node = nodeById.get(llm.clusterId);
130
+ const connects_to = buildConnectionRefs(llm.clusterId, enriched, clusterToSystemName, "outgoing");
131
+ const called_by = buildConnectionRefs(llm.clusterId, enriched, clusterToSystemName, "incoming");
132
+ const uses_infra = node ? buildInfraRefs(node, enriched) : [];
133
+ return {
134
+ id: `synth-${llm.clusterId.replace(/\//g, "-")}-${i}`,
135
+ cluster_id: llm.clusterId,
136
+ file_count: node?.fileCount ?? 0,
137
+ package_id: node?.packageId,
138
+ // LLM-filled (name + description); tier is overwritten below by computeGraphTier
139
+ name: llm.name,
140
+ type: llm.type,
141
+ tier: llm.tier,
142
+ description: llm.description,
143
+ // Graph-filled — deterministic
144
+ owns_routes: node?.routes ?? [],
145
+ owns_models: node?.models ?? [],
146
+ connects_to,
147
+ called_by,
148
+ uses_infra,
149
+ };
150
+ });
151
+ // ── Graph-driven tier assignment ─────────────────────────────────────────
152
+ // Fully replaces whatever tier the LLM or archetype mapping assigned.
153
+ // Tier is a structural property — the graph knows it; the LLM guesses it.
154
+ // Stamp archetypes first so computeGraphTier can use them.
155
+ if (clusterArchetype) {
156
+ for (const sys of result) {
157
+ const a = clusterArchetype.get(sys.cluster_id);
158
+ if (a)
159
+ sys.archetype = a;
160
+ }
161
+ }
162
+ const maxInDegree = Math.max(...result.map((s) => s.called_by.length), 0);
163
+ for (const sys of result) {
164
+ sys.tier = computeGraphTier(sys.called_by, sys.archetype, maxInDegree, sys.owns_routes);
165
+ }
166
+ // Fallback: if the graph has no edges between named systems at all (e.g. a
167
+ // monorepo with one package), promote the system with the most raw file-level
168
+ // inDegree from the graph so something is always marked primary.
169
+ if (!result.some((s) => s.tier === "primary")) {
170
+ const byFiles = [...result].sort((a, b) => (nodeById.get(b.cluster_id)?.inDegree ?? 0) - (nodeById.get(a.cluster_id)?.inDegree ?? 0));
171
+ const top = byFiles[0];
172
+ if (top)
173
+ top.tier = "primary";
174
+ }
175
+ return result;
176
+ }
177
+ //# sourceMappingURL=stampDeterministic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stampDeterministic.js","sourceRoot":"","sources":["../../src/SystemSynthesis/stampDeterministic.ts"],"names":[],"mappings":";;AAwJA,gDAsEC;AApND,6EAA6E;AAE7E,SAAS,YAAY,CAAC,CAAe;IACnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACnD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,KAAK,WAAW;QAAK,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC,KAAK,WAAW;QAAK,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC,KAAK,aAAa;QAAG,OAAO,OAAO,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6EAA6E;AAE7E,SAAS,mBAAmB,CAC1B,MAAc,EACd,QAAuB,EACvB,mBAAwC,EACxC,SAAkC;IAElC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;QAC/E,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,QAAQ,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,2CAA2C;QAEtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpD,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE;gBACvB,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;gBAChD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED,6EAA6E;AAE7E,SAAS,cAAc,CACrB,IAAkB,EAClB,QAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,QAAQ,CAAC,KAAK;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAElD,8CAA8C;IAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;YAAE,SAAS;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAAE,SAAS;QAElC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YACpD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;gBAC3B,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG;gBAChD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,6EAA6E;IAC7E,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,iEAAiE;QACjE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;QACrF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC5E,CAAC;AAED,4EAA4E;AAC5E,gEAAgE;AAChE,yEAAyE;AAEzE,iFAAiF;AACjF,gGAAgG;AAChG,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,WAAW,EAAK,2CAA2C;IAC3D,QAAQ,EAAQ,oEAAoE;IACpF,cAAc,EAAE,2DAA2D;CAC5E,CAAC,CAAC;AAEH,SAAS,gBAAgB,CACvB,QAAyB,EACzB,SAA6B,EAC7B,WAAmB,EACnB,UAAoB;IAEpB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,MAAM,GAAG,GAAG,SAAS,IAAI,EAAE,CAAC;IAE5B,uFAAuF;IACvF,2EAA2E;IAC3E,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzD,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,GAAG,KAAK,UAAU,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAExD,8EAA8E;IAC9E,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAExE,wEAAwE;IACxE,iFAAiF;IACjF,0EAA0E;IAC1E,IACE,KAAK,KAAK,CAAC;QACX,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IAEnB,8BAA8B;IAC9B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,6EAA6E;AAE7E,SAAgB,kBAAkB,CAChC,UAAuB,EACvB,QAAuB,EACvB,gBAAsC;IAEtC,+DAA+D;IAC/D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAwB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAClG,MAAM,SAAS,GAAK,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAClG,MAAM,UAAU,GAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/D,OAAO;YACL,EAAE,EAAE,SAAS,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACrD,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC;YAChC,UAAU,EAAE,IAAI,EAAE,SAAS;YAE3B,iFAAiF;YACjF,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAE5B,+BAA+B;YAC/B,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;YAC/B,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;YAC/B,WAAW;YACX,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,sEAAsE;IACtE,0EAA0E;IAE1E,2DAA2D;IAC3D,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC;gBAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1E,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1F,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,iEAAiE;IACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,CACpG,CAAC;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * synthesize — Layer 4 orchestrator.
3
+ *
4
+ * 1. LLM names each system (name / type / tier / description only)
5
+ * 2. stampDeterministic() fills all structural fields from the graph
6
+ * 3. Returns SynthesisResult — the complete, confidence-scored AM
7
+ *
8
+ * The LLM never sees routes/connections in its output schema.
9
+ * The graph never invents names or descriptions.
10
+ */
11
+ import type { EnrichedGraph } from "./types";
12
+ import type { SynthesisResult } from "./types";
13
+ import { type CallLLMOptions } from "../graph/callLLM";
14
+ export declare function synthesize(enriched: EnrichedGraph, options?: CallLLMOptions): Promise<SynthesisResult>;
15
+ //# sourceMappingURL=synthesize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/SystemSynthesis/synthesize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,SAAS,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAElE,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsN9E,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAwF1B"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.synthesize = synthesize;
4
+ const callLLM_1 = require("../graph/callLLM");
5
+ const buildLLMPayload_1 = require("../graph/buildLLMPayload");
6
+ const stampDeterministic_1 = require("./stampDeterministic");
7
+ // ── Family graph enrichment ───────────────────────────────────────────────
8
+ // After promoteFamilies() collapses sibling clusters into a parent, we need
9
+ // synthetic EnrichedNodes + remapped edges so stampDeterministic can compute
10
+ // connection refs and tier correctly for the parent cluster.
11
+ function enrichGraphWithFamilies(enriched, parentToChildren) {
12
+ if (parentToChildren.size === 0)
13
+ return enriched;
14
+ const nodeById = new Map(enriched.nodes.map((n) => [n.id, n]));
15
+ const childToParent = new Map();
16
+ for (const [parent, children] of parentToChildren) {
17
+ for (const child of children)
18
+ childToParent.set(child, parent);
19
+ }
20
+ const syntheticNodes = [];
21
+ for (const [parent, childIds] of parentToChildren) {
22
+ const children = childIds
23
+ .map((id) => nodeById.get(id))
24
+ .filter((n) => n !== undefined);
25
+ if (children.length === 0)
26
+ continue;
27
+ const childSet = new Set(childIds);
28
+ // External edges: those crossing the family boundary
29
+ const externalIn = enriched.edges.filter((e) => childSet.has(e.to) && !childSet.has(e.from));
30
+ const externalOut = enriched.edges.filter((e) => childSet.has(e.from) && !childSet.has(e.to));
31
+ syntheticNodes.push({
32
+ id: parent,
33
+ name: parent.split("/").pop() ?? parent,
34
+ kind: "cluster",
35
+ fileCount: children.reduce((s, c) => s + c.fileCount, 0),
36
+ topExports: [...new Set(children.flatMap((c) => c.topExports))].slice(0, 10),
37
+ centrality: Math.max(...children.map((c) => c.centrality)),
38
+ inDegree: new Set(externalIn.map((e) => e.from)).size,
39
+ outDegree: new Set(externalOut.map((e) => e.to)).size,
40
+ isEntryPoint: children.some((c) => c.isEntryPoint),
41
+ isShared: children.some((c) => c.isShared),
42
+ routes: [...new Set(children.flatMap((c) => c.routes))],
43
+ models: [...new Set(children.flatMap((c) => c.models))],
44
+ hasTests: children.some((c) => c.hasTests),
45
+ hasTypes: children.some((c) => c.hasTypes),
46
+ hasConfig: children.some((c) => c.hasConfig),
47
+ envConsumes: [...new Set(children.flatMap((c) => c.envConsumes))],
48
+ ormUses: [...new Set(children.flatMap((c) => c.ormUses))],
49
+ });
50
+ }
51
+ // Remap all edges: child id → parent id; drop intra-family self-loops
52
+ const remappedEdges = enriched.edges
53
+ .map((e) => ({
54
+ ...e,
55
+ from: childToParent.get(e.from) ?? e.from,
56
+ to: childToParent.get(e.to) ?? e.to,
57
+ }))
58
+ .filter((e) => e.from !== e.to);
59
+ return {
60
+ ...enriched,
61
+ nodes: [...enriched.nodes, ...syntheticNodes],
62
+ edges: remappedEdges,
63
+ };
64
+ }
65
+ // ── Archetype → LLMSystem mapping ────────────────────────────────────────
66
+ // Convert a deterministically-classified cluster into an LLMSystem without
67
+ // any API call. Names are intentionally concise — they orient, not poeticize.
68
+ function archetypeToLLMSystem(c) {
69
+ const base = c.name.charAt(0).toUpperCase() + c.name.slice(1);
70
+ // Avoid tautological names like "Config Config" or "Types Types"
71
+ function withSuffix(suffix) {
72
+ return base.toLowerCase().endsWith(suffix.toLowerCase()) ? base : `${base} ${suffix}`;
73
+ }
74
+ const NAME = {
75
+ "data-layer": withSuffix("Data Layer"),
76
+ "db-migration": withSuffix("Migrations"),
77
+ "cache-client": withSuffix("Cache"),
78
+ "auth-service": withSuffix("Auth"),
79
+ "queue-worker": withSuffix("Worker"),
80
+ "email-service": withSuffix("Mailer"),
81
+ "middleware": withSuffix("Middleware"),
82
+ "type-defs": withSuffix("Types"),
83
+ "config": withSuffix("Config"),
84
+ "shared-lib": base,
85
+ "app-entry": withSuffix("Entry"),
86
+ "web-page": base,
87
+ };
88
+ const TYPE = {
89
+ "data-layer": "data-layer",
90
+ "db-migration": "data-layer",
91
+ "cache-client": "infra",
92
+ "auth-service": "api-service",
93
+ "queue-worker": "worker",
94
+ "email-service": "worker",
95
+ "middleware": "shared-library",
96
+ "type-defs": "shared-library",
97
+ "config": "config",
98
+ "shared-lib": "shared-library",
99
+ "app-entry": "web-app",
100
+ "web-page": "web-app",
101
+ };
102
+ const TIER = {
103
+ "data-layer": "primary",
104
+ "db-migration": "support",
105
+ "cache-client": "support",
106
+ "auth-service": "secondary",
107
+ "queue-worker": "secondary",
108
+ "email-service": "secondary",
109
+ "middleware": "support",
110
+ "type-defs": "support",
111
+ "config": "support",
112
+ "shared-lib": "support",
113
+ "app-entry": "secondary",
114
+ "web-page": "secondary",
115
+ };
116
+ const DESC = {
117
+ "data-layer": "Manages database schema and persistent data access.",
118
+ "db-migration": "Contains database migration scripts and schema versioning.",
119
+ "cache-client": "Provides distributed cache access to reduce latency.",
120
+ "auth-service": "Handles authentication tokens, sessions, and access control.",
121
+ "queue-worker": "Processes background jobs and deferred tasks asynchronously.",
122
+ "email-service": "Sends transactional email and notifications to users.",
123
+ "middleware": "Cross-cutting concerns: validation, logging, and request transformation.",
124
+ "type-defs": "Shared TypeScript type definitions and domain interfaces.",
125
+ "config": "Application configuration and environment settings.",
126
+ "shared-lib": "Shared utilities used across multiple modules.",
127
+ "app-entry": "Application entry point that initialises and bootstraps the system.",
128
+ "web-page": "Public-facing page that users land on directly.",
129
+ };
130
+ const a = c.archetype;
131
+ return {
132
+ clusterId: c.id,
133
+ name: NAME[a],
134
+ type: TYPE[a],
135
+ tier: TIER[a],
136
+ description: DESC[a],
137
+ };
138
+ }
139
+ // ── Deterministic fallback when LLM is unavailable ───────────────────────
140
+ // Produces LLMSystem[] from top clusters by signal quality, no API call needed.
141
+ const SKIP_SEGS = new Set(["src", "lib", "libs", "packages", "apps", "modules", "source"]);
142
+ function fallbackSystemName(id, baseName, nameCounts) {
143
+ if ((nameCounts.get(baseName) ?? 0) <= 1)
144
+ return baseName;
145
+ const parts = id.split("/");
146
+ for (let i = parts.length - 2; i >= 0; i--) {
147
+ if (!SKIP_SEGS.has(parts[i]))
148
+ return `${parts[i]}/${baseName}`;
149
+ }
150
+ return baseName;
151
+ }
152
+ function buildFallbackSystems(enriched) {
153
+ const all = enriched.nodes
154
+ .filter((n) => (n.kind === "cluster" || n.kind === "package") && !n.hasTests && n.fileCount >= 1);
155
+ // Always include nodes with infra signals regardless of inDegree
156
+ const withInfra = all.filter((n) => n.ormUses.length > 0 || n.envConsumes.length > 0 || n.routes.length > 0);
157
+ const infraIds = new Set(withInfra.map((n) => n.id));
158
+ // Fill remaining slots with most-imported clusters
159
+ const rest = all
160
+ .filter((n) => !infraIds.has(n.id))
161
+ .sort((a, b) => b.inDegree - a.inDegree);
162
+ const candidates = [...withInfra, ...rest].slice(0, 25);
163
+ const nameCounts = new Map();
164
+ for (const n of candidates)
165
+ nameCounts.set(n.name, (nameCounts.get(n.name) ?? 0) + 1);
166
+ const maxIn = Math.max(...candidates.map((n) => n.inDegree), 1);
167
+ return candidates.map((n, i) => {
168
+ const relIn = n.inDegree / maxIn;
169
+ const tier = relIn >= 0.5 ? "primary"
170
+ : relIn >= 0.15 || n.isEntryPoint ? "secondary"
171
+ : "support";
172
+ const displayName = fallbackSystemName(n.id, n.name, nameCounts);
173
+ const capitalized = displayName.charAt(0).toUpperCase() + displayName.slice(1);
174
+ return {
175
+ clusterId: n.id,
176
+ name: capitalized,
177
+ type: n.hasTypes ? "shared-library" : n.hasConfig ? "config" : "unknown",
178
+ tier,
179
+ description: `${n.fileCount} file${n.fileCount !== 1 ? "s" : ""}${n.routes.length > 0 ? `, ${n.routes.length} routes` : ""}`,
180
+ };
181
+ });
182
+ }
183
+ // ── Main synthesize function ──────────────────────────────────────────────
184
+ async function synthesize(enriched, options = {}) {
185
+ const hasApiKey = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY);
186
+ // Phase 3: split payload into deterministic (classified) and ambiguous clusters.
187
+ // Deterministic clusters are pre-named without any API call.
188
+ // Only ambiguous clusters are sent to the LLM — smaller payload, fewer tokens.
189
+ // Family promotion runs inside buildAmbiguousPayload: sibling-heavy directories
190
+ // are collapsed into their parent before the LLM sees them.
191
+ const { ambiguousPayloadStr, deterministicClusters, routeFamilies, parentToChildren } = (0, buildLLMPayload_1.buildAmbiguousPayload)(enriched);
192
+ // Enrich the graph with synthetic parent nodes + remapped edges so stampDeterministic
193
+ // can compute correct connection refs and tier for promoted family clusters.
194
+ const enrichedForStamp = enrichGraphWithFamilies(enriched, parentToChildren);
195
+ // Build archetype map so it can be stamped onto SynthesizedSystem after stampDeterministic
196
+ const clusterArchetype = new Map(deterministicClusters
197
+ .filter((c) => c.archetype !== undefined)
198
+ .map((c) => [c.id, c.archetype]));
199
+ const deterministicSystems = deterministicClusters.map(archetypeToLLMSystem);
200
+ let llmSystems = [];
201
+ let repoSummary = "";
202
+ // Skip LLM if everything is already classified
203
+ const needsLLM = ambiguousPayloadStr.length > 0;
204
+ if (needsLLM) {
205
+ // Try cache first (keyed by the ambiguous payload hash)
206
+ try {
207
+ const cached = await (0, callLLM_1.readLLMCache)(enriched);
208
+ if (cached && cached.systems.length > 0) {
209
+ llmSystems = cached.systems;
210
+ repoSummary = cached.repoSummary;
211
+ }
212
+ }
213
+ catch { /* cache miss is fine */ }
214
+ // Call LLM with only ambiguous clusters if cache missed and key available
215
+ if (llmSystems.length === 0 && hasApiKey && !options.noCache) {
216
+ try {
217
+ const response = await (0, callLLM_1.callLLM)(enriched, {
218
+ ...options,
219
+ payloadOverride: ambiguousPayloadStr,
220
+ });
221
+ llmSystems = response.systems;
222
+ repoSummary = response.repoSummary;
223
+ }
224
+ catch (err) {
225
+ console.warn("[memor] LLM call failed, using deterministic fallback:", err.message);
226
+ }
227
+ }
228
+ }
229
+ // Merge deterministic (pre-named) + LLM-named systems
230
+ const merged = [...deterministicSystems, ...llmSystems];
231
+ // If LLM failed and we have ambiguous clusters that got no names,
232
+ // add fallback-named systems for them (deduplicated against deterministic results).
233
+ const deterministicIds = new Set(deterministicSystems.map((s) => s.clusterId));
234
+ const ambiguousFallback = needsLLM && llmSystems.length === 0 && merged.length > 0
235
+ ? buildFallbackSystems(enriched).filter((s) => !deterministicIds.has(s.clusterId))
236
+ : [];
237
+ // Full fallback: if LLM failed and we have no pre-named systems either
238
+ const allSystems = merged.length > 0
239
+ ? [...merged, ...ambiguousFallback]
240
+ : buildFallbackSystems(enriched);
241
+ // Stamp all structural fields + archetype + tier from the graph — no LLM involved.
242
+ // Uses enrichedForStamp which includes synthetic parent nodes for promoted families.
243
+ const systems = (0, stampDeterministic_1.stampDeterministic)(allSystems, enrichedForStamp, clusterArchetype);
244
+ return {
245
+ systems,
246
+ repo_summary: repoSummary,
247
+ meta: {
248
+ repo_name: enriched.meta.repoName,
249
+ repo_type: enriched.meta.repoType,
250
+ repo_structure: enriched.meta.repoStructure,
251
+ tech_stack: enriched.meta.techStack,
252
+ total_files: enriched.meta.totalFiles,
253
+ data_models: enriched.meta.dataModels,
254
+ route_families: routeFamilies.length > 0 ? routeFamilies : undefined,
255
+ },
256
+ };
257
+ }
258
+ //# sourceMappingURL=synthesize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../src/SystemSynthesis/synthesize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Layer 4 output types — what System Synthesis produces.
3
+ *
4
+ * Hard separation:
5
+ * LLM fills: name, type, tier, description, repo_summary
6
+ * Graph fills: owns_routes, owns_models, connects_to, called_by, uses_infra
7
+ *
8
+ * The LLM never remembers routes. The graph never invents names.
9
+ */
10
+ export type ConnectionSource = "import" | "intentional" | "env" | "orm" | "http" | "trpc" | "proxy";
11
+ export type ConnectionRef = {
12
+ target: string;
13
+ confidence: number;
14
+ source: ConnectionSource;
15
+ };
16
+ export type SynthesizedSystem = {
17
+ id: string;
18
+ cluster_id: string;
19
+ file_count: number;
20
+ package_id?: string;
21
+ name: string;
22
+ type: string;
23
+ tier: "primary" | "secondary" | "support";
24
+ description: string;
25
+ archetype?: string;
26
+ owns_routes: string[];
27
+ owns_models: string[];
28
+ connects_to: ConnectionRef[];
29
+ called_by: ConnectionRef[];
30
+ uses_infra: ConnectionRef[];
31
+ };
32
+ export type SynthesisResult = {
33
+ systems: SynthesizedSystem[];
34
+ repo_summary: string;
35
+ meta: {
36
+ repo_name: string;
37
+ repo_type?: string;
38
+ repo_structure?: string;
39
+ tech_stack?: string[];
40
+ total_files: number;
41
+ data_models: string[];
42
+ /** Transport-folded route families — orientation anchors for the developer */
43
+ route_families?: Array<{
44
+ family: string;
45
+ count: number;
46
+ }>;
47
+ };
48
+ };
49
+ /**
50
+ * EnrichedGraph — the unified output of Layer 1 + Layer 2 + Layer 3.
51
+ *
52
+ * This is the single type that Layer 4 (System Synthesis) consumes.
53
+ * It merges:
54
+ * - L1 declared systems (docker-compose, workspaces, deploy configs)
55
+ * - L2 static import graph (clusters, edges, exports, routes, models)
56
+ * - L3 runtime edges (HTTP calls, ORM consumers, env wiring, tRPC)
57
+ *
58
+ * Every piece of deterministic knowledge about the codebase lives here.
59
+ * The LLM only names and explains — it never discovers.
60
+ */
61
+ export type NodeKind = "cluster" | "package" | "app" | "database" | "cache" | "queue" | "proxy" | "infra";
62
+ export type EdgeKind = "import" | "intentional" | "runtime";
63
+ export type EnrichedNode = {
64
+ id: string;
65
+ name: string;
66
+ kind: NodeKind;
67
+ fileCount: number;
68
+ topExports: string[];
69
+ centrality: number;
70
+ inDegree: number;
71
+ outDegree: number;
72
+ isEntryPoint: boolean;
73
+ isShared: boolean;
74
+ packageId?: string;
75
+ routes: string[];
76
+ models: string[];
77
+ hasTests: boolean;
78
+ hasTypes: boolean;
79
+ hasConfig: boolean;
80
+ envConsumes: string[];
81
+ ormUses: string[];
82
+ };
83
+ export type EnrichedEdge = {
84
+ from: string;
85
+ to: string;
86
+ kind: EdgeKind;
87
+ weight: number;
88
+ symbols: string[];
89
+ type?: string;
90
+ evidence?: string;
91
+ confidence: number;
92
+ };
93
+ export type EnrichedGraph = {
94
+ repoRoot: string;
95
+ nodes: EnrichedNode[];
96
+ edges: EnrichedEdge[];
97
+ meta: {
98
+ repoName: string;
99
+ repoStructure?: string;
100
+ repoType?: string;
101
+ techStack?: string[];
102
+ readmeSummary?: string;
103
+ frameworks: string[];
104
+ totalFiles: number;
105
+ totalClusters: number;
106
+ packages: number;
107
+ dataModels: string[];
108
+ };
109
+ };
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/SystemSynthesis/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Layer 4 output types — what System Synthesis produces.
4
+ *
5
+ * Hard separation:
6
+ * LLM fills: name, type, tier, description, repo_summary
7
+ * Graph fills: owns_routes, owns_models, connects_to, called_by, uses_infra
8
+ *
9
+ * The LLM never remembers routes. The graph never invents names.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/SystemSynthesis/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}