@bloomreach/brxm-upgrade 0.1.1

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 (420) hide show
  1. package/README.md +217 -0
  2. package/dist/ai/index.d.ts +3 -0
  3. package/dist/ai/index.d.ts.map +1 -0
  4. package/dist/ai/index.js +2 -0
  5. package/dist/ai/index.js.map +1 -0
  6. package/dist/ai/providers.d.ts +27 -0
  7. package/dist/ai/providers.d.ts.map +1 -0
  8. package/dist/ai/providers.js +105 -0
  9. package/dist/ai/providers.js.map +1 -0
  10. package/dist/ai/types.d.ts +47 -0
  11. package/dist/ai/types.d.ts.map +1 -0
  12. package/dist/ai/types.js +2 -0
  13. package/dist/ai/types.js.map +1 -0
  14. package/dist/capture/change-scanner.d.ts +20 -0
  15. package/dist/capture/change-scanner.d.ts.map +1 -0
  16. package/dist/capture/change-scanner.js +71 -0
  17. package/dist/capture/change-scanner.js.map +1 -0
  18. package/dist/capture/conflict-resolver.d.ts +21 -0
  19. package/dist/capture/conflict-resolver.d.ts.map +1 -0
  20. package/dist/capture/conflict-resolver.js +45 -0
  21. package/dist/capture/conflict-resolver.js.map +1 -0
  22. package/dist/capture/critique-types.d.ts +60 -0
  23. package/dist/capture/critique-types.d.ts.map +1 -0
  24. package/dist/capture/critique-types.js +2 -0
  25. package/dist/capture/critique-types.js.map +1 -0
  26. package/dist/capture/entry-critique.d.ts +30 -0
  27. package/dist/capture/entry-critique.d.ts.map +1 -0
  28. package/dist/capture/entry-critique.js +137 -0
  29. package/dist/capture/entry-critique.js.map +1 -0
  30. package/dist/capture/entry-generator.d.ts +32 -0
  31. package/dist/capture/entry-generator.d.ts.map +1 -0
  32. package/dist/capture/entry-generator.js +209 -0
  33. package/dist/capture/entry-generator.js.map +1 -0
  34. package/dist/capture/entry-qa.d.ts +28 -0
  35. package/dist/capture/entry-qa.d.ts.map +1 -0
  36. package/dist/capture/entry-qa.js +84 -0
  37. package/dist/capture/entry-qa.js.map +1 -0
  38. package/dist/capture/entry-regeneration.d.ts +29 -0
  39. package/dist/capture/entry-regeneration.d.ts.map +1 -0
  40. package/dist/capture/entry-regeneration.js +164 -0
  41. package/dist/capture/entry-regeneration.js.map +1 -0
  42. package/dist/capture/entry-validator.d.ts +18 -0
  43. package/dist/capture/entry-validator.d.ts.map +1 -0
  44. package/dist/capture/entry-validator.js +47 -0
  45. package/dist/capture/entry-validator.js.map +1 -0
  46. package/dist/capture/heuristics.d.ts +30 -0
  47. package/dist/capture/heuristics.d.ts.map +1 -0
  48. package/dist/capture/heuristics.js +223 -0
  49. package/dist/capture/heuristics.js.map +1 -0
  50. package/dist/capture/index.d.ts +7 -0
  51. package/dist/capture/index.d.ts.map +1 -0
  52. package/dist/capture/index.js +11 -0
  53. package/dist/capture/index.js.map +1 -0
  54. package/dist/capture/quality-report.d.ts +19 -0
  55. package/dist/capture/quality-report.d.ts.map +1 -0
  56. package/dist/capture/quality-report.js +161 -0
  57. package/dist/capture/quality-report.js.map +1 -0
  58. package/dist/capture/review-flow.d.ts +37 -0
  59. package/dist/capture/review-flow.d.ts.map +1 -0
  60. package/dist/capture/review-flow.js +212 -0
  61. package/dist/capture/review-flow.js.map +1 -0
  62. package/dist/capture/types.d.ts +114 -0
  63. package/dist/capture/types.d.ts.map +1 -0
  64. package/dist/capture/types.js +2 -0
  65. package/dist/capture/types.js.map +1 -0
  66. package/dist/commands/discover.d.ts +6 -0
  67. package/dist/commands/discover.d.ts.map +1 -0
  68. package/dist/commands/discover.js +147 -0
  69. package/dist/commands/discover.js.map +1 -0
  70. package/dist/commands/execute.d.ts +12 -0
  71. package/dist/commands/execute.d.ts.map +1 -0
  72. package/dist/commands/execute.js +113 -0
  73. package/dist/commands/execute.js.map +1 -0
  74. package/dist/commands/export.d.ts +26 -0
  75. package/dist/commands/export.d.ts.map +1 -0
  76. package/dist/commands/export.js +291 -0
  77. package/dist/commands/export.js.map +1 -0
  78. package/dist/commands/finalize.d.ts +12 -0
  79. package/dist/commands/finalize.d.ts.map +1 -0
  80. package/dist/commands/finalize.js +225 -0
  81. package/dist/commands/finalize.js.map +1 -0
  82. package/dist/commands/guide.d.ts +12 -0
  83. package/dist/commands/guide.d.ts.map +1 -0
  84. package/dist/commands/guide.js +28 -0
  85. package/dist/commands/guide.js.map +1 -0
  86. package/dist/commands/index.d.ts +6 -0
  87. package/dist/commands/index.d.ts.map +1 -0
  88. package/dist/commands/index.js +22 -0
  89. package/dist/commands/index.js.map +1 -0
  90. package/dist/commands/log-change.d.ts +14 -0
  91. package/dist/commands/log-change.d.ts.map +1 -0
  92. package/dist/commands/log-change.js +243 -0
  93. package/dist/commands/log-change.js.map +1 -0
  94. package/dist/commands/plan.d.ts +12 -0
  95. package/dist/commands/plan.d.ts.map +1 -0
  96. package/dist/commands/plan.js +162 -0
  97. package/dist/commands/plan.js.map +1 -0
  98. package/dist/commands/review-manifest.d.ts +39 -0
  99. package/dist/commands/review-manifest.d.ts.map +1 -0
  100. package/dist/commands/review-manifest.js +178 -0
  101. package/dist/commands/review-manifest.js.map +1 -0
  102. package/dist/commands/setup-manifests.d.ts +12 -0
  103. package/dist/commands/setup-manifests.d.ts.map +1 -0
  104. package/dist/commands/setup-manifests.js +229 -0
  105. package/dist/commands/setup-manifests.js.map +1 -0
  106. package/dist/config/defaults.d.ts +15 -0
  107. package/dist/config/defaults.d.ts.map +1 -0
  108. package/dist/config/defaults.js +36 -0
  109. package/dist/config/defaults.js.map +1 -0
  110. package/dist/config/index.d.ts +17 -0
  111. package/dist/config/index.d.ts.map +1 -0
  112. package/dist/config/index.js +104 -0
  113. package/dist/config/index.js.map +1 -0
  114. package/dist/config/schema.d.ts +33 -0
  115. package/dist/config/schema.d.ts.map +1 -0
  116. package/dist/config/schema.js +110 -0
  117. package/dist/config/schema.js.map +1 -0
  118. package/dist/core/index.d.ts +12 -0
  119. package/dist/core/index.d.ts.map +1 -0
  120. package/dist/core/index.js +16 -0
  121. package/dist/core/index.js.map +1 -0
  122. package/dist/core/phase-manager.d.ts +53 -0
  123. package/dist/core/phase-manager.d.ts.map +1 -0
  124. package/dist/core/phase-manager.js +124 -0
  125. package/dist/core/phase-manager.js.map +1 -0
  126. package/dist/core/upgrade-state.d.ts +24 -0
  127. package/dist/core/upgrade-state.d.ts.map +1 -0
  128. package/dist/core/upgrade-state.js +32 -0
  129. package/dist/core/upgrade-state.js.map +1 -0
  130. package/dist/discovery/index.d.ts +5 -0
  131. package/dist/discovery/index.d.ts.map +1 -0
  132. package/dist/discovery/index.js +4 -0
  133. package/dist/discovery/index.js.map +1 -0
  134. package/dist/discovery/orchestrator.d.ts +46 -0
  135. package/dist/discovery/orchestrator.d.ts.map +1 -0
  136. package/dist/discovery/orchestrator.js +124 -0
  137. package/dist/discovery/orchestrator.js.map +1 -0
  138. package/dist/discovery/scanners/config-detector.d.ts +24 -0
  139. package/dist/discovery/scanners/config-detector.d.ts.map +1 -0
  140. package/dist/discovery/scanners/config-detector.js +82 -0
  141. package/dist/discovery/scanners/config-detector.js.map +1 -0
  142. package/dist/discovery/scanners/cv-scanner.d.ts +30 -0
  143. package/dist/discovery/scanners/cv-scanner.d.ts.map +1 -0
  144. package/dist/discovery/scanners/cv-scanner.js +85 -0
  145. package/dist/discovery/scanners/cv-scanner.js.map +1 -0
  146. package/dist/discovery/scanners/index.d.ts +6 -0
  147. package/dist/discovery/scanners/index.d.ts.map +1 -0
  148. package/dist/discovery/scanners/index.js +6 -0
  149. package/dist/discovery/scanners/index.js.map +1 -0
  150. package/dist/discovery/scanners/maven-scanner.d.ts +33 -0
  151. package/dist/discovery/scanners/maven-scanner.d.ts.map +1 -0
  152. package/dist/discovery/scanners/maven-scanner.js +96 -0
  153. package/dist/discovery/scanners/maven-scanner.js.map +1 -0
  154. package/dist/discovery/scanners/repo-scanner.d.ts +9 -0
  155. package/dist/discovery/scanners/repo-scanner.d.ts.map +1 -0
  156. package/dist/discovery/scanners/repo-scanner.js +80 -0
  157. package/dist/discovery/scanners/repo-scanner.js.map +1 -0
  158. package/dist/discovery/scanners/version-resolver.d.ts +45 -0
  159. package/dist/discovery/scanners/version-resolver.d.ts.map +1 -0
  160. package/dist/discovery/scanners/version-resolver.js +119 -0
  161. package/dist/discovery/scanners/version-resolver.js.map +1 -0
  162. package/dist/discovery/types.d.ts +156 -0
  163. package/dist/discovery/types.d.ts.map +1 -0
  164. package/dist/discovery/types.js +2 -0
  165. package/dist/discovery/types.js.map +1 -0
  166. package/dist/discovery/validators/index.d.ts +2 -0
  167. package/dist/discovery/validators/index.d.ts.map +1 -0
  168. package/dist/discovery/validators/index.js +2 -0
  169. package/dist/discovery/validators/index.js.map +1 -0
  170. package/dist/discovery/validators/upgrade-validator.d.ts +34 -0
  171. package/dist/discovery/validators/upgrade-validator.d.ts.map +1 -0
  172. package/dist/discovery/validators/upgrade-validator.js +135 -0
  173. package/dist/discovery/validators/upgrade-validator.js.map +1 -0
  174. package/dist/docs/docs-client.d.ts +44 -0
  175. package/dist/docs/docs-client.d.ts.map +1 -0
  176. package/dist/docs/docs-client.js +161 -0
  177. package/dist/docs/docs-client.js.map +1 -0
  178. package/dist/docs/docs-context.d.ts +23 -0
  179. package/dist/docs/docs-context.d.ts.map +1 -0
  180. package/dist/docs/docs-context.js +41 -0
  181. package/dist/docs/docs-context.js.map +1 -0
  182. package/dist/docs/index.d.ts +4 -0
  183. package/dist/docs/index.d.ts.map +1 -0
  184. package/dist/docs/index.js +3 -0
  185. package/dist/docs/index.js.map +1 -0
  186. package/dist/docs/types.d.ts +27 -0
  187. package/dist/docs/types.d.ts.map +1 -0
  188. package/dist/docs/types.js +2 -0
  189. package/dist/docs/types.js.map +1 -0
  190. package/dist/execution/diff-presenter.d.ts +52 -0
  191. package/dist/execution/diff-presenter.d.ts.map +1 -0
  192. package/dist/execution/diff-presenter.js +148 -0
  193. package/dist/execution/diff-presenter.js.map +1 -0
  194. package/dist/execution/executors/ai-assisted.d.ts +28 -0
  195. package/dist/execution/executors/ai-assisted.d.ts.map +1 -0
  196. package/dist/execution/executors/ai-assisted.js +226 -0
  197. package/dist/execution/executors/ai-assisted.js.map +1 -0
  198. package/dist/execution/executors/automated.d.ts +15 -0
  199. package/dist/execution/executors/automated.d.ts.map +1 -0
  200. package/dist/execution/executors/automated.js +37 -0
  201. package/dist/execution/executors/automated.js.map +1 -0
  202. package/dist/execution/executors/cv-gate.d.ts +23 -0
  203. package/dist/execution/executors/cv-gate.d.ts.map +1 -0
  204. package/dist/execution/executors/cv-gate.js +63 -0
  205. package/dist/execution/executors/cv-gate.js.map +1 -0
  206. package/dist/execution/executors/index.d.ts +7 -0
  207. package/dist/execution/executors/index.d.ts.map +1 -0
  208. package/dist/execution/executors/index.js +7 -0
  209. package/dist/execution/executors/index.js.map +1 -0
  210. package/dist/execution/executors/manual.d.ts +18 -0
  211. package/dist/execution/executors/manual.d.ts.map +1 -0
  212. package/dist/execution/executors/manual.js +31 -0
  213. package/dist/execution/executors/manual.js.map +1 -0
  214. package/dist/execution/executors/override-resolution.d.ts +27 -0
  215. package/dist/execution/executors/override-resolution.d.ts.map +1 -0
  216. package/dist/execution/executors/override-resolution.js +79 -0
  217. package/dist/execution/executors/override-resolution.js.map +1 -0
  218. package/dist/execution/executors/version-bump.d.ts +20 -0
  219. package/dist/execution/executors/version-bump.d.ts.map +1 -0
  220. package/dist/execution/executors/version-bump.js +65 -0
  221. package/dist/execution/executors/version-bump.js.map +1 -0
  222. package/dist/execution/file-transformer.d.ts +25 -0
  223. package/dist/execution/file-transformer.d.ts.map +1 -0
  224. package/dist/execution/file-transformer.js +74 -0
  225. package/dist/execution/file-transformer.js.map +1 -0
  226. package/dist/execution/index.d.ts +7 -0
  227. package/dist/execution/index.d.ts.map +1 -0
  228. package/dist/execution/index.js +9 -0
  229. package/dist/execution/index.js.map +1 -0
  230. package/dist/execution/state-manager.d.ts +27 -0
  231. package/dist/execution/state-manager.d.ts.map +1 -0
  232. package/dist/execution/state-manager.js +48 -0
  233. package/dist/execution/state-manager.js.map +1 -0
  234. package/dist/execution/step-executor.d.ts +68 -0
  235. package/dist/execution/step-executor.d.ts.map +1 -0
  236. package/dist/execution/step-executor.js +243 -0
  237. package/dist/execution/step-executor.js.map +1 -0
  238. package/dist/execution/types.d.ts +92 -0
  239. package/dist/execution/types.d.ts.map +1 -0
  240. package/dist/execution/types.js +2 -0
  241. package/dist/execution/types.js.map +1 -0
  242. package/dist/guide/GuideRunner.d.ts +62 -0
  243. package/dist/guide/GuideRunner.d.ts.map +1 -0
  244. package/dist/guide/GuideRunner.js +390 -0
  245. package/dist/guide/GuideRunner.js.map +1 -0
  246. package/dist/guide/chat/ChatContextBuilder.d.ts +44 -0
  247. package/dist/guide/chat/ChatContextBuilder.d.ts.map +1 -0
  248. package/dist/guide/chat/ChatContextBuilder.js +121 -0
  249. package/dist/guide/chat/ChatContextBuilder.js.map +1 -0
  250. package/dist/guide/chat/ChatLoop.d.ts +18 -0
  251. package/dist/guide/chat/ChatLoop.d.ts.map +1 -0
  252. package/dist/guide/chat/ChatLoop.js +59 -0
  253. package/dist/guide/chat/ChatLoop.js.map +1 -0
  254. package/dist/guide/chat/StepCoach.d.ts +22 -0
  255. package/dist/guide/chat/StepCoach.d.ts.map +1 -0
  256. package/dist/guide/chat/StepCoach.js +39 -0
  257. package/dist/guide/chat/StepCoach.js.map +1 -0
  258. package/dist/guide/chat/index.d.ts +4 -0
  259. package/dist/guide/chat/index.d.ts.map +1 -0
  260. package/dist/guide/chat/index.js +4 -0
  261. package/dist/guide/chat/index.js.map +1 -0
  262. package/dist/guide/index.d.ts +3 -0
  263. package/dist/guide/index.d.ts.map +1 -0
  264. package/dist/guide/index.js +2 -0
  265. package/dist/guide/index.js.map +1 -0
  266. package/dist/guide/phases/DiscoveryPhase.d.ts +30 -0
  267. package/dist/guide/phases/DiscoveryPhase.d.ts.map +1 -0
  268. package/dist/guide/phases/DiscoveryPhase.js +238 -0
  269. package/dist/guide/phases/DiscoveryPhase.js.map +1 -0
  270. package/dist/guide/phases/ExecutionPhase.d.ts +80 -0
  271. package/dist/guide/phases/ExecutionPhase.d.ts.map +1 -0
  272. package/dist/guide/phases/ExecutionPhase.js +574 -0
  273. package/dist/guide/phases/ExecutionPhase.js.map +1 -0
  274. package/dist/guide/phases/PlanPhase.d.ts +22 -0
  275. package/dist/guide/phases/PlanPhase.d.ts.map +1 -0
  276. package/dist/guide/phases/PlanPhase.js +200 -0
  277. package/dist/guide/phases/PlanPhase.js.map +1 -0
  278. package/dist/guide/phases/index.d.ts +4 -0
  279. package/dist/guide/phases/index.d.ts.map +1 -0
  280. package/dist/guide/phases/index.js +4 -0
  281. package/dist/guide/phases/index.js.map +1 -0
  282. package/dist/guide/rendering/formatters.d.ts +126 -0
  283. package/dist/guide/rendering/formatters.d.ts.map +1 -0
  284. package/dist/guide/rendering/formatters.js +340 -0
  285. package/dist/guide/rendering/formatters.js.map +1 -0
  286. package/dist/guide/rendering/index.d.ts +2 -0
  287. package/dist/guide/rendering/index.d.ts.map +1 -0
  288. package/dist/guide/rendering/index.js +2 -0
  289. package/dist/guide/rendering/index.js.map +1 -0
  290. package/dist/guide/rendering/platform-changes.d.ts +18 -0
  291. package/dist/guide/rendering/platform-changes.d.ts.map +1 -0
  292. package/dist/guide/rendering/platform-changes.js +86 -0
  293. package/dist/guide/rendering/platform-changes.js.map +1 -0
  294. package/dist/guide/types.d.ts +100 -0
  295. package/dist/guide/types.d.ts.map +1 -0
  296. package/dist/guide/types.js +2 -0
  297. package/dist/guide/types.js.map +1 -0
  298. package/dist/index.d.ts +3 -0
  299. package/dist/index.d.ts.map +1 -0
  300. package/dist/index.js +138 -0
  301. package/dist/index.js.map +1 -0
  302. package/dist/manifests/maven-settings.d.ts +7 -0
  303. package/dist/manifests/maven-settings.d.ts.map +1 -0
  304. package/dist/manifests/maven-settings.js +33 -0
  305. package/dist/manifests/maven-settings.js.map +1 -0
  306. package/dist/manifests/parent-properties.d.ts +12 -0
  307. package/dist/manifests/parent-properties.d.ts.map +1 -0
  308. package/dist/manifests/parent-properties.js +28 -0
  309. package/dist/manifests/parent-properties.js.map +1 -0
  310. package/dist/manifests/schema.json +198 -0
  311. package/dist/manifests/unreleased.yaml +3 -0
  312. package/dist/mcp/index.d.ts +3 -0
  313. package/dist/mcp/index.d.ts.map +1 -0
  314. package/dist/mcp/index.js +13 -0
  315. package/dist/mcp/index.js.map +1 -0
  316. package/dist/mcp/resources/index.d.ts +32 -0
  317. package/dist/mcp/resources/index.d.ts.map +1 -0
  318. package/dist/mcp/resources/index.js +55 -0
  319. package/dist/mcp/resources/index.js.map +1 -0
  320. package/dist/mcp/server.d.ts +9 -0
  321. package/dist/mcp/server.d.ts.map +1 -0
  322. package/dist/mcp/server.js +162 -0
  323. package/dist/mcp/server.js.map +1 -0
  324. package/dist/mcp/tools/complete-step.d.ts +26 -0
  325. package/dist/mcp/tools/complete-step.d.ts.map +1 -0
  326. package/dist/mcp/tools/complete-step.js +73 -0
  327. package/dist/mcp/tools/complete-step.js.map +1 -0
  328. package/dist/mcp/tools/create-upgrade-plan.d.ts +36 -0
  329. package/dist/mcp/tools/create-upgrade-plan.d.ts.map +1 -0
  330. package/dist/mcp/tools/create-upgrade-plan.js +143 -0
  331. package/dist/mcp/tools/create-upgrade-plan.js.map +1 -0
  332. package/dist/mcp/tools/discover-project.d.ts +33 -0
  333. package/dist/mcp/tools/discover-project.d.ts.map +1 -0
  334. package/dist/mcp/tools/discover-project.js +96 -0
  335. package/dist/mcp/tools/discover-project.js.map +1 -0
  336. package/dist/mcp/tools/get-next-step.d.ts +54 -0
  337. package/dist/mcp/tools/get-next-step.d.ts.map +1 -0
  338. package/dist/mcp/tools/get-next-step.js +110 -0
  339. package/dist/mcp/tools/get-next-step.js.map +1 -0
  340. package/dist/mcp/tools/get-upgrade-status.d.ts +25 -0
  341. package/dist/mcp/tools/get-upgrade-status.d.ts.map +1 -0
  342. package/dist/mcp/tools/get-upgrade-status.js +79 -0
  343. package/dist/mcp/tools/get-upgrade-status.js.map +1 -0
  344. package/dist/mcp/tools/upgrade-targets.d.ts +19 -0
  345. package/dist/mcp/tools/upgrade-targets.d.ts.map +1 -0
  346. package/dist/mcp/tools/upgrade-targets.js +132 -0
  347. package/dist/mcp/tools/upgrade-targets.js.map +1 -0
  348. package/dist/planning/ai-analyzer.d.ts +20 -0
  349. package/dist/planning/ai-analyzer.d.ts.map +1 -0
  350. package/dist/planning/ai-analyzer.js +97 -0
  351. package/dist/planning/ai-analyzer.js.map +1 -0
  352. package/dist/planning/index.d.ts +8 -0
  353. package/dist/planning/index.d.ts.map +1 -0
  354. package/dist/planning/index.js +13 -0
  355. package/dist/planning/index.js.map +1 -0
  356. package/dist/planning/manifest-loader.d.ts +54 -0
  357. package/dist/planning/manifest-loader.d.ts.map +1 -0
  358. package/dist/planning/manifest-loader.js +233 -0
  359. package/dist/planning/manifest-loader.js.map +1 -0
  360. package/dist/planning/manifest-schema.d.ts +41 -0
  361. package/dist/planning/manifest-schema.d.ts.map +1 -0
  362. package/dist/planning/manifest-schema.js +71 -0
  363. package/dist/planning/manifest-schema.js.map +1 -0
  364. package/dist/planning/override-analyzer.d.ts +12 -0
  365. package/dist/planning/override-analyzer.d.ts.map +1 -0
  366. package/dist/planning/override-analyzer.js +42 -0
  367. package/dist/planning/override-analyzer.js.map +1 -0
  368. package/dist/planning/plan-generator.d.ts +15 -0
  369. package/dist/planning/plan-generator.d.ts.map +1 -0
  370. package/dist/planning/plan-generator.js +250 -0
  371. package/dist/planning/plan-generator.js.map +1 -0
  372. package/dist/planning/project-matcher.d.ts +65 -0
  373. package/dist/planning/project-matcher.d.ts.map +1 -0
  374. package/dist/planning/project-matcher.js +265 -0
  375. package/dist/planning/project-matcher.js.map +1 -0
  376. package/dist/planning/types.d.ts +237 -0
  377. package/dist/planning/types.d.ts.map +1 -0
  378. package/dist/planning/types.js +2 -0
  379. package/dist/planning/types.js.map +1 -0
  380. package/dist/types/index.d.ts +90 -0
  381. package/dist/types/index.d.ts.map +1 -0
  382. package/dist/types/index.js +2 -0
  383. package/dist/types/index.js.map +1 -0
  384. package/dist/utils/command-helpers.d.ts +14 -0
  385. package/dist/utils/command-helpers.d.ts.map +1 -0
  386. package/dist/utils/command-helpers.js +18 -0
  387. package/dist/utils/command-helpers.js.map +1 -0
  388. package/dist/utils/diff.d.ts +42 -0
  389. package/dist/utils/diff.d.ts.map +1 -0
  390. package/dist/utils/diff.js +80 -0
  391. package/dist/utils/diff.js.map +1 -0
  392. package/dist/utils/error.d.ts +5 -0
  393. package/dist/utils/error.d.ts.map +1 -0
  394. package/dist/utils/error.js +8 -0
  395. package/dist/utils/error.js.map +1 -0
  396. package/dist/utils/fs.d.ts +50 -0
  397. package/dist/utils/fs.d.ts.map +1 -0
  398. package/dist/utils/fs.js +117 -0
  399. package/dist/utils/fs.js.map +1 -0
  400. package/dist/utils/index.d.ts +9 -0
  401. package/dist/utils/index.d.ts.map +1 -0
  402. package/dist/utils/index.js +9 -0
  403. package/dist/utils/index.js.map +1 -0
  404. package/dist/utils/logger.d.ts +31 -0
  405. package/dist/utils/logger.d.ts.map +1 -0
  406. package/dist/utils/logger.js +62 -0
  407. package/dist/utils/logger.js.map +1 -0
  408. package/dist/utils/output-writer.d.ts +26 -0
  409. package/dist/utils/output-writer.d.ts.map +1 -0
  410. package/dist/utils/output-writer.js +62 -0
  411. package/dist/utils/output-writer.js.map +1 -0
  412. package/dist/utils/pom-parser.d.ts +94 -0
  413. package/dist/utils/pom-parser.d.ts.map +1 -0
  414. package/dist/utils/pom-parser.js +120 -0
  415. package/dist/utils/pom-parser.js.map +1 -0
  416. package/dist/utils/spinner.d.ts +35 -0
  417. package/dist/utils/spinner.d.ts.map +1 -0
  418. package/dist/utils/spinner.js +46 -0
  419. package/dist/utils/spinner.js.map +1 -0
  420. package/package.json +75 -0
@@ -0,0 +1,32 @@
1
+ import { ensureDir, getOutputDir, joinPaths, pathExists, readTextFile, writeTextFile, } from '../utils/fs.js';
2
+ /**
3
+ * Get the canonical path to upgrade-state.json for a project.
4
+ */
5
+ export function getUpgradeStatePath(projectRoot) {
6
+ return joinPaths(getOutputDir(projectRoot), 'upgrade-state.json');
7
+ }
8
+ /**
9
+ * Load persisted upgrade state, or null if it does not exist.
10
+ */
11
+ export async function loadUpgradeState(projectRoot) {
12
+ const path = getUpgradeStatePath(projectRoot);
13
+ if (!(await pathExists(path))) {
14
+ return null;
15
+ }
16
+ const content = await readTextFile(path);
17
+ return JSON.parse(content);
18
+ }
19
+ /**
20
+ * Save persisted upgrade state.
21
+ */
22
+ export async function saveUpgradeState(projectRoot, state) {
23
+ const persistedState = {
24
+ ...state,
25
+ updatedAt: state.updatedAt ?? new Date().toISOString(),
26
+ };
27
+ const outputDir = getOutputDir(projectRoot);
28
+ await ensureDir(outputDir);
29
+ await writeTextFile(getUpgradeStatePath(projectRoot), JSON.stringify(persistedState, null, 2));
30
+ return persistedState;
31
+ }
32
+ //# sourceMappingURL=upgrade-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-state.js","sourceRoot":"","sources":["../../src/core/upgrade-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AAYxB;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,KAA+D;IAE/D,MAAM,cAAc,GAAiB;QACnC,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACvD,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,aAAa,CACjB,mBAAmB,CAAC,WAAW,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CACxC,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { DiscoveryOrchestrator, type DiscoveryResult } from './orchestrator.js';
2
+ export type { ProjectContext, DiscoveryOptions, ValidationIssue, ValidationSeverity, VersionOverride, MavenModule, CVReport, GroovyScript, BuildConfig, RepoConfig, ConfigArtifacts, ScannerResult, } from './types.js';
3
+ export { VersionResolver, MavenScanner, ConfigDetector, RepoScanner, type VersionInfo, type MavenScanResult, } from './scanners/index.js';
4
+ export { UpgradeValidator } from './validators/index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DiscoveryOrchestrator } from './orchestrator.js';
2
+ export { VersionResolver, MavenScanner, ConfigDetector, RepoScanner, } from './scanners/index.js';
3
+ export { UpgradeValidator } from './validators/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,mBAAmB,CAAC;AAiBhF,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { ProjectContext, DiscoveryOptions } from './types.js';
2
+ export interface DiscoveryResult {
3
+ success: boolean;
4
+ context?: ProjectContext;
5
+ error?: string;
6
+ warnings?: string[];
7
+ duration: number;
8
+ }
9
+ /**
10
+ * Orchestrates the discovery pipeline by running all scanners in sequence,
11
+ * aggregating results into a unified ProjectContext, and handling partial
12
+ * failures with appropriate error reporting.
13
+ *
14
+ * Critical scanners (VersionResolver, MavenScanner) must succeed for
15
+ * discovery to complete. Optional scanners (ConfigDetector, RepoScanner)
16
+ * record warnings on failure but do not block overall discovery.
17
+ */
18
+ export declare class DiscoveryOrchestrator {
19
+ private versionResolver;
20
+ private mavenScanner;
21
+ private configDetector;
22
+ private repoScanner;
23
+ private validator;
24
+ constructor();
25
+ /**
26
+ * Run the full discovery pipeline against a project directory.
27
+ *
28
+ * @param projectRoot - Absolute path to the project root directory
29
+ * @param options - Optional discovery configuration
30
+ * @returns Discovery result containing the project context or error details
31
+ */
32
+ discover(projectRoot: string, options?: DiscoveryOptions): Promise<DiscoveryResult>;
33
+ /**
34
+ * Build the BuildConfig from version and Maven scan results.
35
+ */
36
+ private buildBuildConfig;
37
+ /**
38
+ * Build a RepoConfig, providing defaults if the scanner failed.
39
+ */
40
+ private buildRepoConfig;
41
+ /**
42
+ * Build ConfigArtifacts, providing defaults if the scanner failed.
43
+ */
44
+ private buildConfigArtifacts;
45
+ }
46
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/discovery/orchestrator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAIjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAmB;;IAUpC;;;;;;OAMG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IAgE3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAM7B"}
@@ -0,0 +1,124 @@
1
+ import { VersionResolver } from './scanners/version-resolver.js';
2
+ import { MavenScanner } from './scanners/maven-scanner.js';
3
+ import { ConfigDetector } from './scanners/config-detector.js';
4
+ import { RepoScanner } from './scanners/repo-scanner.js';
5
+ import { UpgradeValidator } from './validators/upgrade-validator.js';
6
+ /**
7
+ * Orchestrates the discovery pipeline by running all scanners in sequence,
8
+ * aggregating results into a unified ProjectContext, and handling partial
9
+ * failures with appropriate error reporting.
10
+ *
11
+ * Critical scanners (VersionResolver, MavenScanner) must succeed for
12
+ * discovery to complete. Optional scanners (ConfigDetector, RepoScanner)
13
+ * record warnings on failure but do not block overall discovery.
14
+ */
15
+ export class DiscoveryOrchestrator {
16
+ versionResolver;
17
+ mavenScanner;
18
+ configDetector;
19
+ repoScanner;
20
+ validator;
21
+ constructor() {
22
+ this.versionResolver = new VersionResolver();
23
+ this.mavenScanner = new MavenScanner();
24
+ this.configDetector = new ConfigDetector();
25
+ this.repoScanner = new RepoScanner();
26
+ this.validator = new UpgradeValidator();
27
+ }
28
+ /**
29
+ * Run the full discovery pipeline against a project directory.
30
+ *
31
+ * @param projectRoot - Absolute path to the project root directory
32
+ * @param options - Optional discovery configuration
33
+ * @returns Discovery result containing the project context or error details
34
+ */
35
+ async discover(projectRoot, options) {
36
+ const startTime = Date.now();
37
+ const warnings = [];
38
+ // Step 1: Resolve version (critical - must succeed)
39
+ const versionResult = await this.versionResolver.scan(projectRoot);
40
+ if (!versionResult.success || !versionResult.data) {
41
+ return {
42
+ success: false,
43
+ error: versionResult.error ?? 'Version resolution failed',
44
+ duration: Date.now() - startTime,
45
+ };
46
+ }
47
+ // Step 2: Scan Maven modules (critical - must succeed)
48
+ const mavenResult = await this.mavenScanner.scan(projectRoot);
49
+ if (!mavenResult.success || !mavenResult.data) {
50
+ return {
51
+ success: false,
52
+ error: mavenResult.error ?? 'Maven scan failed',
53
+ duration: Date.now() - startTime,
54
+ };
55
+ }
56
+ // Optional scanners run in parallel — failures produce warnings, not errors
57
+ const [configResult, repoResult] = await Promise.all([
58
+ this.configDetector.scan(projectRoot),
59
+ this.repoScanner.scan(projectRoot),
60
+ ]);
61
+ if (!configResult.success) {
62
+ warnings.push(`ConfigDetector: ${configResult.error}`);
63
+ }
64
+ if (!repoResult.success) {
65
+ warnings.push(`RepoScanner: ${repoResult.error}`);
66
+ }
67
+ const build = this.buildBuildConfig(versionResult.data, mavenResult.data);
68
+ const repo = this.buildRepoConfig(repoResult.data);
69
+ const config = this.buildConfigArtifacts(configResult.data);
70
+ const validations = options?.skipValidation
71
+ ? []
72
+ : this.validator.validate(build, repo, config);
73
+ const isUpgradeReady = this.validator.isUpgradeReady(validations);
74
+ const context = {
75
+ discoveredAt: new Date().toISOString(),
76
+ projectRoot,
77
+ build,
78
+ repo,
79
+ config,
80
+ validations,
81
+ isUpgradeReady,
82
+ };
83
+ return {
84
+ success: true,
85
+ context,
86
+ warnings: warnings.length > 0 ? warnings : undefined,
87
+ duration: Date.now() - startTime,
88
+ };
89
+ }
90
+ /**
91
+ * Build the BuildConfig from version and Maven scan results.
92
+ */
93
+ buildBuildConfig(version, maven) {
94
+ return {
95
+ brxmVersion: version.brxmVersion,
96
+ parentGroupId: version.parentGroupId,
97
+ parentArtifactId: version.parentArtifactId,
98
+ modules: maven.modules,
99
+ moduleCount: maven.moduleCount,
100
+ overrides: version.overrides,
101
+ totalJavaFiles: maven.totalJavaFiles,
102
+ };
103
+ }
104
+ /**
105
+ * Build a RepoConfig, providing defaults if the scanner failed.
106
+ */
107
+ buildRepoConfig(data) {
108
+ return data ?? {
109
+ groovyScripts: [],
110
+ hasBootstrap: false,
111
+ bootstrapPaths: [],
112
+ };
113
+ }
114
+ /**
115
+ * Build ConfigArtifacts, providing defaults if the scanner failed.
116
+ */
117
+ buildConfigArtifacts(data) {
118
+ return data ?? {
119
+ cvReports: [],
120
+ configFiles: [],
121
+ };
122
+ }
123
+ }
124
+ //# sourceMappingURL=orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/discovery/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ScannerResult, ConfigArtifacts } from '../types.js';
2
+ /**
3
+ * Scanner that detects Configuration Verifier reports and well-known
4
+ * configuration files in a brXM project. These artifacts provide
5
+ * insight into configuration drift and customization scope.
6
+ */
7
+ export declare class ConfigDetector {
8
+ /**
9
+ * Scan the project root for CV reports and configuration files.
10
+ *
11
+ * @param projectRoot - Absolute path to the project root directory
12
+ * @returns Scanner result containing detected config artifacts
13
+ */
14
+ scan(projectRoot: string): Promise<ScannerResult<ConfigArtifacts>>;
15
+ /**
16
+ * Search for Configuration Verifier report files.
17
+ */
18
+ private findCVReports;
19
+ /**
20
+ * Search for well-known brXM configuration files.
21
+ */
22
+ private findConfigFiles;
23
+ }
24
+ //# sourceMappingURL=config-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-detector.d.ts","sourceRoot":"","sources":["../../../src/discovery/scanners/config-detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AAmB5E;;;;GAIG;AACH,qBAAa,cAAc;IACzB;;;;;OAKG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IA4BxE;;OAEG;YACW,aAAa;IAe3B;;OAEG;YACW,eAAe;CAU9B"}
@@ -0,0 +1,82 @@
1
+ import { findFiles } from '../../utils/fs.js';
2
+ const WELL_KNOWN_CONFIG_PATTERNS = [
3
+ '**/log4j2*.xml',
4
+ '**/log4j2*.properties',
5
+ '**/platform.properties',
6
+ '**/repository.xml',
7
+ '**/repository*.xml',
8
+ '**/hippoecm-extension.xml',
9
+ '**/applicationContext*.xml',
10
+ '**/web.xml',
11
+ ];
12
+ const CV_REPORT_PATTERNS = [
13
+ '**/cv-report*.json',
14
+ '**/cv-report*.xml',
15
+ '**/configuration-verifier*.json',
16
+ ];
17
+ /**
18
+ * Scanner that detects Configuration Verifier reports and well-known
19
+ * configuration files in a brXM project. These artifacts provide
20
+ * insight into configuration drift and customization scope.
21
+ */
22
+ export class ConfigDetector {
23
+ /**
24
+ * Scan the project root for CV reports and configuration files.
25
+ *
26
+ * @param projectRoot - Absolute path to the project root directory
27
+ * @returns Scanner result containing detected config artifacts
28
+ */
29
+ async scan(projectRoot) {
30
+ const startTime = Date.now();
31
+ try {
32
+ const [cvReports, configFiles] = await Promise.all([
33
+ this.findCVReports(projectRoot),
34
+ this.findConfigFiles(projectRoot),
35
+ ]);
36
+ return {
37
+ scanner: 'ConfigDetector',
38
+ success: true,
39
+ data: {
40
+ cvReports,
41
+ configFiles,
42
+ },
43
+ duration: Date.now() - startTime,
44
+ };
45
+ }
46
+ catch (error) {
47
+ return {
48
+ scanner: 'ConfigDetector',
49
+ success: false,
50
+ error: `Failed to detect configuration: ${error instanceof Error ? error.message : 'Unknown error'}`,
51
+ duration: Date.now() - startTime,
52
+ };
53
+ }
54
+ }
55
+ /**
56
+ * Search for Configuration Verifier report files.
57
+ */
58
+ async findCVReports(projectRoot) {
59
+ const reports = [];
60
+ for (const pattern of CV_REPORT_PATTERNS) {
61
+ const files = await findFiles(pattern, projectRoot);
62
+ for (const file of files) {
63
+ reports.push({
64
+ path: file,
65
+ });
66
+ }
67
+ }
68
+ return reports;
69
+ }
70
+ /**
71
+ * Search for well-known brXM configuration files.
72
+ */
73
+ async findConfigFiles(projectRoot) {
74
+ const configFiles = [];
75
+ for (const pattern of WELL_KNOWN_CONFIG_PATTERNS) {
76
+ const files = await findFiles(pattern, projectRoot);
77
+ configFiles.push(...files);
78
+ }
79
+ return [...new Set(configFiles)];
80
+ }
81
+ }
82
+ //# sourceMappingURL=config-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-detector.js","sourceRoot":"","sources":["../../../src/discovery/scanners/config-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,0BAA0B,GAAG;IACjC,gBAAgB;IAChB,uBAAuB;IACvB,wBAAwB;IACxB,mBAAmB;IACnB,oBAAoB;IACpB,2BAA2B;IAC3B,4BAA4B;IAC5B,YAAY;CACb,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,oBAAoB;IACpB,mBAAmB;IACnB,iCAAiC;CAClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;gBAC/B,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;aAClC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,SAAS;oBACT,WAAW;iBACZ;gBACD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;gBACpG,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC7C,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,WAAmB;QAC/C,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,OAAO,IAAI,0BAA0B,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import type { ScannerResult } from '../types.js';
2
+ /**
3
+ * Result of scanning the Configuration Verifier output directory.
4
+ */
5
+ export interface CVScanResult {
6
+ /** Path to the CV output directory */
7
+ outputPath: string;
8
+ /** Whether CV output was found */
9
+ found: boolean;
10
+ /** Total number of deltas across all files */
11
+ totalDeltas: number;
12
+ /** Count per delta type (add-prop, upd-prop, del-prop, add-node, ord-node, del-node) */
13
+ deltaCounts: Record<string, number>;
14
+ /** Paths of YAML files that were scanned */
15
+ sourceFiles: string[];
16
+ /** ISO timestamp of when the scan was performed */
17
+ scannedAt: string;
18
+ }
19
+ /**
20
+ * Scans the Configuration Verifier output directory for HCM delta YAML files
21
+ * and produces a summary of configuration drift.
22
+ */
23
+ export declare class CVScanner {
24
+ scan(projectRoot: string, outputDir?: string): Promise<ScannerResult<CVScanResult>>;
25
+ /**
26
+ * Recursively walk a parsed YAML tree, counting occurrences of delta type keys.
27
+ */
28
+ private countDeltas;
29
+ }
30
+ //# sourceMappingURL=cv-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-scanner.d.ts","sourceRoot":"","sources":["../../../src/discovery/scanners/cv-scanner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;;GAGG;AACH,qBAAa,SAAS;IACd,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAoDvC;;OAEG;IACH,OAAO,CAAC,WAAW;CA4BpB"}
@@ -0,0 +1,85 @@
1
+ import yaml from 'js-yaml';
2
+ import { pathExists, findFiles, readTextFile, joinPaths } from '../../utils/fs.js';
3
+ const DELTA_TYPES = ['add-prop', 'upd-prop', 'del-prop', 'add-node', 'ord-node', 'del-node'];
4
+ const DEFAULT_OUTPUT_DIR = 'configuration-verifier-output';
5
+ /**
6
+ * Scans the Configuration Verifier output directory for HCM delta YAML files
7
+ * and produces a summary of configuration drift.
8
+ */
9
+ export class CVScanner {
10
+ async scan(projectRoot, outputDir = DEFAULT_OUTPUT_DIR) {
11
+ const startTime = Date.now();
12
+ const outputPath = joinPaths(projectRoot, outputDir);
13
+ try {
14
+ const emptyResult = {
15
+ outputPath,
16
+ found: false,
17
+ totalDeltas: 0,
18
+ deltaCounts: {},
19
+ sourceFiles: [],
20
+ scannedAt: new Date().toISOString(),
21
+ };
22
+ if (!(await pathExists(outputPath))) {
23
+ return { scanner: 'CVScanner', success: true, data: emptyResult, duration: Date.now() - startTime };
24
+ }
25
+ const yamlFiles = await findFiles('**/*.yaml', outputPath, []);
26
+ if (yamlFiles.length === 0) {
27
+ return { scanner: 'CVScanner', success: true, data: emptyResult, duration: Date.now() - startTime };
28
+ }
29
+ const deltaCounts = {};
30
+ for (const file of yamlFiles) {
31
+ const content = await readTextFile(file);
32
+ const doc = yaml.load(content);
33
+ this.countDeltas(doc, deltaCounts);
34
+ }
35
+ const totalDeltas = Object.values(deltaCounts).reduce((sum, n) => sum + n, 0);
36
+ const data = {
37
+ outputPath,
38
+ found: true,
39
+ totalDeltas,
40
+ deltaCounts,
41
+ sourceFiles: yamlFiles,
42
+ scannedAt: new Date().toISOString(),
43
+ };
44
+ return { scanner: 'CVScanner', success: true, data, duration: Date.now() - startTime };
45
+ }
46
+ catch (error) {
47
+ return {
48
+ scanner: 'CVScanner',
49
+ success: false,
50
+ error: error instanceof Error ? error.message : 'Unknown error',
51
+ duration: Date.now() - startTime,
52
+ };
53
+ }
54
+ }
55
+ /**
56
+ * Recursively walk a parsed YAML tree, counting occurrences of delta type keys.
57
+ */
58
+ countDeltas(node, counts) {
59
+ if (node === null || node === undefined || typeof node !== 'object') {
60
+ return;
61
+ }
62
+ if (Array.isArray(node)) {
63
+ for (const item of node) {
64
+ this.countDeltas(item, counts);
65
+ }
66
+ return;
67
+ }
68
+ for (const [key, value] of Object.entries(node)) {
69
+ if (DELTA_TYPES.includes(key)) {
70
+ // ord-node arrays specify child ordering — count as one reordering operation.
71
+ // Other delta types count each entry (array item or object key) as a separate delta.
72
+ const num = key === 'ord-node'
73
+ ? 1
74
+ : Array.isArray(value)
75
+ ? value.length
76
+ : value !== null && typeof value === 'object'
77
+ ? Object.keys(value).length
78
+ : 1;
79
+ counts[key] = (counts[key] ?? 0) + num;
80
+ }
81
+ this.countDeltas(value, counts);
82
+ }
83
+ }
84
+ }
85
+ //# sourceMappingURL=cv-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-scanner.js","sourceRoot":"","sources":["../../../src/discovery/scanners/cv-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAoBnF,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC7F,MAAM,kBAAkB,GAAG,+BAA+B,CAAC;AAE3D;;;GAGG;AACH,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,YAAoB,kBAAkB;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,WAAW,GAAiB;gBAChC,UAAU;gBACV,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACpC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACtG,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACtG,CAAC;YAED,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAA4B,CAAC;gBAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9E,MAAM,IAAI,GAAiB;gBACzB,UAAU;gBACV,KAAK,EAAE,IAAI;gBACX,WAAW;gBACX,WAAW;gBACX,WAAW,EAAE,SAAS;gBACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;gBAC/D,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAa,EAAE,MAA8B;QAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;YAC3E,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,8EAA8E;gBAC9E,qFAAqF;gBACrF,MAAM,GAAG,GAAG,GAAG,KAAK,UAAU;oBAC5B,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;wBACpB,CAAC,CAAC,KAAK,CAAC,MAAM;wBACd,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;4BAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;4BAC3B,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { VersionResolver, type VersionInfo } from './version-resolver.js';
2
+ export { MavenScanner, type MavenScanResult } from './maven-scanner.js';
3
+ export { ConfigDetector } from './config-detector.js';
4
+ export { RepoScanner } from './repo-scanner.js';
5
+ export { CVScanner, type CVScanResult } from './cv-scanner.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discovery/scanners/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { VersionResolver } from './version-resolver.js';
2
+ export { MavenScanner } from './maven-scanner.js';
3
+ export { ConfigDetector } from './config-detector.js';
4
+ export { RepoScanner } from './repo-scanner.js';
5
+ export { CVScanner } from './cv-scanner.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/scanners/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { ScannerResult, MavenModule } from '../types.js';
2
+ /**
3
+ * Result of scanning the Maven module structure.
4
+ */
5
+ export interface MavenScanResult {
6
+ /** Discovered Maven modules */
7
+ modules: MavenModule[];
8
+ /** Total number of modules */
9
+ moduleCount: number;
10
+ /** Total Java source files across all modules */
11
+ totalJavaFiles: number;
12
+ /** Warnings from module scanning (e.g. parse failures) */
13
+ warnings?: string[];
14
+ }
15
+ /**
16
+ * Scans a Maven project to discover module structure, artifact metadata,
17
+ * and Java source file counts.
18
+ */
19
+ export declare class MavenScanner {
20
+ /**
21
+ * Scan the Maven project rooted at the given directory.
22
+ * Reads the root pom.xml, extracts declared modules, then scans each
23
+ * module for artifact metadata and Java file counts.
24
+ */
25
+ scan(projectRoot: string): Promise<ScannerResult<MavenScanResult>>;
26
+ /**
27
+ * Scan an individual Maven module directory.
28
+ * Returns null if the module's pom.xml does not exist.
29
+ * Throws if the pom.xml cannot be parsed.
30
+ */
31
+ private scanModule;
32
+ }
33
+ //# sourceMappingURL=maven-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maven-scanner.d.ts","sourceRoot":"","sources":["../../../src/discovery/scanners/maven-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAuDxE;;;;OAIG;YACW,UAAU;CAkCzB"}
@@ -0,0 +1,96 @@
1
+ import { pathExists, readTextFile, findFiles, joinPaths } from '../../utils/fs.js';
2
+ import { parsePom, extractModules, extractVersion } from '../../utils/pom-parser.js';
3
+ /**
4
+ * Scans a Maven project to discover module structure, artifact metadata,
5
+ * and Java source file counts.
6
+ */
7
+ export class MavenScanner {
8
+ /**
9
+ * Scan the Maven project rooted at the given directory.
10
+ * Reads the root pom.xml, extracts declared modules, then scans each
11
+ * module for artifact metadata and Java file counts.
12
+ */
13
+ async scan(projectRoot) {
14
+ const startTime = Date.now();
15
+ const pomPath = joinPaths(projectRoot, 'pom.xml');
16
+ try {
17
+ if (!(await pathExists(pomPath))) {
18
+ return {
19
+ scanner: 'MavenScanner',
20
+ success: false,
21
+ error: `No pom.xml found at project root: ${pomPath}`,
22
+ duration: Date.now() - startTime,
23
+ };
24
+ }
25
+ const rootPomContent = await readTextFile(pomPath);
26
+ const rootPom = parsePom(rootPomContent);
27
+ const moduleNames = extractModules(rootPom);
28
+ const modules = [];
29
+ const warnings = [];
30
+ let totalJavaFiles = 0;
31
+ for (const moduleName of moduleNames) {
32
+ try {
33
+ const module = await this.scanModule(projectRoot, moduleName);
34
+ if (module) {
35
+ modules.push(module);
36
+ totalJavaFiles += module.javaFileCount ?? 0;
37
+ }
38
+ }
39
+ catch (error) {
40
+ warnings.push(`Failed to parse module ${moduleName}: ${error instanceof Error ? error.message : String(error)}`);
41
+ }
42
+ }
43
+ return {
44
+ scanner: 'MavenScanner',
45
+ success: true,
46
+ data: {
47
+ modules,
48
+ moduleCount: modules.length,
49
+ totalJavaFiles,
50
+ ...(warnings.length > 0 && { warnings }),
51
+ },
52
+ duration: Date.now() - startTime,
53
+ };
54
+ }
55
+ catch (error) {
56
+ return {
57
+ scanner: 'MavenScanner',
58
+ success: false,
59
+ error: `Failed to scan Maven modules: ${error instanceof Error ? error.message : 'Unknown error'}`,
60
+ duration: Date.now() - startTime,
61
+ };
62
+ }
63
+ }
64
+ /**
65
+ * Scan an individual Maven module directory.
66
+ * Returns null if the module's pom.xml does not exist.
67
+ * Throws if the pom.xml cannot be parsed.
68
+ */
69
+ async scanModule(projectRoot, moduleName) {
70
+ const modulePath = joinPaths(projectRoot, moduleName);
71
+ const pomPath = joinPaths(modulePath, 'pom.xml');
72
+ if (!(await pathExists(pomPath))) {
73
+ return null;
74
+ }
75
+ try {
76
+ const pomContent = await readTextFile(pomPath);
77
+ const pom = parsePom(pomContent);
78
+ const versionInfo = extractVersion(pom);
79
+ const javaFiles = await findFiles('**/*.java', modulePath, ['**/target/**', '**/build/**']);
80
+ return {
81
+ name: moduleName,
82
+ artifactId: pom.project.artifactId != null ? String(pom.project.artifactId) : moduleName,
83
+ groupId: pom.project.groupId ?? pom.project.parent?.groupId,
84
+ version: versionInfo.project ?? versionInfo.parent,
85
+ packaging: pom.project.packaging != null ? String(pom.project.packaging) : 'jar',
86
+ path: modulePath,
87
+ pomPath,
88
+ javaFileCount: javaFiles.length,
89
+ };
90
+ }
91
+ catch (error) {
92
+ throw new Error(`Failed to parse pom.xml for module ${moduleName}: ${error instanceof Error ? error.message : String(error)}`);
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=maven-scanner.js.map