@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,226 @@
1
+ import { isAbsolute, join } from 'node:path';
2
+ import { applyFileChanges } from '../file-transformer.js';
3
+ import { readTextFile, findFiles } from '../../utils/fs.js';
4
+ const MAX_CANDIDATE_FILES = 5;
5
+ const MAX_PROJECT_FILES_TO_SCAN = 500;
6
+ const MAX_CONTENT = 6000;
7
+ /**
8
+ * Executor for AI-assisted steps (automatable === 'partial').
9
+ *
10
+ * Uses the AI client to propose concrete file edits against a bounded set of
11
+ * candidate files. The user can review the diff, ask the AI to revise the
12
+ * proposal, and then decide whether to apply it.
13
+ */
14
+ export class AIAssistedExecutor {
15
+ automationLevel = 'partial';
16
+ aiClient;
17
+ constructor(aiClient) {
18
+ this.aiClient = aiClient;
19
+ }
20
+ async prepare(step, projectRoot) {
21
+ return this.proposeChanges(step, projectRoot);
22
+ }
23
+ async revise(step, projectRoot, previousProposal, revisionRequest) {
24
+ return this.proposeChanges(step, projectRoot, {
25
+ previousProposal,
26
+ revisionRequest,
27
+ });
28
+ }
29
+ async apply(prepared, _projectRoot) {
30
+ if (prepared.changes.length === 0) {
31
+ return Promise.reject(new Error('No proposed file changes are available for this AI-assisted step. Ask AI to revise or complete it manually.'));
32
+ }
33
+ await applyFileChanges(prepared.changes);
34
+ return prepared.changes;
35
+ }
36
+ async proposeChanges(step, projectRoot, options) {
37
+ const candidateFiles = await this.resolveCandidateFiles(step, projectRoot);
38
+ if (candidateFiles.length === 0) {
39
+ return {
40
+ step,
41
+ changes: [],
42
+ totalFiles: 0,
43
+ aiAnalysis: 'No candidate files could be identified for this AI-assisted step. Review the guidance manually or regenerate the plan with the latest metadata.',
44
+ isValid: true,
45
+ };
46
+ }
47
+ try {
48
+ const prompt = this.buildProposalPrompt(step, candidateFiles, options?.previousProposal, options?.revisionRequest);
49
+ const response = await this.aiClient.generate(prompt, {
50
+ maxTokens: 4000,
51
+ temperature: 0.1,
52
+ });
53
+ const parsed = this.parseProposalResponse(response.text);
54
+ const originalByPath = new Map(candidateFiles.map((file) => [file.path, file.content]));
55
+ const changes = (parsed.changes ?? [])
56
+ .filter((change) => originalByPath.has(change.filePath))
57
+ .map((change) => {
58
+ const originalContent = originalByPath.get(change.filePath);
59
+ return {
60
+ filePath: change.filePath,
61
+ originalContent,
62
+ modifiedContent: change.modifiedContent,
63
+ isNew: false,
64
+ };
65
+ })
66
+ .filter((change) => change.modifiedContent !== change.originalContent);
67
+ return {
68
+ step,
69
+ changes,
70
+ totalFiles: changes.length,
71
+ aiAnalysis: parsed.summary ?? 'AI proposal ready for review.',
72
+ isValid: true,
73
+ };
74
+ }
75
+ catch (error) {
76
+ return {
77
+ step,
78
+ changes: [],
79
+ totalFiles: 0,
80
+ aiAnalysis: `AI proposal unavailable: ${error instanceof Error ? error.message : 'Unknown error'}. Review the step manually.`,
81
+ isValid: true,
82
+ };
83
+ }
84
+ }
85
+ async resolveCandidateFiles(step, projectRoot) {
86
+ const directFiles = this.resolveDirectFiles(step, projectRoot);
87
+ if (directFiles.length > 0) {
88
+ return this.readCandidateFiles(directFiles);
89
+ }
90
+ if (!step.detectionPatterns || step.detectionPatterns.length === 0) {
91
+ return [];
92
+ }
93
+ const projectFiles = (await findFiles('**/*', projectRoot)).sort();
94
+ const matchingFiles = [];
95
+ for (const filePath of projectFiles.slice(0, MAX_PROJECT_FILES_TO_SCAN)) {
96
+ if (matchingFiles.length >= MAX_CANDIDATE_FILES)
97
+ break;
98
+ try {
99
+ const content = await readTextFile(filePath);
100
+ if (step.detectionPatterns.some((pattern) => this.matchesPattern(content, pattern))) {
101
+ matchingFiles.push(filePath);
102
+ }
103
+ }
104
+ catch {
105
+ // Skip unreadable files.
106
+ }
107
+ }
108
+ return this.readCandidateFiles(matchingFiles);
109
+ }
110
+ resolveDirectFiles(step, projectRoot) {
111
+ const resolved = new Set();
112
+ for (const filePath of step.affectedFiles) {
113
+ resolved.add(isAbsolute(filePath) ? filePath : join(projectRoot, filePath));
114
+ if (resolved.size >= MAX_CANDIDATE_FILES) {
115
+ break;
116
+ }
117
+ }
118
+ return Array.from(resolved);
119
+ }
120
+ async readCandidateFiles(filePaths) {
121
+ const candidates = [];
122
+ for (const filePath of filePaths.slice(0, MAX_CANDIDATE_FILES)) {
123
+ try {
124
+ const content = await readTextFile(filePath);
125
+ candidates.push({
126
+ path: filePath,
127
+ content,
128
+ });
129
+ }
130
+ catch {
131
+ // Skip unreadable files.
132
+ }
133
+ }
134
+ return candidates;
135
+ }
136
+ truncateContent(content) {
137
+ let snippet = content.slice(0, MAX_CONTENT);
138
+ if (content.length > MAX_CONTENT) {
139
+ snippet += `\n... [truncated, ${content.length - MAX_CONTENT} chars omitted]`;
140
+ }
141
+ return snippet;
142
+ }
143
+ matchesPattern(content, pattern) {
144
+ if (pattern.startsWith('/') && pattern.endsWith('/') && pattern.length > 2) {
145
+ try {
146
+ return new RegExp(pattern.slice(1, -1)).test(content);
147
+ }
148
+ catch {
149
+ return false;
150
+ }
151
+ }
152
+ try {
153
+ return new RegExp(pattern, 'm').test(content);
154
+ }
155
+ catch {
156
+ return content.includes(pattern);
157
+ }
158
+ }
159
+ buildProposalPrompt(step, candidateFiles, previousProposal, revisionRequest) {
160
+ const fileContext = candidateFiles
161
+ .map((file) => `=== ${file.path} ===\n${this.truncateContent(file.content)}`)
162
+ .join('\n\n');
163
+ const previousProposalSection = previousProposal && previousProposal.changes.length > 0
164
+ ? `\n## Previous Proposal\n${previousProposal.changes
165
+ .map((change) => `- ${change.filePath}`)
166
+ .join('\n')}\n\nPrevious summary:\n${previousProposal.aiAnalysis ?? 'No previous summary provided.'}`
167
+ : '';
168
+ const revisionSection = revisionRequest
169
+ ? `\n## Revision Request\n${revisionRequest}`
170
+ : '';
171
+ return `You are helping with a brXM upgrade migration by proposing concrete file edits.
172
+
173
+ ## Step Details
174
+ - Entry ID: ${step.entryId}
175
+ - Description: ${step.description}
176
+ - Type: ${step.type}
177
+ - Risk Level: ${step.riskLevel}/5
178
+ - Candidate Files: ${candidateFiles.length}
179
+
180
+ ## Manifest Guidance
181
+ ${step.aiGuidance ?? 'No manifest guidance provided.'}
182
+
183
+ ## Existing Analysis
184
+ ${step.analysis ?? 'No additional analysis provided.'}
185
+
186
+ ## Candidate File Contents
187
+ ${fileContext}
188
+ ${previousProposalSection}
189
+ ${revisionSection}
190
+
191
+ ## Your Task
192
+ Return JSON only, with this shape:
193
+ {
194
+ "summary": "Short explanation of the proposed change and any follow-up validation.",
195
+ "changes": [
196
+ {
197
+ "filePath": "exact candidate file path from the provided list",
198
+ "modifiedContent": "full new file contents",
199
+ "reason": "brief reason for this edit"
200
+ }
201
+ ]
202
+ }
203
+
204
+ Rules:
205
+ - Only modify files from the provided candidate file list.
206
+ - Preserve formatting and unrelated code.
207
+ - Return full file contents for each changed file, not patches.
208
+ - If no safe automated proposal can be made, return an empty changes array and explain why in summary.
209
+ - Do not include markdown fences or any text outside the JSON object.`;
210
+ }
211
+ parseProposalResponse(text) {
212
+ const trimmed = text.trim();
213
+ const fencedMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
214
+ const jsonText = fencedMatch?.[1]?.trim() ?? this.extractJsonObject(trimmed);
215
+ return JSON.parse(jsonText);
216
+ }
217
+ extractJsonObject(text) {
218
+ const firstBrace = text.indexOf('{');
219
+ const lastBrace = text.lastIndexOf('}');
220
+ if (firstBrace === -1 || lastBrace === -1 || lastBrace <= firstBrace) {
221
+ throw new Error('AI response did not contain valid JSON');
222
+ }
223
+ return text.slice(firstBrace, lastBrace + 1);
224
+ }
225
+ }
226
+ //# sourceMappingURL=ai-assisted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-assisted.js","sourceRoot":"","sources":["../../../src/execution/executors/ai-assisted.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
3
+ /**
4
+ * Executor for fully automated steps (automatable === 'true').
5
+ *
6
+ * Applies pattern-based transformations from manifest entries to matching files.
7
+ * When patterns are not available on the step, returns a fallback so the caller
8
+ * can present the step as a manual action.
9
+ */
10
+ export declare class AutomatedExecutor implements IStepExecutor {
11
+ readonly automationLevel: AutomationLevel;
12
+ prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
13
+ apply(prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
14
+ }
15
+ //# sourceMappingURL=automated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automated.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/automated.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAU;IAE7C,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBtE,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAIpF"}
@@ -0,0 +1,37 @@
1
+ import { applyPatterns, applyFileChanges } from '../file-transformer.js';
2
+ /**
3
+ * Executor for fully automated steps (automatable === 'true').
4
+ *
5
+ * Applies pattern-based transformations from manifest entries to matching files.
6
+ * When patterns are not available on the step, returns a fallback so the caller
7
+ * can present the step as a manual action.
8
+ */
9
+ export class AutomatedExecutor {
10
+ automationLevel = 'true';
11
+ async prepare(step, projectRoot) {
12
+ const patterns = step.patterns ?? [];
13
+ const fileGlobs = step.fileGlobs ?? step.affectedFiles ?? [];
14
+ if (!patterns.length) {
15
+ return {
16
+ step,
17
+ changes: [],
18
+ totalFiles: 0,
19
+ isValid: true,
20
+ message: 'No transformation patterns defined for this step — showing as manual step.',
21
+ fallbackToManual: true,
22
+ };
23
+ }
24
+ const changes = await applyPatterns(projectRoot, patterns, fileGlobs);
25
+ return {
26
+ step,
27
+ changes,
28
+ totalFiles: changes.length,
29
+ isValid: true,
30
+ };
31
+ }
32
+ async apply(prepared, _projectRoot) {
33
+ await applyFileChanges(prepared.changes);
34
+ return prepared.changes;
35
+ }
36
+ }
37
+ //# sourceMappingURL=automated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automated.js","sourceRoot":"","sources":["../../../src/execution/executors/automated.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACnB,eAAe,GAAoB,MAAM,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,WAAmB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAE7D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,4EAA4E;gBACrF,gBAAgB,EAAE,IAAI;aACvB,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAyB,EAAE,YAAoB;QACzD,MAAM,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
3
+ import type { CVScanResult } from '../../discovery/scanners/cv-scanner.js';
4
+ /**
5
+ * Executor for Configuration Verifier gate steps (verification_gate type).
6
+ *
7
+ * Does not make automated changes. Provides instructions for running the CV
8
+ * manually and offers scan summary / comparison formatting for the CLI layer.
9
+ */
10
+ export declare class CVGateExecutor implements IStepExecutor {
11
+ readonly automationLevel: AutomationLevel;
12
+ prepare(step: PlanStep, _projectRoot: string): Promise<PreparedChanges>;
13
+ apply(_prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
14
+ /**
15
+ * Format a human-readable summary of a CV scan result.
16
+ */
17
+ formatScanSummary(result: CVScanResult): string;
18
+ /**
19
+ * Format a before/after comparison of two CV scan results.
20
+ */
21
+ formatComparison(preResult: CVScanResult, postResult: CVScanResult): string;
22
+ }
23
+ //# sourceMappingURL=cv-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-gate.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/cv-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAI3E;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAW;IAEpD,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBvE,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI9E;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAgB/C;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,GAAG,MAAM;CAc5E"}
@@ -0,0 +1,63 @@
1
+ const CV_COMMAND = 'mvn -P cargo.run,verify-configuration -Drepo.path=./storage';
2
+ /**
3
+ * Executor for Configuration Verifier gate steps (verification_gate type).
4
+ *
5
+ * Does not make automated changes. Provides instructions for running the CV
6
+ * manually and offers scan summary / comparison formatting for the CLI layer.
7
+ */
8
+ export class CVGateExecutor {
9
+ automationLevel = 'false';
10
+ prepare(step, _projectRoot) {
11
+ const isPreCheck = step.entryId === 'cv-pre-check';
12
+ const message = isPreCheck
13
+ ? `Run the Configuration Verifier to establish a pre-upgrade baseline.\n\n` +
14
+ ` ${CV_COMMAND}\n\n` +
15
+ `This starts the CMS and compares bootstrap config against the repository.\n` +
16
+ `Output will be written to configuration-verifier-output/.`
17
+ : `Run the Configuration Verifier again to validate the upgrade.\n\n` +
18
+ ` ${CV_COMMAND}\n\n` +
19
+ `Compare against the pre-upgrade baseline to verify no new drift was introduced.`;
20
+ return Promise.resolve({
21
+ step,
22
+ changes: [],
23
+ totalFiles: 0,
24
+ isValid: true,
25
+ message,
26
+ });
27
+ }
28
+ apply(_prepared, _projectRoot) {
29
+ return Promise.resolve([]);
30
+ }
31
+ /**
32
+ * Format a human-readable summary of a CV scan result.
33
+ */
34
+ formatScanSummary(result) {
35
+ if (!result.found) {
36
+ return 'No Configuration Verifier output found in ' + result.outputPath;
37
+ }
38
+ const lines = [
39
+ `Found ${result.totalDeltas} delta(s) across ${result.sourceFiles.length} file(s):`,
40
+ ];
41
+ for (const [type, count] of Object.entries(result.deltaCounts)) {
42
+ lines.push(` ${type}: ${count}`);
43
+ }
44
+ return lines.join('\n');
45
+ }
46
+ /**
47
+ * Format a before/after comparison of two CV scan results.
48
+ */
49
+ formatComparison(preResult, postResult) {
50
+ const diff = preResult.totalDeltas - postResult.totalDeltas;
51
+ const lines = [
52
+ `Before: ${preResult.totalDeltas} delta(s) — After: ${postResult.totalDeltas} delta(s)`,
53
+ ];
54
+ if (diff > 0) {
55
+ lines.push(`${diff} resolved by upgrade`);
56
+ }
57
+ else if (diff < 0) {
58
+ lines.push(`${Math.abs(diff)} new delta(s) introduced — review required`);
59
+ }
60
+ return lines.join('\n');
61
+ }
62
+ }
63
+ //# sourceMappingURL=cv-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cv-gate.js","sourceRoot":"","sources":["../../../src/execution/executors/cv-gate.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,GAAG,6DAA6D,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,eAAe,GAAoB,OAAO,CAAC;IAEpD,OAAO,CAAC,IAAc,EAAE,YAAoB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,cAAc,CAAC;QAEnD,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,yEAAyE;gBACzE,KAAK,UAAU,MAAM;gBACrB,6EAA6E;gBAC7E,2DAA2D;YAC7D,CAAC,CAAC,mEAAmE;gBACnE,KAAK,UAAU,MAAM;gBACrB,iFAAiF,CAAC;QAEtF,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,IAAI;YACJ,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAA0B,EAAE,YAAoB;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAoB;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,4CAA4C,GAAG,MAAM,CAAC,UAAU,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,SAAS,MAAM,CAAC,WAAW,oBAAoB,MAAM,CAAC,WAAW,CAAC,MAAM,WAAW;SACpF,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,SAAuB,EAAE,UAAwB;QAChE,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC5D,MAAM,KAAK,GAAa;YACtB,WAAW,SAAS,CAAC,WAAW,wBAAwB,UAAU,CAAC,WAAW,WAAW;SAC1F,CAAC;QAEF,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export { AutomatedExecutor } from './automated.js';
2
+ export { AIAssistedExecutor } from './ai-assisted.js';
3
+ export { ManualExecutor } from './manual.js';
4
+ export { VersionBumpExecutor } from './version-bump.js';
5
+ export { CVGateExecutor } from './cv-gate.js';
6
+ export { OverrideResolutionExecutor } from './override-resolution.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { AutomatedExecutor } from './automated.js';
2
+ export { AIAssistedExecutor } from './ai-assisted.js';
3
+ export { ManualExecutor } from './manual.js';
4
+ export { VersionBumpExecutor } from './version-bump.js';
5
+ export { CVGateExecutor } from './cv-gate.js';
6
+ export { OverrideResolutionExecutor } from './override-resolution.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/executors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
3
+ /**
4
+ * Executor for manual steps (automatable === 'false').
5
+ *
6
+ * Does not make automated changes but validates that manual steps are
7
+ * available and provides guidance to the user.
8
+ */
9
+ export declare class ManualExecutor implements IStepExecutor {
10
+ readonly automationLevel: AutomationLevel;
11
+ prepare(step: PlanStep, _projectRoot: string): Promise<PreparedChanges>;
12
+ apply(_prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
13
+ generateChecklist(step: PlanStep): {
14
+ step: string;
15
+ completed: boolean;
16
+ }[];
17
+ }
18
+ //# sourceMappingURL=manual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9E;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAW;IAEpD,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAkBvE,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI9E,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,EAAE;CAI1E"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Executor for manual steps (automatable === 'false').
3
+ *
4
+ * Does not make automated changes but validates that manual steps are
5
+ * available and provides guidance to the user.
6
+ */
7
+ export class ManualExecutor {
8
+ automationLevel = 'false';
9
+ prepare(step, _projectRoot) {
10
+ const validationErrors = [];
11
+ if (!step.manualSteps || step.manualSteps.length === 0) {
12
+ validationErrors.push('No manual steps provided for this entry. Please check the manifest.');
13
+ }
14
+ return Promise.resolve({
15
+ step,
16
+ changes: [],
17
+ totalFiles: step.affectedFileCount,
18
+ isValid: validationErrors.length === 0,
19
+ validationErrors: validationErrors.length > 0 ? validationErrors : undefined,
20
+ });
21
+ }
22
+ apply(_prepared, _projectRoot) {
23
+ return Promise.resolve([]);
24
+ }
25
+ generateChecklist(step) {
26
+ if (!step.manualSteps)
27
+ return [];
28
+ return step.manualSteps.map((s) => ({ step: s, completed: false }));
29
+ }
30
+ }
31
+ //# sourceMappingURL=manual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../src/execution/executors/manual.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,eAAe,GAAoB,OAAO,CAAC;IAEpD,OAAO,CAAC,IAAc,EAAE,YAAoB;QAC1C,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,gBAAgB,CAAC,IAAI,CACnB,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,IAAI;YACJ,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,iBAAiB;YAClC,OAAO,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;YACtC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAA0B,EAAE,YAAoB;QACpD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,iBAAiB,CAAC,IAAc;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
3
+ /**
4
+ * Executor that removes conflicting and redundant version override properties from POM files.
5
+ *
6
+ * Reads the `manualSteps` on the step to determine which properties to remove.
7
+ * Each manual step has the format `<property.name>: <action description>`, where
8
+ * the action description starts with "Remove" for overrides that should be deleted.
9
+ */
10
+ export declare class OverrideResolutionExecutor implements IStepExecutor {
11
+ readonly automationLevel: AutomationLevel;
12
+ prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
13
+ apply(prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
14
+ /**
15
+ * Extract property names from the step's manualSteps entries.
16
+ *
17
+ * Each entry is expected to have the format `<property.name>: <action>`.
18
+ * Only entries whose action starts with "Remove" are included, as those
19
+ * are the properties that should be deleted from the POM.
20
+ *
21
+ * Example entries:
22
+ * `spring.version: Remove — conflicts with brXM 16.7.0 managed value 5.3.31`
23
+ * `essentials.version: Remove — redundant, brXM 16.7.0 manages the same value`
24
+ */
25
+ private extractPropertyNames;
26
+ }
27
+ //# sourceMappingURL=override-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override-resolution.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/override-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,0BAA2B,YAAW,aAAa;IAC9D,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAU;IAE7C,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6CtE,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOnF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;CAW7B"}
@@ -0,0 +1,79 @@
1
+ import { readTextFile, writeTextFile, joinPaths } from '../../utils/fs.js';
2
+ /**
3
+ * Executor that removes conflicting and redundant version override properties from POM files.
4
+ *
5
+ * Reads the `manualSteps` on the step to determine which properties to remove.
6
+ * Each manual step has the format `<property.name>: <action description>`, where
7
+ * the action description starts with "Remove" for overrides that should be deleted.
8
+ */
9
+ export class OverrideResolutionExecutor {
10
+ automationLevel = 'true';
11
+ async prepare(step, projectRoot) {
12
+ const propertyNames = this.extractPropertyNames(step.manualSteps ?? []);
13
+ if (propertyNames.length === 0) {
14
+ return {
15
+ step,
16
+ changes: [],
17
+ totalFiles: 0,
18
+ isValid: true,
19
+ message: 'No properties to remove.',
20
+ fallbackToManual: true,
21
+ };
22
+ }
23
+ const changes = [];
24
+ for (const pomRelPath of step.affectedFiles) {
25
+ const pomPath = joinPaths(projectRoot, pomRelPath);
26
+ const originalContent = await readTextFile(pomPath);
27
+ let modifiedContent = originalContent;
28
+ for (const prop of propertyNames) {
29
+ // Remove the property element and its leading whitespace/newline
30
+ const escapedProp = prop.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
31
+ const pattern = new RegExp(`\\n\\s*<${escapedProp}>[^<]*</${escapedProp}>`, 'g');
32
+ modifiedContent = modifiedContent.replace(pattern, '');
33
+ }
34
+ if (modifiedContent !== originalContent) {
35
+ changes.push({
36
+ filePath: pomPath,
37
+ originalContent,
38
+ modifiedContent,
39
+ isNew: false,
40
+ });
41
+ }
42
+ }
43
+ return {
44
+ step,
45
+ changes,
46
+ totalFiles: changes.length,
47
+ isValid: true,
48
+ };
49
+ }
50
+ async apply(prepared, _projectRoot) {
51
+ for (const change of prepared.changes) {
52
+ await writeTextFile(change.filePath, change.modifiedContent);
53
+ }
54
+ return prepared.changes;
55
+ }
56
+ /**
57
+ * Extract property names from the step's manualSteps entries.
58
+ *
59
+ * Each entry is expected to have the format `<property.name>: <action>`.
60
+ * Only entries whose action starts with "Remove" are included, as those
61
+ * are the properties that should be deleted from the POM.
62
+ *
63
+ * Example entries:
64
+ * `spring.version: Remove — conflicts with brXM 16.7.0 managed value 5.3.31`
65
+ * `essentials.version: Remove — redundant, brXM 16.7.0 manages the same value`
66
+ */
67
+ extractPropertyNames(manualSteps) {
68
+ const names = [];
69
+ for (const step of manualSteps) {
70
+ // Match "property.name: Remove ..." — the colon separates name from action
71
+ const match = /^([a-zA-Z0-9._-]+):\s*Remove\b/.exec(step);
72
+ if (match) {
73
+ names.push(match[1]);
74
+ }
75
+ }
76
+ return names;
77
+ }
78
+ }
79
+ //# sourceMappingURL=override-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override-resolution.js","sourceRoot":"","sources":["../../../src/execution/executors/override-resolution.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IAC5B,eAAe,GAAoB,MAAM,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,WAAmB;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAExE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,0BAA0B;gBACnC,gBAAgB,EAAE,IAAI;aACvB,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,eAAe,GAAG,eAAe,CAAC;YAEtC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,iEAAiE;gBACjE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,WAAW,WAAW,WAAW,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjF,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC;oBACX,QAAQ,EAAE,OAAO;oBACjB,eAAe;oBACf,eAAe;oBACf,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAyB,EAAE,YAAoB;QACzD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;OAUG;IACK,oBAAoB,CAAC,WAAqB;QAChD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,2EAA2E;YAC3E,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
3
+ /**
4
+ * Well-known Maven properties in brXM projects whose value tracks the
5
+ * brXM parent version. When the parent version is bumped these properties
6
+ * must be updated to match.
7
+ */
8
+ export declare const KNOWN_VERSION_PROPERTIES: readonly string[];
9
+ /**
10
+ * Executor for the synthetic version-bump step.
11
+ *
12
+ * Replaces the brXM parent version inside the root pom.xml's <parent> block
13
+ * and updates any well-known Maven properties that track the parent version.
14
+ */
15
+ export declare class VersionBumpExecutor implements IStepExecutor {
16
+ readonly automationLevel: AutomationLevel;
17
+ prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
18
+ apply(prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
19
+ }
20
+ //# sourceMappingURL=version-bump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-bump.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/version-bump.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAErD,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAU;IAE7C,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDtE,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAMpF"}