@proletariat/cli 0.3.93 → 0.3.94

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 (374) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +1 -1
  9. package/dist/commands/agent/gc.d.ts +1 -1
  10. package/dist/commands/agent/index.d.ts +1 -1
  11. package/dist/commands/agent/list.d.ts +1 -1
  12. package/dist/commands/agent/login.d.ts +1 -1
  13. package/dist/commands/agent/rebuild.d.ts +1 -1
  14. package/dist/commands/agent/remove.d.ts +1 -1
  15. package/dist/commands/agent/restart.d.ts +1 -1
  16. package/dist/commands/agent/shell.d.ts +1 -1
  17. package/dist/commands/agent/staff/index.d.ts +1 -1
  18. package/dist/commands/agent/staff/remove.d.ts +1 -1
  19. package/dist/commands/agent/status.d.ts +1 -1
  20. package/dist/commands/agent/visit.d.ts +1 -1
  21. package/dist/commands/asana/import.d.ts +1 -1
  22. package/dist/commands/branch/create.d.ts +1 -1
  23. package/dist/commands/branch/index.d.ts +1 -1
  24. package/dist/commands/branch/list.d.ts +1 -1
  25. package/dist/commands/branch/validate.d.ts +1 -1
  26. package/dist/commands/branch/where.d.ts +1 -1
  27. package/dist/commands/config/index.js +2 -2
  28. package/dist/commands/config/index.js.map +1 -1
  29. package/dist/commands/diet.d.ts +1 -1
  30. package/dist/commands/docker/index.js +2 -0
  31. package/dist/commands/docker/index.js.map +1 -1
  32. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  33. package/dist/commands/docker/rebuild-cache.js +144 -0
  34. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  35. package/dist/commands/execution/config.d.ts +1 -1
  36. package/dist/commands/execution/index.d.ts +1 -1
  37. package/dist/commands/execution/list.d.ts +1 -1
  38. package/dist/commands/execution/logs.d.ts +1 -1
  39. package/dist/commands/execution/stop.d.ts +1 -1
  40. package/dist/commands/execution/view.d.ts +1 -1
  41. package/dist/commands/hook/export.d.ts +1 -1
  42. package/dist/commands/hook/fire.d.ts +1 -1
  43. package/dist/commands/hook/index.d.ts +1 -1
  44. package/dist/commands/hook/list.d.ts +1 -1
  45. package/dist/commands/hook/preset.d.ts +1 -1
  46. package/dist/commands/linear/auth.d.ts +1 -1
  47. package/dist/commands/linear/connect.d.ts +1 -1
  48. package/dist/commands/linear/import.d.ts +1 -1
  49. package/dist/commands/linear/status.d.ts +1 -1
  50. package/dist/commands/linear/sync.d.ts +1 -1
  51. package/dist/commands/mcp-server.d.ts +8 -2
  52. package/dist/commands/mcp-server.js +15 -28
  53. package/dist/commands/mcp-server.js.map +1 -1
  54. package/dist/commands/monday/connect.d.ts +1 -1
  55. package/dist/commands/monday/sync.d.ts +1 -1
  56. package/dist/commands/orchestrate/index.d.ts +1 -1
  57. package/dist/commands/orchestrator/index.d.ts +1 -1
  58. package/dist/commands/orchestrator/start.d.ts +3 -3
  59. package/dist/commands/orchestrator/start.js +38 -40
  60. package/dist/commands/orchestrator/start.js.map +1 -1
  61. package/dist/commands/pr/checks.d.ts +1 -1
  62. package/dist/commands/pr/close.d.ts +1 -1
  63. package/dist/commands/pr/create.d.ts +1 -1
  64. package/dist/commands/pr/index.d.ts +1 -1
  65. package/dist/commands/pr/link.d.ts +1 -1
  66. package/dist/commands/pr/list.d.ts +1 -1
  67. package/dist/commands/pr/merge.d.ts +1 -1
  68. package/dist/commands/pr/status.d.ts +1 -1
  69. package/dist/commands/pull.d.ts +1 -1
  70. package/dist/commands/repo/add.d.ts +1 -1
  71. package/dist/commands/repo/create.d.ts +1 -1
  72. package/dist/commands/repo/fix-remotes.d.ts +1 -1
  73. package/dist/commands/repo/index.d.ts +1 -1
  74. package/dist/commands/repo/list.d.ts +1 -1
  75. package/dist/commands/repo/remove.d.ts +1 -1
  76. package/dist/commands/repo/view.d.ts +1 -1
  77. package/dist/commands/session/attach.d.ts +1 -1
  78. package/dist/commands/session/cleanup.d.ts +1 -1
  79. package/dist/commands/session/create.d.ts +1 -1
  80. package/dist/commands/session/exec.d.ts +1 -1
  81. package/dist/commands/session/health.d.ts +1 -1
  82. package/dist/commands/session/index.d.ts +1 -1
  83. package/dist/commands/session/inspect.d.ts +1 -1
  84. package/dist/commands/session/list.d.ts +1 -1
  85. package/dist/commands/session/peek.d.ts +1 -1
  86. package/dist/commands/session/prune.d.ts +1 -1
  87. package/dist/commands/session/report.d.ts +1 -1
  88. package/dist/commands/session/restart.d.ts +1 -1
  89. package/dist/commands/shortcut/connect.d.ts +1 -1
  90. package/dist/commands/support/logs.d.ts +1 -1
  91. package/dist/commands/ticket/create.d.ts +1 -1
  92. package/dist/commands/ticket/delete.d.ts +1 -1
  93. package/dist/commands/ticket/edit.d.ts +1 -1
  94. package/dist/commands/ticket/index.d.ts +1 -1
  95. package/dist/commands/ticket/index.js +6 -36
  96. package/dist/commands/ticket/index.js.map +1 -1
  97. package/dist/commands/ticket/list.d.ts +1 -1
  98. package/dist/commands/ticket/move.d.ts +1 -1
  99. package/dist/commands/ticket/show.d.ts +8 -7
  100. package/dist/commands/ticket/show.js +101 -8
  101. package/dist/commands/ticket/show.js.map +1 -1
  102. package/dist/commands/ticket/update.d.ts +1 -1
  103. package/dist/commands/trello/configure.d.ts +1 -1
  104. package/dist/commands/trello/import.d.ts +1 -1
  105. package/dist/commands/trello/sync.d.ts +1 -1
  106. package/dist/commands/work/asana.d.ts +1 -1
  107. package/dist/commands/work/complete.d.ts +1 -1
  108. package/dist/commands/work/groom.d.ts +1 -1
  109. package/dist/commands/work/hooks/add.d.ts +1 -1
  110. package/dist/commands/work/hooks/index.d.ts +1 -1
  111. package/dist/commands/work/hooks/list.d.ts +1 -1
  112. package/dist/commands/work/hooks/remove.d.ts +1 -1
  113. package/dist/commands/work/hooks/toggle.d.ts +1 -1
  114. package/dist/commands/work/implement.d.ts +1 -1
  115. package/dist/commands/work/index.d.ts +1 -1
  116. package/dist/commands/work/jira.d.ts +1 -1
  117. package/dist/commands/work/linear.d.ts +1 -1
  118. package/dist/commands/work/peek.d.ts +1 -1
  119. package/dist/commands/work/ready.d.ts +1 -1
  120. package/dist/commands/work/rebase.d.ts +1 -1
  121. package/dist/commands/work/resolve.d.ts +1 -1
  122. package/dist/commands/work/review.d.ts +1 -1
  123. package/dist/commands/work/ship.d.ts +1 -1
  124. package/dist/commands/work/shortcut.d.ts +1 -1
  125. package/dist/commands/work/source/set.d.ts +1 -1
  126. package/dist/commands/work/source.d.ts +1 -1
  127. package/dist/commands/work/spawn.d.ts +1 -1
  128. package/dist/commands/work/start.d.ts +1 -1
  129. package/dist/commands/work/status.d.ts +1 -1
  130. package/dist/commands/work/stop.d.ts +1 -1
  131. package/dist/commands/work/watch.d.ts +1 -1
  132. package/dist/hooks/init.js +1 -1
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/asana/config.js +13 -7
  135. package/dist/lib/asana/config.js.map +1 -1
  136. package/dist/lib/clickup/client.d.ts +92 -0
  137. package/dist/lib/clickup/client.js +150 -0
  138. package/dist/lib/clickup/client.js.map +1 -0
  139. package/dist/lib/clickup/config.d.ts +41 -0
  140. package/dist/lib/clickup/config.js +104 -0
  141. package/dist/lib/clickup/config.js.map +1 -0
  142. package/dist/lib/clickup/index.d.ts +4 -0
  143. package/dist/lib/clickup/index.js +4 -0
  144. package/dist/lib/clickup/index.js.map +1 -0
  145. package/dist/lib/clickup/types.d.ts +104 -0
  146. package/dist/lib/clickup/types.js +34 -0
  147. package/dist/lib/clickup/types.js.map +1 -0
  148. package/dist/lib/database/credential-store.d.ts +64 -0
  149. package/dist/lib/database/credential-store.js +306 -0
  150. package/dist/lib/database/credential-store.js.map +1 -0
  151. package/dist/lib/database/index.d.ts +1 -0
  152. package/dist/lib/database/index.js +2 -0
  153. package/dist/lib/database/index.js.map +1 -1
  154. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  155. package/dist/lib/database/pmo-bootstrap.js +45 -20
  156. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  157. package/dist/lib/database/workspace.js +4 -0
  158. package/dist/lib/database/workspace.js.map +1 -1
  159. package/dist/lib/execution/devcontainer.js +51 -0
  160. package/dist/lib/execution/devcontainer.js.map +1 -1
  161. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  162. package/dist/lib/execution/runners/docker-management.js +99 -7
  163. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  164. package/dist/lib/execution/session-utils.d.ts +4 -0
  165. package/dist/lib/execution/session-utils.js +34 -24
  166. package/dist/lib/execution/session-utils.js.map +1 -1
  167. package/dist/lib/execution/types.js +1 -1
  168. package/dist/lib/external-issues/types.d.ts +3 -3
  169. package/dist/lib/external-issues/types.js +1 -1
  170. package/dist/lib/external-issues/types.js.map +1 -1
  171. package/dist/lib/jira/config.js +10 -4
  172. package/dist/lib/jira/config.js.map +1 -1
  173. package/dist/lib/linear/config.js +13 -8
  174. package/dist/lib/linear/config.js.map +1 -1
  175. package/dist/lib/mcp/generator.d.ts +26 -0
  176. package/dist/lib/mcp/generator.js +219 -0
  177. package/dist/lib/mcp/generator.js.map +1 -0
  178. package/dist/lib/mcp/index.d.ts +1 -0
  179. package/dist/lib/mcp/index.js +1 -0
  180. package/dist/lib/mcp/index.js.map +1 -1
  181. package/dist/lib/mcp/tools/index.d.ts +0 -11
  182. package/dist/lib/mcp/tools/index.js +0 -11
  183. package/dist/lib/mcp/tools/index.js.map +1 -1
  184. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  185. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  186. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  187. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  188. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  189. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  190. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  191. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  192. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  193. package/dist/lib/mcp/tools/ticket.js +10 -48
  194. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  195. package/dist/lib/monday/config.js +11 -5
  196. package/dist/lib/monday/config.js.map +1 -1
  197. package/dist/lib/pmo/base-command.d.ts +20 -152
  198. package/dist/lib/pmo/base-command.js +32 -198
  199. package/dist/lib/pmo/base-command.js.map +1 -1
  200. package/dist/lib/pmo/index.d.ts +1 -0
  201. package/dist/lib/pmo/index.js +3 -0
  202. package/dist/lib/pmo/index.js.map +1 -1
  203. package/dist/lib/pmo/storage/base.d.ts +0 -18
  204. package/dist/lib/pmo/storage/base.js +0 -231
  205. package/dist/lib/pmo/storage/base.js.map +1 -1
  206. package/dist/lib/pmo/storage/index.d.ts +1 -76
  207. package/dist/lib/pmo/storage/index.js +1 -215
  208. package/dist/lib/pmo/storage/index.js.map +1 -1
  209. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  210. package/dist/lib/pmo/storage/tickets.js +4 -34
  211. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  212. package/dist/lib/pmo/types.d.ts +0 -37
  213. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  214. package/dist/lib/providers/clickup-provider.js +353 -0
  215. package/dist/lib/providers/clickup-provider.js.map +1 -0
  216. package/dist/lib/providers/resolver.d.ts +1 -1
  217. package/dist/lib/providers/resolver.js +16 -5
  218. package/dist/lib/providers/resolver.js.map +1 -1
  219. package/dist/lib/providers/types.d.ts +1 -1
  220. package/dist/lib/runners/claude-code-runner.js +13 -4
  221. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  222. package/dist/lib/runtime-command.d.ts +219 -0
  223. package/dist/lib/runtime-command.js +320 -0
  224. package/dist/lib/runtime-command.js.map +1 -0
  225. package/dist/lib/shortcut/config.js +13 -7
  226. package/dist/lib/shortcut/config.js.map +1 -1
  227. package/dist/lib/trello/config.js +17 -12
  228. package/dist/lib/trello/config.js.map +1 -1
  229. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  230. package/dist/lib/work-source/config.d.ts +1 -1
  231. package/dist/lib/work-source/config.js +11 -1
  232. package/dist/lib/work-source/config.js.map +1 -1
  233. package/dist/lib/work-source/provider-sources.js +6 -1
  234. package/dist/lib/work-source/provider-sources.js.map +1 -1
  235. package/oclif.manifest.json +3015 -4827
  236. package/package.json +1 -1
  237. package/dist/commands/board/index.d.ts +0 -21
  238. package/dist/commands/board/index.js +0 -263
  239. package/dist/commands/board/index.js.map +0 -1
  240. package/dist/commands/board/view.d.ts +0 -15
  241. package/dist/commands/board/view.js +0 -137
  242. package/dist/commands/board/view.js.map +0 -1
  243. package/dist/commands/board/watch.d.ts +0 -15
  244. package/dist/commands/board/watch.js +0 -59
  245. package/dist/commands/board/watch.js.map +0 -1
  246. package/dist/commands/dashboard/index.d.ts +0 -14
  247. package/dist/commands/dashboard/index.js +0 -117
  248. package/dist/commands/dashboard/index.js.map +0 -1
  249. package/dist/commands/dashboard.d.ts +0 -38
  250. package/dist/commands/dashboard.js +0 -353
  251. package/dist/commands/dashboard.js.map +0 -1
  252. package/dist/commands/pmo/init.d.ts +0 -28
  253. package/dist/commands/pmo/init.js +0 -410
  254. package/dist/commands/pmo/init.js.map +0 -1
  255. package/dist/commands/project/archive.d.ts +0 -18
  256. package/dist/commands/project/archive.js +0 -79
  257. package/dist/commands/project/archive.js.map +0 -1
  258. package/dist/commands/project/create.d.ts +0 -24
  259. package/dist/commands/project/create.js +0 -191
  260. package/dist/commands/project/create.js.map +0 -1
  261. package/dist/commands/project/delete.d.ts +0 -18
  262. package/dist/commands/project/delete.js +0 -115
  263. package/dist/commands/project/delete.js.map +0 -1
  264. package/dist/commands/project/index.d.ts +0 -14
  265. package/dist/commands/project/index.js +0 -60
  266. package/dist/commands/project/index.js.map +0 -1
  267. package/dist/commands/project/list.d.ts +0 -16
  268. package/dist/commands/project/list.js +0 -115
  269. package/dist/commands/project/list.js.map +0 -1
  270. package/dist/commands/project/spec.d.ts +0 -19
  271. package/dist/commands/project/spec.js +0 -218
  272. package/dist/commands/project/spec.js.map +0 -1
  273. package/dist/commands/project/unarchive.d.ts +0 -17
  274. package/dist/commands/project/unarchive.js +0 -55
  275. package/dist/commands/project/unarchive.js.map +0 -1
  276. package/dist/commands/project/update.d.ts +0 -19
  277. package/dist/commands/project/update.js +0 -161
  278. package/dist/commands/project/update.js.map +0 -1
  279. package/dist/commands/project/view.d.ts +0 -17
  280. package/dist/commands/project/view.js +0 -107
  281. package/dist/commands/project/view.js.map +0 -1
  282. package/dist/commands/ticket/bulk.d.ts +0 -14
  283. package/dist/commands/ticket/bulk.js +0 -141
  284. package/dist/commands/ticket/bulk.js.map +0 -1
  285. package/dist/commands/ticket/cancel.d.ts +0 -17
  286. package/dist/commands/ticket/cancel.js +0 -206
  287. package/dist/commands/ticket/cancel.js.map +0 -1
  288. package/dist/commands/ticket/category.d.ts +0 -15
  289. package/dist/commands/ticket/category.js +0 -64
  290. package/dist/commands/ticket/category.js.map +0 -1
  291. package/dist/commands/ticket/complete.d.ts +0 -17
  292. package/dist/commands/ticket/complete.js +0 -193
  293. package/dist/commands/ticket/complete.js.map +0 -1
  294. package/dist/commands/ticket/epic.d.ts +0 -21
  295. package/dist/commands/ticket/epic.js +0 -306
  296. package/dist/commands/ticket/epic.js.map +0 -1
  297. package/dist/commands/ticket/link/block.d.ts +0 -15
  298. package/dist/commands/ticket/link/block.js +0 -96
  299. package/dist/commands/ticket/link/block.js.map +0 -1
  300. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  301. package/dist/commands/ticket/link/duplicates.js +0 -96
  302. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  303. package/dist/commands/ticket/link/index.d.ts +0 -14
  304. package/dist/commands/ticket/link/index.js +0 -99
  305. package/dist/commands/ticket/link/index.js.map +0 -1
  306. package/dist/commands/ticket/link/relates.d.ts +0 -15
  307. package/dist/commands/ticket/link/relates.js +0 -96
  308. package/dist/commands/ticket/link/relates.js.map +0 -1
  309. package/dist/commands/ticket/project.d.ts +0 -19
  310. package/dist/commands/ticket/project.js +0 -257
  311. package/dist/commands/ticket/project.js.map +0 -1
  312. package/dist/commands/ticket/reassign.d.ts +0 -20
  313. package/dist/commands/ticket/reassign.js +0 -340
  314. package/dist/commands/ticket/reassign.js.map +0 -1
  315. package/dist/commands/ticket/resolve.d.ts +0 -68
  316. package/dist/commands/ticket/resolve.js +0 -306
  317. package/dist/commands/ticket/resolve.js.map +0 -1
  318. package/dist/commands/ticket/spec.d.ts +0 -19
  319. package/dist/commands/ticket/spec.js +0 -260
  320. package/dist/commands/ticket/spec.js.map +0 -1
  321. package/dist/commands/ticket/status.d.ts +0 -14
  322. package/dist/commands/ticket/status.js +0 -84
  323. package/dist/commands/ticket/status.js.map +0 -1
  324. package/dist/commands/ticket/view.d.ts +0 -14
  325. package/dist/commands/ticket/view.js +0 -113
  326. package/dist/commands/ticket/view.js.map +0 -1
  327. package/dist/lib/mcp/tools/board.d.ts +0 -6
  328. package/dist/lib/mcp/tools/board.js +0 -190
  329. package/dist/lib/mcp/tools/board.js.map +0 -1
  330. package/dist/lib/mcp/tools/category.d.ts +0 -6
  331. package/dist/lib/mcp/tools/category.js +0 -85
  332. package/dist/lib/mcp/tools/category.js.map +0 -1
  333. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  334. package/dist/lib/mcp/tools/epic.js +0 -184
  335. package/dist/lib/mcp/tools/epic.js.map +0 -1
  336. package/dist/lib/mcp/tools/label.d.ts +0 -6
  337. package/dist/lib/mcp/tools/label.js +0 -339
  338. package/dist/lib/mcp/tools/label.js.map +0 -1
  339. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  340. package/dist/lib/mcp/tools/phase.js +0 -132
  341. package/dist/lib/mcp/tools/phase.js.map +0 -1
  342. package/dist/lib/mcp/tools/project.d.ts +0 -6
  343. package/dist/lib/mcp/tools/project.js +0 -197
  344. package/dist/lib/mcp/tools/project.js.map +0 -1
  345. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  346. package/dist/lib/mcp/tools/roadmap.js +0 -124
  347. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  348. package/dist/lib/mcp/tools/status.d.ts +0 -6
  349. package/dist/lib/mcp/tools/status.js +0 -110
  350. package/dist/lib/mcp/tools/status.js.map +0 -1
  351. package/dist/lib/mcp/tools/template.d.ts +0 -6
  352. package/dist/lib/mcp/tools/template.js +0 -108
  353. package/dist/lib/mcp/tools/template.js.map +0 -1
  354. package/dist/lib/mcp/tools/view.d.ts +0 -6
  355. package/dist/lib/mcp/tools/view.js +0 -77
  356. package/dist/lib/mcp/tools/view.js.map +0 -1
  357. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  358. package/dist/lib/mcp/tools/workflow.js +0 -96
  359. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  360. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  361. package/dist/lib/pmo/storage/categories.js +0 -206
  362. package/dist/lib/pmo/storage/categories.js.map +0 -1
  363. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  364. package/dist/lib/pmo/storage/labels.js +0 -347
  365. package/dist/lib/pmo/storage/labels.js.map +0 -1
  366. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  367. package/dist/lib/pmo/storage/phases.js +0 -393
  368. package/dist/lib/pmo/storage/phases.js.map +0 -1
  369. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  370. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  371. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  372. package/dist/lib/pmo/storage/views.d.ts +0 -57
  373. package/dist/lib/pmo/storage/views.js +0 -456
  374. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -1,218 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import inquirer from 'inquirer';
3
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
4
- import { styles } from '../../lib/styles.js';
5
- import { shouldOutputJson, outputErrorAsJson, outputSuccessAsJson, createMetadata, } from '../../lib/prompt-json.js';
6
- export default class ProjectSpec extends PMOCommand {
7
- static description = 'Manage specs associated with a project (many-to-many)';
8
- static examples = [
9
- '<%= config.bin %> <%= command.id %> my-project',
10
- '<%= config.bin %> <%= command.id %> my-project --add SPEC-001',
11
- '<%= config.bin %> <%= command.id %> my-project --remove SPEC-001',
12
- '<%= config.bin %> <%= command.id %>',
13
- ];
14
- static args = {
15
- projectId: Args.string({
16
- description: 'Project ID',
17
- required: false,
18
- }),
19
- };
20
- static flags = {
21
- ...pmoBaseFlags,
22
- add: Flags.string({
23
- char: 'a',
24
- description: 'Add a spec to this project',
25
- }),
26
- remove: Flags.string({
27
- char: 'r',
28
- description: 'Remove a spec from this project',
29
- }),
30
- };
31
- getPMOOptions() {
32
- return { promptIfMultiple: false };
33
- }
34
- async execute() {
35
- const { args, flags } = await this.parse(ProjectSpec);
36
- // Check if JSON output mode is active
37
- const jsonMode = shouldOutputJson(flags);
38
- // Helper to handle errors in JSON mode
39
- const handleError = (code, message) => {
40
- if (jsonMode) {
41
- outputErrorAsJson(code, message, createMetadata('project spec', flags));
42
- return;
43
- }
44
- this.error(message);
45
- };
46
- // Agent mode config for prompts
47
- const agentConfig = jsonMode ? { flags, commandName: 'project spec' } : null;
48
- // Get all projects
49
- const projects = await this.storage.listProjects();
50
- if (projects.length === 0) {
51
- if (jsonMode) {
52
- outputErrorAsJson('NO_PROJECTS', 'No projects found. Create one with: prlt project create', createMetadata('project spec', flags));
53
- return;
54
- }
55
- this.log(styles.muted('\nNo projects found. Create one with: prlt project create'));
56
- return;
57
- }
58
- let projectId = args.projectId;
59
- // If no project ID provided, prompt for selection
60
- if (!projectId) {
61
- const { selected } = await this.prompt([{
62
- type: 'list',
63
- name: 'selected',
64
- message: 'Select project:',
65
- choices: projects.map(p => ({
66
- name: `${p.id} - ${p.name} (${p.status})`,
67
- value: p.id,
68
- command: `prlt project spec ${p.id} --json`,
69
- })),
70
- }], agentConfig);
71
- projectId = selected;
72
- }
73
- // Validate project exists
74
- const project = projects.find(p => p.id === projectId);
75
- if (!project) {
76
- return handleError('PROJECT_NOT_FOUND', `Project not found: ${projectId}`);
77
- }
78
- // Get specs currently associated with this project
79
- const projectSpecs = await this.storage.getSpecsForProject(projectId);
80
- const projectSpecIds = new Set(projectSpecs.map(s => s.id));
81
- // Handle add flag
82
- if (flags.add) {
83
- const spec = await this.storage.getSpec(flags.add);
84
- if (!spec) {
85
- this.error(`Spec not found: ${flags.add}`);
86
- }
87
- if (projectSpecIds.has(flags.add)) {
88
- this.log(styles.muted(`\nSpec "${flags.add}" is already associated with project "${projectId}".`));
89
- }
90
- else {
91
- await this.storage.linkProjectToSpec(projectId, flags.add);
92
- this.log(styles.success(`\nAdded spec ${styles.emphasis(flags.add)} to project ${styles.emphasis(projectId)}`));
93
- this.log(styles.muted(` Spec: ${spec.title}`));
94
- }
95
- return;
96
- }
97
- // Handle remove flag
98
- if (flags.remove) {
99
- if (!projectSpecIds.has(flags.remove)) {
100
- this.log(styles.muted(`\nSpec "${flags.remove}" is not associated with project "${projectId}".`));
101
- }
102
- else {
103
- await this.storage.unlinkProjectFromSpec(projectId, flags.remove);
104
- this.log(styles.success(`\nRemoved spec ${styles.emphasis(flags.remove)} from project ${styles.emphasis(projectId)}`));
105
- }
106
- return;
107
- }
108
- // Interactive mode: show menu
109
- // In JSON mode, output the menu prompt (no loop - AI will call back)
110
- if (jsonMode) {
111
- const currentSpecs = await this.storage.getSpecsForProject(projectId);
112
- const allSpecs = await this.storage.listSpecs();
113
- const currentSpecIds = new Set(currentSpecs.map(s => s.id));
114
- const availableSpecs = allSpecs.filter(s => !currentSpecIds.has(s.id));
115
- outputSuccessAsJson({
116
- projectId,
117
- projectName: project.name,
118
- currentSpecs: currentSpecs.map(s => ({ id: s.id, title: s.title, status: s.status })),
119
- availableSpecs: availableSpecs.map(s => ({ id: s.id, title: s.title, status: s.status })),
120
- commands: {
121
- addSpec: `prlt project spec ${projectId} --add <SPEC_ID> --json`,
122
- removeSpec: `prlt project spec ${projectId} --remove <SPEC_ID> --json`,
123
- },
124
- }, createMetadata('project spec', flags));
125
- return;
126
- }
127
- let continueLoop = true;
128
- while (continueLoop) {
129
- // Refresh project specs each iteration
130
- // eslint-disable-next-line no-await-in-loop -- Interactive user loop
131
- const currentSpecs = await this.storage.getSpecsForProject(projectId);
132
- const currentSpecIds = new Set(currentSpecs.map(s => s.id));
133
- this.log(styles.title(`\nSpecs for project "${project.name}" (${projectId})`));
134
- if (currentSpecs.length === 0) {
135
- this.log(styles.muted(' No specs associated with this project.'));
136
- }
137
- else {
138
- for (const spec of currentSpecs) {
139
- this.log(` ${styles.code(spec.id)} - ${spec.title} (${spec.status})`);
140
- }
141
- }
142
- // eslint-disable-next-line no-await-in-loop -- Interactive user prompt
143
- const { action } = await this.prompt([{
144
- type: 'list',
145
- name: 'action',
146
- message: `Manage specs for ${projectId}:`,
147
- choices: [
148
- { name: 'Add spec to project', value: 'add' },
149
- { name: 'Remove spec from project', value: 'remove' },
150
- new inquirer.Separator(),
151
- { name: 'Done', value: 'done' },
152
- ],
153
- }], null);
154
- if (action === 'done') {
155
- continueLoop = false;
156
- continue;
157
- }
158
- if (action === 'add') {
159
- // Get all specs not already associated
160
- // eslint-disable-next-line no-await-in-loop -- User action handling
161
- const allSpecs = await this.storage.listSpecs();
162
- const availableSpecs = allSpecs.filter(s => !currentSpecIds.has(s.id));
163
- if (availableSpecs.length === 0) {
164
- this.log(styles.muted('\n All specs are already associated with this project.'));
165
- continue;
166
- }
167
- // eslint-disable-next-line no-await-in-loop -- User selection prompt
168
- const { selected } = await this.prompt([{
169
- type: 'checkbox',
170
- name: 'selected',
171
- message: 'Select specs to add:',
172
- choices: availableSpecs.map(s => ({
173
- name: `${s.id} - ${s.title} (${s.status})`,
174
- value: s.id,
175
- })),
176
- }], null);
177
- if (selected.length === 0) {
178
- this.log(styles.muted(' No specs selected.'));
179
- continue;
180
- }
181
- for (const specId of selected) {
182
- // eslint-disable-next-line no-await-in-loop -- Sequential updates with feedback
183
- await this.storage.linkProjectToSpec(projectId, specId);
184
- this.log(styles.success(` Added ${specId}`));
185
- }
186
- continue;
187
- }
188
- if (action === 'remove') {
189
- if (currentSpecs.length === 0) {
190
- this.log(styles.muted('\n No specs to remove.'));
191
- continue;
192
- }
193
- // eslint-disable-next-line no-await-in-loop -- User selection prompt
194
- const { selected } = await this.prompt([{
195
- type: 'checkbox',
196
- name: 'selected',
197
- message: 'Select specs to remove:',
198
- choices: currentSpecs.map(s => ({
199
- name: `${s.id} - ${s.title} (${s.status})`,
200
- value: s.id,
201
- })),
202
- }], null);
203
- if (selected.length === 0) {
204
- this.log(styles.muted(' No specs selected.'));
205
- continue;
206
- }
207
- for (const specId of selected) {
208
- // eslint-disable-next-line no-await-in-loop -- Sequential updates with feedback
209
- await this.storage.unlinkProjectFromSpec(projectId, specId);
210
- this.log(styles.success(` Removed ${specId}`));
211
- }
212
- continue;
213
- }
214
- }
215
- this.log(styles.muted(`\nView project: prlt project view ${projectId}`));
216
- }
217
- }
218
- //# sourceMappingURL=spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../../src/commands/project/spec.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class ProjectUnarchive extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- };
13
- protected getPMOOptions(): {
14
- promptIfMultiple: boolean;
15
- };
16
- execute(): Promise<void>;
17
- }
@@ -1,55 +0,0 @@
1
- import { Args } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputSuccessAsJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class ProjectUnarchive extends PMOCommand {
6
- static description = 'Unarchive a project (restore to default views)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> old-project',
9
- ];
10
- static args = {
11
- id: Args.string({
12
- description: 'Project ID',
13
- required: true,
14
- }),
15
- };
16
- static flags = {
17
- ...pmoBaseFlags,
18
- };
19
- getPMOOptions() {
20
- return { promptIfMultiple: false };
21
- }
22
- async execute() {
23
- const { args, flags } = await this.parse(ProjectUnarchive);
24
- // Check if JSON output mode is active
25
- const jsonMode = shouldOutputJson(flags);
26
- // Helper to handle errors in JSON mode
27
- const handleError = (code, message) => {
28
- if (jsonMode) {
29
- outputErrorAsJson(code, message, createMetadata('project unarchive', flags));
30
- return;
31
- }
32
- this.error(message);
33
- };
34
- const project = await this.storage.getProject(args.id);
35
- if (!project) {
36
- return handleError('PROJECT_NOT_FOUND', `Project "${args.id}" not found.`);
37
- }
38
- if (!project.isArchived) {
39
- if (jsonMode) {
40
- outputSuccessAsJson({ projectId: project.id, projectName: project.name, alreadyUnarchived: true }, createMetadata('project unarchive', flags));
41
- return;
42
- }
43
- this.log(styles.muted(`Project "${project.name}" is not archived.`));
44
- return;
45
- }
46
- await this.storage.unarchiveProject(args.id);
47
- if (jsonMode) {
48
- outputSuccessAsJson({ projectId: project.id, projectName: project.name, unarchived: true }, createMetadata('project unarchive', flags));
49
- return;
50
- }
51
- this.log(styles.success(`\nUnarchived project "${project.name}"`));
52
- this.log(styles.muted('View project: prlt project view ' + args.id));
53
- }
54
- }
55
- //# sourceMappingURL=unarchive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unarchive.js","sourceRoot":"","sources":["../../../src/commands/project/unarchive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,UAAU;IACtD,MAAM,CAAC,WAAW,GAAG,gDAAgD,CAAC;IAEtE,MAAM,CAAC,QAAQ,GAAG;QAChB,iDAAiD;KAClD,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;KAChB,CAAC;IAEQ,aAAa;QACrB,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE3D,sCAAsC;QACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,uCAAuC;QACvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC7E,OAAM;YACR,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,mBAAmB,EAAE,YAAY,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACb,mBAAmB,CACjB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAC7E,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAC3C,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CACjB,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EACtE,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAC3C,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC"}
@@ -1,19 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class ProjectUpdate extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- };
15
- protected getPMOOptions(): {
16
- promptIfMultiple: boolean;
17
- };
18
- execute(): Promise<void>;
19
- }
@@ -1,161 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputPromptAsJson, outputErrorAsJson, outputSuccessAsJson, createMetadata, buildFormPromptConfig, } from '../../lib/prompt-json.js';
5
- export default class ProjectUpdate extends PMOCommand {
6
- static description = 'Update project metadata (name, description)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> my-project --name "New Project Name"',
9
- '<%= config.bin %> <%= command.id %> my-project --description "Updated description"',
10
- '<%= config.bin %> <%= command.id %> my-project --name "New Name" --description "New description"',
11
- '<%= config.bin %> <%= command.id %> my-project # Interactive mode',
12
- ];
13
- static args = {
14
- id: Args.string({
15
- description: 'Project ID or name',
16
- required: false,
17
- }),
18
- };
19
- static flags = {
20
- ...pmoBaseFlags,
21
- name: Flags.string({
22
- char: 'n',
23
- description: 'New project name',
24
- }),
25
- description: Flags.string({
26
- char: 'd',
27
- description: 'New project description',
28
- }),
29
- };
30
- getPMOOptions() {
31
- return { promptIfMultiple: false };
32
- }
33
- async execute() {
34
- const { args, flags } = await this.parse(ProjectUpdate);
35
- // Check if JSON output mode is active
36
- const jsonMode = shouldOutputJson(flags);
37
- // Helper to handle errors in JSON mode
38
- const handleError = (code, message) => {
39
- if (jsonMode) {
40
- outputErrorAsJson(code, message, createMetadata('project update', flags));
41
- return;
42
- }
43
- this.error(message);
44
- };
45
- // Get project ID - from args or prompt
46
- let projectId = args.id;
47
- if (!projectId) {
48
- // List available projects for selection
49
- const projects = await this.storage.listProjects({ isArchived: false });
50
- if (projects.length === 0) {
51
- return handleError('NO_PROJECTS', 'No projects found. Create one with: prlt project create');
52
- }
53
- const projectChoices = projects.map(p => ({
54
- name: `${p.id} - ${p.name}`,
55
- value: p.id,
56
- command: `prlt project update ${p.id} --json`,
57
- }));
58
- // Handle JSON mode for project selection
59
- if (jsonMode) {
60
- outputPromptAsJson({
61
- type: 'list',
62
- name: 'projectId',
63
- message: 'Select project to update:',
64
- choices: projectChoices,
65
- }, createMetadata('project update', flags));
66
- return;
67
- }
68
- const { selectedProjectId } = await this.prompt([{
69
- type: 'list',
70
- name: 'selectedProjectId',
71
- message: 'Select project to update:',
72
- choices: projectChoices,
73
- }], null);
74
- projectId = selectedProjectId;
75
- }
76
- // Get the project
77
- const project = await this.storage.getProject(projectId);
78
- if (!project) {
79
- return handleError('PROJECT_NOT_FOUND', `Project "${projectId}" not found.`);
80
- }
81
- // Determine what to update
82
- let newName = flags.name;
83
- let newDescription = flags.description;
84
- // If no flags provided, enter interactive mode
85
- if (newName === undefined && newDescription === undefined) {
86
- const fields = [
87
- {
88
- type: 'input',
89
- name: 'name',
90
- message: 'Project name:',
91
- default: project.name,
92
- },
93
- {
94
- type: 'input',
95
- name: 'description',
96
- message: 'Project description:',
97
- default: project.description || '',
98
- },
99
- ];
100
- // Handle JSON mode for field input
101
- if (jsonMode) {
102
- outputPromptAsJson(buildFormPromptConfig(fields), createMetadata('project update', flags));
103
- return;
104
- }
105
- const answers = await this.prompt(fields.map(field => ({
106
- ...field,
107
- validate: field.name === 'name'
108
- ? ((input) => String(input).length > 0 || 'Name is required')
109
- : undefined,
110
- })), null);
111
- newName = answers.name;
112
- newDescription = answers.description;
113
- }
114
- // Build changes object - only include fields that are different
115
- const changes = {};
116
- if (newName !== undefined && newName !== project.name) {
117
- changes.name = newName;
118
- }
119
- if (newDescription !== undefined && newDescription !== (project.description || '')) {
120
- // Allow clearing description with empty string (storage layer converts '' to null)
121
- changes.description = newDescription;
122
- }
123
- // Check if anything changed
124
- if (Object.keys(changes).length === 0) {
125
- if (jsonMode) {
126
- outputSuccessAsJson({
127
- projectId: project.id,
128
- projectName: project.name,
129
- description: project.description,
130
- noChanges: true,
131
- }, createMetadata('project update', flags));
132
- return;
133
- }
134
- this.log(styles.muted('No changes made.'));
135
- return;
136
- }
137
- // Update the project
138
- const updated = await this.storage.updateProject(project.id, changes);
139
- // Output success
140
- if (jsonMode) {
141
- outputSuccessAsJson({
142
- projectId: updated.id,
143
- projectName: updated.name,
144
- description: updated.description,
145
- changes: Object.keys(changes),
146
- }, createMetadata('project update', flags));
147
- return;
148
- }
149
- this.log(styles.success(`\nUpdated project "${styles.emphasis(updated.name)}"`));
150
- this.log(styles.muted(` ID: ${updated.id}`));
151
- if (changes.name) {
152
- this.log(styles.muted(` Name: ${project.name} → ${updated.name}`));
153
- }
154
- if ('description' in changes) {
155
- const oldDesc = project.description || '(none)';
156
- const newDesc = updated.description || '(none)';
157
- this.log(styles.muted(` Description: ${oldDesc} → ${newDesc}`));
158
- }
159
- }
160
- }
161
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/project/update.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class ProjectView extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- };
8
- static flags: {
9
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- };
13
- protected getPMOOptions(): {
14
- promptIfMultiple: boolean;
15
- };
16
- execute(): Promise<void>;
17
- }
@@ -1,107 +0,0 @@
1
- import { Args } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
3
- import { styles, getColumnStyle, getColumnEmoji, formatPriority, formatCategory } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputErrorAsJson, outputSuccessAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class ProjectView extends PMOCommand {
6
- static description = 'View a project\'s board';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> my-project',
9
- '<%= config.bin %> <%= command.id %> # Views default project',
10
- ];
11
- static args = {
12
- id: Args.string({
13
- description: 'Project ID to view - prompts with dropdown if not provided',
14
- required: false,
15
- }),
16
- };
17
- static flags = {
18
- ...pmoBaseFlags,
19
- };
20
- getPMOOptions() {
21
- return { promptIfMultiple: false };
22
- }
23
- async execute() {
24
- const { args, flags } = await this.parse(ProjectView);
25
- // Check if JSON output mode is active
26
- const jsonMode = shouldOutputJson(flags);
27
- // Helper to handle errors in JSON mode
28
- const handleError = (code, message) => {
29
- if (jsonMode) {
30
- outputErrorAsJson(code, message, createMetadata('project view', flags));
31
- return;
32
- }
33
- this.error(message);
34
- };
35
- // Get project ID - prompt if not provided
36
- let projectId = args.id;
37
- if (!projectId) {
38
- const projects = await this.storage.listProjects();
39
- if (projects.length === 0) {
40
- return handleError('NO_PROJECTS', 'No projects found. Create a project first with "prlt project create".');
41
- }
42
- // Use selectFromList helper (handles JSON mode automatically)
43
- const selected = await this.selectFromList({
44
- message: 'Select project to view:',
45
- items: projects,
46
- getName: (p) => `${p.id} - ${p.name}`,
47
- getValue: (p) => p.id,
48
- getCommand: (p) => `prlt project view ${p.id} --json`,
49
- jsonMode: jsonMode ? { flags, commandName: 'project view' } : null,
50
- });
51
- if (!selected) {
52
- return; // Cancelled or JSON mode (already exited)
53
- }
54
- projectId = selected;
55
- }
56
- const project = await this.storage.getProjectBoard(projectId);
57
- if (!project) {
58
- return handleError('PROJECT_NOT_FOUND', `Project "${projectId}" not found.`);
59
- }
60
- // In JSON mode, output project board as structured data
61
- if (jsonMode) {
62
- outputSuccessAsJson({
63
- id: project.id,
64
- name: project.name,
65
- columns: project.columns.map(col => ({
66
- name: col.name,
67
- ticketCount: col.tickets.length,
68
- tickets: col.tickets.map(t => ({
69
- id: t.id,
70
- title: t.title,
71
- priority: t.priority,
72
- category: t.category,
73
- subtasksDone: t.subtasks.filter((s) => s.done).length,
74
- subtasksTotal: t.subtasks.length,
75
- })),
76
- })),
77
- }, createMetadata('project view', flags));
78
- return;
79
- }
80
- this.log(styles.title(`\n${project.name}`));
81
- this.log(styles.muted(`Project: ${project.id}\n`));
82
- for (const column of project.columns) {
83
- const emoji = getColumnEmoji(column.name);
84
- const columnStyle = getColumnStyle(column.name);
85
- this.log(columnStyle(`${emoji} ${column.name} (${column.tickets.length})`));
86
- if (column.tickets.length === 0) {
87
- this.log(styles.muted(' (empty)'));
88
- }
89
- else {
90
- for (const ticket of column.tickets) {
91
- const priority = formatPriority(ticket.priority);
92
- const category = formatCategory(ticket.category);
93
- const badges = [priority, category].filter(Boolean).join(' ');
94
- this.log(` ${styles.code(ticket.id)} ${ticket.title}${badges ? ' ' + badges : ''}`);
95
- // Show subtasks if any
96
- if (ticket.subtasks.length > 0) {
97
- const done = ticket.subtasks.filter((s) => s.done).length;
98
- const total = ticket.subtasks.length;
99
- this.log(styles.muted(` [${done}/${total}] subtasks`));
100
- }
101
- }
102
- }
103
- this.log('');
104
- }
105
- }
106
- }
107
- //# sourceMappingURL=view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/commands/project/view.ts"],"names":[],"mappings":"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"}