@proletariat/cli 0.3.93 → 0.3.95

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 (546) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +3 -4
  9. package/dist/commands/agent/cleanup.js +5 -4
  10. package/dist/commands/agent/cleanup.js.map +1 -1
  11. package/dist/commands/agent/gc.d.ts +3 -4
  12. package/dist/commands/agent/gc.js +5 -4
  13. package/dist/commands/agent/gc.js.map +1 -1
  14. package/dist/commands/agent/index.d.ts +3 -4
  15. package/dist/commands/agent/index.js +5 -4
  16. package/dist/commands/agent/index.js.map +1 -1
  17. package/dist/commands/agent/list.d.ts +3 -4
  18. package/dist/commands/agent/list.js +5 -4
  19. package/dist/commands/agent/list.js.map +1 -1
  20. package/dist/commands/agent/login.d.ts +1 -1
  21. package/dist/commands/agent/rebuild.d.ts +1 -1
  22. package/dist/commands/agent/remove.d.ts +3 -4
  23. package/dist/commands/agent/remove.js +5 -4
  24. package/dist/commands/agent/remove.js.map +1 -1
  25. package/dist/commands/agent/restart.d.ts +1 -1
  26. package/dist/commands/agent/shell.d.ts +1 -1
  27. package/dist/commands/agent/staff/index.d.ts +3 -4
  28. package/dist/commands/agent/staff/index.js +5 -4
  29. package/dist/commands/agent/staff/index.js.map +1 -1
  30. package/dist/commands/agent/staff/remove.d.ts +3 -4
  31. package/dist/commands/agent/staff/remove.js +5 -4
  32. package/dist/commands/agent/staff/remove.js.map +1 -1
  33. package/dist/commands/agent/status.d.ts +3 -4
  34. package/dist/commands/agent/status.js +5 -4
  35. package/dist/commands/agent/status.js.map +1 -1
  36. package/dist/commands/agent/visit.d.ts +3 -4
  37. package/dist/commands/agent/visit.js +5 -4
  38. package/dist/commands/agent/visit.js.map +1 -1
  39. package/dist/commands/asana/import.d.ts +1 -1
  40. package/dist/commands/branch/create.d.ts +1 -1
  41. package/dist/commands/branch/create.js +1 -12
  42. package/dist/commands/branch/create.js.map +1 -1
  43. package/dist/commands/branch/index.d.ts +1 -1
  44. package/dist/commands/branch/list.d.ts +3 -4
  45. package/dist/commands/branch/list.js +5 -4
  46. package/dist/commands/branch/list.js.map +1 -1
  47. package/dist/commands/branch/validate.d.ts +3 -4
  48. package/dist/commands/branch/validate.js +6 -5
  49. package/dist/commands/branch/validate.js.map +1 -1
  50. package/dist/commands/branch/where.d.ts +3 -4
  51. package/dist/commands/branch/where.js +5 -4
  52. package/dist/commands/branch/where.js.map +1 -1
  53. package/dist/commands/commit.js +1 -1
  54. package/dist/commands/commit.js.map +1 -1
  55. package/dist/commands/config/index.js +2 -2
  56. package/dist/commands/config/index.js.map +1 -1
  57. package/dist/commands/db/backup.d.ts +16 -0
  58. package/dist/commands/db/backup.js +125 -0
  59. package/dist/commands/db/backup.js.map +1 -0
  60. package/dist/commands/db/repair.js +8 -11
  61. package/dist/commands/db/repair.js.map +1 -1
  62. package/dist/commands/diet.d.ts +1 -1
  63. package/dist/commands/docker/index.js +2 -0
  64. package/dist/commands/docker/index.js.map +1 -1
  65. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  66. package/dist/commands/docker/rebuild-cache.js +144 -0
  67. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  68. package/dist/commands/execution/config.d.ts +3 -4
  69. package/dist/commands/execution/config.js +5 -4
  70. package/dist/commands/execution/config.js.map +1 -1
  71. package/dist/commands/execution/index.d.ts +3 -4
  72. package/dist/commands/execution/index.js +5 -4
  73. package/dist/commands/execution/index.js.map +1 -1
  74. package/dist/commands/execution/list.d.ts +3 -4
  75. package/dist/commands/execution/list.js +5 -4
  76. package/dist/commands/execution/list.js.map +1 -1
  77. package/dist/commands/execution/logs.d.ts +3 -4
  78. package/dist/commands/execution/logs.js +5 -4
  79. package/dist/commands/execution/logs.js.map +1 -1
  80. package/dist/commands/execution/stop.d.ts +3 -4
  81. package/dist/commands/execution/stop.js +5 -4
  82. package/dist/commands/execution/stop.js.map +1 -1
  83. package/dist/commands/execution/view.d.ts +3 -4
  84. package/dist/commands/execution/view.js +5 -4
  85. package/dist/commands/execution/view.js.map +1 -1
  86. package/dist/commands/hook/export.d.ts +3 -4
  87. package/dist/commands/hook/export.js +5 -4
  88. package/dist/commands/hook/export.js.map +1 -1
  89. package/dist/commands/hook/fire.d.ts +3 -4
  90. package/dist/commands/hook/fire.js +5 -4
  91. package/dist/commands/hook/fire.js.map +1 -1
  92. package/dist/commands/hook/index.d.ts +1 -1
  93. package/dist/commands/hook/list.d.ts +3 -4
  94. package/dist/commands/hook/list.js +5 -4
  95. package/dist/commands/hook/list.js.map +1 -1
  96. package/dist/commands/hook/preset.d.ts +3 -4
  97. package/dist/commands/hook/preset.js +5 -4
  98. package/dist/commands/hook/preset.js.map +1 -1
  99. package/dist/commands/linear/auth.d.ts +1 -1
  100. package/dist/commands/linear/connect.d.ts +1 -1
  101. package/dist/commands/linear/import.d.ts +1 -1
  102. package/dist/commands/linear/status.d.ts +1 -1
  103. package/dist/commands/linear/sync.d.ts +1 -1
  104. package/dist/commands/mcp-server.d.ts +8 -2
  105. package/dist/commands/mcp-server.js +15 -28
  106. package/dist/commands/mcp-server.js.map +1 -1
  107. package/dist/commands/monday/connect.d.ts +1 -1
  108. package/dist/commands/monday/sync.d.ts +1 -1
  109. package/dist/commands/orchestrate/index.d.ts +3 -4
  110. package/dist/commands/orchestrate/index.js +5 -4
  111. package/dist/commands/orchestrate/index.js.map +1 -1
  112. package/dist/commands/orchestrator/index.d.ts +3 -4
  113. package/dist/commands/orchestrator/index.js +5 -4
  114. package/dist/commands/orchestrator/index.js.map +1 -1
  115. package/dist/commands/orchestrator/start.d.ts +3 -3
  116. package/dist/commands/orchestrator/start.js +38 -40
  117. package/dist/commands/orchestrator/start.js.map +1 -1
  118. package/dist/commands/pr/checks.d.ts +3 -4
  119. package/dist/commands/pr/checks.js +5 -4
  120. package/dist/commands/pr/checks.js.map +1 -1
  121. package/dist/commands/pr/close.d.ts +1 -1
  122. package/dist/commands/pr/create.d.ts +1 -1
  123. package/dist/commands/pr/index.d.ts +1 -1
  124. package/dist/commands/pr/link.d.ts +1 -1
  125. package/dist/commands/pr/list.d.ts +1 -1
  126. package/dist/commands/pr/merge.d.ts +1 -1
  127. package/dist/commands/pr/status.d.ts +1 -1
  128. package/dist/commands/pull.d.ts +1 -1
  129. package/dist/commands/repo/add.d.ts +3 -4
  130. package/dist/commands/repo/add.js +5 -4
  131. package/dist/commands/repo/add.js.map +1 -1
  132. package/dist/commands/repo/create.d.ts +3 -4
  133. package/dist/commands/repo/create.js +5 -4
  134. package/dist/commands/repo/create.js.map +1 -1
  135. package/dist/commands/repo/fix-remotes.d.ts +3 -4
  136. package/dist/commands/repo/fix-remotes.js +5 -4
  137. package/dist/commands/repo/fix-remotes.js.map +1 -1
  138. package/dist/commands/repo/index.d.ts +3 -4
  139. package/dist/commands/repo/index.js +5 -4
  140. package/dist/commands/repo/index.js.map +1 -1
  141. package/dist/commands/repo/list.d.ts +3 -4
  142. package/dist/commands/repo/list.js +5 -4
  143. package/dist/commands/repo/list.js.map +1 -1
  144. package/dist/commands/repo/remove.d.ts +1 -1
  145. package/dist/commands/repo/view.d.ts +1 -1
  146. package/dist/commands/session/attach.d.ts +1 -1
  147. package/dist/commands/session/cleanup.d.ts +3 -4
  148. package/dist/commands/session/cleanup.js +5 -4
  149. package/dist/commands/session/cleanup.js.map +1 -1
  150. package/dist/commands/session/create.d.ts +3 -4
  151. package/dist/commands/session/create.js +5 -4
  152. package/dist/commands/session/create.js.map +1 -1
  153. package/dist/commands/session/exec.d.ts +3 -4
  154. package/dist/commands/session/exec.js +5 -4
  155. package/dist/commands/session/exec.js.map +1 -1
  156. package/dist/commands/session/health.d.ts +1 -1
  157. package/dist/commands/session/health.js +18 -0
  158. package/dist/commands/session/health.js.map +1 -1
  159. package/dist/commands/session/index.d.ts +3 -4
  160. package/dist/commands/session/index.js +9 -4
  161. package/dist/commands/session/index.js.map +1 -1
  162. package/dist/commands/session/inspect.d.ts +3 -4
  163. package/dist/commands/session/inspect.js +5 -4
  164. package/dist/commands/session/inspect.js.map +1 -1
  165. package/dist/commands/session/list.d.ts +3 -4
  166. package/dist/commands/session/list.js +19 -5
  167. package/dist/commands/session/list.js.map +1 -1
  168. package/dist/commands/session/peek.d.ts +1 -1
  169. package/dist/commands/session/prune.d.ts +3 -4
  170. package/dist/commands/session/prune.js +5 -4
  171. package/dist/commands/session/prune.js.map +1 -1
  172. package/dist/commands/session/report.d.ts +25 -5
  173. package/dist/commands/session/report.js +201 -5
  174. package/dist/commands/session/report.js.map +1 -1
  175. package/dist/commands/session/restart.d.ts +3 -4
  176. package/dist/commands/session/restart.js +5 -4
  177. package/dist/commands/session/restart.js.map +1 -1
  178. package/dist/commands/session/watch.d.ts +17 -0
  179. package/dist/commands/session/watch.js +139 -0
  180. package/dist/commands/session/watch.js.map +1 -0
  181. package/dist/commands/shortcut/connect.d.ts +1 -1
  182. package/dist/commands/support/logs.d.ts +1 -1
  183. package/dist/commands/ticket/create.d.ts +1 -1
  184. package/dist/commands/ticket/delete.d.ts +1 -1
  185. package/dist/commands/ticket/edit.d.ts +1 -1
  186. package/dist/commands/ticket/index.d.ts +3 -4
  187. package/dist/commands/ticket/index.js +11 -40
  188. package/dist/commands/ticket/index.js.map +1 -1
  189. package/dist/commands/ticket/list.d.ts +1 -1
  190. package/dist/commands/ticket/move.d.ts +1 -1
  191. package/dist/commands/ticket/show.d.ts +8 -7
  192. package/dist/commands/ticket/show.js +101 -8
  193. package/dist/commands/ticket/show.js.map +1 -1
  194. package/dist/commands/ticket/update.d.ts +1 -1
  195. package/dist/commands/trello/configure.d.ts +1 -1
  196. package/dist/commands/trello/import.d.ts +1 -1
  197. package/dist/commands/trello/sync.d.ts +1 -1
  198. package/dist/commands/{dashboard/index.d.ts → web.d.ts} +10 -4
  199. package/dist/commands/web.js +82 -0
  200. package/dist/commands/web.js.map +1 -0
  201. package/dist/commands/work/asana.d.ts +1 -1
  202. package/dist/commands/work/complete.d.ts +1 -1
  203. package/dist/commands/work/groom.d.ts +1 -1
  204. package/dist/commands/work/hooks/add.d.ts +3 -4
  205. package/dist/commands/work/hooks/add.js +5 -4
  206. package/dist/commands/work/hooks/add.js.map +1 -1
  207. package/dist/commands/work/hooks/index.d.ts +1 -1
  208. package/dist/commands/work/hooks/list.d.ts +3 -4
  209. package/dist/commands/work/hooks/list.js +5 -4
  210. package/dist/commands/work/hooks/list.js.map +1 -1
  211. package/dist/commands/work/hooks/remove.d.ts +1 -1
  212. package/dist/commands/work/hooks/toggle.d.ts +3 -4
  213. package/dist/commands/work/hooks/toggle.js +5 -4
  214. package/dist/commands/work/hooks/toggle.js.map +1 -1
  215. package/dist/commands/work/implement.d.ts +1 -1
  216. package/dist/commands/work/index.d.ts +1 -1
  217. package/dist/commands/work/jira.d.ts +1 -1
  218. package/dist/commands/work/linear.d.ts +1 -1
  219. package/dist/commands/work/peek.d.ts +3 -4
  220. package/dist/commands/work/peek.js +5 -4
  221. package/dist/commands/work/peek.js.map +1 -1
  222. package/dist/commands/{ticket/cancel.d.ts → work/propose.d.ts} +11 -5
  223. package/dist/commands/work/propose.js +57 -0
  224. package/dist/commands/work/propose.js.map +1 -0
  225. package/dist/commands/work/ready.d.ts +1 -1
  226. package/dist/commands/work/ready.js +2 -2
  227. package/dist/commands/work/ready.js.map +1 -1
  228. package/dist/commands/work/rebase.d.ts +2 -2
  229. package/dist/commands/work/rebase.js +52 -49
  230. package/dist/commands/work/rebase.js.map +1 -1
  231. package/dist/commands/work/resolve.d.ts +1 -1
  232. package/dist/commands/work/review.d.ts +1 -1
  233. package/dist/commands/work/ship.d.ts +7 -1
  234. package/dist/commands/work/ship.js +217 -48
  235. package/dist/commands/work/ship.js.map +1 -1
  236. package/dist/commands/work/shortcut.d.ts +1 -1
  237. package/dist/commands/work/source/set.d.ts +1 -1
  238. package/dist/commands/work/source.d.ts +1 -1
  239. package/dist/commands/work/spawn.d.ts +1 -1
  240. package/dist/commands/work/start.d.ts +1 -1
  241. package/dist/commands/work/start.js +3 -6
  242. package/dist/commands/work/start.js.map +1 -1
  243. package/dist/commands/work/status.d.ts +1 -1
  244. package/dist/commands/work/stop.d.ts +3 -4
  245. package/dist/commands/work/stop.js +5 -4
  246. package/dist/commands/work/stop.js.map +1 -1
  247. package/dist/commands/work/watch.d.ts +1 -1
  248. package/dist/hooks/init.js +12 -2
  249. package/dist/hooks/init.js.map +1 -1
  250. package/dist/lib/asana/config.js +13 -7
  251. package/dist/lib/asana/config.js.map +1 -1
  252. package/dist/lib/branch/index.d.ts +6 -5
  253. package/dist/lib/branch/index.js +8 -13
  254. package/dist/lib/branch/index.js.map +1 -1
  255. package/dist/lib/clickup/client.d.ts +92 -0
  256. package/dist/lib/clickup/client.js +150 -0
  257. package/dist/lib/clickup/client.js.map +1 -0
  258. package/dist/lib/clickup/config.d.ts +41 -0
  259. package/dist/lib/clickup/config.js +104 -0
  260. package/dist/lib/clickup/config.js.map +1 -0
  261. package/dist/lib/clickup/index.d.ts +4 -0
  262. package/dist/lib/clickup/index.js +4 -0
  263. package/dist/lib/clickup/index.js.map +1 -0
  264. package/dist/lib/clickup/types.d.ts +104 -0
  265. package/dist/lib/clickup/types.js +34 -0
  266. package/dist/lib/clickup/types.js.map +1 -0
  267. package/dist/lib/dashboard/html.d.ts +2 -1
  268. package/dist/lib/dashboard/html.js +150 -522
  269. package/dist/lib/dashboard/html.js.map +1 -1
  270. package/dist/lib/database/credential-store.d.ts +64 -0
  271. package/dist/lib/database/credential-store.js +306 -0
  272. package/dist/lib/database/credential-store.js.map +1 -0
  273. package/dist/lib/database/db-safety.d.ts +48 -9
  274. package/dist/lib/database/db-safety.js +308 -43
  275. package/dist/lib/database/db-safety.js.map +1 -1
  276. package/dist/lib/database/index.d.ts +2 -1
  277. package/dist/lib/database/index.js +3 -1
  278. package/dist/lib/database/index.js.map +1 -1
  279. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  280. package/dist/lib/database/pmo-bootstrap.js +45 -20
  281. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  282. package/dist/lib/database/workspace.js +7 -1
  283. package/dist/lib/database/workspace.js.map +1 -1
  284. package/dist/lib/execution/devcontainer.js +51 -0
  285. package/dist/lib/execution/devcontainer.js.map +1 -1
  286. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  287. package/dist/lib/execution/runners/docker-management.js +99 -7
  288. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  289. package/dist/lib/execution/runners/docker.js +8 -0
  290. package/dist/lib/execution/runners/docker.js.map +1 -1
  291. package/dist/lib/execution/runners/prompt-builder.js +9 -6
  292. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  293. package/dist/lib/execution/session-utils.d.ts +4 -0
  294. package/dist/lib/execution/session-utils.js +34 -24
  295. package/dist/lib/execution/session-utils.js.map +1 -1
  296. package/dist/lib/execution/spawner.js +2 -4
  297. package/dist/lib/execution/spawner.js.map +1 -1
  298. package/dist/lib/execution/storage.d.ts +29 -1
  299. package/dist/lib/execution/storage.js +77 -0
  300. package/dist/lib/execution/storage.js.map +1 -1
  301. package/dist/lib/execution/types.d.ts +17 -6
  302. package/dist/lib/execution/types.js +11 -8
  303. package/dist/lib/execution/types.js.map +1 -1
  304. package/dist/lib/external-issues/types.d.ts +3 -3
  305. package/dist/lib/external-issues/types.js +1 -1
  306. package/dist/lib/external-issues/types.js.map +1 -1
  307. package/dist/lib/jira/config.js +10 -4
  308. package/dist/lib/jira/config.js.map +1 -1
  309. package/dist/lib/linear/config.js +13 -8
  310. package/dist/lib/linear/config.js.map +1 -1
  311. package/dist/lib/machine-config.d.ts +8 -0
  312. package/dist/lib/machine-config.js +37 -0
  313. package/dist/lib/machine-config.js.map +1 -1
  314. package/dist/lib/mcp/generator.d.ts +26 -0
  315. package/dist/lib/mcp/generator.js +219 -0
  316. package/dist/lib/mcp/generator.js.map +1 -0
  317. package/dist/lib/mcp/index.d.ts +1 -0
  318. package/dist/lib/mcp/index.js +1 -0
  319. package/dist/lib/mcp/index.js.map +1 -1
  320. package/dist/lib/mcp/tools/index.d.ts +0 -11
  321. package/dist/lib/mcp/tools/index.js +0 -11
  322. package/dist/lib/mcp/tools/index.js.map +1 -1
  323. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  324. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  325. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  326. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  327. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  328. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  329. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  330. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  331. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  332. package/dist/lib/mcp/tools/ticket.js +10 -48
  333. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  334. package/dist/lib/monday/config.js +11 -5
  335. package/dist/lib/monday/config.js.map +1 -1
  336. package/dist/lib/orchestrate/poller.d.ts +1 -1
  337. package/dist/lib/orchestrate/poller.js +1 -1
  338. package/dist/lib/pmo/base-command.d.ts +20 -152
  339. package/dist/lib/pmo/base-command.js +32 -198
  340. package/dist/lib/pmo/base-command.js.map +1 -1
  341. package/dist/lib/pmo/index.d.ts +1 -0
  342. package/dist/lib/pmo/index.js +3 -0
  343. package/dist/lib/pmo/index.js.map +1 -1
  344. package/dist/lib/pmo/storage/base.d.ts +0 -18
  345. package/dist/lib/pmo/storage/base.js +5 -234
  346. package/dist/lib/pmo/storage/base.js.map +1 -1
  347. package/dist/lib/pmo/storage/index.d.ts +1 -76
  348. package/dist/lib/pmo/storage/index.js +1 -215
  349. package/dist/lib/pmo/storage/index.js.map +1 -1
  350. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  351. package/dist/lib/pmo/storage/tickets.js +4 -34
  352. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  353. package/dist/lib/pmo/types.d.ts +0 -37
  354. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  355. package/dist/lib/providers/clickup-provider.js +353 -0
  356. package/dist/lib/providers/clickup-provider.js.map +1 -0
  357. package/dist/lib/providers/index.d.ts +1 -0
  358. package/dist/lib/providers/index.js +1 -0
  359. package/dist/lib/providers/index.js.map +1 -1
  360. package/dist/lib/providers/resolver.d.ts +1 -1
  361. package/dist/lib/providers/resolver.js +32 -5
  362. package/dist/lib/providers/resolver.js.map +1 -1
  363. package/dist/lib/providers/trello-provider.d.ts +28 -0
  364. package/dist/lib/providers/trello-provider.js +381 -0
  365. package/dist/lib/providers/trello-provider.js.map +1 -0
  366. package/dist/lib/providers/types.d.ts +1 -1
  367. package/dist/lib/runners/claude-code-runner.js +13 -4
  368. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  369. package/dist/lib/runtime-command.d.ts +219 -0
  370. package/dist/lib/runtime-command.js +320 -0
  371. package/dist/lib/runtime-command.js.map +1 -0
  372. package/dist/lib/session/heartbeat.d.ts +45 -0
  373. package/dist/lib/session/heartbeat.js +150 -0
  374. package/dist/lib/session/heartbeat.js.map +1 -0
  375. package/dist/lib/session/index.d.ts +7 -0
  376. package/dist/lib/session/index.js +8 -0
  377. package/dist/lib/session/index.js.map +1 -0
  378. package/dist/lib/session/watcher.d.ts +79 -0
  379. package/dist/lib/session/watcher.js +142 -0
  380. package/dist/lib/session/watcher.js.map +1 -0
  381. package/dist/lib/shipping/auto-merge.d.ts +57 -0
  382. package/dist/lib/shipping/auto-merge.js +311 -0
  383. package/dist/lib/shipping/auto-merge.js.map +1 -0
  384. package/dist/lib/shipping/github.d.ts +68 -0
  385. package/dist/lib/shipping/github.js +217 -0
  386. package/dist/lib/shipping/github.js.map +1 -0
  387. package/dist/lib/shipping/index.d.ts +13 -0
  388. package/dist/lib/shipping/index.js +11 -0
  389. package/dist/lib/shipping/index.js.map +1 -0
  390. package/dist/lib/shipping/rebase.d.ts +35 -0
  391. package/dist/lib/shipping/rebase.js +107 -0
  392. package/dist/lib/shipping/rebase.js.map +1 -0
  393. package/dist/lib/shipping/types.d.ts +181 -0
  394. package/dist/lib/shipping/types.js +9 -0
  395. package/dist/lib/shipping/types.js.map +1 -0
  396. package/dist/lib/shortcut/config.js +13 -7
  397. package/dist/lib/shortcut/config.js.map +1 -1
  398. package/dist/lib/trello/client.d.ts +1 -0
  399. package/dist/lib/trello/client.js +6 -0
  400. package/dist/lib/trello/client.js.map +1 -1
  401. package/dist/lib/trello/config.js +17 -12
  402. package/dist/lib/trello/config.js.map +1 -1
  403. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  404. package/dist/lib/work-source/config.d.ts +1 -1
  405. package/dist/lib/work-source/config.js +11 -1
  406. package/dist/lib/work-source/config.js.map +1 -1
  407. package/dist/lib/work-source/provider-sources.js +6 -1
  408. package/dist/lib/work-source/provider-sources.js.map +1 -1
  409. package/oclif.manifest.json +3810 -5723
  410. package/package.json +8 -8
  411. package/dist/commands/board/index.d.ts +0 -21
  412. package/dist/commands/board/index.js +0 -263
  413. package/dist/commands/board/index.js.map +0 -1
  414. package/dist/commands/board/view.d.ts +0 -15
  415. package/dist/commands/board/view.js +0 -137
  416. package/dist/commands/board/view.js.map +0 -1
  417. package/dist/commands/board/watch.d.ts +0 -15
  418. package/dist/commands/board/watch.js +0 -59
  419. package/dist/commands/board/watch.js.map +0 -1
  420. package/dist/commands/dashboard/index.js +0 -117
  421. package/dist/commands/dashboard/index.js.map +0 -1
  422. package/dist/commands/dashboard.d.ts +0 -38
  423. package/dist/commands/dashboard.js +0 -353
  424. package/dist/commands/dashboard.js.map +0 -1
  425. package/dist/commands/pmo/init.d.ts +0 -28
  426. package/dist/commands/pmo/init.js +0 -410
  427. package/dist/commands/pmo/init.js.map +0 -1
  428. package/dist/commands/project/archive.d.ts +0 -18
  429. package/dist/commands/project/archive.js +0 -79
  430. package/dist/commands/project/archive.js.map +0 -1
  431. package/dist/commands/project/create.d.ts +0 -24
  432. package/dist/commands/project/create.js +0 -191
  433. package/dist/commands/project/create.js.map +0 -1
  434. package/dist/commands/project/delete.d.ts +0 -18
  435. package/dist/commands/project/delete.js +0 -115
  436. package/dist/commands/project/delete.js.map +0 -1
  437. package/dist/commands/project/index.d.ts +0 -14
  438. package/dist/commands/project/index.js +0 -60
  439. package/dist/commands/project/index.js.map +0 -1
  440. package/dist/commands/project/list.d.ts +0 -16
  441. package/dist/commands/project/list.js +0 -115
  442. package/dist/commands/project/list.js.map +0 -1
  443. package/dist/commands/project/spec.d.ts +0 -19
  444. package/dist/commands/project/spec.js +0 -218
  445. package/dist/commands/project/spec.js.map +0 -1
  446. package/dist/commands/project/unarchive.d.ts +0 -17
  447. package/dist/commands/project/unarchive.js +0 -55
  448. package/dist/commands/project/unarchive.js.map +0 -1
  449. package/dist/commands/project/update.d.ts +0 -19
  450. package/dist/commands/project/update.js +0 -161
  451. package/dist/commands/project/update.js.map +0 -1
  452. package/dist/commands/project/view.d.ts +0 -17
  453. package/dist/commands/project/view.js +0 -107
  454. package/dist/commands/project/view.js.map +0 -1
  455. package/dist/commands/ticket/bulk.d.ts +0 -14
  456. package/dist/commands/ticket/bulk.js +0 -141
  457. package/dist/commands/ticket/bulk.js.map +0 -1
  458. package/dist/commands/ticket/cancel.js +0 -206
  459. package/dist/commands/ticket/cancel.js.map +0 -1
  460. package/dist/commands/ticket/category.d.ts +0 -15
  461. package/dist/commands/ticket/category.js +0 -64
  462. package/dist/commands/ticket/category.js.map +0 -1
  463. package/dist/commands/ticket/complete.d.ts +0 -17
  464. package/dist/commands/ticket/complete.js +0 -193
  465. package/dist/commands/ticket/complete.js.map +0 -1
  466. package/dist/commands/ticket/epic.d.ts +0 -21
  467. package/dist/commands/ticket/epic.js +0 -306
  468. package/dist/commands/ticket/epic.js.map +0 -1
  469. package/dist/commands/ticket/link/block.d.ts +0 -15
  470. package/dist/commands/ticket/link/block.js +0 -96
  471. package/dist/commands/ticket/link/block.js.map +0 -1
  472. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  473. package/dist/commands/ticket/link/duplicates.js +0 -96
  474. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  475. package/dist/commands/ticket/link/index.d.ts +0 -14
  476. package/dist/commands/ticket/link/index.js +0 -99
  477. package/dist/commands/ticket/link/index.js.map +0 -1
  478. package/dist/commands/ticket/link/relates.d.ts +0 -15
  479. package/dist/commands/ticket/link/relates.js +0 -96
  480. package/dist/commands/ticket/link/relates.js.map +0 -1
  481. package/dist/commands/ticket/project.d.ts +0 -19
  482. package/dist/commands/ticket/project.js +0 -257
  483. package/dist/commands/ticket/project.js.map +0 -1
  484. package/dist/commands/ticket/reassign.d.ts +0 -20
  485. package/dist/commands/ticket/reassign.js +0 -340
  486. package/dist/commands/ticket/reassign.js.map +0 -1
  487. package/dist/commands/ticket/resolve.d.ts +0 -68
  488. package/dist/commands/ticket/resolve.js +0 -306
  489. package/dist/commands/ticket/resolve.js.map +0 -1
  490. package/dist/commands/ticket/spec.d.ts +0 -19
  491. package/dist/commands/ticket/spec.js +0 -260
  492. package/dist/commands/ticket/spec.js.map +0 -1
  493. package/dist/commands/ticket/status.d.ts +0 -14
  494. package/dist/commands/ticket/status.js +0 -84
  495. package/dist/commands/ticket/status.js.map +0 -1
  496. package/dist/commands/ticket/view.d.ts +0 -14
  497. package/dist/commands/ticket/view.js +0 -113
  498. package/dist/commands/ticket/view.js.map +0 -1
  499. package/dist/lib/mcp/tools/board.d.ts +0 -6
  500. package/dist/lib/mcp/tools/board.js +0 -190
  501. package/dist/lib/mcp/tools/board.js.map +0 -1
  502. package/dist/lib/mcp/tools/category.d.ts +0 -6
  503. package/dist/lib/mcp/tools/category.js +0 -85
  504. package/dist/lib/mcp/tools/category.js.map +0 -1
  505. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  506. package/dist/lib/mcp/tools/epic.js +0 -184
  507. package/dist/lib/mcp/tools/epic.js.map +0 -1
  508. package/dist/lib/mcp/tools/label.d.ts +0 -6
  509. package/dist/lib/mcp/tools/label.js +0 -339
  510. package/dist/lib/mcp/tools/label.js.map +0 -1
  511. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  512. package/dist/lib/mcp/tools/phase.js +0 -132
  513. package/dist/lib/mcp/tools/phase.js.map +0 -1
  514. package/dist/lib/mcp/tools/project.d.ts +0 -6
  515. package/dist/lib/mcp/tools/project.js +0 -197
  516. package/dist/lib/mcp/tools/project.js.map +0 -1
  517. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  518. package/dist/lib/mcp/tools/roadmap.js +0 -124
  519. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  520. package/dist/lib/mcp/tools/status.d.ts +0 -6
  521. package/dist/lib/mcp/tools/status.js +0 -110
  522. package/dist/lib/mcp/tools/status.js.map +0 -1
  523. package/dist/lib/mcp/tools/template.d.ts +0 -6
  524. package/dist/lib/mcp/tools/template.js +0 -108
  525. package/dist/lib/mcp/tools/template.js.map +0 -1
  526. package/dist/lib/mcp/tools/view.d.ts +0 -6
  527. package/dist/lib/mcp/tools/view.js +0 -77
  528. package/dist/lib/mcp/tools/view.js.map +0 -1
  529. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  530. package/dist/lib/mcp/tools/workflow.js +0 -96
  531. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  532. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  533. package/dist/lib/pmo/storage/categories.js +0 -206
  534. package/dist/lib/pmo/storage/categories.js.map +0 -1
  535. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  536. package/dist/lib/pmo/storage/labels.js +0 -347
  537. package/dist/lib/pmo/storage/labels.js.map +0 -1
  538. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  539. package/dist/lib/pmo/storage/phases.js +0 -393
  540. package/dist/lib/pmo/storage/phases.js.map +0 -1
  541. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  542. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  543. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  544. package/dist/lib/pmo/storage/views.d.ts +0 -57
  545. package/dist/lib/pmo/storage/views.js +0 -456
  546. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -1,257 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class TicketProject extends PMOCommand {
6
- static description = 'Move ticket(s) to a different project';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> TKT-001 new-project',
9
- '<%= config.bin %> <%= command.id %> TKT-001',
10
- '<%= config.bin %> <%= command.id %>',
11
- '<%= config.bin %> <%= command.id %> --bulk --target other-project',
12
- ];
13
- static args = {
14
- ticketId: Args.string({
15
- description: 'Ticket ID',
16
- required: false,
17
- }),
18
- targetProject: Args.string({
19
- description: 'Target project ID',
20
- required: false,
21
- }),
22
- };
23
- static flags = {
24
- ...pmoBaseFlags,
25
- 'keep-epic': Flags.boolean({
26
- description: 'Keep ticket assigned to its epic (if epic is in source project, will unlink)',
27
- default: false,
28
- }),
29
- bulk: Flags.boolean({
30
- char: 'b',
31
- description: 'Enable bulk mode to move multiple tickets',
32
- default: false,
33
- }),
34
- target: Flags.string({
35
- char: 't',
36
- description: 'Target project ID (for bulk mode)',
37
- }),
38
- };
39
- async execute() {
40
- const { args, flags } = await this.parse(TicketProject);
41
- // Check if JSON output mode is active
42
- const jsonMode = shouldOutputJson(flags);
43
- // Bulk mode
44
- if (flags.bulk) {
45
- await this.executeBulk(flags);
46
- return;
47
- }
48
- // Get source project ID
49
- const sourceProjectId = await this.requireProject();
50
- // Get ticket ID
51
- let ticketId = args.ticketId;
52
- if (!ticketId) {
53
- const tickets = await this.storage.listTickets(sourceProjectId);
54
- if (tickets.length === 0) {
55
- if (jsonMode) {
56
- outputErrorAsJson('NO_TICKETS', 'No tickets found in this project.', createMetadata('ticket project', flags));
57
- return;
58
- }
59
- this.log(styles.muted('\nNo tickets found in this project.'));
60
- return;
61
- }
62
- const selected = await this.selectFromList({
63
- message: 'Select ticket to move:',
64
- items: tickets,
65
- getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
66
- getValue: (t) => t.id,
67
- getCommand: (t) => `prlt ticket project ${t.id} -P ${sourceProjectId} --json`,
68
- jsonMode: jsonMode ? { flags, commandName: 'ticket project' } : null,
69
- });
70
- if (!selected) {
71
- return;
72
- }
73
- ticketId = selected;
74
- }
75
- // Get ticket details
76
- const ticket = await this.storage.getTicket(ticketId);
77
- if (!ticket) {
78
- this.error(`Ticket not found: ${ticketId}`);
79
- }
80
- // Use resolved internal ID for all subsequent operations (external keys like PRLT-xxx resolve to TKT-xxx)
81
- ticketId = ticket.id;
82
- // Get all projects
83
- const projects = await this.storage.listProjects();
84
- const otherProjects = projects.filter(p => p.id !== sourceProjectId);
85
- if (otherProjects.length === 0) {
86
- this.log(styles.muted('\nNo other projects to move to.'));
87
- const actionChoices = [
88
- { id: 'create', name: 'Create a new project' },
89
- { id: 'cancel', name: 'Cancel' },
90
- ];
91
- const action = await this.selectFromList({
92
- message: 'What would you like to do?',
93
- items: actionChoices,
94
- getName: (a) => a.name,
95
- getValue: (a) => a.id,
96
- getCommand: (a) => a.id === 'create' ? 'prlt project create --json' : '',
97
- jsonMode: jsonMode ? { flags, commandName: 'ticket project' } : null,
98
- });
99
- if (action === 'create') {
100
- await this.config.runCommand('project:create', []);
101
- }
102
- return;
103
- }
104
- // Get target project
105
- let targetProjectId = args.targetProject;
106
- if (!targetProjectId) {
107
- const selected = await this.selectFromList({
108
- message: 'Select target project:',
109
- items: otherProjects,
110
- getName: (p) => `${p.id} - ${p.name} (${p.status})`,
111
- getValue: (p) => p.id,
112
- getCommand: (p) => `prlt ticket project ${ticketId} ${p.id} -P ${sourceProjectId} --json`,
113
- jsonMode: jsonMode ? { flags, commandName: 'ticket project' } : null,
114
- });
115
- if (!selected) {
116
- return;
117
- }
118
- targetProjectId = selected;
119
- }
120
- // Validate target project
121
- const targetProject = projects.find(p => p.id === targetProjectId);
122
- if (!targetProject) {
123
- this.error(`Project not found: ${targetProjectId}`);
124
- }
125
- if (targetProjectId === sourceProjectId) {
126
- this.log(styles.muted('\nTicket is already in this project.'));
127
- return;
128
- }
129
- // Check if ticket has an epic
130
- const epicWarning = ticket.epicId && !flags['keep-epic'];
131
- if (epicWarning) {
132
- const epic = await this.storage.getEpic(ticket.epicId);
133
- if (epic && epic.projectId !== targetProjectId) {
134
- this.log(styles.warning(`\nTicket is assigned to epic "${ticket.epicId}" in source project.`));
135
- const actionChoices = [
136
- { id: 'unlink', name: 'Unlink from epic (move ticket only)' },
137
- { id: 'cancel', name: 'Cancel' },
138
- ];
139
- const action = await this.selectFromList({
140
- message: 'How to handle epic assignment?',
141
- items: actionChoices,
142
- getName: (a) => a.name,
143
- getValue: (a) => a.id,
144
- getCommand: (a) => a.id === 'unlink' ? `prlt ticket project ${ticketId} ${targetProjectId} -P ${sourceProjectId} --json` : '',
145
- jsonMode: jsonMode ? { flags, commandName: 'ticket project' } : null,
146
- });
147
- if (action === 'cancel' || !action) {
148
- return;
149
- }
150
- // Unlink from epic before moving
151
- await this.storage.updateTicket(ticketId, { epicId: undefined });
152
- this.log(styles.muted(` Unlinked from epic "${ticket.epicId}"`));
153
- }
154
- }
155
- // Move ticket to new project using the storage method
156
- const movedTicket = await this.storage.moveTicketToProject(ticketId, targetProjectId);
157
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
158
- this.log(styles.success(`\n✅ Moved ticket ${styles.emphasis(ticketId)} to project ${styles.emphasis(targetProjectId)}`));
159
- this.log(styles.muted(` From: ${sourceProjectId}`));
160
- this.log(styles.muted(` To: ${targetProjectId} (column: ${movedTicket.statusName || 'first column'})`));
161
- this.log(styles.muted(`\nView ticket: prlt ticket view ${ticketId}`));
162
- }
163
- async executeBulk(flags) {
164
- const jsonMode = shouldOutputJson(flags);
165
- const jsonModeConfig = jsonMode ? { flags: flags, commandName: 'ticket project' } : null;
166
- this.log(styles.emphasis('📁 Bulk Move Tickets to Project\n'));
167
- // Get source project ID
168
- const sourceProjectId = await this.requireProject();
169
- // Get all tickets in current project
170
- const tickets = await this.storage.listTickets(sourceProjectId);
171
- if (tickets.length === 0) {
172
- this.log(styles.muted('\nNo tickets found in this project.'));
173
- return;
174
- }
175
- // Select tickets
176
- const { selectedTickets } = await this.prompt([{
177
- type: 'checkbox',
178
- name: 'selectedTickets',
179
- message: 'Select tickets to move:',
180
- choices: tickets.map(t => {
181
- const epicLabel = t.epicId ? ` [epic: ${t.epicId}]` : '';
182
- return {
183
- name: `${t.id} - ${t.title} (${t.statusName})${epicLabel}`,
184
- value: t.id,
185
- };
186
- }),
187
- }], jsonModeConfig);
188
- if (selectedTickets.length === 0) {
189
- this.log(styles.muted('No tickets selected.'));
190
- return;
191
- }
192
- // Get target project
193
- const projects = await this.storage.listProjects();
194
- const otherProjects = projects.filter(p => p.id !== sourceProjectId);
195
- if (otherProjects.length === 0) {
196
- this.log(styles.muted('\nNo other projects to move to. Create one with: prlt project create'));
197
- return;
198
- }
199
- let targetProjectId = flags.target;
200
- if (!targetProjectId) {
201
- const { selected } = await this.prompt([{
202
- type: 'list',
203
- name: 'selected',
204
- message: 'Select target project:',
205
- choices: otherProjects.map(p => ({
206
- name: `${p.id} - ${p.name}`,
207
- value: p.id,
208
- command: `prlt ticket project --bulk --target ${p.id} --json`,
209
- })),
210
- }], jsonModeConfig);
211
- targetProjectId = selected;
212
- }
213
- // Validate target project
214
- const targetProject = projects.find(p => p.id === targetProjectId);
215
- if (!targetProject) {
216
- this.error(`Project not found: ${targetProjectId}`);
217
- }
218
- // Check for epic conflicts
219
- const ticketsWithEpics = selectedTickets.filter((id) => {
220
- const t = tickets.find(t => t.id === id);
221
- return t?.epicId;
222
- });
223
- if (ticketsWithEpics.length > 0) {
224
- this.log(styles.warning(`\n${ticketsWithEpics.length} ticket(s) are assigned to epics.`));
225
- const { action } = await this.prompt([{
226
- type: 'list',
227
- name: 'action',
228
- message: 'How to handle epic assignments?',
229
- choices: [
230
- { name: 'Unlink from epics and move', value: 'unlink', command: `prlt ticket project --bulk --target ${targetProjectId} --json` },
231
- { name: 'Cancel', value: 'cancel', command: '' },
232
- ],
233
- }], jsonModeConfig);
234
- if (action === 'cancel') {
235
- return;
236
- }
237
- }
238
- // Move each ticket using the storage method - sequential for clear logging
239
- let lastMovedTicket;
240
- for (const ticketId of selectedTickets) {
241
- const ticket = tickets.find(t => t.id === ticketId);
242
- // Unlink from epic if needed
243
- if (ticket?.epicId) {
244
- // eslint-disable-next-line no-await-in-loop
245
- await this.storage.updateTicket(ticketId, { epicId: undefined });
246
- }
247
- // Move ticket to new project
248
- // eslint-disable-next-line no-await-in-loop
249
- lastMovedTicket = await this.storage.moveTicketToProject(ticketId, targetProjectId);
250
- this.log(styles.success(` Moved ${ticketId} to ${targetProjectId}`));
251
- }
252
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
253
- this.log(styles.success(`\n✅ Moved ${selectedTickets.length} ticket(s) to project "${targetProject.name}"`));
254
- this.log(styles.muted(` Target column: ${lastMovedTicket?.statusName || 'first column'}`));
255
- }
256
- }
257
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/ticket/project.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class TicketReassign extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- ticketId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- assignee: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
- };
9
- static flags: {
10
- to: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
- };
18
- execute(): Promise<void>;
19
- private executeBulk;
20
- }
@@ -1,340 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- import { getWorkspaceInfo } from '../../lib/agents/commands.js';
6
- export default class TicketReassign extends PMOCommand {
7
- static description = 'Reassign ticket(s) to a different agent';
8
- static examples = [
9
- '<%= config.bin %> <%= command.id %>',
10
- '<%= config.bin %> <%= command.id %> TKT-001 alice',
11
- '<%= config.bin %> <%= command.id %> --bulk --to alice',
12
- '<%= config.bin %> <%= command.id %> --bulk --from bob --to alice',
13
- '<%= config.bin %> <%= command.id %> --json # Output choices as JSON',
14
- ];
15
- static args = {
16
- ticketId: Args.string({
17
- description: 'Ticket ID - prompts with dropdown if not provided',
18
- required: false,
19
- }),
20
- assignee: Args.string({
21
- description: 'Target agent name',
22
- required: false,
23
- }),
24
- };
25
- static flags = {
26
- ...pmoBaseFlags,
27
- to: Flags.string({
28
- description: 'Target agent name (for bulk mode)',
29
- }),
30
- from: Flags.string({
31
- description: 'Filter tickets by current assignee (bulk mode)',
32
- }),
33
- bulk: Flags.boolean({
34
- char: 'b',
35
- description: 'Enable bulk mode to reassign multiple tickets',
36
- default: false,
37
- }),
38
- force: Flags.boolean({
39
- char: 'f',
40
- description: 'Skip confirmation prompt',
41
- default: false,
42
- }),
43
- };
44
- async execute() {
45
- const { args, flags } = await this.parse(TicketReassign);
46
- const projectId = flags.project;
47
- // Check if JSON output mode is active
48
- const jsonMode = shouldOutputJson(flags);
49
- // Get all tickets
50
- const allTickets = await this.storage.listTickets(projectId);
51
- if (allTickets.length === 0) {
52
- if (jsonMode) {
53
- outputErrorAsJson('NO_TICKETS', 'No tickets found.', createMetadata('ticket reassign', flags));
54
- return;
55
- }
56
- this.log(styles.warning('No tickets found.'));
57
- return;
58
- }
59
- // Get unique assignees from tickets
60
- const assignees = new Set();
61
- for (const ticket of allTickets) {
62
- if (ticket.assignee) {
63
- assignees.add(ticket.assignee);
64
- }
65
- }
66
- // Also get agents from workspace if available
67
- const db = this.storage.db;
68
- try {
69
- const agents = db.prepare(`SELECT name FROM agents`).all();
70
- for (const agent of agents) {
71
- assignees.add(agent.name);
72
- }
73
- }
74
- catch {
75
- // agents table might not exist, ignore
76
- }
77
- // Bulk mode
78
- if (flags.bulk) {
79
- await this.executeBulk(allTickets, Array.from(assignees), flags);
80
- return;
81
- }
82
- // Single ticket mode
83
- let ticketId = args.ticketId;
84
- if (!ticketId) {
85
- const selected = await this.selectFromList({
86
- message: 'Select ticket to reassign:',
87
- items: allTickets,
88
- getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
89
- getValue: (t) => t.id,
90
- getCommand: (t) => `prlt ticket reassign ${t.id}${projectId ? ` -P ${projectId}` : ''} --json`,
91
- jsonMode: jsonMode ? { flags, commandName: 'ticket reassign' } : null,
92
- });
93
- if (!selected) {
94
- return;
95
- }
96
- ticketId = selected;
97
- }
98
- // Get ticket
99
- const ticket = await this.storage.getTicket(ticketId);
100
- if (!ticket) {
101
- this.error(`Ticket "${ticketId}" not found.`);
102
- }
103
- // Use resolved internal ID for all subsequent operations (external keys like PRLT-xxx resolve to TKT-xxx)
104
- ticketId = ticket.id;
105
- // Get target assignee
106
- let targetAssignee = args.assignee || flags.to;
107
- if (!targetAssignee) {
108
- const jsonModeConfig = jsonMode ? { flags, commandName: 'ticket reassign' } : null;
109
- const { assignee } = await this.prompt([{
110
- type: 'list',
111
- name: 'assignee',
112
- message: `Reassign ${ticketId} to:`,
113
- choices: [
114
- { name: 'None (unassign)', value: '__none__', command: `prlt ticket reassign ${ticketId} none${projectId ? ` -P ${projectId}` : ''} --json` },
115
- ...Array.from(assignees).sort().map(a => ({
116
- name: a === ticket.assignee ? `${a} (current)` : a,
117
- value: a,
118
- command: `prlt ticket reassign ${ticketId} ${a}${projectId ? ` -P ${projectId}` : ''} --json`,
119
- })),
120
- { name: '── Enter custom name ──', value: '__custom__', command: `prlt ticket reassign ${ticketId} <name>${projectId ? ` -P ${projectId}` : ''} --json` },
121
- ],
122
- }], jsonModeConfig);
123
- if (assignee === '__custom__') {
124
- const { customAssignee } = await this.prompt([{
125
- type: 'input',
126
- name: 'customAssignee',
127
- message: 'Enter agent/assignee name:',
128
- validate: (input) => input.length > 0 || 'Name is required',
129
- }], jsonModeConfig);
130
- targetAssignee = customAssignee;
131
- }
132
- else if (assignee === '__none__') {
133
- targetAssignee = undefined;
134
- }
135
- else {
136
- targetAssignee = assignee;
137
- }
138
- }
139
- // Handle special values
140
- if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
141
- targetAssignee = undefined;
142
- }
143
- // Validate agent name if provided directly (not through interactive prompt)
144
- if (targetAssignee && (args.assignee || flags.to)) {
145
- try {
146
- const workspaceInfo = getWorkspaceInfo();
147
- const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
148
- if (!agent) {
149
- this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
150
- }
151
- }
152
- catch {
153
- // Not in a workspace or agents table doesn't exist - skip validation
154
- }
155
- }
156
- // Check if same
157
- if (targetAssignee === ticket.assignee) {
158
- this.log(styles.muted(`Ticket "${ticketId}" is already assigned to "${targetAssignee || 'none'}".`));
159
- return;
160
- }
161
- // Assign through provider (routes to Linear/Jira/PMO as appropriate)
162
- const provider = await this.resolveTicketProvider(ticketId, ticket.projectId || '');
163
- if (targetAssignee) {
164
- const result = await provider.assignTicket(ticketId, targetAssignee);
165
- if (!result.success) {
166
- this.error(`Failed to reassign ticket: ${result.error}`);
167
- }
168
- }
169
- else {
170
- // Unassign: use updateTicket to clear assignee
171
- const result = await provider.updateTicket(ticketId, { assignee: undefined });
172
- if (!result.success) {
173
- this.error(`Failed to unassign ticket: ${result.error}`);
174
- }
175
- }
176
- // Auto-export
177
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
178
- const action = targetAssignee ? `reassigned to ${targetAssignee}` : 'unassigned';
179
- this.log(styles.success(`\n✅ Ticket ${styles.emphasis(ticketId)} ${action}`));
180
- this.log(styles.muted(` Title: ${ticket.title}`));
181
- if (ticket.assignee) {
182
- this.log(styles.muted(` Previous: ${ticket.assignee}`));
183
- }
184
- }
185
- async executeBulk(allTickets, assigneesList, flags) {
186
- const jsonMode = shouldOutputJson(flags);
187
- this.log(styles.emphasis('👤 Reassign Tickets\n'));
188
- // Filter tickets if --from specified
189
- let filteredTickets = allTickets;
190
- if (flags.from) {
191
- if (flags.from === 'none' || flags.from === 'unassigned') {
192
- filteredTickets = allTickets.filter(t => !t.assignee);
193
- }
194
- else {
195
- filteredTickets = allTickets.filter(t => t.assignee === flags.from);
196
- }
197
- }
198
- if (filteredTickets.length === 0) {
199
- this.log(styles.warning('No tickets found matching filter.'));
200
- return;
201
- }
202
- // Select tickets to reassign
203
- const jsonModeConfig = jsonMode ? { flags: flags, commandName: 'ticket reassign' } : null;
204
- const { selectedTickets } = await this.prompt([{
205
- type: 'checkbox',
206
- name: 'selectedTickets',
207
- message: 'Select tickets to reassign:',
208
- choices: filteredTickets.map(t => ({
209
- name: `${t.id} - ${t.title} [Assignee: ${t.assignee || '(none)'}]`,
210
- value: t.id,
211
- })),
212
- }], jsonModeConfig);
213
- if (selectedTickets.length === 0) {
214
- this.log(styles.muted('No tickets selected.'));
215
- return;
216
- }
217
- // Select target assignee
218
- let targetAssignee = flags.to;
219
- if (targetAssignee === undefined) {
220
- const { assignee } = await this.prompt([{
221
- type: 'list',
222
- name: 'assignee',
223
- message: 'Reassign to which agent?',
224
- choices: [
225
- { name: 'None (unassign)', value: '__none__', command: '' },
226
- ...assigneesList.sort().map(a => ({
227
- name: a,
228
- value: a,
229
- command: `prlt ticket reassign --bulk --to ${a} --json`,
230
- })),
231
- { name: '── Enter custom name ──', value: '__custom__', command: '' },
232
- ],
233
- }], jsonModeConfig);
234
- if (assignee === '__custom__') {
235
- const { customAssignee } = await this.prompt([{
236
- type: 'input',
237
- name: 'customAssignee',
238
- message: 'Enter agent/assignee name:',
239
- validate: (input) => input.length > 0 || 'Name is required',
240
- }], jsonModeConfig);
241
- targetAssignee = customAssignee;
242
- }
243
- else if (assignee === '__none__') {
244
- targetAssignee = undefined;
245
- }
246
- else {
247
- targetAssignee = assignee;
248
- }
249
- }
250
- // Handle special values
251
- if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
252
- targetAssignee = undefined;
253
- }
254
- // Validate agent name if provided directly via --to flag (not through interactive prompt)
255
- if (targetAssignee && flags.to) {
256
- try {
257
- const workspaceInfo = getWorkspaceInfo();
258
- const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
259
- if (!agent) {
260
- this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
261
- }
262
- }
263
- catch {
264
- // Not in a workspace or agents table doesn't exist - skip validation
265
- }
266
- }
267
- // Confirmation
268
- if (!flags.force) {
269
- const assigneeLabel = targetAssignee || 'None (unassigning)';
270
- this.log(styles.primary('\nWill reassign to:'));
271
- this.log(styles.primary(` → ${assigneeLabel}\n`));
272
- this.log(styles.primary('Tickets:'));
273
- for (const ticketId of selectedTickets) {
274
- const ticket = filteredTickets.find(t => t.id === ticketId);
275
- this.log(styles.primary(` • ${ticketId}: ${ticket?.title}`));
276
- }
277
- this.log('');
278
- const { confirm } = await this.prompt([{
279
- type: 'list',
280
- name: 'confirm',
281
- message: 'Continue?',
282
- choices: [
283
- { name: 'No, cancel', value: false, command: '' },
284
- { name: 'Yes, reassign tickets', value: true, command: `prlt ticket reassign --bulk --to ${targetAssignee || 'none'} --force --json` }
285
- ],
286
- default: 0
287
- }], jsonModeConfig);
288
- if (!confirm) {
289
- this.log(styles.muted('Operation cancelled.'));
290
- return;
291
- }
292
- }
293
- this.log('');
294
- // Reassign each ticket
295
- let successCount = 0;
296
- let failCount = 0;
297
- // Process sequentially for clear success/failure logging
298
- for (const ticketId of selectedTickets) {
299
- try {
300
- const ticket = filteredTickets.find(t => t.id === ticketId);
301
- // eslint-disable-next-line no-await-in-loop
302
- const provider = await this.resolveTicketProvider(ticketId, ticket?.projectId || '');
303
- let result;
304
- if (targetAssignee) {
305
- // eslint-disable-next-line no-await-in-loop
306
- result = await provider.assignTicket(ticketId, targetAssignee);
307
- }
308
- else {
309
- // eslint-disable-next-line no-await-in-loop
310
- result = await provider.updateTicket(ticketId, { assignee: undefined });
311
- }
312
- if (result.success) {
313
- const action = targetAssignee ? `Reassigned to ${targetAssignee}` : 'Unassigned';
314
- this.log(styles.success(`${ticketId}: ${action}`));
315
- successCount++;
316
- }
317
- else {
318
- this.log(styles.error(`Failed to reassign ${ticketId}: ${result.error}`));
319
- failCount++;
320
- }
321
- }
322
- catch (error) {
323
- this.log(styles.error(`Failed to reassign ${ticketId}: ${error instanceof Error ? error.message : String(error)}`));
324
- failCount++;
325
- }
326
- }
327
- // Auto-export to kanban.md
328
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
329
- // Summary
330
- this.log('');
331
- if (successCount > 0) {
332
- const action = targetAssignee ? 'Reassigned' : 'Unassigned';
333
- this.log(styles.success(`${action} ${successCount} ticket(s)`));
334
- }
335
- if (failCount > 0) {
336
- this.log(styles.error(`Failed to reassign ${failCount} ticket(s)`));
337
- }
338
- }
339
- }
340
- //# sourceMappingURL=reassign.js.map