@camaradesuk/git-worktree-tools 1.8.0 → 1.10.0

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 (353) hide show
  1. package/README.md +48 -27
  2. package/dist/cli/cleanpr.js +74 -53
  3. package/dist/cli/cleanpr.js.map +1 -1
  4. package/dist/cli/cleanpr.test.js +2 -0
  5. package/dist/cli/cleanpr.test.js.map +1 -1
  6. package/dist/cli/lswt.js +32 -56
  7. package/dist/cli/lswt.js.map +1 -1
  8. package/dist/cli/lswt.test.js +17 -27
  9. package/dist/cli/lswt.test.js.map +1 -1
  10. package/dist/cli/newpr.d.ts +13 -1
  11. package/dist/cli/newpr.d.ts.map +1 -1
  12. package/dist/cli/newpr.js +350 -151
  13. package/dist/cli/newpr.js.map +1 -1
  14. package/dist/cli/newpr.test.js +314 -5
  15. package/dist/cli/newpr.test.js.map +1 -1
  16. package/dist/cli/prs.d.ts +3 -10
  17. package/dist/cli/prs.d.ts.map +1 -1
  18. package/dist/cli/prs.js +6 -168
  19. package/dist/cli/prs.js.map +1 -1
  20. package/dist/cli/prs.test.js +55 -0
  21. package/dist/cli/prs.test.js.map +1 -1
  22. package/dist/cli/wt/clean.d.ts +6 -2
  23. package/dist/cli/wt/clean.d.ts.map +1 -1
  24. package/dist/cli/wt/clean.js +401 -20
  25. package/dist/cli/wt/clean.js.map +1 -1
  26. package/dist/cli/wt/clean.test.d.ts +8 -0
  27. package/dist/cli/wt/clean.test.d.ts.map +1 -0
  28. package/dist/cli/wt/clean.test.js +624 -0
  29. package/dist/cli/wt/clean.test.js.map +1 -0
  30. package/dist/cli/wt/completion.d.ts +3 -0
  31. package/dist/cli/wt/completion.d.ts.map +1 -1
  32. package/dist/cli/wt/completion.js +80 -9
  33. package/dist/cli/wt/completion.js.map +1 -1
  34. package/dist/cli/wt/completion.test.js +102 -0
  35. package/dist/cli/wt/completion.test.js.map +1 -1
  36. package/dist/cli/wt/config.d.ts +3 -1
  37. package/dist/cli/wt/config.d.ts.map +1 -1
  38. package/dist/cli/wt/config.js +323 -32
  39. package/dist/cli/wt/config.js.map +1 -1
  40. package/dist/cli/wt/config.test.d.ts +2 -0
  41. package/dist/cli/wt/config.test.d.ts.map +1 -1
  42. package/dist/cli/wt/config.test.js +206 -26
  43. package/dist/cli/wt/config.test.js.map +1 -1
  44. package/dist/cli/wt/interactive-menu.d.ts +2 -0
  45. package/dist/cli/wt/interactive-menu.d.ts.map +1 -1
  46. package/dist/cli/wt/interactive-menu.js +346 -73
  47. package/dist/cli/wt/interactive-menu.js.map +1 -1
  48. package/dist/cli/wt/interactive-menu.test.d.ts +4 -2
  49. package/dist/cli/wt/interactive-menu.test.d.ts.map +1 -1
  50. package/dist/cli/wt/interactive-menu.test.js +383 -323
  51. package/dist/cli/wt/interactive-menu.test.js.map +1 -1
  52. package/dist/cli/wt/link.d.ts +3 -1
  53. package/dist/cli/wt/link.d.ts.map +1 -1
  54. package/dist/cli/wt/link.js +125 -38
  55. package/dist/cli/wt/link.js.map +1 -1
  56. package/dist/cli/wt/list.d.ts +4 -1
  57. package/dist/cli/wt/list.d.ts.map +1 -1
  58. package/dist/cli/wt/list.js +85 -16
  59. package/dist/cli/wt/list.js.map +1 -1
  60. package/dist/cli/wt/list.test.d.ts +10 -0
  61. package/dist/cli/wt/list.test.d.ts.map +1 -0
  62. package/dist/cli/wt/list.test.js +157 -0
  63. package/dist/cli/wt/list.test.js.map +1 -0
  64. package/dist/cli/wt/new.d.ts +8 -2
  65. package/dist/cli/wt/new.d.ts.map +1 -1
  66. package/dist/cli/wt/new.js +91 -46
  67. package/dist/cli/wt/new.js.map +1 -1
  68. package/dist/cli/wt/prs.d.ts +2 -1
  69. package/dist/cli/wt/prs.d.ts.map +1 -1
  70. package/dist/cli/wt/prs.js +3 -164
  71. package/dist/cli/wt/prs.js.map +1 -1
  72. package/dist/cli/wt/run-command.d.ts +4 -2
  73. package/dist/cli/wt/run-command.d.ts.map +1 -1
  74. package/dist/cli/wt/run-command.js +6 -4
  75. package/dist/cli/wt/run-command.js.map +1 -1
  76. package/dist/cli/wt/state.d.ts +3 -1
  77. package/dist/cli/wt/state.d.ts.map +1 -1
  78. package/dist/cli/wt/state.js +74 -10
  79. package/dist/cli/wt/state.js.map +1 -1
  80. package/dist/cli/wt/state.test.d.ts +9 -0
  81. package/dist/cli/wt/state.test.d.ts.map +1 -0
  82. package/dist/cli/wt/state.test.js +127 -0
  83. package/dist/cli/wt/state.test.js.map +1 -0
  84. package/dist/cli/wt/wt.test.d.ts +2 -2
  85. package/dist/cli/wt/wt.test.js +430 -212
  86. package/dist/cli/wt/wt.test.js.map +1 -1
  87. package/dist/cli/wt.d.ts.map +1 -1
  88. package/dist/cli/wt.js +50 -36
  89. package/dist/cli/wt.js.map +1 -1
  90. package/dist/cli/wt.unit.test.js +16 -38
  91. package/dist/cli/wt.unit.test.js.map +1 -1
  92. package/dist/cli/wtconfig.d.ts +1 -0
  93. package/dist/cli/wtconfig.d.ts.map +1 -1
  94. package/dist/cli/wtconfig.js +213 -21
  95. package/dist/cli/wtconfig.js.map +1 -1
  96. package/dist/cli/wtconfig.test.js +3 -0
  97. package/dist/cli/wtconfig.test.js.map +1 -1
  98. package/dist/cli/wtlink.js +116 -73
  99. package/dist/cli/wtlink.js.map +1 -1
  100. package/dist/cli/wtstate.js +21 -2
  101. package/dist/cli/wtstate.js.map +1 -1
  102. package/dist/e2e/wt/interactive-menu.e2e.test.js +17 -17
  103. package/dist/e2e/wt/interactive-menu.e2e.test.js.map +1 -1
  104. package/dist/lib/ai/types.d.ts +12 -0
  105. package/dist/lib/ai/types.d.ts.map +1 -1
  106. package/dist/lib/ai/types.js.map +1 -1
  107. package/dist/lib/cleanpr/args.d.ts.map +1 -1
  108. package/dist/lib/cleanpr/args.js +20 -0
  109. package/dist/lib/cleanpr/args.js.map +1 -1
  110. package/dist/lib/cleanpr/types.d.ts +6 -0
  111. package/dist/lib/cleanpr/types.d.ts.map +1 -1
  112. package/dist/lib/cleanpr/worktree-info.d.ts.map +1 -1
  113. package/dist/lib/cleanpr/worktree-info.js +1 -6
  114. package/dist/lib/cleanpr/worktree-info.js.map +1 -1
  115. package/dist/lib/cleanpr/worktree-info.test.js +10 -13
  116. package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
  117. package/dist/lib/colors.d.ts +5 -0
  118. package/dist/lib/colors.d.ts.map +1 -1
  119. package/dist/lib/colors.js +13 -6
  120. package/dist/lib/colors.js.map +1 -1
  121. package/dist/lib/config-editor.d.ts.map +1 -1
  122. package/dist/lib/config-editor.js.map +1 -1
  123. package/dist/lib/config-migration/detector.d.ts +25 -0
  124. package/dist/lib/config-migration/detector.d.ts.map +1 -0
  125. package/dist/lib/config-migration/detector.js +372 -0
  126. package/dist/lib/config-migration/detector.js.map +1 -0
  127. package/dist/lib/config-migration/detector.test.d.ts +5 -0
  128. package/dist/lib/config-migration/detector.test.d.ts.map +1 -0
  129. package/dist/lib/config-migration/detector.test.js +201 -0
  130. package/dist/lib/config-migration/detector.test.js.map +1 -0
  131. package/dist/lib/config-migration/index.d.ts +29 -0
  132. package/dist/lib/config-migration/index.d.ts.map +1 -0
  133. package/dist/lib/config-migration/index.js +33 -0
  134. package/dist/lib/config-migration/index.js.map +1 -0
  135. package/dist/lib/config-migration/reporter.d.ts +53 -0
  136. package/dist/lib/config-migration/reporter.d.ts.map +1 -0
  137. package/dist/lib/config-migration/reporter.js +257 -0
  138. package/dist/lib/config-migration/reporter.js.map +1 -0
  139. package/dist/lib/config-migration/reporter.test.d.ts +5 -0
  140. package/dist/lib/config-migration/reporter.test.d.ts.map +1 -0
  141. package/dist/lib/config-migration/reporter.test.js +305 -0
  142. package/dist/lib/config-migration/reporter.test.js.map +1 -0
  143. package/dist/lib/config-migration/runner.d.ts +46 -0
  144. package/dist/lib/config-migration/runner.d.ts.map +1 -0
  145. package/dist/lib/config-migration/runner.js +364 -0
  146. package/dist/lib/config-migration/runner.js.map +1 -0
  147. package/dist/lib/config-migration/runner.test.d.ts +5 -0
  148. package/dist/lib/config-migration/runner.test.d.ts.map +1 -0
  149. package/dist/lib/config-migration/runner.test.js +235 -0
  150. package/dist/lib/config-migration/runner.test.js.map +1 -0
  151. package/dist/lib/config-migration/types.d.ts +120 -0
  152. package/dist/lib/config-migration/types.d.ts.map +1 -0
  153. package/dist/lib/config-migration/types.js +70 -0
  154. package/dist/lib/config-migration/types.js.map +1 -0
  155. package/dist/lib/config-validation.d.ts.map +1 -1
  156. package/dist/lib/config-validation.js +6 -0
  157. package/dist/lib/config-validation.js.map +1 -1
  158. package/dist/lib/config-validation.test.js +25 -0
  159. package/dist/lib/config-validation.test.js.map +1 -1
  160. package/dist/lib/config.d.ts +31 -7
  161. package/dist/lib/config.d.ts.map +1 -1
  162. package/dist/lib/config.js +2 -0
  163. package/dist/lib/config.js.map +1 -1
  164. package/dist/lib/config.test.js +3 -15
  165. package/dist/lib/config.test.js.map +1 -1
  166. package/dist/lib/constants.d.ts +12 -4
  167. package/dist/lib/constants.d.ts.map +1 -1
  168. package/dist/lib/constants.js +24 -5
  169. package/dist/lib/constants.js.map +1 -1
  170. package/dist/lib/constants.test.js +88 -29
  171. package/dist/lib/constants.test.js.map +1 -1
  172. package/dist/lib/deprecation.d.ts +18 -0
  173. package/dist/lib/deprecation.d.ts.map +1 -0
  174. package/dist/lib/deprecation.js +28 -0
  175. package/dist/lib/deprecation.js.map +1 -0
  176. package/dist/lib/deprecation.test.d.ts +2 -0
  177. package/dist/lib/deprecation.test.d.ts.map +1 -0
  178. package/dist/lib/deprecation.test.js +71 -0
  179. package/dist/lib/deprecation.test.js.map +1 -0
  180. package/dist/lib/hooks/confirmation.d.ts +49 -0
  181. package/dist/lib/hooks/confirmation.d.ts.map +1 -0
  182. package/dist/lib/hooks/confirmation.js +147 -0
  183. package/dist/lib/hooks/confirmation.js.map +1 -0
  184. package/dist/lib/hooks/confirmation.test.d.ts +7 -0
  185. package/dist/lib/hooks/confirmation.test.d.ts.map +1 -0
  186. package/dist/lib/hooks/confirmation.test.js +300 -0
  187. package/dist/lib/hooks/confirmation.test.js.map +1 -0
  188. package/dist/lib/hooks/executor.d.ts +16 -1
  189. package/dist/lib/hooks/executor.d.ts.map +1 -1
  190. package/dist/lib/hooks/executor.js +53 -4
  191. package/dist/lib/hooks/executor.js.map +1 -1
  192. package/dist/lib/hooks/index.d.ts +4 -2
  193. package/dist/lib/hooks/index.d.ts.map +1 -1
  194. package/dist/lib/hooks/index.js +3 -2
  195. package/dist/lib/hooks/index.js.map +1 -1
  196. package/dist/lib/hooks/types.d.ts +16 -0
  197. package/dist/lib/hooks/types.d.ts.map +1 -1
  198. package/dist/lib/hooks/types.js +12 -0
  199. package/dist/lib/hooks/types.js.map +1 -1
  200. package/dist/lib/logger.d.ts +40 -155
  201. package/dist/lib/logger.d.ts.map +1 -1
  202. package/dist/lib/logger.js +349 -420
  203. package/dist/lib/logger.js.map +1 -1
  204. package/dist/lib/logger.test.d.ts +10 -1
  205. package/dist/lib/logger.test.d.ts.map +1 -1
  206. package/dist/lib/logger.test.js +658 -258
  207. package/dist/lib/logger.test.js.map +1 -1
  208. package/dist/lib/lswt/action-executors.d.ts +2 -0
  209. package/dist/lib/lswt/action-executors.d.ts.map +1 -1
  210. package/dist/lib/lswt/action-executors.js +4 -3
  211. package/dist/lib/lswt/action-executors.js.map +1 -1
  212. package/dist/lib/lswt/action-executors.test.js +7 -0
  213. package/dist/lib/lswt/action-executors.test.js.map +1 -1
  214. package/dist/lib/lswt/args.d.ts.map +1 -1
  215. package/dist/lib/lswt/args.js +15 -1
  216. package/dist/lib/lswt/args.js.map +1 -1
  217. package/dist/lib/lswt/environment.d.ts +21 -2
  218. package/dist/lib/lswt/environment.d.ts.map +1 -1
  219. package/dist/lib/lswt/environment.js +73 -32
  220. package/dist/lib/lswt/environment.js.map +1 -1
  221. package/dist/lib/lswt/environment.test.js +79 -1
  222. package/dist/lib/lswt/environment.test.js.map +1 -1
  223. package/dist/lib/lswt/index.d.ts +1 -0
  224. package/dist/lib/lswt/index.d.ts.map +1 -1
  225. package/dist/lib/lswt/index.js +2 -0
  226. package/dist/lib/lswt/index.js.map +1 -1
  227. package/dist/lib/lswt/table.d.ts +15 -0
  228. package/dist/lib/lswt/table.d.ts.map +1 -0
  229. package/dist/lib/lswt/table.js +61 -0
  230. package/dist/lib/lswt/table.js.map +1 -0
  231. package/dist/lib/lswt/table.test.d.ts +5 -0
  232. package/dist/lib/lswt/table.test.d.ts.map +1 -0
  233. package/dist/lib/lswt/table.test.js +262 -0
  234. package/dist/lib/lswt/table.test.js.map +1 -0
  235. package/dist/lib/lswt/types.d.ts +4 -0
  236. package/dist/lib/lswt/types.d.ts.map +1 -1
  237. package/dist/lib/lswt/worktree-info.d.ts.map +1 -1
  238. package/dist/lib/lswt/worktree-info.js +1 -6
  239. package/dist/lib/lswt/worktree-info.js.map +1 -1
  240. package/dist/lib/lswt/worktree-info.test.js +5 -17
  241. package/dist/lib/lswt/worktree-info.test.js.map +1 -1
  242. package/dist/lib/newpr/args.d.ts.map +1 -1
  243. package/dist/lib/newpr/args.js +36 -1
  244. package/dist/lib/newpr/args.js.map +1 -1
  245. package/dist/lib/newpr/hook-runner.d.ts +11 -0
  246. package/dist/lib/newpr/hook-runner.d.ts.map +1 -1
  247. package/dist/lib/newpr/hook-runner.js +49 -1
  248. package/dist/lib/newpr/hook-runner.js.map +1 -1
  249. package/dist/lib/newpr/hook-runner.test.js +121 -0
  250. package/dist/lib/newpr/hook-runner.test.js.map +1 -1
  251. package/dist/lib/newpr/plan-generator.d.ts +121 -0
  252. package/dist/lib/newpr/plan-generator.d.ts.map +1 -0
  253. package/dist/lib/newpr/plan-generator.js +185 -0
  254. package/dist/lib/newpr/plan-generator.js.map +1 -0
  255. package/dist/lib/newpr/plan-generator.test.d.ts +7 -0
  256. package/dist/lib/newpr/plan-generator.test.d.ts.map +1 -0
  257. package/dist/lib/newpr/plan-generator.test.js +387 -0
  258. package/dist/lib/newpr/plan-generator.test.js.map +1 -0
  259. package/dist/lib/newpr/types.d.ts +12 -0
  260. package/dist/lib/newpr/types.d.ts.map +1 -1
  261. package/dist/lib/prs/actions.d.ts +5 -1
  262. package/dist/lib/prs/actions.d.ts.map +1 -1
  263. package/dist/lib/prs/actions.js +12 -10
  264. package/dist/lib/prs/actions.js.map +1 -1
  265. package/dist/lib/prs/actions.test.js +48 -5
  266. package/dist/lib/prs/actions.test.js.map +1 -1
  267. package/dist/lib/prs/command.d.ts +21 -0
  268. package/dist/lib/prs/command.d.ts.map +1 -0
  269. package/dist/lib/prs/command.js +175 -0
  270. package/dist/lib/prs/command.js.map +1 -0
  271. package/dist/lib/prs/command.test.d.ts +11 -0
  272. package/dist/lib/prs/command.test.d.ts.map +1 -0
  273. package/dist/lib/prs/command.test.js +409 -0
  274. package/dist/lib/prs/command.test.js.map +1 -0
  275. package/dist/lib/prs/interactive.d.ts.map +1 -1
  276. package/dist/lib/prs/interactive.js +15 -2
  277. package/dist/lib/prs/interactive.js.map +1 -1
  278. package/dist/lib/prs/interactive.test.js +153 -0
  279. package/dist/lib/prs/interactive.test.js.map +1 -1
  280. package/dist/lib/prs/types.d.ts +15 -0
  281. package/dist/lib/prs/types.d.ts.map +1 -1
  282. package/dist/lib/ui/error.d.ts +31 -0
  283. package/dist/lib/ui/error.d.ts.map +1 -0
  284. package/dist/lib/ui/error.js +47 -0
  285. package/dist/lib/ui/error.js.map +1 -0
  286. package/dist/lib/ui/error.test.d.ts +2 -0
  287. package/dist/lib/ui/error.test.d.ts.map +1 -0
  288. package/dist/lib/ui/error.test.js +143 -0
  289. package/dist/lib/ui/error.test.js.map +1 -0
  290. package/dist/lib/ui/index.d.ts +15 -0
  291. package/dist/lib/ui/index.d.ts.map +1 -0
  292. package/dist/lib/ui/index.js +19 -0
  293. package/dist/lib/ui/index.js.map +1 -0
  294. package/dist/lib/ui/output.d.ts +18 -0
  295. package/dist/lib/ui/output.d.ts.map +1 -0
  296. package/dist/lib/ui/output.js +31 -0
  297. package/dist/lib/ui/output.js.map +1 -0
  298. package/dist/lib/ui/output.test.d.ts +2 -0
  299. package/dist/lib/ui/output.test.d.ts.map +1 -0
  300. package/dist/lib/ui/output.test.js +59 -0
  301. package/dist/lib/ui/output.test.js.map +1 -0
  302. package/dist/lib/ui/spinner.d.ts +10 -0
  303. package/dist/lib/ui/spinner.d.ts.map +1 -0
  304. package/dist/lib/ui/spinner.js +10 -0
  305. package/dist/lib/ui/spinner.js.map +1 -0
  306. package/dist/lib/ui/status.d.ts +65 -0
  307. package/dist/lib/ui/status.d.ts.map +1 -0
  308. package/dist/lib/ui/status.js +100 -0
  309. package/dist/lib/ui/status.js.map +1 -0
  310. package/dist/lib/ui/status.test.d.ts +2 -0
  311. package/dist/lib/ui/status.test.d.ts.map +1 -0
  312. package/dist/lib/ui/status.test.js +158 -0
  313. package/dist/lib/ui/status.test.js.map +1 -0
  314. package/dist/lib/ui/table.d.ts +39 -0
  315. package/dist/lib/ui/table.d.ts.map +1 -0
  316. package/dist/lib/ui/table.js +45 -0
  317. package/dist/lib/ui/table.js.map +1 -0
  318. package/dist/lib/ui/table.test.d.ts +2 -0
  319. package/dist/lib/ui/table.test.d.ts.map +1 -0
  320. package/dist/lib/ui/table.test.js +115 -0
  321. package/dist/lib/ui/table.test.js.map +1 -0
  322. package/dist/lib/ui/theme.d.ts +34 -0
  323. package/dist/lib/ui/theme.d.ts.map +1 -0
  324. package/dist/lib/ui/theme.js +37 -0
  325. package/dist/lib/ui/theme.js.map +1 -0
  326. package/dist/lib/ui/theme.test.d.ts +2 -0
  327. package/dist/lib/ui/theme.test.d.ts.map +1 -0
  328. package/dist/lib/ui/theme.test.js +76 -0
  329. package/dist/lib/ui/theme.test.js.map +1 -0
  330. package/dist/lib/wtconfig/environment.d.ts +18 -1
  331. package/dist/lib/wtconfig/environment.d.ts.map +1 -1
  332. package/dist/lib/wtconfig/environment.js +60 -24
  333. package/dist/lib/wtconfig/environment.js.map +1 -1
  334. package/dist/lib/wtconfig/environment.test.js +45 -1
  335. package/dist/lib/wtconfig/environment.test.js.map +1 -1
  336. package/dist/lib/wtlink/config-manifest.test.js +26 -0
  337. package/dist/lib/wtlink/config-manifest.test.js.map +1 -1
  338. package/dist/lib/wtlink/link-configs.js +7 -7
  339. package/dist/lib/wtlink/link-configs.js.map +1 -1
  340. package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -1
  341. package/dist/lib/wtlink/validate-manifest.js +5 -5
  342. package/dist/lib/wtlink/validate-manifest.js.map +1 -1
  343. package/dist/lib/wtstate/args.d.ts.map +1 -1
  344. package/dist/lib/wtstate/args.js +2 -0
  345. package/dist/lib/wtstate/args.js.map +1 -1
  346. package/dist/mcp/server.d.ts +2 -1
  347. package/dist/mcp/server.d.ts.map +1 -1
  348. package/dist/mcp/server.js +264 -44
  349. package/dist/mcp/server.js.map +1 -1
  350. package/dist/mcp/server.test.js +111 -0
  351. package/dist/mcp/server.test.js.map +1 -1
  352. package/package.json +3 -1
  353. package/schemas/worktreerc.schema.json +23 -0
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Tests for Config Migration Detector
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+ import os from 'os';
8
+ import { detectMigrationIssues, needsMigration } from './detector.js';
9
+ import { CURRENT_CONFIG_VERSION } from './types.js';
10
+ describe('Config Migration Detector', () => {
11
+ let tempDir;
12
+ beforeEach(() => {
13
+ // Create a temporary directory for each test
14
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'config-migration-test-'));
15
+ });
16
+ afterEach(() => {
17
+ // Clean up temporary directory
18
+ fs.rmSync(tempDir, { recursive: true, force: true });
19
+ });
20
+ describe('detectMigrationIssues', () => {
21
+ describe('version checking', () => {
22
+ it('detects missing configVersion in empty config', () => {
23
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({}));
24
+ const result = detectMigrationIssues(tempDir);
25
+ expect(result.issues).toHaveLength(1);
26
+ expect(result.issues[0].type).toBe('missing_version');
27
+ expect(result.issues[0].severity).toBe('warning');
28
+ expect(result.issues[0].autoFixable).toBe(true);
29
+ expect(result.issues[0].fixAction?.type).toBe('set_key');
30
+ expect(result.issues[0].fixAction?.value).toBe(CURRENT_CONFIG_VERSION);
31
+ });
32
+ it('detects missing configVersion in populated config', () => {
33
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ baseBranch: 'develop', draftPr: true }));
34
+ const result = detectMigrationIssues(tempDir);
35
+ const versionIssue = result.issues.find((i) => i.type === 'missing_version');
36
+ expect(versionIssue).toBeDefined();
37
+ expect(versionIssue?.autoFixable).toBe(true);
38
+ });
39
+ it('detects outdated configVersion', () => {
40
+ // This test will only be relevant when CURRENT_CONFIG_VERSION > 1
41
+ // For now, skip if version is 1
42
+ if (CURRENT_CONFIG_VERSION <= 1) {
43
+ return;
44
+ }
45
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION - 1 }));
46
+ const result = detectMigrationIssues(tempDir);
47
+ const versionIssue = result.issues.find((i) => i.type === 'outdated_version');
48
+ expect(versionIssue).toBeDefined();
49
+ expect(versionIssue?.autoFixable).toBe(true);
50
+ });
51
+ it('detects future configVersion', () => {
52
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION + 1 }));
53
+ const result = detectMigrationIssues(tempDir);
54
+ const versionIssue = result.issues.find((i) => i.type === 'future_version');
55
+ expect(versionIssue).toBeDefined();
56
+ expect(versionIssue?.severity).toBe('error');
57
+ expect(versionIssue?.autoFixable).toBe(false);
58
+ expect(versionIssue?.suggestion).toContain('Upgrade');
59
+ });
60
+ it('returns no version issues for up-to-date config', () => {
61
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION, baseBranch: 'main' }));
62
+ const result = detectMigrationIssues(tempDir);
63
+ const versionIssues = result.issues.filter((i) => i.type === 'missing_version' ||
64
+ i.type === 'outdated_version' ||
65
+ i.type === 'future_version');
66
+ expect(versionIssues).toHaveLength(0);
67
+ });
68
+ it('handles non-integer configVersion as string', () => {
69
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: '1' }));
70
+ const result = detectMigrationIssues(tempDir);
71
+ const typeIssue = result.issues.find((i) => i.type === 'invalid_value_type');
72
+ expect(typeIssue).toBeDefined();
73
+ expect(typeIssue?.autoFixable).toBe(true);
74
+ expect(typeIssue?.fixAction?.value).toBe(1);
75
+ });
76
+ });
77
+ describe('legacy file detection', () => {
78
+ it('detects legacy .wtlinkrc file existence', () => {
79
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION }));
80
+ fs.writeFileSync(path.join(tempDir, '.wtlinkrc'), '.env.local\n.vscode/settings.json');
81
+ const result = detectMigrationIssues(tempDir);
82
+ const legacyIssue = result.issues.find((i) => i.type === 'legacy_wtlinkrc');
83
+ expect(legacyIssue).toBeDefined();
84
+ expect(legacyIssue?.autoFixable).toBe(true);
85
+ expect(result.legacyFilesFound).toHaveLength(1);
86
+ expect(result.legacyFilesFound[0]).toContain('.wtlinkrc');
87
+ });
88
+ it('does not flag legacy if config has wtlink section', () => {
89
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({
90
+ configVersion: CURRENT_CONFIG_VERSION,
91
+ wtlink: { enabled: ['.env.local'], disabled: [] },
92
+ }));
93
+ fs.writeFileSync(path.join(tempDir, '.wtlinkrc'), '.env.local');
94
+ const result = detectMigrationIssues(tempDir);
95
+ // Should still detect the legacy file but note the merge scenario
96
+ const legacyIssue = result.issues.find((i) => i.type === 'legacy_wtlinkrc');
97
+ expect(legacyIssue).toBeDefined();
98
+ expect(legacyIssue?.details).toContain('merge');
99
+ });
100
+ });
101
+ describe('unknown key detection', () => {
102
+ it('detects unknown keys', () => {
103
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({
104
+ configVersion: CURRENT_CONFIG_VERSION,
105
+ unknownProperty: 'value',
106
+ }));
107
+ const result = detectMigrationIssues(tempDir);
108
+ const unknownIssue = result.issues.find((i) => i.type === 'unknown_key');
109
+ expect(unknownIssue).toBeDefined();
110
+ expect(unknownIssue?.keyPath).toBe('unknownProperty');
111
+ expect(unknownIssue?.severity).toBe('info');
112
+ expect(unknownIssue?.autoFixable).toBe(false);
113
+ });
114
+ it('suggests similar key for typos (Levenshtein)', () => {
115
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({
116
+ configVersion: CURRENT_CONFIG_VERSION,
117
+ baseBranhc: 'main', // Typo: baseBranch
118
+ }));
119
+ const result = detectMigrationIssues(tempDir);
120
+ const unknownIssue = result.issues.find((i) => i.keyPath === 'baseBranhc');
121
+ expect(unknownIssue).toBeDefined();
122
+ expect(unknownIssue?.suggestion).toContain('baseBranch');
123
+ });
124
+ it('detects multiple issues simultaneously', () => {
125
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({
126
+ // Missing configVersion
127
+ baseBranch: 'main',
128
+ unknownKey: 'value',
129
+ anotherUnknown: 123,
130
+ }));
131
+ fs.writeFileSync(path.join(tempDir, '.wtlinkrc'), '.env');
132
+ const result = detectMigrationIssues(tempDir);
133
+ expect(result.issues.length).toBeGreaterThanOrEqual(3);
134
+ expect(result.issues.some((i) => i.type === 'missing_version')).toBe(true);
135
+ expect(result.issues.some((i) => i.type === 'unknown_key')).toBe(true);
136
+ expect(result.issues.some((i) => i.type === 'legacy_wtlinkrc')).toBe(true);
137
+ });
138
+ });
139
+ describe('edge cases', () => {
140
+ it('handles non-existent config gracefully', () => {
141
+ const result = detectMigrationIssues(tempDir);
142
+ expect(result.issues).toHaveLength(1);
143
+ expect(result.issues[0].type).toBe('missing_version');
144
+ expect(result.issues[0].severity).toBe('info');
145
+ expect(result.configPath).toBeUndefined();
146
+ });
147
+ it('handles invalid JSON config', () => {
148
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), '{ invalid json }');
149
+ const result = detectMigrationIssues(tempDir);
150
+ expect(result.parseError).toBeDefined();
151
+ expect(result.issues.some((i) => i.severity === 'error')).toBe(true);
152
+ });
153
+ it('handles JSON with trailing commas via JSON5', () => {
154
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), `{
155
+ "configVersion": 1,
156
+ "baseBranch": "main",
157
+ }`);
158
+ const result = detectMigrationIssues(tempDir);
159
+ // Should parse successfully with JSON5
160
+ expect(result.parseError).toBeUndefined();
161
+ expect(result.rawConfig?.configVersion).toBe(1);
162
+ });
163
+ it('returns correct autoFixable counts', () => {
164
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ baseBranch: 'main' }) // Missing version - auto-fixable
165
+ );
166
+ fs.writeFileSync(path.join(tempDir, '.wtlinkrc'), '.env'); // Legacy - auto-fixable
167
+ const result = detectMigrationIssues(tempDir);
168
+ expect(result.autoFixableCount).toBeGreaterThanOrEqual(2);
169
+ expect(result.migrationRecommended).toBe(true);
170
+ });
171
+ });
172
+ });
173
+ describe('needsMigration', () => {
174
+ it('returns false when no config file exists', () => {
175
+ const result = needsMigration(tempDir);
176
+ expect(result).toBe(false);
177
+ });
178
+ it('returns true when legacy .wtlinkrc exists', () => {
179
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION }));
180
+ fs.writeFileSync(path.join(tempDir, '.wtlinkrc'), '.env');
181
+ const result = needsMigration(tempDir);
182
+ expect(result).toBe(true);
183
+ });
184
+ it('returns true when configVersion is missing', () => {
185
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ baseBranch: 'main' }));
186
+ const result = needsMigration(tempDir);
187
+ expect(result).toBe(true);
188
+ });
189
+ it('returns false when config is up-to-date', () => {
190
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), JSON.stringify({ configVersion: CURRENT_CONFIG_VERSION, baseBranch: 'main' }));
191
+ const result = needsMigration(tempDir);
192
+ expect(result).toBe(false);
193
+ });
194
+ it('returns true when config has parse errors', () => {
195
+ fs.writeFileSync(path.join(tempDir, '.worktreerc'), '{ invalid }');
196
+ const result = needsMigration(tempDir);
197
+ expect(result).toBe(true);
198
+ });
199
+ });
200
+ });
201
+ //# sourceMappingURL=detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.test.js","sourceRoot":"","sources":["../../../src/lib/config-migration/detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAM,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,6CAA6C;QAC7C,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,+BAA+B;QAC/B,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAChC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;gBACvD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBAExE,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC3D,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACzD,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;gBAC7E,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;gBACxC,kEAAkE;gBAClE,gCAAgC;gBAChC,IAAI,sBAAsB,IAAI,CAAC,EAAE,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAED,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,GAAG,CAAC,EAAE,CAAC,CAC9D,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;gBAC9E,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;gBACtC,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,GAAG,CAAC,EAAE,CAAC,CAC9D,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;gBAC5E,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBACzD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAC9E,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,iBAAiB;oBAC5B,CAAC,CAAC,IAAI,KAAK,kBAAkB;oBAC7B,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAC9B,CAAC;gBACF,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBACrD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAE5F,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAC;gBAC7E,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACjD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC,CAC1D,CAAC;gBACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,mCAAmC,CAAC,CAAC;gBAEvF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;gBAC5E,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;gBAC3D,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC;oBACb,aAAa,EAAE,sBAAsB;oBACrC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;iBAClD,CAAC,CACH,CAAC;gBACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;gBAEhE,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,kEAAkE;gBAClE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;gBAC5E,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACrC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;gBAC9B,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC;oBACb,aAAa,EAAE,sBAAsB;oBACrC,eAAe,EAAE,OAAO;iBACzB,CAAC,CACH,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;gBACzE,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtD,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;gBACtD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC;oBACb,aAAa,EAAE,sBAAsB;oBACrC,UAAU,EAAE,MAAM,EAAE,mBAAmB;iBACxC,CAAC,CACH,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;gBAC3E,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBAChD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC;oBACb,wBAAwB;oBACxB,UAAU,EAAE,MAAM;oBAClB,UAAU,EAAE,OAAO;oBACnB,cAAc,EAAE,GAAG;iBACpB,CAAC,CACH,CAAC;gBACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;gBAE1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;gBAChD,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;gBACrC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBAExE,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;gBACrD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC;;;YAGE,CACH,CAAC;gBAEF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,uCAAuC;gBACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;gBAC5C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,iCAAiC;iBACzE,CAAC;gBACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB;gBAEnF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAE9C,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC,CAC1D,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAE5F,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAC9E,CAAC;YAEF,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Config Migration System - Public API
3
+ *
4
+ * Provides schema versioning, detection of deprecated configurations,
5
+ * and guided migrations for git-worktree-tools.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { detectMigrationIssues, runMigration, needsMigration } from './config-migration/index.js';
10
+ *
11
+ * // Quick check for startup banners
12
+ * if (needsMigration(repoRoot)) {
13
+ * console.log('Config migration available. Run: wtconfig migrate');
14
+ * }
15
+ *
16
+ * // Full detection
17
+ * const detection = detectMigrationIssues(repoRoot);
18
+ * if (detection.migrationRecommended) {
19
+ * const result = await runMigration(repoRoot, detection, { interactive: true });
20
+ * }
21
+ * ```
22
+ */
23
+ export type { IssueSeverity, IssueType, MigrationIssue, MigrationAction, DetectionResult, MigrationResult, MigrationOptions, WtlinkMergeResult, } from './types.js';
24
+ export { CURRENT_CONFIG_VERSION, MINIMUM_SUPPORTED_VERSION, BACKUP_DIRECTORY, KNOWN_CONFIG_KEYS, DEPRECATED_KEYS, VERSION_HISTORY, } from './types.js';
25
+ export { detectMigrationIssues, needsMigration } from './detector.js';
26
+ export { runMigration, createConfigBackup, restoreFromBackup } from './runner.js';
27
+ export { formatMigrationReport, formatMigrationReportJSON, formatMigrationResultReport, formatMigrationResultJSON, formatDryRunPreview, } from './reporter.js';
28
+ export { mergeWtlinkConfigs } from './runner.js';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config-migration/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,YAAY,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGlF,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Config Migration System - Public API
3
+ *
4
+ * Provides schema versioning, detection of deprecated configurations,
5
+ * and guided migrations for git-worktree-tools.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { detectMigrationIssues, runMigration, needsMigration } from './config-migration/index.js';
10
+ *
11
+ * // Quick check for startup banners
12
+ * if (needsMigration(repoRoot)) {
13
+ * console.log('Config migration available. Run: wtconfig migrate');
14
+ * }
15
+ *
16
+ * // Full detection
17
+ * const detection = detectMigrationIssues(repoRoot);
18
+ * if (detection.migrationRecommended) {
19
+ * const result = await runMigration(repoRoot, detection, { interactive: true });
20
+ * }
21
+ * ```
22
+ */
23
+ // Re-export constants
24
+ export { CURRENT_CONFIG_VERSION, MINIMUM_SUPPORTED_VERSION, BACKUP_DIRECTORY, KNOWN_CONFIG_KEYS, DEPRECATED_KEYS, VERSION_HISTORY, } from './types.js';
25
+ // Re-export detection functions
26
+ export { detectMigrationIssues, needsMigration } from './detector.js';
27
+ // Re-export migration runner functions
28
+ export { runMigration, createConfigBackup, restoreFromBackup } from './runner.js';
29
+ // Re-export reporter functions
30
+ export { formatMigrationReport, formatMigrationReportJSON, formatMigrationResultReport, formatMigrationResultJSON, formatDryRunPreview, } from './reporter.js';
31
+ // Re-export merge utility (useful for testing)
32
+ export { mergeWtlinkConfigs } from './runner.js';
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config-migration/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAcH,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,gCAAgC;AAChC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtE,uCAAuC;AACvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAElF,+BAA+B;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Config Migration Reporter
3
+ *
4
+ * Formats migration detection results and execution results
5
+ * for console output and JSON output.
6
+ */
7
+ import type { DetectionResult, MigrationResult } from './types.js';
8
+ /**
9
+ * Options for report formatting
10
+ */
11
+ export interface ReportOptions {
12
+ /** Show verbose details for each issue */
13
+ verbose?: boolean;
14
+ /** Use colors in output (default: true) */
15
+ useColors?: boolean;
16
+ }
17
+ /**
18
+ * Format migration detection report for console output
19
+ *
20
+ * @param detection - Detection result from detectMigrationIssues
21
+ * @param options - Formatting options
22
+ * @returns Formatted string for console output
23
+ */
24
+ export declare function formatMigrationReport(detection: DetectionResult, options?: ReportOptions): string;
25
+ /**
26
+ * Format migration detection report as JSON
27
+ *
28
+ * @param detection - Detection result from detectMigrationIssues
29
+ * @returns JSON-serializable object
30
+ */
31
+ export declare function formatMigrationReportJSON(detection: DetectionResult): object;
32
+ /**
33
+ * Format migration execution result for console output
34
+ *
35
+ * @param result - Migration result from runMigration
36
+ * @returns Formatted string for console output
37
+ */
38
+ export declare function formatMigrationResultReport(result: MigrationResult): string;
39
+ /**
40
+ * Format migration execution result as JSON
41
+ *
42
+ * @param result - Migration result from runMigration
43
+ * @returns JSON-serializable object
44
+ */
45
+ export declare function formatMigrationResultJSON(result: MigrationResult): object;
46
+ /**
47
+ * Format dry-run preview for console output
48
+ *
49
+ * @param detection - Detection result
50
+ * @returns Formatted string for console output
51
+ */
52
+ export declare function formatDryRunPreview(detection: DetectionResult): string;
53
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../src/lib/config-migration/reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA6DD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAmER;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CA+B5E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqD3E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAezE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAuBtE"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Config Migration Reporter
3
+ *
4
+ * Formats migration detection results and execution results
5
+ * for console output and JSON output.
6
+ */
7
+ import * as colors from '../colors.js';
8
+ /**
9
+ * Get severity icon for console output
10
+ */
11
+ function getSeverityIcon(severity) {
12
+ switch (severity) {
13
+ case 'error':
14
+ return '✗';
15
+ case 'warning':
16
+ return '⚠';
17
+ case 'info':
18
+ return 'ℹ';
19
+ default:
20
+ return '•';
21
+ }
22
+ }
23
+ /**
24
+ * Get colored severity text
25
+ */
26
+ function colorSeverity(text, severity) {
27
+ switch (severity) {
28
+ case 'error':
29
+ return colors.error(text);
30
+ case 'warning':
31
+ return colors.warning(text);
32
+ case 'info':
33
+ return colors.dim(text);
34
+ default:
35
+ return text;
36
+ }
37
+ }
38
+ /**
39
+ * Format a single issue for console output
40
+ */
41
+ function formatIssue(issue, options = {}) {
42
+ const { verbose = false } = options;
43
+ const lines = [];
44
+ const icon = getSeverityIcon(issue.severity);
45
+ const autoFixLabel = issue.autoFixable ? colors.success('[auto-fix available]') : '';
46
+ lines.push(` ${colorSeverity(icon, issue.severity)} ${issue.message} ${autoFixLabel}`);
47
+ if (verbose && issue.details) {
48
+ lines.push(` ${colors.dim(issue.details)}`);
49
+ }
50
+ if (issue.keyPath) {
51
+ lines.push(` ${colors.dim(`Key: ${issue.keyPath}`)}`);
52
+ }
53
+ if (issue.suggestion) {
54
+ lines.push(` ${colors.cyan(`→ ${issue.suggestion}`)}`);
55
+ }
56
+ return lines.join('\n');
57
+ }
58
+ /**
59
+ * Format migration detection report for console output
60
+ *
61
+ * @param detection - Detection result from detectMigrationIssues
62
+ * @param options - Formatting options
63
+ * @returns Formatted string for console output
64
+ */
65
+ export function formatMigrationReport(detection, options = {}) {
66
+ const lines = [];
67
+ // Header
68
+ lines.push(colors.bold('Config Migration Report'));
69
+ lines.push(colors.dim('═'.repeat(40)));
70
+ lines.push('');
71
+ // Summary
72
+ if (detection.issues.length === 0) {
73
+ lines.push(colors.success('✓ No migration issues found. Config is up to date.'));
74
+ return lines.join('\n');
75
+ }
76
+ const summaryParts = [];
77
+ if (detection.autoFixableCount > 0) {
78
+ summaryParts.push(colors.success(`${detection.autoFixableCount} auto-fixable`));
79
+ }
80
+ if (detection.manualFixCount > 0) {
81
+ summaryParts.push(colors.warning(`${detection.manualFixCount} manual`));
82
+ }
83
+ lines.push(`Found ${detection.issues.length} issue(s): ${summaryParts.join(', ')}`);
84
+ lines.push('');
85
+ // Group issues by severity
86
+ const errors = detection.issues.filter((i) => i.severity === 'error');
87
+ const warnings = detection.issues.filter((i) => i.severity === 'warning');
88
+ const infos = detection.issues.filter((i) => i.severity === 'info');
89
+ if (errors.length > 0) {
90
+ lines.push(colors.error('Errors:'));
91
+ for (const issue of errors) {
92
+ lines.push(formatIssue(issue, options));
93
+ }
94
+ lines.push('');
95
+ }
96
+ if (warnings.length > 0) {
97
+ lines.push(colors.warning('Warnings:'));
98
+ for (const issue of warnings) {
99
+ lines.push(formatIssue(issue, options));
100
+ }
101
+ lines.push('');
102
+ }
103
+ if (infos.length > 0) {
104
+ lines.push(colors.dim('Info:'));
105
+ for (const issue of infos) {
106
+ lines.push(formatIssue(issue, options));
107
+ }
108
+ lines.push('');
109
+ }
110
+ // Migration recommendation
111
+ if (detection.migrationRecommended) {
112
+ lines.push(colors.dim('─'.repeat(40)));
113
+ if (detection.autoFixableCount > 0) {
114
+ lines.push(colors.cyan(`Run ${colors.bold("'wtconfig migrate'")} to apply ${detection.autoFixableCount} auto-fix(es).`));
115
+ }
116
+ }
117
+ return lines.join('\n');
118
+ }
119
+ /**
120
+ * Format migration detection report as JSON
121
+ *
122
+ * @param detection - Detection result from detectMigrationIssues
123
+ * @returns JSON-serializable object
124
+ */
125
+ export function formatMigrationReportJSON(detection) {
126
+ return {
127
+ summary: {
128
+ totalIssues: detection.issues.length,
129
+ autoFixableCount: detection.autoFixableCount,
130
+ manualFixCount: detection.manualFixCount,
131
+ migrationRecommended: detection.migrationRecommended,
132
+ currentVersion: detection.currentVersion,
133
+ targetVersion: detection.targetVersion,
134
+ },
135
+ configPath: detection.configPath,
136
+ legacyFilesFound: detection.legacyFilesFound,
137
+ parseError: detection.parseError,
138
+ issues: detection.issues.map((issue) => ({
139
+ type: issue.type,
140
+ severity: issue.severity,
141
+ message: issue.message,
142
+ details: issue.details,
143
+ keyPath: issue.keyPath,
144
+ currentValue: issue.currentValue,
145
+ suggestedValue: issue.suggestedValue,
146
+ suggestion: issue.suggestion,
147
+ autoFixable: issue.autoFixable,
148
+ fixAction: issue.fixAction
149
+ ? {
150
+ type: issue.fixAction.type,
151
+ description: issue.fixAction.description,
152
+ }
153
+ : undefined,
154
+ })),
155
+ };
156
+ }
157
+ /**
158
+ * Format migration execution result for console output
159
+ *
160
+ * @param result - Migration result from runMigration
161
+ * @returns Formatted string for console output
162
+ */
163
+ export function formatMigrationResultReport(result) {
164
+ const lines = [];
165
+ if (result.success) {
166
+ if (result.actionsExecuted.length === 0) {
167
+ lines.push(colors.success('✓ Config is already up to date. No changes needed.'));
168
+ }
169
+ else {
170
+ lines.push(colors.success(`✓ Migration complete. ${result.actionsExecuted.length} action(s) applied.`));
171
+ if (result.backupPath) {
172
+ lines.push(colors.dim(` Backup saved to: ${result.backupPath}`));
173
+ }
174
+ lines.push('');
175
+ lines.push(colors.dim('Actions executed:'));
176
+ for (const action of result.actionsExecuted) {
177
+ lines.push(` • ${action.description}`);
178
+ }
179
+ }
180
+ }
181
+ else {
182
+ lines.push(colors.error(`✗ Migration failed with ${result.errors.length} error(s).`));
183
+ if (result.backupPath) {
184
+ lines.push(colors.warning(` Backup available at: ${result.backupPath}`));
185
+ lines.push(colors.dim(" To restore: copy the backup file to '.worktreerc'"));
186
+ }
187
+ lines.push('');
188
+ lines.push(colors.error('Errors:'));
189
+ for (const error of result.errors) {
190
+ lines.push(` • ${error}`);
191
+ }
192
+ if (result.actionsExecuted.length > 0) {
193
+ lines.push('');
194
+ lines.push(colors.dim('Actions completed before failure:'));
195
+ for (const action of result.actionsExecuted) {
196
+ lines.push(` • ${action.description}`);
197
+ }
198
+ }
199
+ }
200
+ if (result.actionsSkipped.length > 0) {
201
+ lines.push('');
202
+ lines.push(colors.dim('Actions skipped:'));
203
+ for (const action of result.actionsSkipped) {
204
+ lines.push(` • ${action.description}`);
205
+ }
206
+ }
207
+ return lines.join('\n');
208
+ }
209
+ /**
210
+ * Format migration execution result as JSON
211
+ *
212
+ * @param result - Migration result from runMigration
213
+ * @returns JSON-serializable object
214
+ */
215
+ export function formatMigrationResultJSON(result) {
216
+ return {
217
+ success: result.success,
218
+ backupPath: result.backupPath,
219
+ newConfigPath: result.newConfigPath,
220
+ actionsExecuted: result.actionsExecuted.map((a) => ({
221
+ type: a.type,
222
+ description: a.description,
223
+ })),
224
+ actionsSkipped: result.actionsSkipped.map((a) => ({
225
+ type: a.type,
226
+ description: a.description,
227
+ })),
228
+ errors: result.errors,
229
+ };
230
+ }
231
+ /**
232
+ * Format dry-run preview for console output
233
+ *
234
+ * @param detection - Detection result
235
+ * @returns Formatted string for console output
236
+ */
237
+ export function formatDryRunPreview(detection) {
238
+ const lines = [];
239
+ lines.push(colors.bold('[DRY RUN] Migration Preview'));
240
+ lines.push(colors.dim('─'.repeat(40)));
241
+ lines.push('');
242
+ lines.push(colors.dim('The following changes would be made:'));
243
+ lines.push('');
244
+ const autoFixableIssues = detection.issues.filter((i) => i.autoFixable && i.fixAction);
245
+ if (autoFixableIssues.length === 0) {
246
+ lines.push(colors.dim(' No auto-fixable changes to make.'));
247
+ }
248
+ else {
249
+ for (const issue of autoFixableIssues) {
250
+ lines.push(` • ${issue.fixAction.description}`);
251
+ }
252
+ }
253
+ lines.push('');
254
+ lines.push(colors.dim('No files were modified.'));
255
+ return lines.join('\n');
256
+ }
257
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/lib/config-migration/reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Config Migration Reporter
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=reporter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.test.d.ts","sourceRoot":"","sources":["../../../src/lib/config-migration/reporter.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}