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,130 @@
1
+ "use strict";
2
+ /**
3
+ * generateAMForRepo — full pipeline: L1→L2→L3→L4→LLM → writes architecture-map.json
4
+ * Used by the CLI command and the /api/generate-am server endpoint.
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.generateAMForRepo = generateAMForRepo;
41
+ const path = __importStar(require("path"));
42
+ const fs = __importStar(require("fs/promises"));
43
+ const child_process_1 = require("child_process");
44
+ const IntentionalStructure_1 = require("../IntentionalStructure");
45
+ const buildCodebaseGraph_1 = require("../graph/buildCodebaseGraph");
46
+ const RuntimeInference_1 = require("../RuntimeInference");
47
+ const SystemSynthesis_1 = require("../SystemSynthesis");
48
+ const generateAM_1 = require("./generateAM");
49
+ const enrichAMEdges_1 = require("./enrichAMEdges");
50
+ const selectStrategicFiles_1 = require("./selectStrategicFiles");
51
+ async function generateAMForRepo(repoRoot, apiKey, onProgress) {
52
+ const key = apiKey ?? process.env.ANTHROPIC_API_KEY;
53
+ if (!key)
54
+ throw new Error("ANTHROPIC_API_KEY not set");
55
+ const repoName = path.basename(repoRoot);
56
+ const log = (s) => onProgress?.(s);
57
+ // Read package.json for human-written description if available
58
+ let repoDescription;
59
+ try {
60
+ const pkg = JSON.parse(await fs.readFile(path.join(repoRoot, "package.json"), "utf8"));
61
+ const parts = [];
62
+ if (pkg.description)
63
+ parts.push(pkg.description);
64
+ if (pkg.keywords?.length)
65
+ parts.push(`Keywords: ${pkg.keywords.slice(0, 8).join(", ")}`);
66
+ if (parts.length)
67
+ repoDescription = parts.join(". ");
68
+ }
69
+ catch { /* no package.json or not parseable — fine */ }
70
+ log("L1 IntentionalStructure…");
71
+ const l1 = await (0, IntentionalStructure_1.detectIntentionalStructure)(repoRoot);
72
+ log("L2 buildCodebaseGraph…");
73
+ const layer1Paths = l1.systems.filter((s) => s.path !== null).map((s) => s.path);
74
+ const l2 = await (0, buildCodebaseGraph_1.buildCodebaseGraph)(repoRoot, [], layer1Paths);
75
+ log("L3 RuntimeInference…");
76
+ const l3 = await (0, RuntimeInference_1.detectRuntimeInference)(repoRoot, l2, l1);
77
+ log("L4 mergeLayerOutputs…");
78
+ const enriched = (0, SystemSynthesis_1.mergeLayerOutputs)(l1, l2, l3, { repoName });
79
+ // Emit deterministic intel before handing off to LLM
80
+ try {
81
+ const codeNodes = enriched.nodes.filter((n) => n.kind === "cluster" || n.kind === "package");
82
+ const hotspots = [...codeNodes]
83
+ .sort((a, b) => b.inDegree - a.inDegree)
84
+ .slice(0, 8)
85
+ .map((n) => ({ id: n.id, inDegree: n.inDegree }));
86
+ const routes = codeNodes
87
+ .flatMap((n) => n.routes)
88
+ .filter(Boolean)
89
+ .slice(0, 30);
90
+ const clusters = codeNodes.map((n) => {
91
+ let layer = "unknown";
92
+ if (n.routes.length > 0)
93
+ layer = "api";
94
+ else if (n.ormUses.length > 0)
95
+ layer = "data-client";
96
+ else if (n.inDegree > 5)
97
+ layer = "service";
98
+ return { id: n.id, layer, inDegree: n.inDegree };
99
+ });
100
+ const intel = {
101
+ techStack: enriched.meta.techStack ?? [],
102
+ dataModels: (enriched.meta.dataModels ?? []).slice(0, 12),
103
+ totalFiles: enriched.meta.totalFiles,
104
+ hotspots,
105
+ routes,
106
+ clusters,
107
+ };
108
+ log(`am-intel:${JSON.stringify(intel)}`);
109
+ }
110
+ catch { /* intel extraction is best-effort */ }
111
+ log("Generating Architecture Map via LLM…");
112
+ const am = await (0, generateAM_1.generateAM)(enriched, { repoRoot, repoName, repoDescription, apiKey: key });
113
+ log("Enriching edges deterministically…");
114
+ const manifests = await (0, selectStrategicFiles_1.readWorkspaceManifests)(repoRoot);
115
+ const enrichedAM = (0, enrichAMEdges_1.enrichAMEdges)(am, repoRoot, manifests);
116
+ let generatedAtCommit = "";
117
+ try {
118
+ generatedAtCommit = (0, child_process_1.execSync)(`git -C "${repoRoot}" rev-parse HEAD`, { encoding: "utf8" }).trim();
119
+ }
120
+ catch { /* not a git repo — fine */ }
121
+ const enrichedAMWithMeta = {
122
+ ...enrichedAM,
123
+ _meta: { generatedAtCommit, generatedAt: new Date().toISOString() },
124
+ };
125
+ const memorDir = path.join(repoRoot, ".memor");
126
+ await fs.mkdir(memorDir, { recursive: true });
127
+ await fs.writeFile(path.join(memorDir, "architecture-map.json"), JSON.stringify(enrichedAMWithMeta, null, 2), "utf8");
128
+ log("Done.");
129
+ }
130
+ //# sourceMappingURL=generateAMForRepo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateAMForRepo.js","sourceRoot":"","sources":["../../src/amGeneration/generateAMForRepo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * generateFlows — LLM narration layer on top of deterministic flow graphs.
3
+ *
4
+ * Input: FlowCandidate[] from buildFlowGraph (real traced call chains).
5
+ * Task: LLM only assigns human-readable names and action sentences.
6
+ * No discovery, no guessing — pure narration.
7
+ *
8
+ * Also keeps attachEvidenceFiles for backwards compat with stored flows.
9
+ */
10
+ import type { RouteMap } from "../analysis/extractRouteMap";
11
+ import type { FlowCandidate } from "./buildFlowGraph";
12
+ export type FlowStep = {
13
+ system_id: string;
14
+ action: string;
15
+ is_external: boolean;
16
+ evidenceFiles?: string[];
17
+ };
18
+ export type GeneratedFlow = {
19
+ id: string;
20
+ name: string;
21
+ trigger: string;
22
+ steps: FlowStep[];
23
+ derivedFrom: "evidence";
24
+ };
25
+ export declare function generateFlows(candidatesOrRouteMap: FlowCandidate[] | RouteMap, systemIds: string[], externalIds: string[], apiKey: string, repoRoot?: string): Promise<GeneratedFlow[]>;
26
+ export declare function attachEvidenceFiles(flows: GeneratedFlow[], routeMap: RouteMap, repoRoot?: string): GeneratedFlow[];
27
+ //# sourceMappingURL=generateFlows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateFlows.d.ts","sourceRoot":"","sources":["../../src/amGeneration/generateFlows.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AA+BF,wBAAsB,aAAa,CACjC,oBAAoB,EAAE,aAAa,EAAE,GAAG,QAAQ,EAChD,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAiF1B;AAgHD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,EAAE,CAoDjB"}
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ /**
3
+ * generateFlows — LLM narration layer on top of deterministic flow graphs.
4
+ *
5
+ * Input: FlowCandidate[] from buildFlowGraph (real traced call chains).
6
+ * Task: LLM only assigns human-readable names and action sentences.
7
+ * No discovery, no guessing — pure narration.
8
+ *
9
+ * Also keeps attachEvidenceFiles for backwards compat with stored flows.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.generateFlows = generateFlows;
46
+ exports.attachEvidenceFiles = attachEvidenceFiles;
47
+ const anthropic_1 = require("../anthropic");
48
+ const path = __importStar(require("path"));
49
+ const fs = __importStar(require("fs"));
50
+ const extractRouteMap_1 = require("../analysis/extractRouteMap");
51
+ // ── Serialise FlowCandidate[] into a compact LLM prompt block ────────────────
52
+ function serializeFlowCandidates(candidates, systemIds, externalIds) {
53
+ const allSystemIds = [...systemIds, ...externalIds];
54
+ const lines = [
55
+ `VALID SYSTEM IDs (use these exactly in system_id fields):`,
56
+ allSystemIds.join(", "),
57
+ "",
58
+ `TRACED FLOWS (${candidates.length} entry points — real call chains from static analysis):`,
59
+ ];
60
+ for (const c of candidates) {
61
+ lines.push(`\nFLOW: ${c.nameSeed} [${c.framework}] entry: ${c.entryFile}`);
62
+ for (let i = 0; i < c.steps.length; i++) {
63
+ const s = c.steps[i];
64
+ const sysHint = s.systemId ? ` [system: ${s.systemId}]` : " [system: ???]";
65
+ const extFlag = s.isExternal ? " ← EXTERNAL STEP" : "";
66
+ const db = s.dbAccess.length ? ` DB: ${s.dbAccess.slice(0, 3).join(", ")}` : "";
67
+ const ext = s.externalCalls.length ? ` sdk: ${s.externalCalls.slice(0, 3).join(", ")}` : "";
68
+ const ret = s.returnType && s.returnType !== "void" ? ` → ${s.returnType}` : "";
69
+ lines.push(` ${i + 1}. ${s.fn}() in ${s.file}${sysHint}${ret}${db}${ext}${extFlag}`);
70
+ }
71
+ }
72
+ return lines.join("\n");
73
+ }
74
+ // ── Main export ───────────────────────────────────────────────────────────────
75
+ async function generateFlows(candidatesOrRouteMap, systemIds, externalIds, apiKey, repoRoot) {
76
+ const client = (0, anthropic_1.createAnthropicClient)(apiKey);
77
+ // Support both new FlowCandidate[] path and legacy RouteMap path
78
+ const isLegacy = !Array.isArray(candidatesOrRouteMap);
79
+ const inputBlock = isLegacy
80
+ ? (0, extractRouteMap_1.serializeRouteMap)(candidatesOrRouteMap)
81
+ : serializeFlowCandidates(candidatesOrRouteMap, systemIds, externalIds);
82
+ const systemList = [...systemIds, ...externalIds].join(", ");
83
+ const prompt = isLegacy
84
+ ? `You are analyzing a codebase. Below is a deterministic route map from static analysis — real file paths, real function names, real DB calls.
85
+
86
+ SYSTEM IDs available (use these exactly in system_id fields):
87
+ ${systemList}
88
+
89
+ ${inputBlock}
90
+
91
+ Generate 8-12 end-to-end user flows. Include:
92
+ - Read flows (GET) AND write flows (POST, PUT, DELETE, PATCH) — write paths are as important as reads
93
+ - Background job flows for any CRON, QUEUE, INTERVAL, or WORKER entries — these are write paths too
94
+ Each flow must trace from a real page, API route, or background job through to data.
95
+ Use only system_id values from the list above. Set is_external: true only for external service steps.`
96
+ : `You are given deterministically-traced call chains from a real codebase.
97
+ Each flow already has the exact functions called and files involved — do NOT invent steps.
98
+
99
+ Your ONLY job:
100
+ 1. Give each flow a human-readable "name" (3-5 words, e.g. "User Login", "Create Order")
101
+ 2. Write a one-sentence "trigger" describing what user action starts this flow
102
+ 3. For each step, write a clear "action" sentence naming the function and what it does
103
+
104
+ ${inputBlock}
105
+
106
+ Rules:
107
+ - system_id MUST come from the VALID SYSTEM IDs list above — pick the closest match to the [system: hint]
108
+ - is_external is ALREADY DETERMINED — steps marked "← EXTERNAL STEP" get is_external: true, all others get is_external: false. Do not change this.
109
+ - Keep action sentences concise but specific — include function names
110
+ - Do not add or remove steps`;
111
+ const msg = await client.messages.create({
112
+ model: "claude-haiku-4-5-20251001",
113
+ max_tokens: 4096,
114
+ messages: [{
115
+ role: "user",
116
+ content: `${prompt}
117
+
118
+ Respond with JSON only — no markdown, no explanation:
119
+ {
120
+ "flows": [
121
+ {
122
+ "id": "kebab-case-id",
123
+ "name": "Human readable name",
124
+ "trigger": "One sentence trigger description",
125
+ "steps": [
126
+ {
127
+ "system_id": "system-id",
128
+ "action": "Specific description of what this function does",
129
+ "is_external": false,
130
+ "evidenceFile": "relative/path/to/file.ts"
131
+ }
132
+ ]
133
+ }
134
+ ]
135
+ }`,
136
+ }],
137
+ });
138
+ const raw = msg.content[0].type === "text" ? msg.content[0].text.trim() : "{}";
139
+ const clean = raw.replace(/^```json?\s*/i, "").replace(/```\s*$/, "").trim();
140
+ const parsed = JSON.parse(clean);
141
+ const flows = (parsed.flows ?? []).map(f => ({ ...f, derivedFrom: "evidence" }));
142
+ // Attach evidence files deterministically
143
+ if (!isLegacy && Array.isArray(candidatesOrRouteMap)) {
144
+ return attachEvidenceFromCandidates(flows, candidatesOrRouteMap);
145
+ }
146
+ // Legacy: use route-map based evidence attachment
147
+ const routeMap = candidatesOrRouteMap;
148
+ return attachEvidenceFiles(flows, routeMap, repoRoot);
149
+ }
150
+ // ── Evidence file attachment (new path — from FlowCandidate steps) ────────────
151
+ function attachEvidenceFromCandidates(flows, candidates) {
152
+ // Match flows to candidates by position (LLM preserves order)
153
+ return flows.map((flow, fi) => {
154
+ const candidate = candidates[fi];
155
+ if (!candidate)
156
+ return flow;
157
+ return {
158
+ ...flow,
159
+ steps: flow.steps.map((step, i) => {
160
+ const cs = candidate.steps[i];
161
+ if (!cs)
162
+ return step;
163
+ // Lock is_external from deterministic analysis, override LLM value
164
+ const lockedStep = { ...step, is_external: cs.isExternal };
165
+ const evidenceFiles = [cs.file].filter(Boolean);
166
+ return evidenceFiles.length ? { ...lockedStep, evidenceFiles } : lockedStep;
167
+ }),
168
+ };
169
+ });
170
+ }
171
+ // ── Deterministic file attachment ─────────────────────────────────────────────
172
+ const SKIP_SEGMENTS = new Set([
173
+ "app", "pages", "api", "route", "page", "layout", "src", "lib",
174
+ "service", "client", "ui", "portal", "interface", "index",
175
+ ]);
176
+ const SKIP_ID_PARTS = new Set([
177
+ "api", "service", "client", "ui", "portal", "interface", "external", "system", "layer", "core",
178
+ ]);
179
+ function indexFilePaths(filePaths) {
180
+ const index = new Map();
181
+ for (const filePath of filePaths) {
182
+ const segments = filePath
183
+ .replace(/\.(ts|tsx|js|jsx)$/, "")
184
+ .replace(/\\/g, "/")
185
+ .split("/")
186
+ .filter(s => s && !SKIP_SEGMENTS.has(s) && !s.startsWith("[[") && !s.startsWith("[") && !s.startsWith("("));
187
+ for (const seg of segments) {
188
+ const key = seg.toLowerCase();
189
+ if (!index.has(key))
190
+ index.set(key, []);
191
+ index.get(key).push(filePath);
192
+ }
193
+ }
194
+ return index;
195
+ }
196
+ // Build route-path lookup: normalized path → file
197
+ function buildRoutePathIndex(routeMap) {
198
+ const index = new Map();
199
+ for (const r of routeMap.apiRoutes)
200
+ index.set(r.routePath, r.filePath);
201
+ for (const p of routeMap.pages)
202
+ index.set(p.routePath, p.filePath);
203
+ return index;
204
+ }
205
+ // Scan packages/ and apps/ dirs for .ts/.tsx entry points (monorepo strategy 3)
206
+ function buildPackageFileIndex(repoRoot) {
207
+ const collected = [];
208
+ for (const parentName of ["packages", "apps", "libs", "modules"]) {
209
+ const parentDir = path.join(repoRoot, parentName);
210
+ if (!fs.existsSync(parentDir))
211
+ continue;
212
+ let entries;
213
+ try {
214
+ entries = fs.readdirSync(parentDir, { withFileTypes: true });
215
+ }
216
+ catch {
217
+ continue;
218
+ }
219
+ for (const e of entries) {
220
+ if (!e.isDirectory())
221
+ continue;
222
+ const pkgDir = path.join(parentDir, e.name);
223
+ // Look for index.ts/tsx or main entry files in the package root
224
+ for (const candidate of ["index.ts", "index.tsx", "src/index.ts", "src/index.tsx"]) {
225
+ const abs = path.join(pkgDir, candidate);
226
+ if (fs.existsSync(abs)) {
227
+ collected.push(path.relative(repoRoot, abs).replace(/\\/g, "/"));
228
+ break;
229
+ }
230
+ }
231
+ // Also index all .ts/.tsx files one level deep in src/ or lib/
232
+ for (const subDir of ["src", "lib", "."]) {
233
+ const srcDir = path.join(pkgDir, subDir);
234
+ if (!fs.existsSync(srcDir))
235
+ continue;
236
+ let srcEntries;
237
+ try {
238
+ srcEntries = fs.readdirSync(srcDir, { withFileTypes: true });
239
+ }
240
+ catch {
241
+ continue;
242
+ }
243
+ for (const sf of srcEntries) {
244
+ if (sf.isFile() && /\.(ts|tsx)$/.test(sf.name) && !sf.name.includes(".test.") && !sf.name.includes(".spec.")) {
245
+ collected.push(path.relative(repoRoot, path.join(srcDir, sf.name)).replace(/\\/g, "/"));
246
+ }
247
+ }
248
+ }
249
+ }
250
+ }
251
+ return indexFilePaths(collected);
252
+ }
253
+ // Extract a URL path from free-text action like "POST /api/admin/blocks/create returns block"
254
+ function extractRoutePath(action) {
255
+ const m = action.match(/\b(GET|POST|PUT|DELETE|PATCH)\s+(\/[^\s,)]+)/i);
256
+ if (m)
257
+ return m[2].split("?")[0];
258
+ const urlM = action.match(/(\/api\/[^\s,)]+|\/v2\/[^\s,)]+)/);
259
+ if (urlM)
260
+ return urlM[1].split("?")[0];
261
+ return null;
262
+ }
263
+ // Collect all matching files from an index for a token (deduped)
264
+ function allFromIndex(index, token) {
265
+ return index.get(token.toLowerCase()) ?? [];
266
+ }
267
+ const MAX_EVIDENCE_FILES = 4;
268
+ function attachEvidenceFiles(flows, routeMap, repoRoot) {
269
+ const routePathIndex = buildRoutePathIndex(routeMap);
270
+ const routeFileIndex = indexFilePaths([
271
+ ...routeMap.apiRoutes.map(r => r.filePath),
272
+ ...routeMap.pages.map(p => p.filePath),
273
+ ]);
274
+ const pkgFileIndex = repoRoot ? buildPackageFileIndex(repoRoot) : new Map();
275
+ const fileExists = repoRoot
276
+ ? (f) => fs.existsSync(path.join(repoRoot, f))
277
+ : (_f) => true;
278
+ return flows.map(flow => ({
279
+ ...flow,
280
+ steps: flow.steps.map(step => {
281
+ // Only add paths that actually exist on disk
282
+ const seen = new Set();
283
+ const add = (f) => { if (f && !seen.has(f) && fileExists(f))
284
+ seen.add(f); };
285
+ if (step.evidenceFile)
286
+ add(step.evidenceFile);
287
+ (step.evidenceFiles ?? []).forEach(add);
288
+ // Strategy 1: parse route URL from action text → all prefix-matching route files
289
+ const routePath = extractRoutePath(step.action);
290
+ if (routePath) {
291
+ const exact = routePathIndex.get(routePath);
292
+ if (exact)
293
+ add(exact);
294
+ for (const [rp, fp] of routePathIndex) {
295
+ if (seen.size >= MAX_EVIDENCE_FILES)
296
+ break;
297
+ if ((rp.startsWith(routePath) || routePath.startsWith(rp)) && rp !== routePath)
298
+ add(fp);
299
+ }
300
+ }
301
+ const parts = step.system_id.split("-").filter(p => !SKIP_ID_PARTS.has(p));
302
+ // Strategy 2: tokenize system_id → all matching route/page files
303
+ for (const part of parts) {
304
+ if (seen.size >= MAX_EVIDENCE_FILES)
305
+ break;
306
+ allFromIndex(routeFileIndex, part).forEach(add);
307
+ }
308
+ // Strategy 3: tokenize system_id → all matching package files (monorepo)
309
+ for (const part of parts) {
310
+ if (seen.size >= MAX_EVIDENCE_FILES)
311
+ break;
312
+ allFromIndex(pkgFileIndex, part).forEach(add);
313
+ }
314
+ const evidenceFiles = [...seen].slice(0, MAX_EVIDENCE_FILES);
315
+ const { evidenceFile: _drop, evidenceFiles: _drop2, ...rest } = step;
316
+ return evidenceFiles.length > 0 ? { ...rest, evidenceFiles } : rest;
317
+ }),
318
+ }));
319
+ }
320
+ //# sourceMappingURL=generateFlows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateFlows.js","sourceRoot":"","sources":["../../src/amGeneration/generateFlows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * promptBuilder — builds the LLM prompt for AM generation.
3
+ *
4
+ * Key upgrades over v1:
5
+ * - File tree in context: LLM sees every path, even files it can't read
6
+ * - layer field: forces explicit "user-facing | api | service | data-client" per system
7
+ * - functions field: real exported function signatures
8
+ * - observations field: architectural notes and gotchas
9
+ * - db_tables field: actual table/column schema for database externals
10
+ */
11
+ import type { StrategicFile, WorkspaceManifest } from "./selectStrategicFiles";
12
+ import type { EnrichedGraph } from "../SystemSynthesis/types";
13
+ import type { AMRepoType } from "../amSections";
14
+ export type PromptContext = {
15
+ strategicFiles: StrategicFile[];
16
+ enriched: EnrichedGraph;
17
+ repoName: string;
18
+ repoDescription?: string;
19
+ repoType: AMRepoType;
20
+ fileTree?: string;
21
+ workspaceManifests?: WorkspaceManifest[];
22
+ };
23
+ export declare function buildAMPrompt(ctx: PromptContext): string;
24
+ //# sourceMappingURL=promptBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptBuilder.d.ts","sourceRoot":"","sources":["../../src/amGeneration/promptBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C,CAAC;AAyMF,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CA2FxD"}