@camaradesuk/git-worktree-tools 1.10.0 → 1.12.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 (431) hide show
  1. package/README.md +4 -4
  2. package/dist/lib/config.d.ts +2 -1
  3. package/dist/lib/config.d.ts.map +1 -1
  4. package/dist/lib/config.js +11 -0
  5. package/dist/lib/config.js.map +1 -1
  6. package/package.json +12 -3
  7. package/schemas/worktreerc.schema.json +1 -1
  8. package/dist/api/list.test.d.ts +0 -5
  9. package/dist/api/list.test.d.ts.map +0 -1
  10. package/dist/api/list.test.js +0 -390
  11. package/dist/api/list.test.js.map +0 -1
  12. package/dist/cli/cleanpr.test.d.ts +0 -2
  13. package/dist/cli/cleanpr.test.d.ts.map +0 -1
  14. package/dist/cli/cleanpr.test.js +0 -954
  15. package/dist/cli/cleanpr.test.js.map +0 -1
  16. package/dist/cli/lswt.test.d.ts +0 -2
  17. package/dist/cli/lswt.test.d.ts.map +0 -1
  18. package/dist/cli/lswt.test.js +0 -376
  19. package/dist/cli/lswt.test.js.map +0 -1
  20. package/dist/cli/newpr.test.d.ts +0 -2
  21. package/dist/cli/newpr.test.d.ts.map +0 -1
  22. package/dist/cli/newpr.test.js +0 -1182
  23. package/dist/cli/newpr.test.js.map +0 -1
  24. package/dist/cli/prs.test.d.ts +0 -8
  25. package/dist/cli/prs.test.d.ts.map +0 -1
  26. package/dist/cli/prs.test.js +0 -463
  27. package/dist/cli/prs.test.js.map +0 -1
  28. package/dist/cli/wt/clean.test.d.ts +0 -8
  29. package/dist/cli/wt/clean.test.d.ts.map +0 -1
  30. package/dist/cli/wt/clean.test.js +0 -624
  31. package/dist/cli/wt/clean.test.js.map +0 -1
  32. package/dist/cli/wt/completion.test.d.ts +0 -5
  33. package/dist/cli/wt/completion.test.d.ts.map +0 -1
  34. package/dist/cli/wt/completion.test.js +0 -275
  35. package/dist/cli/wt/completion.test.js.map +0 -1
  36. package/dist/cli/wt/config.test.d.ts +0 -7
  37. package/dist/cli/wt/config.test.d.ts.map +0 -1
  38. package/dist/cli/wt/config.test.js +0 -440
  39. package/dist/cli/wt/config.test.js.map +0 -1
  40. package/dist/cli/wt/entry.test.d.ts +0 -8
  41. package/dist/cli/wt/entry.test.d.ts.map +0 -1
  42. package/dist/cli/wt/entry.test.js +0 -201
  43. package/dist/cli/wt/entry.test.js.map +0 -1
  44. package/dist/cli/wt/init.test.d.ts +0 -5
  45. package/dist/cli/wt/init.test.d.ts.map +0 -1
  46. package/dist/cli/wt/init.test.js +0 -165
  47. package/dist/cli/wt/init.test.js.map +0 -1
  48. package/dist/cli/wt/init.unit.test.d.ts +0 -5
  49. package/dist/cli/wt/init.unit.test.d.ts.map +0 -1
  50. package/dist/cli/wt/init.unit.test.js +0 -432
  51. package/dist/cli/wt/init.unit.test.js.map +0 -1
  52. package/dist/cli/wt/interactive-menu.test.d.ts +0 -12
  53. package/dist/cli/wt/interactive-menu.test.d.ts.map +0 -1
  54. package/dist/cli/wt/interactive-menu.test.js +0 -796
  55. package/dist/cli/wt/interactive-menu.test.js.map +0 -1
  56. package/dist/cli/wt/list.test.d.ts +0 -10
  57. package/dist/cli/wt/list.test.d.ts.map +0 -1
  58. package/dist/cli/wt/list.test.js +0 -157
  59. package/dist/cli/wt/list.test.js.map +0 -1
  60. package/dist/cli/wt/prs.test.d.ts +0 -5
  61. package/dist/cli/wt/prs.test.d.ts.map +0 -1
  62. package/dist/cli/wt/prs.test.js +0 -410
  63. package/dist/cli/wt/prs.test.js.map +0 -1
  64. package/dist/cli/wt/run-command.test.d.ts +0 -5
  65. package/dist/cli/wt/run-command.test.d.ts.map +0 -1
  66. package/dist/cli/wt/run-command.test.js +0 -88
  67. package/dist/cli/wt/run-command.test.js.map +0 -1
  68. package/dist/cli/wt/state.test.d.ts +0 -9
  69. package/dist/cli/wt/state.test.d.ts.map +0 -1
  70. package/dist/cli/wt/state.test.js +0 -127
  71. package/dist/cli/wt/state.test.js.map +0 -1
  72. package/dist/cli/wt/wt.test.d.ts +0 -8
  73. package/dist/cli/wt/wt.test.d.ts.map +0 -1
  74. package/dist/cli/wt/wt.test.js +0 -739
  75. package/dist/cli/wt/wt.test.js.map +0 -1
  76. package/dist/cli/wt.unit.test.d.ts +0 -7
  77. package/dist/cli/wt.unit.test.d.ts.map +0 -1
  78. package/dist/cli/wt.unit.test.js +0 -160
  79. package/dist/cli/wt.unit.test.js.map +0 -1
  80. package/dist/cli/wtconfig.test.d.ts +0 -5
  81. package/dist/cli/wtconfig.test.d.ts.map +0 -1
  82. package/dist/cli/wtconfig.test.js +0 -1289
  83. package/dist/cli/wtconfig.test.js.map +0 -1
  84. package/dist/cli/wtlink.test.d.ts +0 -2
  85. package/dist/cli/wtlink.test.d.ts.map +0 -1
  86. package/dist/cli/wtlink.test.js +0 -249
  87. package/dist/cli/wtlink.test.js.map +0 -1
  88. package/dist/cli/wtstate.test.d.ts +0 -5
  89. package/dist/cli/wtstate.test.d.ts.map +0 -1
  90. package/dist/cli/wtstate.test.js +0 -193
  91. package/dist/cli/wtstate.test.js.map +0 -1
  92. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +0 -2
  93. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +0 -1
  94. package/dist/e2e/cleanpr/cleanpr.e2e.test.js +0 -326
  95. package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +0 -1
  96. package/dist/e2e/cli.e2e.test.d.ts +0 -2
  97. package/dist/e2e/cli.e2e.test.d.ts.map +0 -1
  98. package/dist/e2e/cli.e2e.test.js +0 -417
  99. package/dist/e2e/cli.e2e.test.js.map +0 -1
  100. package/dist/e2e/lswt/lswt.e2e.test.d.ts +0 -2
  101. package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +0 -1
  102. package/dist/e2e/lswt/lswt.e2e.test.js +0 -361
  103. package/dist/e2e/lswt/lswt.e2e.test.js.map +0 -1
  104. package/dist/e2e/newpr/newpr.e2e.test.d.ts +0 -2
  105. package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +0 -1
  106. package/dist/e2e/newpr/newpr.e2e.test.js +0 -286
  107. package/dist/e2e/newpr/newpr.e2e.test.js.map +0 -1
  108. package/dist/e2e/newpr/scenarios.e2e.test.d.ts +0 -2
  109. package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +0 -1
  110. package/dist/e2e/newpr/scenarios.e2e.test.js +0 -426
  111. package/dist/e2e/newpr/scenarios.e2e.test.js.map +0 -1
  112. package/dist/e2e/newpr-full-flow.e2e.test.d.ts +0 -2
  113. package/dist/e2e/newpr-full-flow.e2e.test.d.ts.map +0 -1
  114. package/dist/e2e/newpr-full-flow.e2e.test.js +0 -280
  115. package/dist/e2e/newpr-full-flow.e2e.test.js.map +0 -1
  116. package/dist/e2e/prs/prs.e2e.test.d.ts +0 -7
  117. package/dist/e2e/prs/prs.e2e.test.d.ts.map +0 -1
  118. package/dist/e2e/prs/prs.e2e.test.js +0 -606
  119. package/dist/e2e/prs/prs.e2e.test.js.map +0 -1
  120. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +0 -2
  121. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +0 -1
  122. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +0 -298
  123. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +0 -1
  124. package/dist/e2e/wt/interactive-menu.e2e.test.d.ts +0 -8
  125. package/dist/e2e/wt/interactive-menu.e2e.test.d.ts.map +0 -1
  126. package/dist/e2e/wt/interactive-menu.e2e.test.js +0 -583
  127. package/dist/e2e/wt/interactive-menu.e2e.test.js.map +0 -1
  128. package/dist/e2e/wt/wt.e2e.test.d.ts +0 -9
  129. package/dist/e2e/wt/wt.e2e.test.d.ts.map +0 -1
  130. package/dist/e2e/wt/wt.e2e.test.js +0 -597
  131. package/dist/e2e/wt/wt.e2e.test.js.map +0 -1
  132. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +0 -2
  133. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +0 -1
  134. package/dist/e2e/wtlink/wtlink.e2e.test.js +0 -416
  135. package/dist/e2e/wtlink/wtlink.e2e.test.js.map +0 -1
  136. package/dist/integration/git.integration.test.d.ts +0 -2
  137. package/dist/integration/git.integration.test.d.ts.map +0 -1
  138. package/dist/integration/git.integration.test.js +0 -336
  139. package/dist/integration/git.integration.test.js.map +0 -1
  140. package/dist/integration/lswt-remote-pr.integration.test.d.ts +0 -2
  141. package/dist/integration/lswt-remote-pr.integration.test.d.ts.map +0 -1
  142. package/dist/integration/lswt-remote-pr.integration.test.js +0 -222
  143. package/dist/integration/lswt-remote-pr.integration.test.js.map +0 -1
  144. package/dist/integration/newpr-branchfrom-head.integration.test.d.ts +0 -2
  145. package/dist/integration/newpr-branchfrom-head.integration.test.d.ts.map +0 -1
  146. package/dist/integration/newpr-branchfrom-head.integration.test.js +0 -498
  147. package/dist/integration/newpr-branchfrom-head.integration.test.js.map +0 -1
  148. package/dist/integration/newpr.integration.test.d.ts +0 -2
  149. package/dist/integration/newpr.integration.test.d.ts.map +0 -1
  150. package/dist/integration/newpr.integration.test.js +0 -460
  151. package/dist/integration/newpr.integration.test.js.map +0 -1
  152. package/dist/integration/prs.integration.test.d.ts +0 -8
  153. package/dist/integration/prs.integration.test.d.ts.map +0 -1
  154. package/dist/integration/prs.integration.test.js +0 -478
  155. package/dist/integration/prs.integration.test.js.map +0 -1
  156. package/dist/lib/ai/base-provider.test.d.ts +0 -7
  157. package/dist/lib/ai/base-provider.test.d.ts.map +0 -1
  158. package/dist/lib/ai/base-provider.test.js +0 -319
  159. package/dist/lib/ai/base-provider.test.js.map +0 -1
  160. package/dist/lib/ai/cli-provider.test.d.ts +0 -5
  161. package/dist/lib/ai/cli-provider.test.d.ts.map +0 -1
  162. package/dist/lib/ai/cli-provider.test.js +0 -460
  163. package/dist/lib/ai/cli-provider.test.js.map +0 -1
  164. package/dist/lib/ai/fallback-provider.test.d.ts +0 -7
  165. package/dist/lib/ai/fallback-provider.test.d.ts.map +0 -1
  166. package/dist/lib/ai/fallback-provider.test.js +0 -165
  167. package/dist/lib/ai/fallback-provider.test.js.map +0 -1
  168. package/dist/lib/ai/generation-service.test.d.ts +0 -7
  169. package/dist/lib/ai/generation-service.test.d.ts.map +0 -1
  170. package/dist/lib/ai/generation-service.test.js +0 -213
  171. package/dist/lib/ai/generation-service.test.js.map +0 -1
  172. package/dist/lib/ai/provider-manager.test.d.ts +0 -5
  173. package/dist/lib/ai/provider-manager.test.d.ts.map +0 -1
  174. package/dist/lib/ai/provider-manager.test.js +0 -312
  175. package/dist/lib/ai/provider-manager.test.js.map +0 -1
  176. package/dist/lib/ai/repo-docs.test.d.ts +0 -5
  177. package/dist/lib/ai/repo-docs.test.d.ts.map +0 -1
  178. package/dist/lib/ai/repo-docs.test.js +0 -357
  179. package/dist/lib/ai/repo-docs.test.js.map +0 -1
  180. package/dist/lib/cleanpr/args.test.d.ts +0 -2
  181. package/dist/lib/cleanpr/args.test.d.ts.map +0 -1
  182. package/dist/lib/cleanpr/args.test.js +0 -269
  183. package/dist/lib/cleanpr/args.test.js.map +0 -1
  184. package/dist/lib/cleanpr/cleanup.test.d.ts +0 -2
  185. package/dist/lib/cleanpr/cleanup.test.d.ts.map +0 -1
  186. package/dist/lib/cleanpr/cleanup.test.js +0 -296
  187. package/dist/lib/cleanpr/cleanup.test.js.map +0 -1
  188. package/dist/lib/cleanpr/worktree-info.test.d.ts +0 -2
  189. package/dist/lib/cleanpr/worktree-info.test.d.ts.map +0 -1
  190. package/dist/lib/cleanpr/worktree-info.test.js +0 -228
  191. package/dist/lib/cleanpr/worktree-info.test.js.map +0 -1
  192. package/dist/lib/colors.test.d.ts +0 -2
  193. package/dist/lib/colors.test.d.ts.map +0 -1
  194. package/dist/lib/colors.test.js +0 -142
  195. package/dist/lib/colors.test.js.map +0 -1
  196. package/dist/lib/config-editor.test.d.ts +0 -11
  197. package/dist/lib/config-editor.test.d.ts.map +0 -1
  198. package/dist/lib/config-editor.test.js +0 -526
  199. package/dist/lib/config-editor.test.js.map +0 -1
  200. package/dist/lib/config-migration/detector.test.d.ts +0 -5
  201. package/dist/lib/config-migration/detector.test.d.ts.map +0 -1
  202. package/dist/lib/config-migration/detector.test.js +0 -201
  203. package/dist/lib/config-migration/detector.test.js.map +0 -1
  204. package/dist/lib/config-migration/reporter.test.d.ts +0 -5
  205. package/dist/lib/config-migration/reporter.test.d.ts.map +0 -1
  206. package/dist/lib/config-migration/reporter.test.js +0 -305
  207. package/dist/lib/config-migration/reporter.test.js.map +0 -1
  208. package/dist/lib/config-migration/runner.test.d.ts +0 -5
  209. package/dist/lib/config-migration/runner.test.d.ts.map +0 -1
  210. package/dist/lib/config-migration/runner.test.js +0 -235
  211. package/dist/lib/config-migration/runner.test.js.map +0 -1
  212. package/dist/lib/config-validation.test.d.ts +0 -5
  213. package/dist/lib/config-validation.test.d.ts.map +0 -1
  214. package/dist/lib/config-validation.test.js +0 -423
  215. package/dist/lib/config-validation.test.js.map +0 -1
  216. package/dist/lib/config.test.d.ts +0 -2
  217. package/dist/lib/config.test.d.ts.map +0 -1
  218. package/dist/lib/config.test.js +0 -554
  219. package/dist/lib/config.test.js.map +0 -1
  220. package/dist/lib/constants.test.d.ts +0 -5
  221. package/dist/lib/constants.test.d.ts.map +0 -1
  222. package/dist/lib/constants.test.js +0 -180
  223. package/dist/lib/constants.test.js.map +0 -1
  224. package/dist/lib/deprecation.test.d.ts +0 -2
  225. package/dist/lib/deprecation.test.d.ts.map +0 -1
  226. package/dist/lib/deprecation.test.js +0 -71
  227. package/dist/lib/deprecation.test.js.map +0 -1
  228. package/dist/lib/errors.test.d.ts +0 -2
  229. package/dist/lib/errors.test.d.ts.map +0 -1
  230. package/dist/lib/errors.test.js +0 -117
  231. package/dist/lib/errors.test.js.map +0 -1
  232. package/dist/lib/git.test.d.ts +0 -2
  233. package/dist/lib/git.test.d.ts.map +0 -1
  234. package/dist/lib/git.test.js +0 -608
  235. package/dist/lib/git.test.js.map +0 -1
  236. package/dist/lib/github.test.d.ts +0 -2
  237. package/dist/lib/github.test.d.ts.map +0 -1
  238. package/dist/lib/github.test.js +0 -441
  239. package/dist/lib/github.test.js.map +0 -1
  240. package/dist/lib/global-check.test.d.ts +0 -5
  241. package/dist/lib/global-check.test.d.ts.map +0 -1
  242. package/dist/lib/global-check.test.js +0 -150
  243. package/dist/lib/global-check.test.js.map +0 -1
  244. package/dist/lib/global-config.test.d.ts +0 -5
  245. package/dist/lib/global-config.test.d.ts.map +0 -1
  246. package/dist/lib/global-config.test.js +0 -282
  247. package/dist/lib/global-config.test.js.map +0 -1
  248. package/dist/lib/hooks/confirmation.test.d.ts +0 -7
  249. package/dist/lib/hooks/confirmation.test.d.ts.map +0 -1
  250. package/dist/lib/hooks/confirmation.test.js +0 -300
  251. package/dist/lib/hooks/confirmation.test.js.map +0 -1
  252. package/dist/lib/hooks/executor.test.d.ts +0 -5
  253. package/dist/lib/hooks/executor.test.d.ts.map +0 -1
  254. package/dist/lib/hooks/executor.test.js +0 -648
  255. package/dist/lib/hooks/executor.test.js.map +0 -1
  256. package/dist/lib/hooks/templates.test.d.ts +0 -5
  257. package/dist/lib/hooks/templates.test.d.ts.map +0 -1
  258. package/dist/lib/hooks/templates.test.js +0 -163
  259. package/dist/lib/hooks/templates.test.js.map +0 -1
  260. package/dist/lib/hooks/types.test.d.ts +0 -5
  261. package/dist/lib/hooks/types.test.d.ts.map +0 -1
  262. package/dist/lib/hooks/types.test.js +0 -132
  263. package/dist/lib/hooks/types.test.js.map +0 -1
  264. package/dist/lib/json-output.test.d.ts +0 -5
  265. package/dist/lib/json-output.test.d.ts.map +0 -1
  266. package/dist/lib/json-output.test.js +0 -261
  267. package/dist/lib/json-output.test.js.map +0 -1
  268. package/dist/lib/logger.test.d.ts +0 -14
  269. package/dist/lib/logger.test.d.ts.map +0 -1
  270. package/dist/lib/logger.test.js +0 -692
  271. package/dist/lib/logger.test.js.map +0 -1
  272. package/dist/lib/lswt/action-executors.test.d.ts +0 -2
  273. package/dist/lib/lswt/action-executors.test.d.ts.map +0 -1
  274. package/dist/lib/lswt/action-executors.test.js +0 -1127
  275. package/dist/lib/lswt/action-executors.test.js.map +0 -1
  276. package/dist/lib/lswt/actions.test.d.ts +0 -2
  277. package/dist/lib/lswt/actions.test.d.ts.map +0 -1
  278. package/dist/lib/lswt/actions.test.js +0 -497
  279. package/dist/lib/lswt/actions.test.js.map +0 -1
  280. package/dist/lib/lswt/args.test.d.ts +0 -2
  281. package/dist/lib/lswt/args.test.d.ts.map +0 -1
  282. package/dist/lib/lswt/args.test.js +0 -195
  283. package/dist/lib/lswt/args.test.js.map +0 -1
  284. package/dist/lib/lswt/environment.test.d.ts +0 -2
  285. package/dist/lib/lswt/environment.test.d.ts.map +0 -1
  286. package/dist/lib/lswt/environment.test.js +0 -544
  287. package/dist/lib/lswt/environment.test.js.map +0 -1
  288. package/dist/lib/lswt/formatters.test.d.ts +0 -2
  289. package/dist/lib/lswt/formatters.test.d.ts.map +0 -1
  290. package/dist/lib/lswt/formatters.test.js +0 -323
  291. package/dist/lib/lswt/formatters.test.js.map +0 -1
  292. package/dist/lib/lswt/fuzzy-search.test.d.ts +0 -5
  293. package/dist/lib/lswt/fuzzy-search.test.d.ts.map +0 -1
  294. package/dist/lib/lswt/fuzzy-search.test.js +0 -207
  295. package/dist/lib/lswt/fuzzy-search.test.js.map +0 -1
  296. package/dist/lib/lswt/interactive.test.d.ts +0 -2
  297. package/dist/lib/lswt/interactive.test.d.ts.map +0 -1
  298. package/dist/lib/lswt/interactive.test.js +0 -771
  299. package/dist/lib/lswt/interactive.test.js.map +0 -1
  300. package/dist/lib/lswt/table.test.d.ts +0 -5
  301. package/dist/lib/lswt/table.test.d.ts.map +0 -1
  302. package/dist/lib/lswt/table.test.js +0 -262
  303. package/dist/lib/lswt/table.test.js.map +0 -1
  304. package/dist/lib/lswt/worktree-info.test.d.ts +0 -2
  305. package/dist/lib/lswt/worktree-info.test.d.ts.map +0 -1
  306. package/dist/lib/lswt/worktree-info.test.js +0 -484
  307. package/dist/lib/lswt/worktree-info.test.js.map +0 -1
  308. package/dist/lib/newpr/action-deps.test.d.ts +0 -5
  309. package/dist/lib/newpr/action-deps.test.d.ts.map +0 -1
  310. package/dist/lib/newpr/action-deps.test.js +0 -111
  311. package/dist/lib/newpr/action-deps.test.js.map +0 -1
  312. package/dist/lib/newpr/actions.test.d.ts +0 -2
  313. package/dist/lib/newpr/actions.test.d.ts.map +0 -1
  314. package/dist/lib/newpr/actions.test.js +0 -254
  315. package/dist/lib/newpr/actions.test.js.map +0 -1
  316. package/dist/lib/newpr/args.test.d.ts +0 -2
  317. package/dist/lib/newpr/args.test.d.ts.map +0 -1
  318. package/dist/lib/newpr/args.test.js +0 -479
  319. package/dist/lib/newpr/args.test.js.map +0 -1
  320. package/dist/lib/newpr/hook-runner.test.d.ts +0 -7
  321. package/dist/lib/newpr/hook-runner.test.d.ts.map +0 -1
  322. package/dist/lib/newpr/hook-runner.test.js +0 -422
  323. package/dist/lib/newpr/hook-runner.test.js.map +0 -1
  324. package/dist/lib/newpr/plan-generator.test.d.ts +0 -7
  325. package/dist/lib/newpr/plan-generator.test.d.ts.map +0 -1
  326. package/dist/lib/newpr/plan-generator.test.js +0 -387
  327. package/dist/lib/newpr/plan-generator.test.js.map +0 -1
  328. package/dist/lib/newpr/scenario-handler.test.d.ts +0 -2
  329. package/dist/lib/newpr/scenario-handler.test.d.ts.map +0 -1
  330. package/dist/lib/newpr/scenario-handler.test.js +0 -256
  331. package/dist/lib/newpr/scenario-handler.test.js.map +0 -1
  332. package/dist/lib/prompts.test.d.ts +0 -2
  333. package/dist/lib/prompts.test.d.ts.map +0 -1
  334. package/dist/lib/prompts.test.js +0 -807
  335. package/dist/lib/prompts.test.js.map +0 -1
  336. package/dist/lib/prs/actions.test.d.ts +0 -5
  337. package/dist/lib/prs/actions.test.d.ts.map +0 -1
  338. package/dist/lib/prs/actions.test.js +0 -356
  339. package/dist/lib/prs/actions.test.js.map +0 -1
  340. package/dist/lib/prs/command.test.d.ts +0 -11
  341. package/dist/lib/prs/command.test.d.ts.map +0 -1
  342. package/dist/lib/prs/command.test.js +0 -409
  343. package/dist/lib/prs/command.test.js.map +0 -1
  344. package/dist/lib/prs/data.test.d.ts +0 -5
  345. package/dist/lib/prs/data.test.d.ts.map +0 -1
  346. package/dist/lib/prs/data.test.js +0 -417
  347. package/dist/lib/prs/data.test.js.map +0 -1
  348. package/dist/lib/prs/details.test.d.ts +0 -5
  349. package/dist/lib/prs/details.test.d.ts.map +0 -1
  350. package/dist/lib/prs/details.test.js +0 -325
  351. package/dist/lib/prs/details.test.js.map +0 -1
  352. package/dist/lib/prs/filters.test.d.ts +0 -5
  353. package/dist/lib/prs/filters.test.d.ts.map +0 -1
  354. package/dist/lib/prs/filters.test.js +0 -312
  355. package/dist/lib/prs/filters.test.js.map +0 -1
  356. package/dist/lib/prs/formatters.test.d.ts +0 -2
  357. package/dist/lib/prs/formatters.test.d.ts.map +0 -1
  358. package/dist/lib/prs/formatters.test.js +0 -387
  359. package/dist/lib/prs/formatters.test.js.map +0 -1
  360. package/dist/lib/prs/interactive.test.d.ts +0 -5
  361. package/dist/lib/prs/interactive.test.d.ts.map +0 -1
  362. package/dist/lib/prs/interactive.test.js +0 -517
  363. package/dist/lib/prs/interactive.test.js.map +0 -1
  364. package/dist/lib/schema.test.d.ts +0 -10
  365. package/dist/lib/schema.test.d.ts.map +0 -1
  366. package/dist/lib/schema.test.js +0 -309
  367. package/dist/lib/schema.test.js.map +0 -1
  368. package/dist/lib/state-detection.test.d.ts +0 -2
  369. package/dist/lib/state-detection.test.d.ts.map +0 -1
  370. package/dist/lib/state-detection.test.js +0 -451
  371. package/dist/lib/state-detection.test.js.map +0 -1
  372. package/dist/lib/ui/error.test.d.ts +0 -2
  373. package/dist/lib/ui/error.test.d.ts.map +0 -1
  374. package/dist/lib/ui/error.test.js +0 -143
  375. package/dist/lib/ui/error.test.js.map +0 -1
  376. package/dist/lib/ui/output.test.d.ts +0 -2
  377. package/dist/lib/ui/output.test.d.ts.map +0 -1
  378. package/dist/lib/ui/output.test.js +0 -59
  379. package/dist/lib/ui/output.test.js.map +0 -1
  380. package/dist/lib/ui/status.test.d.ts +0 -2
  381. package/dist/lib/ui/status.test.d.ts.map +0 -1
  382. package/dist/lib/ui/status.test.js +0 -158
  383. package/dist/lib/ui/status.test.js.map +0 -1
  384. package/dist/lib/ui/table.test.d.ts +0 -2
  385. package/dist/lib/ui/table.test.d.ts.map +0 -1
  386. package/dist/lib/ui/table.test.js +0 -115
  387. package/dist/lib/ui/table.test.js.map +0 -1
  388. package/dist/lib/ui/theme.test.d.ts +0 -2
  389. package/dist/lib/ui/theme.test.d.ts.map +0 -1
  390. package/dist/lib/ui/theme.test.js +0 -76
  391. package/dist/lib/ui/theme.test.js.map +0 -1
  392. package/dist/lib/wtconfig/config-manager.test.d.ts +0 -5
  393. package/dist/lib/wtconfig/config-manager.test.d.ts.map +0 -1
  394. package/dist/lib/wtconfig/config-manager.test.js +0 -501
  395. package/dist/lib/wtconfig/config-manager.test.js.map +0 -1
  396. package/dist/lib/wtconfig/environment.test.d.ts +0 -5
  397. package/dist/lib/wtconfig/environment.test.d.ts.map +0 -1
  398. package/dist/lib/wtconfig/environment.test.js +0 -285
  399. package/dist/lib/wtconfig/environment.test.js.map +0 -1
  400. package/dist/lib/wtlink/config-manifest.test.d.ts +0 -2
  401. package/dist/lib/wtlink/config-manifest.test.d.ts.map +0 -1
  402. package/dist/lib/wtlink/config-manifest.test.js +0 -486
  403. package/dist/lib/wtlink/config-manifest.test.js.map +0 -1
  404. package/dist/lib/wtlink/link-configs.test.d.ts +0 -2
  405. package/dist/lib/wtlink/link-configs.test.d.ts.map +0 -1
  406. package/dist/lib/wtlink/link-configs.test.js +0 -612
  407. package/dist/lib/wtlink/link-configs.test.js.map +0 -1
  408. package/dist/lib/wtlink/main-menu.test.d.ts +0 -5
  409. package/dist/lib/wtlink/main-menu.test.d.ts.map +0 -1
  410. package/dist/lib/wtlink/main-menu.test.js +0 -126
  411. package/dist/lib/wtlink/main-menu.test.js.map +0 -1
  412. package/dist/lib/wtlink/manage-manifest.test.d.ts +0 -2
  413. package/dist/lib/wtlink/manage-manifest.test.d.ts.map +0 -1
  414. package/dist/lib/wtlink/manage-manifest.test.js +0 -714
  415. package/dist/lib/wtlink/manage-manifest.test.js.map +0 -1
  416. package/dist/lib/wtlink/validate-manifest.test.d.ts +0 -2
  417. package/dist/lib/wtlink/validate-manifest.test.d.ts.map +0 -1
  418. package/dist/lib/wtlink/validate-manifest.test.js +0 -220
  419. package/dist/lib/wtlink/validate-manifest.test.js.map +0 -1
  420. package/dist/lib/wtstate/analyze.test.d.ts +0 -5
  421. package/dist/lib/wtstate/analyze.test.d.ts.map +0 -1
  422. package/dist/lib/wtstate/analyze.test.js +0 -282
  423. package/dist/lib/wtstate/analyze.test.js.map +0 -1
  424. package/dist/lib/wtstate/args.test.d.ts +0 -5
  425. package/dist/lib/wtstate/args.test.d.ts.map +0 -1
  426. package/dist/lib/wtstate/args.test.js +0 -120
  427. package/dist/lib/wtstate/args.test.js.map +0 -1
  428. package/dist/mcp/server.test.d.ts +0 -9
  429. package/dist/mcp/server.test.d.ts.map +0 -1
  430. package/dist/mcp/server.test.js +0 -550
  431. package/dist/mcp/server.test.js.map +0 -1
@@ -1,550 +0,0 @@
1
- /**
2
- * MCP Server tests
3
- *
4
- * Tests the MCP server tool definitions and handler logic.
5
- * Since the actual MCP protocol communication is handled by the SDK,
6
- * these tests focus on the tool implementation logic.
7
- */
8
- import { describe, it, expect, vi, beforeEach } from 'vitest';
9
- // Mock the MCP SDK to prevent server startup when importing server.ts
10
- vi.mock('@modelcontextprotocol/sdk/server/index.js', () => ({
11
- Server: vi.fn().mockImplementation(() => ({
12
- setRequestHandler: vi.fn(),
13
- connect: vi.fn(),
14
- close: vi.fn(),
15
- })),
16
- }));
17
- vi.mock('@modelcontextprotocol/sdk/server/stdio.js', () => ({
18
- StdioServerTransport: vi.fn(),
19
- }));
20
- // Mock the API modules before importing anything that uses them
21
- vi.mock('../api/state.js', () => ({
22
- queryState: vi.fn(),
23
- }));
24
- vi.mock('../api/list.js', () => ({
25
- listWorktrees: vi.fn(),
26
- }));
27
- vi.mock('../api/clean.js', () => ({
28
- cleanWorktrees: vi.fn(),
29
- }));
30
- vi.mock('../api/create.js', () => ({
31
- createPr: vi.fn(),
32
- setupPrWorktree: vi.fn(),
33
- }));
34
- // Import mocked functions
35
- import { queryState } from '../api/state.js';
36
- import { listWorktrees } from '../api/list.js';
37
- import { cleanWorktrees } from '../api/clean.js';
38
- import { createPr, setupPrWorktree } from '../api/create.js';
39
- import { isValidStateActionKey, ErrorCode } from '../lib/json-output.js';
40
- // Import tools array for definition tests (safe because SDK is mocked)
41
- import { tools } from './server.js';
42
- describe('MCP Server', () => {
43
- beforeEach(() => {
44
- vi.resetAllMocks();
45
- });
46
- describe('Tool definitions', () => {
47
- it('isValidStateActionKey validates action keys correctly', () => {
48
- // Valid actions
49
- expect(isValidStateActionKey('empty_commit')).toBe(true);
50
- expect(isValidStateActionKey('commit_staged')).toBe(true);
51
- expect(isValidStateActionKey('commit_all')).toBe(true);
52
- expect(isValidStateActionKey('stash_and_empty')).toBe(true);
53
- expect(isValidStateActionKey('use_commits')).toBe(true);
54
- expect(isValidStateActionKey('push_then_branch')).toBe(true);
55
- expect(isValidStateActionKey('pr_for_branch_commit_all')).toBe(true);
56
- expect(isValidStateActionKey('branch_from_detached')).toBe(true);
57
- // Invalid actions
58
- expect(isValidStateActionKey('invalid_action')).toBe(false);
59
- expect(isValidStateActionKey('')).toBe(false);
60
- expect(isValidStateActionKey('COMMIT_STAGED')).toBe(false);
61
- });
62
- });
63
- describe('worktree_get_state handler', () => {
64
- it('calls queryState with default options', async () => {
65
- const mockResult = {
66
- success: true,
67
- command: 'wtstate',
68
- timestamp: '2026-01-02T00:00:00.000Z',
69
- data: {
70
- scenario: 'main_clean_same',
71
- scenarioDescription: 'On main, clean, synced',
72
- currentBranch: 'main',
73
- baseBranch: 'main',
74
- worktreeType: 'main_worktree',
75
- hasChanges: false,
76
- hasStagedChanges: false,
77
- hasUnstagedChanges: false,
78
- localCommits: [],
79
- stagedFiles: [],
80
- unstagedFiles: [],
81
- availableActions: [],
82
- recommendedAction: null,
83
- },
84
- };
85
- vi.mocked(queryState).mockResolvedValue(mockResult);
86
- // Simulate calling the handler
87
- const result = await queryState({ baseBranch: 'main', verbose: false });
88
- expect(queryState).toHaveBeenCalledWith({ baseBranch: 'main', verbose: false });
89
- expect(result.success).toBe(true);
90
- expect(result.data?.scenario).toBe('main_clean_same');
91
- });
92
- it('calls queryState with verbose option', async () => {
93
- const mockResult = {
94
- success: true,
95
- command: 'wtstate',
96
- timestamp: '2026-01-02T00:00:00.000Z',
97
- data: {
98
- scenario: 'main_staged_same',
99
- scenarioDescription: 'On main with staged changes',
100
- currentBranch: 'main',
101
- baseBranch: 'main',
102
- worktreeType: 'main_worktree',
103
- hasChanges: true,
104
- hasStagedChanges: true,
105
- hasUnstagedChanges: false,
106
- localCommits: [],
107
- stagedFiles: ['file.ts'],
108
- unstagedFiles: [],
109
- availableActions: [{ key: 'commit_staged', label: 'Commit staged' }],
110
- recommendedAction: 'commit_staged',
111
- },
112
- };
113
- vi.mocked(queryState).mockResolvedValue(mockResult);
114
- const result = await queryState({ baseBranch: 'develop', verbose: true });
115
- expect(queryState).toHaveBeenCalledWith({ baseBranch: 'develop', verbose: true });
116
- expect(result.success).toBe(true);
117
- expect(result.data?.stagedFiles).toEqual(['file.ts']);
118
- });
119
- });
120
- describe('worktree_list handler', () => {
121
- it('calls listWorktrees with showStatus', async () => {
122
- const mockResult = {
123
- success: true,
124
- command: 'lswt',
125
- timestamp: '2026-01-02T00:00:00.000Z',
126
- data: {
127
- worktrees: [
128
- {
129
- path: '/test/repo',
130
- name: 'repo',
131
- branch: 'main',
132
- commit: 'abc123',
133
- type: 'main',
134
- prNumber: null,
135
- prState: null,
136
- isDraft: null,
137
- hasChanges: false,
138
- },
139
- ],
140
- total: 1,
141
- prCount: 0,
142
- remotePrCount: 0,
143
- openCount: 0,
144
- changesCount: 0,
145
- },
146
- };
147
- vi.mocked(listWorktrees).mockResolvedValue(mockResult);
148
- const result = await listWorktrees({ showStatus: true });
149
- expect(listWorktrees).toHaveBeenCalledWith({ showStatus: true });
150
- expect(result.success).toBe(true);
151
- expect(result.data?.worktrees).toHaveLength(1);
152
- });
153
- it('includes remote PR fields when present', async () => {
154
- const mockResult = {
155
- success: true,
156
- command: 'lswt',
157
- timestamp: '2026-01-02T00:00:00.000Z',
158
- data: {
159
- worktrees: [
160
- {
161
- path: '/test/repo',
162
- name: 'repo',
163
- branch: 'main',
164
- commit: 'abc123',
165
- type: 'main',
166
- prNumber: null,
167
- prState: null,
168
- isDraft: null,
169
- hasChanges: false,
170
- },
171
- {
172
- path: '[remote]',
173
- name: 'PR #42',
174
- branch: 'feature/remote-pr',
175
- commit: 'def456',
176
- type: 'remote_pr',
177
- prNumber: 42,
178
- prState: 'OPEN',
179
- isDraft: false,
180
- hasChanges: false,
181
- prTitle: 'Add new feature',
182
- prUrl: 'https://github.com/test/repo/pull/42',
183
- },
184
- ],
185
- total: 2,
186
- prCount: 0,
187
- remotePrCount: 1,
188
- openCount: 1,
189
- changesCount: 0,
190
- },
191
- };
192
- vi.mocked(listWorktrees).mockResolvedValue(mockResult);
193
- const result = await listWorktrees({ showStatus: true });
194
- expect(result.success).toBe(true);
195
- expect(result.data?.worktrees).toHaveLength(2);
196
- expect(result.data?.remotePrCount).toBe(1);
197
- const remotePr = result.data?.worktrees.find((w) => w.type === 'remote_pr');
198
- expect(remotePr?.prTitle).toBe('Add new feature');
199
- expect(remotePr?.prUrl).toBe('https://github.com/test/repo/pull/42');
200
- });
201
- });
202
- describe('worktree_clean handler', () => {
203
- it('calls cleanWorktrees for all merged/closed', async () => {
204
- const mockResult = {
205
- success: true,
206
- command: 'cleanpr',
207
- timestamp: '2026-01-02T00:00:00.000Z',
208
- data: {
209
- cleaned: [],
210
- skipped: [],
211
- totalCleaned: 0,
212
- totalSkipped: 0,
213
- },
214
- };
215
- vi.mocked(cleanWorktrees).mockResolvedValue(mockResult);
216
- const result = await cleanWorktrees({
217
- prNumber: null,
218
- deleteRemote: false,
219
- force: false,
220
- dryRun: false,
221
- });
222
- expect(cleanWorktrees).toHaveBeenCalledWith({
223
- prNumber: null,
224
- deleteRemote: false,
225
- force: false,
226
- dryRun: false,
227
- });
228
- expect(result.success).toBe(true);
229
- });
230
- it('calls cleanWorktrees for specific PR', async () => {
231
- const mockResult = {
232
- success: true,
233
- command: 'cleanpr',
234
- timestamp: '2026-01-02T00:00:00.000Z',
235
- data: {
236
- cleaned: [
237
- {
238
- prNumber: 42,
239
- branch: 'feat/test',
240
- path: '/test/repo.pr42',
241
- prState: 'MERGED',
242
- localBranchDeleted: true,
243
- remoteBranchDeleted: true,
244
- },
245
- ],
246
- skipped: [],
247
- totalCleaned: 1,
248
- totalSkipped: 0,
249
- },
250
- };
251
- vi.mocked(cleanWorktrees).mockResolvedValue(mockResult);
252
- const result = await cleanWorktrees({
253
- prNumber: 42,
254
- deleteRemote: true,
255
- force: false,
256
- dryRun: false,
257
- });
258
- expect(cleanWorktrees).toHaveBeenCalledWith({
259
- prNumber: 42,
260
- deleteRemote: true,
261
- force: false,
262
- dryRun: false,
263
- });
264
- expect(result.success).toBe(true);
265
- expect(result.data && 'totalCleaned' in result.data ? result.data.totalCleaned : undefined).toBe(1);
266
- });
267
- it('calls cleanWorktrees with dryRun', async () => {
268
- const mockResult = {
269
- success: true,
270
- command: 'cleanpr',
271
- timestamp: '2026-01-02T00:00:00.000Z',
272
- data: {
273
- wouldClean: [
274
- {
275
- prNumber: 42,
276
- branch: 'feat/test',
277
- path: '/test/repo.pr42',
278
- prState: 'MERGED',
279
- },
280
- ],
281
- totalWouldClean: 1,
282
- },
283
- };
284
- vi.mocked(cleanWorktrees).mockResolvedValue(mockResult);
285
- const result = await cleanWorktrees({
286
- prNumber: null,
287
- deleteRemote: false,
288
- force: false,
289
- dryRun: true,
290
- });
291
- expect(cleanWorktrees).toHaveBeenCalledWith({
292
- prNumber: null,
293
- deleteRemote: false,
294
- force: false,
295
- dryRun: true,
296
- });
297
- expect(result.success).toBe(true);
298
- });
299
- });
300
- describe('worktree_create_pr handler', () => {
301
- it('calls createPr with required options', async () => {
302
- const mockResult = {
303
- success: true,
304
- command: 'newpr',
305
- timestamp: '2026-01-02T00:00:00.000Z',
306
- data: {
307
- prNumber: 42,
308
- prUrl: 'https://github.com/test/repo/pull/42',
309
- branch: 'feat/add-feature',
310
- worktreePath: '/test/repo.pr42',
311
- draft: false,
312
- created: true,
313
- },
314
- };
315
- vi.mocked(createPr).mockResolvedValue(mockResult);
316
- const result = await createPr({
317
- description: 'Add new feature',
318
- baseBranch: 'main',
319
- draft: false,
320
- });
321
- expect(createPr).toHaveBeenCalledWith({
322
- description: 'Add new feature',
323
- baseBranch: 'main',
324
- draft: false,
325
- });
326
- expect(result.success).toBe(true);
327
- expect(result.data?.prNumber).toBe(42);
328
- });
329
- it('calls createPr with action and draft', async () => {
330
- const mockResult = {
331
- success: true,
332
- command: 'newpr',
333
- timestamp: '2026-01-02T00:00:00.000Z',
334
- data: {
335
- prNumber: 43,
336
- prUrl: 'https://github.com/test/repo/pull/43',
337
- branch: 'feat/staged-changes',
338
- worktreePath: '/test/repo.pr43',
339
- draft: true,
340
- created: true,
341
- scenario: 'main_staged_same',
342
- actionTaken: 'commit_staged',
343
- },
344
- };
345
- vi.mocked(createPr).mockResolvedValue(mockResult);
346
- const action = 'commit_staged';
347
- const result = await createPr({
348
- description: 'Commit staged changes',
349
- action,
350
- draft: true,
351
- baseBranch: 'develop',
352
- });
353
- expect(createPr).toHaveBeenCalledWith({
354
- description: 'Commit staged changes',
355
- action: 'commit_staged',
356
- draft: true,
357
- baseBranch: 'develop',
358
- });
359
- expect(result.success).toBe(true);
360
- expect(result.data?.draft).toBe(true);
361
- });
362
- it('calls createPr with custom branch name', async () => {
363
- const mockResult = {
364
- success: true,
365
- command: 'newpr',
366
- timestamp: '2026-01-02T00:00:00.000Z',
367
- data: {
368
- prNumber: 44,
369
- prUrl: 'https://github.com/test/repo/pull/44',
370
- branch: 'custom/my-branch',
371
- worktreePath: '/test/repo.pr44',
372
- draft: false,
373
- created: true,
374
- },
375
- };
376
- vi.mocked(createPr).mockResolvedValue(mockResult);
377
- const result = await createPr({
378
- description: 'Custom branch PR',
379
- branchName: 'custom/my-branch',
380
- baseBranch: 'main',
381
- draft: false,
382
- });
383
- expect(createPr).toHaveBeenCalledWith({
384
- description: 'Custom branch PR',
385
- branchName: 'custom/my-branch',
386
- baseBranch: 'main',
387
- draft: false,
388
- });
389
- expect(result.success).toBe(true);
390
- expect(result.data?.branch).toBe('custom/my-branch');
391
- });
392
- });
393
- describe('worktree_setup_pr handler', () => {
394
- it('calls setupPrWorktree with PR number', async () => {
395
- const mockResult = {
396
- success: true,
397
- command: 'newpr',
398
- timestamp: '2026-01-02T00:00:00.000Z',
399
- data: {
400
- prNumber: 42,
401
- prUrl: 'https://github.com/test/repo/pull/42',
402
- branch: 'feat/existing-branch',
403
- worktreePath: '/test/repo.pr42',
404
- draft: false,
405
- created: false,
406
- },
407
- };
408
- vi.mocked(setupPrWorktree).mockResolvedValue(mockResult);
409
- const result = await setupPrWorktree({ prNumber: 42 });
410
- expect(setupPrWorktree).toHaveBeenCalledWith({ prNumber: 42 });
411
- expect(result.success).toBe(true);
412
- expect(result.data?.created).toBe(false);
413
- });
414
- it('handles PR not found error', async () => {
415
- const mockResult = {
416
- success: false,
417
- command: 'newpr',
418
- timestamp: '2026-01-02T00:00:00.000Z',
419
- error: {
420
- code: ErrorCode.PR_NOT_FOUND,
421
- message: 'Could not find PR #999',
422
- },
423
- };
424
- vi.mocked(setupPrWorktree).mockResolvedValue(mockResult);
425
- const result = await setupPrWorktree({ prNumber: 999 });
426
- expect(result.success).toBe(false);
427
- expect(result.error?.code).toBe('PR_NOT_FOUND');
428
- });
429
- });
430
- describe('Error handling', () => {
431
- it('handles API errors gracefully', async () => {
432
- const mockResult = {
433
- success: false,
434
- command: 'lswt',
435
- timestamp: '2026-01-02T00:00:00.000Z',
436
- error: {
437
- code: ErrorCode.NOT_GIT_REPO,
438
- message: 'Not in a git repository',
439
- },
440
- };
441
- vi.mocked(listWorktrees).mockResolvedValue(mockResult);
442
- const result = await listWorktrees({ showStatus: false });
443
- expect(result.success).toBe(false);
444
- expect(result.error?.code).toBe('NOT_GIT_REPO');
445
- });
446
- it('handles unexpected errors', async () => {
447
- vi.mocked(cleanWorktrees).mockRejectedValue(new Error('Unexpected error'));
448
- await expect(cleanWorktrees({ prNumber: null })).rejects.toThrow('Unexpected error');
449
- });
450
- });
451
- describe('MCP tool definitions', () => {
452
- const expectedToolNames = [
453
- 'worktree_get_state',
454
- 'worktree_create_pr',
455
- 'worktree_setup_pr',
456
- 'worktree_list',
457
- 'worktree_clean',
458
- ];
459
- it('defines exactly 5 tools', () => {
460
- expect(tools).toHaveLength(5);
461
- const names = tools.map((t) => t.name);
462
- expect(names).toEqual(expectedToolNames);
463
- });
464
- it('all tools have annotations with required hint fields', () => {
465
- for (const tool of tools) {
466
- expect(tool.annotations).toBeDefined();
467
- const annotations = tool.annotations;
468
- expect(typeof annotations.title).toBe('string');
469
- expect(annotations.title.length).toBeGreaterThan(0);
470
- expect(typeof annotations.readOnlyHint).toBe('boolean');
471
- expect(typeof annotations.destructiveHint).toBe('boolean');
472
- expect(typeof annotations.idempotentHint).toBe('boolean');
473
- expect(typeof annotations.openWorldHint).toBe('boolean');
474
- }
475
- });
476
- it('all tools have outputSchema with CommandResult structure', () => {
477
- for (const tool of tools) {
478
- expect(tool.outputSchema).toBeDefined();
479
- const schema = tool.outputSchema;
480
- expect(schema.type).toBe('object');
481
- expect(schema.required).toContain('success');
482
- expect(schema.required).toContain('command');
483
- expect(schema.required).toContain('timestamp');
484
- const properties = schema.properties;
485
- expect(properties.success).toBeDefined();
486
- expect(properties.command).toBeDefined();
487
- expect(properties.timestamp).toBeDefined();
488
- expect(properties.data).toBeDefined();
489
- expect(properties.error).toBeDefined();
490
- }
491
- });
492
- it('worktree_get_state is annotated as read-only', () => {
493
- const tool = tools.find((t) => t.name === 'worktree_get_state');
494
- expect(tool).toBeDefined();
495
- expect(tool.annotations.readOnlyHint).toBe(true);
496
- expect(tool.annotations.destructiveHint).toBe(false);
497
- expect(tool.annotations.idempotentHint).toBe(true);
498
- expect(tool.annotations.openWorldHint).toBe(false);
499
- });
500
- it('worktree_clean is annotated as destructive', () => {
501
- const tool = tools.find((t) => t.name === 'worktree_clean');
502
- expect(tool).toBeDefined();
503
- expect(tool.annotations.destructiveHint).toBe(true);
504
- expect(tool.annotations.readOnlyHint).toBe(false);
505
- expect(tool.annotations.idempotentHint).toBe(true);
506
- });
507
- it('worktree_create_pr is annotated as not idempotent', () => {
508
- const tool = tools.find((t) => t.name === 'worktree_create_pr');
509
- expect(tool).toBeDefined();
510
- expect(tool.annotations.idempotentHint).toBe(false);
511
- expect(tool.annotations.readOnlyHint).toBe(false);
512
- expect(tool.annotations.destructiveHint).toBe(false);
513
- expect(tool.annotations.openWorldHint).toBe(true);
514
- });
515
- it('worktree_list is annotated as read-only with open world', () => {
516
- const tool = tools.find((t) => t.name === 'worktree_list');
517
- expect(tool).toBeDefined();
518
- expect(tool.annotations.readOnlyHint).toBe(true);
519
- expect(tool.annotations.destructiveHint).toBe(false);
520
- expect(tool.annotations.openWorldHint).toBe(true);
521
- });
522
- it('worktree_setup_pr is annotated as idempotent with open world', () => {
523
- const tool = tools.find((t) => t.name === 'worktree_setup_pr');
524
- expect(tool).toBeDefined();
525
- expect(tool.annotations.idempotentHint).toBe(true);
526
- expect(tool.annotations.readOnlyHint).toBe(false);
527
- expect(tool.annotations.destructiveHint).toBe(false);
528
- expect(tool.annotations.openWorldHint).toBe(true);
529
- });
530
- it('all tool descriptions mention JSON response format', () => {
531
- for (const tool of tools) {
532
- const desc = tool.description ?? '';
533
- const mentionsJson = desc.includes('CommandResult') ||
534
- desc.includes('JSON') ||
535
- desc.includes('success') ||
536
- desc.includes('Example success response');
537
- expect(mentionsJson).toBe(true);
538
- }
539
- });
540
- it('all tool descriptions include example JSON responses', () => {
541
- for (const tool of tools) {
542
- const desc = tool.description ?? '';
543
- expect(desc).toContain('Example success response:');
544
- // Each example should contain valid-looking JSON with "success":true
545
- expect(desc).toContain('"success":true');
546
- }
547
- });
548
- });
549
- });
550
- //# sourceMappingURL=server.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../src/mcp/server.test.ts"],"names":[],"mappings":"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"}