@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,351 +0,0 @@
1
- import { Flags } from '@oclif/core';
2
- import inquirer from 'inquirer';
3
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
4
- import { styles } from '../../lib/styles.js';
5
- import { shouldOutputJson, outputPromptAsJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
6
- import { loadDefaultWorkSource, getRegisteredWorkSources, } from '../../lib/work-source/config.js';
7
- import { LinearClient, isLinearConfigured, loadLinearConfig, getLinearApiKey, } from '../../lib/linear/index.js';
8
- /**
9
- * Map Linear state type → PMO StateCategory
10
- */
11
- const LINEAR_TYPE_TO_CATEGORY = {
12
- triage: 'triage',
13
- backlog: 'backlog',
14
- unstarted: 'unstarted',
15
- started: 'started',
16
- completed: 'completed',
17
- canceled: 'canceled',
18
- };
19
- /**
20
- * Suggest a default action for a state based on its category.
21
- * Returns action ID or null for "no action".
22
- */
23
- function suggestDefaultAction(category, stateName) {
24
- // Review doesn't need an on_enter action — the implement lifecycle hook
25
- // moves tickets there when a PR is created
26
- const lowerName = stateName.toLowerCase();
27
- if (lowerName === 'review' || lowerName === 'in review') {
28
- return { actionId: null, label: 'No auto-action (implement moves here on PR)' };
29
- }
30
- switch (category) {
31
- case 'triage':
32
- return { actionId: null, label: 'No action (manual triage)' };
33
- case 'backlog':
34
- return { actionId: 'groom', label: 'groom (Recommended)' };
35
- case 'unstarted':
36
- return { actionId: null, label: 'No action' };
37
- case 'started':
38
- return { actionId: 'implement', label: 'implement (Recommended)' };
39
- case 'completed':
40
- return { actionId: 'merge', label: 'merge (Recommended)' };
41
- case 'canceled':
42
- return { actionId: null, label: 'No action' };
43
- default:
44
- return { actionId: null, label: 'No action' };
45
- }
46
- }
47
- export default class WorkflowSetup extends PMOCommand {
48
- static description = 'Pull board states from provider and wire actions to state transitions';
49
- static examples = [
50
- '<%= config.bin %> <%= command.id %>',
51
- '<%= config.bin %> <%= command.id %> --accept-defaults',
52
- '<%= config.bin %> <%= command.id %> --machine',
53
- ];
54
- static flags = {
55
- ...pmoBaseFlags,
56
- 'accept-defaults': Flags.boolean({
57
- description: 'Accept all default action suggestions without prompting',
58
- default: false,
59
- }),
60
- };
61
- getPMOOptions() {
62
- return { promptIfMultiple: false };
63
- }
64
- async execute() {
65
- const { flags } = await this.parse(WorkflowSetup);
66
- const jsonMode = shouldOutputJson(flags);
67
- const db = this.storage.getDatabase();
68
- // 1. Determine connected provider
69
- const defaultSource = loadDefaultWorkSource(db);
70
- let provider = defaultSource?.provider ?? null;
71
- if (!provider || provider === 'pmo') {
72
- // Try to find any registered external source
73
- const sources = getRegisteredWorkSources(db);
74
- const external = sources.filter(s => s.provider !== 'pmo');
75
- if (external.length === 1) {
76
- provider = external[0].provider;
77
- }
78
- else if (external.length > 1) {
79
- // In JSON mode, output choices
80
- if (jsonMode) {
81
- const choices = external.map(s => ({
82
- name: `${s.provider}${s.context ? ` (${s.context})` : ''}`,
83
- value: s.provider,
84
- }));
85
- outputPromptAsJson(buildPromptConfig('list', 'provider', 'Select provider to pull states from:', choices), createMetadata('workflow setup', flags));
86
- return;
87
- }
88
- const { selectedProvider } = await inquirer.prompt([{
89
- type: 'list',
90
- name: 'selectedProvider',
91
- message: 'Select provider to pull states from:',
92
- choices: external.map(s => ({
93
- name: `${s.provider}${s.context ? ` (${s.context})` : ''}`,
94
- value: s.provider,
95
- })),
96
- }]);
97
- provider = selectedProvider;
98
- }
99
- else {
100
- const msg = 'No external provider connected. Run "prlt linear connect" (or jira/asana) first.';
101
- if (jsonMode) {
102
- outputErrorAsJson('NO_PROVIDER', msg, createMetadata('workflow setup', flags));
103
- return;
104
- }
105
- this.error(msg);
106
- }
107
- }
108
- // 2. Fetch workflow states from provider
109
- let providerStates = [];
110
- let providerLabel = '';
111
- if (provider === 'linear') {
112
- const linearApiKey = getLinearApiKey(db);
113
- if (!linearApiKey || !isLinearConfigured(db)) {
114
- const msg = 'Linear is not configured. Run "prlt linear connect" first.';
115
- if (jsonMode) {
116
- outputErrorAsJson('LINEAR_NOT_CONFIGURED', msg, createMetadata('workflow setup', flags));
117
- return;
118
- }
119
- this.error(msg);
120
- }
121
- const linearConfig = loadLinearConfig(db);
122
- const client = new LinearClient(linearApiKey);
123
- // Get team ID
124
- let teamId = linearConfig.defaultTeamId;
125
- if (!teamId) {
126
- const teams = await client.listTeams();
127
- if (teams.length === 0) {
128
- const msg = 'No Linear teams found.';
129
- if (jsonMode) {
130
- outputErrorAsJson('NO_TEAMS', msg, createMetadata('workflow setup', flags));
131
- return;
132
- }
133
- this.error(msg);
134
- }
135
- teamId = teams[0].id;
136
- providerLabel = `Linear (${teams[0].name} team)`;
137
- }
138
- else {
139
- providerLabel = `Linear (${linearConfig.defaultTeamKey ?? 'default'} team)`;
140
- }
141
- const states = await client.listStates(teamId);
142
- // Sort by position
143
- states.sort((a, b) => a.position - b.position);
144
- providerStates = states.map(s => ({
145
- name: s.name,
146
- category: LINEAR_TYPE_TO_CATEGORY[s.type] || 'backlog',
147
- position: s.position,
148
- }));
149
- }
150
- else {
151
- // For now, only Linear is fully supported for state fetching.
152
- // Other providers can be added later.
153
- const msg = `Provider "${provider}" is not yet supported for workflow setup. Currently supported: linear`;
154
- if (jsonMode) {
155
- outputErrorAsJson('UNSUPPORTED_PROVIDER', msg, createMetadata('workflow setup', flags));
156
- return;
157
- }
158
- this.error(msg);
159
- }
160
- if (providerStates.length === 0) {
161
- const msg = 'No workflow states found from provider.';
162
- if (jsonMode) {
163
- outputErrorAsJson('NO_STATES', msg, createMetadata('workflow setup', flags));
164
- return;
165
- }
166
- this.error(msg);
167
- }
168
- // 3. Get available actions for building choices
169
- const allActions = await this.storage.listActions();
170
- // 4. Build default wiring based on category
171
- const wirings = providerStates.map(state => {
172
- const suggestion = suggestDefaultAction(state.category, state.name);
173
- return {
174
- stateName: state.name,
175
- category: state.category,
176
- actionId: suggestion.actionId,
177
- trigger: suggestion.actionId ? 'manual' : 'manual',
178
- };
179
- });
180
- // 5. Display states and defaults
181
- if (!jsonMode) {
182
- this.log('');
183
- this.log(styles.emphasis(`Connected to: ${providerLabel}`));
184
- this.log('');
185
- this.log(styles.emphasis('Your board states:'));
186
- for (const wiring of wirings) {
187
- const suggestion = suggestDefaultAction(wiring.category, wiring.stateName);
188
- const arrow = '\u2190';
189
- this.log(` ${styles.emphasis(wiring.stateName)} ${styles.muted(`(${wiring.category})`)} ${arrow} ${styles.muted(suggestion.label)}`);
190
- }
191
- this.log('');
192
- }
193
- // 6. Accept defaults or customize
194
- if (jsonMode && !flags['accept-defaults']) {
195
- // In JSON mode without --accept-defaults, output the plan for review
196
- const plan = wirings.map(w => ({
197
- state: w.stateName,
198
- category: w.category,
199
- action: w.actionId ?? 'none',
200
- trigger: w.trigger,
201
- }));
202
- outputSuccessAsJson({
203
- provider: provider,
204
- providerLabel,
205
- states: plan,
206
- message: 'Default wiring plan. Re-run with --accept-defaults to apply, or run interactively to customize.',
207
- }, createMetadata('workflow setup', flags));
208
- return;
209
- }
210
- if (!flags['accept-defaults'] && !jsonMode) {
211
- const { action } = await inquirer.prompt([{
212
- type: 'list',
213
- name: 'action',
214
- message: 'How would you like to proceed?',
215
- choices: [
216
- { name: 'Accept defaults', value: 'accept' },
217
- { name: 'Customize each state', value: 'customize' },
218
- ],
219
- }]);
220
- if (action === 'customize') {
221
- await this.customizeWirings(wirings, allActions);
222
- }
223
- }
224
- // 7. Save wiring to workflow_rules table (re-runnable: delete existing rules first)
225
- await this.saveWirings(wirings);
226
- if (jsonMode) {
227
- const savedRules = wirings
228
- .filter(w => w.actionId)
229
- .map(w => ({
230
- state: w.stateName,
231
- category: w.category,
232
- action: w.actionId,
233
- trigger: w.trigger,
234
- }));
235
- outputSuccessAsJson({
236
- provider: provider,
237
- providerLabel,
238
- rulesCreated: savedRules.length,
239
- rules: savedRules,
240
- }, createMetadata('workflow setup', flags));
241
- return;
242
- }
243
- this.log('');
244
- this.log(styles.success('Workflow rules saved successfully!'));
245
- this.log('');
246
- // Show summary
247
- const activeRules = wirings.filter(w => w.actionId);
248
- if (activeRules.length > 0) {
249
- this.log(styles.emphasis('Active rules:'));
250
- for (const rule of activeRules) {
251
- this.log(` ${styles.muted(`${rule.stateName} \u2192 ${rule.actionId} (${rule.trigger})`)}`);
252
- }
253
- }
254
- const skippedStates = wirings.filter(w => !w.actionId);
255
- if (skippedStates.length > 0) {
256
- this.log('');
257
- this.log(styles.muted(`States with no action: ${skippedStates.map(s => s.stateName).join(', ')}`));
258
- }
259
- this.log('');
260
- this.log(styles.muted('View rules: prlt workflow rules'));
261
- this.log(styles.muted('Re-run setup: prlt workflow setup'));
262
- }
263
- /**
264
- * Let user customize the action for each state.
265
- */
266
- async customizeWirings(wirings, allActions) {
267
- for (const wiring of wirings) {
268
- const suggestion = suggestDefaultAction(wiring.category, wiring.stateName);
269
- const choices = [
270
- { name: 'No action', value: '__none__' },
271
- ...allActions.map(a => ({
272
- name: `${a.id}${a.id === suggestion.actionId ? ' (Recommended)' : ''} — ${a.description || a.name}`,
273
- value: a.id,
274
- })),
275
- ];
276
- // Set default to recommended action or 'No action'
277
- const defaultValue = suggestion.actionId ?? '__none__';
278
- // eslint-disable-next-line no-await-in-loop
279
- const { selectedAction } = await inquirer.prompt([{
280
- type: 'list',
281
- name: 'selectedAction',
282
- message: `Action for "${wiring.stateName}" (${wiring.category}):`,
283
- choices,
284
- default: defaultValue,
285
- }]);
286
- wiring.actionId = selectedAction === '__none__' ? null : selectedAction;
287
- // If an action was selected, ask for trigger type
288
- if (wiring.actionId) {
289
- // eslint-disable-next-line no-await-in-loop
290
- const { selectedTrigger } = await inquirer.prompt([{
291
- type: 'list',
292
- name: 'selectedTrigger',
293
- message: `Trigger for "${wiring.stateName}" \u2192 ${wiring.actionId}:`,
294
- choices: [
295
- { name: 'Manual — agent picks up work when assigned', value: 'manual' },
296
- { name: 'On enter — fires automatically when ticket enters this state', value: 'on_enter' },
297
- ],
298
- default: 'manual',
299
- }]);
300
- wiring.trigger = selectedTrigger;
301
- }
302
- }
303
- }
304
- /**
305
- * Save wirings to the workflow_rules table.
306
- * Re-runnable: deletes all existing rules with matching IDs before creating new ones.
307
- */
308
- async saveWirings(wirings) {
309
- // Delete existing setup-generated rules (those with 'setup-' prefix)
310
- const existingRules = await this.storage.listWorkflowRules();
311
- for (const rule of existingRules) {
312
- if (rule.id.startsWith('setup-')) {
313
- // eslint-disable-next-line no-await-in-loop
314
- await this.storage.deleteWorkflowRule(rule.id);
315
- }
316
- }
317
- // Create new rules for states with actions
318
- for (const wiring of wirings) {
319
- if (!wiring.actionId)
320
- continue;
321
- const ruleId = `setup-${wiring.stateName.toLowerCase().replace(/\s+/g, '-')}-${wiring.actionId}`;
322
- try {
323
- // eslint-disable-next-line no-await-in-loop
324
- await this.storage.createWorkflowRule({
325
- id: ruleId,
326
- fromState: undefined, // any source state
327
- toState: wiring.stateName,
328
- actionId: wiring.actionId,
329
- trigger: wiring.trigger,
330
- enabled: true,
331
- });
332
- }
333
- catch (error) {
334
- // If a rule with this ID already exists (e.g. from a re-run race), update it
335
- if (error instanceof Error && error.message.includes('already exists')) {
336
- // eslint-disable-next-line no-await-in-loop
337
- await this.storage.updateWorkflowRule(ruleId, {
338
- toState: wiring.stateName,
339
- actionId: wiring.actionId,
340
- trigger: wiring.trigger,
341
- enabled: true,
342
- });
343
- }
344
- else {
345
- throw error;
346
- }
347
- }
348
- }
349
- }
350
- }
351
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/workflow/setup.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import WorkflowView from './view.js';
2
- export default class WorkflowShow extends WorkflowView {
3
- static description: string;
4
- static hidden: boolean;
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
- }
@@ -1,17 +0,0 @@
1
- import { Args } from '@oclif/core';
2
- import { pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import WorkflowView from './view.js';
4
- export default class WorkflowShow extends WorkflowView {
5
- static description = 'View details of a workflow (alias for workflow view)';
6
- static hidden = true;
7
- static args = {
8
- id: Args.string({
9
- description: 'Workflow ID - prompts with dropdown if not provided',
10
- required: false,
11
- }),
12
- };
13
- static flags = {
14
- ...pmoBaseFlags,
15
- };
16
- }
17
- //# sourceMappingURL=show.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/workflow/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,YAAY,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,YAAY;IACpD,MAAM,CAAC,WAAW,GAAG,sDAAsD,CAAC;IAC5E,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAErB,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;KAChB,CAAC"}
@@ -1,144 +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, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class WorkflowSwitch extends PMOCommand {
6
- static description = 'Switch a project to use a different workflow';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> kanban',
9
- '<%= config.bin %> <%= command.id %> linear --project my-project',
10
- '<%= config.bin %> <%= command.id %> --force # Skip confirmation',
11
- '<%= config.bin %> <%= command.id %> --machine # JSON output for AI agents',
12
- ];
13
- static args = {
14
- workflow: Args.string({
15
- description: 'Workflow ID to switch to',
16
- required: false,
17
- }),
18
- };
19
- static flags = {
20
- ...pmoBaseFlags,
21
- force: Flags.boolean({
22
- char: 'f',
23
- description: 'Skip confirmation prompt',
24
- default: false,
25
- }),
26
- };
27
- async execute() {
28
- const { args, flags } = await this.parse(WorkflowSwitch);
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('workflow switch', flags));
35
- return;
36
- }
37
- this.error(message);
38
- };
39
- // Agent mode config for prompts
40
- const agentConfig = jsonMode ? { flags, commandName: 'workflow switch' } : null;
41
- const projectId = await this.requireProject({
42
- jsonMode: {
43
- flags,
44
- commandName: 'workflow switch',
45
- baseCommand: 'prlt workflow switch',
46
- },
47
- });
48
- // Get workflow - prompt for selection if not provided
49
- let workflowId = args.workflow;
50
- if (!workflowId) {
51
- const workflows = await this.storage.listWorkflows();
52
- if (workflows.length === 0) {
53
- return handleError('NO_WORKFLOWS', 'No workflows found. Create one with: prlt workflow create "Workflow Name"');
54
- }
55
- // Use selectFromList for workflow selection (handles JSON mode automatically)
56
- // Include project flag if specified to maintain stateless navigation
57
- const projectFlag = flags.project ? ` -P ${flags.project}` : '';
58
- const selected = await this.selectFromList({
59
- message: 'Select a workflow:',
60
- items: workflows,
61
- getName: (w) => `${w.name}${w.description ? ` - ${w.description}` : ''}`,
62
- getValue: (w) => w.id,
63
- getCommand: (w) => `prlt workflow switch ${w.id}${projectFlag} --json`,
64
- jsonMode: agentConfig,
65
- });
66
- if (!selected) {
67
- return; // Cancelled or JSON mode (already exited)
68
- }
69
- workflowId = selected;
70
- }
71
- // Verify workflow exists
72
- const workflow = await this.storage.getWorkflow(workflowId);
73
- if (!workflow) {
74
- return handleError('WORKFLOW_NOT_FOUND', `Workflow not found: ${workflowId}. Run 'prlt workflow list' to see available workflows.`);
75
- }
76
- // Get current project info
77
- const project = await this.storage.getProject(projectId);
78
- const currentWorkflowId = project?.workflowId;
79
- // Check if already using this workflow
80
- if (currentWorkflowId === workflowId) {
81
- this.log(styles.muted(`Project is already using workflow "${workflow.name}".`));
82
- return;
83
- }
84
- // Get tickets that will be affected
85
- const tickets = await this.storage.listTickets(projectId);
86
- if (tickets.length > 0 && !flags.force) {
87
- const projectName = await this.getProjectName(projectId);
88
- this.log(styles.warning(`\nProject "${projectName}" has ${tickets.length} ticket(s).`));
89
- this.log(styles.warning('Tickets will be mapped to matching status categories in the new workflow.'));
90
- this.log('');
91
- // Use prompt for confirmation (handles JSON mode automatically)
92
- // Include project flag if specified to maintain stateless navigation
93
- const confirmProjectFlag = flags.project ? ` -P ${flags.project}` : '';
94
- const { confirm } = await this.prompt([{
95
- type: 'list',
96
- name: 'confirm',
97
- message: `Switch to workflow "${workflow.name}"?`,
98
- choices: [
99
- { name: 'No', value: false, command: '' },
100
- { name: 'Yes, switch workflow', value: true, command: `prlt workflow switch ${workflowId}${confirmProjectFlag} --force --json` },
101
- ],
102
- }], agentConfig);
103
- if (!confirm) {
104
- this.log(styles.muted('Cancelled'));
105
- return;
106
- }
107
- }
108
- // Get new workflow statuses
109
- const newStatuses = await this.storage.listStatuses(workflowId);
110
- // Build category -> status mapping for the new workflow
111
- const categoryToStatus = {};
112
- for (const status of newStatuses) {
113
- if (!categoryToStatus[status.category]) {
114
- categoryToStatus[status.category] = { id: status.id, name: status.name };
115
- }
116
- }
117
- // Find default status
118
- const defaultStatus = newStatuses.find(s => s.isDefault) || newStatuses[0];
119
- // Update project workflow_id
120
- await this.storage.updateProject(projectId, { workflowId: workflowId });
121
- // Migrate tickets to new statuses - sequential for data integrity
122
- let migratedCount = 0;
123
- for (const ticket of tickets) {
124
- // Get old status category
125
- const oldCategory = ticket.statusCategory || 'backlog';
126
- // Find matching status in new workflow, or use default
127
- const newStatus = categoryToStatus[oldCategory] ||
128
- (defaultStatus ? { id: defaultStatus.id, name: defaultStatus.name } : null);
129
- if (newStatus) {
130
- // eslint-disable-next-line no-await-in-loop
131
- await this.storage.moveTicket(projectId, ticket.id, newStatus.name);
132
- migratedCount++;
133
- }
134
- }
135
- const projectName = await this.getProjectName(projectId);
136
- this.log(styles.success(`\nSwitched project "${projectName}" to workflow "${styles.emphasis(workflow.name)}"`));
137
- if (migratedCount > 0) {
138
- this.log(styles.muted(`Migrated ${migratedCount} ticket(s) to matching statuses.`));
139
- }
140
- this.log('');
141
- this.log(styles.muted(`View statuses: prlt status list`));
142
- }
143
- }
144
- //# sourceMappingURL=switch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/workflow/switch.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class WorkflowView 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
- protected getPMOOptions(): {
14
- promptIfMultiple: boolean;
15
- };
16
- execute(): Promise<void>;
17
- }