@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,54 @@
1
+ /**
2
+ * Result returned by the get_next_step tool describing the next upgrade step
3
+ * to be performed by the AI client.
4
+ */
5
+ export interface NextStepResult {
6
+ stepNumber: number;
7
+ totalSteps: number;
8
+ entryId: string;
9
+ title: string;
10
+ type: 'automated' | 'ai_assisted' | 'manual';
11
+ risk: number;
12
+ instructions: string;
13
+ affectedFiles: string[];
14
+ codeChanges?: string;
15
+ guidance?: string;
16
+ documentation?: string;
17
+ verificationHint: string;
18
+ manualSteps?: string[];
19
+ docSearchKeywords?: string[];
20
+ nextAction: string;
21
+ completionActions: {
22
+ markCompleted: {
23
+ stepId: number;
24
+ status: 'completed';
25
+ };
26
+ markSkipped: {
27
+ stepId: number;
28
+ status: 'skipped';
29
+ };
30
+ };
31
+ }
32
+ export interface CompletionResult {
33
+ allStepsComplete: true;
34
+ platformChanges: Array<{
35
+ category: string;
36
+ entries: Array<{
37
+ id: string;
38
+ summary: string;
39
+ }>;
40
+ }>;
41
+ verificationCommand: string;
42
+ nextAction: string;
43
+ }
44
+ /**
45
+ * Get detailed instructions for the next pending upgrade step.
46
+ *
47
+ * Loads the upgrade plan and execution state, then returns the first step
48
+ * that has not been completed or skipped. Returns null when all steps are done.
49
+ *
50
+ * @param projectDir - Root directory of the project being upgraded.
51
+ * @throws When no upgrade plan exists.
52
+ */
53
+ export declare function handleGetNextStep(projectDir: string): Promise<NextStepResult | CompletionResult | null>;
54
+ //# sourceMappingURL=get-next-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-next-step.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-next-step.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE;QACjB,aAAa,EAAE;YACb,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,WAAW,CAAC;SACrB,CAAC;QACF,WAAW,EAAE;YACX,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,SAAS,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,IAAI,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAC9F,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AA8CD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAoEnD"}
@@ -0,0 +1,110 @@
1
+ import { PhaseManager } from '../../core/phase-manager.js';
2
+ import { buildPlatformChangesPayload } from '../../guide/rendering/platform-changes.js';
3
+ function automationType(step) {
4
+ switch (step.automatable) {
5
+ case 'true': return 'automated';
6
+ case 'partial': return 'ai_assisted';
7
+ case 'false': return 'manual';
8
+ }
9
+ }
10
+ function buildInstructions(step) {
11
+ switch (step.automatable) {
12
+ case 'true':
13
+ return `This is an automated step. Apply the following transformation to the affected files: ${step.description}`;
14
+ case 'partial':
15
+ return step.analysis ?? step.description;
16
+ case 'false':
17
+ return step.manualSteps?.join('\n') ?? step.description;
18
+ }
19
+ }
20
+ function buildVerificationHint(step) {
21
+ if (step.type === 'version_bump') {
22
+ return `Verify the parent POM version is updated to ${step.toVersion ?? 'the target version'}.`;
23
+ }
24
+ if (step.type === 'verification_gate') {
25
+ return 'Run the verification command and confirm no errors.';
26
+ }
27
+ if (step.affectedFiles.length > 0) {
28
+ return `Verify changes in: ${step.affectedFiles.slice(0, 3).join(', ')}${step.affectedFiles.length > 3 ? ` and ${step.affectedFiles.length - 3} more` : ''}`;
29
+ }
30
+ return 'Review the changes and verify correctness.';
31
+ }
32
+ function buildNextAction(step) {
33
+ if (step.type === 'verification_gate' || step.automatable === 'false') {
34
+ return `Complete the manual instructions for step ${step.stepNumber}. When finished, call complete_step with { stepId: ${step.stepNumber}, status: 'completed' }. If you decide not to do it, call complete_step with { stepId: ${step.stepNumber}, status: 'skipped' }.`;
35
+ }
36
+ if (step.automatable === 'partial') {
37
+ return `Review the AI-assisted guidance for step ${step.stepNumber}, make any needed changes, then call complete_step with { stepId: ${step.stepNumber}, status: 'completed' }. If you want to skip it, call complete_step with { stepId: ${step.stepNumber}, status: 'skipped' }.`;
38
+ }
39
+ return `Apply the automated change for step ${step.stepNumber}, verify the result, then call complete_step with { stepId: ${step.stepNumber}, status: 'completed' }. If you want to skip it, call complete_step with { stepId: ${step.stepNumber}, status: 'skipped' }.`;
40
+ }
41
+ /**
42
+ * Get detailed instructions for the next pending upgrade step.
43
+ *
44
+ * Loads the upgrade plan and execution state, then returns the first step
45
+ * that has not been completed or skipped. Returns null when all steps are done.
46
+ *
47
+ * @param projectDir - Root directory of the project being upgraded.
48
+ * @throws When no upgrade plan exists.
49
+ */
50
+ export async function handleGetNextStep(projectDir) {
51
+ const pm = new PhaseManager(projectDir);
52
+ const plan = await pm.loadPlan();
53
+ if (!plan) {
54
+ throw new Error('No upgrade plan found. Call create_upgrade_plan first.');
55
+ }
56
+ const state = await pm.loadExecutionState();
57
+ const done = new Set([
58
+ ...(state?.completedSteps ?? []),
59
+ ...(state?.skippedSteps ?? []),
60
+ ]);
61
+ const nextStep = plan.steps.find((s) => !done.has(s.stepNumber));
62
+ if (!nextStep) {
63
+ const informational = plan.informationalEntries ?? [];
64
+ if (informational.length > 0) {
65
+ return {
66
+ allStepsComplete: true,
67
+ platformChanges: buildPlatformChangesPayload(informational),
68
+ verificationCommand: 'mvn dependency:tree',
69
+ nextAction: 'All actionable steps are complete. Review the platform changes above with the user — these describe internal behavioral changes in the upgraded version. Then optionally run dependency verification.',
70
+ };
71
+ }
72
+ return null;
73
+ }
74
+ const result = {
75
+ stepNumber: nextStep.stepNumber,
76
+ totalSteps: plan.steps.length,
77
+ entryId: nextStep.entryId,
78
+ title: nextStep.description,
79
+ type: automationType(nextStep),
80
+ risk: nextStep.riskLevel,
81
+ instructions: buildInstructions(nextStep),
82
+ affectedFiles: nextStep.affectedFiles,
83
+ verificationHint: buildVerificationHint(nextStep),
84
+ nextAction: buildNextAction(nextStep),
85
+ completionActions: {
86
+ markCompleted: {
87
+ stepId: nextStep.stepNumber,
88
+ status: 'completed',
89
+ },
90
+ markSkipped: {
91
+ stepId: nextStep.stepNumber,
92
+ status: 'skipped',
93
+ },
94
+ },
95
+ };
96
+ if (nextStep.automatable === 'partial' && nextStep.analysis) {
97
+ result.guidance = nextStep.analysis;
98
+ }
99
+ if (nextStep.manualSteps && nextStep.manualSteps.length > 0) {
100
+ result.manualSteps = nextStep.manualSteps;
101
+ }
102
+ if (nextStep.documentationUrl) {
103
+ result.documentation = nextStep.documentationUrl;
104
+ }
105
+ if (nextStep.docSearchKeywords && nextStep.docSearchKeywords.length > 0) {
106
+ result.docSearchKeywords = nextStep.docSearchKeywords;
107
+ }
108
+ return result;
109
+ }
110
+ //# sourceMappingURL=get-next-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-next-step.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-next-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAyCxF,SAAS,cAAc,CAAC,IAAc;IACpC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC;QAChC,KAAK,SAAS,CAAC,CAAC,OAAO,aAAa,CAAC;QACrC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,wFAAwF,IAAI,CAAC,WAAW,EAAE,CAAC;QACpH,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,+CAA+C,IAAI,CAAC,SAAS,IAAI,oBAAoB,GAAG,CAAC;IAClG,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,sBAAsB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/J,CAAC;IACD,OAAO,4CAA4C,CAAC;AACtD,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACtE,OAAO,6CAA6C,IAAI,CAAC,UAAU,sDAAsD,IAAI,CAAC,UAAU,0FAA0F,IAAI,CAAC,UAAU,wBAAwB,CAAC;IAC5Q,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,4CAA4C,IAAI,CAAC,UAAU,qEAAqE,IAAI,CAAC,UAAU,sFAAsF,IAAI,CAAC,UAAU,wBAAwB,CAAC;IACtR,CAAC;IAED,OAAO,uCAAuC,IAAI,CAAC,UAAU,+DAA+D,IAAI,CAAC,UAAU,sFAAsF,IAAI,CAAC,UAAU,wBAAwB,CAAC;AAC3Q,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAkB;IAElB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IAEjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,GAAG,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;KAC/B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACtD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,2BAA2B,CAAC,aAAa,CAAC;gBAC3D,mBAAmB,EAAE,qBAAqB;gBAC1C,UAAU,EAAE,uMAAuM;aACzL,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAmB;QAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,WAAW;QAC3B,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,SAAS;QACxB,YAAY,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACzC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,gBAAgB,EAAE,qBAAqB,CAAC,QAAQ,CAAC;QACjD,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;QACrC,iBAAiB,EAAE;YACjB,aAAa,EAAE;gBACb,MAAM,EAAE,QAAQ,CAAC,UAAU;gBAC3B,MAAM,EAAE,WAAW;aACpB;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,QAAQ,CAAC,UAAU;gBAC3B,MAAM,EAAE,SAAS;aAClB;SACF;KACF,CAAC;IAEF,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5D,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,CAAC,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,CAAC,iBAAiB,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type UpgradePhase, type UpgradeProgress } from '../../core/phase-manager.js';
2
+ import { type UpgradeTargetSelectionMode } from './upgrade-targets.js';
3
+ export interface UpgradeStatusResult {
4
+ phase: UpgradePhase;
5
+ nextAction: string;
6
+ projectDir: string;
7
+ versions?: {
8
+ from: string;
9
+ to?: string;
10
+ };
11
+ progress?: UpgradeProgress;
12
+ supportedTargetVersions?: string[];
13
+ latestSupportedVersion?: string;
14
+ recommendedTargetVersion?: string;
15
+ targetSelectionMode?: UpgradeTargetSelectionMode;
16
+ planRequired?: boolean;
17
+ versionSource?: 'pom.xml';
18
+ }
19
+ /**
20
+ * Determine the current upgrade status by inspecting state files.
21
+ * Returns the phase, a suggested next action, and any available version
22
+ * and progress information.
23
+ */
24
+ export declare function handleGetUpgradeStatus(projectDir: string): Promise<UpgradeStatusResult>;
25
+ //# sourceMappingURL=get-upgrade-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-upgrade-status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/get-upgrade-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAwBD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAwE9B"}
@@ -0,0 +1,79 @@
1
+ import { PhaseManager, } from '../../core/phase-manager.js';
2
+ import { resolveDiscoveryTargetVersion, } from './upgrade-targets.js';
3
+ function buildNextAction(selectionMode, currentVersion, targetVersion, supportedTargetVersions, recommendedTargetVersion) {
4
+ switch (selectionMode) {
5
+ case 'none_supported':
6
+ return `No upgrade plan is needed. The project is already on the latest supported upgrade target ${currentVersion}.`;
7
+ case 'single_supported_target':
8
+ return `Only one supported upgrade target is available (${targetVersion}). Call create_upgrade_plan without specifying targetVersion.`;
9
+ case 'multiple_supported_targets':
10
+ return `Choose one of the supported target versions (${supportedTargetVersions.join(', ')}) and call create_upgrade_plan. If targetVersion is omitted there, it will default to ${recommendedTargetVersion}.`;
11
+ case 'explicit_target':
12
+ case 'persisted_target':
13
+ return `Call create_upgrade_plan to generate the upgrade plan for target version ${targetVersion}.`;
14
+ default:
15
+ return 'Call create_upgrade_plan to generate the upgrade plan.';
16
+ }
17
+ }
18
+ /**
19
+ * Determine the current upgrade status by inspecting state files.
20
+ * Returns the phase, a suggested next action, and any available version
21
+ * and progress information.
22
+ */
23
+ export async function handleGetUpgradeStatus(projectDir) {
24
+ const pm = new PhaseManager(projectDir);
25
+ const phase = await pm.getPhase();
26
+ const nextAction = pm.getNextAction(phase);
27
+ const result = { phase, nextAction, projectDir };
28
+ // Add version info if discovery exists
29
+ const discovery = await pm.loadDiscovery();
30
+ if (discovery) {
31
+ result.versions = { from: discovery.build.brxmVersion };
32
+ result.versionSource = 'pom.xml';
33
+ }
34
+ const upgradeState = await pm.loadUpgradeState();
35
+ if (discovery) {
36
+ try {
37
+ const targetResolution = await resolveDiscoveryTargetVersion(projectDir, discovery.build.brxmVersion, upgradeState?.targetVersion);
38
+ result.supportedTargetVersions = targetResolution.supportedTargetVersions;
39
+ result.latestSupportedVersion = targetResolution.latestSupportedVersion;
40
+ result.recommendedTargetVersion =
41
+ targetResolution.recommendedTargetVersion;
42
+ result.targetSelectionMode = targetResolution.selectionMode;
43
+ result.planRequired = targetResolution.planRequired;
44
+ if (targetResolution.selectedTargetVersion && result.versions) {
45
+ result.versions = {
46
+ ...result.versions,
47
+ to: targetResolution.selectedTargetVersion,
48
+ };
49
+ }
50
+ if (phase === 'discovered') {
51
+ result.nextAction = buildNextAction(targetResolution.selectionMode, discovery.build.brxmVersion, targetResolution.selectedTargetVersion, targetResolution.supportedTargetVersions, targetResolution.recommendedTargetVersion);
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (phase === 'discovered') {
56
+ result.nextAction =
57
+ error instanceof Error
58
+ ? error.message
59
+ : 'Resolve the supported upgrade target versions before creating a plan.';
60
+ }
61
+ }
62
+ }
63
+ // Add target version if plan exists
64
+ const plan = await pm.loadPlan();
65
+ if (plan) {
66
+ result.versions = {
67
+ from: plan.fromVersion,
68
+ to: plan.toVersion,
69
+ };
70
+ result.planRequired = true;
71
+ }
72
+ // Add progress if executing
73
+ const progress = await pm.getProgress();
74
+ if (progress) {
75
+ result.progress = progress;
76
+ }
77
+ return result;
78
+ }
79
+ //# sourceMappingURL=get-upgrade-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-upgrade-status.js","sourceRoot":"","sources":["../../../src/mcp/tools/get-upgrade-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ManifestLoadOptions } from '../../planning/types.js';
2
+ export type UpgradeTargetSelectionMode = 'none_supported' | 'single_supported_target' | 'multiple_supported_targets' | 'explicit_target' | 'persisted_target' | 'default_latest_supported';
3
+ export interface UpgradeTargetResolution {
4
+ availableVersions: string[];
5
+ supportedTargetVersions: string[];
6
+ latestSupportedVersion?: string;
7
+ recommendedTargetVersion?: string;
8
+ selectedTargetVersion?: string;
9
+ selectionMode: UpgradeTargetSelectionMode;
10
+ planRequired: boolean;
11
+ }
12
+ export declare function getSupportedUpgradeTargets(projectDir: string, currentVersion: string, manifestOptions?: ManifestLoadOptions): Promise<Pick<UpgradeTargetResolution, 'availableVersions' | 'supportedTargetVersions' | 'latestSupportedVersion' | 'recommendedTargetVersion'>>;
13
+ export declare function resolveDiscoveryTargetVersion(projectDir: string, currentVersion: string, requestedTargetVersion?: string, manifestOptions?: ManifestLoadOptions): Promise<UpgradeTargetResolution>;
14
+ export declare function resolvePlanningTargetVersion(projectDir: string, currentVersion: string, options?: {
15
+ requestedTargetVersion?: string;
16
+ persistedTargetVersion?: string;
17
+ manifestOptions?: ManifestLoadOptions;
18
+ }): Promise<UpgradeTargetResolution>;
19
+ //# sourceMappingURL=upgrade-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-targets.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/upgrade-targets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,0BAA0B,GAClC,gBAAgB,GAChB,yBAAyB,GACzB,4BAA4B,GAC5B,iBAAiB,GACjB,kBAAkB,GAClB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,0BAA0B,CAAC;IAC1C,YAAY,EAAE,OAAO,CAAC;CACvB;AAkCD,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CACb,uBAAuB,EACrB,mBAAmB,GACnB,yBAAyB,GACzB,wBAAwB,GACxB,0BAA0B,CAC7B,CAAC,CAqBD;AAED,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,uBAAuB,CAAC,CA0DlC;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE;IACR,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC,GACA,OAAO,CAAC,uBAAuB,CAAC,CAkElC"}
@@ -0,0 +1,132 @@
1
+ import semver from 'semver';
2
+ import { loadConfig } from '../../config/index.js';
3
+ import { getAvailableVersions } from '../../planning/manifest-loader.js';
4
+ async function resolveManifestOptions(projectDir, manifestOptions) {
5
+ if (manifestOptions) {
6
+ return manifestOptions;
7
+ }
8
+ const config = await loadConfig(projectDir);
9
+ return {
10
+ source: config.upgrade.source,
11
+ url: config.upgrade.url,
12
+ localPath: config.upgrade.localPath,
13
+ };
14
+ }
15
+ function buildUnsupportedTargetError(currentVersion, requestedTargetVersion, supportedTargetVersions) {
16
+ if (supportedTargetVersions.length === 0) {
17
+ return new Error(`Current version ${currentVersion} is already the latest supported upgrade target. No newer supported versions are available.`);
18
+ }
19
+ return new Error(`Version ${requestedTargetVersion} is not a supported upgrade target from ${currentVersion}. Supported target versions: ${supportedTargetVersions.join(', ')}`);
20
+ }
21
+ export async function getSupportedUpgradeTargets(projectDir, currentVersion, manifestOptions) {
22
+ const options = await resolveManifestOptions(projectDir, manifestOptions);
23
+ const availableVersions = await getAvailableVersions(options);
24
+ const supportedTargetVersions = availableVersions.filter((version) => semver.gt(version, currentVersion));
25
+ const latestSupportedVersion = availableVersions.length > 0
26
+ ? availableVersions[availableVersions.length - 1]
27
+ : undefined;
28
+ const recommendedTargetVersion = supportedTargetVersions.length > 0
29
+ ? supportedTargetVersions[supportedTargetVersions.length - 1]
30
+ : undefined;
31
+ return {
32
+ availableVersions,
33
+ supportedTargetVersions,
34
+ latestSupportedVersion,
35
+ recommendedTargetVersion,
36
+ };
37
+ }
38
+ export async function resolveDiscoveryTargetVersion(projectDir, currentVersion, requestedTargetVersion, manifestOptions) {
39
+ const base = await getSupportedUpgradeTargets(projectDir, currentVersion, manifestOptions);
40
+ if (requestedTargetVersion) {
41
+ if (requestedTargetVersion === currentVersion &&
42
+ base.supportedTargetVersions.length === 0) {
43
+ return {
44
+ ...base,
45
+ selectedTargetVersion: currentVersion,
46
+ selectionMode: 'none_supported',
47
+ planRequired: false,
48
+ };
49
+ }
50
+ if (!base.supportedTargetVersions.includes(requestedTargetVersion)) {
51
+ throw buildUnsupportedTargetError(currentVersion, requestedTargetVersion, base.supportedTargetVersions);
52
+ }
53
+ return {
54
+ ...base,
55
+ selectedTargetVersion: requestedTargetVersion,
56
+ selectionMode: 'explicit_target',
57
+ planRequired: true,
58
+ };
59
+ }
60
+ if (base.supportedTargetVersions.length === 0) {
61
+ return {
62
+ ...base,
63
+ selectedTargetVersion: currentVersion,
64
+ selectionMode: 'none_supported',
65
+ planRequired: false,
66
+ };
67
+ }
68
+ if (base.supportedTargetVersions.length === 1) {
69
+ return {
70
+ ...base,
71
+ selectedTargetVersion: base.supportedTargetVersions[0],
72
+ selectionMode: 'single_supported_target',
73
+ planRequired: true,
74
+ };
75
+ }
76
+ return {
77
+ ...base,
78
+ selectionMode: 'multiple_supported_targets',
79
+ planRequired: true,
80
+ };
81
+ }
82
+ export async function resolvePlanningTargetVersion(projectDir, currentVersion, options) {
83
+ const base = await getSupportedUpgradeTargets(projectDir, currentVersion, options?.manifestOptions);
84
+ const requestedTargetVersion = options?.requestedTargetVersion ?? options?.persistedTargetVersion;
85
+ if (requestedTargetVersion) {
86
+ if (requestedTargetVersion === currentVersion &&
87
+ base.supportedTargetVersions.length === 0) {
88
+ return {
89
+ ...base,
90
+ selectedTargetVersion: currentVersion,
91
+ selectionMode: options?.requestedTargetVersion
92
+ ? 'explicit_target'
93
+ : 'persisted_target',
94
+ planRequired: false,
95
+ };
96
+ }
97
+ if (!base.supportedTargetVersions.includes(requestedTargetVersion)) {
98
+ throw buildUnsupportedTargetError(currentVersion, requestedTargetVersion, base.supportedTargetVersions);
99
+ }
100
+ return {
101
+ ...base,
102
+ selectedTargetVersion: requestedTargetVersion,
103
+ selectionMode: options?.requestedTargetVersion
104
+ ? 'explicit_target'
105
+ : 'persisted_target',
106
+ planRequired: true,
107
+ };
108
+ }
109
+ if (base.supportedTargetVersions.length === 0) {
110
+ return {
111
+ ...base,
112
+ selectedTargetVersion: currentVersion,
113
+ selectionMode: 'none_supported',
114
+ planRequired: false,
115
+ };
116
+ }
117
+ if (base.supportedTargetVersions.length === 1) {
118
+ return {
119
+ ...base,
120
+ selectedTargetVersion: base.supportedTargetVersions[0],
121
+ selectionMode: 'single_supported_target',
122
+ planRequired: true,
123
+ };
124
+ }
125
+ return {
126
+ ...base,
127
+ selectedTargetVersion: base.recommendedTargetVersion,
128
+ selectionMode: 'default_latest_supported',
129
+ planRequired: true,
130
+ };
131
+ }
132
+ //# sourceMappingURL=upgrade-targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-targets.js","sourceRoot":"","sources":["../../../src/mcp/tools/upgrade-targets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ManifestEntry } from './types.js';
2
+ import type { ProjectContext } from '../discovery/types.js';
3
+ import type { AIClient } from '../ai/types.js';
4
+ import type { DocsClient } from '../docs/docs-client.js';
5
+ /**
6
+ * Create an analysis prompt for a manifest entry.
7
+ */
8
+ export declare function createAnalysisPrompt(entry: ManifestEntry, context: ProjectContext, affectedFiles: string[], docSnippets?: string[]): string;
9
+ /**
10
+ * Analyze a manifest entry using AI.
11
+ */
12
+ export declare function analyzeEntryWithAI(entry: ManifestEntry, context: ProjectContext, affectedFiles: string[], aiClient: AIClient, docsClient?: DocsClient): Promise<string | null>;
13
+ /**
14
+ * Analyze multiple entries with AI.
15
+ */
16
+ export declare function analyzeEntriesWithAI(entries: Array<{
17
+ entry: ManifestEntry;
18
+ affectedFiles: string[];
19
+ }>, context: ProjectContext, aiClient: AIClient, onProgress?: (completed: number, total: number) => void, docsClient?: DocsClient): Promise<Map<string, string>>;
20
+ //# sourceMappingURL=ai-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-analyzer.d.ts","sourceRoot":"","sources":["../../src/planning/ai-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,MAAM,CAmCR;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgCxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EACjE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EACvD,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4B9B"}
@@ -0,0 +1,97 @@
1
+ import { DocsContext } from '../docs/docs-context.js';
2
+ import { createLogger } from '../utils/logger.js';
3
+ import { sanitizeError } from '../utils/error.js';
4
+ const logger = createLogger({ prefix: 'ai-analyzer' });
5
+ /**
6
+ * Create an analysis prompt for a manifest entry.
7
+ */
8
+ export function createAnalysisPrompt(entry, context, affectedFiles, docSnippets) {
9
+ const filesSection = affectedFiles.length > 0
10
+ ? `\n## Affected Files\n${affectedFiles.slice(0, 20).map((f) => `- ${f}`).join('\n')}${affectedFiles.length > 20 ? `\n... and ${affectedFiles.length - 20} more` : ''}`
11
+ : '\n## Affected Files\nNo specific files detected.';
12
+ const docsSection = docSnippets && docSnippets.length > 0
13
+ ? `\n## Relevant Documentation\n${docSnippets.join('\n\n')}`
14
+ : '';
15
+ return `# brXM Upgrade Analysis Request
16
+
17
+ ## Change Information
18
+ - **ID**: ${entry.id}
19
+ - **Description**: ${entry.description}
20
+ - **Type**: ${entry.type}
21
+ - **Automation Level**: ${entry.automatable}
22
+
23
+ ## Project Context
24
+ - **Current brXM Version**: ${context.build.brxmVersion}
25
+ - **Total Java Files**: ${context.build.totalJavaFiles}
26
+ - **Module Count**: ${context.build.moduleCount}
27
+ ${filesSection}
28
+
29
+ ## AI Guidance
30
+ ${entry.ai_guidance || 'No specific guidance provided.'}
31
+ ${docsSection}
32
+
33
+ ## Your Task
34
+ Analyze this change in the context of this project and provide:
35
+ 1. **Impact Assessment**: What will this change affect in this specific project?
36
+ 2. **Recommended Approach**: How should this migration be performed?
37
+ 3. **Potential Risks**: What could go wrong and how to mitigate?
38
+ 4. **Validation Steps**: How to verify the migration was successful?
39
+
40
+ Please be specific to this project's structure and provide actionable guidance.`;
41
+ }
42
+ /**
43
+ * Analyze a manifest entry using AI.
44
+ */
45
+ export async function analyzeEntryWithAI(entry, context, affectedFiles, aiClient, docsClient) {
46
+ if (!aiClient.isConfigured()) {
47
+ return null;
48
+ }
49
+ let docSnippets;
50
+ if (docsClient?.isDynamicSearchEnabled) {
51
+ try {
52
+ const query = DocsContext.buildSearchQuery(entry);
53
+ const results = await docsClient.search(query);
54
+ docSnippets = results
55
+ .filter((r) => r.snippet)
56
+ .map((r) => `- [${r.title}](${r.url}): ${r.snippet}`);
57
+ }
58
+ catch {
59
+ logger.debug(`Doc search failed for ${entry.id}, continuing without docs`);
60
+ }
61
+ }
62
+ const prompt = createAnalysisPrompt(entry, context, affectedFiles, docSnippets);
63
+ try {
64
+ const result = await aiClient.generate(prompt, {
65
+ maxTokens: 2000,
66
+ temperature: 0.3,
67
+ system: `You are a brXM upgrade assistant. You help developers migrate their Bloomreach Experience Manager projects between versions. Be specific, actionable, and focus on the particular project context provided.`,
68
+ });
69
+ return result.text;
70
+ }
71
+ catch (error) {
72
+ logger.warn(`AI analysis failed for ${entry.id}: ${sanitizeError(error)}`);
73
+ return null;
74
+ }
75
+ }
76
+ /**
77
+ * Analyze multiple entries with AI.
78
+ */
79
+ export async function analyzeEntriesWithAI(entries, context, aiClient, onProgress, docsClient) {
80
+ const results = new Map();
81
+ if (!aiClient.isConfigured()) {
82
+ return results;
83
+ }
84
+ for (let i = 0; i < entries.length; i++) {
85
+ const { entry, affectedFiles } = entries[i];
86
+ // Only analyze partial entries (they have ai_guidance)
87
+ if (entry.automatable === 'partial') {
88
+ const analysis = await analyzeEntryWithAI(entry, context, affectedFiles, aiClient, docsClient);
89
+ if (analysis) {
90
+ results.set(entry.id, analysis);
91
+ }
92
+ }
93
+ onProgress?.(i + 1, entries.length);
94
+ }
95
+ return results;
96
+ }
97
+ //# sourceMappingURL=ai-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-analyzer.js","sourceRoot":"","sources":["../../src/planning/ai-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { AutomationLevel, ManifestEntryType, TransformPattern, ManifestEntry, UpgradeManifest, EntryMatch, PlanStepStatus, PlanStep, PlanSummary, UpgradePlan, PlanOptions, ManifestSourceType, ManifestLoadOptions, OverrideClassification, } from './types.js';
2
+ export { loadManifest, loadManifestsForUpgrade, getAvailableVersions, countManifestEntries, loadUnreleasedManifest, saveManifest, } from './manifest-loader.js';
3
+ export { validateManifest, isValidManifest, getManifestValidationErrors, ManifestValidationError, } from './manifest-schema.js';
4
+ export { matchEntryToProject, matchManifestToProject, matchManifestsToProject, type MatchOptions, } from './project-matcher.js';
5
+ export { generatePlan, orderStepsByDependency, } from './plan-generator.js';
6
+ export { classifyOverrides, } from './override-analyzer.js';
7
+ export { analyzeEntryWithAI, analyzeEntriesWithAI, createAnalysisPrompt, } from './ai-analyzer.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,UAAU,EACV,cAAc,EACd,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Manifest loading
2
+ export { loadManifest, loadManifestsForUpgrade, getAvailableVersions, countManifestEntries, loadUnreleasedManifest, saveManifest, } from './manifest-loader.js';
3
+ // Manifest validation
4
+ export { validateManifest, isValidManifest, getManifestValidationErrors, ManifestValidationError, } from './manifest-schema.js';
5
+ // Project matching
6
+ export { matchEntryToProject, matchManifestToProject, matchManifestsToProject, } from './project-matcher.js';
7
+ // Plan generation
8
+ export { generatePlan, orderStepsByDependency, } from './plan-generator.js';
9
+ // Override analysis
10
+ export { classifyOverrides, } from './override-analyzer.js';
11
+ // AI analysis
12
+ export { analyzeEntryWithAI, analyzeEntriesWithAI, createAnalysisPrompt, } from './ai-analyzer.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/planning/index.ts"],"names":[],"mappings":"AAkBA,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAE9B,sBAAsB;AACtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,sBAAsB,CAAC;AAE9B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,oBAAoB;AACpB,OAAO,EACL,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,cAAc;AACd,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}