@proletariat/cli 0.2.0 → 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 +512 -253
  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,205 @@
1
+ /**
2
+ * Spec Parser
3
+ *
4
+ * Parses markdown spec files into structured data.
5
+ * Uses the new simplified spec format with frontmatter.
6
+ */
7
+ import * as fs from 'node:fs';
8
+ import matter from 'gray-matter';
9
+ // =============================================================================
10
+ // Main Parser
11
+ // =============================================================================
12
+ /**
13
+ * Parse a spec markdown file into structured data
14
+ */
15
+ export function parseSpecFile(filePath) {
16
+ const content = fs.readFileSync(filePath, 'utf-8');
17
+ return parseSpecContent(content, filePath);
18
+ }
19
+ /**
20
+ * Parse spec content string into structured data
21
+ */
22
+ export function parseSpecContent(content, filePath = '') {
23
+ const { data: rawFrontmatter, content: body } = matter(content);
24
+ const frontmatter = {
25
+ id: rawFrontmatter.id,
26
+ status: rawFrontmatter.status,
27
+ type: rawFrontmatter.type,
28
+ tags: rawFrontmatter.tags,
29
+ depends_on: rawFrontmatter.depends_on,
30
+ };
31
+ return {
32
+ frontmatter,
33
+ title: parseTitle(body),
34
+ problem: parseSection(body, 'Problem'),
35
+ solution: parseSection(body, 'Solution'),
36
+ decisions: parseSection(body, 'Decisions'),
37
+ notNow: parseSection(body, 'Not Now'),
38
+ uiUx: parseSection(body, 'UI/UX'),
39
+ acceptanceCriteria: parseSection(body, 'Acceptance Criteria'),
40
+ openQuestions: parseSection(body, 'Open Questions'),
41
+ requirementsFunctional: parseNestedSection(body, 'Requirements', 'Functional'),
42
+ requirementsTechnical: parseNestedSection(body, 'Requirements', 'Technical'),
43
+ context: parseSection(body, 'Context'),
44
+ rawContent: content,
45
+ filePath,
46
+ };
47
+ }
48
+ // =============================================================================
49
+ // Section Parsers
50
+ // =============================================================================
51
+ /**
52
+ * Parse title from the first H1 heading
53
+ */
54
+ function parseTitle(body) {
55
+ const match = body.match(/^#\s+(.+)$/m);
56
+ return match ? match[1].trim() : 'Untitled';
57
+ }
58
+ /**
59
+ * Parse a section by heading name
60
+ */
61
+ function parseSection(body, sectionName) {
62
+ // Match ## Section Name followed by content until next ## or end
63
+ const regex = new RegExp(`## ${sectionName}\\s*\\n+([\\s\\S]*?)(?=\\n## [^#]|$)`, 'i');
64
+ const match = body.match(regex);
65
+ if (!match)
66
+ return undefined;
67
+ const content = match[1].trim();
68
+ return content || undefined;
69
+ }
70
+ /**
71
+ * Parse a nested section (e.g., ## Requirements -> ### Functional)
72
+ */
73
+ function parseNestedSection(body, parentSection, childSection) {
74
+ // First find the parent section
75
+ const parentRegex = new RegExp(`## ${parentSection}\\s*\\n+([\\s\\S]*?)(?=\\n## [^#]|$)`, 'i');
76
+ const parentMatch = body.match(parentRegex);
77
+ if (!parentMatch)
78
+ return undefined;
79
+ const parentContent = parentMatch[1];
80
+ // Then find the child section within it
81
+ const childRegex = new RegExp(`### ${childSection}\\s*\\n+([\\s\\S]*?)(?=\\n### |$)`, 'i');
82
+ const childMatch = parentContent.match(childRegex);
83
+ if (!childMatch)
84
+ return undefined;
85
+ const content = childMatch[1].trim();
86
+ return content || undefined;
87
+ }
88
+ // =============================================================================
89
+ // Validation
90
+ // =============================================================================
91
+ /**
92
+ * Validate a parsed spec for completeness
93
+ */
94
+ export function validateSpec(spec) {
95
+ const errors = [];
96
+ if (!spec.frontmatter.id) {
97
+ errors.push('Missing id in frontmatter');
98
+ }
99
+ if (!spec.title || spec.title === 'Untitled') {
100
+ errors.push('Missing title (H1 heading)');
101
+ }
102
+ if (!spec.problem) {
103
+ errors.push('Missing Problem section');
104
+ }
105
+ if (!spec.solution) {
106
+ errors.push('Missing Solution section');
107
+ }
108
+ return errors;
109
+ }
110
+ // =============================================================================
111
+ // Export Format
112
+ // =============================================================================
113
+ /**
114
+ * Convert a parsed spec back to markdown format
115
+ */
116
+ export function specToMarkdown(spec, options) {
117
+ const lines = [];
118
+ // Frontmatter
119
+ if (options?.includeFrontmatter !== false) {
120
+ lines.push('---');
121
+ if (spec.frontmatter.id)
122
+ lines.push(`id: ${spec.frontmatter.id}`);
123
+ if (spec.frontmatter.status)
124
+ lines.push(`status: ${spec.frontmatter.status}`);
125
+ if (spec.frontmatter.type)
126
+ lines.push(`type: ${spec.frontmatter.type}`);
127
+ if (spec.frontmatter.tags && spec.frontmatter.tags.length > 0) {
128
+ lines.push(`tags: [${spec.frontmatter.tags.join(', ')}]`);
129
+ }
130
+ if (spec.frontmatter.depends_on && spec.frontmatter.depends_on.length > 0) {
131
+ lines.push(`depends_on: [${spec.frontmatter.depends_on.join(', ')}]`);
132
+ }
133
+ lines.push('---');
134
+ lines.push('');
135
+ }
136
+ // Title
137
+ lines.push(`# ${spec.title}`);
138
+ lines.push('');
139
+ // Sections
140
+ if (spec.problem) {
141
+ lines.push('## Problem');
142
+ lines.push('');
143
+ lines.push(spec.problem);
144
+ lines.push('');
145
+ }
146
+ if (spec.solution) {
147
+ lines.push('## Solution');
148
+ lines.push('');
149
+ lines.push(spec.solution);
150
+ lines.push('');
151
+ }
152
+ if (spec.decisions) {
153
+ lines.push('## Decisions');
154
+ lines.push('');
155
+ lines.push(spec.decisions);
156
+ lines.push('');
157
+ }
158
+ if (spec.notNow) {
159
+ lines.push('## Not Now');
160
+ lines.push('');
161
+ lines.push(spec.notNow);
162
+ lines.push('');
163
+ }
164
+ if (spec.uiUx) {
165
+ lines.push('## UI/UX');
166
+ lines.push('');
167
+ lines.push(spec.uiUx);
168
+ lines.push('');
169
+ }
170
+ if (spec.acceptanceCriteria) {
171
+ lines.push('## Acceptance Criteria');
172
+ lines.push('');
173
+ lines.push(spec.acceptanceCriteria);
174
+ lines.push('');
175
+ }
176
+ if (spec.openQuestions) {
177
+ lines.push('## Open Questions');
178
+ lines.push('');
179
+ lines.push(spec.openQuestions);
180
+ lines.push('');
181
+ }
182
+ if (spec.requirementsFunctional || spec.requirementsTechnical) {
183
+ lines.push('## Requirements');
184
+ lines.push('');
185
+ if (spec.requirementsFunctional) {
186
+ lines.push('### Functional');
187
+ lines.push('');
188
+ lines.push(spec.requirementsFunctional);
189
+ lines.push('');
190
+ }
191
+ if (spec.requirementsTechnical) {
192
+ lines.push('### Technical');
193
+ lines.push('');
194
+ lines.push(spec.requirementsTechnical);
195
+ lines.push('');
196
+ }
197
+ }
198
+ if (spec.context) {
199
+ lines.push('## Context');
200
+ lines.push('');
201
+ lines.push(spec.context);
202
+ lines.push('');
203
+ }
204
+ return lines.join('\n');
205
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Spec Format Type Definitions
3
+ *
4
+ * Types for parsing spec documents with frontmatter.
5
+ * DB types are in types.ts (Spec, SpecDependency)
6
+ */
7
+ export { SpecType, SpecStatus, Spec, SpecDependency, } from './types.js';
8
+ /**
9
+ * Spec frontmatter - parsed from YAML at top of markdown file
10
+ */
11
+ export interface SpecFrontmatter {
12
+ id?: string;
13
+ status?: 'draft' | 'active' | 'implemented';
14
+ type?: 'product' | 'platform' | 'infra' | 'integration';
15
+ tags?: string[];
16
+ depends_on?: string[];
17
+ }
18
+ /**
19
+ * A spec parsed from a markdown file
20
+ */
21
+ export interface ParsedSpec {
22
+ frontmatter: SpecFrontmatter;
23
+ title: string;
24
+ problem?: string;
25
+ solution?: string;
26
+ decisions?: string;
27
+ notNow?: string;
28
+ uiUx?: string;
29
+ acceptanceCriteria?: string;
30
+ openQuestions?: string;
31
+ requirementsFunctional?: string;
32
+ requirementsTechnical?: string;
33
+ context?: string;
34
+ rawContent: string;
35
+ filePath: string;
36
+ }
37
+ /**
38
+ * Format for exporting spec to markdown
39
+ */
40
+ export interface SpecExportOptions {
41
+ includeFrontmatter?: boolean;
42
+ includeEmptySections?: boolean;
43
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Spec Format Type Definitions
3
+ *
4
+ * Types for parsing spec documents with frontmatter.
5
+ * DB types are in types.ts (Spec, SpecDependency)
6
+ */
7
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Work action operations.
3
+ */
4
+ import { StateCategory, WorkAction, WorkActionFilter } from '../types.js';
5
+ import { StorageContext } from './types.js';
6
+ export declare class ActionStorage {
7
+ private ctx;
8
+ constructor(ctx: StorageContext);
9
+ /**
10
+ * List work actions.
11
+ */
12
+ listActions(filter?: WorkActionFilter): Promise<WorkAction[]>;
13
+ /**
14
+ * Get a work action by ID.
15
+ */
16
+ getAction(id: string): Promise<WorkAction | null>;
17
+ /**
18
+ * Create a new work action.
19
+ */
20
+ createAction(action: Partial<WorkAction>): Promise<WorkAction>;
21
+ /**
22
+ * Update a work action.
23
+ */
24
+ updateAction(id: string, changes: Partial<WorkAction>): Promise<WorkAction>;
25
+ /**
26
+ * Delete a work action.
27
+ */
28
+ deleteAction(id: string): Promise<void>;
29
+ /**
30
+ * Get suggested action for a state category.
31
+ */
32
+ getSuggestedAction(category: StateCategory): Promise<WorkAction | null>;
33
+ private rowToAction;
34
+ }
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Work action operations.
3
+ */
4
+ import { PMO_TABLES } from '../schema.js';
5
+ import { PMOError } from '../types.js';
6
+ import { slugify } from '../utils.js';
7
+ const T = PMO_TABLES;
8
+ export class ActionStorage {
9
+ ctx;
10
+ constructor(ctx) {
11
+ this.ctx = ctx;
12
+ }
13
+ /**
14
+ * List work actions.
15
+ */
16
+ async listActions(filter) {
17
+ let sql = `SELECT * FROM ${T.actions}`;
18
+ const conditions = [];
19
+ const params = [];
20
+ if (filter?.isBuiltin !== undefined) {
21
+ conditions.push('is_builtin = ?');
22
+ params.push(filter.isBuiltin ? 1 : 0);
23
+ }
24
+ if (filter?.suggestedFor) {
25
+ conditions.push('suggested_for_categories LIKE ?');
26
+ params.push(`%"${filter.suggestedFor}"%`);
27
+ }
28
+ if (filter?.search) {
29
+ conditions.push('(name LIKE ? OR description LIKE ?)');
30
+ params.push(`%${filter.search}%`, `%${filter.search}%`);
31
+ }
32
+ if (conditions.length > 0) {
33
+ sql += ` WHERE ${conditions.join(' AND ')}`;
34
+ }
35
+ sql += ' ORDER BY is_builtin DESC, position ASC, name ASC';
36
+ const rows = this.ctx.db.prepare(sql).all(...params);
37
+ return rows.map((row) => this.rowToAction(row));
38
+ }
39
+ /**
40
+ * Get a work action by ID.
41
+ */
42
+ async getAction(id) {
43
+ const row = this.ctx.db.prepare(`SELECT * FROM ${T.actions} WHERE id = ?`).get(id);
44
+ if (!row)
45
+ return null;
46
+ return this.rowToAction(row);
47
+ }
48
+ /**
49
+ * Create a new work action.
50
+ */
51
+ async createAction(action) {
52
+ if (!action.name) {
53
+ throw new PMOError('INVALID', 'Action name is required');
54
+ }
55
+ if (!action.prompt) {
56
+ throw new PMOError('INVALID', 'Action prompt is required');
57
+ }
58
+ const id = action.id || slugify(action.name);
59
+ // Check for duplicate name
60
+ const existing = this.ctx.db.prepare(`
61
+ SELECT id FROM ${T.actions} WHERE LOWER(name) = LOWER(?)
62
+ `).get(action.name);
63
+ if (existing) {
64
+ throw new PMOError('CONFLICT', `Action with name "${action.name}" already exists`);
65
+ }
66
+ const now = new Date().toISOString();
67
+ const modifiesCode = action.modifiesCode !== false;
68
+ this.ctx.db.prepare(`
69
+ INSERT INTO ${T.actions} (id, name, description, prompt, end_prompt, suggested_for_categories, default_move_to_category, modifies_code, is_builtin, created_at)
70
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
71
+ `).run(id, action.name, action.description || null, action.prompt, action.endPrompt || null, action.suggestedForCategories ? JSON.stringify(action.suggestedForCategories) : null, action.defaultMoveToCategory || null, modifiesCode ? 1 : 0, action.isBuiltin ? 1 : 0, now);
72
+ return {
73
+ id,
74
+ name: action.name,
75
+ description: action.description,
76
+ prompt: action.prompt,
77
+ endPrompt: action.endPrompt,
78
+ suggestedForCategories: action.suggestedForCategories,
79
+ defaultMoveToCategory: action.defaultMoveToCategory,
80
+ modifiesCode,
81
+ isBuiltin: action.isBuiltin || false,
82
+ createdAt: new Date(now),
83
+ };
84
+ }
85
+ /**
86
+ * Update a work action.
87
+ */
88
+ async updateAction(id, changes) {
89
+ const existing = await this.getAction(id);
90
+ if (!existing) {
91
+ throw new PMOError('NOT_FOUND', `Action not found: ${id}`);
92
+ }
93
+ if (existing.isBuiltin) {
94
+ throw new PMOError('INVALID', 'Cannot modify built-in actions');
95
+ }
96
+ // Check for duplicate name if name is changing
97
+ if (changes.name && changes.name.toLowerCase() !== existing.name.toLowerCase()) {
98
+ const dup = this.ctx.db.prepare(`
99
+ SELECT id FROM ${T.actions} WHERE LOWER(name) = LOWER(?) AND id != ?
100
+ `).get(changes.name, id);
101
+ if (dup) {
102
+ throw new PMOError('CONFLICT', `Action "${changes.name}" already exists`);
103
+ }
104
+ }
105
+ const updates = [];
106
+ const params = [];
107
+ if (changes.name !== undefined) {
108
+ updates.push('name = ?');
109
+ params.push(changes.name);
110
+ }
111
+ if (changes.description !== undefined) {
112
+ updates.push('description = ?');
113
+ params.push(changes.description || null);
114
+ }
115
+ if (changes.prompt !== undefined) {
116
+ updates.push('prompt = ?');
117
+ params.push(changes.prompt);
118
+ }
119
+ if (changes.endPrompt !== undefined) {
120
+ updates.push('end_prompt = ?');
121
+ params.push(changes.endPrompt || null);
122
+ }
123
+ if (changes.suggestedForCategories !== undefined) {
124
+ updates.push('suggested_for_categories = ?');
125
+ params.push(changes.suggestedForCategories ? JSON.stringify(changes.suggestedForCategories) : null);
126
+ }
127
+ if (changes.defaultMoveToCategory !== undefined) {
128
+ updates.push('default_move_to_category = ?');
129
+ params.push(changes.defaultMoveToCategory || null);
130
+ }
131
+ if (changes.modifiesCode !== undefined) {
132
+ updates.push('modifies_code = ?');
133
+ params.push(changes.modifiesCode ? 1 : 0);
134
+ }
135
+ if (updates.length > 0) {
136
+ params.push(id);
137
+ this.ctx.db.prepare(`UPDATE ${T.actions} SET ${updates.join(', ')} WHERE id = ?`).run(...params);
138
+ }
139
+ return (await this.getAction(id));
140
+ }
141
+ /**
142
+ * Delete a work action.
143
+ */
144
+ async deleteAction(id) {
145
+ const existing = await this.getAction(id);
146
+ if (!existing) {
147
+ throw new PMOError('NOT_FOUND', `Action not found: ${id}`);
148
+ }
149
+ if (existing.isBuiltin) {
150
+ throw new PMOError('INVALID', 'Cannot delete built-in actions');
151
+ }
152
+ this.ctx.db.prepare(`DELETE FROM ${T.actions} WHERE id = ?`).run(id);
153
+ }
154
+ /**
155
+ * Get suggested action for a state category.
156
+ */
157
+ async getSuggestedAction(category) {
158
+ const actions = await this.listActions({ suggestedFor: category });
159
+ return actions.length > 0 ? actions[0] : null;
160
+ }
161
+ rowToAction(row) {
162
+ return {
163
+ id: row.id,
164
+ name: row.name,
165
+ description: row.description || undefined,
166
+ prompt: row.prompt,
167
+ endPrompt: row.end_prompt || undefined,
168
+ suggestedForCategories: row.default_category
169
+ ? JSON.parse(row.default_category)
170
+ : undefined,
171
+ defaultMoveToCategory: row.default_category,
172
+ modifiesCode: row.is_builtin === 1,
173
+ isBuiltin: row.is_builtin === 1,
174
+ createdAt: new Date(row.created_at),
175
+ };
176
+ }
177
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Base storage module with database initialization, migrations, and seeding.
3
+ * This module handles database setup and provides shared utilities.
4
+ */
5
+ import Database from 'better-sqlite3';
6
+ /**
7
+ * Initialize PMO tables in the database.
8
+ * Runs migrations, creates tables, seeds built-in data, and validates schema.
9
+ */
10
+ export declare function initializePMOTables(db: Database.Database): void;
11
+ /**
12
+ * Run schema migrations for existing databases.
13
+ */
14
+ export declare function runMigrations(db: Database.Database): void;
15
+ /**
16
+ * Seed built-in workflows (shared workflow definitions).
17
+ * Creates workflows from existing templates for reuse across projects.
18
+ */
19
+ export declare function seedBuiltinWorkflows(db: Database.Database): void;
20
+ /**
21
+ * Seed default project phases.
22
+ */
23
+ export declare function seedBuiltinPhases(db: Database.Database): void;
24
+ /**
25
+ * Seed built-in phase templates.
26
+ */
27
+ export declare function seedBuiltinPhaseTemplates(db: Database.Database): void;
28
+ /**
29
+ * Seed built-in work actions.
30
+ */
31
+ export declare function seedBuiltinActions(db: Database.Database): void;
32
+ /**
33
+ * Seed built-in ticket templates.
34
+ */
35
+ export declare function seedBuiltinTicketTemplates(db: Database.Database): void;
36
+ /**
37
+ * Update board timestamp for a project.
38
+ */
39
+ export declare function updateBoardTimestamp(db: Database.Database, projectId: string): void;
40
+ /**
41
+ * Get max position for columns in a project.
42
+ */
43
+ export declare function getMaxColumnPosition(db: Database.Database, projectId: string): number;
44
+ /**
45
+ * Get max position for tickets in a column.
46
+ */
47
+ export declare function getMaxTicketPosition(db: Database.Database, projectId: string, columnId: string): number;