@proletariat/cli 0.2.0 → 0.3.0

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 +512 -253
  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,499 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { execSync } from 'child_process';
3
+ import inquirer from 'inquirer';
4
+ import { validateBranchName } from '../lib/branch/index.js';
5
+ import { styles } from '../lib/styles.js';
6
+ import { shouldOutputJson, outputPromptAsJson, outputErrorAsJson, createMetadata, buildPromptConfig, } from '../lib/prompt-json.js';
7
+ /**
8
+ * Commit message format presets.
9
+ */
10
+ export const COMMIT_FORMATS = {
11
+ 'conventional': {
12
+ description: 'Conventional commits with ticket as scope',
13
+ example: '{type}(TKT-ID): {message}',
14
+ format: (ctx) => ctx.ticketId ? `${ctx.type}(${ctx.ticketId}): ${ctx.message}` : `${ctx.type}: ${ctx.message}`,
15
+ },
16
+ 'full-context': {
17
+ description: 'Ticket, type, and agent prefix',
18
+ example: 'TKT-ID/{type}/{agent}: {message}',
19
+ format: (ctx) => {
20
+ if (ctx.ticketId && ctx.agent)
21
+ return `${ctx.ticketId}/${ctx.type}/${ctx.agent}: ${ctx.message}`;
22
+ if (ctx.ticketId)
23
+ return `${ctx.ticketId}/${ctx.type}: ${ctx.message}`;
24
+ return `${ctx.type}: ${ctx.message}`;
25
+ },
26
+ },
27
+ 'ticket-first': {
28
+ description: 'Ticket ID first, then type',
29
+ example: 'TKT-ID: {type}: {message}',
30
+ format: (ctx) => ctx.ticketId ? `${ctx.ticketId}: ${ctx.type}: ${ctx.message}` : `${ctx.type}: ${ctx.message}`,
31
+ },
32
+ 'with-agent': {
33
+ description: 'Ticket and agent prefix',
34
+ example: 'TKT-ID/{agent}: {message}',
35
+ format: (ctx) => {
36
+ if (ctx.ticketId && ctx.agent)
37
+ return `${ctx.ticketId}/${ctx.agent}: ${ctx.message}`;
38
+ if (ctx.ticketId)
39
+ return `${ctx.ticketId}: ${ctx.message}`;
40
+ return ctx.message;
41
+ },
42
+ },
43
+ 'ticket-suffix': {
44
+ description: 'Type first, ticket at end in brackets',
45
+ example: '{type}: {message} [TKT-ID]',
46
+ format: (ctx) => ctx.ticketId ? `${ctx.type}: ${ctx.message} [${ctx.ticketId}]` : `${ctx.type}: ${ctx.message}`,
47
+ },
48
+ 'ticket-only': {
49
+ description: 'Just ticket ID prefix, no type',
50
+ example: 'TKT-ID: {message}',
51
+ format: (ctx) => ctx.ticketId ? `${ctx.ticketId}: ${ctx.message}` : ctx.message,
52
+ },
53
+ 'simple': {
54
+ description: 'Type and message only, no ticket',
55
+ example: '{type}: {message}',
56
+ format: (ctx) => `${ctx.type}: ${ctx.message}`,
57
+ },
58
+ };
59
+ export const DEFAULT_COMMIT_FORMAT = 'conventional';
60
+ /**
61
+ * Get current git branch name.
62
+ */
63
+ function getCurrentBranch(cwd) {
64
+ try {
65
+ return execSync('git rev-parse --abbrev-ref HEAD', {
66
+ cwd,
67
+ encoding: 'utf-8',
68
+ stdio: ['pipe', 'pipe', 'pipe'],
69
+ }).trim();
70
+ }
71
+ catch {
72
+ return undefined;
73
+ }
74
+ }
75
+ /**
76
+ * Get git status - staged, unstaged, and untracked files.
77
+ */
78
+ function getGitStatus() {
79
+ const result = { staged: [], unstaged: [], untracked: [] };
80
+ try {
81
+ // Get staged files
82
+ const staged = execSync('git diff --cached --name-only', {
83
+ encoding: 'utf-8',
84
+ stdio: ['pipe', 'pipe', 'pipe'],
85
+ }).trim();
86
+ if (staged)
87
+ result.staged = staged.split('\n').filter(Boolean);
88
+ // Get unstaged modified files
89
+ const unstaged = execSync('git diff --name-only', {
90
+ encoding: 'utf-8',
91
+ stdio: ['pipe', 'pipe', 'pipe'],
92
+ }).trim();
93
+ if (unstaged)
94
+ result.unstaged = unstaged.split('\n').filter(Boolean);
95
+ // Get untracked files
96
+ const untracked = execSync('git ls-files --others --exclude-standard', {
97
+ encoding: 'utf-8',
98
+ stdio: ['pipe', 'pipe', 'pipe'],
99
+ }).trim();
100
+ if (untracked)
101
+ result.untracked = untracked.split('\n').filter(Boolean);
102
+ }
103
+ catch {
104
+ // Return empty status on error
105
+ }
106
+ return result;
107
+ }
108
+ /**
109
+ * Stage specific files.
110
+ */
111
+ function stageFiles(files) {
112
+ if (files.length === 0)
113
+ return;
114
+ // Quote each file path to handle spaces
115
+ const quotedFiles = files.map(f => `"${f}"`).join(' ');
116
+ execSync(`git add ${quotedFiles}`, { stdio: 'pipe' });
117
+ }
118
+ /**
119
+ * Stage all changes.
120
+ */
121
+ function stageAll() {
122
+ execSync('git add -A', { stdio: 'pipe' });
123
+ }
124
+ /**
125
+ * Map branch type to conventional commit type.
126
+ * Some branch types use different names for commits.
127
+ */
128
+ function branchTypeToCommitType(branchType) {
129
+ const mapping = {
130
+ rfct: 'refactor',
131
+ sec: 'security',
132
+ db: 'db',
133
+ rel: 'release',
134
+ // Founder types map to chore
135
+ ship: 'chore',
136
+ grow: 'chore',
137
+ cx: 'chore',
138
+ strat: 'chore',
139
+ ops: 'chore',
140
+ };
141
+ return mapping[branchType] || branchType;
142
+ }
143
+ export default class Commit extends Command {
144
+ static description = 'Create a commit with ticket ID from branch name';
145
+ static examples = [
146
+ '<%= config.bin %> <%= command.id %> # interactive mode',
147
+ '<%= config.bin %> <%= command.id %> "add user authentication" # commit staged files',
148
+ '<%= config.bin %> <%= command.id %> -a "update dependencies" # stage all + commit',
149
+ '<%= config.bin %> <%= command.id %> -s src/foo.ts "add feature" # stage specific file + commit',
150
+ '<%= config.bin %> <%= command.id %> -t fix "resolve bug" # override type',
151
+ '<%= config.bin %> <%= command.id %> -T TKT-099 "add feature" # override ticket ID',
152
+ '<%= config.bin %> <%= command.id %> -f full-context "add login" # use specific format',
153
+ '<%= config.bin %> <%= command.id %> --formats # list available formats',
154
+ ];
155
+ static args = {
156
+ message: Args.string({
157
+ description: 'Commit message (without type/scope prefix)',
158
+ required: false,
159
+ }),
160
+ };
161
+ static flags = {
162
+ format: Flags.string({
163
+ char: 'f',
164
+ description: 'Commit message format preset',
165
+ options: Object.keys(COMMIT_FORMATS),
166
+ }),
167
+ formats: Flags.boolean({
168
+ description: 'List available format presets',
169
+ default: false,
170
+ }),
171
+ type: Flags.string({
172
+ char: 't',
173
+ description: 'Override commit type (feat, fix, docs, etc.)',
174
+ }),
175
+ ticket: Flags.string({
176
+ char: 'T',
177
+ description: 'Override ticket ID (default: parsed from branch)',
178
+ }),
179
+ all: Flags.boolean({
180
+ char: 'a',
181
+ description: 'Stage all changes before committing (git add -A)',
182
+ default: false,
183
+ }),
184
+ stage: Flags.string({
185
+ char: 's',
186
+ description: 'Stage specific files before committing (can be used multiple times)',
187
+ multiple: true,
188
+ }),
189
+ 'dry-run': Flags.boolean({
190
+ description: 'Show what would be committed without committing',
191
+ default: false,
192
+ }),
193
+ json: Flags.boolean({
194
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
195
+ default: false,
196
+ }),
197
+ };
198
+ async run() {
199
+ const { args, flags } = await this.parse(Commit);
200
+ // Check if JSON output mode is active
201
+ const jsonMode = shouldOutputJson(flags);
202
+ // Helper to handle errors in JSON mode
203
+ const handleError = (code, message) => {
204
+ if (jsonMode) {
205
+ outputErrorAsJson(code, message, createMetadata('commit', flags));
206
+ this.exit(1);
207
+ }
208
+ this.error(message);
209
+ };
210
+ // List formats if requested
211
+ if (flags.formats) {
212
+ this.log(styles.header('Available commit formats:'));
213
+ this.log('');
214
+ for (const [name, preset] of Object.entries(COMMIT_FORMATS)) {
215
+ const isDefault = name === DEFAULT_COMMIT_FORMAT;
216
+ this.log(` ${styles.code(name)}${isDefault ? ' (default)' : ''}`);
217
+ this.log(` ${preset.description}`);
218
+ this.log(` Example: ${styles.muted(preset.example)}`);
219
+ this.log('');
220
+ }
221
+ return;
222
+ }
223
+ // Get current branch first (needed for dynamic examples)
224
+ const branch = getCurrentBranch();
225
+ if (!branch) {
226
+ return handleError('NOT_GIT_REPO', 'Not in a git repository or could not determine current branch');
227
+ }
228
+ // Parse branch name
229
+ const validation = validateBranchName(branch);
230
+ if (!validation.valid || !validation.parts) {
231
+ return handleError('INVALID_BRANCH_NAME', `Could not parse branch name: ${branch}. Expected format: {ticketId}/{type}/{owner}/{agent}/{description}. Example: TKT-053/feat/chris/bezos/add-login. Use -t to specify commit type manually.`);
232
+ }
233
+ const { type: branchType, ticketId: branchTicketId, agent } = validation.parts;
234
+ // Get ticket ID (from flag or branch)
235
+ const ticketId = flags.ticket || branchTicketId;
236
+ // Get commit type (from flag or branch)
237
+ const commitType = flags.type || branchTypeToCommitType(branchType);
238
+ // Validate commit type if overridden
239
+ if (flags.type) {
240
+ const validTypes = ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert'];
241
+ if (!validTypes.includes(flags.type)) {
242
+ this.error(`Invalid commit type: ${flags.type}\n\n` +
243
+ `Valid types: ${validTypes.join(', ')}`);
244
+ }
245
+ }
246
+ // Stage specific files if --stage flag is used
247
+ if (flags.stage && flags.stage.length > 0) {
248
+ try {
249
+ stageFiles(flags.stage);
250
+ }
251
+ catch (error) {
252
+ this.error(`Failed to stage files: ${error}`);
253
+ }
254
+ }
255
+ // Interactive mode if no message provided
256
+ const isInteractive = !args.message;
257
+ let message = args.message;
258
+ let selectedFormat = flags.format;
259
+ if (isInteractive) {
260
+ // Show git status and handle staging interactively (unless --all or --stage flags are set)
261
+ if (!flags.all && !flags.stage) {
262
+ const status = getGitStatus();
263
+ const hasStaged = status.staged.length > 0;
264
+ const hasUnstaged = status.unstaged.length > 0;
265
+ const hasUntracked = status.untracked.length > 0;
266
+ const hasChanges = hasStaged || hasUnstaged || hasUntracked;
267
+ if (!hasChanges) {
268
+ return handleError('NO_CHANGES', 'No changes to commit. Working tree is clean.');
269
+ }
270
+ // In JSON mode, output the staging action prompt first
271
+ if (jsonMode) {
272
+ const stagingChoicesJson = [];
273
+ if (hasStaged) {
274
+ stagingChoicesJson.push({
275
+ name: `Commit staged only (${status.staged.length} file${status.staged.length === 1 ? '' : 's'})`,
276
+ value: 'staged',
277
+ });
278
+ }
279
+ if (hasUnstaged || hasUntracked) {
280
+ const totalUnstaged = status.unstaged.length + status.untracked.length;
281
+ stagingChoicesJson.push({
282
+ name: `Add all & commit (${totalUnstaged} unstaged + ${status.staged.length} staged)`,
283
+ value: 'all',
284
+ });
285
+ stagingChoicesJson.push({
286
+ name: 'Select files to add...',
287
+ value: 'select',
288
+ });
289
+ }
290
+ stagingChoicesJson.push({ name: 'Cancel', value: 'cancel' });
291
+ outputPromptAsJson(buildPromptConfig('list', 'stagingAction', 'What would you like to commit?', stagingChoicesJson), createMetadata('commit', flags));
292
+ return;
293
+ }
294
+ // Build status display
295
+ this.log('');
296
+ if (hasStaged) {
297
+ this.log(styles.success(` Staged (${status.staged.length}):`));
298
+ for (const file of status.staged.slice(0, 5)) {
299
+ this.log(styles.success(` ✓ ${file}`));
300
+ }
301
+ if (status.staged.length > 5) {
302
+ this.log(styles.muted(` ... and ${status.staged.length - 5} more`));
303
+ }
304
+ }
305
+ if (hasUnstaged) {
306
+ this.log(styles.warning(` Modified (${status.unstaged.length}):`));
307
+ for (const file of status.unstaged.slice(0, 5)) {
308
+ this.log(styles.warning(` ○ ${file}`));
309
+ }
310
+ if (status.unstaged.length > 5) {
311
+ this.log(styles.muted(` ... and ${status.unstaged.length - 5} more`));
312
+ }
313
+ }
314
+ if (hasUntracked) {
315
+ this.log(styles.muted(` Untracked (${status.untracked.length}):`));
316
+ for (const file of status.untracked.slice(0, 5)) {
317
+ this.log(styles.muted(` ? ${file}`));
318
+ }
319
+ if (status.untracked.length > 5) {
320
+ this.log(styles.muted(` ... and ${status.untracked.length - 5} more`));
321
+ }
322
+ }
323
+ this.log('');
324
+ const stagingChoices = [];
325
+ if (hasStaged) {
326
+ stagingChoices.push({
327
+ name: `Commit staged only (${status.staged.length} file${status.staged.length === 1 ? '' : 's'})`,
328
+ value: 'staged',
329
+ });
330
+ }
331
+ if (hasUnstaged || hasUntracked) {
332
+ const totalUnstaged = status.unstaged.length + status.untracked.length;
333
+ stagingChoices.push({
334
+ name: `Add all & commit (${totalUnstaged} unstaged + ${status.staged.length} staged)`,
335
+ value: 'all',
336
+ });
337
+ stagingChoices.push({
338
+ name: 'Select files to add...',
339
+ value: 'select',
340
+ });
341
+ }
342
+ stagingChoices.push({ name: 'Cancel', value: 'cancel' });
343
+ const { stagingAction } = await inquirer.prompt([
344
+ {
345
+ type: 'list',
346
+ name: 'stagingAction',
347
+ message: 'What would you like to commit?',
348
+ choices: stagingChoices,
349
+ },
350
+ ]);
351
+ if (stagingAction === 'cancel') {
352
+ this.log(styles.muted('Cancelled.'));
353
+ return;
354
+ }
355
+ if (stagingAction === 'all') {
356
+ stageAll();
357
+ this.log(styles.success('Staged all changes.'));
358
+ }
359
+ else if (stagingAction === 'select') {
360
+ // Let user select files to stage
361
+ const allUnstaged = [...status.unstaged, ...status.untracked];
362
+ const { filesToStage } = await inquirer.prompt([
363
+ {
364
+ type: 'checkbox',
365
+ name: 'filesToStage',
366
+ message: 'Select files to stage:',
367
+ choices: allUnstaged.map(file => ({
368
+ name: file,
369
+ value: file,
370
+ checked: false,
371
+ })),
372
+ },
373
+ ]);
374
+ if (filesToStage.length > 0) {
375
+ stageFiles(filesToStage);
376
+ this.log(styles.success(`Staged ${filesToStage.length} file${filesToStage.length === 1 ? '' : 's'}.`));
377
+ }
378
+ // Verify we have something to commit
379
+ const newStatus = getGitStatus();
380
+ if (newStatus.staged.length === 0) {
381
+ this.error('No staged changes to commit.');
382
+ }
383
+ }
384
+ else if (stagingAction === 'staged' && !hasStaged) {
385
+ this.error('No staged changes to commit.');
386
+ }
387
+ }
388
+ // Prompt for format if not specified - show dynamic examples based on current branch
389
+ if (!selectedFormat) {
390
+ // Use real values if available, otherwise show placeholder examples
391
+ const exampleCtx = {
392
+ type: commitType,
393
+ ticketId: ticketId || 'TKT-##',
394
+ agent: agent || 'agent',
395
+ message: 'message',
396
+ };
397
+ const formatChoices = Object.entries(COMMIT_FORMATS).map(([name, preset]) => ({
398
+ name: `${name}${name === DEFAULT_COMMIT_FORMAT ? ' (default)' : ''} → ${preset.format(exampleCtx)}`,
399
+ value: name,
400
+ }));
401
+ // In JSON mode, output format selection prompt
402
+ if (jsonMode) {
403
+ outputPromptAsJson(buildPromptConfig('list', 'format', 'Commit format:', formatChoices), createMetadata('commit', flags));
404
+ return;
405
+ }
406
+ const { chosenFormat } = await inquirer.prompt([
407
+ {
408
+ type: 'list',
409
+ name: 'chosenFormat',
410
+ message: 'Commit format:',
411
+ choices: formatChoices,
412
+ default: DEFAULT_COMMIT_FORMAT,
413
+ },
414
+ ]);
415
+ selectedFormat = chosenFormat;
416
+ }
417
+ // In JSON mode with format specified, output message input prompt
418
+ if (jsonMode) {
419
+ outputPromptAsJson(buildPromptConfig('input', 'message', 'Commit message:', []), createMetadata('commit', flags));
420
+ return;
421
+ }
422
+ // Prompt for message
423
+ const { inputMessage } = await inquirer.prompt([
424
+ {
425
+ type: 'input',
426
+ name: 'inputMessage',
427
+ message: 'Commit message:',
428
+ validate: (input) => input.trim() ? true : 'Message cannot be empty',
429
+ },
430
+ ]);
431
+ message = inputMessage.trim();
432
+ }
433
+ // Get format preset
434
+ const formatName = (selectedFormat || DEFAULT_COMMIT_FORMAT);
435
+ const formatPreset = COMMIT_FORMATS[formatName];
436
+ // Build commit message using format preset
437
+ const commitMessage = formatPreset.format({
438
+ type: commitType,
439
+ ticketId,
440
+ agent,
441
+ message: message,
442
+ });
443
+ // Dry run - just show what would happen
444
+ if (flags['dry-run']) {
445
+ this.log(styles.header('Dry run - would commit:'));
446
+ this.log('');
447
+ this.log(` ${styles.code(commitMessage)}`);
448
+ this.log('');
449
+ this.log(styles.muted(`Branch: ${branch}`));
450
+ this.log(styles.muted(`Format: ${formatName}`));
451
+ this.log(styles.muted(`Type: ${commitType} (from ${branchType})`));
452
+ if (ticketId) {
453
+ this.log(styles.muted(`Ticket: ${ticketId}`));
454
+ }
455
+ if (agent) {
456
+ this.log(styles.muted(`Agent: ${agent}`));
457
+ }
458
+ return;
459
+ }
460
+ // Stage all changes if requested
461
+ if (flags.all) {
462
+ try {
463
+ execSync('git add -A', { stdio: 'pipe' });
464
+ }
465
+ catch (error) {
466
+ this.error(`Failed to stage changes: ${error}`);
467
+ }
468
+ }
469
+ // Check if there are staged changes
470
+ try {
471
+ const staged = execSync('git diff --cached --name-only', {
472
+ encoding: 'utf-8',
473
+ stdio: ['pipe', 'pipe', 'pipe'],
474
+ }).trim();
475
+ if (!staged) {
476
+ this.error('No staged changes to commit.\n\n' +
477
+ 'Stage your changes first:\n' +
478
+ ' git add <files>\n' +
479
+ ' git add -A\n\n' +
480
+ 'Or use --all flag:\n' +
481
+ ' prlt commit --all "your message"');
482
+ }
483
+ }
484
+ catch {
485
+ // Ignore errors checking staged changes
486
+ }
487
+ // Create commit
488
+ try {
489
+ execSync(`git commit -m "${commitMessage.replace(/"/g, '\\"')}"`, {
490
+ stdio: 'inherit',
491
+ });
492
+ this.log('');
493
+ this.log(styles.success(`Committed: ${commitMessage}`));
494
+ }
495
+ catch {
496
+ this.error('Commit failed');
497
+ }
498
+ }
499
+ }
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class DockerClean extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ private findOrphanedContainers;
13
+ }