@camaradesuk/git-worktree-tools 1.2.1 → 1.4.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 (346) hide show
  1. package/README.md +323 -16
  2. package/dist/api/clean.d.ts +65 -0
  3. package/dist/api/clean.d.ts.map +1 -0
  4. package/dist/api/clean.js +209 -0
  5. package/dist/api/clean.js.map +1 -0
  6. package/dist/api/create.d.ts +88 -0
  7. package/dist/api/create.d.ts.map +1 -0
  8. package/dist/api/create.js +370 -0
  9. package/dist/api/create.js.map +1 -0
  10. package/dist/api/index.d.ts +15 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/index.js +19 -0
  13. package/dist/api/index.js.map +1 -0
  14. package/dist/api/list.d.ts +74 -0
  15. package/dist/api/list.d.ts.map +1 -0
  16. package/dist/api/list.js +80 -0
  17. package/dist/api/list.js.map +1 -0
  18. package/dist/api/state.d.ts +43 -0
  19. package/dist/api/state.d.ts.map +1 -0
  20. package/dist/api/state.js +70 -0
  21. package/dist/api/state.js.map +1 -0
  22. package/dist/cli/cleanpr.js +171 -28
  23. package/dist/cli/cleanpr.js.map +1 -1
  24. package/dist/cli/cleanpr.test.js +460 -7
  25. package/dist/cli/cleanpr.test.js.map +1 -1
  26. package/dist/cli/lswt.js +8 -1
  27. package/dist/cli/lswt.js.map +1 -1
  28. package/dist/cli/lswt.test.js +2 -0
  29. package/dist/cli/lswt.test.js.map +1 -1
  30. package/dist/cli/newpr.js +189 -28
  31. package/dist/cli/newpr.js.map +1 -1
  32. package/dist/cli/newpr.test.js +350 -0
  33. package/dist/cli/newpr.test.js.map +1 -1
  34. package/dist/cli/wtconfig.d.ts +14 -0
  35. package/dist/cli/wtconfig.d.ts.map +1 -0
  36. package/dist/cli/wtconfig.js +948 -0
  37. package/dist/cli/wtconfig.js.map +1 -0
  38. package/dist/cli/wtconfig.test.d.ts +5 -0
  39. package/dist/cli/wtconfig.test.d.ts.map +1 -0
  40. package/dist/cli/wtconfig.test.js +1281 -0
  41. package/dist/cli/wtconfig.test.js.map +1 -0
  42. package/dist/cli/wtlink.js +5 -0
  43. package/dist/cli/wtlink.js.map +1 -1
  44. package/dist/cli/wtstate.d.ts +8 -0
  45. package/dist/cli/wtstate.d.ts.map +1 -0
  46. package/dist/cli/wtstate.js +83 -0
  47. package/dist/cli/wtstate.js.map +1 -0
  48. package/dist/cli/wtstate.test.d.ts +5 -0
  49. package/dist/cli/wtstate.test.d.ts.map +1 -0
  50. package/dist/cli/wtstate.test.js +193 -0
  51. package/dist/cli/wtstate.test.js.map +1 -0
  52. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
  53. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
  54. package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
  55. package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
  56. package/dist/e2e/helpers/cli-runner.d.ts +103 -0
  57. package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
  58. package/dist/e2e/helpers/cli-runner.js +200 -0
  59. package/dist/e2e/helpers/cli-runner.js.map +1 -0
  60. package/dist/e2e/helpers/gh-mock.d.ts +87 -0
  61. package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
  62. package/dist/e2e/helpers/gh-mock.js +384 -0
  63. package/dist/e2e/helpers/gh-mock.js.map +1 -0
  64. package/dist/e2e/helpers/index.d.ts +12 -0
  65. package/dist/e2e/helpers/index.d.ts.map +1 -0
  66. package/dist/e2e/helpers/index.js +16 -0
  67. package/dist/e2e/helpers/index.js.map +1 -0
  68. package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
  69. package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
  70. package/dist/e2e/helpers/pty-wrapper.js +276 -0
  71. package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
  72. package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
  73. package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
  74. package/dist/e2e/helpers/scenario-harness.js +360 -0
  75. package/dist/e2e/helpers/scenario-harness.js.map +1 -0
  76. package/dist/e2e/helpers/test-context.d.ts +120 -0
  77. package/dist/e2e/helpers/test-context.d.ts.map +1 -0
  78. package/dist/e2e/helpers/test-context.js +263 -0
  79. package/dist/e2e/helpers/test-context.js.map +1 -0
  80. package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
  81. package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
  82. package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
  83. package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
  84. package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
  85. package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
  86. package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
  87. package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
  88. package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
  89. package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
  90. package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
  91. package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
  92. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
  93. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
  94. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
  95. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
  96. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
  97. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
  98. package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
  99. package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
  100. package/dist/index.d.ts +15 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +14 -0
  103. package/dist/index.js.map +1 -1
  104. package/dist/lib/ai/base-provider.d.ts +58 -0
  105. package/dist/lib/ai/base-provider.d.ts.map +1 -0
  106. package/dist/lib/ai/base-provider.js +246 -0
  107. package/dist/lib/ai/base-provider.js.map +1 -0
  108. package/dist/lib/ai/base-provider.test.d.ts +7 -0
  109. package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
  110. package/dist/lib/ai/base-provider.test.js +320 -0
  111. package/dist/lib/ai/base-provider.test.js.map +1 -0
  112. package/dist/lib/ai/cli-provider.d.ts +87 -0
  113. package/dist/lib/ai/cli-provider.d.ts.map +1 -0
  114. package/dist/lib/ai/cli-provider.js +280 -0
  115. package/dist/lib/ai/cli-provider.js.map +1 -0
  116. package/dist/lib/ai/cli-provider.test.d.ts +5 -0
  117. package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
  118. package/dist/lib/ai/cli-provider.test.js +462 -0
  119. package/dist/lib/ai/cli-provider.test.js.map +1 -0
  120. package/dist/lib/ai/fallback-provider.d.ts +20 -0
  121. package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
  122. package/dist/lib/ai/fallback-provider.js +125 -0
  123. package/dist/lib/ai/fallback-provider.js.map +1 -0
  124. package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
  125. package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
  126. package/dist/lib/ai/fallback-provider.test.js +165 -0
  127. package/dist/lib/ai/fallback-provider.test.js.map +1 -0
  128. package/dist/lib/ai/generation-service.d.ts +44 -0
  129. package/dist/lib/ai/generation-service.d.ts.map +1 -0
  130. package/dist/lib/ai/generation-service.js +107 -0
  131. package/dist/lib/ai/generation-service.js.map +1 -0
  132. package/dist/lib/ai/generation-service.test.d.ts +7 -0
  133. package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
  134. package/dist/lib/ai/generation-service.test.js +213 -0
  135. package/dist/lib/ai/generation-service.test.js.map +1 -0
  136. package/dist/lib/ai/index.d.ts +19 -0
  137. package/dist/lib/ai/index.d.ts.map +1 -0
  138. package/dist/lib/ai/index.js +22 -0
  139. package/dist/lib/ai/index.js.map +1 -0
  140. package/dist/lib/ai/provider-manager.d.ts +109 -0
  141. package/dist/lib/ai/provider-manager.d.ts.map +1 -0
  142. package/dist/lib/ai/provider-manager.js +270 -0
  143. package/dist/lib/ai/provider-manager.js.map +1 -0
  144. package/dist/lib/ai/provider-manager.test.d.ts +5 -0
  145. package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
  146. package/dist/lib/ai/provider-manager.test.js +312 -0
  147. package/dist/lib/ai/provider-manager.test.js.map +1 -0
  148. package/dist/lib/ai/types.d.ts +166 -0
  149. package/dist/lib/ai/types.d.ts.map +1 -0
  150. package/dist/lib/ai/types.js +19 -0
  151. package/dist/lib/ai/types.js.map +1 -0
  152. package/dist/lib/cleanpr/args.d.ts.map +1 -1
  153. package/dist/lib/cleanpr/args.js +18 -0
  154. package/dist/lib/cleanpr/args.js.map +1 -1
  155. package/dist/lib/cleanpr/args.test.js +88 -11
  156. package/dist/lib/cleanpr/args.test.js.map +1 -1
  157. package/dist/lib/cleanpr/cleanup.d.ts +2 -0
  158. package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
  159. package/dist/lib/cleanpr/cleanup.js +30 -2
  160. package/dist/lib/cleanpr/cleanup.js.map +1 -1
  161. package/dist/lib/cleanpr/cleanup.test.js +37 -5
  162. package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
  163. package/dist/lib/cleanpr/types.d.ts +10 -0
  164. package/dist/lib/cleanpr/types.d.ts.map +1 -1
  165. package/dist/lib/cleanpr/worktree-info.test.js +72 -1
  166. package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
  167. package/dist/lib/config.d.ts +176 -1
  168. package/dist/lib/config.d.ts.map +1 -1
  169. package/dist/lib/config.js +130 -2
  170. package/dist/lib/config.js.map +1 -1
  171. package/dist/lib/config.test.js +406 -2
  172. package/dist/lib/config.test.js.map +1 -1
  173. package/dist/lib/git.test.js +58 -0
  174. package/dist/lib/git.test.js.map +1 -1
  175. package/dist/lib/github.test.js +20 -0
  176. package/dist/lib/github.test.js.map +1 -1
  177. package/dist/lib/hooks/executor.d.ts +35 -0
  178. package/dist/lib/hooks/executor.d.ts.map +1 -0
  179. package/dist/lib/hooks/executor.js +401 -0
  180. package/dist/lib/hooks/executor.js.map +1 -0
  181. package/dist/lib/hooks/executor.test.d.ts +5 -0
  182. package/dist/lib/hooks/executor.test.d.ts.map +1 -0
  183. package/dist/lib/hooks/executor.test.js +648 -0
  184. package/dist/lib/hooks/executor.test.js.map +1 -0
  185. package/dist/lib/hooks/index.d.ts +25 -0
  186. package/dist/lib/hooks/index.d.ts.map +1 -0
  187. package/dist/lib/hooks/index.js +26 -0
  188. package/dist/lib/hooks/index.js.map +1 -0
  189. package/dist/lib/hooks/templates.d.ts +74 -0
  190. package/dist/lib/hooks/templates.d.ts.map +1 -0
  191. package/dist/lib/hooks/templates.js +270 -0
  192. package/dist/lib/hooks/templates.js.map +1 -0
  193. package/dist/lib/hooks/templates.test.d.ts +5 -0
  194. package/dist/lib/hooks/templates.test.d.ts.map +1 -0
  195. package/dist/lib/hooks/templates.test.js +163 -0
  196. package/dist/lib/hooks/templates.test.js.map +1 -0
  197. package/dist/lib/hooks/types.d.ts +161 -0
  198. package/dist/lib/hooks/types.d.ts.map +1 -0
  199. package/dist/lib/hooks/types.js +73 -0
  200. package/dist/lib/hooks/types.js.map +1 -0
  201. package/dist/lib/hooks/types.test.d.ts +5 -0
  202. package/dist/lib/hooks/types.test.d.ts.map +1 -0
  203. package/dist/lib/hooks/types.test.js +132 -0
  204. package/dist/lib/hooks/types.test.js.map +1 -0
  205. package/dist/lib/json-output.d.ts +172 -0
  206. package/dist/lib/json-output.d.ts.map +1 -0
  207. package/dist/lib/json-output.js +134 -0
  208. package/dist/lib/json-output.js.map +1 -0
  209. package/dist/lib/json-output.test.d.ts +5 -0
  210. package/dist/lib/json-output.test.d.ts.map +1 -0
  211. package/dist/lib/json-output.test.js +259 -0
  212. package/dist/lib/json-output.test.js.map +1 -0
  213. package/dist/lib/lswt/action-executors.d.ts +32 -0
  214. package/dist/lib/lswt/action-executors.d.ts.map +1 -0
  215. package/dist/lib/lswt/action-executors.js +489 -0
  216. package/dist/lib/lswt/action-executors.js.map +1 -0
  217. package/dist/lib/lswt/action-executors.test.d.ts +2 -0
  218. package/dist/lib/lswt/action-executors.test.d.ts.map +1 -0
  219. package/dist/lib/lswt/action-executors.test.js +755 -0
  220. package/dist/lib/lswt/action-executors.test.js.map +1 -0
  221. package/dist/lib/lswt/actions.d.ts +25 -0
  222. package/dist/lib/lswt/actions.d.ts.map +1 -0
  223. package/dist/lib/lswt/actions.js +187 -0
  224. package/dist/lib/lswt/actions.js.map +1 -0
  225. package/dist/lib/lswt/actions.test.d.ts +2 -0
  226. package/dist/lib/lswt/actions.test.d.ts.map +1 -0
  227. package/dist/lib/lswt/actions.test.js +359 -0
  228. package/dist/lib/lswt/actions.test.js.map +1 -0
  229. package/dist/lib/lswt/args.d.ts.map +1 -1
  230. package/dist/lib/lswt/args.js +44 -8
  231. package/dist/lib/lswt/args.js.map +1 -1
  232. package/dist/lib/lswt/args.test.js +70 -10
  233. package/dist/lib/lswt/args.test.js.map +1 -1
  234. package/dist/lib/lswt/environment.d.ts +43 -0
  235. package/dist/lib/lswt/environment.d.ts.map +1 -0
  236. package/dist/lib/lswt/environment.js +143 -0
  237. package/dist/lib/lswt/environment.js.map +1 -0
  238. package/dist/lib/lswt/environment.test.d.ts +2 -0
  239. package/dist/lib/lswt/environment.test.d.ts.map +1 -0
  240. package/dist/lib/lswt/environment.test.js +339 -0
  241. package/dist/lib/lswt/environment.test.js.map +1 -0
  242. package/dist/lib/lswt/formatters.d.ts.map +1 -1
  243. package/dist/lib/lswt/formatters.js +1 -0
  244. package/dist/lib/lswt/formatters.js.map +1 -1
  245. package/dist/lib/lswt/formatters.test.js +26 -0
  246. package/dist/lib/lswt/formatters.test.js.map +1 -1
  247. package/dist/lib/lswt/index.d.ts +7 -2
  248. package/dist/lib/lswt/index.d.ts.map +1 -1
  249. package/dist/lib/lswt/index.js +7 -0
  250. package/dist/lib/lswt/index.js.map +1 -1
  251. package/dist/lib/lswt/interactive.d.ts +24 -0
  252. package/dist/lib/lswt/interactive.d.ts.map +1 -0
  253. package/dist/lib/lswt/interactive.js +245 -0
  254. package/dist/lib/lswt/interactive.js.map +1 -0
  255. package/dist/lib/lswt/interactive.test.d.ts +2 -0
  256. package/dist/lib/lswt/interactive.test.d.ts.map +1 -0
  257. package/dist/lib/lswt/interactive.test.js +383 -0
  258. package/dist/lib/lswt/interactive.test.js.map +1 -0
  259. package/dist/lib/lswt/types.d.ts +52 -1
  260. package/dist/lib/lswt/types.d.ts.map +1 -1
  261. package/dist/lib/lswt/worktree-info.d.ts +8 -1
  262. package/dist/lib/lswt/worktree-info.d.ts.map +1 -1
  263. package/dist/lib/lswt/worktree-info.js +14 -4
  264. package/dist/lib/lswt/worktree-info.js.map +1 -1
  265. package/dist/lib/lswt/worktree-info.test.js +153 -16
  266. package/dist/lib/lswt/worktree-info.test.js.map +1 -1
  267. package/dist/lib/newpr/action-deps.d.ts +15 -0
  268. package/dist/lib/newpr/action-deps.d.ts.map +1 -0
  269. package/dist/lib/newpr/action-deps.js +22 -0
  270. package/dist/lib/newpr/action-deps.js.map +1 -0
  271. package/dist/lib/newpr/args.d.ts.map +1 -1
  272. package/dist/lib/newpr/args.js +56 -0
  273. package/dist/lib/newpr/args.js.map +1 -1
  274. package/dist/lib/newpr/hook-runner.d.ts +80 -0
  275. package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
  276. package/dist/lib/newpr/hook-runner.js +182 -0
  277. package/dist/lib/newpr/hook-runner.js.map +1 -0
  278. package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
  279. package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
  280. package/dist/lib/newpr/hook-runner.test.js +301 -0
  281. package/dist/lib/newpr/hook-runner.test.js.map +1 -0
  282. package/dist/lib/newpr/index.d.ts +3 -0
  283. package/dist/lib/newpr/index.d.ts.map +1 -1
  284. package/dist/lib/newpr/index.js +3 -0
  285. package/dist/lib/newpr/index.js.map +1 -1
  286. package/dist/lib/newpr/types.d.ts +9 -0
  287. package/dist/lib/newpr/types.d.ts.map +1 -1
  288. package/dist/lib/prompts.test.js +208 -1
  289. package/dist/lib/prompts.test.js.map +1 -1
  290. package/dist/lib/wtconfig/config-manager.d.ts +72 -0
  291. package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
  292. package/dist/lib/wtconfig/config-manager.js +408 -0
  293. package/dist/lib/wtconfig/config-manager.js.map +1 -0
  294. package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
  295. package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
  296. package/dist/lib/wtconfig/config-manager.test.js +501 -0
  297. package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
  298. package/dist/lib/wtconfig/environment.d.ts +23 -0
  299. package/dist/lib/wtconfig/environment.d.ts.map +1 -0
  300. package/dist/lib/wtconfig/environment.js +238 -0
  301. package/dist/lib/wtconfig/environment.js.map +1 -0
  302. package/dist/lib/wtconfig/environment.test.d.ts +5 -0
  303. package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
  304. package/dist/lib/wtconfig/environment.test.js +246 -0
  305. package/dist/lib/wtconfig/environment.test.js.map +1 -0
  306. package/dist/lib/wtconfig/index.d.ts +7 -0
  307. package/dist/lib/wtconfig/index.d.ts.map +1 -0
  308. package/dist/lib/wtconfig/index.js +8 -0
  309. package/dist/lib/wtconfig/index.js.map +1 -0
  310. package/dist/lib/wtconfig/types.d.ts +97 -0
  311. package/dist/lib/wtconfig/types.d.ts.map +1 -0
  312. package/dist/lib/wtconfig/types.js +5 -0
  313. package/dist/lib/wtconfig/types.js.map +1 -0
  314. package/dist/lib/wtstate/analyze.d.ts +13 -0
  315. package/dist/lib/wtstate/analyze.d.ts.map +1 -0
  316. package/dist/lib/wtstate/analyze.js +165 -0
  317. package/dist/lib/wtstate/analyze.js.map +1 -0
  318. package/dist/lib/wtstate/analyze.test.d.ts +5 -0
  319. package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
  320. package/dist/lib/wtstate/analyze.test.js +282 -0
  321. package/dist/lib/wtstate/analyze.test.js.map +1 -0
  322. package/dist/lib/wtstate/args.d.ts +17 -0
  323. package/dist/lib/wtstate/args.d.ts.map +1 -0
  324. package/dist/lib/wtstate/args.js +91 -0
  325. package/dist/lib/wtstate/args.js.map +1 -0
  326. package/dist/lib/wtstate/args.test.d.ts +5 -0
  327. package/dist/lib/wtstate/args.test.d.ts.map +1 -0
  328. package/dist/lib/wtstate/args.test.js +120 -0
  329. package/dist/lib/wtstate/args.test.js.map +1 -0
  330. package/dist/lib/wtstate/index.d.ts +7 -0
  331. package/dist/lib/wtstate/index.d.ts.map +1 -0
  332. package/dist/lib/wtstate/index.js +8 -0
  333. package/dist/lib/wtstate/index.js.map +1 -0
  334. package/dist/lib/wtstate/types.d.ts +64 -0
  335. package/dist/lib/wtstate/types.d.ts.map +1 -0
  336. package/dist/lib/wtstate/types.js +5 -0
  337. package/dist/lib/wtstate/types.js.map +1 -0
  338. package/dist/mcp/server.d.ts +14 -0
  339. package/dist/mcp/server.d.ts.map +1 -0
  340. package/dist/mcp/server.js +339 -0
  341. package/dist/mcp/server.js.map +1 -0
  342. package/dist/mcp/server.test.d.ts +9 -0
  343. package/dist/mcp/server.test.d.ts.map +1 -0
  344. package/dist/mcp/server.test.js +390 -0
  345. package/dist/mcp/server.test.js.map +1 -0
  346. package/package.json +8 -2
@@ -0,0 +1,134 @@
1
+ /**
2
+ * JSON output utilities for AI-friendly CLI output
3
+ *
4
+ * Provides structured, machine-readable output for all CLI commands
5
+ * to enable AI agents to programmatically interact with git-worktree-tools.
6
+ */
7
+ /**
8
+ * Standard error codes for programmatic handling
9
+ */
10
+ export var ErrorCode;
11
+ (function (ErrorCode) {
12
+ // Git errors
13
+ ErrorCode["NOT_GIT_REPO"] = "NOT_GIT_REPO";
14
+ ErrorCode["DETACHED_HEAD"] = "DETACHED_HEAD";
15
+ ErrorCode["UNCOMMITTED_CHANGES"] = "UNCOMMITTED_CHANGES";
16
+ ErrorCode["BRANCH_EXISTS"] = "BRANCH_EXISTS";
17
+ ErrorCode["WORKTREE_EXISTS"] = "WORKTREE_EXISTS";
18
+ ErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
19
+ ErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
20
+ ErrorCode["STASH_FAILED"] = "STASH_FAILED";
21
+ // GitHub errors
22
+ ErrorCode["GH_NOT_INSTALLED"] = "GH_NOT_INSTALLED";
23
+ ErrorCode["GH_NOT_AUTHENTICATED"] = "GH_NOT_AUTHENTICATED";
24
+ ErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
25
+ ErrorCode["PR_ALREADY_EXISTS"] = "PR_ALREADY_EXISTS";
26
+ ErrorCode["PR_CREATE_FAILED"] = "PR_CREATE_FAILED";
27
+ // Config errors
28
+ ErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
29
+ // User errors
30
+ ErrorCode["USER_CANCELLED"] = "USER_CANCELLED";
31
+ ErrorCode["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
32
+ ErrorCode["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
33
+ ErrorCode["INVALID_ACTION"] = "INVALID_ACTION";
34
+ // Hook errors
35
+ ErrorCode["HOOK_FAILED"] = "HOOK_FAILED";
36
+ // System errors
37
+ ErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
38
+ ErrorCode["OPERATION_FAILED"] = "OPERATION_FAILED";
39
+ })(ErrorCode || (ErrorCode = {}));
40
+ /**
41
+ * Validate a string is a valid StateActionKey
42
+ */
43
+ export function isValidStateActionKey(key) {
44
+ const validKeys = [
45
+ 'empty_commit',
46
+ 'commit_staged',
47
+ 'commit_all',
48
+ 'stash_and_empty',
49
+ 'use_commits',
50
+ 'push_then_branch',
51
+ 'use_commits_and_commit_all',
52
+ 'use_commits_and_stash',
53
+ 'create_pr_for_branch',
54
+ 'pr_for_branch_commit_all',
55
+ 'pr_for_branch_stash',
56
+ 'branch_from_detached',
57
+ ];
58
+ return validKeys.includes(key);
59
+ }
60
+ // ============================================================================
61
+ // Factory functions
62
+ // ============================================================================
63
+ /**
64
+ * Create a successful command result
65
+ */
66
+ export function createSuccessResult(command, data, warnings) {
67
+ return {
68
+ success: true,
69
+ command,
70
+ timestamp: new Date().toISOString(),
71
+ data,
72
+ warnings: warnings?.length ? warnings : undefined,
73
+ };
74
+ }
75
+ /**
76
+ * Create a failed command result
77
+ */
78
+ export function createErrorResult(command, code, message, details) {
79
+ return {
80
+ success: false,
81
+ command,
82
+ timestamp: new Date().toISOString(),
83
+ error: {
84
+ code,
85
+ message,
86
+ details,
87
+ },
88
+ };
89
+ }
90
+ /**
91
+ * Format result as JSON string for output
92
+ */
93
+ export function formatJsonResult(result) {
94
+ return JSON.stringify(result, null, 2);
95
+ }
96
+ /**
97
+ * Check if an error has an ErrorCode property
98
+ */
99
+ function hasErrorCode(error) {
100
+ return (error instanceof Error &&
101
+ 'code' in error &&
102
+ typeof error.code === 'string');
103
+ }
104
+ /**
105
+ * Map error class names to error codes
106
+ */
107
+ export function getErrorCodeFromError(error) {
108
+ if (error instanceof Error) {
109
+ // Handle errors that carry their own ErrorCode (e.g., NonInteractiveError)
110
+ if (hasErrorCode(error) && Object.values(ErrorCode).includes(error.code)) {
111
+ return error.code;
112
+ }
113
+ switch (error.name) {
114
+ case 'GitCommandError':
115
+ return ErrorCode.OPERATION_FAILED;
116
+ case 'GitHubCliError':
117
+ return ErrorCode.OPERATION_FAILED;
118
+ case 'ConfigurationError':
119
+ return ErrorCode.INVALID_CONFIG;
120
+ case 'WorktreeError':
121
+ return ErrorCode.OPERATION_FAILED;
122
+ case 'ManifestError':
123
+ return ErrorCode.INVALID_CONFIG;
124
+ case 'UserCancelledError':
125
+ return ErrorCode.USER_CANCELLED;
126
+ case 'NonInteractiveError':
127
+ return ErrorCode.INVALID_ARGUMENT;
128
+ default:
129
+ return ErrorCode.UNKNOWN_ERROR;
130
+ }
131
+ }
132
+ return ErrorCode.UNKNOWN_ERROR;
133
+ }
134
+ //# sourceMappingURL=json-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * JSON Output Utilities Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=json-output.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.test.d.ts","sourceRoot":"","sources":["../../src/lib/json-output.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * JSON Output Utilities Tests
3
+ */
4
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
5
+ import { ErrorCode, createSuccessResult, createErrorResult, formatJsonResult, getErrorCodeFromError, isValidStateActionKey, } from './json-output.js';
6
+ describe('json-output', () => {
7
+ describe('ErrorCode enum', () => {
8
+ it('has all expected git error codes', () => {
9
+ expect(ErrorCode.NOT_GIT_REPO).toBe('NOT_GIT_REPO');
10
+ expect(ErrorCode.DETACHED_HEAD).toBe('DETACHED_HEAD');
11
+ expect(ErrorCode.UNCOMMITTED_CHANGES).toBe('UNCOMMITTED_CHANGES');
12
+ expect(ErrorCode.BRANCH_EXISTS).toBe('BRANCH_EXISTS');
13
+ expect(ErrorCode.WORKTREE_EXISTS).toBe('WORKTREE_EXISTS');
14
+ expect(ErrorCode.BRANCH_NOT_FOUND).toBe('BRANCH_NOT_FOUND');
15
+ expect(ErrorCode.MERGE_CONFLICT).toBe('MERGE_CONFLICT');
16
+ expect(ErrorCode.STASH_FAILED).toBe('STASH_FAILED');
17
+ });
18
+ it('has all expected GitHub error codes', () => {
19
+ expect(ErrorCode.GH_NOT_INSTALLED).toBe('GH_NOT_INSTALLED');
20
+ expect(ErrorCode.GH_NOT_AUTHENTICATED).toBe('GH_NOT_AUTHENTICATED');
21
+ expect(ErrorCode.PR_NOT_FOUND).toBe('PR_NOT_FOUND');
22
+ expect(ErrorCode.PR_ALREADY_EXISTS).toBe('PR_ALREADY_EXISTS');
23
+ expect(ErrorCode.PR_CREATE_FAILED).toBe('PR_CREATE_FAILED');
24
+ });
25
+ it('has all expected user error codes', () => {
26
+ expect(ErrorCode.USER_CANCELLED).toBe('USER_CANCELLED');
27
+ expect(ErrorCode.INVALID_ARGUMENT).toBe('INVALID_ARGUMENT');
28
+ expect(ErrorCode.MISSING_ARGUMENT).toBe('MISSING_ARGUMENT');
29
+ expect(ErrorCode.INVALID_ACTION).toBe('INVALID_ACTION');
30
+ });
31
+ it('has all expected system error codes', () => {
32
+ expect(ErrorCode.UNKNOWN_ERROR).toBe('UNKNOWN_ERROR');
33
+ expect(ErrorCode.OPERATION_FAILED).toBe('OPERATION_FAILED');
34
+ expect(ErrorCode.INVALID_CONFIG).toBe('INVALID_CONFIG');
35
+ });
36
+ });
37
+ describe('isValidStateActionKey', () => {
38
+ it('returns true for valid action keys', () => {
39
+ expect(isValidStateActionKey('empty_commit')).toBe(true);
40
+ expect(isValidStateActionKey('commit_staged')).toBe(true);
41
+ expect(isValidStateActionKey('commit_all')).toBe(true);
42
+ expect(isValidStateActionKey('stash_and_empty')).toBe(true);
43
+ expect(isValidStateActionKey('use_commits')).toBe(true);
44
+ expect(isValidStateActionKey('push_then_branch')).toBe(true);
45
+ expect(isValidStateActionKey('use_commits_and_commit_all')).toBe(true);
46
+ expect(isValidStateActionKey('use_commits_and_stash')).toBe(true);
47
+ expect(isValidStateActionKey('create_pr_for_branch')).toBe(true);
48
+ expect(isValidStateActionKey('pr_for_branch_commit_all')).toBe(true);
49
+ expect(isValidStateActionKey('pr_for_branch_stash')).toBe(true);
50
+ expect(isValidStateActionKey('branch_from_detached')).toBe(true);
51
+ });
52
+ it('returns false for invalid action keys', () => {
53
+ expect(isValidStateActionKey('invalid_action')).toBe(false);
54
+ expect(isValidStateActionKey('')).toBe(false);
55
+ expect(isValidStateActionKey('EMPTY_COMMIT')).toBe(false); // Wrong case
56
+ expect(isValidStateActionKey('random_string')).toBe(false);
57
+ });
58
+ });
59
+ describe('createSuccessResult', () => {
60
+ beforeEach(() => {
61
+ vi.useFakeTimers();
62
+ vi.setSystemTime(new Date('2024-01-15T10:30:00.000Z'));
63
+ });
64
+ afterEach(() => {
65
+ vi.useRealTimers();
66
+ });
67
+ it('creates a success result with required fields', () => {
68
+ const data = { prNumber: 123, branch: 'feat/test' };
69
+ const result = createSuccessResult('newpr', data);
70
+ expect(result.success).toBe(true);
71
+ expect(result.command).toBe('newpr');
72
+ expect(result.timestamp).toBe('2024-01-15T10:30:00.000Z');
73
+ expect(result.data).toEqual(data);
74
+ expect(result.error).toBeUndefined();
75
+ expect(result.warnings).toBeUndefined();
76
+ });
77
+ it('creates a success result with warnings', () => {
78
+ const data = { status: 'ok' };
79
+ const warnings = ['Warning 1', 'Warning 2'];
80
+ const result = createSuccessResult('test', data, warnings);
81
+ expect(result.success).toBe(true);
82
+ expect(result.warnings).toEqual(warnings);
83
+ });
84
+ it('omits empty warnings array', () => {
85
+ const data = { status: 'ok' };
86
+ const result = createSuccessResult('test', data, []);
87
+ expect(result.warnings).toBeUndefined();
88
+ });
89
+ it('works with newpr result data', () => {
90
+ const data = {
91
+ prNumber: 42,
92
+ prUrl: 'https://github.com/owner/repo/pull/42',
93
+ branch: 'feat/new-feature',
94
+ worktreePath: '/path/to/worktree',
95
+ draft: false,
96
+ scenario: 'main_clean_same',
97
+ actionTaken: 'empty_commit',
98
+ };
99
+ const result = createSuccessResult('newpr', data);
100
+ expect(result.data).toEqual(data);
101
+ });
102
+ it('works with cleanpr result data', () => {
103
+ const data = {
104
+ cleaned: [
105
+ {
106
+ prNumber: 1,
107
+ branch: 'feat/branch-1',
108
+ path: '/path/to/worktree',
109
+ prState: 'merged',
110
+ localBranchDeleted: true,
111
+ remoteBranchDeleted: true,
112
+ },
113
+ ],
114
+ skipped: [],
115
+ totalCleaned: 1,
116
+ totalSkipped: 0,
117
+ };
118
+ const result = createSuccessResult('cleanpr', data);
119
+ expect(result.data).toEqual(data);
120
+ });
121
+ it('works with wtstate result data', () => {
122
+ const data = {
123
+ scenario: 'main_clean_same',
124
+ scenarioDescription: 'On main, clean working tree',
125
+ currentBranch: 'main',
126
+ baseBranch: 'main',
127
+ worktreeType: 'main_worktree',
128
+ hasChanges: false,
129
+ hasStagedChanges: false,
130
+ hasUnstagedChanges: false,
131
+ localCommits: [],
132
+ stagedFiles: [],
133
+ unstagedFiles: [],
134
+ availableActions: [{ key: 'empty_commit', label: 'Create empty commit' }],
135
+ recommendedAction: 'empty_commit',
136
+ };
137
+ const result = createSuccessResult('wtstate', data);
138
+ expect(result.data).toEqual(data);
139
+ });
140
+ });
141
+ describe('createErrorResult', () => {
142
+ beforeEach(() => {
143
+ vi.useFakeTimers();
144
+ vi.setSystemTime(new Date('2024-01-15T10:30:00.000Z'));
145
+ });
146
+ afterEach(() => {
147
+ vi.useRealTimers();
148
+ });
149
+ it('creates an error result with required fields', () => {
150
+ const result = createErrorResult('newpr', ErrorCode.NOT_GIT_REPO, 'Not in a git repository');
151
+ expect(result.success).toBe(false);
152
+ expect(result.command).toBe('newpr');
153
+ expect(result.timestamp).toBe('2024-01-15T10:30:00.000Z');
154
+ expect(result.error).toEqual({
155
+ code: ErrorCode.NOT_GIT_REPO,
156
+ message: 'Not in a git repository',
157
+ });
158
+ expect(result.data).toBeUndefined();
159
+ });
160
+ it('creates an error result with details', () => {
161
+ const details = { branch: 'feat/test', file: 'README.md' };
162
+ const result = createErrorResult('cleanpr', ErrorCode.UNCOMMITTED_CHANGES, 'Uncommitted changes detected', details);
163
+ expect(result.error?.details).toEqual(details);
164
+ });
165
+ it('creates error for GitHub errors', () => {
166
+ const result = createErrorResult('newpr', ErrorCode.GH_NOT_AUTHENTICATED, 'GitHub CLI is not authenticated');
167
+ expect(result.error?.code).toBe(ErrorCode.GH_NOT_AUTHENTICATED);
168
+ });
169
+ it('creates error for user cancellation', () => {
170
+ const result = createErrorResult('newpr', ErrorCode.USER_CANCELLED, 'Operation cancelled');
171
+ expect(result.error?.code).toBe(ErrorCode.USER_CANCELLED);
172
+ });
173
+ });
174
+ describe('formatJsonResult', () => {
175
+ it('formats success result as pretty-printed JSON', () => {
176
+ const result = {
177
+ success: true,
178
+ command: 'test',
179
+ timestamp: '2024-01-15T10:30:00.000Z',
180
+ data: { value: 42 },
181
+ };
182
+ const json = formatJsonResult(result);
183
+ const parsed = JSON.parse(json);
184
+ expect(parsed.success).toBe(true);
185
+ expect(parsed.data.value).toBe(42);
186
+ });
187
+ it('formats error result as pretty-printed JSON', () => {
188
+ const result = {
189
+ success: false,
190
+ command: 'test',
191
+ timestamp: '2024-01-15T10:30:00.000Z',
192
+ error: {
193
+ code: ErrorCode.UNKNOWN_ERROR,
194
+ message: 'Something went wrong',
195
+ },
196
+ };
197
+ const json = formatJsonResult(result);
198
+ const parsed = JSON.parse(json);
199
+ expect(parsed.success).toBe(false);
200
+ expect(parsed.error.code).toBe('UNKNOWN_ERROR');
201
+ });
202
+ it('produces valid JSON string with indentation', () => {
203
+ const result = {
204
+ success: true,
205
+ command: 'test',
206
+ timestamp: '2024-01-15T10:30:00.000Z',
207
+ data: { test: 'value' },
208
+ };
209
+ const json = formatJsonResult(result);
210
+ // Should be indented (pretty-printed)
211
+ expect(json).toContain('\n');
212
+ expect(json).toContain(' ');
213
+ });
214
+ });
215
+ describe('getErrorCodeFromError', () => {
216
+ it('returns OPERATION_FAILED for GitCommandError', () => {
217
+ const error = new Error('Git command failed');
218
+ error.name = 'GitCommandError';
219
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.OPERATION_FAILED);
220
+ });
221
+ it('returns OPERATION_FAILED for GitHubCliError', () => {
222
+ const error = new Error('GitHub CLI error');
223
+ error.name = 'GitHubCliError';
224
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.OPERATION_FAILED);
225
+ });
226
+ it('returns INVALID_CONFIG for ConfigurationError', () => {
227
+ const error = new Error('Invalid config');
228
+ error.name = 'ConfigurationError';
229
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.INVALID_CONFIG);
230
+ });
231
+ it('returns OPERATION_FAILED for WorktreeError', () => {
232
+ const error = new Error('Worktree error');
233
+ error.name = 'WorktreeError';
234
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.OPERATION_FAILED);
235
+ });
236
+ it('returns INVALID_CONFIG for ManifestError', () => {
237
+ const error = new Error('Manifest error');
238
+ error.name = 'ManifestError';
239
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.INVALID_CONFIG);
240
+ });
241
+ it('returns USER_CANCELLED for UserCancelledError', () => {
242
+ const error = new Error('User cancelled');
243
+ error.name = 'UserCancelledError';
244
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.USER_CANCELLED);
245
+ });
246
+ it('returns UNKNOWN_ERROR for generic Error', () => {
247
+ const error = new Error('Generic error');
248
+ expect(getErrorCodeFromError(error)).toBe(ErrorCode.UNKNOWN_ERROR);
249
+ });
250
+ it('returns UNKNOWN_ERROR for non-Error values', () => {
251
+ expect(getErrorCodeFromError('string error')).toBe(ErrorCode.UNKNOWN_ERROR);
252
+ expect(getErrorCodeFromError(null)).toBe(ErrorCode.UNKNOWN_ERROR);
253
+ expect(getErrorCodeFromError(undefined)).toBe(ErrorCode.UNKNOWN_ERROR);
254
+ expect(getErrorCodeFromError(123)).toBe(ErrorCode.UNKNOWN_ERROR);
255
+ expect(getErrorCodeFromError({ message: 'object' })).toBe(ErrorCode.UNKNOWN_ERROR);
256
+ });
257
+ });
258
+ });
259
+ //# sourceMappingURL=json-output.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.test.js","sourceRoot":"","sources":["../../src/lib/json-output.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * lswt action-executors - execute actions on worktrees
3
+ */
4
+ import type { WorktreeConfig } from '../config.js';
5
+ import type { WorktreeDisplay, WorktreeAction, ActionResult, EnvironmentInfo } from './types.js';
6
+ /**
7
+ * Dependencies for action executors (for testing)
8
+ */
9
+ export interface ExecutorDeps {
10
+ execCommand: (cmd: string, options?: {
11
+ cwd?: string;
12
+ }) => void;
13
+ spawnDetached: (cmd: string, args: string[], options?: {
14
+ cwd?: string;
15
+ }) => void;
16
+ copyToClipboard: (text: string) => void;
17
+ openUrl: (url: string) => void;
18
+ }
19
+ /**
20
+ * Create default executor dependencies
21
+ */
22
+ export declare function createDefaultExecutorDeps(): ExecutorDeps;
23
+ /**
24
+ * Execute an action on a worktree
25
+ */
26
+ export declare function executeAction(action: WorktreeAction, worktree: WorktreeDisplay, env: EnvironmentInfo, config: WorktreeConfig, deps?: ExecutorDeps): Promise<ActionResult>;
27
+ /**
28
+ * Format branch name as PR title
29
+ * Exported for testing
30
+ */
31
+ export declare function formatBranchAsTitle(branch: string): string;
32
+ //# sourceMappingURL=action-executors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-executors.d.ts","sourceRoot":"","sources":["../../../src/lib/lswt/action-executors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjF,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,YAAY,CA0CxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,YAA0C,GAC/C,OAAO,CAAC,YAAY,CAAC,CAgCvB;AAsTD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiB1D"}