@proletariat/cli 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/README.md +561 -251
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +23 -0
  6. package/dist/commands/action/create.d.ts +21 -0
  7. package/dist/commands/action/create.js +126 -0
  8. package/dist/commands/action/delete.d.ts +17 -0
  9. package/dist/commands/action/delete.js +78 -0
  10. package/dist/commands/action/index.d.ts +15 -0
  11. package/dist/commands/action/index.js +107 -0
  12. package/dist/commands/action/list.d.ts +14 -0
  13. package/dist/commands/action/list.js +89 -0
  14. package/dist/commands/action/run.d.ts +19 -0
  15. package/dist/commands/action/run.js +179 -0
  16. package/dist/commands/action/show.d.ts +15 -0
  17. package/dist/commands/action/show.js +47 -0
  18. package/dist/commands/action/update.d.ts +22 -0
  19. package/dist/commands/action/update.js +168 -0
  20. package/dist/commands/agent/index.d.ts +13 -0
  21. package/dist/commands/agent/index.js +131 -0
  22. package/dist/commands/agent/list.d.ts +7 -0
  23. package/dist/commands/agent/list.js +126 -0
  24. package/dist/commands/agent/login.d.ts +16 -0
  25. package/dist/commands/agent/login.js +146 -0
  26. package/dist/commands/agent/rebuild.d.ts +18 -0
  27. package/dist/commands/agent/rebuild.js +133 -0
  28. package/dist/commands/agent/restart.d.ts +17 -0
  29. package/dist/commands/agent/restart.js +116 -0
  30. package/dist/commands/agent/shell.d.ts +23 -0
  31. package/dist/commands/agent/shell.js +378 -0
  32. package/dist/commands/agent/staff/add.d.ts +15 -0
  33. package/dist/commands/agent/staff/add.js +281 -0
  34. package/dist/commands/agent/staff/index.d.ts +14 -0
  35. package/dist/commands/agent/staff/index.js +90 -0
  36. package/dist/commands/agent/staff/list.d.ts +7 -0
  37. package/dist/commands/agent/staff/list.js +90 -0
  38. package/dist/commands/agent/staff/remove.d.ts +16 -0
  39. package/dist/commands/agent/staff/remove.js +137 -0
  40. package/dist/commands/agent/status.d.ts +17 -0
  41. package/dist/commands/agent/status.js +139 -0
  42. package/dist/commands/agent/temp/cleanup.d.ts +23 -0
  43. package/dist/commands/agent/temp/cleanup.js +388 -0
  44. package/dist/commands/agent/temp/index.d.ts +14 -0
  45. package/dist/commands/agent/temp/index.js +82 -0
  46. package/dist/commands/agent/temp/list.d.ts +7 -0
  47. package/dist/commands/agent/temp/list.js +108 -0
  48. package/dist/commands/agent/themes/add-names.d.ts +10 -0
  49. package/dist/commands/agent/themes/add-names.js +67 -0
  50. package/dist/commands/agent/themes/create.d.ts +13 -0
  51. package/dist/commands/agent/themes/create.js +66 -0
  52. package/dist/commands/agent/themes/index.d.ts +9 -0
  53. package/dist/commands/agent/themes/index.js +194 -0
  54. package/dist/commands/agent/themes/list.d.ts +6 -0
  55. package/dist/commands/agent/themes/list.js +41 -0
  56. package/dist/commands/agent/themes/set.d.ts +12 -0
  57. package/dist/commands/agent/themes/set.js +77 -0
  58. package/dist/commands/agent/visit.d.ts +16 -0
  59. package/dist/commands/agent/visit.js +88 -0
  60. package/dist/commands/autocomplete/setup.d.ts +14 -0
  61. package/dist/commands/autocomplete/setup.js +154 -0
  62. package/dist/commands/board/index.d.ts +17 -0
  63. package/dist/commands/board/index.js +255 -0
  64. package/dist/commands/board/watch.d.ts +13 -0
  65. package/dist/commands/board/watch.js +52 -0
  66. package/dist/commands/branch/create.d.ts +50 -0
  67. package/dist/commands/branch/create.js +624 -0
  68. package/dist/commands/branch/index.d.ts +13 -0
  69. package/dist/commands/branch/index.js +50 -0
  70. package/dist/commands/branch/list.d.ts +17 -0
  71. package/dist/commands/branch/list.js +120 -0
  72. package/dist/commands/branch/validate.d.ts +15 -0
  73. package/dist/commands/branch/validate.js +73 -0
  74. package/dist/commands/commit.d.ts +71 -0
  75. package/dist/commands/commit.js +499 -0
  76. package/dist/commands/docker/clean.d.ts +13 -0
  77. package/dist/commands/docker/clean.js +224 -0
  78. package/dist/commands/docker/index.d.ts +19 -0
  79. package/dist/commands/docker/index.js +274 -0
  80. package/dist/commands/docker/list.d.ts +16 -0
  81. package/dist/commands/docker/list.js +200 -0
  82. package/dist/commands/docker/logs.d.ts +14 -0
  83. package/dist/commands/docker/logs.js +118 -0
  84. package/dist/commands/docker/prune.d.ts +14 -0
  85. package/dist/commands/docker/prune.js +211 -0
  86. package/dist/commands/docker/restart.d.ts +14 -0
  87. package/dist/commands/docker/restart.js +129 -0
  88. package/dist/commands/docker/shell.d.ts +14 -0
  89. package/dist/commands/docker/shell.js +103 -0
  90. package/dist/commands/docker/start.d.ts +12 -0
  91. package/dist/commands/docker/start.js +92 -0
  92. package/dist/commands/docker/status.d.ts +7 -0
  93. package/dist/commands/docker/status.js +40 -0
  94. package/dist/commands/docker/stop.d.ts +14 -0
  95. package/dist/commands/docker/stop.js +134 -0
  96. package/dist/commands/docker/sync.d.ts +15 -0
  97. package/dist/commands/docker/sync.js +112 -0
  98. package/dist/commands/epic/activate.d.ts +13 -0
  99. package/dist/commands/epic/activate.js +118 -0
  100. package/dist/commands/epic/archive.d.ts +14 -0
  101. package/dist/commands/epic/archive.js +132 -0
  102. package/dist/commands/epic/create.d.ts +15 -0
  103. package/dist/commands/epic/create.js +137 -0
  104. package/dist/commands/epic/index.d.ts +13 -0
  105. package/dist/commands/epic/index.js +88 -0
  106. package/dist/commands/epic/link/block.d.ts +14 -0
  107. package/dist/commands/epic/link/block.js +79 -0
  108. package/dist/commands/epic/link/duplicates.d.ts +14 -0
  109. package/dist/commands/epic/link/duplicates.js +66 -0
  110. package/dist/commands/epic/link/index.d.ts +19 -0
  111. package/dist/commands/epic/link/index.js +242 -0
  112. package/dist/commands/epic/link/relates.d.ts +14 -0
  113. package/dist/commands/epic/link/relates.js +66 -0
  114. package/dist/commands/epic/link/remove.d.ts +16 -0
  115. package/dist/commands/epic/link/remove.js +89 -0
  116. package/dist/commands/epic/list.d.ts +11 -0
  117. package/dist/commands/epic/list.js +87 -0
  118. package/dist/commands/epic/move.d.ts +15 -0
  119. package/dist/commands/epic/move.js +184 -0
  120. package/dist/commands/epic/progress.d.ts +16 -0
  121. package/dist/commands/epic/progress.js +166 -0
  122. package/dist/commands/epic/project.d.ts +15 -0
  123. package/dist/commands/epic/project.js +219 -0
  124. package/dist/commands/epic/reorder.d.ts +21 -0
  125. package/dist/commands/epic/reorder.js +160 -0
  126. package/dist/commands/epic/spec.d.ts +15 -0
  127. package/dist/commands/epic/spec.js +191 -0
  128. package/dist/commands/epic/ticket.d.ts +18 -0
  129. package/dist/commands/epic/ticket.js +291 -0
  130. package/dist/commands/epic/view.d.ts +13 -0
  131. package/dist/commands/epic/view.js +117 -0
  132. package/dist/commands/execution/index.d.ts +13 -0
  133. package/dist/commands/execution/index.js +70 -0
  134. package/dist/commands/execution/list.d.ts +15 -0
  135. package/dist/commands/execution/list.js +144 -0
  136. package/dist/commands/execution/logs.d.ts +18 -0
  137. package/dist/commands/execution/logs.js +161 -0
  138. package/dist/commands/execution/stop.d.ts +22 -0
  139. package/dist/commands/execution/stop.js +248 -0
  140. package/dist/commands/gh/index.d.ts +9 -0
  141. package/dist/commands/gh/index.js +53 -0
  142. package/dist/commands/gh/login.d.ts +6 -0
  143. package/dist/commands/gh/login.js +57 -0
  144. package/dist/commands/gh/status.d.ts +6 -0
  145. package/dist/commands/gh/status.js +48 -0
  146. package/dist/commands/gh/token.d.ts +6 -0
  147. package/dist/commands/gh/token.js +59 -0
  148. package/dist/commands/init.d.ts +26 -0
  149. package/dist/commands/init.js +200 -0
  150. package/dist/commands/phase/create.d.ts +22 -0
  151. package/dist/commands/phase/create.js +123 -0
  152. package/dist/commands/phase/delete.d.ts +17 -0
  153. package/dist/commands/phase/delete.js +73 -0
  154. package/dist/commands/phase/list.d.ts +12 -0
  155. package/dist/commands/phase/list.js +76 -0
  156. package/dist/commands/phase/move.d.ts +17 -0
  157. package/dist/commands/phase/move.js +115 -0
  158. package/dist/commands/phase/template/apply.d.ts +17 -0
  159. package/dist/commands/phase/template/apply.js +106 -0
  160. package/dist/commands/phase/template/create.d.ts +16 -0
  161. package/dist/commands/phase/template/create.js +58 -0
  162. package/dist/commands/phase/template/delete.d.ts +17 -0
  163. package/dist/commands/phase/template/delete.js +98 -0
  164. package/dist/commands/phase/template/index.d.ts +15 -0
  165. package/dist/commands/phase/template/index.js +128 -0
  166. package/dist/commands/phase/template/list.d.ts +16 -0
  167. package/dist/commands/phase/template/list.js +95 -0
  168. package/dist/commands/phase/template/update.d.ts +17 -0
  169. package/dist/commands/phase/template/update.js +89 -0
  170. package/dist/commands/phase/update.d.ts +23 -0
  171. package/dist/commands/phase/update.js +174 -0
  172. package/dist/commands/pmo/init.d.ts +25 -0
  173. package/dist/commands/pmo/init.js +341 -0
  174. package/dist/commands/pr/create.d.ts +17 -0
  175. package/dist/commands/pr/create.js +242 -0
  176. package/dist/commands/pr/index.d.ts +9 -0
  177. package/dist/commands/pr/index.js +68 -0
  178. package/dist/commands/pr/link.d.ts +14 -0
  179. package/dist/commands/pr/link.js +212 -0
  180. package/dist/commands/pr/status.d.ts +12 -0
  181. package/dist/commands/pr/status.js +161 -0
  182. package/dist/commands/project/archive.d.ts +17 -0
  183. package/dist/commands/project/archive.js +83 -0
  184. package/dist/commands/project/create.d.ts +22 -0
  185. package/dist/commands/project/create.js +143 -0
  186. package/dist/commands/project/delete.d.ts +17 -0
  187. package/dist/commands/project/delete.js +128 -0
  188. package/dist/commands/project/index.d.ts +13 -0
  189. package/dist/commands/project/index.js +64 -0
  190. package/dist/commands/project/list.d.ts +14 -0
  191. package/dist/commands/project/list.js +96 -0
  192. package/dist/commands/project/spec.d.ts +18 -0
  193. package/dist/commands/project/spec.js +216 -0
  194. package/dist/commands/project/unarchive.d.ts +15 -0
  195. package/dist/commands/project/unarchive.js +35 -0
  196. package/dist/commands/project/view.d.ts +16 -0
  197. package/dist/commands/project/view.js +94 -0
  198. package/dist/commands/repo/add.d.ts +21 -0
  199. package/dist/commands/repo/add.js +118 -0
  200. package/dist/commands/repo/index.d.ts +13 -0
  201. package/dist/commands/repo/index.js +114 -0
  202. package/dist/commands/repo/list.d.ts +13 -0
  203. package/dist/commands/repo/list.js +96 -0
  204. package/dist/commands/repo/remove.d.ts +23 -0
  205. package/dist/commands/repo/remove.js +217 -0
  206. package/dist/commands/repo/view.d.ts +15 -0
  207. package/dist/commands/repo/view.js +99 -0
  208. package/dist/commands/session/attach.d.ts +40 -0
  209. package/dist/commands/session/attach.js +307 -0
  210. package/dist/commands/session/index.d.ts +13 -0
  211. package/dist/commands/session/index.js +64 -0
  212. package/dist/commands/session/list.d.ts +21 -0
  213. package/dist/commands/session/list.js +181 -0
  214. package/dist/commands/spec/create.d.ts +19 -0
  215. package/dist/commands/spec/create.js +130 -0
  216. package/dist/commands/spec/index.d.ts +13 -0
  217. package/dist/commands/spec/index.js +68 -0
  218. package/dist/commands/spec/link/depends.d.ts +14 -0
  219. package/dist/commands/spec/link/depends.js +64 -0
  220. package/dist/commands/spec/link/duplicates.d.ts +14 -0
  221. package/dist/commands/spec/link/duplicates.js +63 -0
  222. package/dist/commands/spec/link/index.d.ts +19 -0
  223. package/dist/commands/spec/link/index.js +200 -0
  224. package/dist/commands/spec/link/relates.d.ts +14 -0
  225. package/dist/commands/spec/link/relates.js +63 -0
  226. package/dist/commands/spec/link/remove.d.ts +16 -0
  227. package/dist/commands/spec/link/remove.js +94 -0
  228. package/dist/commands/spec/list.d.ts +12 -0
  229. package/dist/commands/spec/list.js +75 -0
  230. package/dist/commands/spec/plan.d.ts +15 -0
  231. package/dist/commands/spec/plan.js +108 -0
  232. package/dist/commands/spec/ticket.d.ts +18 -0
  233. package/dist/commands/spec/ticket.js +160 -0
  234. package/dist/commands/spec/view.d.ts +15 -0
  235. package/dist/commands/spec/view.js +163 -0
  236. package/dist/commands/status/create.d.ts +21 -0
  237. package/dist/commands/status/create.js +140 -0
  238. package/dist/commands/status/delete.d.ts +13 -0
  239. package/dist/commands/status/delete.js +77 -0
  240. package/dist/commands/status/index.d.ts +14 -0
  241. package/dist/commands/status/index.js +91 -0
  242. package/dist/commands/status/list.d.ts +12 -0
  243. package/dist/commands/status/list.js +93 -0
  244. package/dist/commands/status/move.d.ts +14 -0
  245. package/dist/commands/status/move.js +120 -0
  246. package/dist/commands/status/update.d.ts +20 -0
  247. package/dist/commands/status/update.js +180 -0
  248. package/dist/commands/template/delete.d.ts +15 -0
  249. package/dist/commands/template/delete.js +142 -0
  250. package/dist/commands/template/index.d.ts +10 -0
  251. package/dist/commands/template/index.js +64 -0
  252. package/dist/commands/template/list.d.ts +18 -0
  253. package/dist/commands/template/list.js +157 -0
  254. package/dist/commands/template/phase/apply.d.ts +14 -0
  255. package/dist/commands/template/phase/apply.js +41 -0
  256. package/dist/commands/template/phase/create.d.ts +12 -0
  257. package/dist/commands/template/phase/create.js +29 -0
  258. package/dist/commands/template/phase/delete.d.ts +13 -0
  259. package/dist/commands/template/phase/delete.js +34 -0
  260. package/dist/commands/template/phase/index.d.ts +10 -0
  261. package/dist/commands/template/phase/index.js +62 -0
  262. package/dist/commands/template/phase/list.d.ts +11 -0
  263. package/dist/commands/template/phase/list.js +34 -0
  264. package/dist/commands/template/phase/update.d.ts +13 -0
  265. package/dist/commands/template/phase/update.js +35 -0
  266. package/dist/commands/template/ticket/apply.d.ts +17 -0
  267. package/dist/commands/template/ticket/apply.js +58 -0
  268. package/dist/commands/template/ticket/delete.d.ts +13 -0
  269. package/dist/commands/template/ticket/delete.js +34 -0
  270. package/dist/commands/template/ticket/index.d.ts +10 -0
  271. package/dist/commands/template/ticket/index.js +62 -0
  272. package/dist/commands/template/ticket/list.d.ts +11 -0
  273. package/dist/commands/template/ticket/list.js +34 -0
  274. package/dist/commands/template/ticket/save.d.ts +13 -0
  275. package/dist/commands/template/ticket/save.js +35 -0
  276. package/dist/commands/ticket/bulk.d.ts +13 -0
  277. package/dist/commands/ticket/bulk.js +145 -0
  278. package/dist/commands/ticket/complete.d.ts +16 -0
  279. package/dist/commands/ticket/complete.js +170 -0
  280. package/dist/commands/ticket/create.d.ts +22 -0
  281. package/dist/commands/ticket/create.js +390 -0
  282. package/dist/commands/ticket/delete.d.ts +16 -0
  283. package/dist/commands/ticket/delete.js +178 -0
  284. package/dist/commands/ticket/edit.d.ts +27 -0
  285. package/dist/commands/ticket/edit.js +322 -0
  286. package/dist/commands/ticket/epic.d.ts +20 -0
  287. package/dist/commands/ticket/epic.js +333 -0
  288. package/dist/commands/ticket/index.d.ts +13 -0
  289. package/dist/commands/ticket/index.js +103 -0
  290. package/dist/commands/ticket/link/block.d.ts +14 -0
  291. package/dist/commands/ticket/link/block.js +94 -0
  292. package/dist/commands/ticket/link/duplicates.d.ts +14 -0
  293. package/dist/commands/ticket/link/duplicates.js +93 -0
  294. package/dist/commands/ticket/link/index.d.ts +19 -0
  295. package/dist/commands/ticket/link/index.js +239 -0
  296. package/dist/commands/ticket/link/relates.d.ts +14 -0
  297. package/dist/commands/ticket/link/relates.js +93 -0
  298. package/dist/commands/ticket/link/remove.d.ts +16 -0
  299. package/dist/commands/ticket/link/remove.js +128 -0
  300. package/dist/commands/ticket/list.d.ts +24 -0
  301. package/dist/commands/ticket/list.js +431 -0
  302. package/dist/commands/ticket/move.d.ts +18 -0
  303. package/dist/commands/ticket/move.js +212 -0
  304. package/dist/commands/ticket/project.d.ts +18 -0
  305. package/dist/commands/ticket/project.js +254 -0
  306. package/dist/commands/ticket/reassign.d.ts +19 -0
  307. package/dist/commands/ticket/reassign.js +279 -0
  308. package/dist/commands/ticket/spec.d.ts +18 -0
  309. package/dist/commands/ticket/spec.js +259 -0
  310. package/dist/commands/ticket/status.d.ts +13 -0
  311. package/dist/commands/ticket/status.js +87 -0
  312. package/dist/commands/ticket/template/apply.d.ts +25 -0
  313. package/dist/commands/ticket/template/apply.js +249 -0
  314. package/dist/commands/ticket/template/create.d.ts +19 -0
  315. package/dist/commands/ticket/template/create.js +210 -0
  316. package/dist/commands/ticket/template/delete.d.ts +17 -0
  317. package/dist/commands/ticket/template/delete.js +92 -0
  318. package/dist/commands/ticket/template/index.d.ts +15 -0
  319. package/dist/commands/ticket/template/index.js +118 -0
  320. package/dist/commands/ticket/template/list.d.ts +16 -0
  321. package/dist/commands/ticket/template/list.js +110 -0
  322. package/dist/commands/ticket/template/save.d.ts +14 -0
  323. package/dist/commands/ticket/template/save.js +110 -0
  324. package/dist/commands/ticket/update.d.ts +18 -0
  325. package/dist/commands/ticket/update.js +325 -0
  326. package/dist/commands/ticket/view.d.ts +13 -0
  327. package/dist/commands/ticket/view.js +80 -0
  328. package/dist/commands/whoami.d.ts +9 -0
  329. package/dist/commands/whoami.js +103 -0
  330. package/dist/commands/work/complete.d.ts +13 -0
  331. package/dist/commands/work/complete.js +121 -0
  332. package/dist/commands/work/index.d.ts +13 -0
  333. package/dist/commands/work/index.js +70 -0
  334. package/dist/commands/work/ready.d.ts +24 -0
  335. package/dist/commands/work/ready.js +290 -0
  336. package/dist/commands/work/revise.d.ts +19 -0
  337. package/dist/commands/work/revise.js +377 -0
  338. package/dist/commands/work/spawn-all.d.ts +17 -0
  339. package/dist/commands/work/spawn-all.js +58 -0
  340. package/dist/commands/work/spawn.d.ts +29 -0
  341. package/dist/commands/work/spawn.js +728 -0
  342. package/dist/commands/work/start.d.ts +39 -0
  343. package/dist/commands/work/start.js +1393 -0
  344. package/dist/commands/work/watch.d.ts +31 -0
  345. package/dist/commands/work/watch.js +359 -0
  346. package/dist/commands/workflow/create.d.ts +18 -0
  347. package/dist/commands/workflow/create.js +119 -0
  348. package/dist/commands/workflow/delete.d.ts +17 -0
  349. package/dist/commands/workflow/delete.js +119 -0
  350. package/dist/commands/workflow/index.d.ts +15 -0
  351. package/dist/commands/workflow/index.js +75 -0
  352. package/dist/commands/workflow/list.d.ts +15 -0
  353. package/dist/commands/workflow/list.js +75 -0
  354. package/dist/commands/workflow/switch.d.ts +13 -0
  355. package/dist/commands/workflow/switch.js +117 -0
  356. package/dist/commands/workflow/view.d.ts +16 -0
  357. package/dist/commands/workflow/view.js +114 -0
  358. package/dist/commands/workspace/add.d.ts +12 -0
  359. package/dist/commands/workspace/add.js +74 -0
  360. package/dist/commands/workspace/list.d.ts +9 -0
  361. package/dist/commands/workspace/list.js +153 -0
  362. package/dist/commands/workspace/remove.d.ts +13 -0
  363. package/dist/commands/workspace/remove.js +98 -0
  364. package/dist/commands/workspace/use.d.ts +12 -0
  365. package/dist/commands/workspace/use.js +111 -0
  366. package/dist/hooks/init.d.ts +11 -0
  367. package/dist/hooks/init.js +57 -0
  368. package/dist/index.d.ts +1 -0
  369. package/dist/index.js +1 -0
  370. package/dist/lib/agents/commands.d.ts +189 -0
  371. package/dist/lib/agents/commands.js +893 -0
  372. package/dist/lib/agents/index.d.ts +54 -0
  373. package/dist/lib/agents/index.js +382 -0
  374. package/dist/lib/branch/index.d.ts +120 -0
  375. package/dist/lib/branch/index.js +334 -0
  376. package/dist/lib/colors.d.ts +94 -0
  377. package/dist/lib/colors.js +68 -0
  378. package/dist/lib/commands/docker-command.d.ts +21 -0
  379. package/dist/lib/commands/docker-command.js +27 -0
  380. package/dist/lib/database/index.d.ts +176 -0
  381. package/dist/lib/database/index.js +581 -0
  382. package/dist/lib/docker/resolve.d.ts +38 -0
  383. package/dist/lib/docker/resolve.js +175 -0
  384. package/dist/lib/execution/config.d.ts +150 -0
  385. package/dist/lib/execution/config.js +541 -0
  386. package/dist/lib/execution/devcontainer.d.ts +85 -0
  387. package/dist/lib/execution/devcontainer.js +594 -0
  388. package/dist/lib/execution/index.d.ts +10 -0
  389. package/dist/lib/execution/index.js +10 -0
  390. package/dist/lib/execution/runners.d.ts +53 -0
  391. package/dist/lib/execution/runners.js +1182 -0
  392. package/dist/lib/execution/spawner.d.ts +85 -0
  393. package/dist/lib/execution/spawner.js +548 -0
  394. package/dist/lib/execution/storage.d.ts +159 -0
  395. package/dist/lib/execution/storage.js +425 -0
  396. package/dist/lib/execution/types.d.ts +145 -0
  397. package/dist/lib/execution/types.js +157 -0
  398. package/dist/lib/init/index.d.ts +75 -0
  399. package/dist/lib/init/index.js +355 -0
  400. package/dist/lib/machine-config.d.ts +170 -0
  401. package/dist/lib/machine-config.js +386 -0
  402. package/dist/lib/pmo/base-command.d.ts +195 -0
  403. package/dist/lib/pmo/base-command.js +319 -0
  404. package/dist/lib/pmo/create-spec-folders.d.ts +43 -0
  405. package/dist/lib/pmo/create-spec-folders.js +64 -0
  406. package/dist/lib/pmo/epic-files.d.ts +56 -0
  407. package/dist/lib/pmo/epic-files.js +195 -0
  408. package/dist/lib/pmo/find-pmo.d.ts +14 -0
  409. package/dist/lib/pmo/find-pmo.js +172 -0
  410. package/dist/lib/pmo/index.d.ts +109 -0
  411. package/dist/lib/pmo/index.js +501 -0
  412. package/dist/lib/pmo/markdown.d.ts +31 -0
  413. package/dist/lib/pmo/markdown.js +245 -0
  414. package/dist/lib/pmo/pmo-context.d.ts +27 -0
  415. package/dist/lib/pmo/pmo-context.js +44 -0
  416. package/dist/lib/pmo/schema.d.ts +82 -0
  417. package/dist/lib/pmo/schema.js +531 -0
  418. package/dist/lib/pmo/spec-parser.d.ts +25 -0
  419. package/dist/lib/pmo/spec-parser.js +205 -0
  420. package/dist/lib/pmo/spec-types.d.ts +43 -0
  421. package/dist/lib/pmo/spec-types.js +7 -0
  422. package/dist/lib/pmo/storage/actions.d.ts +34 -0
  423. package/dist/lib/pmo/storage/actions.js +177 -0
  424. package/dist/lib/pmo/storage/base.d.ts +47 -0
  425. package/dist/lib/pmo/storage/base.js +858 -0
  426. package/dist/lib/pmo/storage/dependencies.d.ts +61 -0
  427. package/dist/lib/pmo/storage/dependencies.js +267 -0
  428. package/dist/lib/pmo/storage/epics.d.ts +46 -0
  429. package/dist/lib/pmo/storage/epics.js +243 -0
  430. package/dist/lib/pmo/storage/helpers.d.ts +33 -0
  431. package/dist/lib/pmo/storage/helpers.js +148 -0
  432. package/dist/lib/pmo/storage/index.d.ts +186 -0
  433. package/dist/lib/pmo/storage/index.js +689 -0
  434. package/dist/lib/pmo/storage/phases.d.ts +65 -0
  435. package/dist/lib/pmo/storage/phases.js +392 -0
  436. package/dist/lib/pmo/storage/projects.d.ts +79 -0
  437. package/dist/lib/pmo/storage/projects.js +303 -0
  438. package/dist/lib/pmo/storage/specs.d.ts +77 -0
  439. package/dist/lib/pmo/storage/specs.js +389 -0
  440. package/dist/lib/pmo/storage/statuses.d.ts +63 -0
  441. package/dist/lib/pmo/storage/statuses.js +404 -0
  442. package/dist/lib/pmo/storage/subtasks.d.ts +37 -0
  443. package/dist/lib/pmo/storage/subtasks.js +184 -0
  444. package/dist/lib/pmo/storage/templates.d.ts +40 -0
  445. package/dist/lib/pmo/storage/templates.js +210 -0
  446. package/dist/lib/pmo/storage/tickets.d.ts +57 -0
  447. package/dist/lib/pmo/storage/tickets.js +453 -0
  448. package/dist/lib/pmo/storage/types.d.ts +200 -0
  449. package/dist/lib/pmo/storage/types.js +5 -0
  450. package/dist/lib/pmo/storage/views.d.ts +44 -0
  451. package/dist/lib/pmo/storage/views.js +355 -0
  452. package/dist/lib/pmo/storage-sqlite.d.ts +7 -0
  453. package/dist/lib/pmo/storage-sqlite.js +7 -0
  454. package/dist/lib/pmo/sync-manager.d.ts +92 -0
  455. package/dist/lib/pmo/sync-manager.js +229 -0
  456. package/dist/lib/pmo/types.d.ts +710 -0
  457. package/dist/lib/pmo/types.js +108 -0
  458. package/dist/lib/pmo/utils.d.ts +122 -0
  459. package/dist/lib/pmo/utils.js +174 -0
  460. package/dist/lib/pmo/watcher.d.ts +43 -0
  461. package/dist/lib/pmo/watcher.js +208 -0
  462. package/dist/lib/pr/index.d.ts +150 -0
  463. package/dist/lib/pr/index.js +483 -0
  464. package/dist/lib/prompt-json.d.ts +231 -0
  465. package/dist/lib/prompt-json.js +213 -0
  466. package/dist/lib/repos/index.d.ts +81 -0
  467. package/dist/lib/repos/index.js +679 -0
  468. package/dist/lib/styles.d.ts +98 -0
  469. package/dist/lib/styles.js +195 -0
  470. package/dist/lib/themes.d.ts +128 -0
  471. package/dist/lib/themes.js +301 -0
  472. package/dist/lib/ui/BoardUI.d.ts +21 -0
  473. package/dist/lib/ui/BoardUI.js +85 -0
  474. package/dist/lib/ui/ClaimTicketUI.d.ts +17 -0
  475. package/dist/lib/ui/ClaimTicketUI.js +64 -0
  476. package/dist/lib/ui/CreateTicketUI.d.ts +13 -0
  477. package/dist/lib/ui/CreateTicketUI.js +101 -0
  478. package/dist/lib/workspace.d.ts +66 -0
  479. package/dist/lib/workspace.js +204 -0
  480. package/oclif.manifest.json +10593 -0
  481. package/package.json +103 -56
  482. package/LICENSE +0 -21
  483. package/dist/bin/prlt.d.ts +0 -11
  484. package/dist/bin/prlt.d.ts.map +0 -1
  485. package/dist/bin/prlt.js +0 -144
  486. package/dist/bin/prlt.js.map +0 -1
  487. package/dist/lib/config/index.d.ts +0 -14
  488. package/dist/lib/config/index.d.ts.map +0 -1
  489. package/dist/lib/config/index.js +0 -142
  490. package/dist/lib/config/index.js.map +0 -1
  491. package/dist/lib/config/upgrade.d.ts +0 -2
  492. package/dist/lib/config/upgrade.d.ts.map +0 -1
  493. package/dist/lib/config/upgrade.js +0 -248
  494. package/dist/lib/config/upgrade.js.map +0 -1
  495. package/dist/lib/themes/index.d.ts +0 -8
  496. package/dist/lib/themes/index.d.ts.map +0 -1
  497. package/dist/lib/themes/index.js +0 -80
  498. package/dist/lib/themes/index.js.map +0 -1
  499. package/dist/lib/utils/helpers.d.ts +0 -4
  500. package/dist/lib/utils/helpers.d.ts.map +0 -1
  501. package/dist/lib/utils/helpers.js +0 -39
  502. package/dist/lib/utils/helpers.js.map +0 -1
  503. package/dist/lib/utils/logger.d.ts +0 -4
  504. package/dist/lib/utils/logger.d.ts.map +0 -1
  505. package/dist/lib/utils/logger.js +0 -28
  506. package/dist/lib/utils/logger.js.map +0 -1
  507. package/dist/lib/workspace/index.d.ts +0 -13
  508. package/dist/lib/workspace/index.d.ts.map +0 -1
  509. package/dist/lib/workspace/index.js +0 -116
  510. package/dist/lib/workspace/index.js.map +0 -1
  511. package/dist/lib/worktree/index.d.ts +0 -7
  512. package/dist/lib/worktree/index.d.ts.map +0 -1
  513. package/dist/lib/worktree/index.js +0 -362
  514. package/dist/lib/worktree/index.js.map +0 -1
  515. package/dist/lib/worktree/migrate.d.ts +0 -2
  516. package/dist/lib/worktree/migrate.d.ts.map +0 -1
  517. package/dist/lib/worktree/migrate.js +0 -214
  518. package/dist/lib/worktree/migrate.js.map +0 -1
  519. package/dist/lib/worktree/repair.d.ts +0 -3
  520. package/dist/lib/worktree/repair.d.ts.map +0 -1
  521. package/dist/lib/worktree/repair.js +0 -320
  522. package/dist/lib/worktree/repair.js.map +0 -1
  523. package/dist/types/index.d.ts +0 -57
  524. package/dist/types/index.d.ts.map +0 -1
  525. package/dist/types/index.js +0 -3
  526. package/dist/types/index.js.map +0 -1
@@ -0,0 +1,67 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { getWorkspaceInfo } from '../../../lib/agents/commands.js';
4
+ import { isValidAgentName, normalizeAgentName } from '../../../lib/themes.js';
5
+ import { getTheme, addThemeNames, getThemeNames } from '../../../lib/database/index.js';
6
+ export default class ThemesAddNames extends Command {
7
+ static description = 'Add names to a theme';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> greek-gods zeus athena poseidon',
10
+ '<%= config.bin %> <%= command.id %> my-theme agent-a agent-b',
11
+ ];
12
+ static args = {
13
+ theme: Args.string({
14
+ description: 'Theme ID to add names to',
15
+ required: true,
16
+ }),
17
+ };
18
+ static strict = false; // Allow multiple name arguments
19
+ async run() {
20
+ const { args, argv } = await this.parse(ThemesAddNames);
21
+ try {
22
+ const workspaceInfo = getWorkspaceInfo();
23
+ // Validate theme exists
24
+ const theme = getTheme(workspaceInfo.path, args.theme);
25
+ if (!theme) {
26
+ this.error(`Theme "${args.theme}" not found. Run "prlt agent themes list" to see available themes.`);
27
+ }
28
+ // Get names from remaining arguments (skip the theme arg)
29
+ const rawNames = argv.slice(1);
30
+ if (rawNames.length === 0) {
31
+ this.error('Please provide at least one name to add.');
32
+ }
33
+ // Normalize and validate names
34
+ const validNames = [];
35
+ const normalized = [];
36
+ for (const name of rawNames) {
37
+ const normalizedName = normalizeAgentName(name);
38
+ if (normalizedName && isValidAgentName(normalizedName)) {
39
+ validNames.push(normalizedName);
40
+ if (normalizedName !== name) {
41
+ normalized.push({ original: name, normalized: normalizedName });
42
+ }
43
+ }
44
+ }
45
+ if (validNames.length === 0) {
46
+ this.error('No valid names to add after normalization.');
47
+ }
48
+ // Show normalizations
49
+ if (normalized.length > 0) {
50
+ this.log(chalk.blue('Normalized names:'));
51
+ for (const { original, normalized: norm } of normalized) {
52
+ this.log(chalk.dim(` ${original} → ${norm}`));
53
+ }
54
+ }
55
+ // Add names to theme
56
+ addThemeNames(workspaceInfo.path, theme.id, validNames);
57
+ // Get updated count
58
+ const allNames = getThemeNames(workspaceInfo.path, theme.id);
59
+ this.log(chalk.green(`\n Added ${validNames.length} name(s) to ${theme.display_name}:`));
60
+ this.log(chalk.gray(` ${validNames.join(', ')}`));
61
+ this.log(chalk.gray(`\n Theme now has ${allNames.length} names total.`));
62
+ }
63
+ catch (error) {
64
+ this.error(error instanceof Error ? error.message : String(error));
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ThemesCreate extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ name: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'display-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,66 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { getWorkspaceInfo } from '../../../lib/agents/commands.js';
4
+ import { createTheme, getTheme } from '../../../lib/database/index.js';
5
+ export default class ThemesCreate extends Command {
6
+ static description = 'Create a custom agent theme';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %> greek-gods',
9
+ '<%= config.bin %> <%= command.id %> greek-gods --description "Mount Olympus crew"',
10
+ '<%= config.bin %> <%= command.id %> greek-gods --display-name "Greek Gods"',
11
+ ];
12
+ static args = {
13
+ name: Args.string({
14
+ description: 'Theme name (used as ID, lowercase with hyphens)',
15
+ required: true,
16
+ }),
17
+ };
18
+ static flags = {
19
+ description: Flags.string({
20
+ char: 'd',
21
+ description: 'Theme description',
22
+ }),
23
+ 'display-name': Flags.string({
24
+ description: 'Display name (defaults to formatted name)',
25
+ }),
26
+ };
27
+ async run() {
28
+ const { args, flags } = await this.parse(ThemesCreate);
29
+ try {
30
+ const workspaceInfo = getWorkspaceInfo();
31
+ // Validate theme name format
32
+ const name = args.name.toLowerCase().replace(/\s+/g, '-');
33
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
34
+ this.error('Theme name must be lowercase alphanumeric with optional hyphens.');
35
+ }
36
+ // Check if theme already exists
37
+ const existing = getTheme(workspaceInfo.path, name);
38
+ if (existing) {
39
+ this.error(`Theme "${name}" already exists.`);
40
+ }
41
+ // Create display name from name if not provided
42
+ const displayName = flags['display-name'] || name
43
+ .split('-')
44
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
45
+ .join(' ');
46
+ // Create the theme
47
+ const theme = createTheme(workspaceInfo.path, {
48
+ id: name,
49
+ name: name,
50
+ displayName: displayName,
51
+ description: flags.description,
52
+ builtin: false,
53
+ });
54
+ this.log(chalk.green(`\n Created theme: ${theme.display_name}`));
55
+ this.log(chalk.gray(` ID: ${theme.id}`));
56
+ if (theme.description) {
57
+ this.log(chalk.gray(` ${theme.description}`));
58
+ }
59
+ this.log('');
60
+ this.log(chalk.blue('Add names with: prlt agent themes add-names ' + name + ' <names...>'));
61
+ }
62
+ catch (error) {
63
+ this.error(error instanceof Error ? error.message : String(error));
64
+ }
65
+ }
66
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Themes extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,194 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import { getWorkspaceInfo } from '../../../lib/agents/commands.js';
5
+ import { ensureBuiltinThemes } from '../../../lib/themes.js';
6
+ import { getThemes, getThemeNames } from '../../../lib/database/index.js';
7
+ import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../../lib/prompt-json.js';
8
+ export default class Themes extends Command {
9
+ static description = 'Manage agent naming themes';
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %> list',
12
+ '<%= config.bin %> <%= command.id %> create greek-gods',
13
+ '<%= config.bin %> <%= command.id %> add-names greek-gods zeus athena',
14
+ ];
15
+ static flags = {
16
+ json: Flags.boolean({
17
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
18
+ default: false,
19
+ }),
20
+ };
21
+ async run() {
22
+ const { flags } = await this.parse(Themes);
23
+ // Check if JSON output mode is active
24
+ const jsonMode = shouldOutputJson(flags);
25
+ // Define choices once, use for both JSON and interactive modes
26
+ // Each choice includes the full command for AI agents to execute
27
+ const menuChoices = [
28
+ { id: 'list', name: 'List themes', command: 'prlt agent themes list --format json' },
29
+ { id: 'create', name: 'Create a new theme', command: 'prlt agent themes create --json' },
30
+ { id: 'add-names', name: 'Add names to a theme', command: 'prlt agent themes add-names --json' },
31
+ { id: 'cancel', name: 'Cancel', command: '' },
32
+ ];
33
+ const message = 'What would you like to do?';
34
+ // In JSON mode, output menu prompt with commands for AI agents
35
+ if (jsonMode) {
36
+ outputPromptAsJson(buildPromptConfig('list', 'action', message, menuChoices.map(c => ({
37
+ name: c.name,
38
+ value: c.id,
39
+ command: c.command,
40
+ }))), createMetadata('agent themes', flags));
41
+ return;
42
+ }
43
+ this.log(chalk.bold('\nAgent Themes'));
44
+ this.log(chalk.dim('Optional themed name pools for your agents.\n'));
45
+ const { action } = await inquirer.prompt([{
46
+ type: 'list',
47
+ name: 'action',
48
+ message,
49
+ choices: [
50
+ ...menuChoices.slice(0, 3).map(c => ({ name: c.name, value: c.id })),
51
+ new inquirer.Separator(),
52
+ { name: menuChoices[3].name, value: menuChoices[3].id }
53
+ ]
54
+ }]);
55
+ if (action === 'cancel') {
56
+ this.log(chalk.dim('Cancelled.'));
57
+ return;
58
+ }
59
+ try {
60
+ switch (action) {
61
+ case 'list': {
62
+ const { default: ListCommand } = await import('./list.js');
63
+ const cmd = new ListCommand([], this.config);
64
+ await cmd.run();
65
+ break;
66
+ }
67
+ case 'create': {
68
+ // Prompt for theme name interactively
69
+ const { themeName } = await inquirer.prompt([{
70
+ type: 'input',
71
+ name: 'themeName',
72
+ message: 'Theme name:',
73
+ validate: (input) => {
74
+ if (!input.trim())
75
+ return 'Theme name is required';
76
+ return true;
77
+ }
78
+ }]);
79
+ // Normalize: lowercase, spaces to dashes
80
+ const normalized = themeName.trim().toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
81
+ if (themeName.trim() !== normalized) {
82
+ this.log(chalk.blue(`Normalized: ${themeName.trim()} → ${normalized}`));
83
+ }
84
+ const { default: CreateCommand } = await import('./create.js');
85
+ const cmd = new CreateCommand([normalized], this.config);
86
+ await cmd.run();
87
+ // Prompt to add names immediately
88
+ const { addNamesNow } = await inquirer.prompt([{
89
+ type: 'list',
90
+ name: 'addNamesNow',
91
+ message: 'Add names to this theme now?',
92
+ choices: [
93
+ { name: 'Yes', value: true },
94
+ { name: 'No', value: false },
95
+ ],
96
+ }]);
97
+ if (addNamesNow) {
98
+ const { names } = await inquirer.prompt([{
99
+ type: 'input',
100
+ name: 'names',
101
+ message: 'Enter names (space-separated):',
102
+ validate: (input) => input.trim() ? true : 'At least one name is required'
103
+ }]);
104
+ const args = [normalized, ...names.trim().split(/\s+/)];
105
+ const { default: AddNamesCommand } = await import('./add-names.js');
106
+ const addCmd = new AddNamesCommand(args, this.config);
107
+ await addCmd.run();
108
+ }
109
+ break;
110
+ }
111
+ case 'add-names': {
112
+ // Get available themes and show a selection list
113
+ const workspaceInfo = getWorkspaceInfo();
114
+ ensureBuiltinThemes(workspaceInfo.path);
115
+ const themes = getThemes(workspaceInfo.path);
116
+ if (themes.length === 0) {
117
+ this.log(chalk.yellow('No themes found. Create one first.'));
118
+ return;
119
+ }
120
+ // Build choices with theme info
121
+ const themeChoices = themes.map(t => {
122
+ const names = getThemeNames(workspaceInfo.path, t.id);
123
+ const available = names.filter(n => !n.used).length;
124
+ const builtinTag = t.builtin ? chalk.dim(' [built-in]') : '';
125
+ return {
126
+ name: `${t.display_name}${builtinTag} ${chalk.dim(`(${available} names available)`)}`,
127
+ value: t.id
128
+ };
129
+ });
130
+ // Add option to create new theme
131
+ themeChoices.push(new inquirer.Separator());
132
+ themeChoices.push({ name: chalk.green('+ Create new theme'), value: '__create_new__' });
133
+ const { selectedTheme } = await inquirer.prompt([{
134
+ type: 'list',
135
+ name: 'selectedTheme',
136
+ message: 'Select theme to add names to:',
137
+ choices: themeChoices
138
+ }]);
139
+ // If they want to create a new theme first
140
+ if (selectedTheme === '__create_new__') {
141
+ const { themeName } = await inquirer.prompt([{
142
+ type: 'input',
143
+ name: 'themeName',
144
+ message: 'Theme name:',
145
+ validate: (input) => {
146
+ if (!input.trim())
147
+ return 'Theme name is required';
148
+ return true;
149
+ }
150
+ }]);
151
+ // Normalize: lowercase, spaces to dashes
152
+ const normalizedTheme = themeName.trim().toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
153
+ if (themeName.trim() !== normalizedTheme) {
154
+ this.log(chalk.blue(`Normalized: ${themeName.trim()} → ${normalizedTheme}`));
155
+ }
156
+ const { default: CreateCommand } = await import('./create.js');
157
+ const createCmd = new CreateCommand([normalizedTheme], this.config);
158
+ await createCmd.run();
159
+ // Now prompt for names to add to the new theme
160
+ const { names } = await inquirer.prompt([{
161
+ type: 'input',
162
+ name: 'names',
163
+ message: 'Names to add (space-separated):',
164
+ validate: (input) => input.trim() ? true : 'At least one name is required'
165
+ }]);
166
+ const args = [normalizedTheme, ...names.trim().split(/\s+/)];
167
+ const { default: AddNamesCommand } = await import('./add-names.js');
168
+ const cmd = new AddNamesCommand(args, this.config);
169
+ await cmd.run();
170
+ }
171
+ else {
172
+ // Prompt for names to add
173
+ const { names } = await inquirer.prompt([{
174
+ type: 'input',
175
+ name: 'names',
176
+ message: 'Names to add (space-separated):',
177
+ validate: (input) => input.trim() ? true : 'At least one name is required'
178
+ }]);
179
+ const args = [selectedTheme, ...names.trim().split(/\s+/)];
180
+ const { default: AddNamesCommand } = await import('./add-names.js');
181
+ const cmd = new AddNamesCommand(args, this.config);
182
+ await cmd.run();
183
+ }
184
+ break;
185
+ }
186
+ default:
187
+ this.error(`Unknown action: ${action}`);
188
+ }
189
+ }
190
+ catch (error) {
191
+ this.error(error instanceof Error ? error.message : String(error));
192
+ }
193
+ }
194
+ }
@@ -0,0 +1,6 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ThemesList extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
@@ -0,0 +1,41 @@
1
+ import { Command } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { getWorkspaceInfo } from '../../../lib/agents/commands.js';
4
+ import { ensureBuiltinThemes } from '../../../lib/themes.js';
5
+ import { getThemes, getThemeNames } from '../../../lib/database/index.js';
6
+ export default class ThemesList extends Command {
7
+ static description = 'List available agent themes';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ ];
11
+ async run() {
12
+ try {
13
+ const workspaceInfo = getWorkspaceInfo();
14
+ // Ensure built-in themes are seeded
15
+ ensureBuiltinThemes(workspaceInfo.path);
16
+ const themes = getThemes(workspaceInfo.path);
17
+ if (themes.length === 0) {
18
+ this.log(chalk.yellow('No themes found.'));
19
+ return;
20
+ }
21
+ this.log(chalk.bold('\nAgent Themes\n'));
22
+ for (const theme of themes) {
23
+ const names = getThemeNames(workspaceInfo.path, theme.id);
24
+ const available = names.filter(n => !n.used).length;
25
+ const used = names.filter(n => n.used).length;
26
+ const builtinTag = theme.builtin ? chalk.gray(' [built-in]') : '';
27
+ this.log(` ${chalk.cyan(theme.display_name)}${builtinTag}`);
28
+ this.log(chalk.gray(` ID: ${theme.id}`));
29
+ if (theme.description) {
30
+ this.log(chalk.gray(` ${theme.description}`));
31
+ }
32
+ this.log(chalk.gray(` Names: ${chalk.green(available + ' available')}, ${chalk.yellow(used + ' in use')}`));
33
+ this.log('');
34
+ }
35
+ this.log(chalk.blue('Use: prlt agent add --theme <theme-id>'));
36
+ }
37
+ catch (error) {
38
+ this.error(error instanceof Error ? error.message : String(error));
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ThemesSet extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ theme: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
@@ -0,0 +1,77 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import { getWorkspaceInfo } from '../../../lib/agents/commands.js';
5
+ import { ensureBuiltinThemes } from '../../../lib/themes.js';
6
+ import { getThemes, getAvailableThemeNames, setActiveTheme, getActiveTheme } from '../../../lib/database/index.js';
7
+ import { shouldOutputJson, outputPromptAsJson, createMetadata, buildPromptConfig, } from '../../../lib/prompt-json.js';
8
+ export default class ThemesSet extends Command {
9
+ static description = 'Set the active theme for this workspace';
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %> billionaires',
12
+ '<%= config.bin %> <%= command.id %>',
13
+ ];
14
+ static args = {
15
+ theme: Args.string({
16
+ description: 'Theme ID to set as active',
17
+ required: false,
18
+ }),
19
+ };
20
+ static flags = {
21
+ json: Flags.boolean({
22
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
23
+ default: false,
24
+ }),
25
+ };
26
+ async run() {
27
+ const { args, flags } = await this.parse(ThemesSet);
28
+ // Check if JSON output mode is active
29
+ const jsonMode = shouldOutputJson(flags);
30
+ try {
31
+ const workspaceInfo = getWorkspaceInfo();
32
+ ensureBuiltinThemes(workspaceInfo.path);
33
+ let themeId = args.theme;
34
+ if (!themeId) {
35
+ // Interactive selection
36
+ const themes = getThemes(workspaceInfo.path);
37
+ const currentTheme = getActiveTheme(workspaceInfo.path);
38
+ // In JSON mode, output theme selection prompt
39
+ if (jsonMode) {
40
+ const themeChoices = themes.map(t => {
41
+ const availableCount = getAvailableThemeNames(workspaceInfo.path, t.id).length;
42
+ const isCurrent = currentTheme?.id === t.id;
43
+ return {
44
+ name: `${t.display_name} (${availableCount} available)${isCurrent ? ' āœ“ current' : ''}`,
45
+ value: t.id
46
+ };
47
+ });
48
+ outputPromptAsJson(buildPromptConfig('list', 'theme', 'Select theme for this workspace:', themeChoices), createMetadata('agent themes set', flags));
49
+ return;
50
+ }
51
+ const choices = themes.map(t => {
52
+ const availableCount = getAvailableThemeNames(workspaceInfo.path, t.id).length;
53
+ const isCurrent = currentTheme?.id === t.id;
54
+ return {
55
+ name: `${t.display_name} ${chalk.dim(`(${availableCount} available)`)}${isCurrent ? chalk.green(' āœ“ current') : ''}`,
56
+ value: t.id
57
+ };
58
+ });
59
+ const { selected } = await inquirer.prompt([{
60
+ type: 'list',
61
+ name: 'selected',
62
+ message: 'Select theme for this workspace:',
63
+ choices
64
+ }]);
65
+ themeId = selected;
66
+ }
67
+ setActiveTheme(workspaceInfo.path, themeId);
68
+ const themes = getThemes(workspaceInfo.path);
69
+ const theme = themes.find(t => t.id === themeId);
70
+ this.log(chalk.green(`\nāœ“ Active theme set to: ${theme?.display_name || themeId}`));
71
+ this.log(chalk.dim(' New agents will be selected from this theme.'));
72
+ }
73
+ catch (error) {
74
+ this.error(error instanceof Error ? error.message : String(error));
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,16 @@
1
+ import { PMOCommand } from '../../lib/pmo/index.js';
2
+ export default class Visit extends PMOCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ name: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ protected getPMOOptions(): {
13
+ promptIfMultiple: boolean;
14
+ };
15
+ execute(): Promise<void>;
16
+ }
@@ -0,0 +1,88 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import * as path from 'node:path';
3
+ import inquirer from 'inquirer';
4
+ import { colors } from '../../lib/colors.js';
5
+ import { getWorkspaceInfo } from '../../lib/agents/commands.js';
6
+ import { PMOCommand, pmoBaseFlags } from '../../lib/pmo/index.js';
7
+ import { shouldOutputJson, outputPromptAsJson, outputErrorAsJson, createMetadata, buildPromptConfig, } from '../../lib/prompt-json.js';
8
+ export default class Visit extends PMOCommand {
9
+ static description = 'Navigate to agent directory';
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %> camry',
12
+ '<%= config.bin %> <%= command.id %>',
13
+ ];
14
+ static args = {
15
+ name: Args.string({
16
+ description: 'Agent name to visit',
17
+ required: false,
18
+ }),
19
+ };
20
+ static flags = {
21
+ ...pmoBaseFlags,
22
+ json: Flags.boolean({
23
+ description: 'Output prompt configuration as JSON (for AI agents/scripts)',
24
+ default: false,
25
+ }),
26
+ };
27
+ getPMOOptions() {
28
+ return { promptIfMultiple: false };
29
+ }
30
+ async execute() {
31
+ const { args, flags } = await this.parse(Visit);
32
+ // Check if JSON output mode is active
33
+ const jsonMode = shouldOutputJson(flags);
34
+ // Helper to handle errors in JSON mode
35
+ const handleError = (code, message) => {
36
+ if (jsonMode) {
37
+ outputErrorAsJson(code, message, createMetadata('agent visit', flags));
38
+ this.exit(1);
39
+ }
40
+ this.error(message);
41
+ };
42
+ // Get workspace information
43
+ const workspaceInfo = getWorkspaceInfo();
44
+ if (workspaceInfo.agents.length === 0) {
45
+ if (jsonMode) {
46
+ outputErrorAsJson('NO_AGENTS', 'No agents found. Add agents with "prlt agent add"', createMetadata('agent visit', flags));
47
+ return;
48
+ }
49
+ this.log(colors.warning('No agents found. Add agents with "prlt agent add"'));
50
+ return;
51
+ }
52
+ let agentName = args.name;
53
+ // Interactive mode if no agent specified
54
+ if (!agentName) {
55
+ // In JSON mode, output agent selection prompt
56
+ if (jsonMode) {
57
+ const agentChoices = workspaceInfo.agents.map((agent) => ({ name: agent.name, value: agent.name }));
58
+ outputPromptAsJson(buildPromptConfig('list', 'name', 'Select agent to visit:', agentChoices), createMetadata('agent visit', flags));
59
+ return;
60
+ }
61
+ const { selected } = await inquirer.prompt([
62
+ {
63
+ type: 'list',
64
+ name: 'selected',
65
+ message: 'Select agent to visit:',
66
+ choices: workspaceInfo.agents.map(agent => ({
67
+ name: agent.name,
68
+ value: agent.name
69
+ }))
70
+ }
71
+ ]);
72
+ agentName = selected;
73
+ }
74
+ // Validate agent exists
75
+ const agent = workspaceInfo.agents.find(a => a.name === agentName);
76
+ if (!agent) {
77
+ return handleError('AGENT_NOT_FOUND', `Agent "${agentName}" not found. Available agents: ${workspaceInfo.agents.map(a => a.name).join(', ')}`);
78
+ }
79
+ // Calculate path to agent directory
80
+ const agentDir = path.join(workspaceInfo.agentsPath, agentName);
81
+ const relativePath = path.relative(process.cwd(), agentDir);
82
+ // Display navigation command
83
+ this.log(colors.primary(`šŸ¤– Visiting agent: ${agentName}`));
84
+ this.log(colors.command(`cd ${relativePath}`));
85
+ this.log('');
86
+ this.log(colors.textSecondary('Note: Due to shell limitations, you need to run this command manually.'));
87
+ }
88
+ }
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class AutocompleteSetup extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ install: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ shell: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<void>;
10
+ private detectShell;
11
+ private getShellConfig;
12
+ private showInstructions;
13
+ private installAutocomplete;
14
+ }