@proletariat/cli 0.3.80 → 0.3.82

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 (373) hide show
  1. package/README.md +2 -46
  2. package/dist/commands/action/run.js +2 -2
  3. package/dist/commands/action/run.js.map +1 -1
  4. package/dist/commands/agent/staff/add.d.ts +17 -1
  5. package/dist/commands/agent/staff/add.js +274 -1
  6. package/dist/commands/agent/staff/add.js.map +1 -1
  7. package/dist/commands/agent/staff/list.d.ts +10 -1
  8. package/dist/commands/agent/staff/list.js +103 -1
  9. package/dist/commands/agent/staff/list.js.map +1 -1
  10. package/dist/commands/agent/staff/remove.d.ts +18 -1
  11. package/dist/commands/agent/staff/remove.js +143 -1
  12. package/dist/commands/agent/staff/remove.js.map +1 -1
  13. package/dist/commands/{epic/activate.d.ts → pr/close.d.ts} +8 -2
  14. package/dist/commands/pr/close.js +157 -0
  15. package/dist/commands/pr/close.js.map +1 -0
  16. package/dist/commands/pr/index.js +6 -2
  17. package/dist/commands/pr/index.js.map +1 -1
  18. package/dist/commands/pr/list.d.ts +1 -0
  19. package/dist/commands/pr/list.js +37 -3
  20. package/dist/commands/pr/list.js.map +1 -1
  21. package/dist/commands/pr/merge.js +1 -1
  22. package/dist/commands/pr/merge.js.map +1 -1
  23. package/dist/commands/pr/status.js +33 -1
  24. package/dist/commands/pr/status.js.map +1 -1
  25. package/dist/commands/self-update.d.ts +7 -14
  26. package/dist/commands/self-update.js +11 -179
  27. package/dist/commands/self-update.js.map +1 -1
  28. package/dist/commands/{workflow/switch.d.ts → ticket/cancel.d.ts} +4 -2
  29. package/dist/commands/ticket/cancel.js +204 -0
  30. package/dist/commands/ticket/cancel.js.map +1 -0
  31. package/dist/commands/ticket/create.d.ts +7 -2
  32. package/dist/commands/ticket/create.js +45 -29
  33. package/dist/commands/ticket/create.js.map +1 -1
  34. package/dist/commands/ticket/link/index.js +0 -12
  35. package/dist/commands/ticket/link/index.js.map +1 -1
  36. package/dist/commands/ticket/move.d.ts +1 -0
  37. package/dist/commands/ticket/move.js +10 -3
  38. package/dist/commands/ticket/move.js.map +1 -1
  39. package/dist/commands/update.d.ts +18 -0
  40. package/dist/commands/update.js +184 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/lib/database/index.js +0 -134
  43. package/dist/lib/database/index.js.map +1 -1
  44. package/dist/lib/database/migrations/0006_drop_theme_names_used.d.ts +8 -0
  45. package/dist/lib/database/migrations/0006_drop_theme_names_used.js +30 -0
  46. package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -0
  47. package/dist/lib/database/migrations/0007_add_worktree_columns.d.ts +8 -0
  48. package/dist/lib/database/migrations/0007_add_worktree_columns.js +24 -0
  49. package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -0
  50. package/dist/lib/database/migrations/0008_add_agent_mount_mode.d.ts +8 -0
  51. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js +18 -0
  52. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -0
  53. package/dist/lib/database/migrations/0009_create_media_items.d.ts +7 -0
  54. package/dist/lib/database/migrations/0009_create_media_items.js +29 -0
  55. package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -0
  56. package/dist/lib/database/migrations/0010_add_ticket_position.d.ts +9 -0
  57. package/dist/lib/database/migrations/0010_add_ticket_position.js +44 -0
  58. package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -0
  59. package/dist/lib/database/migrations/index.js +10 -0
  60. package/dist/lib/database/migrations/index.js.map +1 -1
  61. package/dist/lib/events/events.d.ts +2 -1
  62. package/dist/lib/pmo/storage/dependencies.js +45 -21
  63. package/dist/lib/pmo/storage/dependencies.js.map +1 -1
  64. package/dist/lib/pmo/storage/statuses.d.ts +2 -0
  65. package/dist/lib/pmo/storage/statuses.js +209 -150
  66. package/dist/lib/pmo/storage/statuses.js.map +1 -1
  67. package/dist/lib/pr/index.d.ts +14 -0
  68. package/dist/lib/pr/index.js +48 -0
  69. package/dist/lib/pr/index.js.map +1 -1
  70. package/dist/lib/update-check.js +1 -1
  71. package/dist/lib/update-check.js.map +1 -1
  72. package/dist/lib/update-prompt.js +1 -1
  73. package/dist/lib/work-lifecycle/events.d.ts +11 -0
  74. package/oclif.manifest.json +5060 -11723
  75. package/package.json +1 -1
  76. package/dist/commands/agents/index.d.ts +0 -11
  77. package/dist/commands/agents/index.js +0 -105
  78. package/dist/commands/agents/index.js.map +0 -1
  79. package/dist/commands/agents/themes/add-names.d.ts +0 -1
  80. package/dist/commands/agents/themes/add-names.js +0 -2
  81. package/dist/commands/agents/themes/add-names.js.map +0 -1
  82. package/dist/commands/agents/themes/create.d.ts +0 -1
  83. package/dist/commands/agents/themes/create.js +0 -2
  84. package/dist/commands/agents/themes/create.js.map +0 -1
  85. package/dist/commands/agents/themes/list.d.ts +0 -1
  86. package/dist/commands/agents/themes/list.js +0 -2
  87. package/dist/commands/agents/themes/list.js.map +0 -1
  88. package/dist/commands/category/create.d.ts +0 -19
  89. package/dist/commands/category/create.js +0 -130
  90. package/dist/commands/category/create.js.map +0 -1
  91. package/dist/commands/category/delete.d.ts +0 -18
  92. package/dist/commands/category/delete.js +0 -124
  93. package/dist/commands/category/delete.js.map +0 -1
  94. package/dist/commands/category/index.d.ts +0 -16
  95. package/dist/commands/category/index.js +0 -88
  96. package/dist/commands/category/index.js.map +0 -1
  97. package/dist/commands/category/list.d.ts +0 -19
  98. package/dist/commands/category/list.js +0 -111
  99. package/dist/commands/category/list.js.map +0 -1
  100. package/dist/commands/category/rename.d.ts +0 -19
  101. package/dist/commands/category/rename.js +0 -160
  102. package/dist/commands/category/rename.js.map +0 -1
  103. package/dist/commands/epic/activate.js +0 -107
  104. package/dist/commands/epic/activate.js.map +0 -1
  105. package/dist/commands/epic/archive.d.ts +0 -15
  106. package/dist/commands/epic/archive.js +0 -118
  107. package/dist/commands/epic/archive.js.map +0 -1
  108. package/dist/commands/epic/create.d.ts +0 -17
  109. package/dist/commands/epic/create.js +0 -179
  110. package/dist/commands/epic/create.js.map +0 -1
  111. package/dist/commands/epic/delete.d.ts +0 -15
  112. package/dist/commands/epic/delete.js +0 -129
  113. package/dist/commands/epic/delete.js.map +0 -1
  114. package/dist/commands/epic/index.d.ts +0 -14
  115. package/dist/commands/epic/index.js +0 -88
  116. package/dist/commands/epic/index.js.map +0 -1
  117. package/dist/commands/epic/list.d.ts +0 -13
  118. package/dist/commands/epic/list.js +0 -103
  119. package/dist/commands/epic/list.js.map +0 -1
  120. package/dist/commands/epic/move.d.ts +0 -16
  121. package/dist/commands/epic/move.js +0 -162
  122. package/dist/commands/epic/move.js.map +0 -1
  123. package/dist/commands/epic/progress.d.ts +0 -17
  124. package/dist/commands/epic/progress.js +0 -170
  125. package/dist/commands/epic/progress.js.map +0 -1
  126. package/dist/commands/epic/project.d.ts +0 -16
  127. package/dist/commands/epic/project.js +0 -199
  128. package/dist/commands/epic/project.js.map +0 -1
  129. package/dist/commands/epic/reorder.d.ts +0 -22
  130. package/dist/commands/epic/reorder.js +0 -152
  131. package/dist/commands/epic/reorder.js.map +0 -1
  132. package/dist/commands/epic/show.d.ts +0 -13
  133. package/dist/commands/epic/show.js +0 -17
  134. package/dist/commands/epic/show.js.map +0 -1
  135. package/dist/commands/epic/spec.d.ts +0 -17
  136. package/dist/commands/epic/spec.js +0 -189
  137. package/dist/commands/epic/spec.js.map +0 -1
  138. package/dist/commands/epic/ticket.d.ts +0 -21
  139. package/dist/commands/epic/ticket.js +0 -300
  140. package/dist/commands/epic/ticket.js.map +0 -1
  141. package/dist/commands/epic/view.d.ts +0 -14
  142. package/dist/commands/epic/view.js +0 -141
  143. package/dist/commands/epic/view.js.map +0 -1
  144. package/dist/commands/execution/kill.d.ts +0 -12
  145. package/dist/commands/execution/kill.js +0 -18
  146. package/dist/commands/execution/kill.js.map +0 -1
  147. package/dist/commands/label/create.d.ts +0 -20
  148. package/dist/commands/label/create.js +0 -58
  149. package/dist/commands/label/create.js.map +0 -1
  150. package/dist/commands/label/delete.d.ts +0 -17
  151. package/dist/commands/label/delete.js +0 -33
  152. package/dist/commands/label/delete.js.map +0 -1
  153. package/dist/commands/label/group/create.d.ts +0 -20
  154. package/dist/commands/label/group/create.js +0 -56
  155. package/dist/commands/label/group/create.js.map +0 -1
  156. package/dist/commands/label/group/list.d.ts +0 -14
  157. package/dist/commands/label/group/list.js +0 -53
  158. package/dist/commands/label/group/list.js.map +0 -1
  159. package/dist/commands/label/index.d.ts +0 -15
  160. package/dist/commands/label/index.js +0 -59
  161. package/dist/commands/label/index.js.map +0 -1
  162. package/dist/commands/label/list.d.ts +0 -16
  163. package/dist/commands/label/list.js +0 -84
  164. package/dist/commands/label/list.js.map +0 -1
  165. package/dist/commands/link/create.d.ts +0 -16
  166. package/dist/commands/link/create.js +0 -136
  167. package/dist/commands/link/create.js.map +0 -1
  168. package/dist/commands/link/index.d.ts +0 -14
  169. package/dist/commands/link/index.js +0 -82
  170. package/dist/commands/link/index.js.map +0 -1
  171. package/dist/commands/link/list.d.ts +0 -18
  172. package/dist/commands/link/list.js +0 -178
  173. package/dist/commands/link/list.js.map +0 -1
  174. package/dist/commands/link/remove.d.ts +0 -16
  175. package/dist/commands/link/remove.js +0 -115
  176. package/dist/commands/link/remove.js.map +0 -1
  177. package/dist/commands/media/add.d.ts +0 -19
  178. package/dist/commands/media/add.js +0 -98
  179. package/dist/commands/media/add.js.map +0 -1
  180. package/dist/commands/media/index.d.ts +0 -14
  181. package/dist/commands/media/index.js +0 -93
  182. package/dist/commands/media/index.js.map +0 -1
  183. package/dist/commands/media/list.d.ts +0 -15
  184. package/dist/commands/media/list.js +0 -94
  185. package/dist/commands/media/list.js.map +0 -1
  186. package/dist/commands/media/preprocess.d.ts +0 -19
  187. package/dist/commands/media/preprocess.js +0 -91
  188. package/dist/commands/media/preprocess.js.map +0 -1
  189. package/dist/commands/media/remove.d.ts +0 -18
  190. package/dist/commands/media/remove.js +0 -105
  191. package/dist/commands/media/remove.js.map +0 -1
  192. package/dist/commands/media/show.d.ts +0 -17
  193. package/dist/commands/media/show.js +0 -122
  194. package/dist/commands/media/show.js.map +0 -1
  195. package/dist/commands/phase/create.d.ts +0 -22
  196. package/dist/commands/phase/create.js +0 -165
  197. package/dist/commands/phase/create.js.map +0 -1
  198. package/dist/commands/phase/delete.d.ts +0 -18
  199. package/dist/commands/phase/delete.js +0 -75
  200. package/dist/commands/phase/delete.js.map +0 -1
  201. package/dist/commands/phase/list.d.ts +0 -13
  202. package/dist/commands/phase/list.js +0 -75
  203. package/dist/commands/phase/list.js.map +0 -1
  204. package/dist/commands/phase/move.d.ts +0 -18
  205. package/dist/commands/phase/move.js +0 -124
  206. package/dist/commands/phase/move.js.map +0 -1
  207. package/dist/commands/phase/template/apply.d.ts +0 -26
  208. package/dist/commands/phase/template/apply.js +0 -15
  209. package/dist/commands/phase/template/apply.js.map +0 -1
  210. package/dist/commands/phase/template/create.d.ts +0 -23
  211. package/dist/commands/phase/template/create.js +0 -15
  212. package/dist/commands/phase/template/create.js.map +0 -1
  213. package/dist/commands/phase/template/delete.d.ts +0 -18
  214. package/dist/commands/phase/template/delete.js +0 -63
  215. package/dist/commands/phase/template/delete.js.map +0 -1
  216. package/dist/commands/phase/template/list.d.ts +0 -17
  217. package/dist/commands/phase/template/list.js +0 -90
  218. package/dist/commands/phase/template/list.js.map +0 -1
  219. package/dist/commands/phase/template/update.d.ts +0 -1
  220. package/dist/commands/phase/template/update.js +0 -2
  221. package/dist/commands/phase/template/update.js.map +0 -1
  222. package/dist/commands/phase/update.d.ts +0 -23
  223. package/dist/commands/phase/update.js +0 -209
  224. package/dist/commands/phase/update.js.map +0 -1
  225. package/dist/commands/priority/add.d.ts +0 -16
  226. package/dist/commands/priority/add.js +0 -71
  227. package/dist/commands/priority/add.js.map +0 -1
  228. package/dist/commands/priority/list.d.ts +0 -11
  229. package/dist/commands/priority/list.js +0 -35
  230. package/dist/commands/priority/list.js.map +0 -1
  231. package/dist/commands/priority/remove.d.ts +0 -14
  232. package/dist/commands/priority/remove.js +0 -55
  233. package/dist/commands/priority/remove.js.map +0 -1
  234. package/dist/commands/priority/set.d.ts +0 -15
  235. package/dist/commands/priority/set.js +0 -61
  236. package/dist/commands/priority/set.js.map +0 -1
  237. package/dist/commands/roadmap/add-project.d.ts +0 -19
  238. package/dist/commands/roadmap/add-project.js +0 -119
  239. package/dist/commands/roadmap/add-project.js.map +0 -1
  240. package/dist/commands/roadmap/create.d.ts +0 -22
  241. package/dist/commands/roadmap/create.js +0 -168
  242. package/dist/commands/roadmap/create.js.map +0 -1
  243. package/dist/commands/roadmap/delete.d.ts +0 -18
  244. package/dist/commands/roadmap/delete.js +0 -96
  245. package/dist/commands/roadmap/delete.js.map +0 -1
  246. package/dist/commands/roadmap/generate.d.ts +0 -24
  247. package/dist/commands/roadmap/generate.js +0 -201
  248. package/dist/commands/roadmap/generate.js.map +0 -1
  249. package/dist/commands/roadmap/index.d.ts +0 -14
  250. package/dist/commands/roadmap/index.js +0 -57
  251. package/dist/commands/roadmap/index.js.map +0 -1
  252. package/dist/commands/roadmap/list.d.ts +0 -14
  253. package/dist/commands/roadmap/list.js +0 -58
  254. package/dist/commands/roadmap/list.js.map +0 -1
  255. package/dist/commands/roadmap/remove-project.d.ts +0 -19
  256. package/dist/commands/roadmap/remove-project.js +0 -124
  257. package/dist/commands/roadmap/remove-project.js.map +0 -1
  258. package/dist/commands/roadmap/reorder.d.ts +0 -18
  259. package/dist/commands/roadmap/reorder.js +0 -147
  260. package/dist/commands/roadmap/reorder.js.map +0 -1
  261. package/dist/commands/roadmap/update.d.ts +0 -20
  262. package/dist/commands/roadmap/update.js +0 -134
  263. package/dist/commands/roadmap/update.js.map +0 -1
  264. package/dist/commands/roadmap/view.d.ts +0 -17
  265. package/dist/commands/roadmap/view.js +0 -93
  266. package/dist/commands/roadmap/view.js.map +0 -1
  267. package/dist/commands/staff/add.d.ts +0 -17
  268. package/dist/commands/staff/add.js +0 -275
  269. package/dist/commands/staff/add.js.map +0 -1
  270. package/dist/commands/staff/index.d.ts +0 -15
  271. package/dist/commands/staff/index.js +0 -88
  272. package/dist/commands/staff/index.js.map +0 -1
  273. package/dist/commands/staff/list.d.ts +0 -10
  274. package/dist/commands/staff/list.js +0 -104
  275. package/dist/commands/staff/list.js.map +0 -1
  276. package/dist/commands/staff/remove.d.ts +0 -18
  277. package/dist/commands/staff/remove.js +0 -144
  278. package/dist/commands/staff/remove.js.map +0 -1
  279. package/dist/commands/status/category.d.ts +0 -15
  280. package/dist/commands/status/category.js +0 -64
  281. package/dist/commands/status/category.js.map +0 -1
  282. package/dist/commands/status/create.d.ts +0 -21
  283. package/dist/commands/status/create.js +0 -161
  284. package/dist/commands/status/create.js.map +0 -1
  285. package/dist/commands/status/delete.d.ts +0 -14
  286. package/dist/commands/status/delete.js +0 -86
  287. package/dist/commands/status/delete.js.map +0 -1
  288. package/dist/commands/status/index.d.ts +0 -15
  289. package/dist/commands/status/index.js +0 -98
  290. package/dist/commands/status/index.js.map +0 -1
  291. package/dist/commands/status/list.d.ts +0 -13
  292. package/dist/commands/status/list.js +0 -97
  293. package/dist/commands/status/list.js.map +0 -1
  294. package/dist/commands/status/move.d.ts +0 -15
  295. package/dist/commands/status/move.js +0 -126
  296. package/dist/commands/status/move.js.map +0 -1
  297. package/dist/commands/status/update.d.ts +0 -20
  298. package/dist/commands/status/update.js +0 -214
  299. package/dist/commands/status/update.js.map +0 -1
  300. package/dist/commands/template/apply.d.ts +0 -28
  301. package/dist/commands/template/apply.js +0 -258
  302. package/dist/commands/template/apply.js.map +0 -1
  303. package/dist/commands/template/create.d.ts +0 -28
  304. package/dist/commands/template/create.js +0 -238
  305. package/dist/commands/template/create.js.map +0 -1
  306. package/dist/commands/template/delete.d.ts +0 -16
  307. package/dist/commands/template/delete.js +0 -141
  308. package/dist/commands/template/delete.js.map +0 -1
  309. package/dist/commands/template/index.d.ts +0 -11
  310. package/dist/commands/template/index.js +0 -65
  311. package/dist/commands/template/index.js.map +0 -1
  312. package/dist/commands/template/list.d.ts +0 -19
  313. package/dist/commands/template/list.js +0 -155
  314. package/dist/commands/template/list.js.map +0 -1
  315. package/dist/commands/template/save.d.ts +0 -17
  316. package/dist/commands/template/save.js +0 -101
  317. package/dist/commands/template/save.js.map +0 -1
  318. package/dist/commands/template/update.d.ts +0 -19
  319. package/dist/commands/template/update.js +0 -94
  320. package/dist/commands/template/update.js.map +0 -1
  321. package/dist/commands/ticket/template/apply.d.ts +0 -26
  322. package/dist/commands/ticket/template/apply.js +0 -15
  323. package/dist/commands/ticket/template/apply.js.map +0 -1
  324. package/dist/commands/ticket/template/delete.d.ts +0 -18
  325. package/dist/commands/ticket/template/delete.js +0 -63
  326. package/dist/commands/ticket/template/delete.js.map +0 -1
  327. package/dist/commands/ticket/template/list.d.ts +0 -17
  328. package/dist/commands/ticket/template/list.js +0 -79
  329. package/dist/commands/ticket/template/list.js.map +0 -1
  330. package/dist/commands/ticket/template/save.d.ts +0 -17
  331. package/dist/commands/ticket/template/save.js +0 -99
  332. package/dist/commands/ticket/template/save.js.map +0 -1
  333. package/dist/commands/work/spawn-all.d.ts +0 -19
  334. package/dist/commands/work/spawn-all.js +0 -64
  335. package/dist/commands/work/spawn-all.js.map +0 -1
  336. package/dist/commands/workflow/create.d.ts +0 -19
  337. package/dist/commands/workflow/create.js +0 -118
  338. package/dist/commands/workflow/create.js.map +0 -1
  339. package/dist/commands/workflow/delete.d.ts +0 -18
  340. package/dist/commands/workflow/delete.js +0 -108
  341. package/dist/commands/workflow/delete.js.map +0 -1
  342. package/dist/commands/workflow/index.d.ts +0 -16
  343. package/dist/commands/workflow/index.js +0 -73
  344. package/dist/commands/workflow/index.js.map +0 -1
  345. package/dist/commands/workflow/list.d.ts +0 -16
  346. package/dist/commands/workflow/list.js +0 -73
  347. package/dist/commands/workflow/list.js.map +0 -1
  348. package/dist/commands/workflow/setup.d.ts +0 -24
  349. package/dist/commands/workflow/setup.js +0 -351
  350. package/dist/commands/workflow/setup.js.map +0 -1
  351. package/dist/commands/workflow/show.d.ts +0 -13
  352. package/dist/commands/workflow/show.js +0 -17
  353. package/dist/commands/workflow/show.js.map +0 -1
  354. package/dist/commands/workflow/switch.js +0 -144
  355. package/dist/commands/workflow/switch.js.map +0 -1
  356. package/dist/commands/workflow/view.d.ts +0 -17
  357. package/dist/commands/workflow/view.js +0 -106
  358. package/dist/commands/workflow/view.js.map +0 -1
  359. package/dist/commands/workflow-rule/create.d.ts +0 -19
  360. package/dist/commands/workflow-rule/create.js +0 -141
  361. package/dist/commands/workflow-rule/create.js.map +0 -1
  362. package/dist/commands/workflow-rule/delete.d.ts +0 -18
  363. package/dist/commands/workflow-rule/delete.js +0 -72
  364. package/dist/commands/workflow-rule/delete.js.map +0 -1
  365. package/dist/commands/workflow-rule/index.d.ts +0 -16
  366. package/dist/commands/workflow-rule/index.js +0 -83
  367. package/dist/commands/workflow-rule/index.js.map +0 -1
  368. package/dist/commands/workflow-rule/list.d.ts +0 -17
  369. package/dist/commands/workflow-rule/list.js +0 -72
  370. package/dist/commands/workflow-rule/list.js.map +0 -1
  371. package/dist/commands/workflow-rule/update.d.ts +0 -22
  372. package/dist/commands/workflow-rule/update.js +0 -84
  373. package/dist/commands/workflow-rule/update.js.map +0 -1
@@ -1,111 +0,0 @@
1
- import { Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { shouldOutputJson } from '../../lib/prompt-json.js';
4
- import { styles } from '../../lib/styles.js';
5
- export default class CategoryList extends PMOCommand {
6
- static description = 'List categories for ticket or status types';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %>',
9
- '<%= config.bin %> <%= command.id %> --type ticket',
10
- '<%= config.bin %> <%= command.id %> --type status',
11
- '<%= config.bin %> <%= command.id %> --type ticket --builtin',
12
- '<%= config.bin %> <%= command.id %> --type ticket --json',
13
- ];
14
- static flags = {
15
- ...pmoBaseFlags,
16
- type: Flags.string({
17
- char: 't',
18
- description: 'Category type to list (omit to list all)',
19
- options: ['ticket', 'status'],
20
- }),
21
- builtin: Flags.boolean({
22
- description: 'Show only built-in categories',
23
- exclusive: ['custom'],
24
- }),
25
- custom: Flags.boolean({
26
- description: 'Show only custom categories',
27
- exclusive: ['builtin'],
28
- }),
29
- json: Flags.boolean({
30
- description: 'Output as JSON',
31
- default: false,
32
- }),
33
- };
34
- getPMOOptions() {
35
- return { promptIfMultiple: false };
36
- }
37
- async execute() {
38
- const { flags } = await this.parse(CategoryList);
39
- const categoryType = flags.type;
40
- const filter = {};
41
- if (categoryType)
42
- filter.type = categoryType;
43
- if (flags.builtin)
44
- filter.isBuiltin = true;
45
- if (flags.custom)
46
- filter.isBuiltin = false;
47
- const categories = await this.storage.listCategories(filter);
48
- if (shouldOutputJson(flags)) {
49
- this.log(JSON.stringify(categories, null, 2));
50
- return;
51
- }
52
- if (categories.length === 0) {
53
- const typeStr = categoryType ? `${categoryType} ` : '';
54
- this.log(styles.muted(`\nNo ${typeStr}categories found.`));
55
- this.log(styles.muted(`Create one: prlt category create --type ticket`));
56
- return;
57
- }
58
- if (categoryType) {
59
- // Single type: show as before
60
- const typeLabel = categoryType === 'ticket' ? 'Ticket' : 'Status';
61
- this.log(`\n📁 ${styles.emphasis(`${typeLabel} Categories`)}`);
62
- this.log('═'.repeat(60));
63
- this.printCategoryGroup(categories, flags);
64
- this.log('');
65
- this.log(styles.muted(`Create new: prlt category create --type ${categoryType} <name>`));
66
- this.log('');
67
- }
68
- else {
69
- // All types: group by type
70
- const ticketCategories = categories.filter(c => c.type === 'ticket');
71
- const statusCategories = categories.filter(c => c.type === 'status');
72
- if (ticketCategories.length > 0) {
73
- this.log(`\n📁 ${styles.emphasis('Ticket Categories')}`);
74
- this.log('═'.repeat(60));
75
- this.printCategoryGroup(ticketCategories, flags);
76
- }
77
- if (statusCategories.length > 0) {
78
- this.log(`\n📁 ${styles.emphasis('Status Categories')}`);
79
- this.log('═'.repeat(60));
80
- this.printCategoryGroup(statusCategories, flags);
81
- }
82
- this.log('');
83
- }
84
- }
85
- printCategoryGroup(categories, flags) {
86
- const builtinCategories = categories.filter(c => c.isBuiltin);
87
- const customCategories = categories.filter(c => !c.isBuiltin);
88
- if (builtinCategories.length > 0 && !flags.custom) {
89
- this.log(`\n${styles.emphasis('Built-in Categories')}`);
90
- this.log('─'.repeat(40));
91
- for (const category of builtinCategories) {
92
- this.printCategory(category);
93
- }
94
- }
95
- if (customCategories.length > 0 && !flags.builtin) {
96
- this.log(`\n${styles.emphasis('Custom Categories')}`);
97
- this.log('─'.repeat(40));
98
- for (const category of customCategories) {
99
- this.printCategory(category);
100
- }
101
- }
102
- }
103
- printCategory(category) {
104
- const builtinBadge = category.isBuiltin ? '' : ' [custom]';
105
- this.log(` ${styles.emphasis(category.name)} ${styles.muted(`(${category.id})`)}${builtinBadge}`);
106
- if (category.description) {
107
- this.log(` ${styles.muted(category.description)}`);
108
- }
109
- }
110
- }
111
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/category/list.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class CategoryRename extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- oldName: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- newName: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
- };
9
- static flags: {
10
- type: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- };
15
- protected getPMOOptions(): {
16
- promptIfMultiple: boolean;
17
- };
18
- execute(): Promise<void>;
19
- }
@@ -1,160 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputPromptAsJson, buildPromptConfig, createMetadata, outputErrorAsJson, outputSuccessAsJson } from '../../lib/prompt-json.js';
5
- export default class CategoryRename extends PMOCommand {
6
- static description = 'Rename a category (custom categories only)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> --type ticket spike investigation',
9
- '<%= config.bin %> <%= command.id %> --type status reviewing in-review',
10
- ];
11
- static args = {
12
- oldName: Args.string({
13
- description: 'Current name of the category',
14
- }),
15
- newName: Args.string({
16
- description: 'New name for the category',
17
- }),
18
- };
19
- static flags = {
20
- ...pmoBaseFlags,
21
- type: Flags.string({
22
- char: 't',
23
- description: 'Category type',
24
- options: ['ticket', 'status'],
25
- required: true,
26
- }),
27
- json: Flags.boolean({
28
- description: 'Output prompt configuration as JSON (for AI agents/scripts)',
29
- default: false,
30
- }),
31
- };
32
- getPMOOptions() {
33
- return { promptIfMultiple: false };
34
- }
35
- async execute() {
36
- const { args, flags } = await this.parse(CategoryRename);
37
- const categoryType = flags.type;
38
- const jsonMode = shouldOutputJson(flags);
39
- let oldName = args.oldName;
40
- let newName = args.newName;
41
- // Get custom categories for selection
42
- const customCategories = await this.storage.listCategories({ type: categoryType, isBuiltin: false });
43
- if (customCategories.length === 0) {
44
- this.log(styles.muted('\nNo custom categories to rename. Built-in categories cannot be renamed.'));
45
- return;
46
- }
47
- // Prompt for category if not provided
48
- if (!oldName) {
49
- const message = 'Select category to rename:';
50
- const choices = customCategories.map(c => ({
51
- name: c.name + (c.description ? ` - ${c.description}` : ''),
52
- value: c.name,
53
- }));
54
- if (jsonMode) {
55
- outputPromptAsJson(buildPromptConfig('list', 'oldName', message, choices), createMetadata('category rename', flags));
56
- return;
57
- }
58
- const result = await this.selectFromList({
59
- message,
60
- items: customCategories,
61
- getName: (c) => c.name + (c.description ? ` - ${c.description}` : ''),
62
- getValue: (c) => c.name,
63
- getCommand: (c) => `prlt category rename --type ${categoryType} ${c.name}`,
64
- allowCancel: true,
65
- });
66
- if (!result) {
67
- return;
68
- }
69
- oldName = result;
70
- }
71
- // Find the category
72
- const category = await this.storage.getCategoryByName(oldName, categoryType);
73
- if (!category) {
74
- if (jsonMode) {
75
- outputErrorAsJson('CATEGORY_NOT_FOUND', `Category "${oldName}" not found for type "${categoryType}"`, createMetadata('category rename', flags));
76
- return;
77
- }
78
- this.error(`Category "${oldName}" not found for type "${categoryType}"`);
79
- }
80
- if (category.isBuiltin) {
81
- if (jsonMode) {
82
- outputErrorAsJson('BUILTIN_CATEGORY', `Cannot rename built-in category "${oldName}"`, createMetadata('category rename', flags));
83
- return;
84
- }
85
- this.error(`Cannot rename built-in category "${oldName}"`);
86
- }
87
- // Prompt for new name if not provided
88
- if (!newName) {
89
- const message = `Enter new name for "${oldName}":`;
90
- if (jsonMode) {
91
- outputPromptAsJson(buildPromptConfig('input', 'newName', message, []), createMetadata('category rename', { ...flags, oldName }));
92
- return;
93
- }
94
- const { categoryNewName } = await this.prompt([{
95
- type: 'input',
96
- name: 'categoryNewName',
97
- message,
98
- validate: (input) => {
99
- if (!input.trim())
100
- return 'New name is required';
101
- if (!/^[a-z][a-z0-9-]*$/.test(input.trim())) {
102
- return 'Category name must start with a letter and contain only lowercase letters, numbers, and hyphens';
103
- }
104
- return true;
105
- },
106
- }], null);
107
- newName = categoryNewName;
108
- }
109
- // At this point newName and oldName should be defined
110
- if (!newName) {
111
- if (jsonMode) {
112
- outputErrorAsJson('NAME_REQUIRED', 'New name is required', createMetadata('category rename', flags));
113
- return;
114
- }
115
- this.error('New name is required');
116
- }
117
- if (!oldName) {
118
- if (jsonMode) {
119
- outputErrorAsJson('NAME_REQUIRED', 'Old name is required', createMetadata('category rename', flags));
120
- return;
121
- }
122
- this.error('Old name is required');
123
- }
124
- // Validate new name format
125
- if (!/^[a-z][a-z0-9-]*$/.test(newName)) {
126
- if (jsonMode) {
127
- outputErrorAsJson('INVALID_NAME', 'Category name must start with a letter and contain only lowercase letters, numbers, and hyphens', createMetadata('category rename', flags));
128
- return;
129
- }
130
- this.error('Category name must start with a letter and contain only lowercase letters, numbers, and hyphens');
131
- }
132
- try {
133
- const updatedCategory = await this.storage.renameCategory(category.id, newName);
134
- if (jsonMode) {
135
- outputSuccessAsJson({
136
- oldName,
137
- newName: updatedCategory.name,
138
- type: categoryType,
139
- message: 'Category renamed successfully!',
140
- }, createMetadata('category rename', flags));
141
- return;
142
- }
143
- this.log(`\n${styles.success(`Category renamed successfully!`)}`);
144
- this.log(` Old name: ${oldName}`);
145
- this.log(` New name: ${styles.emphasis(updatedCategory.name)}`);
146
- this.log('');
147
- }
148
- catch (error) {
149
- if (error instanceof Error) {
150
- if (jsonMode) {
151
- outputErrorAsJson('RENAME_FAILED', error.message, createMetadata('category rename', flags));
152
- return;
153
- }
154
- this.error(error.message);
155
- }
156
- throw error;
157
- }
158
- }
159
- }
160
- //# sourceMappingURL=rename.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../../src/commands/category/rename.ts"],"names":[],"mappings":"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"}
@@ -1,107 +0,0 @@
1
- import { Args } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { moveEpicFile, getRelativeEpicPath } from '../../lib/pmo/epic-files.js';
5
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
6
- export default class EpicActivate extends PMOCommand {
7
- static description = 'Activate a draft or archived epic';
8
- static examples = [
9
- '<%= config.bin %> <%= command.id %> EPIC-004',
10
- '<%= config.bin %> <%= command.id %>',
11
- ];
12
- static args = {
13
- id: Args.string({
14
- description: 'Epic ID',
15
- required: false,
16
- }),
17
- };
18
- static flags = {
19
- ...pmoBaseFlags,
20
- };
21
- async execute() {
22
- const { args, flags } = await this.parse(EpicActivate);
23
- const projectId = await this.requireProject();
24
- // Check if JSON output mode is active
25
- const jsonMode = shouldOutputJson(flags);
26
- // Helper to handle errors in JSON mode
27
- const handleError = (code, message) => {
28
- if (jsonMode) {
29
- outputErrorAsJson(code, message, createMetadata('epic activate', flags));
30
- return;
31
- }
32
- this.error(message);
33
- };
34
- let epicId = args.id;
35
- // If no ID provided, prompt for selection (show only non-active epics)
36
- if (!epicId) {
37
- const epics = await this.storage.listEpics(projectId);
38
- const activatable = epics.filter(e => e.status !== 'active');
39
- if (activatable.length === 0) {
40
- if (jsonMode) {
41
- outputErrorAsJson('NO_EPICS_TO_ACTIVATE', 'No epics available to activate.', createMetadata('epic activate', flags));
42
- return;
43
- }
44
- this.log(styles.muted('\nNo epics available to activate.'));
45
- return;
46
- }
47
- const selected = await this.selectFromList({
48
- message: 'Select epic to activate:',
49
- items: activatable,
50
- getName: (e) => `${e.id} ${e.title} (${e.status})`,
51
- getValue: (e) => e.id,
52
- getCommand: (e) => `prlt epic activate ${e.id} --json`,
53
- jsonMode: jsonMode ? { flags, commandName: 'epic activate' } : null,
54
- });
55
- if (!selected) {
56
- return;
57
- }
58
- epicId = selected;
59
- }
60
- const epic = await this.storage.getEpic(epicId);
61
- if (!epic) {
62
- return handleError('EPIC_NOT_FOUND', `Epic not found: ${epicId}`);
63
- }
64
- if (epic.status === 'active') {
65
- this.log(styles.muted(`Epic ${epicId} is already active.`));
66
- return;
67
- }
68
- // Warn if reactivating a complete epic
69
- if (epic.status === 'complete') {
70
- const tickets = await this.storage.getTicketsForEpic(projectId, epicId);
71
- const doneTickets = tickets.filter((t) => t.status === 'done').length;
72
- if (!jsonMode) {
73
- this.log(styles.warning(`\n⚠️ This epic was previously completed (${doneTickets}/${tickets.length} tickets done)`));
74
- }
75
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic activate' } : null;
76
- const { confirm } = await this.prompt([{
77
- type: 'list',
78
- name: 'confirm',
79
- message: `This epic was previously completed (${doneTickets}/${tickets.length} tickets done). Reactivate this epic?`,
80
- choices: [
81
- { name: 'No', value: false, command: '' },
82
- { name: 'Yes', value: true, command: `prlt epic activate ${epicId} --json` },
83
- ],
84
- }], jsonModeConfig);
85
- if (!confirm) {
86
- this.log(styles.muted('Cancelled.'));
87
- return;
88
- }
89
- }
90
- this.log(`\nActivating: ${epicId} "${epic.title}"`);
91
- this.log(`Current status: ${epic.status}`);
92
- const previousStatus = epic.status;
93
- // Move the epic file to active status directory
94
- const moveResult = moveEpicFile(this.pmoPath, epicId, previousStatus, 'active', projectId);
95
- await this.storage.updateEpic(epicId, { status: 'active' });
96
- this.log(styles.success(`\n✅ Activated epic ${styles.emphasis(epicId)} "${epic.title}"`));
97
- this.log(styles.muted(` Status: ${previousStatus} → active`));
98
- if (moveResult) {
99
- const relativePath = getRelativeEpicPath(this.pmoPath, epicId, 'active', projectId);
100
- this.log(styles.muted(` File: ${relativePath}`));
101
- }
102
- this.log(styles.muted('\nNext steps:'));
103
- this.log(styles.muted(` prlt epic view ${epicId}`));
104
- this.log(styles.muted(` prlt ticket create --epic ${epicId} "First task"`));
105
- }
106
- }
107
- //# sourceMappingURL=activate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../../src/commands/epic/activate.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class EpicArchive extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- };
14
- execute(): Promise<void>;
15
- }
@@ -1,118 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { moveEpicFile, getRelativeEpicPath } from '../../lib/pmo/epic-files.js';
5
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
6
- export default class EpicArchive extends PMOCommand {
7
- static description = 'Archive a completed epic';
8
- static examples = [
9
- '<%= config.bin %> <%= command.id %> EPIC-002',
10
- '<%= config.bin %> <%= command.id %> --force',
11
- ];
12
- static args = {
13
- id: Args.string({
14
- description: 'Epic ID',
15
- required: false,
16
- }),
17
- };
18
- static flags = {
19
- ...pmoBaseFlags,
20
- force: Flags.boolean({
21
- char: 'f',
22
- description: 'Skip ticket completion check',
23
- default: false,
24
- }),
25
- };
26
- async execute() {
27
- const { args, flags } = await this.parse(EpicArchive);
28
- const projectId = await this.requireProject();
29
- // Check if JSON output mode is active
30
- const jsonMode = shouldOutputJson(flags);
31
- // Helper to handle errors in JSON mode
32
- const handleError = (code, message) => {
33
- if (jsonMode) {
34
- outputErrorAsJson(code, message, createMetadata('epic archive', flags));
35
- return;
36
- }
37
- this.error(message);
38
- };
39
- let epicId = args.id;
40
- // If no ID provided, prompt for selection (show only non-complete epics)
41
- if (!epicId) {
42
- const epics = await this.storage.listEpics(projectId);
43
- const archivable = epics.filter(e => e.status !== 'complete' && e.status !== 'dropped');
44
- if (archivable.length === 0) {
45
- if (jsonMode) {
46
- outputErrorAsJson('NO_EPICS_TO_ARCHIVE', 'No epics available to archive.', createMetadata('epic archive', flags));
47
- return;
48
- }
49
- this.log(styles.muted('\nNo epics available to archive.'));
50
- return;
51
- }
52
- // Get ticket counts
53
- const choices = await Promise.all(archivable.map(async (e) => {
54
- const tickets = await this.storage.getTicketsForEpic(projectId, e.id);
55
- const done = tickets.filter((t) => t.status === 'done').length;
56
- const complete = done === tickets.length && tickets.length > 0;
57
- return {
58
- name: `${e.id} ${e.title} (${e.status}) [${done}/${tickets.length} tickets complete]${complete ? ' ✅' : ''}`,
59
- value: e.id,
60
- command: `prlt epic archive ${e.id} --json`,
61
- };
62
- }));
63
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic archive' } : null;
64
- const { selected } = await this.prompt([{
65
- type: 'list',
66
- name: 'selected',
67
- message: 'Select epic to archive:',
68
- choices,
69
- }], jsonModeConfig);
70
- epicId = selected;
71
- }
72
- const epic = await this.storage.getEpic(epicId);
73
- if (!epic) {
74
- return handleError('EPIC_NOT_FOUND', `Epic not found: ${epicId}`);
75
- }
76
- if (epic.status === 'complete') {
77
- this.log(styles.muted(`Epic ${epicId} is already archived.`));
78
- return;
79
- }
80
- // Check ticket completion
81
- const tickets = await this.storage.getTicketsForEpic(projectId, epicId);
82
- const doneTickets = tickets.filter((t) => t.status === 'done').length;
83
- const allComplete = doneTickets === tickets.length;
84
- if (!allComplete && !flags.force) {
85
- if (!jsonMode) {
86
- this.log(styles.warning(`\n⚠️ Not all tickets are complete (${doneTickets}/${tickets.length} done)`));
87
- }
88
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic archive' } : null;
89
- const { confirm } = await this.prompt([{
90
- type: 'list',
91
- name: 'confirm',
92
- message: `Not all tickets are complete (${doneTickets}/${tickets.length} done). Continue archiving anyway?`,
93
- choices: [
94
- { name: 'No', value: false, command: '' },
95
- { name: 'Yes', value: true, command: `prlt epic archive ${epicId} --force --json` },
96
- ],
97
- }], jsonModeConfig);
98
- if (!confirm) {
99
- this.log(styles.muted('Cancelled.'));
100
- return;
101
- }
102
- }
103
- this.log(`\nArchiving: ${epicId} "${epic.title}"`);
104
- this.log(`Status: ${doneTickets}/${tickets.length} tickets complete${allComplete ? ' ✅' : ''}`);
105
- // Move the epic file to complete status directory
106
- const moveResult = moveEpicFile(this.pmoPath, epicId, epic.status, 'complete', projectId);
107
- await this.storage.updateEpic(epicId, { status: 'complete' });
108
- this.log(styles.success(`\n✅ Archived epic ${styles.emphasis(epicId)} "${epic.title}"`));
109
- this.log(styles.muted(` Status: ${epic.status} → complete`));
110
- if (moveResult) {
111
- const relativePath = getRelativeEpicPath(this.pmoPath, epicId, 'complete', projectId);
112
- this.log(styles.muted(` File: ${relativePath}`));
113
- }
114
- this.log(styles.muted('\nView archived epics:'));
115
- this.log(styles.muted(' prlt epic list --status complete'));
116
- }
117
- }
118
- //# sourceMappingURL=archive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/commands/epic/archive.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class EpicCreate extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- title: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
- status: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- };
15
- execute(): Promise<void>;
16
- private promptEpicData;
17
- }