@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,65 @@
1
+ import { joinPaths, readTextFile, writeTextFile } from '../../utils/fs.js';
2
+ /**
3
+ * Well-known Maven properties in brXM projects whose value tracks the
4
+ * brXM parent version. When the parent version is bumped these properties
5
+ * must be updated to match.
6
+ */
7
+ export const KNOWN_VERSION_PROPERTIES = [
8
+ 'essentials.version',
9
+ ];
10
+ /**
11
+ * Executor for the synthetic version-bump step.
12
+ *
13
+ * Replaces the brXM parent version inside the root pom.xml's <parent> block
14
+ * and updates any well-known Maven properties that track the parent version.
15
+ */
16
+ export class VersionBumpExecutor {
17
+ automationLevel = 'true';
18
+ async prepare(step, projectRoot) {
19
+ const toVersion = step.toVersion;
20
+ const fromVersion = step.fromVersion;
21
+ if (!toVersion || !fromVersion) {
22
+ return {
23
+ step,
24
+ changes: [],
25
+ totalFiles: 0,
26
+ isValid: false,
27
+ validationErrors: ['Version bump step is missing toVersion or fromVersion'],
28
+ };
29
+ }
30
+ const pomPath = joinPaths(projectRoot, 'pom.xml');
31
+ const originalContent = await readTextFile(pomPath);
32
+ // Replace the <version> tag inside the <parent> block only.
33
+ let modifiedContent = originalContent.replace(/(<parent>[\s\S]*?<version>)[^<]+(<\/version>[\s\S]*?<\/parent>)/, `$1${toVersion}$2`);
34
+ if (modifiedContent === originalContent) {
35
+ return {
36
+ step,
37
+ changes: [],
38
+ totalFiles: 0,
39
+ isValid: false,
40
+ validationErrors: [
41
+ `Could not locate parent version in pom.xml — has it already been updated?`,
42
+ ],
43
+ };
44
+ }
45
+ // Update well-known Maven properties that track the brXM parent version.
46
+ for (const property of KNOWN_VERSION_PROPERTIES) {
47
+ const escapedName = property.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
48
+ const pattern = new RegExp(`(<${escapedName}>)${fromVersion.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(</${escapedName}>)`, 'g');
49
+ modifiedContent = modifiedContent.replace(pattern, `$1${toVersion}$2`);
50
+ }
51
+ return {
52
+ step,
53
+ changes: [{ filePath: pomPath, originalContent, modifiedContent, isNew: false }],
54
+ totalFiles: 1,
55
+ isValid: true,
56
+ };
57
+ }
58
+ async apply(prepared, _projectRoot) {
59
+ for (const change of prepared.changes) {
60
+ await writeTextFile(change.filePath, change.modifiedContent);
61
+ }
62
+ return prepared.changes;
63
+ }
64
+ }
65
+ //# sourceMappingURL=version-bump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-bump.js","sourceRoot":"","sources":["../../../src/execution/executors/version-bump.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,oBAAoB;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACrB,eAAe,GAAoB,MAAM,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,WAAmB;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,CAAC,uDAAuD,CAAC;aAC5E,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAEpD,4DAA4D;QAC5D,IAAI,eAAe,GAAG,eAAe,CAAC,OAAO,CAC3C,iEAAiE,EACjE,KAAK,SAAS,IAAI,CACnB,CAAC;QAEF,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;YACxC,OAAO;gBACL,IAAI;gBACJ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE;oBAChB,2EAA2E;iBAC5E;aACF,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,KAAK,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,WAAW,IAAI,EAC5F,GAAG,CACJ,CAAC;YACF,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAChF,UAAU,EAAE,CAAC;YACb,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;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { TransformPattern } from '../planning/types.js';
2
+ import type { FileChange } from './types.js';
3
+ /**
4
+ * Result of applying patterns to content.
5
+ */
6
+ export interface TransformResult {
7
+ original: string;
8
+ modified: string;
9
+ hasChanges: boolean;
10
+ matchCount: number;
11
+ matchedPatterns: string[];
12
+ }
13
+ /**
14
+ * Apply transformation patterns to a content string.
15
+ */
16
+ export declare function applyPatternsToContent(content: string, patterns: TransformPattern[]): TransformResult;
17
+ /**
18
+ * Apply patterns to files matching globs in the project.
19
+ */
20
+ export declare function applyPatterns(projectRoot: string, patterns: TransformPattern[], fileGlobs: string[]): Promise<FileChange[]>;
21
+ /**
22
+ * Apply file changes to the filesystem.
23
+ */
24
+ export declare function applyFileChanges(changes: FileChange[]): Promise<string[]>;
25
+ //# sourceMappingURL=file-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-transformer.d.ts","sourceRoot":"","sources":["../../src/execution/file-transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,eAAe,CA8BjB;AAMD;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,UAAU,EAAE,CAAC,CAwBvB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAO/E"}
@@ -0,0 +1,74 @@
1
+ import { readTextFile, findFiles, pathExists, writeTextFile } from '../utils/fs.js';
2
+ /**
3
+ * Apply transformation patterns to a content string.
4
+ */
5
+ export function applyPatternsToContent(content, patterns) {
6
+ let modified = content;
7
+ let totalMatchCount = 0;
8
+ const matchedPatterns = [];
9
+ for (const pattern of patterns) {
10
+ let regex;
11
+ try {
12
+ regex = pattern.isRegex
13
+ ? new RegExp(pattern.match, 'g')
14
+ : new RegExp(escapeRegex(pattern.match), 'g');
15
+ }
16
+ catch {
17
+ throw new Error(`Invalid regex pattern in manifest: "${pattern.match}"`);
18
+ }
19
+ const matches = modified.match(regex);
20
+ if (matches && matches.length > 0) {
21
+ totalMatchCount += matches.length;
22
+ matchedPatterns.push(pattern.match);
23
+ modified = modified.replace(regex, pattern.replace);
24
+ }
25
+ }
26
+ return {
27
+ original: content,
28
+ modified,
29
+ hasChanges: modified !== content,
30
+ matchCount: totalMatchCount,
31
+ matchedPatterns,
32
+ };
33
+ }
34
+ function escapeRegex(str) {
35
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
36
+ }
37
+ /**
38
+ * Apply patterns to files matching globs in the project.
39
+ */
40
+ export async function applyPatterns(projectRoot, patterns, fileGlobs) {
41
+ const changes = [];
42
+ const allFiles = new Set();
43
+ for (const pattern of fileGlobs) {
44
+ const matches = await findFiles(pattern, projectRoot);
45
+ matches.forEach((f) => allFiles.add(f));
46
+ }
47
+ for (const filePath of Array.from(allFiles)) {
48
+ if (!(await pathExists(filePath)))
49
+ continue;
50
+ const originalContent = await readTextFile(filePath);
51
+ const result = applyPatternsToContent(originalContent, patterns);
52
+ if (result.hasChanges) {
53
+ changes.push({
54
+ filePath,
55
+ originalContent,
56
+ modifiedContent: result.modified,
57
+ isNew: false,
58
+ });
59
+ }
60
+ }
61
+ return changes;
62
+ }
63
+ /**
64
+ * Apply file changes to the filesystem.
65
+ */
66
+ export async function applyFileChanges(changes) {
67
+ const modifiedFiles = [];
68
+ for (const change of changes) {
69
+ await writeTextFile(change.filePath, change.modifiedContent);
70
+ modifiedFiles.push(change.filePath);
71
+ }
72
+ return modifiedFiles;
73
+ }
74
+ //# sourceMappingURL=file-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-transformer.js","sourceRoot":"","sources":["../../src/execution/file-transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type { StepDecision, StepExecutionResult, FileChange, PreparedChanges, ExecutionState, ExecuteOptions, ExecutionProgress, ProgressCallback, IStepExecutor, } from './types.js';
2
+ export { AutomatedExecutor, AIAssistedExecutor, ManualExecutor, } from './executors/index.js';
3
+ export { StepExecutor } from './step-executor.js';
4
+ export { StateManager } from './state-manager.js';
5
+ export { DiffPresenter } from './diff-presenter.js';
6
+ export { applyPatternsToContent, applyPatterns, applyFileChanges, type TransformResult, } from './file-transformer.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Executors
2
+ export { AutomatedExecutor, AIAssistedExecutor, ManualExecutor, } from './executors/index.js';
3
+ // Core components
4
+ export { StepExecutor } from './step-executor.js';
5
+ export { StateManager } from './state-manager.js';
6
+ export { DiffPresenter } from './diff-presenter.js';
7
+ // File transformation
8
+ export { applyPatternsToContent, applyPatterns, applyFileChanges, } from './file-transformer.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAaA,YAAY;AACZ,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { ExecutionState } from './types.js';
2
+ /**
3
+ * Persists execution state to disk so an interrupted run can be resumed.
4
+ *
5
+ * Git serves as the rollback mechanism; this class only tracks which steps
6
+ * have been completed so the `--resume` flag works correctly.
7
+ */
8
+ export declare class StateManager {
9
+ private readonly stateDir;
10
+ private readonly stateFile;
11
+ constructor(projectRoot: string);
12
+ /**
13
+ * Persist execution state to disk so a run can be resumed later.
14
+ */
15
+ saveState(state: ExecutionState): Promise<void>;
16
+ /**
17
+ * Load previously persisted execution state.
18
+ *
19
+ * @returns The saved state, or null if no state file exists
20
+ */
21
+ loadState(): Promise<ExecutionState | null>;
22
+ /**
23
+ * Clear persisted state on completion.
24
+ */
25
+ clearState(): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/execution/state-manager.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAcjD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAKlC"}
@@ -0,0 +1,48 @@
1
+ import { pathExists, readTextFile, writeTextFile, ensureDir, removeDir, joinPaths, } from '../utils/fs.js';
2
+ /**
3
+ * Persists execution state to disk so an interrupted run can be resumed.
4
+ *
5
+ * Git serves as the rollback mechanism; this class only tracks which steps
6
+ * have been completed so the `--resume` flag works correctly.
7
+ */
8
+ export class StateManager {
9
+ stateDir;
10
+ stateFile;
11
+ constructor(projectRoot) {
12
+ this.stateDir = joinPaths(projectRoot, '.brxm-upgrade');
13
+ this.stateFile = joinPaths(this.stateDir, 'execution-state.json');
14
+ }
15
+ /**
16
+ * Persist execution state to disk so a run can be resumed later.
17
+ */
18
+ async saveState(state) {
19
+ await ensureDir(this.stateDir);
20
+ await writeTextFile(this.stateFile, JSON.stringify(state, null, 2));
21
+ }
22
+ /**
23
+ * Load previously persisted execution state.
24
+ *
25
+ * @returns The saved state, or null if no state file exists
26
+ */
27
+ async loadState() {
28
+ if (!(await pathExists(this.stateFile))) {
29
+ return null;
30
+ }
31
+ try {
32
+ const content = await readTextFile(this.stateFile);
33
+ return JSON.parse(content);
34
+ }
35
+ catch {
36
+ throw new Error(`Failed to read execution state from ${this.stateFile}. Remove the file and retry the run.`);
37
+ }
38
+ }
39
+ /**
40
+ * Clear persisted state on completion.
41
+ */
42
+ async clearState() {
43
+ if (await pathExists(this.stateFile)) {
44
+ await removeDir(this.stateFile);
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=state-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/execution/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,gBAAgB,CAAC;AAGxB;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,CAAS;IACjB,SAAS,CAAS;IAEnC,YAAY,WAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,KAAqB;QACnC,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,uCAAuC,IAAI,CAAC,SAAS,sCAAsC,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,68 @@
1
+ import type { PlanStep } from '../planning/types.js';
2
+ import type { AIClient } from '../ai/types.js';
3
+ import type { ExecuteOptions, StepExecutionResult, IStepExecutor, ProgressCallback } from './types.js';
4
+ /**
5
+ * Main orchestrator that coordinates step execution for the upgrade plan.
6
+ *
7
+ * The StepExecutor loads the upgrade plan, selects the appropriate executor
8
+ * for each step (automated, AI-assisted, or manual), persists execution state,
9
+ * and presents diffs for user approval.
10
+ */
11
+ export declare class StepExecutor {
12
+ private readonly projectRoot;
13
+ private readonly stateManager;
14
+ private readonly diffPresenter;
15
+ private readonly automatedExecutor;
16
+ private readonly aiAssistedExecutor;
17
+ private readonly manualExecutor;
18
+ private readonly versionBumpExecutor;
19
+ private readonly cvGateExecutor;
20
+ private readonly overrideResolutionExecutor;
21
+ constructor(projectRoot: string, aiClient: AIClient);
22
+ /**
23
+ * Execute the upgrade plan, processing each step in order.
24
+ *
25
+ * Loads the plan from disk, restores any prior execution state (for resume
26
+ * support), and iterates through the steps. Each step result is recorded
27
+ * and the execution state is persisted after every step.
28
+ *
29
+ * @param options - Execution options (dry-run, non-interactive, etc.)
30
+ * @param onProgress - Optional callback invoked before each step
31
+ * @returns Array of results for every step that was processed
32
+ */
33
+ execute(options: ExecuteOptions, onProgress?: ProgressCallback): Promise<StepExecutionResult[]>;
34
+ /**
35
+ * Execute a single step: prepare changes, present them for review, and
36
+ * optionally apply them.
37
+ *
38
+ * @param step - The plan step to execute
39
+ * @param totalSteps - Total number of steps (for display)
40
+ * @param options - Execution options
41
+ * @returns The execution result for this step
42
+ */
43
+ executeStep(step: PlanStep, totalSteps: number, options: ExecuteOptions): Promise<StepExecutionResult>;
44
+ /**
45
+ * Select the appropriate executor based on the step's automation level.
46
+ * When `skipAI` is enabled, AI-assisted steps fall back to the manual executor.
47
+ *
48
+ * @param step - The plan step to get an executor for
49
+ * @param options - Execution options (optional, used for skipAI check)
50
+ * @returns The matching executor instance
51
+ */
52
+ getExecutorForStep(step: PlanStep, options?: ExecuteOptions): IStepExecutor;
53
+ /**
54
+ * Apply prepared changes by delegating to the executor to write the files.
55
+ */
56
+ private applyChanges;
57
+ /**
58
+ * Load and parse the upgrade plan from a JSON file.
59
+ *
60
+ * @throws Error if the plan file does not exist
61
+ */
62
+ private loadPlanFromFile;
63
+ /**
64
+ * Create a fresh execution state for a new plan run.
65
+ */
66
+ private createInitialState;
67
+ }
68
+ //# sourceMappingURL=step-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-executor.d.ts","sourceRoot":"","sources":["../../src/execution/step-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,cAAc,EAEd,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AASpB;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;gBAE5D,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAYnD;;;;;;;;;;OAUG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAkErG;;;;;;;;OAQG;IACG,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+D5G;;;;;;;OAOG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa;IAkB3E;;OAEG;YACW,YAAY;IAkB1B;;;;OAIG;YACW,gBAAgB;IAQ9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAc3B"}
@@ -0,0 +1,243 @@
1
+ import { AutomatedExecutor, AIAssistedExecutor, ManualExecutor, VersionBumpExecutor, CVGateExecutor, OverrideResolutionExecutor } from './executors/index.js';
2
+ import { StateManager } from './state-manager.js';
3
+ import { DiffPresenter } from './diff-presenter.js';
4
+ import { readTextFile, pathExists, joinPaths } from '../utils/fs.js';
5
+ import { createLogger } from '../utils/logger.js';
6
+ const logger = createLogger({ prefix: 'StepExecutor' });
7
+ /**
8
+ * Main orchestrator that coordinates step execution for the upgrade plan.
9
+ *
10
+ * The StepExecutor loads the upgrade plan, selects the appropriate executor
11
+ * for each step (automated, AI-assisted, or manual), persists execution state,
12
+ * and presents diffs for user approval.
13
+ */
14
+ export class StepExecutor {
15
+ projectRoot;
16
+ stateManager;
17
+ diffPresenter;
18
+ automatedExecutor;
19
+ aiAssistedExecutor;
20
+ manualExecutor;
21
+ versionBumpExecutor;
22
+ cvGateExecutor;
23
+ overrideResolutionExecutor;
24
+ constructor(projectRoot, aiClient) {
25
+ this.projectRoot = projectRoot;
26
+ this.stateManager = new StateManager(projectRoot);
27
+ this.diffPresenter = new DiffPresenter();
28
+ this.automatedExecutor = new AutomatedExecutor();
29
+ this.aiAssistedExecutor = new AIAssistedExecutor(aiClient);
30
+ this.manualExecutor = new ManualExecutor();
31
+ this.versionBumpExecutor = new VersionBumpExecutor();
32
+ this.cvGateExecutor = new CVGateExecutor();
33
+ this.overrideResolutionExecutor = new OverrideResolutionExecutor();
34
+ }
35
+ /**
36
+ * Execute the upgrade plan, processing each step in order.
37
+ *
38
+ * Loads the plan from disk, restores any prior execution state (for resume
39
+ * support), and iterates through the steps. Each step result is recorded
40
+ * and the execution state is persisted after every step.
41
+ *
42
+ * @param options - Execution options (dry-run, non-interactive, etc.)
43
+ * @param onProgress - Optional callback invoked before each step
44
+ * @returns Array of results for every step that was processed
45
+ */
46
+ async execute(options, onProgress) {
47
+ const planPath = options.planPath ?? joinPaths(this.projectRoot, '.brxm-upgrade', 'plan.json');
48
+ const plan = await this.loadPlanFromFile(planPath);
49
+ let state = await this.stateManager.loadState();
50
+ if (!state || state.planGeneratedAt !== plan.generatedAt) {
51
+ state = this.createInitialState(planPath, plan);
52
+ }
53
+ const processedSteps = new Set([...state.completedSteps, ...state.skippedSteps]);
54
+ const nextStep = plan.steps.find((current) => !processedSteps.has(current.stepNumber))?.stepNumber ??
55
+ plan.steps.length + 1;
56
+ const startStep = options.resumeFromStep ?? nextStep;
57
+ const results = [];
58
+ for (let i = startStep - 1; i < plan.steps.length; i++) {
59
+ const step = plan.steps[i];
60
+ state.currentStep = step.stepNumber;
61
+ onProgress?.({
62
+ currentStep: step.stepNumber,
63
+ totalSteps: plan.steps.length,
64
+ currentDescription: step.description,
65
+ phase: 'preparing',
66
+ percentComplete: Math.round(((step.stepNumber - 1) / plan.steps.length) * 100),
67
+ });
68
+ const result = await this.executeStep(step, plan.steps.length, options);
69
+ results.push(result);
70
+ if (result.success) {
71
+ if (result.decision === 'accept') {
72
+ if (!state.completedSteps.includes(step.stepNumber)) {
73
+ state.completedSteps.push(step.stepNumber);
74
+ }
75
+ }
76
+ else if (result.decision === 'skip') {
77
+ if (!state.skippedSteps.includes(step.stepNumber)) {
78
+ state.skippedSteps.push(step.stepNumber);
79
+ }
80
+ }
81
+ state.currentStep = step.stepNumber + 1;
82
+ }
83
+ else {
84
+ if (!state.failedSteps.includes(step.stepNumber)) {
85
+ state.failedSteps.push(step.stepNumber);
86
+ }
87
+ state.currentStep = step.stepNumber;
88
+ }
89
+ state.updatedAt = new Date().toISOString();
90
+ await this.stateManager.saveState(state);
91
+ if (!result.success && result.decision !== 'skip') {
92
+ logger.error(`Step ${step.stepNumber} failed: ${result.error}`);
93
+ break;
94
+ }
95
+ }
96
+ if (new Set([...state.completedSteps, ...state.skippedSteps]).size === plan.steps.length) {
97
+ state.isComplete = true;
98
+ await this.stateManager.saveState(state);
99
+ }
100
+ return results;
101
+ }
102
+ /**
103
+ * Execute a single step: prepare changes, present them for review, and
104
+ * optionally apply them.
105
+ *
106
+ * @param step - The plan step to execute
107
+ * @param totalSteps - Total number of steps (for display)
108
+ * @param options - Execution options
109
+ * @returns The execution result for this step
110
+ */
111
+ async executeStep(step, totalSteps, options) {
112
+ const startTime = Date.now();
113
+ try {
114
+ if (!options.nonInteractive) {
115
+ console.log(this.diffPresenter.formatStepHeader(step, totalSteps));
116
+ }
117
+ const executor = this.getExecutorForStep(step, options);
118
+ const prepared = await executor.prepare(step, this.projectRoot);
119
+ if (!prepared.isValid) {
120
+ return {
121
+ stepNumber: step.stepNumber,
122
+ entryId: step.entryId,
123
+ success: false,
124
+ decision: 'reject',
125
+ modifiedFiles: [],
126
+ modifiedFileCount: 0,
127
+ error: prepared.validationErrors?.join(', '),
128
+ duration: Date.now() - startTime,
129
+ };
130
+ }
131
+ let decision;
132
+ if (options.dryRun) {
133
+ this.diffPresenter.showFullDiff(prepared);
134
+ decision = 'skip';
135
+ }
136
+ else if (options.nonInteractive) {
137
+ decision = options.autoAcceptAutomated && step.automatable === 'true' ? 'accept' : 'skip';
138
+ }
139
+ else if (step.automatable === 'false') {
140
+ decision = await this.diffPresenter.presentManualStep(step);
141
+ }
142
+ else {
143
+ decision = await this.diffPresenter.presentChanges(prepared);
144
+ }
145
+ if (decision === 'accept') {
146
+ return await this.applyChanges(step, prepared, executor, startTime);
147
+ }
148
+ else {
149
+ return {
150
+ stepNumber: step.stepNumber,
151
+ entryId: step.entryId,
152
+ success: true,
153
+ decision,
154
+ modifiedFiles: [],
155
+ modifiedFileCount: 0,
156
+ duration: Date.now() - startTime,
157
+ };
158
+ }
159
+ }
160
+ catch (error) {
161
+ return {
162
+ stepNumber: step.stepNumber,
163
+ entryId: step.entryId,
164
+ success: false,
165
+ decision: 'reject',
166
+ modifiedFiles: [],
167
+ modifiedFileCount: 0,
168
+ error: error instanceof Error ? error.message : 'Unknown error',
169
+ duration: Date.now() - startTime,
170
+ };
171
+ }
172
+ }
173
+ /**
174
+ * Select the appropriate executor based on the step's automation level.
175
+ * When `skipAI` is enabled, AI-assisted steps fall back to the manual executor.
176
+ *
177
+ * @param step - The plan step to get an executor for
178
+ * @param options - Execution options (optional, used for skipAI check)
179
+ * @returns The matching executor instance
180
+ */
181
+ getExecutorForStep(step, options) {
182
+ if (step.type === 'verification_gate') {
183
+ return this.cvGateExecutor;
184
+ }
185
+ if (step.type === 'override_resolution') {
186
+ return this.overrideResolutionExecutor;
187
+ }
188
+ if (step.type === 'version_bump') {
189
+ return this.versionBumpExecutor;
190
+ }
191
+ switch (step.automatable) {
192
+ case 'true': return this.automatedExecutor;
193
+ case 'partial': return options?.skipAI ? this.manualExecutor : this.aiAssistedExecutor;
194
+ case 'false': return this.manualExecutor;
195
+ default: return this.manualExecutor;
196
+ }
197
+ }
198
+ /**
199
+ * Apply prepared changes by delegating to the executor to write the files.
200
+ */
201
+ async applyChanges(step, prepared, executor, startTime) {
202
+ const modifiedFiles = await executor.apply(prepared, this.projectRoot);
203
+ return {
204
+ stepNumber: step.stepNumber,
205
+ entryId: step.entryId,
206
+ success: true,
207
+ decision: 'accept',
208
+ modifiedFiles: modifiedFiles.map((f) => f.filePath),
209
+ modifiedFileCount: modifiedFiles.length,
210
+ duration: Date.now() - startTime,
211
+ };
212
+ }
213
+ /**
214
+ * Load and parse the upgrade plan from a JSON file.
215
+ *
216
+ * @throws Error if the plan file does not exist
217
+ */
218
+ async loadPlanFromFile(planPath) {
219
+ if (!(await pathExists(planPath))) {
220
+ throw new Error(`Plan file not found: ${planPath}. Run 'brxm-upgrade plan' first.`);
221
+ }
222
+ const content = await readTextFile(planPath);
223
+ return JSON.parse(content);
224
+ }
225
+ /**
226
+ * Create a fresh execution state for a new plan run.
227
+ */
228
+ createInitialState(planFile, plan) {
229
+ const now = new Date().toISOString();
230
+ return {
231
+ planFile,
232
+ planGeneratedAt: plan.generatedAt,
233
+ currentStep: 1,
234
+ completedSteps: [],
235
+ skippedSteps: [],
236
+ failedSteps: [],
237
+ startedAt: now,
238
+ updatedAt: now,
239
+ isComplete: false,
240
+ };
241
+ }
242
+ }
243
+ //# sourceMappingURL=step-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-executor.js","sourceRoot":"","sources":["../../src/execution/step-executor.ts"],"names":[],"mappings":"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"}