@proletariat/cli 0.2.0 → 0.3.1

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 (526) hide show
  1. package/README.md +561 -251
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +23 -0
  6. package/dist/commands/action/create.d.ts +21 -0
  7. package/dist/commands/action/create.js +126 -0
  8. package/dist/commands/action/delete.d.ts +17 -0
  9. package/dist/commands/action/delete.js +78 -0
  10. package/dist/commands/action/index.d.ts +15 -0
  11. package/dist/commands/action/index.js +107 -0
  12. package/dist/commands/action/list.d.ts +14 -0
  13. package/dist/commands/action/list.js +89 -0
  14. package/dist/commands/action/run.d.ts +19 -0
  15. package/dist/commands/action/run.js +179 -0
  16. package/dist/commands/action/show.d.ts +15 -0
  17. package/dist/commands/action/show.js +47 -0
  18. package/dist/commands/action/update.d.ts +22 -0
  19. package/dist/commands/action/update.js +168 -0
  20. package/dist/commands/agent/index.d.ts +13 -0
  21. package/dist/commands/agent/index.js +131 -0
  22. package/dist/commands/agent/list.d.ts +7 -0
  23. package/dist/commands/agent/list.js +126 -0
  24. package/dist/commands/agent/login.d.ts +16 -0
  25. package/dist/commands/agent/login.js +146 -0
  26. package/dist/commands/agent/rebuild.d.ts +18 -0
  27. package/dist/commands/agent/rebuild.js +133 -0
  28. package/dist/commands/agent/restart.d.ts +17 -0
  29. package/dist/commands/agent/restart.js +116 -0
  30. package/dist/commands/agent/shell.d.ts +23 -0
  31. package/dist/commands/agent/shell.js +378 -0
  32. package/dist/commands/agent/staff/add.d.ts +15 -0
  33. package/dist/commands/agent/staff/add.js +281 -0
  34. package/dist/commands/agent/staff/index.d.ts +14 -0
  35. package/dist/commands/agent/staff/index.js +90 -0
  36. package/dist/commands/agent/staff/list.d.ts +7 -0
  37. package/dist/commands/agent/staff/list.js +90 -0
  38. package/dist/commands/agent/staff/remove.d.ts +16 -0
  39. package/dist/commands/agent/staff/remove.js +137 -0
  40. package/dist/commands/agent/status.d.ts +17 -0
  41. package/dist/commands/agent/status.js +139 -0
  42. package/dist/commands/agent/temp/cleanup.d.ts +23 -0
  43. package/dist/commands/agent/temp/cleanup.js +388 -0
  44. package/dist/commands/agent/temp/index.d.ts +14 -0
  45. package/dist/commands/agent/temp/index.js +82 -0
  46. package/dist/commands/agent/temp/list.d.ts +7 -0
  47. package/dist/commands/agent/temp/list.js +108 -0
  48. package/dist/commands/agent/themes/add-names.d.ts +10 -0
  49. package/dist/commands/agent/themes/add-names.js +67 -0
  50. package/dist/commands/agent/themes/create.d.ts +13 -0
  51. package/dist/commands/agent/themes/create.js +66 -0
  52. package/dist/commands/agent/themes/index.d.ts +9 -0
  53. package/dist/commands/agent/themes/index.js +194 -0
  54. package/dist/commands/agent/themes/list.d.ts +6 -0
  55. package/dist/commands/agent/themes/list.js +41 -0
  56. package/dist/commands/agent/themes/set.d.ts +12 -0
  57. package/dist/commands/agent/themes/set.js +77 -0
  58. package/dist/commands/agent/visit.d.ts +16 -0
  59. package/dist/commands/agent/visit.js +88 -0
  60. package/dist/commands/autocomplete/setup.d.ts +14 -0
  61. package/dist/commands/autocomplete/setup.js +154 -0
  62. package/dist/commands/board/index.d.ts +17 -0
  63. package/dist/commands/board/index.js +255 -0
  64. package/dist/commands/board/watch.d.ts +13 -0
  65. package/dist/commands/board/watch.js +52 -0
  66. package/dist/commands/branch/create.d.ts +50 -0
  67. package/dist/commands/branch/create.js +624 -0
  68. package/dist/commands/branch/index.d.ts +13 -0
  69. package/dist/commands/branch/index.js +50 -0
  70. package/dist/commands/branch/list.d.ts +17 -0
  71. package/dist/commands/branch/list.js +120 -0
  72. package/dist/commands/branch/validate.d.ts +15 -0
  73. package/dist/commands/branch/validate.js +73 -0
  74. package/dist/commands/commit.d.ts +71 -0
  75. package/dist/commands/commit.js +499 -0
  76. package/dist/commands/docker/clean.d.ts +13 -0
  77. package/dist/commands/docker/clean.js +224 -0
  78. package/dist/commands/docker/index.d.ts +19 -0
  79. package/dist/commands/docker/index.js +274 -0
  80. package/dist/commands/docker/list.d.ts +16 -0
  81. package/dist/commands/docker/list.js +200 -0
  82. package/dist/commands/docker/logs.d.ts +14 -0
  83. package/dist/commands/docker/logs.js +118 -0
  84. package/dist/commands/docker/prune.d.ts +14 -0
  85. package/dist/commands/docker/prune.js +211 -0
  86. package/dist/commands/docker/restart.d.ts +14 -0
  87. package/dist/commands/docker/restart.js +129 -0
  88. package/dist/commands/docker/shell.d.ts +14 -0
  89. package/dist/commands/docker/shell.js +103 -0
  90. package/dist/commands/docker/start.d.ts +12 -0
  91. package/dist/commands/docker/start.js +92 -0
  92. package/dist/commands/docker/status.d.ts +7 -0
  93. package/dist/commands/docker/status.js +40 -0
  94. package/dist/commands/docker/stop.d.ts +14 -0
  95. package/dist/commands/docker/stop.js +134 -0
  96. package/dist/commands/docker/sync.d.ts +15 -0
  97. package/dist/commands/docker/sync.js +112 -0
  98. package/dist/commands/epic/activate.d.ts +13 -0
  99. package/dist/commands/epic/activate.js +118 -0
  100. package/dist/commands/epic/archive.d.ts +14 -0
  101. package/dist/commands/epic/archive.js +132 -0
  102. package/dist/commands/epic/create.d.ts +15 -0
  103. package/dist/commands/epic/create.js +137 -0
  104. package/dist/commands/epic/index.d.ts +13 -0
  105. package/dist/commands/epic/index.js +88 -0
  106. package/dist/commands/epic/link/block.d.ts +14 -0
  107. package/dist/commands/epic/link/block.js +79 -0
  108. package/dist/commands/epic/link/duplicates.d.ts +14 -0
  109. package/dist/commands/epic/link/duplicates.js +66 -0
  110. package/dist/commands/epic/link/index.d.ts +19 -0
  111. package/dist/commands/epic/link/index.js +242 -0
  112. package/dist/commands/epic/link/relates.d.ts +14 -0
  113. package/dist/commands/epic/link/relates.js +66 -0
  114. package/dist/commands/epic/link/remove.d.ts +16 -0
  115. package/dist/commands/epic/link/remove.js +89 -0
  116. package/dist/commands/epic/list.d.ts +11 -0
  117. package/dist/commands/epic/list.js +87 -0
  118. package/dist/commands/epic/move.d.ts +15 -0
  119. package/dist/commands/epic/move.js +184 -0
  120. package/dist/commands/epic/progress.d.ts +16 -0
  121. package/dist/commands/epic/progress.js +166 -0
  122. package/dist/commands/epic/project.d.ts +15 -0
  123. package/dist/commands/epic/project.js +219 -0
  124. package/dist/commands/epic/reorder.d.ts +21 -0
  125. package/dist/commands/epic/reorder.js +160 -0
  126. package/dist/commands/epic/spec.d.ts +15 -0
  127. package/dist/commands/epic/spec.js +191 -0
  128. package/dist/commands/epic/ticket.d.ts +18 -0
  129. package/dist/commands/epic/ticket.js +291 -0
  130. package/dist/commands/epic/view.d.ts +13 -0
  131. package/dist/commands/epic/view.js +117 -0
  132. package/dist/commands/execution/index.d.ts +13 -0
  133. package/dist/commands/execution/index.js +70 -0
  134. package/dist/commands/execution/list.d.ts +15 -0
  135. package/dist/commands/execution/list.js +144 -0
  136. package/dist/commands/execution/logs.d.ts +18 -0
  137. package/dist/commands/execution/logs.js +161 -0
  138. package/dist/commands/execution/stop.d.ts +22 -0
  139. package/dist/commands/execution/stop.js +248 -0
  140. package/dist/commands/gh/index.d.ts +9 -0
  141. package/dist/commands/gh/index.js +53 -0
  142. package/dist/commands/gh/login.d.ts +6 -0
  143. package/dist/commands/gh/login.js +57 -0
  144. package/dist/commands/gh/status.d.ts +6 -0
  145. package/dist/commands/gh/status.js +48 -0
  146. package/dist/commands/gh/token.d.ts +6 -0
  147. package/dist/commands/gh/token.js +59 -0
  148. package/dist/commands/init.d.ts +26 -0
  149. package/dist/commands/init.js +200 -0
  150. package/dist/commands/phase/create.d.ts +22 -0
  151. package/dist/commands/phase/create.js +123 -0
  152. package/dist/commands/phase/delete.d.ts +17 -0
  153. package/dist/commands/phase/delete.js +73 -0
  154. package/dist/commands/phase/list.d.ts +12 -0
  155. package/dist/commands/phase/list.js +76 -0
  156. package/dist/commands/phase/move.d.ts +17 -0
  157. package/dist/commands/phase/move.js +115 -0
  158. package/dist/commands/phase/template/apply.d.ts +17 -0
  159. package/dist/commands/phase/template/apply.js +106 -0
  160. package/dist/commands/phase/template/create.d.ts +16 -0
  161. package/dist/commands/phase/template/create.js +58 -0
  162. package/dist/commands/phase/template/delete.d.ts +17 -0
  163. package/dist/commands/phase/template/delete.js +98 -0
  164. package/dist/commands/phase/template/index.d.ts +15 -0
  165. package/dist/commands/phase/template/index.js +128 -0
  166. package/dist/commands/phase/template/list.d.ts +16 -0
  167. package/dist/commands/phase/template/list.js +95 -0
  168. package/dist/commands/phase/template/update.d.ts +17 -0
  169. package/dist/commands/phase/template/update.js +89 -0
  170. package/dist/commands/phase/update.d.ts +23 -0
  171. package/dist/commands/phase/update.js +174 -0
  172. package/dist/commands/pmo/init.d.ts +25 -0
  173. package/dist/commands/pmo/init.js +341 -0
  174. package/dist/commands/pr/create.d.ts +17 -0
  175. package/dist/commands/pr/create.js +242 -0
  176. package/dist/commands/pr/index.d.ts +9 -0
  177. package/dist/commands/pr/index.js +68 -0
  178. package/dist/commands/pr/link.d.ts +14 -0
  179. package/dist/commands/pr/link.js +212 -0
  180. package/dist/commands/pr/status.d.ts +12 -0
  181. package/dist/commands/pr/status.js +161 -0
  182. package/dist/commands/project/archive.d.ts +17 -0
  183. package/dist/commands/project/archive.js +83 -0
  184. package/dist/commands/project/create.d.ts +22 -0
  185. package/dist/commands/project/create.js +143 -0
  186. package/dist/commands/project/delete.d.ts +17 -0
  187. package/dist/commands/project/delete.js +128 -0
  188. package/dist/commands/project/index.d.ts +13 -0
  189. package/dist/commands/project/index.js +64 -0
  190. package/dist/commands/project/list.d.ts +14 -0
  191. package/dist/commands/project/list.js +96 -0
  192. package/dist/commands/project/spec.d.ts +18 -0
  193. package/dist/commands/project/spec.js +216 -0
  194. package/dist/commands/project/unarchive.d.ts +15 -0
  195. package/dist/commands/project/unarchive.js +35 -0
  196. package/dist/commands/project/view.d.ts +16 -0
  197. package/dist/commands/project/view.js +94 -0
  198. package/dist/commands/repo/add.d.ts +21 -0
  199. package/dist/commands/repo/add.js +118 -0
  200. package/dist/commands/repo/index.d.ts +13 -0
  201. package/dist/commands/repo/index.js +114 -0
  202. package/dist/commands/repo/list.d.ts +13 -0
  203. package/dist/commands/repo/list.js +96 -0
  204. package/dist/commands/repo/remove.d.ts +23 -0
  205. package/dist/commands/repo/remove.js +217 -0
  206. package/dist/commands/repo/view.d.ts +15 -0
  207. package/dist/commands/repo/view.js +99 -0
  208. package/dist/commands/session/attach.d.ts +40 -0
  209. package/dist/commands/session/attach.js +307 -0
  210. package/dist/commands/session/index.d.ts +13 -0
  211. package/dist/commands/session/index.js +64 -0
  212. package/dist/commands/session/list.d.ts +21 -0
  213. package/dist/commands/session/list.js +181 -0
  214. package/dist/commands/spec/create.d.ts +19 -0
  215. package/dist/commands/spec/create.js +130 -0
  216. package/dist/commands/spec/index.d.ts +13 -0
  217. package/dist/commands/spec/index.js +68 -0
  218. package/dist/commands/spec/link/depends.d.ts +14 -0
  219. package/dist/commands/spec/link/depends.js +64 -0
  220. package/dist/commands/spec/link/duplicates.d.ts +14 -0
  221. package/dist/commands/spec/link/duplicates.js +63 -0
  222. package/dist/commands/spec/link/index.d.ts +19 -0
  223. package/dist/commands/spec/link/index.js +200 -0
  224. package/dist/commands/spec/link/relates.d.ts +14 -0
  225. package/dist/commands/spec/link/relates.js +63 -0
  226. package/dist/commands/spec/link/remove.d.ts +16 -0
  227. package/dist/commands/spec/link/remove.js +94 -0
  228. package/dist/commands/spec/list.d.ts +12 -0
  229. package/dist/commands/spec/list.js +75 -0
  230. package/dist/commands/spec/plan.d.ts +15 -0
  231. package/dist/commands/spec/plan.js +108 -0
  232. package/dist/commands/spec/ticket.d.ts +18 -0
  233. package/dist/commands/spec/ticket.js +160 -0
  234. package/dist/commands/spec/view.d.ts +15 -0
  235. package/dist/commands/spec/view.js +163 -0
  236. package/dist/commands/status/create.d.ts +21 -0
  237. package/dist/commands/status/create.js +140 -0
  238. package/dist/commands/status/delete.d.ts +13 -0
  239. package/dist/commands/status/delete.js +77 -0
  240. package/dist/commands/status/index.d.ts +14 -0
  241. package/dist/commands/status/index.js +91 -0
  242. package/dist/commands/status/list.d.ts +12 -0
  243. package/dist/commands/status/list.js +93 -0
  244. package/dist/commands/status/move.d.ts +14 -0
  245. package/dist/commands/status/move.js +120 -0
  246. package/dist/commands/status/update.d.ts +20 -0
  247. package/dist/commands/status/update.js +180 -0
  248. package/dist/commands/template/delete.d.ts +15 -0
  249. package/dist/commands/template/delete.js +142 -0
  250. package/dist/commands/template/index.d.ts +10 -0
  251. package/dist/commands/template/index.js +64 -0
  252. package/dist/commands/template/list.d.ts +18 -0
  253. package/dist/commands/template/list.js +157 -0
  254. package/dist/commands/template/phase/apply.d.ts +14 -0
  255. package/dist/commands/template/phase/apply.js +41 -0
  256. package/dist/commands/template/phase/create.d.ts +12 -0
  257. package/dist/commands/template/phase/create.js +29 -0
  258. package/dist/commands/template/phase/delete.d.ts +13 -0
  259. package/dist/commands/template/phase/delete.js +34 -0
  260. package/dist/commands/template/phase/index.d.ts +10 -0
  261. package/dist/commands/template/phase/index.js +62 -0
  262. package/dist/commands/template/phase/list.d.ts +11 -0
  263. package/dist/commands/template/phase/list.js +34 -0
  264. package/dist/commands/template/phase/update.d.ts +13 -0
  265. package/dist/commands/template/phase/update.js +35 -0
  266. package/dist/commands/template/ticket/apply.d.ts +17 -0
  267. package/dist/commands/template/ticket/apply.js +58 -0
  268. package/dist/commands/template/ticket/delete.d.ts +13 -0
  269. package/dist/commands/template/ticket/delete.js +34 -0
  270. package/dist/commands/template/ticket/index.d.ts +10 -0
  271. package/dist/commands/template/ticket/index.js +62 -0
  272. package/dist/commands/template/ticket/list.d.ts +11 -0
  273. package/dist/commands/template/ticket/list.js +34 -0
  274. package/dist/commands/template/ticket/save.d.ts +13 -0
  275. package/dist/commands/template/ticket/save.js +35 -0
  276. package/dist/commands/ticket/bulk.d.ts +13 -0
  277. package/dist/commands/ticket/bulk.js +145 -0
  278. package/dist/commands/ticket/complete.d.ts +16 -0
  279. package/dist/commands/ticket/complete.js +170 -0
  280. package/dist/commands/ticket/create.d.ts +22 -0
  281. package/dist/commands/ticket/create.js +390 -0
  282. package/dist/commands/ticket/delete.d.ts +16 -0
  283. package/dist/commands/ticket/delete.js +178 -0
  284. package/dist/commands/ticket/edit.d.ts +27 -0
  285. package/dist/commands/ticket/edit.js +322 -0
  286. package/dist/commands/ticket/epic.d.ts +20 -0
  287. package/dist/commands/ticket/epic.js +333 -0
  288. package/dist/commands/ticket/index.d.ts +13 -0
  289. package/dist/commands/ticket/index.js +103 -0
  290. package/dist/commands/ticket/link/block.d.ts +14 -0
  291. package/dist/commands/ticket/link/block.js +94 -0
  292. package/dist/commands/ticket/link/duplicates.d.ts +14 -0
  293. package/dist/commands/ticket/link/duplicates.js +93 -0
  294. package/dist/commands/ticket/link/index.d.ts +19 -0
  295. package/dist/commands/ticket/link/index.js +239 -0
  296. package/dist/commands/ticket/link/relates.d.ts +14 -0
  297. package/dist/commands/ticket/link/relates.js +93 -0
  298. package/dist/commands/ticket/link/remove.d.ts +16 -0
  299. package/dist/commands/ticket/link/remove.js +128 -0
  300. package/dist/commands/ticket/list.d.ts +24 -0
  301. package/dist/commands/ticket/list.js +431 -0
  302. package/dist/commands/ticket/move.d.ts +18 -0
  303. package/dist/commands/ticket/move.js +212 -0
  304. package/dist/commands/ticket/project.d.ts +18 -0
  305. package/dist/commands/ticket/project.js +254 -0
  306. package/dist/commands/ticket/reassign.d.ts +19 -0
  307. package/dist/commands/ticket/reassign.js +279 -0
  308. package/dist/commands/ticket/spec.d.ts +18 -0
  309. package/dist/commands/ticket/spec.js +259 -0
  310. package/dist/commands/ticket/status.d.ts +13 -0
  311. package/dist/commands/ticket/status.js +87 -0
  312. package/dist/commands/ticket/template/apply.d.ts +25 -0
  313. package/dist/commands/ticket/template/apply.js +249 -0
  314. package/dist/commands/ticket/template/create.d.ts +19 -0
  315. package/dist/commands/ticket/template/create.js +210 -0
  316. package/dist/commands/ticket/template/delete.d.ts +17 -0
  317. package/dist/commands/ticket/template/delete.js +92 -0
  318. package/dist/commands/ticket/template/index.d.ts +15 -0
  319. package/dist/commands/ticket/template/index.js +118 -0
  320. package/dist/commands/ticket/template/list.d.ts +16 -0
  321. package/dist/commands/ticket/template/list.js +110 -0
  322. package/dist/commands/ticket/template/save.d.ts +14 -0
  323. package/dist/commands/ticket/template/save.js +110 -0
  324. package/dist/commands/ticket/update.d.ts +18 -0
  325. package/dist/commands/ticket/update.js +325 -0
  326. package/dist/commands/ticket/view.d.ts +13 -0
  327. package/dist/commands/ticket/view.js +80 -0
  328. package/dist/commands/whoami.d.ts +9 -0
  329. package/dist/commands/whoami.js +103 -0
  330. package/dist/commands/work/complete.d.ts +13 -0
  331. package/dist/commands/work/complete.js +121 -0
  332. package/dist/commands/work/index.d.ts +13 -0
  333. package/dist/commands/work/index.js +70 -0
  334. package/dist/commands/work/ready.d.ts +24 -0
  335. package/dist/commands/work/ready.js +290 -0
  336. package/dist/commands/work/revise.d.ts +19 -0
  337. package/dist/commands/work/revise.js +377 -0
  338. package/dist/commands/work/spawn-all.d.ts +17 -0
  339. package/dist/commands/work/spawn-all.js +58 -0
  340. package/dist/commands/work/spawn.d.ts +29 -0
  341. package/dist/commands/work/spawn.js +728 -0
  342. package/dist/commands/work/start.d.ts +39 -0
  343. package/dist/commands/work/start.js +1393 -0
  344. package/dist/commands/work/watch.d.ts +31 -0
  345. package/dist/commands/work/watch.js +359 -0
  346. package/dist/commands/workflow/create.d.ts +18 -0
  347. package/dist/commands/workflow/create.js +119 -0
  348. package/dist/commands/workflow/delete.d.ts +17 -0
  349. package/dist/commands/workflow/delete.js +119 -0
  350. package/dist/commands/workflow/index.d.ts +15 -0
  351. package/dist/commands/workflow/index.js +75 -0
  352. package/dist/commands/workflow/list.d.ts +15 -0
  353. package/dist/commands/workflow/list.js +75 -0
  354. package/dist/commands/workflow/switch.d.ts +13 -0
  355. package/dist/commands/workflow/switch.js +117 -0
  356. package/dist/commands/workflow/view.d.ts +16 -0
  357. package/dist/commands/workflow/view.js +114 -0
  358. package/dist/commands/workspace/add.d.ts +12 -0
  359. package/dist/commands/workspace/add.js +74 -0
  360. package/dist/commands/workspace/list.d.ts +9 -0
  361. package/dist/commands/workspace/list.js +153 -0
  362. package/dist/commands/workspace/remove.d.ts +13 -0
  363. package/dist/commands/workspace/remove.js +98 -0
  364. package/dist/commands/workspace/use.d.ts +12 -0
  365. package/dist/commands/workspace/use.js +111 -0
  366. package/dist/hooks/init.d.ts +11 -0
  367. package/dist/hooks/init.js +57 -0
  368. package/dist/index.d.ts +1 -0
  369. package/dist/index.js +1 -0
  370. package/dist/lib/agents/commands.d.ts +189 -0
  371. package/dist/lib/agents/commands.js +893 -0
  372. package/dist/lib/agents/index.d.ts +54 -0
  373. package/dist/lib/agents/index.js +382 -0
  374. package/dist/lib/branch/index.d.ts +120 -0
  375. package/dist/lib/branch/index.js +334 -0
  376. package/dist/lib/colors.d.ts +94 -0
  377. package/dist/lib/colors.js +68 -0
  378. package/dist/lib/commands/docker-command.d.ts +21 -0
  379. package/dist/lib/commands/docker-command.js +27 -0
  380. package/dist/lib/database/index.d.ts +176 -0
  381. package/dist/lib/database/index.js +581 -0
  382. package/dist/lib/docker/resolve.d.ts +38 -0
  383. package/dist/lib/docker/resolve.js +175 -0
  384. package/dist/lib/execution/config.d.ts +150 -0
  385. package/dist/lib/execution/config.js +541 -0
  386. package/dist/lib/execution/devcontainer.d.ts +85 -0
  387. package/dist/lib/execution/devcontainer.js +594 -0
  388. package/dist/lib/execution/index.d.ts +10 -0
  389. package/dist/lib/execution/index.js +10 -0
  390. package/dist/lib/execution/runners.d.ts +53 -0
  391. package/dist/lib/execution/runners.js +1182 -0
  392. package/dist/lib/execution/spawner.d.ts +85 -0
  393. package/dist/lib/execution/spawner.js +548 -0
  394. package/dist/lib/execution/storage.d.ts +159 -0
  395. package/dist/lib/execution/storage.js +425 -0
  396. package/dist/lib/execution/types.d.ts +145 -0
  397. package/dist/lib/execution/types.js +157 -0
  398. package/dist/lib/init/index.d.ts +75 -0
  399. package/dist/lib/init/index.js +355 -0
  400. package/dist/lib/machine-config.d.ts +170 -0
  401. package/dist/lib/machine-config.js +386 -0
  402. package/dist/lib/pmo/base-command.d.ts +195 -0
  403. package/dist/lib/pmo/base-command.js +319 -0
  404. package/dist/lib/pmo/create-spec-folders.d.ts +43 -0
  405. package/dist/lib/pmo/create-spec-folders.js +64 -0
  406. package/dist/lib/pmo/epic-files.d.ts +56 -0
  407. package/dist/lib/pmo/epic-files.js +195 -0
  408. package/dist/lib/pmo/find-pmo.d.ts +14 -0
  409. package/dist/lib/pmo/find-pmo.js +172 -0
  410. package/dist/lib/pmo/index.d.ts +109 -0
  411. package/dist/lib/pmo/index.js +501 -0
  412. package/dist/lib/pmo/markdown.d.ts +31 -0
  413. package/dist/lib/pmo/markdown.js +245 -0
  414. package/dist/lib/pmo/pmo-context.d.ts +27 -0
  415. package/dist/lib/pmo/pmo-context.js +44 -0
  416. package/dist/lib/pmo/schema.d.ts +82 -0
  417. package/dist/lib/pmo/schema.js +531 -0
  418. package/dist/lib/pmo/spec-parser.d.ts +25 -0
  419. package/dist/lib/pmo/spec-parser.js +205 -0
  420. package/dist/lib/pmo/spec-types.d.ts +43 -0
  421. package/dist/lib/pmo/spec-types.js +7 -0
  422. package/dist/lib/pmo/storage/actions.d.ts +34 -0
  423. package/dist/lib/pmo/storage/actions.js +177 -0
  424. package/dist/lib/pmo/storage/base.d.ts +47 -0
  425. package/dist/lib/pmo/storage/base.js +858 -0
  426. package/dist/lib/pmo/storage/dependencies.d.ts +61 -0
  427. package/dist/lib/pmo/storage/dependencies.js +267 -0
  428. package/dist/lib/pmo/storage/epics.d.ts +46 -0
  429. package/dist/lib/pmo/storage/epics.js +243 -0
  430. package/dist/lib/pmo/storage/helpers.d.ts +33 -0
  431. package/dist/lib/pmo/storage/helpers.js +148 -0
  432. package/dist/lib/pmo/storage/index.d.ts +186 -0
  433. package/dist/lib/pmo/storage/index.js +689 -0
  434. package/dist/lib/pmo/storage/phases.d.ts +65 -0
  435. package/dist/lib/pmo/storage/phases.js +392 -0
  436. package/dist/lib/pmo/storage/projects.d.ts +79 -0
  437. package/dist/lib/pmo/storage/projects.js +303 -0
  438. package/dist/lib/pmo/storage/specs.d.ts +77 -0
  439. package/dist/lib/pmo/storage/specs.js +389 -0
  440. package/dist/lib/pmo/storage/statuses.d.ts +63 -0
  441. package/dist/lib/pmo/storage/statuses.js +404 -0
  442. package/dist/lib/pmo/storage/subtasks.d.ts +37 -0
  443. package/dist/lib/pmo/storage/subtasks.js +184 -0
  444. package/dist/lib/pmo/storage/templates.d.ts +40 -0
  445. package/dist/lib/pmo/storage/templates.js +210 -0
  446. package/dist/lib/pmo/storage/tickets.d.ts +57 -0
  447. package/dist/lib/pmo/storage/tickets.js +453 -0
  448. package/dist/lib/pmo/storage/types.d.ts +200 -0
  449. package/dist/lib/pmo/storage/types.js +5 -0
  450. package/dist/lib/pmo/storage/views.d.ts +44 -0
  451. package/dist/lib/pmo/storage/views.js +355 -0
  452. package/dist/lib/pmo/storage-sqlite.d.ts +7 -0
  453. package/dist/lib/pmo/storage-sqlite.js +7 -0
  454. package/dist/lib/pmo/sync-manager.d.ts +92 -0
  455. package/dist/lib/pmo/sync-manager.js +229 -0
  456. package/dist/lib/pmo/types.d.ts +710 -0
  457. package/dist/lib/pmo/types.js +108 -0
  458. package/dist/lib/pmo/utils.d.ts +122 -0
  459. package/dist/lib/pmo/utils.js +174 -0
  460. package/dist/lib/pmo/watcher.d.ts +43 -0
  461. package/dist/lib/pmo/watcher.js +208 -0
  462. package/dist/lib/pr/index.d.ts +150 -0
  463. package/dist/lib/pr/index.js +483 -0
  464. package/dist/lib/prompt-json.d.ts +231 -0
  465. package/dist/lib/prompt-json.js +213 -0
  466. package/dist/lib/repos/index.d.ts +81 -0
  467. package/dist/lib/repos/index.js +679 -0
  468. package/dist/lib/styles.d.ts +98 -0
  469. package/dist/lib/styles.js +195 -0
  470. package/dist/lib/themes.d.ts +128 -0
  471. package/dist/lib/themes.js +301 -0
  472. package/dist/lib/ui/BoardUI.d.ts +21 -0
  473. package/dist/lib/ui/BoardUI.js +85 -0
  474. package/dist/lib/ui/ClaimTicketUI.d.ts +17 -0
  475. package/dist/lib/ui/ClaimTicketUI.js +64 -0
  476. package/dist/lib/ui/CreateTicketUI.d.ts +13 -0
  477. package/dist/lib/ui/CreateTicketUI.js +101 -0
  478. package/dist/lib/workspace.d.ts +66 -0
  479. package/dist/lib/workspace.js +204 -0
  480. package/oclif.manifest.json +10593 -0
  481. package/package.json +103 -56
  482. package/LICENSE +0 -21
  483. package/dist/bin/prlt.d.ts +0 -11
  484. package/dist/bin/prlt.d.ts.map +0 -1
  485. package/dist/bin/prlt.js +0 -144
  486. package/dist/bin/prlt.js.map +0 -1
  487. package/dist/lib/config/index.d.ts +0 -14
  488. package/dist/lib/config/index.d.ts.map +0 -1
  489. package/dist/lib/config/index.js +0 -142
  490. package/dist/lib/config/index.js.map +0 -1
  491. package/dist/lib/config/upgrade.d.ts +0 -2
  492. package/dist/lib/config/upgrade.d.ts.map +0 -1
  493. package/dist/lib/config/upgrade.js +0 -248
  494. package/dist/lib/config/upgrade.js.map +0 -1
  495. package/dist/lib/themes/index.d.ts +0 -8
  496. package/dist/lib/themes/index.d.ts.map +0 -1
  497. package/dist/lib/themes/index.js +0 -80
  498. package/dist/lib/themes/index.js.map +0 -1
  499. package/dist/lib/utils/helpers.d.ts +0 -4
  500. package/dist/lib/utils/helpers.d.ts.map +0 -1
  501. package/dist/lib/utils/helpers.js +0 -39
  502. package/dist/lib/utils/helpers.js.map +0 -1
  503. package/dist/lib/utils/logger.d.ts +0 -4
  504. package/dist/lib/utils/logger.d.ts.map +0 -1
  505. package/dist/lib/utils/logger.js +0 -28
  506. package/dist/lib/utils/logger.js.map +0 -1
  507. package/dist/lib/workspace/index.d.ts +0 -13
  508. package/dist/lib/workspace/index.d.ts.map +0 -1
  509. package/dist/lib/workspace/index.js +0 -116
  510. package/dist/lib/workspace/index.js.map +0 -1
  511. package/dist/lib/worktree/index.d.ts +0 -7
  512. package/dist/lib/worktree/index.d.ts.map +0 -1
  513. package/dist/lib/worktree/index.js +0 -362
  514. package/dist/lib/worktree/index.js.map +0 -1
  515. package/dist/lib/worktree/migrate.d.ts +0 -2
  516. package/dist/lib/worktree/migrate.d.ts.map +0 -1
  517. package/dist/lib/worktree/migrate.js +0 -214
  518. package/dist/lib/worktree/migrate.js.map +0 -1
  519. package/dist/lib/worktree/repair.d.ts +0 -3
  520. package/dist/lib/worktree/repair.d.ts.map +0 -1
  521. package/dist/lib/worktree/repair.js +0 -320
  522. package/dist/lib/worktree/repair.js.map +0 -1
  523. package/dist/types/index.d.ts +0 -57
  524. package/dist/types/index.d.ts.map +0 -1
  525. package/dist/types/index.js +0 -3
  526. package/dist/types/index.js.map +0 -1
@@ -0,0 +1,142 @@
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, outputErrorAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
6
+ export default class TemplateDelete extends PMOCommand {
7
+ static description = 'Delete templates (ticket or phase)';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ '<%= config.bin %> <%= command.id %> --type ticket',
11
+ '<%= config.bin %> <%= command.id %> --type phase',
12
+ '<%= config.bin %> <%= command.id %> --force',
13
+ ];
14
+ static flags = {
15
+ ...pmoBaseFlags,
16
+ type: Flags.string({
17
+ char: 't',
18
+ description: 'Template type to delete',
19
+ options: ['ticket', 'phase'],
20
+ }),
21
+ force: Flags.boolean({
22
+ char: 'f',
23
+ description: 'Skip confirmation',
24
+ default: false,
25
+ }),
26
+ json: Flags.boolean({
27
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
28
+ default: false,
29
+ }),
30
+ };
31
+ getPMOOptions() {
32
+ return { promptIfMultiple: false };
33
+ }
34
+ async execute() {
35
+ const { flags } = await this.parse(TemplateDelete);
36
+ // Check if JSON output mode is active
37
+ const jsonMode = shouldOutputJson(flags);
38
+ // If no type specified, prompt for type first
39
+ let templateType = flags.type;
40
+ if (!templateType) {
41
+ const typeChoices = [
42
+ { name: 'Ticket templates', value: 'ticket' },
43
+ { name: 'Phase templates', value: 'phase' },
44
+ ];
45
+ const typeMessage = 'Which template type would you like to delete?';
46
+ if (jsonMode) {
47
+ outputPromptAsJson(buildPromptConfig('list', 'type', typeMessage, typeChoices), createMetadata('template delete', flags));
48
+ return;
49
+ }
50
+ const { selectedType } = await inquirer.prompt([{
51
+ type: 'list',
52
+ name: 'selectedType',
53
+ message: typeMessage,
54
+ choices: typeChoices,
55
+ }]);
56
+ templateType = selectedType;
57
+ }
58
+ // Get custom templates of the selected type
59
+ let templates = [];
60
+ let typeName = '';
61
+ switch (templateType) {
62
+ case 'ticket': {
63
+ typeName = 'ticket';
64
+ const ticketTemplates = await this.storage.listTicketTemplates({ isBuiltin: false });
65
+ templates = ticketTemplates.map(t => ({ id: t.id, name: t.name }));
66
+ break;
67
+ }
68
+ case 'phase': {
69
+ typeName = 'phase';
70
+ const phaseTemplates = await this.storage.listPhaseTemplates({ isBuiltin: false });
71
+ templates = phaseTemplates.map(t => ({ id: t.id, name: t.name }));
72
+ break;
73
+ }
74
+ }
75
+ if (templates.length === 0) {
76
+ if (jsonMode) {
77
+ outputErrorAsJson('NO_TEMPLATES', `No custom ${typeName} templates to delete.`, createMetadata('template delete', flags));
78
+ this.exit(1);
79
+ }
80
+ this.log(styles.muted(`\nNo custom ${typeName} templates to delete.`));
81
+ return;
82
+ }
83
+ // Build choices for template selection
84
+ const templateChoices = templates.map(t => ({
85
+ name: t.name,
86
+ value: t.id,
87
+ }));
88
+ const message = `Select ${typeName} templates to delete:`;
89
+ // In JSON mode, output template selection prompt
90
+ if (jsonMode) {
91
+ outputPromptAsJson(buildPromptConfig('checkbox', 'templateIds', message, templateChoices), createMetadata('template delete', flags));
92
+ return;
93
+ }
94
+ // Select templates to delete
95
+ const { selected } = await inquirer.prompt([{
96
+ type: 'checkbox',
97
+ name: 'selected',
98
+ message,
99
+ choices: templateChoices,
100
+ }]);
101
+ if (selected.length === 0) {
102
+ this.log(styles.muted('\nNo templates selected.'));
103
+ return;
104
+ }
105
+ // Confirm deletion
106
+ if (!flags.force) {
107
+ const { confirm } = await inquirer.prompt([{
108
+ type: 'list',
109
+ name: 'confirm',
110
+ message: `Delete ${selected.length} ${typeName} template(s)?`,
111
+ choices: [
112
+ { name: 'No', value: false },
113
+ { name: 'Yes', value: true },
114
+ ],
115
+ default: 0,
116
+ }]);
117
+ if (!confirm) {
118
+ this.log(styles.muted('Cancelled.'));
119
+ return;
120
+ }
121
+ }
122
+ // Delete selected templates
123
+ let deleted = 0;
124
+ for (const id of selected) {
125
+ try {
126
+ switch (templateType) {
127
+ case 'ticket':
128
+ await this.storage.deleteTicketTemplate(id);
129
+ break;
130
+ case 'phase':
131
+ await this.storage.deletePhaseTemplate(id);
132
+ break;
133
+ }
134
+ deleted++;
135
+ }
136
+ catch (error) {
137
+ this.warn(`Failed to delete "${id}": ${error instanceof Error ? error.message : String(error)}`);
138
+ }
139
+ }
140
+ this.log(styles.success(`\nDeleted ${deleted} ${typeName} template(s)`));
141
+ }
142
+ }
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Template extends Command {
3
+ static description: string;
4
+ static aliases: string[];
5
+ static examples: string[];
6
+ static flags: {
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,64 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import inquirer from 'inquirer';
3
+ import { styles } from '../../lib/styles.js';
4
+ import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
5
+ export default class Template extends Command {
6
+ static description = 'Manage templates (ticket and phase)';
7
+ static aliases = ['templates'];
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ '<%= config.bin %> <%= command.id %> list',
11
+ '<%= config.bin %> <%= command.id %> list --type ticket',
12
+ '<%= config.bin %> <%= command.id %> ticket',
13
+ '<%= config.bin %> <%= command.id %> phase',
14
+ ];
15
+ static flags = {
16
+ json: Flags.boolean({
17
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
18
+ default: false,
19
+ }),
20
+ };
21
+ async run() {
22
+ const { flags } = await this.parse(Template);
23
+ // Check if JSON output mode is active
24
+ const jsonMode = shouldOutputJson(flags);
25
+ // Define choices once, use for both JSON and interactive modes
26
+ const menuChoices = [
27
+ { name: 'List all templates', value: 'list' },
28
+ new inquirer.Separator(),
29
+ { name: 'Ticket templates (ticket presets)', value: 'ticket' },
30
+ { name: 'Phase templates (project phases)', value: 'phase' },
31
+ ];
32
+ const message = 'What would you like to do?';
33
+ // In JSON mode, output menu prompt (without separators)
34
+ if (jsonMode) {
35
+ const jsonChoices = [
36
+ { name: 'List all templates', value: 'list' },
37
+ { name: 'Ticket templates (ticket presets)', value: 'ticket' },
38
+ { name: 'Phase templates (project phases)', value: 'phase' },
39
+ ];
40
+ outputPromptAsJson(buildPromptConfig('list', 'action', message, jsonChoices), createMetadata('template', flags));
41
+ return;
42
+ }
43
+ this.log('');
44
+ this.log(styles.header('Templates'));
45
+ this.log('');
46
+ const { action } = await inquirer.prompt([{
47
+ type: 'list',
48
+ name: 'action',
49
+ message,
50
+ choices: menuChoices,
51
+ }]);
52
+ switch (action) {
53
+ case 'list':
54
+ await this.config.runCommand('template:list', []);
55
+ break;
56
+ case 'ticket':
57
+ await this.config.runCommand('template:ticket', []);
58
+ break;
59
+ case 'phase':
60
+ await this.config.runCommand('template:phase', []);
61
+ break;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,18 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class TemplateList extends PMOCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ builtin: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ custom: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ protected getPMOOptions(): {
13
+ promptIfMultiple: boolean;
14
+ };
15
+ execute(): Promise<void>;
16
+ private printTicketTemplates;
17
+ private printPhaseTemplates;
18
+ }
@@ -0,0 +1,157 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { styles } from '../../lib/styles.js';
4
+ export default class TemplateList extends PMOCommand {
5
+ static description = 'List all templates (ticket and phase)';
6
+ static examples = [
7
+ '<%= config.bin %> <%= command.id %>',
8
+ '<%= config.bin %> <%= command.id %> --type ticket',
9
+ '<%= config.bin %> <%= command.id %> --type phase',
10
+ '<%= config.bin %> <%= command.id %> --builtin',
11
+ '<%= config.bin %> <%= command.id %> --json',
12
+ ];
13
+ static flags = {
14
+ ...pmoBaseFlags,
15
+ type: Flags.string({
16
+ char: 't',
17
+ description: 'Filter by template type',
18
+ options: ['ticket', 'phase'],
19
+ }),
20
+ builtin: Flags.boolean({
21
+ description: 'Show only built-in templates',
22
+ exclusive: ['custom'],
23
+ }),
24
+ custom: Flags.boolean({
25
+ description: 'Show only custom templates',
26
+ exclusive: ['builtin'],
27
+ }),
28
+ json: Flags.boolean({
29
+ description: 'Output as JSON',
30
+ default: false,
31
+ }),
32
+ };
33
+ getPMOOptions() {
34
+ return { promptIfMultiple: false };
35
+ }
36
+ async execute() {
37
+ const { flags } = await this.parse(TemplateList);
38
+ let builtinFilter;
39
+ if (flags.builtin)
40
+ builtinFilter = { isBuiltin: true };
41
+ if (flags.custom)
42
+ builtinFilter = { isBuiltin: false };
43
+ const typeFilter = flags.type;
44
+ const showTicket = !typeFilter || typeFilter === 'ticket';
45
+ const showPhase = !typeFilter || typeFilter === 'phase';
46
+ // Fetch all requested template types
47
+ const [ticketTemplates, phaseTemplates] = await Promise.all([
48
+ showTicket ? this.storage.listTicketTemplates(builtinFilter) : Promise.resolve([]),
49
+ showPhase ? this.storage.listPhaseTemplates(builtinFilter) : Promise.resolve([]),
50
+ ]);
51
+ if (flags.json) {
52
+ const result = {};
53
+ if (showTicket)
54
+ result.ticket = ticketTemplates;
55
+ if (showPhase)
56
+ result.phase = phaseTemplates;
57
+ this.log(JSON.stringify(result, null, 2));
58
+ return;
59
+ }
60
+ const totalCount = ticketTemplates.length + phaseTemplates.length;
61
+ if (totalCount === 0) {
62
+ this.log(styles.muted('\nNo templates found.'));
63
+ return;
64
+ }
65
+ this.log(`\n${styles.emphasis('Templates')}`);
66
+ this.log('═'.repeat(60));
67
+ // Ticket templates
68
+ if (showTicket && ticketTemplates.length > 0) {
69
+ this.log(`\n${styles.emphasis('Ticket Templates')} ${styles.muted(`(${ticketTemplates.length})`)}`);
70
+ this.log('─'.repeat(40));
71
+ this.printTicketTemplates(ticketTemplates, flags.builtin, flags.custom);
72
+ }
73
+ // Phase templates
74
+ if (showPhase && phaseTemplates.length > 0) {
75
+ this.log(`\n${styles.emphasis('Phase Templates')} ${styles.muted(`(${phaseTemplates.length})`)}`);
76
+ this.log('─'.repeat(40));
77
+ this.printPhaseTemplates(phaseTemplates, flags.builtin, flags.custom);
78
+ }
79
+ this.log('');
80
+ this.log(styles.muted('Commands:'));
81
+ if (showTicket)
82
+ this.log(styles.muted(' prlt template ticket apply <id> - Create ticket from template'));
83
+ if (showPhase)
84
+ this.log(styles.muted(' prlt template phase apply <id> - Apply phase template'));
85
+ this.log(styles.muted(' prlt workflow list - List available workflows'));
86
+ this.log('');
87
+ }
88
+ printTicketTemplates(templates, onlyBuiltin, onlyCustom) {
89
+ const builtinTemplates = templates.filter(t => t.isBuiltin);
90
+ const customTemplates = templates.filter(t => !t.isBuiltin);
91
+ const printOne = (template) => {
92
+ this.log(` ${styles.emphasis(template.name)} ${styles.muted(`(${template.id})`)}`);
93
+ if (template.description) {
94
+ this.log(` ${styles.muted(template.description)}`);
95
+ }
96
+ const details = [];
97
+ if (template.defaultPriority)
98
+ details.push(`Priority: ${template.defaultPriority}`);
99
+ if (template.defaultCategory)
100
+ details.push(`Category: ${template.defaultCategory}`);
101
+ if (template.suggestedSubtasks.length > 0)
102
+ details.push(`Subtasks: ${template.suggestedSubtasks.length}`);
103
+ if (details.length > 0) {
104
+ this.log(` ${styles.muted(details.join(' | '))}`);
105
+ }
106
+ };
107
+ if (builtinTemplates.length > 0 && !onlyCustom) {
108
+ for (const template of builtinTemplates)
109
+ printOne(template);
110
+ }
111
+ if (customTemplates.length > 0 && !onlyBuiltin) {
112
+ if (builtinTemplates.length > 0 && !onlyCustom)
113
+ this.log('');
114
+ for (const template of customTemplates)
115
+ printOne(template);
116
+ }
117
+ }
118
+ printPhaseTemplates(templates, onlyBuiltin, onlyCustom) {
119
+ const builtinTemplates = templates.filter(t => t.isBuiltin);
120
+ const customTemplates = templates.filter(t => !t.isBuiltin);
121
+ const categoryEmoji = {
122
+ triage: '📬',
123
+ backlog: '📥',
124
+ unstarted: '📋',
125
+ started: '🚀',
126
+ completed: '✅',
127
+ canceled: '🚫',
128
+ };
129
+ const printOne = (template) => {
130
+ this.log(` ${styles.emphasis(template.name)} ${styles.muted(`(${template.id})`)}`);
131
+ if (template.description) {
132
+ this.log(` ${styles.muted(template.description)}`);
133
+ }
134
+ const phasesByCategory = new Map();
135
+ for (const phase of template.phases) {
136
+ const existing = phasesByCategory.get(phase.category) || [];
137
+ existing.push(phase.name);
138
+ phasesByCategory.set(phase.category, existing);
139
+ }
140
+ const phaseParts = [];
141
+ for (const [category, names] of phasesByCategory) {
142
+ phaseParts.push(`${categoryEmoji[category]} ${names.join(', ')}`);
143
+ }
144
+ this.log(` ${styles.muted(phaseParts.join(' → '))}`);
145
+ };
146
+ if (builtinTemplates.length > 0 && !onlyCustom) {
147
+ for (const template of builtinTemplates)
148
+ printOne(template);
149
+ }
150
+ if (customTemplates.length > 0 && !onlyBuiltin) {
151
+ if (builtinTemplates.length > 0 && !onlyCustom)
152
+ this.log('');
153
+ for (const template of customTemplates)
154
+ printOne(template);
155
+ }
156
+ }
157
+ }
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TemplatePhaseApply extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ template: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,41 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ export default class TemplatePhaseApply extends Command {
3
+ static description = 'Apply a phase template to a project';
4
+ static examples = [
5
+ '<%= config.bin %> <%= command.id %> agile',
6
+ '<%= config.bin %> <%= command.id %> waterfall --project my-project',
7
+ '<%= config.bin %> <%= command.id %> agile --force',
8
+ ];
9
+ static args = {
10
+ template: Args.string({
11
+ description: 'Phase template ID to apply',
12
+ required: true,
13
+ }),
14
+ };
15
+ static flags = {
16
+ project: Flags.string({
17
+ char: 'p',
18
+ description: 'Project ID or name',
19
+ }),
20
+ force: Flags.boolean({
21
+ char: 'f',
22
+ description: 'Skip confirmation prompt (will replace existing phases)',
23
+ default: false,
24
+ }),
25
+ json: Flags.boolean({
26
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
27
+ default: false,
28
+ }),
29
+ };
30
+ async run() {
31
+ const { args, flags } = await this.parse(TemplatePhaseApply);
32
+ const cmdArgs = [args.template];
33
+ if (flags.project)
34
+ cmdArgs.push('--project', flags.project);
35
+ if (flags.force)
36
+ cmdArgs.push('--force');
37
+ if (flags.json)
38
+ cmdArgs.push('--json');
39
+ await this.config.runCommand('phase:template:apply', cmdArgs);
40
+ }
41
+ }
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TemplatePhaseCreate extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,29 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ export default class TemplatePhaseCreate extends Command {
3
+ static description = 'Create a new phase template';
4
+ static examples = [
5
+ '<%= config.bin %> <%= command.id %> "My Phases"',
6
+ '<%= config.bin %> <%= command.id %> "Sprint Phases" --description "Agile sprint phases"',
7
+ ];
8
+ static args = {
9
+ name: Args.string({
10
+ description: 'Name for the new template',
11
+ required: false,
12
+ }),
13
+ };
14
+ static flags = {
15
+ description: Flags.string({
16
+ char: 'd',
17
+ description: 'Template description',
18
+ }),
19
+ };
20
+ async run() {
21
+ const { args, flags } = await this.parse(TemplatePhaseCreate);
22
+ const cmdArgs = [];
23
+ if (args.name)
24
+ cmdArgs.push(args.name);
25
+ if (flags.description)
26
+ cmdArgs.push('--description', flags.description);
27
+ await this.config.runCommand('phase:template:create', cmdArgs);
28
+ }
29
+ }
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TemplatePhaseDelete extends Command {
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
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,34 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ export default class TemplatePhaseDelete extends Command {
3
+ static description = 'Delete a phase template';
4
+ static examples = [
5
+ '<%= config.bin %> <%= command.id %> my-template',
6
+ '<%= config.bin %> <%= command.id %> my-template --force',
7
+ ];
8
+ static args = {
9
+ id: Args.string({
10
+ description: 'Template ID to delete',
11
+ required: true,
12
+ }),
13
+ };
14
+ static flags = {
15
+ force: Flags.boolean({
16
+ char: 'f',
17
+ description: 'Skip confirmation',
18
+ default: false,
19
+ }),
20
+ json: Flags.boolean({
21
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
22
+ default: false,
23
+ }),
24
+ };
25
+ async run() {
26
+ const { args, flags } = await this.parse(TemplatePhaseDelete);
27
+ const cmdArgs = [args.id];
28
+ if (flags.force)
29
+ cmdArgs.push('--force');
30
+ if (flags.json)
31
+ cmdArgs.push('--json');
32
+ await this.config.runCommand('phase:template:delete', cmdArgs);
33
+ }
34
+ }
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TemplatePhase extends Command {
3
+ static description: string;
4
+ static aliases: string[];
5
+ static examples: string[];
6
+ static flags: {
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ }
@@ -0,0 +1,62 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import inquirer from 'inquirer';
3
+ import { styles } from '../../../lib/styles.js';
4
+ import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../../lib/prompt-json.js';
5
+ export default class TemplatePhase extends Command {
6
+ static description = 'Manage phase templates (project lifecycle phases)';
7
+ static aliases = ['template:phases'];
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ '<%= config.bin %> <%= command.id %> list',
11
+ '<%= config.bin %> <%= command.id %> apply agile',
12
+ '<%= config.bin %> <%= command.id %> create "My Phases"',
13
+ ];
14
+ static flags = {
15
+ json: Flags.boolean({
16
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
17
+ default: false,
18
+ }),
19
+ };
20
+ async run() {
21
+ const { flags } = await this.parse(TemplatePhase);
22
+ const jsonMode = shouldOutputJson(flags);
23
+ const menuChoices = [
24
+ { name: 'List phase templates', value: 'list' },
25
+ { name: 'Apply a phase template to project', value: 'apply' },
26
+ { name: 'Create a new phase template', value: 'create' },
27
+ { name: 'Update a phase template', value: 'update' },
28
+ { name: 'Delete a phase template', value: 'delete' },
29
+ ];
30
+ const message = 'What would you like to do?';
31
+ if (jsonMode) {
32
+ outputPromptAsJson(buildPromptConfig('list', 'action', message, menuChoices), createMetadata('template phase', flags));
33
+ return;
34
+ }
35
+ this.log('');
36
+ this.log(styles.header('Phase Templates'));
37
+ this.log('');
38
+ const { action } = await inquirer.prompt([{
39
+ type: 'list',
40
+ name: 'action',
41
+ message,
42
+ choices: menuChoices.map(c => ({ name: c.name, value: c.value })),
43
+ }]);
44
+ switch (action) {
45
+ case 'list':
46
+ await this.config.runCommand('template:phase:list', []);
47
+ break;
48
+ case 'apply':
49
+ await this.config.runCommand('phase:template:apply', []);
50
+ break;
51
+ case 'create':
52
+ await this.config.runCommand('phase:template:create', []);
53
+ break;
54
+ case 'update':
55
+ await this.config.runCommand('phase:template:update', []);
56
+ break;
57
+ case 'delete':
58
+ await this.config.runCommand('phase:template:delete', []);
59
+ break;
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,11 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class TemplatePhaseList extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ builtin: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ custom: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
@@ -0,0 +1,34 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ export default class TemplatePhaseList extends Command {
3
+ static description = 'List phase templates';
4
+ static examples = [
5
+ '<%= config.bin %> <%= command.id %>',
6
+ '<%= config.bin %> <%= command.id %> --builtin',
7
+ '<%= config.bin %> <%= command.id %> --json',
8
+ ];
9
+ static flags = {
10
+ builtin: Flags.boolean({
11
+ description: 'Show only built-in templates',
12
+ exclusive: ['custom'],
13
+ }),
14
+ custom: Flags.boolean({
15
+ description: 'Show only custom templates',
16
+ exclusive: ['builtin'],
17
+ }),
18
+ json: Flags.boolean({
19
+ description: 'Output as JSON',
20
+ default: false,
21
+ }),
22
+ };
23
+ async run() {
24
+ const { flags } = await this.parse(TemplatePhaseList);
25
+ const args = [];
26
+ if (flags.builtin)
27
+ args.push('--builtin');
28
+ if (flags.custom)
29
+ args.push('--custom');
30
+ if (flags.json)
31
+ args.push('--json');
32
+ await this.config.runCommand('phase:template:list', args);
33
+ }
34
+ }