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,577 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.detectSystemCandidates = detectSystemCandidates;
37
+ const path = __importStar(require("path"));
38
+ const path_1 = require("../utils/path");
39
+ const file_1 = require("../utils/file");
40
+ const text_1 = require("../utils/text");
41
+ // ─── JS/TS manifest (only signal that counts) ─────────────────────────────────
42
+ const MANIFEST_FILE = "package.json";
43
+ // ─── Entry points — JS/TS only ────────────────────────────────────────────────
44
+ const ENTRY_POINT_FILES = new Set([
45
+ "index.ts", "index.tsx", "index.js", "index.jsx",
46
+ "main.ts", "main.tsx", "main.js", "main.jsx",
47
+ "app.ts", "app.tsx", "app.js", "app.jsx",
48
+ "server.ts", "server.js",
49
+ ]);
50
+ const README_NAMES = new Set([
51
+ "README.md", "README.rst", "README.txt", "README",
52
+ "readme.md", "readme.rst", "readme.txt",
53
+ ]);
54
+ // ─── Skip / noise tables ──────────────────────────────────────────────────────
55
+ const ALWAYS_SKIP = new Set([
56
+ "node_modules", ".git", ".next", ".turbo", "dist", "build", "out",
57
+ ".cache", ".vercel", "coverage", ".husky", ".github", ".vscode",
58
+ ".idea", ".svelte-kit", ".nuxt", "vendor", ".gradle", ".mvn",
59
+ "__tests__", "__mocks__", "test", "tests", "spec", "specs",
60
+ "fixtures", "mocks", "stubs",
61
+ ]);
62
+ const NOISE_NAMES = new Set([
63
+ "types", "type", "utils", "util", "helpers", "helper", "constants",
64
+ "config", "assets", "styles", "style", "css", "images", "icons",
65
+ "fonts", "generated", "gen", "proto", "protos", "migrations", "seeds",
66
+ ]);
67
+ const SYSTEM_HINT_NAMES = new Set([
68
+ "docs", "documentation", "studio", "supabase", "docker",
69
+ "workers", "worker", "jobs", "cron", "infra", "infrastructure",
70
+ "mobile", "desktop", "cli", "packages", "apps", "services",
71
+ "api", "web", "frontend", "backend", "server", "admin", "dashboard",
72
+ "providers", "shared", "clients", "gateway", "registry", "compiler",
73
+ ]);
74
+ const COMPOUND_SUFFIX_HINTS = /-(core|sdk|ctl|cli|server|api|ui|lib|common|shared|plugins?)$/i;
75
+ // ─── Contextual false-positive patterns ───────────────────────────────────────
76
+ /**
77
+ * Dir names that are platform-specific bindings inside a cross-platform SDK.
78
+ * Only excluded when the parent carries a cross-platform signal.
79
+ */
80
+ const PLATFORM_BINDING_NAMES = new Set([
81
+ "android", "ios", "windows", "linux", "macos",
82
+ ]);
83
+ /**
84
+ * Files whose presence in a directory signals it is a cross-platform SDK.
85
+ * Any android/ or ios/ subdirectory of such a dir is a binding, not a system.
86
+ */
87
+ const CROSS_PLATFORM_SIGNALS = new Set([
88
+ "react-native.config.js",
89
+ "expo-module.config.json",
90
+ "pubspec.yaml", // Flutter plugin root
91
+ "melos.yaml", // Flutter monorepo root
92
+ ]);
93
+ /**
94
+ * Gradle source set names — directories named these under a `src/` parent
95
+ * are NOT standalone systems, just Gradle conventions.
96
+ */
97
+ const GRADLE_SOURCE_SETS = new Set([
98
+ "main", "test", "androidTest", "debug", "release",
99
+ ]);
100
+ // ─── Node helpers ─────────────────────────────────────────────────────────────
101
+ function childDirs(node) {
102
+ return node.children.filter((c) => c.isDirectory);
103
+ }
104
+ function childFiles(node) {
105
+ return node.children.filter((c) => !c.isDirectory);
106
+ }
107
+ function hasPackageJson(node) {
108
+ return node.children.some((c) => !c.isDirectory && c.name === MANIFEST_FILE);
109
+ }
110
+ function hasReadme(node) {
111
+ return node.children.some((c) => !c.isDirectory && README_NAMES.has(c.name));
112
+ }
113
+ function hasEntryPoint(node) {
114
+ if (node.children.some((c) => !c.isDirectory && ENTRY_POINT_FILES.has(c.name)))
115
+ return true;
116
+ for (const child of childDirs(node)) {
117
+ if (child.children.some((c) => !c.isDirectory && ENTRY_POINT_FILES.has(c.name)))
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+ const SOURCE_NOISE_EXT = new Set([
123
+ ".lock", ".yaml", ".yml", ".json", ".md", ".txt",
124
+ ".png", ".jpg", ".svg", ".ico", ".gif", ".webp",
125
+ ".woff", ".woff2", ".ttf", ".eot",
126
+ ]);
127
+ function countSourceFiles(node) {
128
+ return childFiles(node).filter((f) => !SOURCE_NOISE_EXT.has(f.extension)).length;
129
+ }
130
+ function countSubtreeSourceFiles(node, maxDepth = 3, depth = 0) {
131
+ let n = countSourceFiles(node);
132
+ if (depth >= maxDepth)
133
+ return n;
134
+ for (const child of childDirs(node)) {
135
+ if (ALWAYS_SKIP.has(child.name))
136
+ continue;
137
+ n += countSubtreeSourceFiles(child, maxDepth, depth + 1);
138
+ }
139
+ return n;
140
+ }
141
+ // ─── Contextual false-positive checks ────────────────────────────────────────
142
+ /**
143
+ * True if `child` is a platform-specific binding dir (android/, ios/) inside
144
+ * a cross-platform SDK parent (React Native, Flutter, Expo).
145
+ */
146
+ function isPlatformBinding(child, parent) {
147
+ if (!PLATFORM_BINDING_NAMES.has(child.name.toLowerCase()))
148
+ return false;
149
+ return parent.children.some((c) => !c.isDirectory &&
150
+ (CROSS_PLATFORM_SIGNALS.has(c.name) || c.name.endsWith(".podspec")));
151
+ }
152
+ /**
153
+ * True if `child` is a Gradle source set (src/main, src/test, etc.).
154
+ * These are NOT standalone systems — they are Gradle build conventions.
155
+ */
156
+ function isGradleSourceSet(child, parent) {
157
+ return parent.name === "src" && GRADLE_SOURCE_SETS.has(child.name);
158
+ }
159
+ // ─── Scoring ──────────────────────────────────────────────────────────────────
160
+ const MANIFEST_SCORE = 10;
161
+ const README_SCORE = 3;
162
+ const ENTRY_SCORE = 3;
163
+ const HINT_SCORE = 2;
164
+ const DEPTH_PENALTY = 2; // steeper — JS/TS repos rarely have real systems at depth 4+
165
+ const SCORE_THRESHOLD = 5;
166
+ function scoreDir(node, depth) {
167
+ let score = 0;
168
+ if (hasPackageJson(node))
169
+ score += MANIFEST_SCORE;
170
+ if (hasReadme(node))
171
+ score += README_SCORE;
172
+ if (hasEntryPoint(node))
173
+ score += ENTRY_SCORE;
174
+ const srcCount = countSourceFiles(node);
175
+ if (srcCount >= 5)
176
+ score += 1;
177
+ if (srcCount >= 15)
178
+ score += 1;
179
+ if (srcCount >= 30)
180
+ score += 1;
181
+ const dirCount = childDirs(node).filter((d) => !ALWAYS_SKIP.has(d.name)).length;
182
+ if (dirCount >= 3)
183
+ score += 1;
184
+ const lower = node.name.toLowerCase();
185
+ if (SYSTEM_HINT_NAMES.has(lower) || COMPOUND_SUFFIX_HINTS.test(lower))
186
+ score += HINT_SCORE;
187
+ if (NOISE_NAMES.has(lower))
188
+ score -= 4;
189
+ score -= depth * DEPTH_PENALTY;
190
+ return score;
191
+ }
192
+ function collectScoredCandidates(node, depth = 0, maxDepth = 4, parent = null) {
193
+ const results = [];
194
+ for (const child of childDirs(node)) {
195
+ if (ALWAYS_SKIP.has(child.name))
196
+ continue;
197
+ // Contextual false-positive elimination
198
+ if (parent && isPlatformBinding(child, node))
199
+ continue;
200
+ if (parent && isGradleSourceSet(child, node))
201
+ continue;
202
+ const score = scoreDir(child, depth + 1);
203
+ if (score >= SCORE_THRESHOLD) {
204
+ results.push({ node: child, score, depth: depth + 1 });
205
+ }
206
+ if (depth + 1 < maxDepth) {
207
+ results.push(...collectScoredCandidates(child, depth + 1, maxDepth, node));
208
+ }
209
+ }
210
+ return results;
211
+ }
212
+ function hierarchicalDedup(candidates) {
213
+ return candidates.filter((parent) => {
214
+ const hasStrongerChild = candidates.some((child) => child !== parent &&
215
+ child.node.fullPath.startsWith(parent.node.fullPath + path.sep) &&
216
+ child.score >= parent.score - 3);
217
+ return !hasStrongerChild;
218
+ });
219
+ }
220
+ function dedupByPath(list) {
221
+ const seen = new Set();
222
+ return list.filter((c) => {
223
+ if (seen.has(c.rootPath))
224
+ return false;
225
+ seen.add(c.rootPath);
226
+ return true;
227
+ });
228
+ }
229
+ // ─── Workspace config reader (ground truth for monorepos) ─────────────────────
230
+ /**
231
+ * Parse glob patterns from pnpm-workspace.yaml.
232
+ * Format: `packages:\n - 'apps/*'`
233
+ */
234
+ function parsePnpmWorkspaceYaml(content) {
235
+ const globs = [];
236
+ let inPackages = false;
237
+ for (const raw of content.split("\n")) {
238
+ const line = raw.trim();
239
+ if (/^packages\s*:/.test(line)) {
240
+ inPackages = true;
241
+ continue;
242
+ }
243
+ if (inPackages) {
244
+ if (line.startsWith("-")) {
245
+ const glob = line.slice(1).trim().replace(/^['"]|['"]$/g, "").trim();
246
+ if (glob && !glob.startsWith("#"))
247
+ globs.push(glob);
248
+ }
249
+ else if (line && !line.startsWith("#")) {
250
+ inPackages = false; // new top-level key
251
+ }
252
+ }
253
+ }
254
+ return globs;
255
+ }
256
+ /**
257
+ * Read workspace package glob patterns from any monorepo config file.
258
+ * Returns null if no workspace config is found.
259
+ */
260
+ async function readWorkspaceGlobs(repoRoot) {
261
+ // pnpm
262
+ for (const name of ["pnpm-workspace.yaml", "pnpm-workspace.yml"]) {
263
+ const raw = await (0, file_1.readTextSafe)(path.join(repoRoot, name));
264
+ if (raw) {
265
+ const globs = parsePnpmWorkspaceYaml(raw);
266
+ if (globs.length > 0)
267
+ return globs;
268
+ }
269
+ }
270
+ // npm / yarn workspaces (package.json)
271
+ const pkgRaw = await (0, file_1.readTextSafe)(path.join(repoRoot, "package.json"));
272
+ if (pkgRaw) {
273
+ const pkg = (0, text_1.parseJsonLoose)(pkgRaw);
274
+ if (pkg) {
275
+ const ws = pkg["workspaces"];
276
+ if (Array.isArray(ws) && ws.length > 0)
277
+ return ws;
278
+ // yarn: { workspaces: { packages: [...] } }
279
+ if (ws && typeof ws === "object" && Array.isArray(ws.packages)) {
280
+ return ws.packages;
281
+ }
282
+ }
283
+ }
284
+ // Lerna
285
+ const lernaRaw = await (0, file_1.readTextSafe)(path.join(repoRoot, "lerna.json"));
286
+ if (lernaRaw) {
287
+ const lerna = (0, text_1.parseJsonLoose)(lernaRaw);
288
+ if (Array.isArray(lerna?.["packages"]) && lerna["packages"].length > 0) {
289
+ return lerna["packages"];
290
+ }
291
+ }
292
+ // NX — uses project.json per project, not globs; flag and handle below
293
+ const nxRaw = await (0, file_1.readTextSafe)(path.join(repoRoot, "nx.json"));
294
+ if (nxRaw)
295
+ return ["__nx__"]; // sentinel — handled in resolveWorkspaceGlobs
296
+ return null;
297
+ }
298
+ /**
299
+ * Recursively find all package.json roots in a subtree.
300
+ */
301
+ function findAllPackagesInTree(node, repoRoot) {
302
+ const results = [];
303
+ for (const child of childDirs(node)) {
304
+ if (ALWAYS_SKIP.has(child.name))
305
+ continue;
306
+ if (hasPackageJson(child)) {
307
+ results.push(toWorkspaceCandidate(child, repoRoot));
308
+ }
309
+ else {
310
+ results.push(...findAllPackagesInTree(child, repoRoot));
311
+ }
312
+ }
313
+ return results;
314
+ }
315
+ /**
316
+ * Resolve a single workspace glob against the ScanNode tree.
317
+ * Handles arbitrary depth: `code/addons/*`, `packages/**`, `apps/web`, etc.
318
+ */
319
+ function resolveOneGlob(glob, scanRoot, repoRoot) {
320
+ const normalized = glob.replace(/^\.\//, "").replace(/\/$/, "");
321
+ if (normalized.startsWith("!"))
322
+ return [];
323
+ const parts = normalized.split("/").filter(Boolean);
324
+ if (parts.length === 0)
325
+ return [];
326
+ const lastPart = parts[parts.length - 1];
327
+ const dirParts = parts.slice(0, -1);
328
+ // Navigate to the parent directory through specific path segments
329
+ let current = scanRoot;
330
+ for (const segment of dirParts) {
331
+ if (segment === "**") {
332
+ current = null;
333
+ break;
334
+ } // too complex — skip
335
+ current = current?.children.find((c) => c.isDirectory && c.name === segment) ?? null;
336
+ if (!current)
337
+ break;
338
+ }
339
+ if (!current) {
340
+ // dirParts is empty — lastPart applies directly on scanRoot
341
+ if (dirParts.length === 0)
342
+ current = scanRoot;
343
+ else
344
+ return [];
345
+ }
346
+ if (lastPart === "*") {
347
+ return childDirs(current)
348
+ .filter((c) => !ALWAYS_SKIP.has(c.name) && hasPackageJson(c))
349
+ .map((c) => toWorkspaceCandidate(c, repoRoot));
350
+ }
351
+ if (lastPart === "**") {
352
+ return findAllPackagesInTree(current, repoRoot);
353
+ }
354
+ // Specific directory name — exact match
355
+ const dir = current.children.find((c) => c.isDirectory && c.name === lastPart);
356
+ if (dir && hasPackageJson(dir))
357
+ return [toWorkspaceCandidate(dir, repoRoot)];
358
+ return [];
359
+ }
360
+ /**
361
+ * Workspace-aware hierarchical dedup: when both a parent package and its
362
+ * child packages are resolved (e.g. `packages/app-store` AND
363
+ * `packages/app-store/stripe`), keep only the parent.
364
+ *
365
+ * This is the opposite of score-based dedup — in a workspace, the declared
366
+ * package root is the right boundary, not the deepest child.
367
+ */
368
+ function workspaceDedup(candidates) {
369
+ const paths = new Set(candidates.map((c) => c.rootPath));
370
+ return candidates.filter((child) => {
371
+ // Check if any other candidate is a direct ancestor of this one
372
+ const hasAncestor = candidates.some((parent) => parent !== child &&
373
+ child.rootPath.startsWith(parent.rootPath + path.sep));
374
+ return !hasAncestor;
375
+ });
376
+ }
377
+ /**
378
+ * When workspace globs expand to a large set (> CLUSTER_THRESHOLD), collapse
379
+ * candidate groups that share the same parent directory and have ≥ CLUSTER_MIN
380
+ * siblings. This handles repos like cal.com that declare both `packages/*` AND
381
+ * `packages/embeds/*`, producing overlapping depth levels.
382
+ */
383
+ const CLUSTER_THRESHOLD = 60;
384
+ const CLUSTER_MIN_SIBLINGS = 8;
385
+ function clusterWorkspacePackages(candidates, repoRoot) {
386
+ if (candidates.length <= CLUSTER_THRESHOLD)
387
+ return candidates;
388
+ // Group by immediate parent directory path
389
+ const groups = new Map();
390
+ for (const c of candidates) {
391
+ const parentPath = path.dirname(c.rootPath);
392
+ if (!groups.has(parentPath))
393
+ groups.set(parentPath, []);
394
+ groups.get(parentPath).push(c);
395
+ }
396
+ const result = [];
397
+ for (const [parentPath, members] of groups) {
398
+ // Never cluster into the repo root — direct children of the root are
399
+ // top-level systems and should stay individual even if there are many.
400
+ const isRepoRoot = parentPath === repoRoot;
401
+ if (!isRepoRoot && members.length >= CLUSTER_MIN_SIBLINGS) {
402
+ const parentRel = (0, path_1.relativeToRoot)(repoRoot, parentPath);
403
+ const parentName = path.basename(parentPath);
404
+ result.push({
405
+ name: parentName,
406
+ rootPath: parentPath,
407
+ relativeRoot: parentRel,
408
+ reason: `Package group \`${parentRel}/\` — ${members.length} workspace packages.`,
409
+ });
410
+ }
411
+ else {
412
+ result.push(...members);
413
+ }
414
+ }
415
+ return dedupByPath(result);
416
+ }
417
+ /**
418
+ * Resolve workspace glob patterns against the already-scanned ScanNode tree.
419
+ * No filesystem access — uses the in-memory tree.
420
+ */
421
+ function resolveWorkspaceGlobs(globs, scanRoot, repoRoot) {
422
+ if (globs.length === 1 && globs[0] === "__nx__") {
423
+ return findNxProjects(scanRoot, repoRoot);
424
+ }
425
+ const results = [];
426
+ for (const raw of globs) {
427
+ results.push(...resolveOneGlob(raw, scanRoot, repoRoot));
428
+ }
429
+ // Prefer parent packages over their children when both are declared
430
+ const deduped = workspaceDedup(results);
431
+ // Cluster large sets: collapse sibling groups of ≥3 into their parent dir
432
+ return clusterWorkspacePackages(deduped, repoRoot);
433
+ }
434
+ /**
435
+ * NX: find directories that contain a project.json (NX project marker).
436
+ */
437
+ function findNxProjects(node, repoRoot, depth = 0) {
438
+ if (depth > 4)
439
+ return [];
440
+ const results = [];
441
+ for (const child of childDirs(node)) {
442
+ if (ALWAYS_SKIP.has(child.name))
443
+ continue;
444
+ const hasProjectJson = child.children.some((c) => !c.isDirectory && c.name === "project.json");
445
+ if (hasProjectJson) {
446
+ results.push(toWorkspaceCandidate(child, repoRoot));
447
+ }
448
+ else {
449
+ results.push(...findNxProjects(child, repoRoot, depth + 1));
450
+ }
451
+ }
452
+ return results;
453
+ }
454
+ // ─── Candidate helpers ────────────────────────────────────────────────────────
455
+ function toWorkspaceCandidate(node, repoRoot) {
456
+ return {
457
+ name: node.name,
458
+ rootPath: node.fullPath,
459
+ relativeRoot: (0, path_1.relativeToRoot)(repoRoot, node.fullPath),
460
+ reason: `Workspace package \`${(0, path_1.relativeToRoot)(repoRoot, node.fullPath)}\` — declared in monorepo config.`,
461
+ };
462
+ }
463
+ function toCandidate(node, repoRoot, score) {
464
+ const parts = [];
465
+ if (hasPackageJson(node))
466
+ parts.push("has package.json");
467
+ if (hasReadme(node))
468
+ parts.push("README present");
469
+ if (hasEntryPoint(node))
470
+ parts.push("entry point found");
471
+ const src = countSubtreeSourceFiles(node);
472
+ if (src > 0)
473
+ parts.push(`${src} source files`);
474
+ return {
475
+ name: node.name,
476
+ rootPath: node.fullPath,
477
+ relativeRoot: (0, path_1.relativeToRoot)(repoRoot, node.fullPath),
478
+ reason: parts.length > 0
479
+ ? `Directory \`${node.name}/\` — ${parts.join(", ")}.`
480
+ : `Directory \`${node.name}/\` identified as a system (score ${score}).`,
481
+ };
482
+ }
483
+ function explodeSrcTree(pkg, repoRoot) {
484
+ const SRC_LIKE = ["src", "lib", "source", "internal", "core"];
485
+ for (const srcName of SRC_LIKE) {
486
+ const srcNode = pkg.children.find((c) => c.isDirectory && c.name === srcName);
487
+ if (!srcNode)
488
+ continue;
489
+ const significant = childDirs(srcNode).filter((d) => {
490
+ if (ALWAYS_SKIP.has(d.name) || NOISE_NAMES.has(d.name))
491
+ return false;
492
+ return d.children.length >= 2 || countSubtreeSourceFiles(d) >= 2;
493
+ });
494
+ if (significant.length < 3)
495
+ continue;
496
+ const withScores = significant
497
+ .map((d) => ({ d, score: scoreDir(d, 1) + countSubtreeSourceFiles(d) * 0.2 }))
498
+ .sort((a, b) => b.score - a.score);
499
+ return withScores.map(({ d }) => ({
500
+ name: d.name,
501
+ rootPath: d.fullPath,
502
+ relativeRoot: (0, path_1.relativeToRoot)(repoRoot, d.fullPath),
503
+ reason: `Source module \`${srcName}/${d.name}/\` — treated as a distinct system.`,
504
+ }));
505
+ }
506
+ return [];
507
+ }
508
+ // ─── Public API ───────────────────────────────────────────────────────────────
509
+ async function detectSystemCandidates(repoRoot, scanRoot, signals) {
510
+ // ── Phase 0: workspace config (developer-declared ground truth) ───────────
511
+ const workspaceGlobs = await readWorkspaceGlobs(repoRoot);
512
+ if (workspaceGlobs) {
513
+ const workspacePkgs = resolveWorkspaceGlobs(workspaceGlobs, scanRoot, repoRoot);
514
+ if (workspacePkgs.length >= 2)
515
+ return dedupByPath(workspacePkgs);
516
+ if (workspacePkgs.length === 1) {
517
+ // Single declared workspace package — try to explode its src/
518
+ const exploded = explodeSrcTree(scanRoot.children.find((c) => c.isDirectory && c.fullPath === workspacePkgs[0].rootPath)
519
+ ?? scanRoot, repoRoot);
520
+ if (exploded.length >= 3)
521
+ return dedupByPath(exploded);
522
+ return dedupByPath(workspacePkgs);
523
+ }
524
+ }
525
+ // ── Phase 1: score every directory in the tree ───────────────────────────
526
+ const scored = collectScoredCandidates(scanRoot, 0, 4, null);
527
+ // ── Phase 2: hierarchical dedup (prefer children over parents) ───────────
528
+ const deduped = hierarchicalDedup(scored);
529
+ // ── Phase 3: ≥ 2 strong candidates → done ────────────────────────────────
530
+ if (deduped.length >= 2) {
531
+ return dedupByPath(deduped.sort((a, b) => b.score - a.score).map((s) => toCandidate(s.node, repoRoot, s.score)));
532
+ }
533
+ // ── Phase 4: single candidate — try to explode its src/ ──────────────────
534
+ if (deduped.length === 1) {
535
+ const single = deduped[0];
536
+ const exploded = explodeSrcTree(single.node, repoRoot);
537
+ if (exploded.length >= 2)
538
+ return dedupByPath(exploded);
539
+ return [toCandidate(single.node, repoRoot, single.score)];
540
+ }
541
+ // ── Phase 5: root has package.json + source dir ───────────────────────────
542
+ const ROOT_SOURCE_DIRS = new Set(["src", "lib", "app", "core", "server", "source"]);
543
+ if (hasPackageJson(scanRoot) && childDirs(scanRoot).some((c) => ROOT_SOURCE_DIRS.has(c.name))) {
544
+ const exploded = explodeSrcTree(scanRoot, repoRoot);
545
+ if (exploded.length >= 3)
546
+ return dedupByPath(exploded);
547
+ }
548
+ // ── Phase 6: name-hint fallback ───────────────────────────────────────────
549
+ const hinted = [];
550
+ for (const dir of childDirs(scanRoot)) {
551
+ if (ALWAYS_SKIP.has(dir.name))
552
+ continue;
553
+ const lower = dir.name.toLowerCase();
554
+ if (SYSTEM_HINT_NAMES.has(lower) || COMPOUND_SUFFIX_HINTS.test(lower)) {
555
+ hinted.push({
556
+ name: dir.name,
557
+ rootPath: dir.fullPath,
558
+ relativeRoot: (0, path_1.relativeToRoot)(repoRoot, dir.fullPath),
559
+ reason: `Top-level folder \`${dir.name}/\` suggests a distinct concern.`,
560
+ });
561
+ }
562
+ }
563
+ if (hinted.length >= 2)
564
+ return dedupByPath(hinted);
565
+ if (hinted.length === 1 && signals.isMonorepoLayout)
566
+ return dedupByPath(hinted);
567
+ // ── Phase 7: whole repo root ──────────────────────────────────────────────
568
+ return [{
569
+ name: path.basename(repoRoot) || "repository",
570
+ rootPath: repoRoot,
571
+ relativeRoot: ".",
572
+ reason: signals.isMonorepoLayout
573
+ ? `Workspace-style repo; treating root as one primary system.`
574
+ : `Single-project layout: analyzing root as one cohesive system.`,
575
+ }];
576
+ }
577
+ //# sourceMappingURL=detectSystemCandidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectSystemCandidates.js","sourceRoot":"","sources":["../../src/detectors/detectSystemCandidates.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwhBA,wDA6EC;AArmBD,2CAA6B;AAE7B,wCAA+C;AAC/C,wCAA6C;AAC7C,wCAA+C;AAE/C,iFAAiF;AAEjF,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,iFAAiF;AAEjF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW;IAChD,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;IAC5C,QAAQ,EAAG,SAAS,EAAG,QAAQ,EAAG,SAAS;IAC3C,WAAW,EAAE,WAAW;CACzB,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ;IACjD,WAAW,EAAE,YAAY,EAAE,YAAY;CACxC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;IACjE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAC/D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAC5D,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAC1D,UAAU,EAAE,OAAO,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;IAClE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO;IAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO;CACtE,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;IACvD,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;IAC9D,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAC1D,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW;IACnE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;CACpE,CAAC,CAAC;AAEH,MAAM,qBAAqB,GACzB,gEAAgE,CAAC;AAEnE,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;CAC9C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,wBAAwB;IACxB,yBAAyB;IACzB,cAAc,EAAI,sBAAsB;IACxC,YAAY,EAAM,wBAAwB;CAC3C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS;CAClD,CAAC,CAAC;AAEH,iFAAiF;AAEjF,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,IAAc;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;CAClC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,IAAc;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACnF,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;IACtE,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1C,CAAC,IAAI,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAe,EAAE,MAAgB;IAC1D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,WAAW;QACd,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAe,EAAE,MAAgB;IAC1D,OAAO,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AAEjF,MAAM,cAAc,GAAI,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAM,CAAC,CAAC;AAC1B,MAAM,WAAW,GAAO,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAQ,CAAC,CAAC;AAC1B,MAAM,aAAa,GAAK,CAAC,CAAC,CAAC,6DAA6D;AACxF,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,SAAS,QAAQ,CAAC,IAAc,EAAE,KAAa;IAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,cAAc,CAAC;IAClD,IAAI,SAAS,CAAC,IAAI,CAAC;QAAO,KAAK,IAAI,YAAY,CAAC;IAChD,IAAI,aAAa,CAAC,IAAI,CAAC;QAAG,KAAK,IAAI,WAAW,CAAC;IAE/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,QAAQ,IAAI,CAAC;QAAG,KAAK,IAAI,CAAC,CAAC;IAC/B,IAAI,QAAQ,IAAI,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IAC/B,IAAI,QAAQ,IAAI,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,IAAI,QAAQ,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,UAAU,CAAC;IAC3F,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAEvC,KAAK,IAAI,KAAK,GAAG,aAAa,CAAC;IAE/B,OAAO,KAAK,CAAC;AACf,CAAC;AAQD,SAAS,uBAAuB,CAC9B,IAAc,EACd,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,CAAC,EACZ,SAA0B,IAAI;IAE9B,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAE1C,wCAAwC;QACxC,IAAI,MAAM,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,SAAS;QACvD,IAAI,MAAM,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,SAAS;QAEvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,IAAI,eAAe,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA6B;IACtD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAClC,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CACtC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,MAAM;YAChB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/D,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAClC,CAAC;QACF,OAAO,CAAC,gBAAgB,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,IAAuB;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,UAAU,GAAG,KAAK,CAAC,CAAC,oBAAoB;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IAChD,OAAO;IACP,KAAK,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IACvE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,IAAA,qBAAc,EAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAY,CAAC;YACxC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAc,CAAC;YAC9D,4CAA4C;YAC5C,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAE,EAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxE,OAAQ,EAAU,CAAC,QAAoB,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;IACR,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACvE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,IAAA,qBAAc,EAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,IAAK,KAAM,CAAC,UAAU,CAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvF,OAAO,KAAM,CAAC,UAAU,CAAa,CAAC;QACxC,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,IAAI,KAAK;QAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,8CAA8C;IAE5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAc,EAAE,QAAgB;IAC7D,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1C,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CACrB,IAAY,EACZ,QAAkB,EAClB,QAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpC,kEAAkE;IAClE,IAAI,OAAO,GAAoB,QAAQ,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,MAAM;QAAC,CAAC,CAAC,qBAAqB;QACtE,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;QACrF,IAAI,CAAC,OAAO;YAAE,MAAM;IACtB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,4DAA4D;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,QAAQ,CAAC;;YACzC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC,OAAO,CAAC;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,wCAAwC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC/E,IAAI,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7E,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,UAA6B;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACjC,gEAAgE;QAChE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CACjC,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,KAAK,KAAK;YAChB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CACxD,CAAC;QACF,OAAO,CAAC,WAAW,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B,SAAS,wBAAwB,CAC/B,UAA6B,EAC7B,QAAgB;IAEhB,IAAI,UAAU,CAAC,MAAM,IAAI,iBAAiB;QAAE,OAAO,UAAU,CAAC;IAE9D,2CAA2C;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,UAAU,GAAG,UAAU,KAAK,QAAQ,CAAC;QAC3C,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAA,qBAAc,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,UAAU;gBACpB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE,mBAAmB,SAAS,SAAS,OAAO,CAAC,MAAM,sBAAsB;aAClF,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,KAAe,EACf,QAAkB,EAClB,QAAgB;IAEhB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,oEAAoE;IACpE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,0EAA0E;IAC1E,OAAO,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAc,EAAE,QAAgB,EAAE,KAAK,GAAG,CAAC;IACjE,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC1C,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAC/F,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AAEjF,SAAS,oBAAoB,CAAC,IAAc,EAAE,QAAgB;IAC5D,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAA,qBAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACrD,MAAM,EAAE,uBAAuB,IAAA,qBAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,mCAAmC;KAC1G,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAc,EAAE,QAAgB,EAAE,KAAa;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,IAAI,CAAC;QAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,IAAI,aAAa,CAAC,IAAI,CAAC;QAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;IAE/C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAA,qBAAc,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;QACrD,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YACtB,CAAC,CAAC,eAAe,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACtD,CAAC,CAAC,eAAe,IAAI,CAAC,IAAI,qCAAqC,KAAK,IAAI;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAa,EAAE,QAAgB;IACrD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClD,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACrE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAErC,MAAM,UAAU,GAAG,WAAW;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;aAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY,EAAE,IAAA,qBAAc,EAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;YAClD,MAAM,EAAE,mBAAmB,OAAO,IAAI,CAAC,CAAC,IAAI,qCAAqC;SAClF,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AAE1E,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,QAAkB,EAClB,OAAoB;IAGpB,6EAA6E;IAC7E,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,qBAAqB,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChF,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,cAAc,CAC7B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;mBACnF,QAAQ,EACb,QAAQ,CACT,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;YACvD,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAE7D,4EAA4E;IAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,WAAW,CAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAC7F,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,6EAA6E;IAC7E,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,YAAY,EAAE,IAAA,qBAAc,EAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACpD,MAAM,EAAE,sBAAsB,GAAG,CAAC,IAAI,kCAAkC;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,gBAAgB;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAEhF,6EAA6E;IAC7E,OAAO,CAAC;YACN,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY;YAC7C,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,OAAO,CAAC,gBAAgB;gBAC9B,CAAC,CAAC,4DAA4D;gBAC9D,CAAC,CAAC,+DAA+D;SACpE,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * devWatcher — esbuild watch mode for local development.
3
+ *
4
+ * Watches src/app/frontend/** and rebuilds app-bundle.js on every change.
5
+ * After each successful rebuild, calls onRebuild so the server can broadcast
6
+ * a reload signal to the browser via SSE.
7
+ *
8
+ * Only activates when the source directory actually exists (i.e. running from
9
+ * the project repo, not from a published npm install).
10
+ */
11
+ export declare function startDevWatcher(onRebuild: (event: {
12
+ type: string;
13
+ }) => void): Promise<void>;
14
+ //# sourceMappingURL=devWatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devWatcher.d.ts","sourceRoot":"","sources":["../src/devWatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAsB,eAAe,CACnC,SAAS,EAAE,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,IAAI,GAC3C,OAAO,CAAC,IAAI,CAAC,CAgDf"}