@proletariat/cli 0.3.21 → 0.3.22

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 (333) hide show
  1. package/dist/commands/action/create.d.ts +0 -1
  2. package/dist/commands/action/delete.d.ts +0 -1
  3. package/dist/commands/action/index.d.ts +0 -1
  4. package/dist/commands/action/list.d.ts +0 -1
  5. package/dist/commands/action/list.js +2 -0
  6. package/dist/commands/action/run.d.ts +0 -1
  7. package/dist/commands/action/show.d.ts +0 -1
  8. package/dist/commands/action/update.d.ts +0 -1
  9. package/dist/commands/agent/auth.d.ts +0 -1
  10. package/dist/commands/agent/auth.js +3 -7
  11. package/dist/commands/agent/discover.d.ts +0 -1
  12. package/dist/commands/agent/discover.js +3 -7
  13. package/dist/commands/agent/index.d.ts +0 -1
  14. package/dist/commands/agent/index.js +2 -0
  15. package/dist/commands/agent/list.d.ts +0 -1
  16. package/dist/commands/agent/list.js +30 -1
  17. package/dist/commands/agent/login.d.ts +0 -1
  18. package/dist/commands/agent/login.js +2 -0
  19. package/dist/commands/agent/rebuild.d.ts +0 -1
  20. package/dist/commands/agent/rebuild.js +2 -0
  21. package/dist/commands/agent/remove.d.ts +0 -1
  22. package/dist/commands/agent/remove.js +2 -0
  23. package/dist/commands/agent/restart.d.ts +0 -1
  24. package/dist/commands/agent/restart.js +2 -0
  25. package/dist/commands/agent/shell.d.ts +0 -1
  26. package/dist/commands/agent/shell.js +2 -0
  27. package/dist/commands/agent/staff/add.d.ts +0 -1
  28. package/dist/commands/agent/staff/add.js +3 -7
  29. package/dist/commands/agent/staff/index.d.ts +0 -1
  30. package/dist/commands/agent/staff/index.js +2 -0
  31. package/dist/commands/agent/staff/remove.d.ts +0 -1
  32. package/dist/commands/agent/staff/remove.js +2 -0
  33. package/dist/commands/agent/status.d.ts +0 -1
  34. package/dist/commands/agent/status.js +2 -0
  35. package/dist/commands/agent/temp/cleanup.d.ts +0 -1
  36. package/dist/commands/agent/temp/cleanup.js +2 -0
  37. package/dist/commands/agent/temp/index.d.ts +0 -1
  38. package/dist/commands/agent/temp/index.js +2 -0
  39. package/dist/commands/agent/themes/index.d.ts +0 -1
  40. package/dist/commands/agent/themes/index.js +3 -7
  41. package/dist/commands/agent/themes/set.d.ts +0 -1
  42. package/dist/commands/agent/themes/set.js +3 -7
  43. package/dist/commands/agent/visit.d.ts +0 -1
  44. package/dist/commands/agent/visit.js +2 -0
  45. package/dist/commands/autocomplete/setup.d.ts +0 -1
  46. package/dist/commands/board/index.d.ts +0 -1
  47. package/dist/commands/board/view.d.ts +0 -1
  48. package/dist/commands/board/watch.d.ts +0 -1
  49. package/dist/commands/branch/create.d.ts +0 -1
  50. package/dist/commands/branch/create.js +2 -0
  51. package/dist/commands/branch/index.d.ts +0 -1
  52. package/dist/commands/branch/index.js +2 -0
  53. package/dist/commands/branch/list.d.ts +0 -1
  54. package/dist/commands/branch/validate.d.ts +0 -1
  55. package/dist/commands/branch/where.d.ts +0 -1
  56. package/dist/commands/branch/where.js +2 -0
  57. package/dist/commands/category/create.d.ts +18 -0
  58. package/dist/commands/category/create.js +108 -0
  59. package/dist/commands/category/delete.d.ts +17 -0
  60. package/dist/commands/category/delete.js +103 -0
  61. package/dist/commands/category/index.d.ts +15 -0
  62. package/dist/commands/category/index.js +87 -0
  63. package/dist/commands/category/list.d.ts +17 -0
  64. package/dist/commands/category/list.js +85 -0
  65. package/dist/commands/category/rename.d.ts +18 -0
  66. package/dist/commands/category/rename.js +127 -0
  67. package/dist/commands/claude.js +2 -0
  68. package/dist/commands/commit.js +2 -0
  69. package/dist/commands/config/index.js +2 -0
  70. package/dist/commands/docker/clean.d.ts +0 -1
  71. package/dist/commands/docker/index.d.ts +0 -1
  72. package/dist/commands/docker/prune.d.ts +0 -1
  73. package/dist/commands/docker/restart.d.ts +0 -1
  74. package/dist/commands/docker/stop.d.ts +0 -1
  75. package/dist/commands/epic/activate.d.ts +0 -1
  76. package/dist/commands/epic/activate.js +2 -0
  77. package/dist/commands/epic/archive.d.ts +0 -1
  78. package/dist/commands/epic/archive.js +2 -0
  79. package/dist/commands/epic/create.d.ts +0 -1
  80. package/dist/commands/epic/create.js +3 -1
  81. package/dist/commands/epic/delete.d.ts +14 -0
  82. package/dist/commands/epic/delete.js +129 -0
  83. package/dist/commands/epic/index.d.ts +0 -1
  84. package/dist/commands/epic/index.js +6 -0
  85. package/dist/commands/epic/link/block.d.ts +0 -1
  86. package/dist/commands/epic/link/block.js +2 -0
  87. package/dist/commands/epic/link/duplicates.d.ts +0 -1
  88. package/dist/commands/epic/link/duplicates.js +2 -0
  89. package/dist/commands/epic/link/index.d.ts +0 -1
  90. package/dist/commands/epic/link/index.js +2 -0
  91. package/dist/commands/epic/link/relates.d.ts +0 -1
  92. package/dist/commands/epic/link/relates.js +2 -0
  93. package/dist/commands/epic/link/remove.d.ts +0 -1
  94. package/dist/commands/epic/link/remove.js +2 -0
  95. package/dist/commands/epic/list.d.ts +0 -1
  96. package/dist/commands/epic/move.d.ts +0 -1
  97. package/dist/commands/epic/move.js +2 -0
  98. package/dist/commands/epic/progress.d.ts +0 -1
  99. package/dist/commands/epic/progress.js +2 -0
  100. package/dist/commands/epic/project.d.ts +0 -1
  101. package/dist/commands/epic/project.js +2 -0
  102. package/dist/commands/epic/reorder.d.ts +0 -1
  103. package/dist/commands/epic/reorder.js +2 -0
  104. package/dist/commands/epic/spec.d.ts +0 -1
  105. package/dist/commands/epic/spec.js +2 -0
  106. package/dist/commands/epic/ticket.d.ts +0 -1
  107. package/dist/commands/epic/ticket.js +2 -0
  108. package/dist/commands/epic/view.d.ts +0 -1
  109. package/dist/commands/epic/view.js +2 -0
  110. package/dist/commands/execution/config.d.ts +0 -1
  111. package/dist/commands/execution/config.js +2 -0
  112. package/dist/commands/execution/index.d.ts +0 -1
  113. package/dist/commands/execution/index.js +3 -1
  114. package/dist/commands/execution/list.d.ts +0 -1
  115. package/dist/commands/execution/logs.d.ts +0 -1
  116. package/dist/commands/execution/logs.js +3 -1
  117. package/dist/commands/execution/stop.d.ts +0 -1
  118. package/dist/commands/execution/stop.js +3 -1
  119. package/dist/commands/execution/view.d.ts +0 -1
  120. package/dist/commands/execution/view.js +3 -1
  121. package/dist/commands/gh/index.d.ts +0 -1
  122. package/dist/commands/gh/login.d.ts +0 -1
  123. package/dist/commands/gh/status.d.ts +0 -1
  124. package/dist/commands/gh/token.d.ts +0 -1
  125. package/dist/commands/init.js +2 -0
  126. package/dist/commands/phase/create.d.ts +0 -1
  127. package/dist/commands/phase/create.js +1 -2
  128. package/dist/commands/phase/delete.d.ts +0 -1
  129. package/dist/commands/phase/delete.js +1 -1
  130. package/dist/commands/phase/list.d.ts +0 -1
  131. package/dist/commands/phase/move.d.ts +0 -1
  132. package/dist/commands/phase/move.js +2 -2
  133. package/dist/commands/phase/template/apply.d.ts +0 -1
  134. package/dist/commands/phase/template/apply.js +2 -0
  135. package/dist/commands/phase/template/create.d.ts +0 -1
  136. package/dist/commands/phase/template/create.js +0 -1
  137. package/dist/commands/phase/template/delete.d.ts +0 -1
  138. package/dist/commands/phase/template/delete.js +2 -0
  139. package/dist/commands/phase/template/index.d.ts +0 -1
  140. package/dist/commands/phase/template/index.js +2 -0
  141. package/dist/commands/phase/template/list.d.ts +0 -1
  142. package/dist/commands/phase/template/list.js +2 -0
  143. package/dist/commands/phase/template/update.d.ts +0 -1
  144. package/dist/commands/phase/update.d.ts +0 -1
  145. package/dist/commands/phase/update.js +2 -2
  146. package/dist/commands/pmo/init.js +2 -0
  147. package/dist/commands/pr/create.d.ts +0 -1
  148. package/dist/commands/pr/index.d.ts +0 -1
  149. package/dist/commands/pr/link.d.ts +0 -1
  150. package/dist/commands/pr/list.d.ts +0 -1
  151. package/dist/commands/pr/status.d.ts +0 -1
  152. package/dist/commands/project/archive.d.ts +0 -1
  153. package/dist/commands/project/create.d.ts +0 -1
  154. package/dist/commands/project/delete.d.ts +0 -1
  155. package/dist/commands/project/index.d.ts +0 -1
  156. package/dist/commands/project/list.d.ts +0 -1
  157. package/dist/commands/project/spec.d.ts +0 -1
  158. package/dist/commands/project/unarchive.d.ts +0 -1
  159. package/dist/commands/project/update.d.ts +0 -1
  160. package/dist/commands/project/view.d.ts +0 -1
  161. package/dist/commands/repo/add.d.ts +0 -1
  162. package/dist/commands/repo/add.js +2 -0
  163. package/dist/commands/repo/index.d.ts +0 -1
  164. package/dist/commands/repo/list.d.ts +0 -1
  165. package/dist/commands/repo/remove.d.ts +0 -1
  166. package/dist/commands/repo/view.d.ts +0 -1
  167. package/dist/commands/roadmap/add-project.d.ts +0 -1
  168. package/dist/commands/roadmap/add-project.js +2 -0
  169. package/dist/commands/roadmap/create.d.ts +0 -1
  170. package/dist/commands/roadmap/create.js +2 -0
  171. package/dist/commands/roadmap/delete.d.ts +0 -1
  172. package/dist/commands/roadmap/delete.js +12 -1
  173. package/dist/commands/roadmap/generate.d.ts +0 -1
  174. package/dist/commands/roadmap/generate.js +2 -0
  175. package/dist/commands/roadmap/index.d.ts +0 -1
  176. package/dist/commands/roadmap/index.js +2 -0
  177. package/dist/commands/roadmap/list.d.ts +0 -1
  178. package/dist/commands/roadmap/remove-project.d.ts +0 -1
  179. package/dist/commands/roadmap/remove-project.js +2 -0
  180. package/dist/commands/roadmap/reorder.d.ts +0 -1
  181. package/dist/commands/roadmap/reorder.js +2 -0
  182. package/dist/commands/roadmap/update.d.ts +0 -1
  183. package/dist/commands/roadmap/update.js +2 -0
  184. package/dist/commands/roadmap/view.d.ts +0 -1
  185. package/dist/commands/roadmap/view.js +2 -0
  186. package/dist/commands/session/attach.d.ts +0 -1
  187. package/dist/commands/session/attach.js +9 -0
  188. package/dist/commands/session/index.d.ts +0 -1
  189. package/dist/commands/session/index.js +2 -0
  190. package/dist/commands/session/list.d.ts +0 -1
  191. package/dist/commands/spec/create.d.ts +0 -1
  192. package/dist/commands/spec/create.js +1 -1
  193. package/dist/commands/spec/delete.d.ts +0 -1
  194. package/dist/commands/spec/edit.d.ts +0 -1
  195. package/dist/commands/spec/index.d.ts +0 -1
  196. package/dist/commands/spec/link/depends.d.ts +0 -1
  197. package/dist/commands/spec/link/duplicates.d.ts +0 -1
  198. package/dist/commands/spec/link/index.d.ts +0 -1
  199. package/dist/commands/spec/link/relates.d.ts +0 -1
  200. package/dist/commands/spec/link/remove.d.ts +0 -1
  201. package/dist/commands/spec/list.d.ts +0 -1
  202. package/dist/commands/spec/plan.d.ts +0 -1
  203. package/dist/commands/spec/ticket.d.ts +0 -3
  204. package/dist/commands/spec/ticket.js +7 -38
  205. package/dist/commands/spec/view.d.ts +0 -1
  206. package/dist/commands/status/category.d.ts +14 -0
  207. package/dist/commands/status/category.js +63 -0
  208. package/dist/commands/status/create.d.ts +0 -1
  209. package/dist/commands/status/create.js +1 -1
  210. package/dist/commands/status/delete.d.ts +0 -1
  211. package/dist/commands/status/index.d.ts +0 -1
  212. package/dist/commands/status/list.d.ts +0 -1
  213. package/dist/commands/status/move.d.ts +0 -1
  214. package/dist/commands/status/update.d.ts +0 -1
  215. package/dist/commands/template/delete.d.ts +0 -1
  216. package/dist/commands/template/delete.js +2 -0
  217. package/dist/commands/template/index.d.ts +0 -1
  218. package/dist/commands/template/list.d.ts +0 -1
  219. package/dist/commands/template/list.js +2 -0
  220. package/dist/commands/template/phase/apply.js +2 -0
  221. package/dist/commands/template/phase/create.d.ts +0 -1
  222. package/dist/commands/template/phase/create.js +3 -9
  223. package/dist/commands/template/phase/delete.js +2 -0
  224. package/dist/commands/template/phase/index.d.ts +0 -1
  225. package/dist/commands/template/phase/list.js +2 -0
  226. package/dist/commands/template/phase/update.js +2 -0
  227. package/dist/commands/template/ticket/apply.js +2 -0
  228. package/dist/commands/template/ticket/create.js +2 -0
  229. package/dist/commands/template/ticket/delete.js +2 -0
  230. package/dist/commands/template/ticket/index.d.ts +0 -1
  231. package/dist/commands/template/ticket/list.js +2 -0
  232. package/dist/commands/template/ticket/save.d.ts +0 -1
  233. package/dist/commands/template/ticket/save.js +0 -6
  234. package/dist/commands/terminal/title.d.ts +0 -1
  235. package/dist/commands/ticket/bulk.d.ts +0 -1
  236. package/dist/commands/ticket/bulk.js +2 -0
  237. package/dist/commands/ticket/category.d.ts +14 -0
  238. package/dist/commands/ticket/category.js +63 -0
  239. package/dist/commands/ticket/complete.d.ts +0 -1
  240. package/dist/commands/ticket/complete.js +2 -0
  241. package/dist/commands/ticket/create.d.ts +0 -1
  242. package/dist/commands/ticket/create.js +6 -4
  243. package/dist/commands/ticket/delete.d.ts +0 -1
  244. package/dist/commands/ticket/delete.js +2 -0
  245. package/dist/commands/ticket/edit.d.ts +0 -1
  246. package/dist/commands/ticket/edit.js +4 -2
  247. package/dist/commands/ticket/epic.d.ts +0 -1
  248. package/dist/commands/ticket/epic.js +2 -0
  249. package/dist/commands/ticket/index.d.ts +0 -1
  250. package/dist/commands/ticket/index.js +2 -0
  251. package/dist/commands/ticket/link/block.d.ts +0 -1
  252. package/dist/commands/ticket/link/block.js +2 -0
  253. package/dist/commands/ticket/link/duplicates.d.ts +0 -1
  254. package/dist/commands/ticket/link/duplicates.js +2 -0
  255. package/dist/commands/ticket/link/index.d.ts +0 -1
  256. package/dist/commands/ticket/link/index.js +2 -0
  257. package/dist/commands/ticket/link/relates.d.ts +0 -1
  258. package/dist/commands/ticket/link/relates.js +2 -0
  259. package/dist/commands/ticket/link/remove.d.ts +0 -1
  260. package/dist/commands/ticket/link/remove.js +2 -0
  261. package/dist/commands/ticket/list.d.ts +0 -1
  262. package/dist/commands/ticket/move.d.ts +0 -1
  263. package/dist/commands/ticket/move.js +2 -0
  264. package/dist/commands/ticket/project.d.ts +0 -1
  265. package/dist/commands/ticket/project.js +2 -0
  266. package/dist/commands/ticket/reassign.d.ts +0 -1
  267. package/dist/commands/ticket/reassign.js +29 -0
  268. package/dist/commands/ticket/spec.d.ts +0 -1
  269. package/dist/commands/ticket/spec.js +2 -0
  270. package/dist/commands/ticket/status.d.ts +0 -1
  271. package/dist/commands/ticket/status.js +2 -0
  272. package/dist/commands/ticket/template/apply.d.ts +0 -1
  273. package/dist/commands/ticket/template/apply.js +2 -0
  274. package/dist/commands/ticket/template/create.d.ts +0 -1
  275. package/dist/commands/ticket/template/create.js +4 -2
  276. package/dist/commands/ticket/template/delete.d.ts +0 -1
  277. package/dist/commands/ticket/template/delete.js +2 -0
  278. package/dist/commands/ticket/template/index.d.ts +0 -1
  279. package/dist/commands/ticket/template/index.js +2 -0
  280. package/dist/commands/ticket/template/list.d.ts +0 -1
  281. package/dist/commands/ticket/template/list.js +2 -0
  282. package/dist/commands/ticket/template/save.d.ts +0 -1
  283. package/dist/commands/ticket/template/save.js +2 -0
  284. package/dist/commands/ticket/update.d.ts +0 -1
  285. package/dist/commands/ticket/update.js +2 -0
  286. package/dist/commands/ticket/view.d.ts +0 -1
  287. package/dist/commands/ticket/view.js +2 -0
  288. package/dist/commands/work/complete.d.ts +0 -1
  289. package/dist/commands/work/complete.js +2 -0
  290. package/dist/commands/work/index.d.ts +0 -1
  291. package/dist/commands/work/index.js +2 -0
  292. package/dist/commands/work/ready.d.ts +1 -2
  293. package/dist/commands/work/ready.js +11 -5
  294. package/dist/commands/work/revise.d.ts +0 -1
  295. package/dist/commands/work/revise.js +3 -1
  296. package/dist/commands/work/spawn-all.d.ts +0 -1
  297. package/dist/commands/work/spawn-all.js +2 -0
  298. package/dist/commands/work/spawn.d.ts +0 -1
  299. package/dist/commands/work/spawn.js +2 -0
  300. package/dist/commands/work/start.d.ts +0 -1
  301. package/dist/commands/work/start.js +6 -0
  302. package/dist/commands/work/watch.d.ts +0 -1
  303. package/dist/commands/work/watch.js +3 -1
  304. package/dist/commands/workflow/create.d.ts +0 -1
  305. package/dist/commands/workflow/delete.d.ts +0 -1
  306. package/dist/commands/workflow/index.d.ts +0 -1
  307. package/dist/commands/workflow/index.js +2 -0
  308. package/dist/commands/workflow/list.d.ts +0 -1
  309. package/dist/commands/workflow/switch.d.ts +0 -1
  310. package/dist/commands/workflow/view.d.ts +0 -1
  311. package/dist/commands/workspace/list.js +2 -0
  312. package/dist/commands/workspace/prune.d.ts +13 -0
  313. package/dist/commands/workspace/prune.js +186 -0
  314. package/dist/commands/workspace/remove.js +2 -0
  315. package/dist/commands/workspace/use.js +2 -0
  316. package/dist/lib/pmo/base-command.d.ts +2 -4
  317. package/dist/lib/pmo/base-command.js +8 -10
  318. package/dist/lib/pmo/schema.d.ts +2 -0
  319. package/dist/lib/pmo/schema.js +17 -0
  320. package/dist/lib/pmo/storage/base.d.ts +4 -0
  321. package/dist/lib/pmo/storage/base.js +31 -0
  322. package/dist/lib/pmo/storage/categories.d.ts +50 -0
  323. package/dist/lib/pmo/storage/categories.js +205 -0
  324. package/dist/lib/pmo/storage/index.d.ts +14 -1
  325. package/dist/lib/pmo/storage/index.js +35 -1
  326. package/dist/lib/pmo/storage/tickets.d.ts +5 -0
  327. package/dist/lib/pmo/storage/tickets.js +31 -3
  328. package/dist/lib/pmo/storage/types.d.ts +10 -0
  329. package/dist/lib/pmo/types.d.ts +25 -0
  330. package/dist/lib/prompt-json.d.ts +10 -16
  331. package/dist/lib/prompt-json.js +8 -16
  332. package/oclif.manifest.json +4283 -4345
  333. package/package.json +1 -1
@@ -18,6 +18,8 @@ export default class TemplatePhaseDelete extends Command {
18
18
  default: false,
19
19
  }),
20
20
  json: Flags.boolean({
21
+ char: 'm',
22
+ aliases: ['machine'],
21
23
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
22
24
  default: false,
23
25
  }),
@@ -4,7 +4,6 @@ export default class TemplatePhase extends Command {
4
4
  static aliases: string[];
5
5
  static examples: string[];
6
6
  static flags: {
7
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
7
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
8
  };
10
9
  run(): Promise<void>;
@@ -16,6 +16,8 @@ export default class TemplatePhaseList extends Command {
16
16
  exclusive: ['builtin'],
17
17
  }),
18
18
  json: Flags.boolean({
19
+ char: 'm',
20
+ aliases: ['machine'],
19
21
  description: 'Output as JSON',
20
22
  default: false,
21
23
  }),
@@ -21,6 +21,8 @@ export default class TemplatePhaseUpdate extends Command {
21
21
  description: 'New template description',
22
22
  }),
23
23
  json: Flags.boolean({
24
+ char: 'm',
25
+ aliases: ['machine'],
24
26
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
25
27
  default: false,
26
28
  }),
@@ -34,6 +34,8 @@ export default class TemplateTicketApply extends Command {
34
34
  default: false,
35
35
  }),
36
36
  json: Flags.boolean({
37
+ char: 'm',
38
+ aliases: ['machine'],
37
39
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
38
40
  default: false,
39
41
  }),
@@ -46,6 +46,8 @@ export default class TemplateTicketCreate extends Command {
46
46
  multiple: true,
47
47
  }),
48
48
  json: Flags.boolean({
49
+ char: 'm',
50
+ aliases: ['machine'],
49
51
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
50
52
  default: false,
51
53
  }),
@@ -18,6 +18,8 @@ export default class TemplateTicketDelete extends Command {
18
18
  default: false,
19
19
  }),
20
20
  json: Flags.boolean({
21
+ char: 'm',
22
+ aliases: ['machine'],
21
23
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
22
24
  default: false,
23
25
  }),
@@ -4,7 +4,6 @@ export default class TemplateTicket extends Command {
4
4
  static aliases: string[];
5
5
  static examples: string[];
6
6
  static flags: {
7
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
7
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
8
  };
10
9
  run(): Promise<void>;
@@ -16,6 +16,8 @@ export default class TemplateTicketList extends Command {
16
16
  exclusive: ['builtin'],
17
17
  }),
18
18
  json: Flags.boolean({
19
+ char: 'm',
20
+ aliases: ['machine'],
19
21
  description: 'Output as JSON',
20
22
  default: false,
21
23
  }),
@@ -10,7 +10,6 @@ export default class TemplateTicketSave extends Command {
10
10
  'template-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -27,10 +27,6 @@ export default class TemplateTicketSave extends Command {
27
27
  char: 'd',
28
28
  description: 'Template description',
29
29
  }),
30
- json: Flags.boolean({
31
- description: 'Output prompt configuration as JSON (for AI agents/scripts)',
32
- default: false,
33
- }),
34
30
  };
35
31
  async run() {
36
32
  const { args, flags } = await this.parse(TemplateTicketSave);
@@ -45,8 +41,6 @@ export default class TemplateTicketSave extends Command {
45
41
  cmdArgs.push('--description', flags.description);
46
42
  if (flags.json)
47
43
  cmdArgs.push('--json');
48
- if (flags.machine)
49
- cmdArgs.push('--machine');
50
44
  await this.config.runCommand('ticket:template:save', cmdArgs);
51
45
  }
52
46
  }
@@ -7,7 +7,6 @@ export default class TerminalTitle extends Command {
7
7
  title: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
8
  };
9
9
  static flags: {
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
10
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
11
  reset: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
12
  };
@@ -4,7 +4,6 @@ export default class TicketBulk extends PMOCommand {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
7
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
8
  };
10
9
  protected getPMOOptions(): {
@@ -11,6 +11,8 @@ export default class TicketBulk extends PMOCommand {
11
11
  static flags = {
12
12
  ...pmoBaseFlags,
13
13
  json: Flags.boolean({
14
+ char: 'm',
15
+ aliases: ['machine'],
14
16
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
15
17
  default: false,
16
18
  }),
@@ -0,0 +1,14 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class TicketCategory extends PMOCommand {
3
+ static description: string;
4
+ static aliases: string[];
5
+ static examples: string[];
6
+ static flags: {
7
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ };
10
+ protected getPMOOptions(): {
11
+ promptIfMultiple: boolean;
12
+ };
13
+ execute(): Promise<void>;
14
+ }
@@ -0,0 +1,63 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
+ import { shouldOutputJson } from '../../lib/prompt-json.js';
4
+ export default class TicketCategory extends PMOCommand {
5
+ static description = 'Manage ticket categories (feature, bug, refactor, etc.)';
6
+ static aliases = ['ticket:categories'];
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %>',
9
+ '<%= config.bin %> <%= command.id %> list',
10
+ '<%= config.bin %> <%= command.id %> create spike',
11
+ '<%= config.bin %> <%= command.id %> rename spike investigation',
12
+ '<%= config.bin %> <%= command.id %> delete spike',
13
+ ];
14
+ static flags = {
15
+ ...pmoBaseFlags,
16
+ json: Flags.boolean({
17
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
18
+ default: false,
19
+ }),
20
+ };
21
+ getPMOOptions() {
22
+ return { promptIfMultiple: false };
23
+ }
24
+ async execute() {
25
+ const { flags } = await this.parse(TicketCategory);
26
+ // Check if JSON output mode is active
27
+ const jsonMode = shouldOutputJson(flags);
28
+ // Show the action menu for ticket categories
29
+ const menuChoices = [
30
+ { id: 'list', name: 'List all ticket categories', command: 'prlt category list --type ticket' },
31
+ { id: 'create', name: 'Create new ticket category', command: 'prlt category create --type ticket --json' },
32
+ { id: 'rename', name: 'Rename ticket category', command: 'prlt category rename --type ticket --json' },
33
+ { id: 'delete', name: 'Delete ticket category', command: 'prlt category delete --type ticket --json' },
34
+ { id: 'cancel', name: 'Cancel', command: '' },
35
+ ];
36
+ const action = await this.selectFromList({
37
+ message: '🏷️ Ticket Categories - What would you like to do?',
38
+ items: menuChoices,
39
+ getName: (c) => c.name,
40
+ getValue: (c) => c.id,
41
+ getCommand: (c) => c.command,
42
+ jsonMode: jsonMode ? { flags, commandName: 'ticket category' } : null,
43
+ });
44
+ if (action === 'cancel' || !action) {
45
+ return;
46
+ }
47
+ // Run the selected subcommand
48
+ switch (action) {
49
+ case 'list':
50
+ await this.config.runCommand('category:list', ['--type', 'ticket']);
51
+ break;
52
+ case 'create':
53
+ await this.config.runCommand('category:create', ['--type', 'ticket']);
54
+ break;
55
+ case 'rename':
56
+ await this.config.runCommand('category:rename', ['--type', 'ticket']);
57
+ break;
58
+ case 'delete':
59
+ await this.config.runCommand('category:delete', ['--type', 'ticket']);
60
+ break;
61
+ }
62
+ }
63
+ }
@@ -9,7 +9,6 @@ export default class TicketComplete extends PMOCommand {
9
9
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
10
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
12
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  execute(): Promise<void>;
@@ -18,6 +18,8 @@ export default class TicketComplete extends PMOCommand {
18
18
  static flags = {
19
19
  ...pmoBaseFlags,
20
20
  json: Flags.boolean({
21
+ char: 'm',
22
+ aliases: ['machine'],
21
23
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
22
24
  default: false,
23
25
  }),
@@ -14,7 +14,6 @@ export default class TicketCreate extends PMOCommand {
14
14
  epic: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  template: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
16
  labels: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
17
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
18
  };
20
19
  execute(): Promise<void>;
@@ -19,6 +19,8 @@ export default class TicketCreate extends PMOCommand {
19
19
  static flags = {
20
20
  ...pmoBaseFlags,
21
21
  json: Flags.boolean({
22
+ char: 'm',
23
+ aliases: ['machine'],
22
24
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
23
25
  default: false,
24
26
  }),
@@ -138,7 +140,7 @@ export default class TicketCreate extends PMOCommand {
138
140
  type: 'input',
139
141
  message: 'Enter ticket title:',
140
142
  when: (ctx) => !ctx.flags.title && ctx.flags.column !== undefined,
141
- validate: (value) => value.length > 0 || 'Title is required',
143
+ validate: (value) => value.trim() ? true : 'Title cannot be empty',
142
144
  context: (ctx) => ({
143
145
  hint: `Provide title with: ${ctx.baseCommand}${ctx.projectId ? ` -P ${ctx.projectId}` : ''} --column "${ctx.flags.column}" --title "Your title here"`,
144
146
  requiredFields: ['--title'],
@@ -261,7 +263,7 @@ export default class TicketCreate extends PMOCommand {
261
263
  name: 'title',
262
264
  message: 'Ticket title:',
263
265
  default: flags.title || template?.titlePattern,
264
- validate: (input) => input.length > 0 || 'Title is required',
266
+ validate: (input) => input.trim() ? true : 'Title cannot be empty',
265
267
  },
266
268
  {
267
269
  type: 'list',
@@ -316,7 +318,7 @@ export default class TicketCreate extends PMOCommand {
316
318
  name: 'customCategory',
317
319
  message: 'Enter custom category:',
318
320
  when: (answers) => answers.categoryChoice === '__custom__',
319
- validate: (input) => input.length > 0 || 'Category is required when choosing custom',
321
+ validate: (input) => input.trim() ? true : 'Category cannot be empty',
320
322
  },
321
323
  ]);
322
324
  // Resolve category from choice or custom input
@@ -351,7 +353,7 @@ export default class TicketCreate extends PMOCommand {
351
353
  type: 'input',
352
354
  name: 'what',
353
355
  message: 'What is the concrete outcome? (one sentence):',
354
- validate: (input) => input.length > 0 || 'Outcome is required - what does success look like?',
356
+ validate: (input) => input.trim() ? true : 'Outcome cannot be empty - what does success look like?',
355
357
  },
356
358
  {
357
359
  type: 'input',
@@ -9,7 +9,6 @@ export default class TicketDelete extends PMOCommand {
9
9
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
10
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
12
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  execute(): Promise<void>;
@@ -21,6 +21,8 @@ export default class TicketDelete extends PMOCommand {
21
21
  static flags = {
22
22
  ...pmoBaseFlags,
23
23
  json: Flags.boolean({
24
+ char: 'm',
25
+ aliases: ['machine'],
24
26
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
25
27
  default: false,
26
28
  }),
@@ -20,7 +20,6 @@ export default class TicketEdit extends PMOCommand {
20
20
  'clear-ac': import("@oclif/core/interfaces").BooleanFlag<boolean>;
21
21
  interactive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
22
22
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
23
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
24
23
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
24
  };
26
25
  execute(): Promise<void>;
@@ -76,6 +76,8 @@ export default class TicketEdit extends PMOCommand {
76
76
  default: false,
77
77
  }),
78
78
  json: Flags.boolean({
79
+ char: 'm',
80
+ aliases: ['machine'],
79
81
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
80
82
  default: false,
81
83
  }),
@@ -248,7 +250,7 @@ export default class TicketEdit extends PMOCommand {
248
250
  name: 'title',
249
251
  message: 'Title:',
250
252
  default: ticket.title,
251
- validate: (input) => input.length > 0 || 'Title is required',
253
+ validate: (input) => input.trim() ? true : 'Title cannot be empty',
252
254
  },
253
255
  {
254
256
  type: 'editor',
@@ -303,7 +305,7 @@ export default class TicketEdit extends PMOCommand {
303
305
  name: 'customCategory',
304
306
  message: 'Enter custom category:',
305
307
  when: (answers) => answers.categoryChoice === '__custom__',
306
- validate: (input) => input.length > 0 || 'Category is required when choosing custom',
308
+ validate: (input) => input.trim() ? true : 'Category cannot be empty',
307
309
  },
308
310
  ]);
309
311
  // Build updates object with only changed fields
@@ -13,7 +13,6 @@ export default class TicketEpic extends PMOCommand {
13
13
  'to-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  'from-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
15
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
16
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
17
  };
19
18
  execute(): Promise<void>;
@@ -24,6 +24,8 @@ export default class TicketEpic extends PMOCommand {
24
24
  static flags = {
25
25
  ...pmoBaseFlags,
26
26
  json: Flags.boolean({
27
+ char: 'm',
28
+ aliases: ['machine'],
27
29
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
28
30
  default: false,
29
31
  }),
@@ -4,7 +4,6 @@ export default class Ticket extends PMOCommand {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
7
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
8
  };
10
9
  protected getPMOOptions(): {
@@ -10,6 +10,8 @@ export default class Ticket extends PMOCommand {
10
10
  static flags = {
11
11
  ...pmoBaseFlags,
12
12
  json: Flags.boolean({
13
+ char: 'm',
14
+ aliases: ['machine'],
13
15
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
14
16
  default: false,
15
17
  }),
@@ -8,7 +8,6 @@ export default class TicketLinkBlock extends PMOCommand {
8
8
  };
9
9
  static flags: {
10
10
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
11
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  execute(): Promise<void>;
@@ -21,6 +21,8 @@ export default class TicketLinkBlock extends PMOCommand {
21
21
  static flags = {
22
22
  ...pmoBaseFlags,
23
23
  json: Flags.boolean({
24
+ char: 'm',
25
+ aliases: ['machine'],
24
26
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
25
27
  default: false,
26
28
  }),
@@ -8,7 +8,6 @@ export default class TicketLinkDuplicates extends PMOCommand {
8
8
  };
9
9
  static flags: {
10
10
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
11
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  execute(): Promise<void>;
@@ -21,6 +21,8 @@ export default class TicketLinkDuplicates extends PMOCommand {
21
21
  static flags = {
22
22
  ...pmoBaseFlags,
23
23
  json: Flags.boolean({
24
+ char: 'm',
25
+ aliases: ['machine'],
24
26
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
25
27
  default: false,
26
28
  }),
@@ -11,7 +11,6 @@ export default class TicketLink extends PMOCommand {
11
11
  relates: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  duplicates: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  };
17
16
  execute(): Promise<void>;
@@ -20,6 +20,8 @@ export default class TicketLink extends PMOCommand {
20
20
  static flags = {
21
21
  ...pmoBaseFlags,
22
22
  json: Flags.boolean({
23
+ char: 'm',
24
+ aliases: ['machine'],
23
25
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
24
26
  default: false,
25
27
  }),
@@ -8,7 +8,6 @@ export default class TicketLinkRelates extends PMOCommand {
8
8
  };
9
9
  static flags: {
10
10
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
11
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  execute(): Promise<void>;
@@ -21,6 +21,8 @@ export default class TicketLinkRelates extends PMOCommand {
21
21
  static flags = {
22
22
  ...pmoBaseFlags,
23
23
  json: Flags.boolean({
24
+ char: 'm',
25
+ aliases: ['machine'],
24
26
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
25
27
  default: false,
26
28
  }),
@@ -10,7 +10,6 @@ export default class TicketLinkRemove extends PMOCommand {
10
10
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
11
  type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
13
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  };
16
15
  execute(): Promise<void>;
@@ -23,6 +23,8 @@ export default class TicketLinkRemove extends PMOCommand {
23
23
  static flags = {
24
24
  ...pmoBaseFlags,
25
25
  json: Flags.boolean({
26
+ char: 'm',
27
+ aliases: ['machine'],
26
28
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
27
29
  default: false,
28
30
  }),
@@ -12,7 +12,6 @@ export default class TicketList extends Command {
12
12
  'group-by': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
13
  limit: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
14
  offset: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
15
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
16
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
17
  };
@@ -11,7 +11,6 @@ export default class TicketMove extends PMOCommand {
11
11
  position: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  };
17
16
  execute(): Promise<void>;
@@ -23,6 +23,8 @@ export default class TicketMove extends PMOCommand {
23
23
  static flags = {
24
24
  ...pmoBaseFlags,
25
25
  json: Flags.boolean({
26
+ char: 'm',
27
+ aliases: ['machine'],
26
28
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
27
29
  default: false,
28
30
  }),
@@ -11,7 +11,6 @@ export default class TicketProject extends PMOCommand {
11
11
  'keep-epic': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  };
17
16
  execute(): Promise<void>;
@@ -24,6 +24,8 @@ export default class TicketProject extends PMOCommand {
24
24
  static flags = {
25
25
  ...pmoBaseFlags,
26
26
  json: Flags.boolean({
27
+ char: 'm',
28
+ aliases: ['machine'],
27
29
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
28
30
  default: false,
29
31
  }),
@@ -12,7 +12,6 @@ export default class TicketReassign extends PMOCommand {
12
12
  from: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
14
  force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
15
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
16
  };
18
17
  execute(): Promise<void>;
@@ -3,6 +3,7 @@ import inquirer from 'inquirer';
3
3
  import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
4
4
  import { styles } from '../../lib/styles.js';
5
5
  import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
6
+ import { getWorkspaceInfo } from '../../lib/agents/commands.js';
6
7
  export default class TicketReassign extends PMOCommand {
7
8
  static description = 'Reassign ticket(s) to a different agent';
8
9
  static examples = [
@@ -25,6 +26,8 @@ export default class TicketReassign extends PMOCommand {
25
26
  static flags = {
26
27
  ...pmoBaseFlags,
27
28
  json: Flags.boolean({
29
+ char: 'm',
30
+ aliases: ['machine'],
28
31
  description: 'Output prompt configuration as JSON (for AI agents/scripts)',
29
32
  default: false,
30
33
  }),
@@ -140,6 +143,19 @@ export default class TicketReassign extends PMOCommand {
140
143
  if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
141
144
  targetAssignee = undefined;
142
145
  }
146
+ // Validate agent name if provided directly (not through interactive prompt)
147
+ if (targetAssignee && (args.assignee || flags.to)) {
148
+ try {
149
+ const workspaceInfo = getWorkspaceInfo();
150
+ const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
151
+ if (!agent) {
152
+ this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
153
+ }
154
+ }
155
+ catch {
156
+ // Not in a workspace or agents table doesn't exist - skip validation
157
+ }
158
+ }
143
159
  // Check if same
144
160
  if (targetAssignee === ticket.assignee) {
145
161
  this.log(styles.muted(`Ticket "${ticketId}" is already assigned to "${targetAssignee || 'none'}".`));
@@ -222,6 +238,19 @@ export default class TicketReassign extends PMOCommand {
222
238
  if (targetAssignee === 'none' || targetAssignee === 'unassigned') {
223
239
  targetAssignee = undefined;
224
240
  }
241
+ // Validate agent name if provided directly via --to flag (not through interactive prompt)
242
+ if (targetAssignee && flags.to) {
243
+ try {
244
+ const workspaceInfo = getWorkspaceInfo();
245
+ const agent = workspaceInfo.agents.find(a => a.name === targetAssignee);
246
+ if (!agent) {
247
+ this.error(`Agent "${targetAssignee}" not found. Run 'prlt agent list' to see available agents.`);
248
+ }
249
+ }
250
+ catch {
251
+ // Not in a workspace or agents table doesn't exist - skip validation
252
+ }
253
+ }
225
254
  // Confirmation
226
255
  if (!flags.force) {
227
256
  const assigneeLabel = targetAssignee || 'None (unassigning)';
@@ -11,7 +11,6 @@ export default class TicketSpec extends PMOCommand {
11
11
  unlink: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  spec: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
14
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
15
  };
17
16
  execute(): Promise<void>;