@proletariat/cli 0.1.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/README.md +510 -255
  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 +104 -52
  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 -139
  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 -173
  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 -212
  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 -140
  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,355 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { execSync } from 'node:child_process';
4
+ import inquirer from 'inquirer';
5
+ import chalk from 'chalk';
6
+ import { ensureBuiltinThemes, getThemePersistentDir, getThemeEphemeralDir } from '../themes.js';
7
+ import { createAgentWorktrees } from '../agents/index.js';
8
+ import { addRepositoriesToHQ, isInGitRepo } from '../repos/index.js';
9
+ import { createPMO, } from '../pmo/index.js';
10
+ import { createWorkspaceDatabase, addRepositoriesToDatabase, addAgentsToDatabase, createTheme, addThemeNames, setActiveTheme } from '../database/index.js';
11
+ import { ensureMachineConfigDir, registerHeadquarters, getOrganizations, createOrganization, } from '../machine-config.js';
12
+ /**
13
+ * Validate that HQ path is not inside a git repository or another HQ
14
+ * Returns: { valid: true } or { valid: false, reason: string }
15
+ */
16
+ export function validateHQLocation(location) {
17
+ const resolvedPath = path.resolve(location);
18
+ const parentDir = path.dirname(resolvedPath);
19
+ // Check if inside a git repo
20
+ try {
21
+ const gitRoot = execSync('git rev-parse --show-toplevel', {
22
+ cwd: parentDir,
23
+ stdio: 'pipe',
24
+ encoding: 'utf-8'
25
+ }).trim();
26
+ // Use realpath to resolve symlinks and /private prefix on macOS
27
+ const normalizedPath = fs.realpathSync(parentDir);
28
+ const normalizedGitRoot = fs.realpathSync(gitRoot);
29
+ if (normalizedPath.startsWith(normalizedGitRoot)) {
30
+ return { valid: false, reason: 'inside-git' };
31
+ }
32
+ }
33
+ catch {
34
+ // Not in a git repo - this is fine
35
+ }
36
+ // Check if inside an existing HQ (look for .proletariat/config.json with type: 'hq')
37
+ // Note: ~/.proletariat is the machine config, not an HQ, so we check the config type
38
+ let checkDir = parentDir;
39
+ while (checkDir !== '/' && checkDir !== path.dirname(checkDir)) {
40
+ const configPath = path.join(checkDir, '.proletariat', 'config.json');
41
+ if (fs.existsSync(configPath)) {
42
+ try {
43
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
44
+ if (config.type === 'hq') {
45
+ return { valid: false, reason: 'inside-hq' };
46
+ }
47
+ }
48
+ catch {
49
+ // Invalid JSON, skip
50
+ }
51
+ }
52
+ checkDir = path.dirname(checkDir);
53
+ }
54
+ return { valid: true };
55
+ }
56
+ /**
57
+ * Prompt user for HQ name
58
+ */
59
+ export async function promptForHQName() {
60
+ const inGitRepo = isInGitRepo();
61
+ const defaultName = inGitRepo
62
+ ? path.basename(process.cwd()) // Use repo name as default
63
+ : ''; // No default outside repo
64
+ const { name } = await inquirer.prompt([{
65
+ type: 'input',
66
+ name: 'name',
67
+ message: 'HQ name (company, project, or team name):',
68
+ default: defaultName,
69
+ validate: (input) => {
70
+ if (!input.trim())
71
+ return 'Name is required';
72
+ if (!/^[a-zA-Z0-9-_]+$/.test(input)) {
73
+ return 'Name can only contain letters, numbers, hyphens, and underscores';
74
+ }
75
+ return true;
76
+ },
77
+ }]);
78
+ return name;
79
+ }
80
+ /**
81
+ * Check if current directory is inside an HQ and return the HQ root path
82
+ */
83
+ function findContainingHQ() {
84
+ let checkDir = process.cwd();
85
+ while (checkDir !== '/' && checkDir !== path.dirname(checkDir)) {
86
+ const configPath = path.join(checkDir, '.proletariat', 'config.json');
87
+ if (fs.existsSync(configPath)) {
88
+ try {
89
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
90
+ if (config.type === 'hq') {
91
+ return checkDir;
92
+ }
93
+ }
94
+ catch {
95
+ // Invalid JSON, skip
96
+ }
97
+ }
98
+ checkDir = path.dirname(checkDir);
99
+ }
100
+ return null;
101
+ }
102
+ /**
103
+ * Prompt user for HQ location
104
+ */
105
+ export async function promptForHQLocation(hqName) {
106
+ const inGitRepo = isInGitRepo();
107
+ const containingHQ = findContainingHQ();
108
+ const folderName = `${hqName}-hq`;
109
+ // Determine default path based on context
110
+ let defaultPath;
111
+ if (containingHQ) {
112
+ // Inside an HQ - suggest sibling to the HQ
113
+ defaultPath = path.join(path.dirname(containingHQ), folderName);
114
+ }
115
+ else if (inGitRepo) {
116
+ // Inside a git repo - suggest sibling to repo
117
+ defaultPath = path.join('..', folderName);
118
+ }
119
+ else {
120
+ // Nowhere special - suggest subdirectory
121
+ defaultPath = `./${folderName}`;
122
+ }
123
+ while (true) {
124
+ const { location } = await inquirer.prompt([{
125
+ type: 'input',
126
+ name: 'location',
127
+ message: `Where to create HQ [press Enter for ${defaultPath}]:`,
128
+ default: defaultPath,
129
+ }]);
130
+ // Validate location
131
+ const validation = validateHQLocation(location);
132
+ if (!validation.valid) {
133
+ if (validation.reason === 'inside-git') {
134
+ console.log(chalk.red('Cannot create HQ inside a git repository.'));
135
+ }
136
+ else if (validation.reason === 'inside-hq') {
137
+ console.log(chalk.red('Cannot create HQ inside another HQ. No HQ-ception allowed!'));
138
+ }
139
+ continue;
140
+ }
141
+ // Check if directory already exists
142
+ const resolvedPath = path.resolve(location);
143
+ if (fs.existsSync(resolvedPath)) {
144
+ console.log(chalk.red(`Directory ${resolvedPath} already exists.`));
145
+ continue;
146
+ }
147
+ return resolvedPath;
148
+ }
149
+ }
150
+ /**
151
+ * Prompt user for organization selection or creation
152
+ */
153
+ export async function promptForOrganization() {
154
+ const existingOrgs = getOrganizations();
155
+ if (existingOrgs.length === 0) {
156
+ // First organization - prompt for name
157
+ const { orgName } = await inquirer.prompt([{
158
+ type: 'input',
159
+ name: 'orgName',
160
+ message: 'Organization name (company or team):',
161
+ validate: (input) => {
162
+ if (!input.trim())
163
+ return 'Organization name is required';
164
+ return true;
165
+ },
166
+ }]);
167
+ createOrganization(orgName.trim());
168
+ return orgName.trim();
169
+ }
170
+ // Show existing organizations with option to create new
171
+ const { choice } = await inquirer.prompt([{
172
+ type: 'list',
173
+ name: 'choice',
174
+ message: 'Select organization:',
175
+ choices: [
176
+ ...existingOrgs.map(o => ({ name: o.name, value: o.name })),
177
+ new inquirer.Separator(),
178
+ { name: '+ Create new organization', value: '__new__' },
179
+ ],
180
+ }]);
181
+ if (choice === '__new__') {
182
+ const { orgName } = await inquirer.prompt([{
183
+ type: 'input',
184
+ name: 'orgName',
185
+ message: 'New organization name:',
186
+ validate: (input) => {
187
+ if (!input.trim())
188
+ return 'Organization name is required';
189
+ return true;
190
+ },
191
+ }]);
192
+ createOrganization(orgName.trim());
193
+ return orgName.trim();
194
+ }
195
+ return choice;
196
+ }
197
+ /**
198
+ * Create the basic HQ directory structure
199
+ *
200
+ * Structure:
201
+ * my-hq/
202
+ * .proletariat/ # HQ config and database
203
+ * repos/ # Repositories
204
+ * agents/
205
+ * staff/ # Persistent agents
206
+ * temp/ # Ephemeral agents
207
+ */
208
+ export function createHQStructure(hqPath, hqName, themeId, quiet) {
209
+ if (!quiet)
210
+ console.log(chalk.blue(`\n🏗️ Creating HQ at ${hqPath}...`));
211
+ // Get theme-specific directory names
212
+ const persistentDir = getThemePersistentDir(themeId);
213
+ const ephemeralDir = getThemeEphemeralDir(themeId);
214
+ // Create directories
215
+ fs.mkdirSync(hqPath, { recursive: true });
216
+ fs.mkdirSync(path.join(hqPath, '.proletariat'), { recursive: true });
217
+ fs.mkdirSync(path.join(hqPath, 'repos'), { recursive: true });
218
+ fs.mkdirSync(path.join(hqPath, 'agents'), { recursive: true });
219
+ fs.mkdirSync(path.join(hqPath, 'agents', persistentDir), { recursive: true });
220
+ fs.mkdirSync(path.join(hqPath, 'agents', ephemeralDir), { recursive: true });
221
+ }
222
+ /**
223
+ * Create HQ database and config
224
+ */
225
+ export function initializeHQDatabase(hqPath, options) {
226
+ if (!options.pmoSetup || !options.hqName) {
227
+ throw new Error('initializeHQDatabase requires hqName and pmoSetup to be defined');
228
+ }
229
+ const hasPMO = options.pmoSetup.includePMO;
230
+ // Create the database with HQ configuration
231
+ const db = createWorkspaceDatabase(hqPath, 'hq', options.hqName, hasPMO);
232
+ db.close();
233
+ // Create HQ config.json (required for HQ detection)
234
+ const configPath = path.join(hqPath, '.proletariat', 'config.json');
235
+ const config = {
236
+ version: "1.0.0",
237
+ schemaVersion: 1,
238
+ type: 'hq',
239
+ name: options.hqName
240
+ };
241
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
242
+ }
243
+ /** @deprecated Use initializeHQDatabase instead */
244
+ export const initializeWorkspaceDatabase = initializeHQDatabase;
245
+ /**
246
+ * Complete HQ initialization workflow
247
+ */
248
+ export async function initializeHQ(options) {
249
+ const { hqPath, hqName, selectedAgents, repos, pmoSetup, themeId, customTheme, orgName, quiet, } = options;
250
+ // Helper to log only in non-quiet mode
251
+ const log = (message) => {
252
+ if (!quiet)
253
+ console.log(message);
254
+ };
255
+ // All these fields are required for HQ type
256
+ if (!hqPath || !hqName || repos === undefined || !pmoSetup) {
257
+ throw new Error('Missing required fields for HQ initialization');
258
+ }
259
+ // Create basic structure (pass hqName and themeId for correct directory names)
260
+ createHQStructure(hqPath, hqName, themeId, quiet);
261
+ // Create database and HQ configuration
262
+ initializeHQDatabase(hqPath, options);
263
+ // Ensure builtin themes exist
264
+ ensureBuiltinThemes(hqPath);
265
+ // Save custom theme if one was created during init
266
+ if (customTheme) {
267
+ createTheme(hqPath, {
268
+ id: customTheme.name,
269
+ name: customTheme.name,
270
+ displayName: customTheme.displayName,
271
+ builtin: false,
272
+ });
273
+ addThemeNames(hqPath, customTheme.name, customTheme.names);
274
+ log(chalk.blue(`Created custom theme: ${customTheme.displayName}`));
275
+ }
276
+ // Set active theme if one was selected
277
+ if (themeId) {
278
+ setActiveTheme(hqPath, themeId);
279
+ }
280
+ // Handle repositories - add to file system AND database
281
+ const addedRepos = await addRepositoriesToHQ(hqPath, repos);
282
+ // Convert to database format
283
+ const dbRepos = addedRepos.map(repoName => {
284
+ const repoData = repos.find(r => path.basename(r.path).replace(/\.git$/, '') === repoName);
285
+ return {
286
+ name: repoName,
287
+ path: `repos/${repoName}`,
288
+ source_url: repoData?.path,
289
+ action: repoData?.action
290
+ };
291
+ });
292
+ addRepositoriesToDatabase(hqPath, dbRepos);
293
+ // Create PMO if requested
294
+ if (pmoSetup.includePMO) {
295
+ await createPMO({
296
+ hqPath,
297
+ location: pmoSetup.location,
298
+ boardTemplate: pmoSetup.boardTemplate,
299
+ boardName: pmoSetup.boardName,
300
+ columns: pmoSetup.columns,
301
+ storageType: pmoSetup.storageType,
302
+ });
303
+ }
304
+ // Add agents if selected - create worktrees AND add to database
305
+ if (selectedAgents.length > 0) {
306
+ const persistentDir = getThemePersistentDir(themeId);
307
+ const agentsPath = path.join(hqPath, 'agents', persistentDir);
308
+ // Create physical worktrees
309
+ await createAgentWorktrees(agentsPath, selectedAgents, hqPath);
310
+ // Add to database
311
+ addAgentsToDatabase(hqPath, selectedAgents);
312
+ }
313
+ // Register headquarters in machine config
314
+ ensureMachineConfigDir();
315
+ registerHeadquarters(hqPath, hqName, true, orgName);
316
+ log(chalk.gray(`Registered headquarters in ~/.proletariat/config.json`));
317
+ log(chalk.green(`\n✅ Headquarters created successfully at ${hqPath}`));
318
+ }
319
+ /**
320
+ * Show next steps to user
321
+ */
322
+ export async function showNextSteps(options) {
323
+ const relativePath = path.relative(process.cwd(), options.hqPath);
324
+ const hasPMO = options.pmoSetup?.includePMO ?? false;
325
+ // Show navigation instructions
326
+ console.log(chalk.blue(`\n📂 Your headquarters is ready! Navigate to it:`));
327
+ console.log(chalk.yellow(` cd ${relativePath}`));
328
+ // Ask if they want to see the next steps
329
+ const { showNextSteps } = await inquirer.prompt([{
330
+ type: 'list',
331
+ name: 'showNextSteps',
332
+ message: 'Show additional next steps?',
333
+ choices: [
334
+ { name: 'Yes', value: true },
335
+ { name: 'No', value: false }
336
+ ],
337
+ default: true,
338
+ }]);
339
+ // Show additional next steps if requested
340
+ if (showNextSteps) {
341
+ const hasCommands = (options.selectedAgents.length === 0) || hasPMO;
342
+ if (hasCommands) {
343
+ console.log(chalk.cyan(`\nOnce you're in the headquarters, you can run:`));
344
+ if (options.selectedAgents.length === 0) {
345
+ console.log(chalk.white(` prlt agent add <name>`));
346
+ }
347
+ if (hasPMO) {
348
+ console.log(chalk.white(` prlt ticket create`));
349
+ }
350
+ }
351
+ else {
352
+ console.log(chalk.green(`\nYour headquarters is fully set up and ready to use!`));
353
+ }
354
+ }
355
+ }
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Machine-level configuration for Proletariat headquarters.
3
+ *
4
+ * This module manages the ~/.proletariat/config.json registry that tracks
5
+ * all known headquarters on the machine, solving the HQ discovery
6
+ * chicken-and-egg problem.
7
+ *
8
+ * Registry schema:
9
+ * {
10
+ * "version": "1.0.0",
11
+ * "headquarters": [
12
+ * { "name": "hq-name", "path": "/absolute/path", "registeredAt": "ISO8601" }
13
+ * ],
14
+ * "activeHeadquarters": "/absolute/path" | null
15
+ * }
16
+ */
17
+ export interface Organization {
18
+ name: string;
19
+ createdAt: string;
20
+ }
21
+ export interface RegisteredHeadquarters {
22
+ name: string;
23
+ path: string;
24
+ registeredAt: string;
25
+ orgName?: string;
26
+ }
27
+ /** @deprecated Use RegisteredHeadquarters instead */
28
+ export type RegisteredWorkspace = RegisteredHeadquarters;
29
+ export interface MachineConfig {
30
+ type: 'machine';
31
+ version: string;
32
+ organizations: Organization[];
33
+ headquarters: RegisteredHeadquarters[];
34
+ activeHeadquarters: string | null;
35
+ activeOrganization: string | null;
36
+ /** @deprecated Use headquarters instead */
37
+ workspaces?: RegisteredHeadquarters[];
38
+ /** @deprecated Use activeHeadquarters instead */
39
+ activeWorkspace?: string | null;
40
+ }
41
+ /**
42
+ * Get the path to the machine-level config directory (~/.proletariat/).
43
+ */
44
+ export declare function getMachineConfigDir(): string;
45
+ /**
46
+ * Get the path to the machine-level config file (~/.proletariat/config.json).
47
+ */
48
+ export declare function getMachineConfigPath(): string;
49
+ /**
50
+ * Ensure the machine config directory exists.
51
+ * Creates ~/.proletariat/ if it doesn't exist.
52
+ */
53
+ export declare function ensureMachineConfigDir(): void;
54
+ /**
55
+ * Normalize a workspace path for consistent storage.
56
+ * - Resolves symlinks
57
+ * - Makes path absolute
58
+ * - Removes trailing slashes
59
+ */
60
+ export declare function normalizePath(inputPath: string): string;
61
+ /**
62
+ * Read the machine config file.
63
+ * Returns a default empty config if file doesn't exist or is invalid.
64
+ * Handles migration from old 'workspaces' format to new 'headquarters' format.
65
+ */
66
+ export declare function readMachineConfig(): MachineConfig;
67
+ /**
68
+ * Write the machine config file atomically.
69
+ * Uses write-to-temp-then-rename pattern for safety.
70
+ */
71
+ export declare function writeMachineConfig(config: MachineConfig): void;
72
+ /**
73
+ * Register a headquarters in the machine config.
74
+ *
75
+ * @param hqPath Absolute path to the headquarters (will be normalized)
76
+ * @param name Optional HQ name (defaults to directory basename)
77
+ * @param setActive If true, set as active HQ when no active HQ exists
78
+ * @param orgName Optional organization name to associate this HQ with
79
+ * @returns The registered headquarters entry
80
+ */
81
+ export declare function registerHeadquarters(hqPath: string, name?: string, setActive?: boolean, orgName?: string): RegisteredHeadquarters;
82
+ /** @deprecated Use registerHeadquarters instead */
83
+ export declare const registerWorkspace: typeof registerHeadquarters;
84
+ /**
85
+ * Unregister a headquarters from the machine config.
86
+ *
87
+ * @param pathOrName HQ path or name to unregister
88
+ * @returns true if HQ was found and removed, false otherwise
89
+ */
90
+ export declare function unregisterHeadquarters(pathOrName: string): boolean;
91
+ /** @deprecated Use unregisterHeadquarters instead */
92
+ export declare const unregisterWorkspace: typeof unregisterHeadquarters;
93
+ /**
94
+ * Get all registered headquarters.
95
+ */
96
+ export declare function getRegisteredHeadquarters(): RegisteredHeadquarters[];
97
+ /** @deprecated Use getRegisteredHeadquarters instead */
98
+ export declare const getRegisteredWorkspaces: typeof getRegisteredHeadquarters;
99
+ /**
100
+ * Get the active headquarters path.
101
+ * Returns null if no active HQ is set.
102
+ */
103
+ export declare function getActiveHeadquarters(): string | null;
104
+ /** @deprecated Use getActiveHeadquarters instead */
105
+ export declare const getActiveWorkspace: typeof getActiveHeadquarters;
106
+ /**
107
+ * Set the active headquarters.
108
+ *
109
+ * @param pathOrName HQ path or name
110
+ * @returns The path of the HQ that was set as active
111
+ * @throws Error if HQ not found or not valid
112
+ */
113
+ export declare function setActiveHeadquarters(pathOrName: string): string;
114
+ /** @deprecated Use setActiveHeadquarters instead */
115
+ export declare const setActiveWorkspace: typeof setActiveHeadquarters;
116
+ /**
117
+ * Find headquarters by name.
118
+ * Returns array of matches (may be multiple if names are not unique).
119
+ */
120
+ export declare function findHeadquartersByName(name: string): RegisteredHeadquarters[];
121
+ /** @deprecated Use findHeadquartersByName instead */
122
+ export declare const findWorkspacesByName: typeof findHeadquartersByName;
123
+ /**
124
+ * Find headquarters by path.
125
+ */
126
+ export declare function findHeadquartersByPath(hqPath: string): RegisteredHeadquarters | null;
127
+ /** @deprecated Use findHeadquartersByPath instead */
128
+ export declare const findWorkspaceByPath: typeof findHeadquartersByPath;
129
+ /**
130
+ * Check if a headquarters path is registered.
131
+ */
132
+ export declare function isHeadquartersRegistered(hqPath: string): boolean;
133
+ /** @deprecated Use isHeadquartersRegistered instead */
134
+ export declare const isWorkspaceRegistered: typeof isHeadquartersRegistered;
135
+ /**
136
+ * Get headquarters name from path (for existing HQ).
137
+ * Reads the HQ config to get the name, or falls back to directory basename.
138
+ */
139
+ export declare function getHeadquartersNameFromPath(hqPath: string): string;
140
+ /** @deprecated Use getHeadquartersNameFromPath instead */
141
+ export declare const getWorkspaceNameFromPath: typeof getHeadquartersNameFromPath;
142
+ /**
143
+ * Check if there are duplicate headquarters names in the registry.
144
+ */
145
+ export declare function hasDuplicateNames(): {
146
+ name: string;
147
+ paths: string[];
148
+ }[];
149
+ /**
150
+ * Get all organizations.
151
+ */
152
+ export declare function getOrganizations(): Organization[];
153
+ /**
154
+ * Get the active organization name.
155
+ */
156
+ export declare function getActiveOrganization(): string | null;
157
+ /**
158
+ * Create a new organization.
159
+ */
160
+ export declare function createOrganization(name: string): Organization;
161
+ /**
162
+ * Set the active organization.
163
+ */
164
+ export declare function setActiveOrganization(name: string): void;
165
+ /**
166
+ * Get headquarters belonging to a specific organization.
167
+ */
168
+ export declare function getOrganizationHeadquarters(orgName: string): RegisteredHeadquarters[];
169
+ /** @deprecated Use getOrganizationHeadquarters instead */
170
+ export declare const getOrganizationWorkspaces: typeof getOrganizationHeadquarters;