@proletariat/cli 0.3.71 → 0.3.73

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 (447) hide show
  1. package/dist/commands/action/create.d.ts +6 -2
  2. package/dist/commands/action/create.js +108 -40
  3. package/dist/commands/action/create.js.map +1 -1
  4. package/dist/commands/action/delete.js +1 -1
  5. package/dist/commands/action/delete.js.map +1 -1
  6. package/dist/commands/action/list.d.ts +1 -1
  7. package/dist/commands/action/list.js +12 -10
  8. package/dist/commands/action/list.js.map +1 -1
  9. package/dist/commands/action/run.js +3 -3
  10. package/dist/commands/action/run.js.map +1 -1
  11. package/dist/commands/action/show.js +25 -4
  12. package/dist/commands/action/show.js.map +1 -1
  13. package/dist/commands/action/update.d.ts +6 -2
  14. package/dist/commands/action/update.js +131 -53
  15. package/dist/commands/action/update.js.map +1 -1
  16. package/dist/commands/agent/auth.js +4 -0
  17. package/dist/commands/agent/auth.js.map +1 -1
  18. package/dist/commands/agent/cleanup.js +1 -1
  19. package/dist/commands/agent/cleanup.js.map +1 -1
  20. package/dist/commands/agent/discover.js +1 -0
  21. package/dist/commands/agent/discover.js.map +1 -1
  22. package/dist/commands/agent/index.js +2 -0
  23. package/dist/commands/agent/index.js.map +1 -1
  24. package/dist/commands/agent/rebuild.js +1 -1
  25. package/dist/commands/agent/rebuild.js.map +1 -1
  26. package/dist/commands/agent/remove.js +1 -1
  27. package/dist/commands/agent/remove.js.map +1 -1
  28. package/dist/commands/agent/restart.js +1 -1
  29. package/dist/commands/agent/restart.js.map +1 -1
  30. package/dist/commands/agent/visit.js +1 -1
  31. package/dist/commands/agent/visit.js.map +1 -1
  32. package/dist/commands/asana/connect.js +6 -5
  33. package/dist/commands/asana/connect.js.map +1 -1
  34. package/dist/commands/asana/import.js +4 -4
  35. package/dist/commands/asana/import.js.map +1 -1
  36. package/dist/commands/asana/sync.js +3 -3
  37. package/dist/commands/asana/sync.js.map +1 -1
  38. package/dist/commands/autocomplete/setup.js +2 -1
  39. package/dist/commands/autocomplete/setup.js.map +1 -1
  40. package/dist/commands/board/index.js +1 -0
  41. package/dist/commands/board/index.js.map +1 -1
  42. package/dist/commands/board/view.js +1 -1
  43. package/dist/commands/board/view.js.map +1 -1
  44. package/dist/commands/branch/create.js +1 -1
  45. package/dist/commands/branch/create.js.map +1 -1
  46. package/dist/commands/branch/validate.js +2 -0
  47. package/dist/commands/branch/validate.js.map +1 -1
  48. package/dist/commands/branch/where.js +1 -0
  49. package/dist/commands/branch/where.js.map +1 -1
  50. package/dist/commands/category/create.js +3 -0
  51. package/dist/commands/category/create.js.map +1 -1
  52. package/dist/commands/category/delete.js +3 -0
  53. package/dist/commands/category/delete.js.map +1 -1
  54. package/dist/commands/category/rename.js +6 -0
  55. package/dist/commands/category/rename.js.map +1 -1
  56. package/dist/commands/claude/index.js +5 -5
  57. package/dist/commands/claude/index.js.map +1 -1
  58. package/dist/commands/claude/open.js +5 -0
  59. package/dist/commands/claude/open.js.map +1 -1
  60. package/dist/commands/commit.js +1 -1
  61. package/dist/commands/commit.js.map +1 -1
  62. package/dist/commands/config/index.js +6 -1
  63. package/dist/commands/config/index.js.map +1 -1
  64. package/dist/commands/dashboard.js +1 -0
  65. package/dist/commands/dashboard.js.map +1 -1
  66. package/dist/commands/diet.js +1 -0
  67. package/dist/commands/diet.js.map +1 -1
  68. package/dist/commands/docker/clean.js +2 -0
  69. package/dist/commands/docker/clean.js.map +1 -1
  70. package/dist/commands/docker/index.js +1 -0
  71. package/dist/commands/docker/index.js.map +1 -1
  72. package/dist/commands/docker/logs.js +6 -0
  73. package/dist/commands/docker/logs.js.map +1 -1
  74. package/dist/commands/docker/prune.js +1 -0
  75. package/dist/commands/docker/prune.js.map +1 -1
  76. package/dist/commands/docker/restart.js +5 -0
  77. package/dist/commands/docker/restart.js.map +1 -1
  78. package/dist/commands/docker/start.js +4 -0
  79. package/dist/commands/docker/start.js.map +1 -1
  80. package/dist/commands/docker/stop.js +4 -0
  81. package/dist/commands/docker/stop.js.map +1 -1
  82. package/dist/commands/epic/activate.js +1 -1
  83. package/dist/commands/epic/activate.js.map +1 -1
  84. package/dist/commands/epic/archive.js +1 -1
  85. package/dist/commands/epic/archive.js.map +1 -1
  86. package/dist/commands/epic/create.js +4 -0
  87. package/dist/commands/epic/create.js.map +1 -1
  88. package/dist/commands/epic/delete.js +1 -1
  89. package/dist/commands/epic/delete.js.map +1 -1
  90. package/dist/commands/epic/move.js +1 -1
  91. package/dist/commands/epic/move.js.map +1 -1
  92. package/dist/commands/epic/progress.js +1 -0
  93. package/dist/commands/epic/progress.js.map +1 -1
  94. package/dist/commands/epic/project.js +1 -1
  95. package/dist/commands/epic/project.js.map +1 -1
  96. package/dist/commands/epic/reorder.js +1 -1
  97. package/dist/commands/epic/reorder.js.map +1 -1
  98. package/dist/commands/epic/spec.js +1 -1
  99. package/dist/commands/epic/spec.js.map +1 -1
  100. package/dist/commands/epic/ticket.js +1 -1
  101. package/dist/commands/epic/ticket.js.map +1 -1
  102. package/dist/commands/epic/view.js +1 -1
  103. package/dist/commands/epic/view.js.map +1 -1
  104. package/dist/commands/execution/config.js +7 -1
  105. package/dist/commands/execution/config.js.map +1 -1
  106. package/dist/commands/execution/list.js +1 -0
  107. package/dist/commands/execution/list.js.map +1 -1
  108. package/dist/commands/execution/logs.js +1 -0
  109. package/dist/commands/execution/logs.js.map +1 -1
  110. package/dist/commands/execution/stop.js +2 -0
  111. package/dist/commands/execution/stop.js.map +1 -1
  112. package/dist/commands/execution/view.js +3 -1
  113. package/dist/commands/execution/view.js.map +1 -1
  114. package/dist/commands/feedback/list.js +2 -0
  115. package/dist/commands/feedback/list.js.map +1 -1
  116. package/dist/commands/feedback/submit.js +2 -0
  117. package/dist/commands/feedback/submit.js.map +1 -1
  118. package/dist/commands/feedback/view.js +2 -0
  119. package/dist/commands/feedback/view.js.map +1 -1
  120. package/dist/commands/gh/login.js +1 -1
  121. package/dist/commands/gh/login.js.map +1 -1
  122. package/dist/commands/gh/token.js +1 -1
  123. package/dist/commands/gh/token.js.map +1 -1
  124. package/dist/commands/linear/auth.js +4 -4
  125. package/dist/commands/linear/auth.js.map +1 -1
  126. package/dist/commands/linear/connect.js +10 -5
  127. package/dist/commands/linear/connect.js.map +1 -1
  128. package/dist/commands/linear/import.js +4 -3
  129. package/dist/commands/linear/import.js.map +1 -1
  130. package/dist/commands/linear/sync.js +3 -3
  131. package/dist/commands/linear/sync.js.map +1 -1
  132. package/dist/commands/link/create.js +1 -1
  133. package/dist/commands/link/create.js.map +1 -1
  134. package/dist/commands/link/list.js +1 -1
  135. package/dist/commands/link/list.js.map +1 -1
  136. package/dist/commands/link/remove.js +1 -1
  137. package/dist/commands/link/remove.js.map +1 -1
  138. package/dist/commands/media/add.js +2 -1
  139. package/dist/commands/media/add.js.map +1 -1
  140. package/dist/commands/media/index.js +2 -0
  141. package/dist/commands/media/index.js.map +1 -1
  142. package/dist/commands/media/list.js +1 -0
  143. package/dist/commands/media/list.js.map +1 -1
  144. package/dist/commands/media/preprocess.js +1 -1
  145. package/dist/commands/media/preprocess.js.map +1 -1
  146. package/dist/commands/media/remove.js +2 -1
  147. package/dist/commands/media/remove.js.map +1 -1
  148. package/dist/commands/media/show.js +1 -1
  149. package/dist/commands/media/show.js.map +1 -1
  150. package/dist/commands/monday/connect.js +4 -4
  151. package/dist/commands/monday/connect.js.map +1 -1
  152. package/dist/commands/monday/sync.js +4 -4
  153. package/dist/commands/monday/sync.js.map +1 -1
  154. package/dist/commands/new.js +1 -0
  155. package/dist/commands/new.js.map +1 -1
  156. package/dist/commands/orchestrator/start.js +2 -0
  157. package/dist/commands/orchestrator/start.js.map +1 -1
  158. package/dist/commands/phase/delete.js +1 -1
  159. package/dist/commands/phase/delete.js.map +1 -1
  160. package/dist/commands/phase/move.js +1 -1
  161. package/dist/commands/phase/move.js.map +1 -1
  162. package/dist/commands/phase/template/delete.js +1 -0
  163. package/dist/commands/phase/template/delete.js.map +1 -1
  164. package/dist/commands/phase/update.js +1 -1
  165. package/dist/commands/phase/update.js.map +1 -1
  166. package/dist/commands/pmo/init.js +2 -2
  167. package/dist/commands/pmo/init.js.map +1 -1
  168. package/dist/commands/pr/checks.js +1 -1
  169. package/dist/commands/pr/checks.js.map +1 -1
  170. package/dist/commands/pr/create.js +1 -1
  171. package/dist/commands/pr/create.js.map +1 -1
  172. package/dist/commands/pr/index.js +1 -1
  173. package/dist/commands/pr/index.js.map +1 -1
  174. package/dist/commands/pr/link.js +3 -3
  175. package/dist/commands/pr/link.js.map +1 -1
  176. package/dist/commands/pr/list.js +1 -1
  177. package/dist/commands/pr/list.js.map +1 -1
  178. package/dist/commands/pr/merge.js +1 -1
  179. package/dist/commands/pr/merge.js.map +1 -1
  180. package/dist/commands/pr/status.js +1 -1
  181. package/dist/commands/pr/status.js.map +1 -1
  182. package/dist/commands/priority/add.js +2 -2
  183. package/dist/commands/priority/add.js.map +1 -1
  184. package/dist/commands/priority/remove.js +2 -2
  185. package/dist/commands/priority/remove.js.map +1 -1
  186. package/dist/commands/priority/set.js +2 -2
  187. package/dist/commands/priority/set.js.map +1 -1
  188. package/dist/commands/project/archive.js +1 -1
  189. package/dist/commands/project/archive.js.map +1 -1
  190. package/dist/commands/project/create.js +4 -0
  191. package/dist/commands/project/create.js.map +1 -1
  192. package/dist/commands/project/delete.js +1 -1
  193. package/dist/commands/project/delete.js.map +1 -1
  194. package/dist/commands/project/spec.js +1 -1
  195. package/dist/commands/project/spec.js.map +1 -1
  196. package/dist/commands/project/unarchive.js +1 -1
  197. package/dist/commands/project/unarchive.js.map +1 -1
  198. package/dist/commands/project/update.js +1 -1
  199. package/dist/commands/project/update.js.map +1 -1
  200. package/dist/commands/project/view.js +1 -1
  201. package/dist/commands/project/view.js.map +1 -1
  202. package/dist/commands/pull.js +3 -0
  203. package/dist/commands/pull.js.map +1 -1
  204. package/dist/commands/qa/index.js +4 -4
  205. package/dist/commands/qa/index.js.map +1 -1
  206. package/dist/commands/repo/add.js +1 -1
  207. package/dist/commands/repo/add.js.map +1 -1
  208. package/dist/commands/repo/create.js +1 -1
  209. package/dist/commands/repo/create.js.map +1 -1
  210. package/dist/commands/repo/remove.js +2 -2
  211. package/dist/commands/repo/remove.js.map +1 -1
  212. package/dist/commands/repo/view.js +1 -1
  213. package/dist/commands/repo/view.js.map +1 -1
  214. package/dist/commands/roadmap/create.js +1 -0
  215. package/dist/commands/roadmap/create.js.map +1 -1
  216. package/dist/commands/session/create.js +4 -0
  217. package/dist/commands/session/create.js.map +1 -1
  218. package/dist/commands/session/exec.js +4 -0
  219. package/dist/commands/session/exec.js.map +1 -1
  220. package/dist/commands/session/health.js +2 -0
  221. package/dist/commands/session/health.js.map +1 -1
  222. package/dist/commands/session/inspect.js +3 -0
  223. package/dist/commands/session/inspect.js.map +1 -1
  224. package/dist/commands/session/peek.js +1 -0
  225. package/dist/commands/session/peek.js.map +1 -1
  226. package/dist/commands/session/restart.js +4 -0
  227. package/dist/commands/session/restart.js.map +1 -1
  228. package/dist/commands/shortcut/connect.js +4 -4
  229. package/dist/commands/shortcut/connect.js.map +1 -1
  230. package/dist/commands/staff/remove.js +1 -1
  231. package/dist/commands/staff/remove.js.map +1 -1
  232. package/dist/commands/status/delete.js +2 -1
  233. package/dist/commands/status/delete.js.map +1 -1
  234. package/dist/commands/status/list.js +1 -0
  235. package/dist/commands/status/list.js.map +1 -1
  236. package/dist/commands/status/move.js +2 -1
  237. package/dist/commands/status/move.js.map +1 -1
  238. package/dist/commands/status/update.js +1 -1
  239. package/dist/commands/status/update.js.map +1 -1
  240. package/dist/commands/telemetry/disable.js +1 -0
  241. package/dist/commands/telemetry/disable.js.map +1 -1
  242. package/dist/commands/telemetry/enable.js +1 -0
  243. package/dist/commands/telemetry/enable.js.map +1 -1
  244. package/dist/commands/telemetry/index.js +1 -0
  245. package/dist/commands/telemetry/index.js.map +1 -1
  246. package/dist/commands/template/apply.js +2 -2
  247. package/dist/commands/template/apply.js.map +1 -1
  248. package/dist/commands/template/delete.js +1 -0
  249. package/dist/commands/template/delete.js.map +1 -1
  250. package/dist/commands/template/save.js +1 -0
  251. package/dist/commands/template/save.js.map +1 -1
  252. package/dist/commands/template/update.js +1 -0
  253. package/dist/commands/template/update.js.map +1 -1
  254. package/dist/commands/ticket/complete.js +1 -1
  255. package/dist/commands/ticket/complete.js.map +1 -1
  256. package/dist/commands/ticket/create.js +14 -4
  257. package/dist/commands/ticket/create.js.map +1 -1
  258. package/dist/commands/ticket/delete.js +23 -8
  259. package/dist/commands/ticket/delete.js.map +1 -1
  260. package/dist/commands/ticket/edit.js +2 -2
  261. package/dist/commands/ticket/edit.js.map +1 -1
  262. package/dist/commands/ticket/link/block.js +1 -1
  263. package/dist/commands/ticket/link/block.js.map +1 -1
  264. package/dist/commands/ticket/link/duplicates.js +1 -1
  265. package/dist/commands/ticket/link/duplicates.js.map +1 -1
  266. package/dist/commands/ticket/link/relates.js +1 -1
  267. package/dist/commands/ticket/link/relates.js.map +1 -1
  268. package/dist/commands/ticket/list.d.ts +0 -8
  269. package/dist/commands/ticket/list.js +15 -121
  270. package/dist/commands/ticket/list.js.map +1 -1
  271. package/dist/commands/ticket/move.js +34 -7
  272. package/dist/commands/ticket/move.js.map +1 -1
  273. package/dist/commands/ticket/resolve.js +2 -2
  274. package/dist/commands/ticket/resolve.js.map +1 -1
  275. package/dist/commands/ticket/status.js +1 -1
  276. package/dist/commands/ticket/status.js.map +1 -1
  277. package/dist/commands/ticket/template/delete.js +1 -0
  278. package/dist/commands/ticket/template/delete.js.map +1 -1
  279. package/dist/commands/ticket/template/save.js +1 -0
  280. package/dist/commands/ticket/template/save.js.map +1 -1
  281. package/dist/commands/ticket/update.js +1 -0
  282. package/dist/commands/ticket/update.js.map +1 -1
  283. package/dist/commands/ticket/view.js +1 -1
  284. package/dist/commands/ticket/view.js.map +1 -1
  285. package/dist/commands/tools/add.js +6 -0
  286. package/dist/commands/tools/add.js.map +1 -1
  287. package/dist/commands/tools/remove.js +3 -0
  288. package/dist/commands/tools/remove.js.map +1 -1
  289. package/dist/commands/trello/configure.js +5 -5
  290. package/dist/commands/trello/configure.js.map +1 -1
  291. package/dist/commands/trello/import.js +4 -4
  292. package/dist/commands/trello/import.js.map +1 -1
  293. package/dist/commands/trello/sync.js +3 -3
  294. package/dist/commands/trello/sync.js.map +1 -1
  295. package/dist/commands/version/bump.js +3 -0
  296. package/dist/commands/version/bump.js.map +1 -1
  297. package/dist/commands/work/complete.js +34 -1
  298. package/dist/commands/work/complete.js.map +1 -1
  299. package/dist/commands/work/hooks/add.js +7 -0
  300. package/dist/commands/work/hooks/add.js.map +1 -1
  301. package/dist/commands/work/hooks/list.js +2 -0
  302. package/dist/commands/work/hooks/list.js.map +1 -1
  303. package/dist/commands/work/hooks/remove.js +4 -0
  304. package/dist/commands/work/hooks/remove.js.map +1 -1
  305. package/dist/commands/work/hooks/toggle.js +4 -0
  306. package/dist/commands/work/hooks/toggle.js.map +1 -1
  307. package/dist/commands/work/ready.js +48 -7
  308. package/dist/commands/work/ready.js.map +1 -1
  309. package/dist/commands/work/resolve.js +1 -1
  310. package/dist/commands/work/resolve.js.map +1 -1
  311. package/dist/commands/work/review.js +3 -1
  312. package/dist/commands/work/review.js.map +1 -1
  313. package/dist/commands/work/revise.js +1 -1
  314. package/dist/commands/work/revise.js.map +1 -1
  315. package/dist/commands/work/source/set.js +3 -0
  316. package/dist/commands/work/source/set.js.map +1 -1
  317. package/dist/commands/work/source.js +1 -0
  318. package/dist/commands/work/source.js.map +1 -1
  319. package/dist/commands/work/spawn.js +4 -3
  320. package/dist/commands/work/spawn.js.map +1 -1
  321. package/dist/commands/work/start.js +121 -24
  322. package/dist/commands/work/start.js.map +1 -1
  323. package/dist/commands/work/watch.js +1 -1
  324. package/dist/commands/work/watch.js.map +1 -1
  325. package/dist/commands/workflow/delete.js +1 -1
  326. package/dist/commands/workflow/delete.js.map +1 -1
  327. package/dist/commands/workflow/setup.d.ts +24 -0
  328. package/dist/commands/workflow/setup.js +351 -0
  329. package/dist/commands/workflow/setup.js.map +1 -0
  330. package/dist/commands/workflow/switch.js +1 -1
  331. package/dist/commands/workflow/switch.js.map +1 -1
  332. package/dist/commands/workflow/view.js +1 -1
  333. package/dist/commands/workflow/view.js.map +1 -1
  334. package/dist/commands/workflow-rule/create.d.ts +19 -0
  335. package/dist/commands/workflow-rule/create.js +141 -0
  336. package/dist/commands/workflow-rule/create.js.map +1 -0
  337. package/dist/commands/workflow-rule/delete.d.ts +18 -0
  338. package/dist/commands/workflow-rule/delete.js +72 -0
  339. package/dist/commands/workflow-rule/delete.js.map +1 -0
  340. package/dist/commands/workflow-rule/index.d.ts +16 -0
  341. package/dist/commands/workflow-rule/index.js +83 -0
  342. package/dist/commands/workflow-rule/index.js.map +1 -0
  343. package/dist/commands/workflow-rule/list.d.ts +17 -0
  344. package/dist/commands/workflow-rule/list.js +72 -0
  345. package/dist/commands/workflow-rule/list.js.map +1 -0
  346. package/dist/commands/workflow-rule/update.d.ts +22 -0
  347. package/dist/commands/workflow-rule/update.js +84 -0
  348. package/dist/commands/workflow-rule/update.js.map +1 -0
  349. package/dist/commands/workspace/add.js +5 -0
  350. package/dist/commands/workspace/add.js.map +1 -1
  351. package/dist/commands/workspace/remove.js +1 -1
  352. package/dist/commands/workspace/remove.js.map +1 -1
  353. package/dist/hooks/init.js +37 -11
  354. package/dist/hooks/init.js.map +1 -1
  355. package/dist/hooks/postrun.d.ts +6 -4
  356. package/dist/hooks/postrun.js +25 -18
  357. package/dist/hooks/postrun.js.map +1 -1
  358. package/dist/lib/database/drizzle-schema.d.ts +269 -4
  359. package/dist/lib/database/drizzle-schema.js +22 -2
  360. package/dist/lib/database/drizzle-schema.js.map +1 -1
  361. package/dist/lib/database/migrations/0003_actions_redesign.d.ts +15 -0
  362. package/dist/lib/database/migrations/0003_actions_redesign.js +105 -0
  363. package/dist/lib/database/migrations/0003_actions_redesign.js.map +1 -0
  364. package/dist/lib/database/migrations/0004_workflow_rules.d.ts +2 -0
  365. package/dist/lib/database/migrations/0004_workflow_rules.js +25 -0
  366. package/dist/lib/database/migrations/0004_workflow_rules.js.map +1 -0
  367. package/dist/lib/database/migrations/index.js +4 -0
  368. package/dist/lib/database/migrations/index.js.map +1 -1
  369. package/dist/lib/events/events.d.ts +13 -1
  370. package/dist/lib/execution/commit-validation.d.ts +58 -0
  371. package/dist/lib/execution/commit-validation.js +252 -0
  372. package/dist/lib/execution/commit-validation.js.map +1 -0
  373. package/dist/lib/execution/config.js +3 -0
  374. package/dist/lib/execution/config.js.map +1 -1
  375. package/dist/lib/execution/storage.d.ts +24 -1
  376. package/dist/lib/execution/storage.js +35 -6
  377. package/dist/lib/execution/storage.js.map +1 -1
  378. package/dist/lib/flags/resolver.js +3 -6
  379. package/dist/lib/flags/resolver.js.map +1 -1
  380. package/dist/lib/linear/client.d.ts +4 -0
  381. package/dist/lib/linear/client.js +12 -0
  382. package/dist/lib/linear/client.js.map +1 -1
  383. package/dist/lib/onboarding/wizard.js +3 -3
  384. package/dist/lib/onboarding/wizard.js.map +1 -1
  385. package/dist/lib/pmo/base-command.d.ts +21 -1
  386. package/dist/lib/pmo/base-command.js +28 -4
  387. package/dist/lib/pmo/base-command.js.map +1 -1
  388. package/dist/lib/pmo/schema.d.ts +3 -1
  389. package/dist/lib/pmo/schema.js +25 -3
  390. package/dist/lib/pmo/schema.js.map +1 -1
  391. package/dist/lib/pmo/storage/actions.d.ts +5 -3
  392. package/dist/lib/pmo/storage/actions.js +89 -23
  393. package/dist/lib/pmo/storage/actions.js.map +1 -1
  394. package/dist/lib/pmo/storage/base.d.ts +5 -0
  395. package/dist/lib/pmo/storage/base.js +203 -20
  396. package/dist/lib/pmo/storage/base.js.map +1 -1
  397. package/dist/lib/pmo/storage/index.d.ts +9 -2
  398. package/dist/lib/pmo/storage/index.js +28 -3
  399. package/dist/lib/pmo/storage/index.js.map +1 -1
  400. package/dist/lib/pmo/storage/types.d.ts +19 -2
  401. package/dist/lib/pmo/storage/workflow-rules.d.ts +35 -0
  402. package/dist/lib/pmo/storage/workflow-rules.js +183 -0
  403. package/dist/lib/pmo/storage/workflow-rules.js.map +1 -0
  404. package/dist/lib/pmo/sync-manager.js +6 -0
  405. package/dist/lib/pmo/sync-manager.js.map +1 -1
  406. package/dist/lib/pmo/types.d.ts +59 -4
  407. package/dist/lib/pmo/types.js.map +1 -1
  408. package/dist/lib/prompt-command.js +1 -1
  409. package/dist/lib/prompt-command.js.map +1 -1
  410. package/dist/lib/prompt-json.d.ts +19 -11
  411. package/dist/lib/prompt-json.js +32 -17
  412. package/dist/lib/prompt-json.js.map +1 -1
  413. package/dist/lib/providers/index.d.ts +11 -0
  414. package/dist/lib/providers/index.js +11 -0
  415. package/dist/lib/providers/index.js.map +1 -0
  416. package/dist/lib/providers/linear-provider.d.ts +26 -0
  417. package/dist/lib/providers/linear-provider.js +339 -0
  418. package/dist/lib/providers/linear-provider.js.map +1 -0
  419. package/dist/lib/providers/pmo-provider.d.ts +20 -0
  420. package/dist/lib/providers/pmo-provider.js +83 -0
  421. package/dist/lib/providers/pmo-provider.js.map +1 -0
  422. package/dist/lib/providers/resolver.d.ts +44 -0
  423. package/dist/lib/providers/resolver.js +82 -0
  424. package/dist/lib/providers/resolver.js.map +1 -0
  425. package/dist/lib/providers/types.d.ts +136 -0
  426. package/dist/lib/providers/types.js +12 -0
  427. package/dist/lib/providers/types.js.map +1 -0
  428. package/dist/lib/telemetry/analytics.d.ts +25 -7
  429. package/dist/lib/telemetry/analytics.js +123 -58
  430. package/dist/lib/telemetry/analytics.js.map +1 -1
  431. package/dist/lib/update-prompt.d.ts +3 -3
  432. package/dist/lib/update-prompt.js +15 -10
  433. package/dist/lib/update-prompt.js.map +1 -1
  434. package/dist/lib/work-lifecycle/action-chaining.d.ts +61 -0
  435. package/dist/lib/work-lifecycle/action-chaining.js +211 -0
  436. package/dist/lib/work-lifecycle/action-chaining.js.map +1 -0
  437. package/dist/lib/work-lifecycle/index.d.ts +4 -0
  438. package/dist/lib/work-lifecycle/index.js +4 -0
  439. package/dist/lib/work-lifecycle/index.js.map +1 -1
  440. package/dist/lib/work-lifecycle/post-execution.d.ts +85 -0
  441. package/dist/lib/work-lifecycle/post-execution.js +120 -0
  442. package/dist/lib/work-lifecycle/post-execution.js.map +1 -0
  443. package/dist/lib/work-lifecycle/rule-evaluator.d.ts +38 -0
  444. package/dist/lib/work-lifecycle/rule-evaluator.js +102 -0
  445. package/dist/lib/work-lifecycle/rule-evaluator.js.map +1 -0
  446. package/oclif.manifest.json +4248 -3757
  447. package/package.json +1 -1
@@ -30,6 +30,7 @@ import { LinearMapper } from '../../lib/linear/mapper.js';
30
30
  import { ExternalIssueAdapterError } from '../../lib/external-issues/types.js';
31
31
  import { loadDefaultWorkSource, getConnectedIntegrations, isLocalTicketId, } from '../../lib/work-source/index.js';
32
32
  import { pruneWorktrees, checkoutBranchSafe } from '../../lib/branch/index.js';
33
+ import { handlePostExecutionTransition } from '../../lib/work-lifecycle/index.js';
33
34
  /**
34
35
  * Try to execute a git command, return true if successful
35
36
  */
@@ -428,6 +429,7 @@ export default class WorkStart extends PMOCommand {
428
429
  if (flags['create-pr'] && flags['no-pr']) {
429
430
  if (shouldOutputJson(flags)) {
430
431
  outputErrorAsJson('CONFLICTING_FLAGS', '--create-pr and --no-pr are mutually exclusive', createMetadata('work start', flags));
432
+ return;
431
433
  }
432
434
  this.error('--create-pr and --no-pr are mutually exclusive');
433
435
  }
@@ -440,6 +442,7 @@ export default class WorkStart extends PMOCommand {
440
442
  if (flags['skip-permissions'] && flags['permission-mode']) {
441
443
  if (shouldOutputJson(flags)) {
442
444
  outputErrorAsJson('CONFLICTING_FLAGS', 'Cannot use both --skip-permissions and --permission-mode flags. Use only one: --skip-permissions OR --permission-mode danger/safe', createMetadata('work start', flags));
445
+ return;
443
446
  }
444
447
  this.error('Cannot use both --skip-permissions and --permission-mode flags.\n' +
445
448
  'Use only one: --skip-permissions OR --permission-mode danger/safe');
@@ -455,7 +458,7 @@ export default class WorkStart extends PMOCommand {
455
458
  const handleError = (code, message) => {
456
459
  if (jsonMode) {
457
460
  outputErrorAsJson(code, message, createMetadata('work start', flags));
458
- this.exit(1);
461
+ return;
459
462
  }
460
463
  this.error(message);
461
464
  };
@@ -849,9 +852,48 @@ export default class WorkStart extends PMOCommand {
849
852
  if (activeStaffAgents.length > 0) {
850
853
  // Clean up stale executions before checking availability (TKT-604)
851
854
  // This fixes agents appearing as "busy" when their sessions have terminated
852
- const cleanedUp = executionStorage.cleanupStaleExecutions();
853
- if (cleanedUp > 0 && !jsonMode) {
854
- this.log(styles.muted(` Cleaned up ${cleanedUp} stale execution(s)`));
855
+ const cleanedExecutions = executionStorage.cleanupStaleExecutionsDetailed();
856
+ if (cleanedExecutions.length > 0 && !jsonMode) {
857
+ this.log(styles.muted(` Cleaned up ${cleanedExecutions.length} stale execution(s)`));
858
+ }
859
+ // Post-execution hook: validate commits and auto-transition tickets that have PRs to Review
860
+ if (cleanedExecutions.length > 0) {
861
+ for (const cleaned of cleanedExecutions) {
862
+ try {
863
+ // Resolve agent directory for commit validation (PRLT-984)
864
+ let agentDir;
865
+ let repoWorktrees;
866
+ if (cleaned.agentName) {
867
+ try {
868
+ agentDir = resolveAgentDir(workspaceInfo, cleaned.agentName);
869
+ repoWorktrees = detectRepoWorktrees(agentDir);
870
+ }
871
+ catch {
872
+ // Agent dir resolution may fail for ephemeral agents that were cleaned up
873
+ }
874
+ }
875
+ const result = await handlePostExecutionTransition({
876
+ ticketId: cleaned.ticketId,
877
+ agentName: cleaned.agentName,
878
+ branch: cleaned.branch,
879
+ agentDir,
880
+ repoWorktrees,
881
+ }, this.storage, db);
882
+ if (result.blockedByValidation && !jsonMode) {
883
+ this.log(styles.warning(` ⚠ ${cleaned.ticketId}: agent completed without meaningful code — ${result.validation?.details}`));
884
+ // Persist validation failure on the execution record
885
+ executionStorage.updateStatus(cleaned.executionId, 'failed', undefined, `Commit validation failed: ${result.validation?.details}`);
886
+ }
887
+ else if (result.transitioned && !jsonMode) {
888
+ const via = result.provider && result.provider !== 'pmo' ? ` via ${result.provider}` : '';
889
+ const validationInfo = result.validation ? ` (${result.validation.details})` : '';
890
+ this.log(styles.muted(` Auto-transitioned ${cleaned.ticketId}: ${result.fromState} → ${result.toState}${via}${validationInfo}`));
891
+ }
892
+ }
893
+ catch {
894
+ // Non-fatal — don't block work start for transition failures
895
+ }
896
+ }
855
897
  }
856
898
  // Get list of busy agents (already running something)
857
899
  const busyAgentNames = new Set();
@@ -1037,7 +1079,11 @@ export default class WorkStart extends PMOCommand {
1037
1079
  // Get coder name for branch naming (prompts on first use)
1038
1080
  const coderName = await getOrPromptCoderName(db);
1039
1081
  // Use ticket's existing branch or generate a new one
1040
- const branch = ticket.branch || generateBranchName(ticket.id, ticket.title, coderName, assignedAgent, ticket.category);
1082
+ // When ticket was imported from an external source, use the external key
1083
+ // (e.g. PRLT-962) instead of the internal PMO ID (e.g. TKT-134) for branch naming
1084
+ const externalMeta = getTicketExternalMetadata(ticket);
1085
+ const branchTicketId = externalMeta.key || ticket.id;
1086
+ const branch = ticket.branch || generateBranchName(branchTicketId, ticket.title, coderName, assignedAgent, ticket.category);
1041
1087
  const isExistingBranch = !!ticket.branch;
1042
1088
  // Get epic info if linked
1043
1089
  let epicTitle;
@@ -1069,16 +1115,16 @@ export default class WorkStart extends PMOCommand {
1069
1115
  // Interactive action selection
1070
1116
  // Get ticket's current status to determine suggested action
1071
1117
  const ticketStatus = await this.storage.getStatus(ticket.statusId || '');
1072
- const currentCategory = ticketStatus?.category || 'unstarted';
1073
- // Get suggested action for this category
1074
- const suggestedAction = await this.storage.getSuggestedAction(currentCategory);
1118
+ const currentStateName = ticketStatus?.name || ticket.statusName || 'Todo';
1119
+ // Get suggested action for this state
1120
+ const suggestedAction = await this.storage.getSuggestedAction(currentStateName);
1075
1121
  // Get all actions for selection
1076
1122
  const allActions = await this.storage.listActions();
1077
1123
  // Build choices with suggested action at top
1078
1124
  const actionChoiceList = [];
1079
1125
  if (suggestedAction) {
1080
1126
  actionChoiceList.push({
1081
- name: `${suggestedAction.name} - ${suggestedAction.description || 'Suggested for ' + currentCategory} (Recommended)`,
1127
+ name: `${suggestedAction.name} - ${suggestedAction.description || 'Suggested for ' + currentStateName} (Recommended)`,
1082
1128
  value: suggestedAction.id,
1083
1129
  });
1084
1130
  }
@@ -1126,7 +1172,7 @@ export default class WorkStart extends PMOCommand {
1126
1172
  description: 'Unstructured exploration and debugging',
1127
1173
  prompt: 'You are working on an ad-hoc session for exploration and debugging. Help the user with whatever they need.',
1128
1174
  modifiesCode: false,
1129
- defaultMoveToCategory: 'started',
1175
+ toState: 'In Progress',
1130
1176
  isBuiltin: false,
1131
1177
  createdAt: new Date(),
1132
1178
  };
@@ -2051,19 +2097,32 @@ export default class WorkStart extends PMOCommand {
2051
2097
  await this.storage.updateTicket(ticket.id, { assignee: assignedAgent });
2052
2098
  this.log(styles.muted(` Assigned to: ${assignedAgent}`));
2053
2099
  }
2054
- // Move ticket to target column based on action's defaultMoveToCategory
2055
- // If action has a target category, find the matching column; otherwise use "started" default
2056
- const targetCategory = selectedAction?.defaultMoveToCategory || 'started';
2100
+ // Move ticket to target column based on action's toState
2101
+ // If action has a to_state, use that state name directly; otherwise fall back to "In Progress" default
2102
+ const targetStateName = selectedAction?.toState;
2057
2103
  const board = ticket.projectId ? await this.storage.getProjectBoard(ticket.projectId) : null;
2058
2104
  const columnNames = board ? board.columns.map(col => col.name) : [];
2059
- // Map category to column type for lookup
2060
- const columnType = targetCategory === 'started' ? 'in_progress' :
2061
- targetCategory === 'unstarted' ? 'planned' :
2062
- targetCategory === 'completed' ? 'done' : 'in_progress';
2063
- // Get the configured column name for this type (e.g., "In Progress" for in_progress)
2064
- const workColumnName = getWorkColumnSetting(db, columnType);
2065
- // Find the actual column on the board (case-insensitive, partial match)
2066
- const targetColumnName = findColumnByName(columnNames, workColumnName);
2105
+ let targetColumnName = null;
2106
+ if (targetStateName) {
2107
+ // Try direct state name match first
2108
+ targetColumnName = findColumnByName(columnNames, targetStateName);
2109
+ if (!targetColumnName) {
2110
+ const categoryMap = {
2111
+ 'Backlog': 'planned',
2112
+ 'Todo': 'planned',
2113
+ 'In Progress': 'in_progress',
2114
+ 'Done': 'done',
2115
+ };
2116
+ const columnType = categoryMap[targetStateName] || 'in_progress';
2117
+ const workColumnName = getWorkColumnSetting(db, columnType);
2118
+ targetColumnName = findColumnByName(columnNames, workColumnName);
2119
+ }
2120
+ }
2121
+ else {
2122
+ // No target state specified — default to "In Progress"
2123
+ const workColumnName = getWorkColumnSetting(db, 'in_progress');
2124
+ targetColumnName = findColumnByName(columnNames, workColumnName);
2125
+ }
2067
2126
  if (targetColumnName && ticket.statusName !== targetColumnName) {
2068
2127
  try {
2069
2128
  await this.storage.moveTicket(ticket.projectId, ticket.id, targetColumnName);
@@ -2160,9 +2219,46 @@ export default class WorkStart extends PMOCommand {
2160
2219
  // Get staff agents that exist on disk (warns about missing directories)
2161
2220
  const activeStaffAgents = getActiveStaffAgents(workspaceInfo, (msg) => this.log(msg));
2162
2221
  // Clean up stale executions before checking availability (TKT-604)
2163
- const cleanedUp = executionStorage.cleanupStaleExecutions();
2164
- if (cleanedUp > 0) {
2165
- this.log(styles.muted(` Cleaned up ${cleanedUp} stale execution(s)`));
2222
+ const batchCleanedExecutions = executionStorage.cleanupStaleExecutionsDetailed();
2223
+ if (batchCleanedExecutions.length > 0) {
2224
+ this.log(styles.muted(` Cleaned up ${batchCleanedExecutions.length} stale execution(s)`));
2225
+ // Post-execution hook: validate commits and auto-transition tickets that have PRs to Review
2226
+ for (const cleaned of batchCleanedExecutions) {
2227
+ try {
2228
+ // Resolve agent directory for commit validation (PRLT-984)
2229
+ let agentDir;
2230
+ let repoWorktrees;
2231
+ if (cleaned.agentName) {
2232
+ try {
2233
+ agentDir = resolveAgentDir(workspaceInfo, cleaned.agentName);
2234
+ repoWorktrees = detectRepoWorktrees(agentDir);
2235
+ }
2236
+ catch {
2237
+ // Agent dir resolution may fail for ephemeral agents that were cleaned up
2238
+ }
2239
+ }
2240
+ const result = await handlePostExecutionTransition({
2241
+ ticketId: cleaned.ticketId,
2242
+ agentName: cleaned.agentName,
2243
+ branch: cleaned.branch,
2244
+ agentDir,
2245
+ repoWorktrees,
2246
+ }, this.storage, db);
2247
+ if (result.blockedByValidation) {
2248
+ this.log(styles.warning(` ⚠ ${cleaned.ticketId}: agent completed without meaningful code — ${result.validation?.details}`));
2249
+ // Persist validation failure on the execution record
2250
+ executionStorage.updateStatus(cleaned.executionId, 'failed', undefined, `Commit validation failed: ${result.validation?.details}`);
2251
+ }
2252
+ else if (result.transitioned) {
2253
+ const via = result.provider && result.provider !== 'pmo' ? ` via ${result.provider}` : '';
2254
+ const validationInfo = result.validation ? ` (${result.validation.details})` : '';
2255
+ this.log(styles.muted(` Auto-transitioned ${cleaned.ticketId}: ${result.fromState} → ${result.toState}${via}${validationInfo}`));
2256
+ }
2257
+ }
2258
+ catch {
2259
+ // Non-fatal
2260
+ }
2261
+ }
2166
2262
  }
2167
2263
  const busyAgentNames = new Set();
2168
2264
  for (const agent of activeStaffAgents) {
@@ -2176,6 +2272,7 @@ export default class WorkStart extends PMOCommand {
2176
2272
  db.close();
2177
2273
  if (batchJsonMode) {
2178
2274
  outputErrorAsJson('NO_AVAILABLE_AGENTS', 'No available agents. All agents are busy with other work.', createMetadata('work start', flags));
2275
+ return;
2179
2276
  }
2180
2277
  this.error('No available agents. All agents are busy with other work.');
2181
2278
  }