@proletariat/cli 0.3.81 → 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 (370) 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/link/index.js +0 -12
  32. package/dist/commands/ticket/link/index.js.map +1 -1
  33. package/dist/commands/ticket/move.d.ts +1 -0
  34. package/dist/commands/ticket/move.js +10 -3
  35. package/dist/commands/ticket/move.js.map +1 -1
  36. package/dist/commands/update.d.ts +18 -0
  37. package/dist/commands/update.js +184 -0
  38. package/dist/commands/update.js.map +1 -0
  39. package/dist/lib/database/index.js +0 -134
  40. package/dist/lib/database/index.js.map +1 -1
  41. package/dist/lib/database/migrations/0006_drop_theme_names_used.d.ts +8 -0
  42. package/dist/lib/database/migrations/0006_drop_theme_names_used.js +30 -0
  43. package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -0
  44. package/dist/lib/database/migrations/0007_add_worktree_columns.d.ts +8 -0
  45. package/dist/lib/database/migrations/0007_add_worktree_columns.js +24 -0
  46. package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -0
  47. package/dist/lib/database/migrations/0008_add_agent_mount_mode.d.ts +8 -0
  48. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js +18 -0
  49. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -0
  50. package/dist/lib/database/migrations/0009_create_media_items.d.ts +7 -0
  51. package/dist/lib/database/migrations/0009_create_media_items.js +29 -0
  52. package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -0
  53. package/dist/lib/database/migrations/0010_add_ticket_position.d.ts +9 -0
  54. package/dist/lib/database/migrations/0010_add_ticket_position.js +44 -0
  55. package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -0
  56. package/dist/lib/database/migrations/index.js +10 -0
  57. package/dist/lib/database/migrations/index.js.map +1 -1
  58. package/dist/lib/events/events.d.ts +2 -1
  59. package/dist/lib/pmo/storage/dependencies.js +45 -21
  60. package/dist/lib/pmo/storage/dependencies.js.map +1 -1
  61. package/dist/lib/pmo/storage/statuses.d.ts +2 -0
  62. package/dist/lib/pmo/storage/statuses.js +209 -150
  63. package/dist/lib/pmo/storage/statuses.js.map +1 -1
  64. package/dist/lib/pr/index.d.ts +14 -0
  65. package/dist/lib/pr/index.js +48 -0
  66. package/dist/lib/pr/index.js.map +1 -1
  67. package/dist/lib/update-check.js +1 -1
  68. package/dist/lib/update-check.js.map +1 -1
  69. package/dist/lib/update-prompt.js +1 -1
  70. package/dist/lib/work-lifecycle/events.d.ts +11 -0
  71. package/oclif.manifest.json +4789 -11452
  72. package/package.json +1 -1
  73. package/dist/commands/agents/index.d.ts +0 -11
  74. package/dist/commands/agents/index.js +0 -105
  75. package/dist/commands/agents/index.js.map +0 -1
  76. package/dist/commands/agents/themes/add-names.d.ts +0 -1
  77. package/dist/commands/agents/themes/add-names.js +0 -2
  78. package/dist/commands/agents/themes/add-names.js.map +0 -1
  79. package/dist/commands/agents/themes/create.d.ts +0 -1
  80. package/dist/commands/agents/themes/create.js +0 -2
  81. package/dist/commands/agents/themes/create.js.map +0 -1
  82. package/dist/commands/agents/themes/list.d.ts +0 -1
  83. package/dist/commands/agents/themes/list.js +0 -2
  84. package/dist/commands/agents/themes/list.js.map +0 -1
  85. package/dist/commands/category/create.d.ts +0 -19
  86. package/dist/commands/category/create.js +0 -130
  87. package/dist/commands/category/create.js.map +0 -1
  88. package/dist/commands/category/delete.d.ts +0 -18
  89. package/dist/commands/category/delete.js +0 -124
  90. package/dist/commands/category/delete.js.map +0 -1
  91. package/dist/commands/category/index.d.ts +0 -16
  92. package/dist/commands/category/index.js +0 -88
  93. package/dist/commands/category/index.js.map +0 -1
  94. package/dist/commands/category/list.d.ts +0 -19
  95. package/dist/commands/category/list.js +0 -111
  96. package/dist/commands/category/list.js.map +0 -1
  97. package/dist/commands/category/rename.d.ts +0 -19
  98. package/dist/commands/category/rename.js +0 -160
  99. package/dist/commands/category/rename.js.map +0 -1
  100. package/dist/commands/epic/activate.js +0 -107
  101. package/dist/commands/epic/activate.js.map +0 -1
  102. package/dist/commands/epic/archive.d.ts +0 -15
  103. package/dist/commands/epic/archive.js +0 -118
  104. package/dist/commands/epic/archive.js.map +0 -1
  105. package/dist/commands/epic/create.d.ts +0 -17
  106. package/dist/commands/epic/create.js +0 -179
  107. package/dist/commands/epic/create.js.map +0 -1
  108. package/dist/commands/epic/delete.d.ts +0 -15
  109. package/dist/commands/epic/delete.js +0 -129
  110. package/dist/commands/epic/delete.js.map +0 -1
  111. package/dist/commands/epic/index.d.ts +0 -14
  112. package/dist/commands/epic/index.js +0 -88
  113. package/dist/commands/epic/index.js.map +0 -1
  114. package/dist/commands/epic/list.d.ts +0 -13
  115. package/dist/commands/epic/list.js +0 -103
  116. package/dist/commands/epic/list.js.map +0 -1
  117. package/dist/commands/epic/move.d.ts +0 -16
  118. package/dist/commands/epic/move.js +0 -162
  119. package/dist/commands/epic/move.js.map +0 -1
  120. package/dist/commands/epic/progress.d.ts +0 -17
  121. package/dist/commands/epic/progress.js +0 -170
  122. package/dist/commands/epic/progress.js.map +0 -1
  123. package/dist/commands/epic/project.d.ts +0 -16
  124. package/dist/commands/epic/project.js +0 -199
  125. package/dist/commands/epic/project.js.map +0 -1
  126. package/dist/commands/epic/reorder.d.ts +0 -22
  127. package/dist/commands/epic/reorder.js +0 -152
  128. package/dist/commands/epic/reorder.js.map +0 -1
  129. package/dist/commands/epic/show.d.ts +0 -13
  130. package/dist/commands/epic/show.js +0 -17
  131. package/dist/commands/epic/show.js.map +0 -1
  132. package/dist/commands/epic/spec.d.ts +0 -17
  133. package/dist/commands/epic/spec.js +0 -189
  134. package/dist/commands/epic/spec.js.map +0 -1
  135. package/dist/commands/epic/ticket.d.ts +0 -21
  136. package/dist/commands/epic/ticket.js +0 -300
  137. package/dist/commands/epic/ticket.js.map +0 -1
  138. package/dist/commands/epic/view.d.ts +0 -14
  139. package/dist/commands/epic/view.js +0 -141
  140. package/dist/commands/epic/view.js.map +0 -1
  141. package/dist/commands/execution/kill.d.ts +0 -12
  142. package/dist/commands/execution/kill.js +0 -18
  143. package/dist/commands/execution/kill.js.map +0 -1
  144. package/dist/commands/label/create.d.ts +0 -20
  145. package/dist/commands/label/create.js +0 -58
  146. package/dist/commands/label/create.js.map +0 -1
  147. package/dist/commands/label/delete.d.ts +0 -17
  148. package/dist/commands/label/delete.js +0 -33
  149. package/dist/commands/label/delete.js.map +0 -1
  150. package/dist/commands/label/group/create.d.ts +0 -20
  151. package/dist/commands/label/group/create.js +0 -56
  152. package/dist/commands/label/group/create.js.map +0 -1
  153. package/dist/commands/label/group/list.d.ts +0 -14
  154. package/dist/commands/label/group/list.js +0 -53
  155. package/dist/commands/label/group/list.js.map +0 -1
  156. package/dist/commands/label/index.d.ts +0 -15
  157. package/dist/commands/label/index.js +0 -59
  158. package/dist/commands/label/index.js.map +0 -1
  159. package/dist/commands/label/list.d.ts +0 -16
  160. package/dist/commands/label/list.js +0 -84
  161. package/dist/commands/label/list.js.map +0 -1
  162. package/dist/commands/link/create.d.ts +0 -16
  163. package/dist/commands/link/create.js +0 -136
  164. package/dist/commands/link/create.js.map +0 -1
  165. package/dist/commands/link/index.d.ts +0 -14
  166. package/dist/commands/link/index.js +0 -82
  167. package/dist/commands/link/index.js.map +0 -1
  168. package/dist/commands/link/list.d.ts +0 -18
  169. package/dist/commands/link/list.js +0 -178
  170. package/dist/commands/link/list.js.map +0 -1
  171. package/dist/commands/link/remove.d.ts +0 -16
  172. package/dist/commands/link/remove.js +0 -115
  173. package/dist/commands/link/remove.js.map +0 -1
  174. package/dist/commands/media/add.d.ts +0 -19
  175. package/dist/commands/media/add.js +0 -98
  176. package/dist/commands/media/add.js.map +0 -1
  177. package/dist/commands/media/index.d.ts +0 -14
  178. package/dist/commands/media/index.js +0 -93
  179. package/dist/commands/media/index.js.map +0 -1
  180. package/dist/commands/media/list.d.ts +0 -15
  181. package/dist/commands/media/list.js +0 -94
  182. package/dist/commands/media/list.js.map +0 -1
  183. package/dist/commands/media/preprocess.d.ts +0 -19
  184. package/dist/commands/media/preprocess.js +0 -91
  185. package/dist/commands/media/preprocess.js.map +0 -1
  186. package/dist/commands/media/remove.d.ts +0 -18
  187. package/dist/commands/media/remove.js +0 -105
  188. package/dist/commands/media/remove.js.map +0 -1
  189. package/dist/commands/media/show.d.ts +0 -17
  190. package/dist/commands/media/show.js +0 -122
  191. package/dist/commands/media/show.js.map +0 -1
  192. package/dist/commands/phase/create.d.ts +0 -22
  193. package/dist/commands/phase/create.js +0 -165
  194. package/dist/commands/phase/create.js.map +0 -1
  195. package/dist/commands/phase/delete.d.ts +0 -18
  196. package/dist/commands/phase/delete.js +0 -75
  197. package/dist/commands/phase/delete.js.map +0 -1
  198. package/dist/commands/phase/list.d.ts +0 -13
  199. package/dist/commands/phase/list.js +0 -75
  200. package/dist/commands/phase/list.js.map +0 -1
  201. package/dist/commands/phase/move.d.ts +0 -18
  202. package/dist/commands/phase/move.js +0 -124
  203. package/dist/commands/phase/move.js.map +0 -1
  204. package/dist/commands/phase/template/apply.d.ts +0 -26
  205. package/dist/commands/phase/template/apply.js +0 -15
  206. package/dist/commands/phase/template/apply.js.map +0 -1
  207. package/dist/commands/phase/template/create.d.ts +0 -23
  208. package/dist/commands/phase/template/create.js +0 -15
  209. package/dist/commands/phase/template/create.js.map +0 -1
  210. package/dist/commands/phase/template/delete.d.ts +0 -18
  211. package/dist/commands/phase/template/delete.js +0 -63
  212. package/dist/commands/phase/template/delete.js.map +0 -1
  213. package/dist/commands/phase/template/list.d.ts +0 -17
  214. package/dist/commands/phase/template/list.js +0 -90
  215. package/dist/commands/phase/template/list.js.map +0 -1
  216. package/dist/commands/phase/template/update.d.ts +0 -1
  217. package/dist/commands/phase/template/update.js +0 -2
  218. package/dist/commands/phase/template/update.js.map +0 -1
  219. package/dist/commands/phase/update.d.ts +0 -23
  220. package/dist/commands/phase/update.js +0 -209
  221. package/dist/commands/phase/update.js.map +0 -1
  222. package/dist/commands/priority/add.d.ts +0 -16
  223. package/dist/commands/priority/add.js +0 -71
  224. package/dist/commands/priority/add.js.map +0 -1
  225. package/dist/commands/priority/list.d.ts +0 -11
  226. package/dist/commands/priority/list.js +0 -35
  227. package/dist/commands/priority/list.js.map +0 -1
  228. package/dist/commands/priority/remove.d.ts +0 -14
  229. package/dist/commands/priority/remove.js +0 -55
  230. package/dist/commands/priority/remove.js.map +0 -1
  231. package/dist/commands/priority/set.d.ts +0 -15
  232. package/dist/commands/priority/set.js +0 -61
  233. package/dist/commands/priority/set.js.map +0 -1
  234. package/dist/commands/roadmap/add-project.d.ts +0 -19
  235. package/dist/commands/roadmap/add-project.js +0 -119
  236. package/dist/commands/roadmap/add-project.js.map +0 -1
  237. package/dist/commands/roadmap/create.d.ts +0 -22
  238. package/dist/commands/roadmap/create.js +0 -168
  239. package/dist/commands/roadmap/create.js.map +0 -1
  240. package/dist/commands/roadmap/delete.d.ts +0 -18
  241. package/dist/commands/roadmap/delete.js +0 -96
  242. package/dist/commands/roadmap/delete.js.map +0 -1
  243. package/dist/commands/roadmap/generate.d.ts +0 -24
  244. package/dist/commands/roadmap/generate.js +0 -201
  245. package/dist/commands/roadmap/generate.js.map +0 -1
  246. package/dist/commands/roadmap/index.d.ts +0 -14
  247. package/dist/commands/roadmap/index.js +0 -57
  248. package/dist/commands/roadmap/index.js.map +0 -1
  249. package/dist/commands/roadmap/list.d.ts +0 -14
  250. package/dist/commands/roadmap/list.js +0 -58
  251. package/dist/commands/roadmap/list.js.map +0 -1
  252. package/dist/commands/roadmap/remove-project.d.ts +0 -19
  253. package/dist/commands/roadmap/remove-project.js +0 -124
  254. package/dist/commands/roadmap/remove-project.js.map +0 -1
  255. package/dist/commands/roadmap/reorder.d.ts +0 -18
  256. package/dist/commands/roadmap/reorder.js +0 -147
  257. package/dist/commands/roadmap/reorder.js.map +0 -1
  258. package/dist/commands/roadmap/update.d.ts +0 -20
  259. package/dist/commands/roadmap/update.js +0 -134
  260. package/dist/commands/roadmap/update.js.map +0 -1
  261. package/dist/commands/roadmap/view.d.ts +0 -17
  262. package/dist/commands/roadmap/view.js +0 -93
  263. package/dist/commands/roadmap/view.js.map +0 -1
  264. package/dist/commands/staff/add.d.ts +0 -17
  265. package/dist/commands/staff/add.js +0 -275
  266. package/dist/commands/staff/add.js.map +0 -1
  267. package/dist/commands/staff/index.d.ts +0 -15
  268. package/dist/commands/staff/index.js +0 -88
  269. package/dist/commands/staff/index.js.map +0 -1
  270. package/dist/commands/staff/list.d.ts +0 -10
  271. package/dist/commands/staff/list.js +0 -104
  272. package/dist/commands/staff/list.js.map +0 -1
  273. package/dist/commands/staff/remove.d.ts +0 -18
  274. package/dist/commands/staff/remove.js +0 -144
  275. package/dist/commands/staff/remove.js.map +0 -1
  276. package/dist/commands/status/category.d.ts +0 -15
  277. package/dist/commands/status/category.js +0 -64
  278. package/dist/commands/status/category.js.map +0 -1
  279. package/dist/commands/status/create.d.ts +0 -21
  280. package/dist/commands/status/create.js +0 -161
  281. package/dist/commands/status/create.js.map +0 -1
  282. package/dist/commands/status/delete.d.ts +0 -14
  283. package/dist/commands/status/delete.js +0 -86
  284. package/dist/commands/status/delete.js.map +0 -1
  285. package/dist/commands/status/index.d.ts +0 -15
  286. package/dist/commands/status/index.js +0 -98
  287. package/dist/commands/status/index.js.map +0 -1
  288. package/dist/commands/status/list.d.ts +0 -13
  289. package/dist/commands/status/list.js +0 -97
  290. package/dist/commands/status/list.js.map +0 -1
  291. package/dist/commands/status/move.d.ts +0 -15
  292. package/dist/commands/status/move.js +0 -126
  293. package/dist/commands/status/move.js.map +0 -1
  294. package/dist/commands/status/update.d.ts +0 -20
  295. package/dist/commands/status/update.js +0 -214
  296. package/dist/commands/status/update.js.map +0 -1
  297. package/dist/commands/template/apply.d.ts +0 -28
  298. package/dist/commands/template/apply.js +0 -258
  299. package/dist/commands/template/apply.js.map +0 -1
  300. package/dist/commands/template/create.d.ts +0 -28
  301. package/dist/commands/template/create.js +0 -238
  302. package/dist/commands/template/create.js.map +0 -1
  303. package/dist/commands/template/delete.d.ts +0 -16
  304. package/dist/commands/template/delete.js +0 -141
  305. package/dist/commands/template/delete.js.map +0 -1
  306. package/dist/commands/template/index.d.ts +0 -11
  307. package/dist/commands/template/index.js +0 -65
  308. package/dist/commands/template/index.js.map +0 -1
  309. package/dist/commands/template/list.d.ts +0 -19
  310. package/dist/commands/template/list.js +0 -155
  311. package/dist/commands/template/list.js.map +0 -1
  312. package/dist/commands/template/save.d.ts +0 -17
  313. package/dist/commands/template/save.js +0 -101
  314. package/dist/commands/template/save.js.map +0 -1
  315. package/dist/commands/template/update.d.ts +0 -19
  316. package/dist/commands/template/update.js +0 -94
  317. package/dist/commands/template/update.js.map +0 -1
  318. package/dist/commands/ticket/template/apply.d.ts +0 -26
  319. package/dist/commands/ticket/template/apply.js +0 -15
  320. package/dist/commands/ticket/template/apply.js.map +0 -1
  321. package/dist/commands/ticket/template/delete.d.ts +0 -18
  322. package/dist/commands/ticket/template/delete.js +0 -63
  323. package/dist/commands/ticket/template/delete.js.map +0 -1
  324. package/dist/commands/ticket/template/list.d.ts +0 -17
  325. package/dist/commands/ticket/template/list.js +0 -79
  326. package/dist/commands/ticket/template/list.js.map +0 -1
  327. package/dist/commands/ticket/template/save.d.ts +0 -17
  328. package/dist/commands/ticket/template/save.js +0 -99
  329. package/dist/commands/ticket/template/save.js.map +0 -1
  330. package/dist/commands/work/spawn-all.d.ts +0 -19
  331. package/dist/commands/work/spawn-all.js +0 -64
  332. package/dist/commands/work/spawn-all.js.map +0 -1
  333. package/dist/commands/workflow/create.d.ts +0 -19
  334. package/dist/commands/workflow/create.js +0 -118
  335. package/dist/commands/workflow/create.js.map +0 -1
  336. package/dist/commands/workflow/delete.d.ts +0 -18
  337. package/dist/commands/workflow/delete.js +0 -108
  338. package/dist/commands/workflow/delete.js.map +0 -1
  339. package/dist/commands/workflow/index.d.ts +0 -16
  340. package/dist/commands/workflow/index.js +0 -73
  341. package/dist/commands/workflow/index.js.map +0 -1
  342. package/dist/commands/workflow/list.d.ts +0 -16
  343. package/dist/commands/workflow/list.js +0 -73
  344. package/dist/commands/workflow/list.js.map +0 -1
  345. package/dist/commands/workflow/setup.d.ts +0 -24
  346. package/dist/commands/workflow/setup.js +0 -351
  347. package/dist/commands/workflow/setup.js.map +0 -1
  348. package/dist/commands/workflow/show.d.ts +0 -13
  349. package/dist/commands/workflow/show.js +0 -17
  350. package/dist/commands/workflow/show.js.map +0 -1
  351. package/dist/commands/workflow/switch.js +0 -144
  352. package/dist/commands/workflow/switch.js.map +0 -1
  353. package/dist/commands/workflow/view.d.ts +0 -17
  354. package/dist/commands/workflow/view.js +0 -106
  355. package/dist/commands/workflow/view.js.map +0 -1
  356. package/dist/commands/workflow-rule/create.d.ts +0 -19
  357. package/dist/commands/workflow-rule/create.js +0 -141
  358. package/dist/commands/workflow-rule/create.js.map +0 -1
  359. package/dist/commands/workflow-rule/delete.d.ts +0 -18
  360. package/dist/commands/workflow-rule/delete.js +0 -72
  361. package/dist/commands/workflow-rule/delete.js.map +0 -1
  362. package/dist/commands/workflow-rule/index.d.ts +0 -16
  363. package/dist/commands/workflow-rule/index.js +0 -83
  364. package/dist/commands/workflow-rule/index.js.map +0 -1
  365. package/dist/commands/workflow-rule/list.d.ts +0 -17
  366. package/dist/commands/workflow-rule/list.js +0 -72
  367. package/dist/commands/workflow-rule/list.js.map +0 -1
  368. package/dist/commands/workflow-rule/update.d.ts +0 -22
  369. package/dist/commands/workflow-rule/update.js +0 -84
  370. package/dist/commands/workflow-rule/update.js.map +0 -1
@@ -1,300 +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 EpicTicket extends PMOCommand {
6
- static description = 'Assign tickets to an epic, or link epic to a spec (parent-child)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> EPIC-001 TKT-001 TKT-002',
9
- '<%= config.bin %> <%= command.id %> EPIC-001',
10
- '<%= config.bin %> <%= command.id %>',
11
- '<%= config.bin %> <%= command.id %> EPIC-001 --unlink TKT-001',
12
- '<%= config.bin %> <%= command.id %> EPIC-001 --spec SPEC-001',
13
- ];
14
- static args = {
15
- id: Args.string({
16
- description: 'Epic ID',
17
- required: false,
18
- }),
19
- tickets: Args.string({
20
- description: 'Ticket IDs to link (space-separated)',
21
- required: false,
22
- multiple: true,
23
- }),
24
- };
25
- static strict = false; // Allow multiple ticket arguments
26
- static flags = {
27
- ...pmoBaseFlags,
28
- unlink: Flags.boolean({
29
- char: 'u',
30
- description: 'Remove tickets from this epic instead of adding',
31
- default: false,
32
- }),
33
- spec: Flags.string({
34
- char: 's',
35
- description: 'Link epic to a spec (design document)',
36
- }),
37
- 'unlink-spec': Flags.boolean({
38
- description: 'Remove spec link from epic',
39
- default: false,
40
- }),
41
- reconcile: Flags.string({
42
- description: 'How to handle spec mismatch: keep (keep ticket spec), epic (use epic spec), skip',
43
- options: ['keep', 'epic', 'skip'],
44
- }),
45
- 'inherit-spec': Flags.boolean({
46
- description: 'Inherit spec from epic when ticket has no spec',
47
- allowNo: true,
48
- }),
49
- };
50
- async execute() {
51
- const { args, flags, argv } = await this.parse(EpicTicket);
52
- const filterProjectId = flags.project;
53
- // Check if JSON output mode is active
54
- const jsonMode = shouldOutputJson(flags);
55
- // Helper to handle errors in JSON mode
56
- const handleError = (code, message) => {
57
- if (jsonMode) {
58
- outputErrorAsJson(code, message, createMetadata('epic ticket', flags));
59
- return;
60
- }
61
- this.error(message);
62
- };
63
- const projectId = await this.requireProject();
64
- // Get all epics
65
- const epics = await this.storage.listEpics(projectId);
66
- if (epics.length === 0) {
67
- if (jsonMode) {
68
- outputErrorAsJson('NO_EPICS', 'No epics found.', createMetadata('epic ticket', flags));
69
- return;
70
- }
71
- this.log(styles.muted('\nNo epics found. Create one with: prlt epic create'));
72
- return;
73
- }
74
- // Get all tickets
75
- const allTickets = await this.storage.listTickets(filterProjectId);
76
- if (allTickets.length === 0) {
77
- if (jsonMode) {
78
- outputErrorAsJson('NO_TICKETS', 'No tickets found.', createMetadata('epic ticket', flags));
79
- return;
80
- }
81
- this.log(styles.muted('\nNo tickets found.'));
82
- return;
83
- }
84
- // Helper to get ticket's epic ID from the loaded ticket list
85
- const getTicketEpicId = (ticketId) => {
86
- const ticket = allTickets.find((t) => t.id === ticketId);
87
- return ticket?.epicId ?? null;
88
- };
89
- let epicId = args.id;
90
- // If no epic ID provided, prompt for selection
91
- if (!epicId) {
92
- // Count tickets per epic
93
- const ticketCounts = new Map();
94
- for (const ticket of allTickets) {
95
- const tid = getTicketEpicId(ticket.id);
96
- if (tid) {
97
- ticketCounts.set(tid, (ticketCounts.get(tid) || 0) + 1);
98
- }
99
- }
100
- const epicChoices = epics.map(e => ({
101
- name: `${e.id} ${e.title} (${e.status}) [${ticketCounts.get(e.id) || 0} tickets]`,
102
- value: e.id,
103
- command: `prlt epic ticket ${e.id} --json`,
104
- }));
105
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic ticket' } : null;
106
- const { selected } = await this.prompt([{
107
- type: 'list',
108
- name: 'selected',
109
- message: 'Select epic to link tickets to:',
110
- choices: epicChoices,
111
- }], jsonModeConfig);
112
- epicId = selected;
113
- }
114
- // Validate epic exists
115
- const epic = epics.find(e => e.id === epicId);
116
- if (!epic) {
117
- return handleError('EPIC_NOT_FOUND', `Epic not found: ${epicId}`);
118
- }
119
- // Handle spec linking if --spec or --unlink-spec provided
120
- if (flags.spec || flags['unlink-spec']) {
121
- if (flags['unlink-spec']) {
122
- // Unlink spec from epic
123
- if (!epic.specId) {
124
- this.log(styles.muted(`\nEpic ${epicId} is not linked to any spec.`));
125
- }
126
- else {
127
- await this.storage.updateEpic(epicId, { specId: undefined });
128
- this.log(styles.success(`\n✅ Unlinked spec from ${styles.emphasis(epicId)} "${epic.title}"`));
129
- }
130
- }
131
- else {
132
- // Link spec to epic
133
- const spec = await this.storage.getSpec(flags.spec);
134
- if (!spec) {
135
- return handleError('SPEC_NOT_FOUND', `Spec not found: ${flags.spec}`);
136
- }
137
- await this.storage.updateEpic(epicId, { specId: flags.spec });
138
- this.log(styles.success(`\n✅ Linked ${styles.emphasis(epicId)} "${epic.title}" to spec ${styles.emphasis(flags.spec)}`));
139
- this.log(styles.muted(` Spec: ${spec.title}`));
140
- }
141
- // If only spec operation, exit here
142
- const argvStrings = argv;
143
- if (argvStrings.length <= 1 && !flags.unlink) {
144
- return;
145
- }
146
- }
147
- // Get ticket IDs from remaining argv (after epic ID)
148
- let ticketIds = [];
149
- const argvStrings = argv;
150
- if (argvStrings.length > 1) {
151
- ticketIds = argvStrings.slice(1);
152
- }
153
- // If no ticket IDs provided, prompt with multi-select
154
- if (ticketIds.length === 0) {
155
- const choices = allTickets.map((t) => {
156
- const currentEpicId = getTicketEpicId(t.id);
157
- let epicLabel = 'No epic';
158
- if (currentEpicId === epicId) {
159
- epicLabel = `${epicId} ← current`;
160
- }
161
- else if (currentEpicId) {
162
- const currentEpic = epics.find(e => e.id === currentEpicId);
163
- epicLabel = currentEpic?.title || currentEpicId;
164
- }
165
- return {
166
- name: `${t.id} - ${t.title} [${epicLabel}]`,
167
- value: t.id,
168
- checked: false,
169
- command: `prlt epic ticket ${epicId} ${t.id} --json`,
170
- };
171
- });
172
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic ticket' } : null;
173
- const { selected } = await this.prompt([{
174
- type: 'checkbox',
175
- name: 'selected',
176
- message: `Select tickets to ${flags.unlink ? 'unlink from' : 'link to'} ${epicId}:`,
177
- choices,
178
- }], jsonModeConfig);
179
- ticketIds = selected;
180
- }
181
- if (ticketIds.length === 0) {
182
- this.log(styles.muted('\nNo tickets selected.'));
183
- return;
184
- }
185
- // Validate all tickets exist
186
- const invalidTickets = ticketIds.filter(id => !allTickets.find((t) => t.id === id));
187
- if (invalidTickets.length > 0) {
188
- return handleError('TICKETS_NOT_FOUND', `Tickets not found: ${invalidTickets.join(', ')}`);
189
- }
190
- // Process each ticket
191
- let successCount = 0;
192
- const linkedTickets = [];
193
- // Process tickets - may prompt user for spec reconciliation
194
- for (const ticketId of ticketIds) {
195
- const ticket = allTickets.find((t) => t.id === ticketId);
196
- const currentEpicId = getTicketEpicId(ticketId);
197
- if (flags.unlink) {
198
- // Unlink: only if currently linked to this epic
199
- if (currentEpicId !== epicId) {
200
- this.log(styles.muted(` ${ticketId} is not linked to ${epicId}, skipping`));
201
- continue;
202
- }
203
- await this.storage.unlinkTicketFromEpic(ticketId);
204
- }
205
- else {
206
- // Link: check if already linked to same epic
207
- if (currentEpicId === epicId) {
208
- this.log(styles.muted(` ${ticketId} already linked to ${epicId}, skipping`));
209
- continue;
210
- }
211
- // Warn if linked to different epic
212
- if (currentEpicId) {
213
- const currentEpic = epics.find(e => e.id === currentEpicId);
214
- this.log(styles.warning(` ${ticketId} was linked to ${currentEpic?.title || currentEpicId}, reassigning`));
215
- }
216
- // Reconciliation: Check spec consistency between ticket and epic
217
- const ticketSpecId = ticket.specId;
218
- const epicSpecId = epic.specId;
219
- if (ticketSpecId && epicSpecId && ticketSpecId !== epicSpecId) {
220
- // Both have specs but they differ - determine action
221
- let action;
222
- // Check if --reconcile flag was provided
223
- if (flags.reconcile) {
224
- action = flags.reconcile === 'keep' ? 'keep_ticket' : flags.reconcile === 'epic' ? 'use_epic' : 'skip';
225
- }
226
- else {
227
- if (!jsonMode) {
228
- this.log(styles.warning(` ⚠️ Spec mismatch: ticket has "${ticketSpecId}", epic has "${epicSpecId}"`));
229
- }
230
- const specReconcileChoices = [
231
- { name: `Keep ticket spec (${ticketSpecId})`, value: 'keep_ticket', command: `prlt epic ticket ${epicId} ${ticketId} --reconcile keep --json` },
232
- { name: `Use epic spec (${epicSpecId})`, value: 'use_epic', command: `prlt epic ticket ${epicId} ${ticketId} --reconcile epic --json` },
233
- { name: 'Skip this ticket', value: 'skip', command: `prlt epic ticket ${epicId} ${ticketId} --reconcile skip --json` },
234
- ];
235
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic ticket' } : null;
236
- // eslint-disable-next-line no-await-in-loop
237
- const result = await this.prompt([{
238
- type: 'list',
239
- name: 'action',
240
- message: `Spec mismatch for ${ticketId}: ticket has "${ticketSpecId}", epic has "${epicSpecId}". How to reconcile?`,
241
- choices: specReconcileChoices,
242
- }], jsonModeConfig);
243
- action = result.action;
244
- }
245
- if (action === 'skip') {
246
- this.log(styles.muted(` Skipping ${ticketId}`));
247
- continue;
248
- }
249
- if (action === 'use_epic') {
250
- // Update ticket to use epic's spec
251
- await this.storage.updateTicket(ticketId, { specId: epicSpecId });
252
- this.log(styles.muted(` Updated ${ticketId} to use spec "${epicSpecId}"`));
253
- }
254
- }
255
- else if (!ticketSpecId && epicSpecId) {
256
- // Ticket has no spec but epic does - determine if should inherit
257
- let inherit;
258
- // Check if --inherit-spec flag was provided
259
- if (flags['inherit-spec'] !== undefined) {
260
- inherit = flags['inherit-spec'];
261
- }
262
- else {
263
- const inheritChoices = [
264
- { name: 'Yes', value: true, command: `prlt epic ticket ${epicId} ${ticketId} --inherit-spec --json` },
265
- { name: 'No', value: false, command: `prlt epic ticket ${epicId} ${ticketId} --no-inherit-spec --json` },
266
- ];
267
- const jsonModeConfig = jsonMode ? { flags, commandName: 'epic ticket' } : null;
268
- // eslint-disable-next-line no-await-in-loop
269
- const result = await this.prompt([{
270
- type: 'list',
271
- name: 'inherit',
272
- message: `${ticketId} has no spec. Inherit epic's spec "${epicSpecId}"?`,
273
- choices: inheritChoices,
274
- }], jsonModeConfig);
275
- inherit = result.inherit;
276
- }
277
- if (inherit) {
278
- await this.storage.updateTicket(ticketId, { specId: epicSpecId });
279
- this.log(styles.muted(` Assigned spec "${epicSpecId}" to ${ticketId}`));
280
- }
281
- }
282
- await this.storage.linkTicketToEpic(ticketId, epicId);
283
- }
284
- linkedTickets.push(`${ticketId}: ${ticket.title}`);
285
- successCount++;
286
- }
287
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
288
- if (successCount === 0) {
289
- this.log(styles.muted('\nNo changes made.'));
290
- return;
291
- }
292
- const action = flags.unlink ? 'Unlinked' : 'Linked';
293
- this.log(styles.success(`\n✅ ${action} ${successCount} ticket${successCount === 1 ? '' : 's'} ${flags.unlink ? 'from' : 'to'} ${styles.emphasis(epicId)} "${epic.title}"`));
294
- for (const t of linkedTickets) {
295
- this.log(styles.muted(` ${t}`));
296
- }
297
- this.log(styles.muted(`\nView epic: prlt epic view ${epicId}`));
298
- }
299
- }
300
- //# sourceMappingURL=ticket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ticket.js","sourceRoot":"","sources":["../../../src/commands/epic/ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAU;IAChD,MAAM,CAAC,WAAW,GAAG,kEAAkE,CAAC;IAExF,MAAM,CAAC,QAAQ,GAAG;QAChB,8DAA8D;QAC9D,8CAA8C;QAC9C,qCAAqC;QACrC,+DAA+D;QAC/D,8DAA8D;KAC/D,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,kCAAkC;IAEzD,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;QACf,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iDAAiD;YAC9D,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,uCAAuC;SACrD,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;YAC3B,WAAW,EAAE,4BAA4B;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,kFAAkF;YAC/F,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC5B,WAAW,EAAE,gDAAgD;YAC7D,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAI,KAA8B,CAAC,OAAO,CAAC;QAEhE,sCAAsC;QACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvE,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,gBAAgB;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvF,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3F,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,6DAA6D;QAC7D,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAiB,EAAE;YAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACjE,OAAO,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QAErB,+CAA+C;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,yBAAyB;YACzB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC/C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI,GAAG,EAAE,CAAC;oBACR,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW;gBACjF,KAAK,EAAE,CAAC,CAAC,EAAE;gBACX,OAAO,EAAE,oBAAoB,CAAC,CAAC,EAAE,SAAS;aAC3C,CAAC,CAAC,CAAC;YAEJ,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAuB,CAAC;oBAC5D,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,iCAAiC;oBAC1C,OAAO,EAAE,WAAW;iBACrB,CAAC,EAAE,cAAc,CAAC,CAAC;YACpB,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,WAAW,CAAC,gBAAgB,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,0DAA0D;QAC1D,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzB,wBAAwB;gBACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,6BAA6B,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,QAAQ,CAAC,MAAO,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,oBAAoB;gBACpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,WAAW,CAAC,gBAAgB,EAAE,mBAAmB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxE,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,MAAO,CAAC,KAAK,IAAI,CAAC,KAAK,aAAa,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3H,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAgB,CAAC;YACrC,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,SAAS,GAAa,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAgB,CAAC;QACrC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,sDAAsD;QACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;gBAC3C,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAI,SAAS,GAAG,SAAS,CAAC;gBAC1B,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;oBAC7B,SAAS,GAAG,GAAG,MAAM,YAAY,CAAC;gBACpC,CAAC;qBAAM,IAAI,aAAa,EAAE,CAAC;oBACzB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;oBAC5D,SAAS,GAAG,WAAW,EAAE,KAAK,IAAI,aAAa,CAAC;gBAClD,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,SAAS,GAAG;oBAC3C,KAAK,EAAE,CAAC,CAAC,EAAE;oBACX,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,oBAAoB,MAAM,IAAI,CAAC,CAAC,EAAE,SAAS;iBACrD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAyB,CAAC;oBAC9D,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,qBAAqB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,GAAG;oBACnF,OAAO;iBACR,CAAC,EAAE,cAAc,CAAC,CAAC;YAEpB,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,mBAAmB,EAAE,sBAAsB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,sBAAsB;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,4DAA4D;QAC5D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAE,CAAC;YAClE,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEhD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,gDAAgD;gBAChD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,qBAAqB,MAAM,YAAY,CAAC,CAAC,CAAC;oBAC7E,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,6CAA6C;gBAC7C,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,sBAAsB,MAAM,YAAY,CAAC,CAAC,CAAC;oBAC9E,SAAS;gBACX,CAAC;gBAED,mCAAmC;gBACnC,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;oBAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,kBAAkB,WAAW,EAAE,KAAK,IAAI,aAAa,eAAe,CAAC,CAAC,CAAC;gBAC9G,CAAC;gBAED,iEAAiE;gBACjE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;gBACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE/B,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;oBAC9D,qDAAqD;oBACrD,IAAI,MAAc,CAAC;oBAEnB,yCAAyC;oBACzC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBACpB,MAAM,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBACzG,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,oCAAoC,YAAY,gBAAgB,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC1G,CAAC;wBAED,MAAM,oBAAoB,GAAG;4BAC3B,EAAE,IAAI,EAAE,qBAAqB,YAAY,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,MAAM,IAAI,QAAQ,0BAA0B,EAAE;4BAC/I,EAAE,IAAI,EAAE,kBAAkB,UAAU,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,MAAM,IAAI,QAAQ,0BAA0B,EAAE;4BACvI,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,MAAM,IAAI,QAAQ,0BAA0B,EAAE;yBACvH,CAAC;wBAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC/E,4CAA4C;wBAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAqB,CAAC;gCACpD,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,qBAAqB,QAAQ,iBAAiB,YAAY,gBAAgB,UAAU,sBAAsB;gCACnH,OAAO,EAAE,oBAAoB;6BAC9B,CAAC,EAAE,cAAc,CAAC,CAAC;wBACpB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBACzB,CAAC;oBAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACjD,SAAS;oBACX,CAAC;oBAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;wBAC1B,mCAAmC;wBACnC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBAClE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC;oBAC9E,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,YAAY,IAAI,UAAU,EAAE,CAAC;oBACvC,iEAAiE;oBACjE,IAAI,OAAgB,CAAC;oBAErB,4CAA4C;oBAC5C,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;wBACxC,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;oBAClC,CAAC;yBAAM,CAAC;wBACN,MAAM,cAAc,GAAG;4BACrB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,MAAM,IAAI,QAAQ,wBAAwB,EAAE;4BACrG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,MAAM,IAAI,QAAQ,2BAA2B,EAAE;yBACzG,CAAC;wBAEF,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC/E,4CAA4C;wBAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAuB,CAAC;gCACtD,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,GAAG,QAAQ,sCAAsC,UAAU,IAAI;gCACxE,OAAO,EAAE,cAAc;6BACxB,CAAC,EAAE,cAAc,CAAC,CAAC;wBACpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAC3B,CAAC;oBAED,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;wBAClE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,UAAU,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAO,CAAC,CAAC;YACzD,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,YAAY,EAAE,CAAC;QACjB,CAAC;QAED,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1F,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,MAAM,IAAI,YAAY,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAO,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7K,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC"}
@@ -1,14 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class EpicView 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
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- };
13
- execute(): Promise<void>;
14
- }
@@ -1,141 +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 { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- // Progress bar helper
6
- function progressBar(percent, width = 20) {
7
- const filled = Math.round((percent / 100) * width);
8
- const empty = width - filled;
9
- return '█'.repeat(filled) + '░'.repeat(empty);
10
- }
11
- export default class EpicView extends PMOCommand {
12
- static description = 'View epic details and linked tickets';
13
- static examples = [
14
- '<%= config.bin %> <%= command.id %> EPIC-001',
15
- '<%= config.bin %> <%= command.id %>',
16
- ];
17
- static args = {
18
- id: Args.string({
19
- description: 'Epic ID',
20
- required: false,
21
- }),
22
- };
23
- static flags = {
24
- ...pmoBaseFlags,
25
- };
26
- async execute() {
27
- const { args, flags } = await this.parse(EpicView);
28
- // Check if JSON output mode is active
29
- const jsonMode = shouldOutputJson(flags);
30
- // Helper to handle errors in JSON mode
31
- const handleError = (code, message) => {
32
- if (jsonMode) {
33
- outputErrorAsJson(code, message, createMetadata('epic view', flags));
34
- return;
35
- }
36
- this.error(message);
37
- };
38
- const projectId = await this.requireProject();
39
- let epicId = args.id;
40
- // If no ID provided, prompt for selection
41
- if (!epicId) {
42
- const epics = await this.storage.listEpics(projectId);
43
- if (epics.length === 0) {
44
- if (jsonMode) {
45
- outputErrorAsJson('NO_EPICS', 'No epics found.', createMetadata('epic view', flags));
46
- return;
47
- }
48
- this.log(styles.muted('\nNo epics found.'));
49
- this.log(styles.muted('Create one with: prlt epic create'));
50
- return;
51
- }
52
- const selected = await this.selectFromList({
53
- message: 'Select epic to view:',
54
- items: epics,
55
- getName: (e) => `${e.id} ${e.title} (${e.status})`,
56
- getValue: (e) => e.id,
57
- getCommand: (e) => `prlt epic view ${e.id} --json`,
58
- jsonMode: jsonMode ? { flags, commandName: 'epic view' } : null,
59
- });
60
- if (!selected) {
61
- return;
62
- }
63
- epicId = selected;
64
- }
65
- const epic = await this.storage.getEpic(epicId);
66
- if (!epic) {
67
- return handleError('EPIC_NOT_FOUND', `Epic not found: ${epicId}`);
68
- }
69
- const tickets = await this.storage.getTicketsForEpic(projectId, epicId);
70
- const doneTickets = tickets.filter((t) => t.statusCategory === 'completed').length;
71
- const percent = tickets.length > 0 ? Math.round((doneTickets / tickets.length) * 100) : 0;
72
- // Get linked spec if any
73
- let specTitle;
74
- if (epic.specId) {
75
- const spec = await this.storage.getSpec(epic.specId);
76
- specTitle = spec?.title;
77
- }
78
- const projectName = await this.getProjectName(projectId);
79
- // JSON output mode
80
- if (jsonMode) {
81
- this.log(JSON.stringify({
82
- success: true,
83
- epic: {
84
- id: epic.id,
85
- title: epic.title,
86
- status: epic.status,
87
- description: epic.description,
88
- projectId,
89
- specId: epic.specId,
90
- createdAt: epic.createdAt.toISOString(),
91
- updatedAt: epic.updatedAt?.toISOString(),
92
- ticketCount: tickets.length,
93
- doneCount: doneTickets,
94
- progress: percent,
95
- tickets: tickets.map((t) => ({
96
- id: t.id,
97
- title: t.title,
98
- statusName: t.statusName,
99
- statusCategory: t.statusCategory,
100
- priority: t.priority,
101
- })),
102
- },
103
- }, null, 2));
104
- return;
105
- }
106
- this.log(`\n🎯 Epic: ${styles.emphasis(epic.id)} - ${epic.title}`);
107
- this.log('═'.repeat(55));
108
- this.log(`ID: ${epic.id}`);
109
- this.log(`Title: ${epic.title}`);
110
- this.log(`Project: ${projectName}`);
111
- this.log(`Status: ${epic.status}`);
112
- if (epic.specId) {
113
- this.log(`Spec: ${epic.specId}${specTitle ? ` - ${specTitle}` : ''}`);
114
- }
115
- this.log(`Created: ${epic.createdAt.toLocaleDateString()}`);
116
- if (epic.description) {
117
- this.log(`\nDescription: ${epic.description}`);
118
- }
119
- this.log(`\nProgress: ${percent}% (${doneTickets}/${tickets.length} tickets complete)`);
120
- this.log(progressBar(percent));
121
- if (tickets.length > 0) {
122
- this.log(`\n🎫 Tickets (${tickets.length}):`);
123
- for (const ticket of tickets) {
124
- const icon = ticket.statusCategory === 'completed' ? '✅' :
125
- ticket.statusCategory === 'started' ? '🚧' :
126
- ticket.statusCategory === 'unstarted' ? '📋' :
127
- ticket.statusCategory === 'canceled' ? '🚫' : '📥';
128
- const statusLabel = ticket.statusName || 'Unknown';
129
- this.log(` ${icon} ${ticket.id}: ${ticket.title} [${statusLabel}]`);
130
- }
131
- }
132
- else {
133
- this.log(styles.muted('\n No tickets linked to this epic yet.'));
134
- }
135
- this.log('\n' + '═'.repeat(55));
136
- this.log(styles.muted('Commands:'));
137
- this.log(styles.muted(` prlt epic progress ${epic.id}`));
138
- this.log(styles.muted(` prlt ticket create --epic ${epic.id} "New task"`));
139
- }
140
- }
141
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/epic/view.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import ExecutionStop from './stop.js';
2
- /**
3
- * Alias for 'execution stop' command.
4
- * Users intuitively try 'execution kill' so this provides a familiar interface.
5
- */
6
- export default class ExecutionKill extends ExecutionStop {
7
- static description: string;
8
- static args: {
9
- id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
- };
11
- static examples: string[];
12
- }
@@ -1,18 +0,0 @@
1
- import ExecutionStop from './stop.js';
2
- /**
3
- * Alias for 'execution stop' command.
4
- * Users intuitively try 'execution kill' so this provides a familiar interface.
5
- */
6
- export default class ExecutionKill extends ExecutionStop {
7
- static description = 'Stop running execution(s) (alias for "execution stop")';
8
- static args = ExecutionStop.args;
9
- static examples = [
10
- '<%= config.bin %> <%= command.id %> WORK-001',
11
- '<%= config.bin %> <%= command.id %> WORK-001 --force',
12
- '<%= config.bin %> <%= command.id %> # Interactive mode',
13
- '<%= config.bin %> <%= command.id %> --all',
14
- '<%= config.bin %> <%= command.id %> --all --force',
15
- '<%= config.bin %> <%= command.id %> --agent altman',
16
- ];
17
- }
18
- //# sourceMappingURL=kill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kill.js","sourceRoot":"","sources":["../../../src/commands/execution/kill.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,WAAW,CAAA;AAErC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,aAAa;IACtD,MAAM,CAAC,WAAW,GAAG,wDAAwD,CAAA;IAE7E,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAA;IAEhC,MAAM,CAAC,QAAQ,GAAG;QAChB,8CAA8C;QAC9C,sDAAsD;QACtD,yDAAyD;QACzD,2CAA2C;QAC3C,mDAAmD;QACnD,oDAAoD;KACrD,CAAA"}
@@ -1,20 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class LabelCreate extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- color: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- group: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
- };
16
- protected getPMOOptions(): {
17
- promptIfMultiple: boolean;
18
- };
19
- execute(): Promise<void>;
20
- }
@@ -1,58 +0,0 @@
1
- import { Args, 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 LabelCreate extends PMOCommand {
6
- static description = 'Create a new label';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> my-label',
9
- '<%= config.bin %> <%= command.id %> urgent --color "#ff0000" --group type',
10
- '<%= config.bin %> <%= command.id %> frontend --group area --description "Frontend work"',
11
- ];
12
- static args = {
13
- name: Args.string({
14
- description: 'Label name',
15
- required: true,
16
- }),
17
- };
18
- static flags = {
19
- ...pmoBaseFlags,
20
- color: Flags.string({
21
- char: 'c',
22
- description: 'Label color (hex, e.g. #ff0000)',
23
- }),
24
- description: Flags.string({
25
- char: 'd',
26
- description: 'Label description',
27
- }),
28
- group: Flags.string({
29
- char: 'g',
30
- description: 'Label group ID to add this label to',
31
- }),
32
- };
33
- getPMOOptions() {
34
- return { promptIfMultiple: false };
35
- }
36
- async execute() {
37
- const { args, flags } = await this.parse(LabelCreate);
38
- const label = await this.storage.createLabel({
39
- name: args.name,
40
- color: flags.color,
41
- description: flags.description,
42
- groupId: flags.group,
43
- });
44
- if (shouldOutputJson(flags)) {
45
- this.log(JSON.stringify(label, null, 2));
46
- return;
47
- }
48
- this.log(styles.success(`\nCreated label: ${label.name} (${label.id})`));
49
- if (label.groupName) {
50
- this.log(styles.muted(` Group: ${label.groupName}`));
51
- }
52
- if (label.color) {
53
- this.log(styles.muted(` Color: ${label.color}`));
54
- }
55
- this.log('');
56
- }
57
- }
58
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/label/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,UAAU;IACjD,MAAM,CAAC,WAAW,GAAG,oBAAoB,CAAC;IAE1C,MAAM,CAAC,QAAQ,GAAG;QAChB,8CAA8C;QAC9C,2EAA2E;QAC3E,yFAAyF;KAC1F,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;QACf,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iCAAiC;SAC/C,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mBAAmB;SACjC,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;SACnD,CAAC;KACH,CAAC;IAEQ,aAAa;QACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC"}
@@ -1,17 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class LabelDelete extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- };
13
- protected getPMOOptions(): {
14
- promptIfMultiple: boolean;
15
- };
16
- execute(): Promise<void>;
17
- }