@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,44 @@
1
+ import type { DocsServerConfig } from '../types/index.js';
2
+ import type { DocSearchResult } from './types.js';
3
+ /**
4
+ * Thin MCP client for the brxm-docs documentation server.
5
+ * Provides semantic search and page retrieval with graceful degradation.
6
+ * When the server is unreachable, operations return empty results instead of throwing.
7
+ */
8
+ export declare class DocsClient {
9
+ private client;
10
+ private connected;
11
+ private unavailable;
12
+ private readonly config;
13
+ private readonly searchCache;
14
+ private readonly logger;
15
+ constructor(config?: Partial<DocsServerConfig>, verbose?: boolean);
16
+ /**
17
+ * Search documentation for pages relevant to the given query.
18
+ *
19
+ * @param query - Natural language search query
20
+ * @param limit - Maximum number of results to return (default: 3)
21
+ * @returns Array of search results, or empty array on failure
22
+ */
23
+ search(query: string, limit?: number): Promise<DocSearchResult[]>;
24
+ /**
25
+ * Get a summary for a specific documentation page.
26
+ *
27
+ * @param url - The documentation page URL
28
+ * @returns Summary text, or null on failure
29
+ */
30
+ getPageSummary(url: string): Promise<string | null>;
31
+ /**
32
+ * Whether dynamic (AI-initiated) searches are enabled and the server is reachable.
33
+ */
34
+ get isDynamicSearchEnabled(): boolean;
35
+ /**
36
+ * Gracefully close the MCP connection.
37
+ */
38
+ disconnect(): Promise<void>;
39
+ private ensureConnected;
40
+ private callWithTimeout;
41
+ private parseSearchResults;
42
+ private markUnavailable;
43
+ }
44
+ //# sourceMappingURL=docs-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-client.d.ts","sourceRoot":"","sources":["../../src/docs/docs-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,OAAO,UAAQ;IASnE;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+BlE;;;;;OAKG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBzD;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAYnB,eAAe;YAqBf,eAAe;IAY7B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;CAMxB"}
@@ -0,0 +1,161 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
3
+ import { createLogger } from '../utils/logger.js';
4
+ const CONNECTION_TIMEOUT_MS = 5_000;
5
+ const REQUEST_TIMEOUT_MS = 10_000;
6
+ /**
7
+ * Thin MCP client for the brxm-docs documentation server.
8
+ * Provides semantic search and page retrieval with graceful degradation.
9
+ * When the server is unreachable, operations return empty results instead of throwing.
10
+ */
11
+ export class DocsClient {
12
+ client = null;
13
+ connected = false;
14
+ unavailable = false;
15
+ config;
16
+ searchCache = new Map();
17
+ logger;
18
+ constructor(config = {}, verbose = false) {
19
+ this.config = {
20
+ url: config.url ?? 'https://brxm-docs.bloomreach.works/mcp',
21
+ enabled: config.enabled ?? true,
22
+ dynamicSearch: config.dynamicSearch ?? true,
23
+ };
24
+ this.logger = createLogger({ prefix: 'docs', verbose });
25
+ }
26
+ /**
27
+ * Search documentation for pages relevant to the given query.
28
+ *
29
+ * @param query - Natural language search query
30
+ * @param limit - Maximum number of results to return (default: 3)
31
+ * @returns Array of search results, or empty array on failure
32
+ */
33
+ async search(query, limit = 3) {
34
+ if (!this.config.enabled || this.unavailable)
35
+ return [];
36
+ const cacheKey = `${query}:${limit}`;
37
+ const cached = this.searchCache.get(cacheKey);
38
+ if (cached) {
39
+ this.logger.debug(`Cache hit for "${query}" (${cached.length} results)`);
40
+ return cached;
41
+ }
42
+ try {
43
+ await this.ensureConnected();
44
+ this.logger.debug(`Searching: "${query}"`);
45
+ const result = await this.callWithTimeout('semantic_search', { query, limit });
46
+ const results = this.parseSearchResults(result);
47
+ this.searchCache.set(cacheKey, results);
48
+ if (results.length > 0) {
49
+ this.logger.debug(`Found ${results.length} result(s):`);
50
+ for (const r of results) {
51
+ this.logger.debug(` - ${r.title} (${r.url})`);
52
+ }
53
+ }
54
+ else {
55
+ this.logger.debug(`No results for "${query}"`);
56
+ }
57
+ return results;
58
+ }
59
+ catch {
60
+ this.markUnavailable();
61
+ return [];
62
+ }
63
+ }
64
+ /**
65
+ * Get a summary for a specific documentation page.
66
+ *
67
+ * @param url - The documentation page URL
68
+ * @returns Summary text, or null on failure
69
+ */
70
+ async getPageSummary(url) {
71
+ if (!this.config.enabled || this.unavailable)
72
+ return null;
73
+ try {
74
+ await this.ensureConnected();
75
+ this.logger.debug(`Fetching summary for ${url}`);
76
+ const result = await this.callWithTimeout('get_summary', { url });
77
+ if (result && typeof result === 'object' && 'text' in result) {
78
+ return String(result.text);
79
+ }
80
+ return typeof result === 'string' ? result : null;
81
+ }
82
+ catch {
83
+ this.markUnavailable();
84
+ return null;
85
+ }
86
+ }
87
+ /**
88
+ * Whether dynamic (AI-initiated) searches are enabled and the server is reachable.
89
+ */
90
+ get isDynamicSearchEnabled() {
91
+ return this.config.enabled && this.config.dynamicSearch && !this.unavailable;
92
+ }
93
+ /**
94
+ * Gracefully close the MCP connection.
95
+ */
96
+ async disconnect() {
97
+ if (this.client) {
98
+ try {
99
+ await this.client.close();
100
+ }
101
+ catch {
102
+ /* ignore close errors */
103
+ }
104
+ this.client = null;
105
+ this.connected = false;
106
+ }
107
+ }
108
+ async ensureConnected() {
109
+ if (this.connected)
110
+ return;
111
+ if (this.unavailable)
112
+ throw new Error('Docs server unavailable');
113
+ const transport = new StreamableHTTPClientTransport(new URL(this.config.url));
114
+ this.client = new Client({ name: 'brxm-upgrade', version: '0.1.0' }, { capabilities: {} });
115
+ const connectPromise = this.client.connect(transport);
116
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), CONNECTION_TIMEOUT_MS));
117
+ await Promise.race([connectPromise, timeoutPromise]);
118
+ this.connected = true;
119
+ this.logger.debug(`Connected to documentation server at ${new URL(this.config.url).host}`);
120
+ }
121
+ async callWithTimeout(tool, args) {
122
+ if (!this.client)
123
+ throw new Error('Not connected');
124
+ const callPromise = this.client.callTool({ name: tool, arguments: args });
125
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Request timeout')), REQUEST_TIMEOUT_MS));
126
+ const result = await Promise.race([callPromise, timeoutPromise]);
127
+ return result?.content?.[0] ?? null;
128
+ }
129
+ parseSearchResults(raw) {
130
+ if (!raw || typeof raw !== 'object')
131
+ return [];
132
+ const text = raw.text;
133
+ if (!text)
134
+ return [];
135
+ try {
136
+ const parsed = JSON.parse(text);
137
+ if (Array.isArray(parsed)) {
138
+ return parsed.map((item) => {
139
+ const r = item;
140
+ return {
141
+ title: typeof r.title === 'string' ? r.title : '',
142
+ url: typeof r.url === 'string' ? r.url : '',
143
+ snippet: typeof r.snippet === 'string' ? r.snippet : (typeof r.summary === 'string' ? r.summary : ''),
144
+ score: typeof r.score === 'number' ? r.score : undefined,
145
+ };
146
+ });
147
+ }
148
+ }
149
+ catch {
150
+ /* not JSON, treat as plain text — return empty */
151
+ }
152
+ return [];
153
+ }
154
+ markUnavailable() {
155
+ if (!this.unavailable) {
156
+ this.unavailable = true;
157
+ this.logger.info('Documentation server unavailable, continuing without doc context.');
158
+ }
159
+ }
160
+ }
161
+ //# sourceMappingURL=docs-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-client.js","sourceRoot":"","sources":["../../src/docs/docs-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { DocSearchResult } from './types.js';
2
+ /**
3
+ * Builds documentation context strings for injection into AI prompts.
4
+ */
5
+ export declare class DocsContext {
6
+ /**
7
+ * Format search results into a context block for AI prompts.
8
+ * Returns empty string if no results.
9
+ */
10
+ static buildDocContext(results: DocSearchResult[]): string;
11
+ /**
12
+ * Build a concise search query from manifest entry metadata.
13
+ * Prefers doc_search_keywords when available (generated during manifest creation).
14
+ * Falls back to deriving keywords from the entry id slug.
15
+ * Uses only generic brXM terms — never customer-specific data.
16
+ */
17
+ static buildSearchQuery(entry: {
18
+ id: string;
19
+ type: string;
20
+ doc_search_keywords?: string[];
21
+ }): string;
22
+ }
23
+ //# sourceMappingURL=docs-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-context.d.ts","sourceRoot":"","sources":["../../src/docs/docs-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;GAEG;AACH,qBAAa,WAAW;IACtB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;IAc1D;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM;CAYrG"}
@@ -0,0 +1,41 @@
1
+ const MAX_RESULTS_IN_CONTEXT = 3;
2
+ const MAX_SNIPPET_LENGTH = 500;
3
+ /**
4
+ * Builds documentation context strings for injection into AI prompts.
5
+ */
6
+ export class DocsContext {
7
+ /**
8
+ * Format search results into a context block for AI prompts.
9
+ * Returns empty string if no results.
10
+ */
11
+ static buildDocContext(results) {
12
+ if (results.length === 0)
13
+ return '';
14
+ const limited = results.slice(0, MAX_RESULTS_IN_CONTEXT);
15
+ const sections = limited.map((r) => {
16
+ const snippet = r.snippet.length > MAX_SNIPPET_LENGTH
17
+ ? r.snippet.substring(0, MAX_SNIPPET_LENGTH) + '...'
18
+ : r.snippet;
19
+ return `**${r.title}** (${r.url})\n${snippet}`;
20
+ });
21
+ return `Relevant brXM documentation:\n\n${sections.join('\n\n---\n\n')}`;
22
+ }
23
+ /**
24
+ * Build a concise search query from manifest entry metadata.
25
+ * Prefers doc_search_keywords when available (generated during manifest creation).
26
+ * Falls back to deriving keywords from the entry id slug.
27
+ * Uses only generic brXM terms — never customer-specific data.
28
+ */
29
+ static buildSearchQuery(entry) {
30
+ if (entry.doc_search_keywords && entry.doc_search_keywords.length > 0) {
31
+ return `brXM ${entry.doc_search_keywords.join(' ')}`;
32
+ }
33
+ // Fallback: derive from id slug like "cms-18005-cmyk-rgb-conversion-fix" → "cmyk rgb conversion fix"
34
+ const idWords = entry.id
35
+ .replace(/^[a-z]+-\d+-/, '') // strip ticket prefix (e.g. "cms-18005-")
36
+ .replace(/-/g, ' ');
37
+ const type = entry.type.replace(/_/g, ' ');
38
+ return `brXM ${idWords} ${type}`;
39
+ }
40
+ }
41
+ //# sourceMappingURL=docs-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-context.js","sourceRoot":"","sources":["../../src/docs/docs-context.ts"],"names":[],"mappings":"AAEA,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB;gBACnD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,KAAK;gBACpD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACd,OAAO,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,OAAO,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,mCAAmC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAmE;QACzF,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,QAAQ,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,CAAC;QAED,qGAAqG;QACrG,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE;aACrB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,0CAA0C;aACtE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { DocsClient } from './docs-client.js';
2
+ export { DocsContext } from './docs-context.js';
3
+ export type { DocSearchResult, DocPage } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { DocsClient } from './docs-client.js';
2
+ export { DocsContext } from './docs-context.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A single search result from the docs MCP server.
3
+ */
4
+ export interface DocSearchResult {
5
+ /** Page title */
6
+ title: string;
7
+ /** Page URL on the documentation site */
8
+ url: string;
9
+ /** Relevant snippet or summary */
10
+ snippet: string;
11
+ /** Relevance score (0-1) */
12
+ score?: number;
13
+ }
14
+ /**
15
+ * Full page content from the docs MCP server.
16
+ */
17
+ export interface DocPage {
18
+ /** Page title */
19
+ title: string;
20
+ /** Page URL */
21
+ url: string;
22
+ /** Full page content (markdown) */
23
+ content: string;
24
+ /** AI-generated summary */
25
+ summary?: string;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import type { PlanStep } from '../planning/types.js';
2
+ import type { PreparedChanges, StepDecision } from './types.js';
3
+ /**
4
+ * Presents diffs and step details to the user and collects their decisions
5
+ * via interactive inquirer prompts.
6
+ */
7
+ export declare class DiffPresenter {
8
+ /**
9
+ * Formats a step header with metadata badges for terminal display.
10
+ *
11
+ * @param step - The plan step to format
12
+ * @param totalSteps - Total number of steps in the plan
13
+ * @returns Formatted header string with ANSI color codes
14
+ */
15
+ formatStepHeader(step: PlanStep, totalSteps: number): string;
16
+ /**
17
+ * Presents prepared changes to the user with a diff summary and optional
18
+ * AI analysis, then prompts for a decision.
19
+ *
20
+ * @param prepared - The prepared changes to present
21
+ * @returns The user's decision for this step
22
+ */
23
+ presentChanges(prepared: PreparedChanges): Promise<StepDecision>;
24
+ /**
25
+ * Displays the full colorized diff for all changes in a prepared set.
26
+ *
27
+ * @param prepared - The prepared changes to display diffs for
28
+ */
29
+ showFullDiff(prepared: PreparedChanges): void;
30
+ /**
31
+ * Presents a manual step with instructions and prompts the user to confirm
32
+ * whether they have completed the steps.
33
+ *
34
+ * @param step - The manual plan step to present
35
+ * @returns 'accept' if the user confirms completion, 'skip' otherwise
36
+ */
37
+ presentManualStep(step: PlanStep): Promise<StepDecision>;
38
+ /**
39
+ * Prompts the user for a decision on prepared changes. If the user chooses
40
+ * to view the full diff, shows it and re-prompts.
41
+ */
42
+ private promptForDecision;
43
+ /**
44
+ * Returns a colorized badge string for the automation level.
45
+ */
46
+ private getAutomationBadge;
47
+ /**
48
+ * Returns a human-readable label for a numeric risk level (1-5).
49
+ */
50
+ private getRiskBadge;
51
+ }
52
+ //# sourceMappingURL=diff-presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-presenter.d.ts","sourceRoot":"","sources":["../../src/execution/diff-presenter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhE;;;GAGG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAwB5D;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBtE;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAO7C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B9D;;;OAGG;YACW,iBAAiB;IA2B/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}
@@ -0,0 +1,148 @@
1
+ /* eslint-disable no-console */
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import { generateDiff, formatDiffForTerminal, summarizeDiffs } from '../utils/diff.js';
5
+ /**
6
+ * Presents diffs and step details to the user and collects their decisions
7
+ * via interactive inquirer prompts.
8
+ */
9
+ export class DiffPresenter {
10
+ /**
11
+ * Formats a step header with metadata badges for terminal display.
12
+ *
13
+ * @param step - The plan step to format
14
+ * @param totalSteps - Total number of steps in the plan
15
+ * @returns Formatted header string with ANSI color codes
16
+ */
17
+ formatStepHeader(step, totalSteps) {
18
+ const automationBadge = this.getAutomationBadge(step.automatable);
19
+ const riskBadge = this.getRiskBadge(step.riskLevel);
20
+ const lines = [
21
+ '',
22
+ chalk.bold('\u2501'.repeat(70)),
23
+ chalk.bold(`Step ${step.stepNumber}/${totalSteps}: ${step.entryId}`),
24
+ chalk.bold('\u2501'.repeat(70)),
25
+ '',
26
+ `${chalk.cyan('Description:')} ${step.description}`,
27
+ `${chalk.cyan('Type:')} ${step.type}`,
28
+ `${chalk.cyan('Automation:')} ${automationBadge}`,
29
+ `${chalk.cyan('Risk Level:')} ${riskBadge}`,
30
+ `${chalk.cyan('Files Affected:')} ${step.affectedFileCount}`,
31
+ ];
32
+ if (step.documentationUrl) {
33
+ lines.push(`${chalk.cyan('Documentation:')} ${step.documentationUrl}`);
34
+ }
35
+ lines.push('');
36
+ return lines.join('\n');
37
+ }
38
+ /**
39
+ * Presents prepared changes to the user with a diff summary and optional
40
+ * AI analysis, then prompts for a decision.
41
+ *
42
+ * @param prepared - The prepared changes to present
43
+ * @returns The user's decision for this step
44
+ */
45
+ async presentChanges(prepared) {
46
+ const diffs = prepared.changes.map((change) => generateDiff(change.originalContent, change.modifiedContent, change.filePath));
47
+ console.log(summarizeDiffs(diffs));
48
+ if (prepared.aiAnalysis) {
49
+ console.log('');
50
+ console.log(chalk.yellow('AI Analysis:'));
51
+ console.log(prepared.aiAnalysis);
52
+ }
53
+ return this.promptForDecision(prepared);
54
+ }
55
+ /**
56
+ * Displays the full colorized diff for all changes in a prepared set.
57
+ *
58
+ * @param prepared - The prepared changes to display diffs for
59
+ */
60
+ showFullDiff(prepared) {
61
+ for (const change of prepared.changes) {
62
+ const diff = generateDiff(change.originalContent, change.modifiedContent, change.filePath);
63
+ console.log(formatDiffForTerminal(diff));
64
+ }
65
+ }
66
+ /**
67
+ * Presents a manual step with instructions and prompts the user to confirm
68
+ * whether they have completed the steps.
69
+ *
70
+ * @param step - The manual plan step to present
71
+ * @returns 'accept' if the user confirms completion, 'skip' otherwise
72
+ */
73
+ async presentManualStep(step) {
74
+ console.log('');
75
+ console.log(chalk.yellow('Manual Steps Required:'));
76
+ console.log('');
77
+ if (step.manualSteps) {
78
+ step.manualSteps.forEach((s, i) => {
79
+ console.log(` ${chalk.cyan(`${i + 1}.`)} ${s}`);
80
+ });
81
+ }
82
+ if (step.documentationUrl) {
83
+ console.log('');
84
+ console.log(`${chalk.cyan('Documentation:')} ${step.documentationUrl}`);
85
+ }
86
+ console.log('');
87
+ const { completed } = (await inquirer.prompt([
88
+ {
89
+ type: 'confirm',
90
+ name: 'completed',
91
+ message: 'Have you completed these manual steps?',
92
+ default: false,
93
+ },
94
+ ]));
95
+ return completed ? 'accept' : 'skip';
96
+ }
97
+ /**
98
+ * Prompts the user for a decision on prepared changes. If the user chooses
99
+ * to view the full diff, shows it and re-prompts.
100
+ */
101
+ async promptForDecision(prepared) {
102
+ const choices = [
103
+ { name: 'Accept changes', value: 'accept' },
104
+ ...(prepared.changes.length > 0
105
+ ? [{ name: 'View full diff', value: 'view_diff' }]
106
+ : []),
107
+ { name: 'Skip this step', value: 'skip' },
108
+ { name: 'Reject and rollback', value: 'reject' },
109
+ ];
110
+ const { action } = (await inquirer.prompt([
111
+ {
112
+ type: 'select',
113
+ name: 'action',
114
+ message: 'What would you like to do?',
115
+ choices,
116
+ },
117
+ ]));
118
+ if (action === 'view_diff') {
119
+ this.showFullDiff(prepared);
120
+ return this.promptForDecision(prepared);
121
+ }
122
+ return action;
123
+ }
124
+ /**
125
+ * Returns a colorized badge string for the automation level.
126
+ */
127
+ getAutomationBadge(level) {
128
+ switch (level) {
129
+ case 'true':
130
+ return chalk.green('Automated');
131
+ case 'partial':
132
+ return chalk.yellow('AI-Assisted');
133
+ case 'false':
134
+ return chalk.red('Manual');
135
+ default:
136
+ return level;
137
+ }
138
+ }
139
+ /**
140
+ * Returns a human-readable label for a numeric risk level (1-5).
141
+ */
142
+ getRiskBadge(level) {
143
+ const labels = ['Very Low', 'Low', 'Medium', 'High', 'Critical'];
144
+ const idx = Math.min(Math.max(level - 1, 0), labels.length - 1);
145
+ return labels[idx];
146
+ }
147
+ }
148
+ //# sourceMappingURL=diff-presenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-presenter.js","sourceRoot":"","sources":["../../src/execution/diff-presenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { PlanStep, AutomationLevel } from '../../planning/types.js';
2
+ import type { AIClient } from '../../ai/types.js';
3
+ import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
4
+ /**
5
+ * Executor for AI-assisted steps (automatable === 'partial').
6
+ *
7
+ * Uses the AI client to propose concrete file edits against a bounded set of
8
+ * candidate files. The user can review the diff, ask the AI to revise the
9
+ * proposal, and then decide whether to apply it.
10
+ */
11
+ export declare class AIAssistedExecutor implements IStepExecutor {
12
+ readonly automationLevel: AutomationLevel;
13
+ private readonly aiClient;
14
+ constructor(aiClient: AIClient);
15
+ prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
16
+ revise(step: PlanStep, projectRoot: string, previousProposal: PreparedChanges, revisionRequest: string): Promise<PreparedChanges>;
17
+ apply(prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
18
+ private proposeChanges;
19
+ private resolveCandidateFiles;
20
+ private resolveDirectFiles;
21
+ private readCandidateFiles;
22
+ private truncateContent;
23
+ private matchesPattern;
24
+ private buildProposalPrompt;
25
+ private parseProposalResponse;
26
+ private extractJsonObject;
27
+ }
28
+ //# sourceMappingURL=ai-assisted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-assisted.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/ai-assisted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwB9E;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,QAAQ,EAAE,QAAQ;IAIxB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAItE,MAAM,CACV,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,EACjC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC;IAOrB,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAYrE,cAAc;YAgEd,qBAAqB;IA2BnC,OAAO,CAAC,kBAAkB;YAWZ,kBAAkB;IAgBhC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,mBAAmB;IA2D3B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;CAQ1B"}