@proletariat/cli 0.3.93 → 0.3.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +1 -1
  9. package/dist/commands/agent/gc.d.ts +1 -1
  10. package/dist/commands/agent/index.d.ts +1 -1
  11. package/dist/commands/agent/list.d.ts +1 -1
  12. package/dist/commands/agent/login.d.ts +1 -1
  13. package/dist/commands/agent/rebuild.d.ts +1 -1
  14. package/dist/commands/agent/remove.d.ts +1 -1
  15. package/dist/commands/agent/restart.d.ts +1 -1
  16. package/dist/commands/agent/shell.d.ts +1 -1
  17. package/dist/commands/agent/staff/index.d.ts +1 -1
  18. package/dist/commands/agent/staff/remove.d.ts +1 -1
  19. package/dist/commands/agent/status.d.ts +1 -1
  20. package/dist/commands/agent/visit.d.ts +1 -1
  21. package/dist/commands/asana/import.d.ts +1 -1
  22. package/dist/commands/branch/create.d.ts +1 -1
  23. package/dist/commands/branch/index.d.ts +1 -1
  24. package/dist/commands/branch/list.d.ts +1 -1
  25. package/dist/commands/branch/validate.d.ts +1 -1
  26. package/dist/commands/branch/where.d.ts +1 -1
  27. package/dist/commands/config/index.js +2 -2
  28. package/dist/commands/config/index.js.map +1 -1
  29. package/dist/commands/diet.d.ts +1 -1
  30. package/dist/commands/docker/index.js +2 -0
  31. package/dist/commands/docker/index.js.map +1 -1
  32. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  33. package/dist/commands/docker/rebuild-cache.js +144 -0
  34. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  35. package/dist/commands/execution/config.d.ts +1 -1
  36. package/dist/commands/execution/index.d.ts +1 -1
  37. package/dist/commands/execution/list.d.ts +1 -1
  38. package/dist/commands/execution/logs.d.ts +1 -1
  39. package/dist/commands/execution/stop.d.ts +1 -1
  40. package/dist/commands/execution/view.d.ts +1 -1
  41. package/dist/commands/hook/export.d.ts +1 -1
  42. package/dist/commands/hook/fire.d.ts +1 -1
  43. package/dist/commands/hook/index.d.ts +1 -1
  44. package/dist/commands/hook/list.d.ts +1 -1
  45. package/dist/commands/hook/preset.d.ts +1 -1
  46. package/dist/commands/linear/auth.d.ts +1 -1
  47. package/dist/commands/linear/connect.d.ts +1 -1
  48. package/dist/commands/linear/import.d.ts +1 -1
  49. package/dist/commands/linear/status.d.ts +1 -1
  50. package/dist/commands/linear/sync.d.ts +1 -1
  51. package/dist/commands/mcp-server.d.ts +8 -2
  52. package/dist/commands/mcp-server.js +15 -28
  53. package/dist/commands/mcp-server.js.map +1 -1
  54. package/dist/commands/monday/connect.d.ts +1 -1
  55. package/dist/commands/monday/sync.d.ts +1 -1
  56. package/dist/commands/orchestrate/index.d.ts +1 -1
  57. package/dist/commands/orchestrator/index.d.ts +1 -1
  58. package/dist/commands/orchestrator/start.d.ts +3 -3
  59. package/dist/commands/orchestrator/start.js +38 -40
  60. package/dist/commands/orchestrator/start.js.map +1 -1
  61. package/dist/commands/pr/checks.d.ts +1 -1
  62. package/dist/commands/pr/close.d.ts +1 -1
  63. package/dist/commands/pr/create.d.ts +1 -1
  64. package/dist/commands/pr/index.d.ts +1 -1
  65. package/dist/commands/pr/link.d.ts +1 -1
  66. package/dist/commands/pr/list.d.ts +1 -1
  67. package/dist/commands/pr/merge.d.ts +1 -1
  68. package/dist/commands/pr/status.d.ts +1 -1
  69. package/dist/commands/pull.d.ts +1 -1
  70. package/dist/commands/repo/add.d.ts +1 -1
  71. package/dist/commands/repo/create.d.ts +1 -1
  72. package/dist/commands/repo/fix-remotes.d.ts +1 -1
  73. package/dist/commands/repo/index.d.ts +1 -1
  74. package/dist/commands/repo/list.d.ts +1 -1
  75. package/dist/commands/repo/remove.d.ts +1 -1
  76. package/dist/commands/repo/view.d.ts +1 -1
  77. package/dist/commands/session/attach.d.ts +1 -1
  78. package/dist/commands/session/cleanup.d.ts +1 -1
  79. package/dist/commands/session/create.d.ts +1 -1
  80. package/dist/commands/session/exec.d.ts +1 -1
  81. package/dist/commands/session/health.d.ts +1 -1
  82. package/dist/commands/session/index.d.ts +1 -1
  83. package/dist/commands/session/inspect.d.ts +1 -1
  84. package/dist/commands/session/list.d.ts +1 -1
  85. package/dist/commands/session/peek.d.ts +1 -1
  86. package/dist/commands/session/prune.d.ts +1 -1
  87. package/dist/commands/session/report.d.ts +1 -1
  88. package/dist/commands/session/restart.d.ts +1 -1
  89. package/dist/commands/shortcut/connect.d.ts +1 -1
  90. package/dist/commands/support/logs.d.ts +1 -1
  91. package/dist/commands/ticket/create.d.ts +1 -1
  92. package/dist/commands/ticket/delete.d.ts +1 -1
  93. package/dist/commands/ticket/edit.d.ts +1 -1
  94. package/dist/commands/ticket/index.d.ts +1 -1
  95. package/dist/commands/ticket/index.js +6 -36
  96. package/dist/commands/ticket/index.js.map +1 -1
  97. package/dist/commands/ticket/list.d.ts +1 -1
  98. package/dist/commands/ticket/move.d.ts +1 -1
  99. package/dist/commands/ticket/show.d.ts +8 -7
  100. package/dist/commands/ticket/show.js +101 -8
  101. package/dist/commands/ticket/show.js.map +1 -1
  102. package/dist/commands/ticket/update.d.ts +1 -1
  103. package/dist/commands/trello/configure.d.ts +1 -1
  104. package/dist/commands/trello/import.d.ts +1 -1
  105. package/dist/commands/trello/sync.d.ts +1 -1
  106. package/dist/commands/work/asana.d.ts +1 -1
  107. package/dist/commands/work/complete.d.ts +1 -1
  108. package/dist/commands/work/groom.d.ts +1 -1
  109. package/dist/commands/work/hooks/add.d.ts +1 -1
  110. package/dist/commands/work/hooks/index.d.ts +1 -1
  111. package/dist/commands/work/hooks/list.d.ts +1 -1
  112. package/dist/commands/work/hooks/remove.d.ts +1 -1
  113. package/dist/commands/work/hooks/toggle.d.ts +1 -1
  114. package/dist/commands/work/implement.d.ts +1 -1
  115. package/dist/commands/work/index.d.ts +1 -1
  116. package/dist/commands/work/jira.d.ts +1 -1
  117. package/dist/commands/work/linear.d.ts +1 -1
  118. package/dist/commands/work/peek.d.ts +1 -1
  119. package/dist/commands/work/ready.d.ts +1 -1
  120. package/dist/commands/work/rebase.d.ts +1 -1
  121. package/dist/commands/work/resolve.d.ts +1 -1
  122. package/dist/commands/work/review.d.ts +1 -1
  123. package/dist/commands/work/ship.d.ts +1 -1
  124. package/dist/commands/work/shortcut.d.ts +1 -1
  125. package/dist/commands/work/source/set.d.ts +1 -1
  126. package/dist/commands/work/source.d.ts +1 -1
  127. package/dist/commands/work/spawn.d.ts +1 -1
  128. package/dist/commands/work/start.d.ts +1 -1
  129. package/dist/commands/work/status.d.ts +1 -1
  130. package/dist/commands/work/stop.d.ts +1 -1
  131. package/dist/commands/work/watch.d.ts +1 -1
  132. package/dist/hooks/init.js +1 -1
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/asana/config.js +13 -7
  135. package/dist/lib/asana/config.js.map +1 -1
  136. package/dist/lib/clickup/client.d.ts +92 -0
  137. package/dist/lib/clickup/client.js +150 -0
  138. package/dist/lib/clickup/client.js.map +1 -0
  139. package/dist/lib/clickup/config.d.ts +41 -0
  140. package/dist/lib/clickup/config.js +104 -0
  141. package/dist/lib/clickup/config.js.map +1 -0
  142. package/dist/lib/clickup/index.d.ts +4 -0
  143. package/dist/lib/clickup/index.js +4 -0
  144. package/dist/lib/clickup/index.js.map +1 -0
  145. package/dist/lib/clickup/types.d.ts +104 -0
  146. package/dist/lib/clickup/types.js +34 -0
  147. package/dist/lib/clickup/types.js.map +1 -0
  148. package/dist/lib/database/credential-store.d.ts +64 -0
  149. package/dist/lib/database/credential-store.js +306 -0
  150. package/dist/lib/database/credential-store.js.map +1 -0
  151. package/dist/lib/database/index.d.ts +1 -0
  152. package/dist/lib/database/index.js +2 -0
  153. package/dist/lib/database/index.js.map +1 -1
  154. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  155. package/dist/lib/database/pmo-bootstrap.js +45 -20
  156. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  157. package/dist/lib/database/workspace.js +4 -0
  158. package/dist/lib/database/workspace.js.map +1 -1
  159. package/dist/lib/execution/devcontainer.js +51 -0
  160. package/dist/lib/execution/devcontainer.js.map +1 -1
  161. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  162. package/dist/lib/execution/runners/docker-management.js +99 -7
  163. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  164. package/dist/lib/execution/session-utils.d.ts +4 -0
  165. package/dist/lib/execution/session-utils.js +34 -24
  166. package/dist/lib/execution/session-utils.js.map +1 -1
  167. package/dist/lib/execution/types.js +1 -1
  168. package/dist/lib/external-issues/types.d.ts +3 -3
  169. package/dist/lib/external-issues/types.js +1 -1
  170. package/dist/lib/external-issues/types.js.map +1 -1
  171. package/dist/lib/jira/config.js +10 -4
  172. package/dist/lib/jira/config.js.map +1 -1
  173. package/dist/lib/linear/config.js +13 -8
  174. package/dist/lib/linear/config.js.map +1 -1
  175. package/dist/lib/mcp/generator.d.ts +26 -0
  176. package/dist/lib/mcp/generator.js +219 -0
  177. package/dist/lib/mcp/generator.js.map +1 -0
  178. package/dist/lib/mcp/index.d.ts +1 -0
  179. package/dist/lib/mcp/index.js +1 -0
  180. package/dist/lib/mcp/index.js.map +1 -1
  181. package/dist/lib/mcp/tools/index.d.ts +0 -11
  182. package/dist/lib/mcp/tools/index.js +0 -11
  183. package/dist/lib/mcp/tools/index.js.map +1 -1
  184. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  185. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  186. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  187. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  188. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  189. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  190. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  191. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  192. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  193. package/dist/lib/mcp/tools/ticket.js +10 -48
  194. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  195. package/dist/lib/monday/config.js +11 -5
  196. package/dist/lib/monday/config.js.map +1 -1
  197. package/dist/lib/pmo/base-command.d.ts +20 -152
  198. package/dist/lib/pmo/base-command.js +32 -198
  199. package/dist/lib/pmo/base-command.js.map +1 -1
  200. package/dist/lib/pmo/index.d.ts +1 -0
  201. package/dist/lib/pmo/index.js +3 -0
  202. package/dist/lib/pmo/index.js.map +1 -1
  203. package/dist/lib/pmo/storage/base.d.ts +0 -18
  204. package/dist/lib/pmo/storage/base.js +0 -231
  205. package/dist/lib/pmo/storage/base.js.map +1 -1
  206. package/dist/lib/pmo/storage/index.d.ts +1 -76
  207. package/dist/lib/pmo/storage/index.js +1 -215
  208. package/dist/lib/pmo/storage/index.js.map +1 -1
  209. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  210. package/dist/lib/pmo/storage/tickets.js +4 -34
  211. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  212. package/dist/lib/pmo/types.d.ts +0 -37
  213. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  214. package/dist/lib/providers/clickup-provider.js +353 -0
  215. package/dist/lib/providers/clickup-provider.js.map +1 -0
  216. package/dist/lib/providers/resolver.d.ts +1 -1
  217. package/dist/lib/providers/resolver.js +16 -5
  218. package/dist/lib/providers/resolver.js.map +1 -1
  219. package/dist/lib/providers/types.d.ts +1 -1
  220. package/dist/lib/runners/claude-code-runner.js +13 -4
  221. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  222. package/dist/lib/runtime-command.d.ts +219 -0
  223. package/dist/lib/runtime-command.js +320 -0
  224. package/dist/lib/runtime-command.js.map +1 -0
  225. package/dist/lib/shortcut/config.js +13 -7
  226. package/dist/lib/shortcut/config.js.map +1 -1
  227. package/dist/lib/trello/config.js +17 -12
  228. package/dist/lib/trello/config.js.map +1 -1
  229. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  230. package/dist/lib/work-source/config.d.ts +1 -1
  231. package/dist/lib/work-source/config.js +11 -1
  232. package/dist/lib/work-source/config.js.map +1 -1
  233. package/dist/lib/work-source/provider-sources.js +6 -1
  234. package/dist/lib/work-source/provider-sources.js.map +1 -1
  235. package/oclif.manifest.json +3015 -4827
  236. package/package.json +1 -1
  237. package/dist/commands/board/index.d.ts +0 -21
  238. package/dist/commands/board/index.js +0 -263
  239. package/dist/commands/board/index.js.map +0 -1
  240. package/dist/commands/board/view.d.ts +0 -15
  241. package/dist/commands/board/view.js +0 -137
  242. package/dist/commands/board/view.js.map +0 -1
  243. package/dist/commands/board/watch.d.ts +0 -15
  244. package/dist/commands/board/watch.js +0 -59
  245. package/dist/commands/board/watch.js.map +0 -1
  246. package/dist/commands/dashboard/index.d.ts +0 -14
  247. package/dist/commands/dashboard/index.js +0 -117
  248. package/dist/commands/dashboard/index.js.map +0 -1
  249. package/dist/commands/dashboard.d.ts +0 -38
  250. package/dist/commands/dashboard.js +0 -353
  251. package/dist/commands/dashboard.js.map +0 -1
  252. package/dist/commands/pmo/init.d.ts +0 -28
  253. package/dist/commands/pmo/init.js +0 -410
  254. package/dist/commands/pmo/init.js.map +0 -1
  255. package/dist/commands/project/archive.d.ts +0 -18
  256. package/dist/commands/project/archive.js +0 -79
  257. package/dist/commands/project/archive.js.map +0 -1
  258. package/dist/commands/project/create.d.ts +0 -24
  259. package/dist/commands/project/create.js +0 -191
  260. package/dist/commands/project/create.js.map +0 -1
  261. package/dist/commands/project/delete.d.ts +0 -18
  262. package/dist/commands/project/delete.js +0 -115
  263. package/dist/commands/project/delete.js.map +0 -1
  264. package/dist/commands/project/index.d.ts +0 -14
  265. package/dist/commands/project/index.js +0 -60
  266. package/dist/commands/project/index.js.map +0 -1
  267. package/dist/commands/project/list.d.ts +0 -16
  268. package/dist/commands/project/list.js +0 -115
  269. package/dist/commands/project/list.js.map +0 -1
  270. package/dist/commands/project/spec.d.ts +0 -19
  271. package/dist/commands/project/spec.js +0 -218
  272. package/dist/commands/project/spec.js.map +0 -1
  273. package/dist/commands/project/unarchive.d.ts +0 -17
  274. package/dist/commands/project/unarchive.js +0 -55
  275. package/dist/commands/project/unarchive.js.map +0 -1
  276. package/dist/commands/project/update.d.ts +0 -19
  277. package/dist/commands/project/update.js +0 -161
  278. package/dist/commands/project/update.js.map +0 -1
  279. package/dist/commands/project/view.d.ts +0 -17
  280. package/dist/commands/project/view.js +0 -107
  281. package/dist/commands/project/view.js.map +0 -1
  282. package/dist/commands/ticket/bulk.d.ts +0 -14
  283. package/dist/commands/ticket/bulk.js +0 -141
  284. package/dist/commands/ticket/bulk.js.map +0 -1
  285. package/dist/commands/ticket/cancel.d.ts +0 -17
  286. package/dist/commands/ticket/cancel.js +0 -206
  287. package/dist/commands/ticket/cancel.js.map +0 -1
  288. package/dist/commands/ticket/category.d.ts +0 -15
  289. package/dist/commands/ticket/category.js +0 -64
  290. package/dist/commands/ticket/category.js.map +0 -1
  291. package/dist/commands/ticket/complete.d.ts +0 -17
  292. package/dist/commands/ticket/complete.js +0 -193
  293. package/dist/commands/ticket/complete.js.map +0 -1
  294. package/dist/commands/ticket/epic.d.ts +0 -21
  295. package/dist/commands/ticket/epic.js +0 -306
  296. package/dist/commands/ticket/epic.js.map +0 -1
  297. package/dist/commands/ticket/link/block.d.ts +0 -15
  298. package/dist/commands/ticket/link/block.js +0 -96
  299. package/dist/commands/ticket/link/block.js.map +0 -1
  300. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  301. package/dist/commands/ticket/link/duplicates.js +0 -96
  302. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  303. package/dist/commands/ticket/link/index.d.ts +0 -14
  304. package/dist/commands/ticket/link/index.js +0 -99
  305. package/dist/commands/ticket/link/index.js.map +0 -1
  306. package/dist/commands/ticket/link/relates.d.ts +0 -15
  307. package/dist/commands/ticket/link/relates.js +0 -96
  308. package/dist/commands/ticket/link/relates.js.map +0 -1
  309. package/dist/commands/ticket/project.d.ts +0 -19
  310. package/dist/commands/ticket/project.js +0 -257
  311. package/dist/commands/ticket/project.js.map +0 -1
  312. package/dist/commands/ticket/reassign.d.ts +0 -20
  313. package/dist/commands/ticket/reassign.js +0 -340
  314. package/dist/commands/ticket/reassign.js.map +0 -1
  315. package/dist/commands/ticket/resolve.d.ts +0 -68
  316. package/dist/commands/ticket/resolve.js +0 -306
  317. package/dist/commands/ticket/resolve.js.map +0 -1
  318. package/dist/commands/ticket/spec.d.ts +0 -19
  319. package/dist/commands/ticket/spec.js +0 -260
  320. package/dist/commands/ticket/spec.js.map +0 -1
  321. package/dist/commands/ticket/status.d.ts +0 -14
  322. package/dist/commands/ticket/status.js +0 -84
  323. package/dist/commands/ticket/status.js.map +0 -1
  324. package/dist/commands/ticket/view.d.ts +0 -14
  325. package/dist/commands/ticket/view.js +0 -113
  326. package/dist/commands/ticket/view.js.map +0 -1
  327. package/dist/lib/mcp/tools/board.d.ts +0 -6
  328. package/dist/lib/mcp/tools/board.js +0 -190
  329. package/dist/lib/mcp/tools/board.js.map +0 -1
  330. package/dist/lib/mcp/tools/category.d.ts +0 -6
  331. package/dist/lib/mcp/tools/category.js +0 -85
  332. package/dist/lib/mcp/tools/category.js.map +0 -1
  333. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  334. package/dist/lib/mcp/tools/epic.js +0 -184
  335. package/dist/lib/mcp/tools/epic.js.map +0 -1
  336. package/dist/lib/mcp/tools/label.d.ts +0 -6
  337. package/dist/lib/mcp/tools/label.js +0 -339
  338. package/dist/lib/mcp/tools/label.js.map +0 -1
  339. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  340. package/dist/lib/mcp/tools/phase.js +0 -132
  341. package/dist/lib/mcp/tools/phase.js.map +0 -1
  342. package/dist/lib/mcp/tools/project.d.ts +0 -6
  343. package/dist/lib/mcp/tools/project.js +0 -197
  344. package/dist/lib/mcp/tools/project.js.map +0 -1
  345. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  346. package/dist/lib/mcp/tools/roadmap.js +0 -124
  347. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  348. package/dist/lib/mcp/tools/status.d.ts +0 -6
  349. package/dist/lib/mcp/tools/status.js +0 -110
  350. package/dist/lib/mcp/tools/status.js.map +0 -1
  351. package/dist/lib/mcp/tools/template.d.ts +0 -6
  352. package/dist/lib/mcp/tools/template.js +0 -108
  353. package/dist/lib/mcp/tools/template.js.map +0 -1
  354. package/dist/lib/mcp/tools/view.d.ts +0 -6
  355. package/dist/lib/mcp/tools/view.js +0 -77
  356. package/dist/lib/mcp/tools/view.js.map +0 -1
  357. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  358. package/dist/lib/mcp/tools/workflow.js +0 -96
  359. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  360. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  361. package/dist/lib/pmo/storage/categories.js +0 -206
  362. package/dist/lib/pmo/storage/categories.js.map +0 -1
  363. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  364. package/dist/lib/pmo/storage/labels.js +0 -347
  365. package/dist/lib/pmo/storage/labels.js.map +0 -1
  366. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  367. package/dist/lib/pmo/storage/phases.js +0 -393
  368. package/dist/lib/pmo/storage/phases.js.map +0 -1
  369. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  370. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  371. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  372. package/dist/lib/pmo/storage/views.d.ts +0 -57
  373. package/dist/lib/pmo/storage/views.js +0 -456
  374. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -1,393 +0,0 @@
1
- /**
2
- * Project phase operations.
3
- */
4
- import { PMO_TABLES } from '../schema.js';
5
- import { PMOError, STATE_CATEGORY_ORDER, } from '../types.js';
6
- import { slugify } from '../utils.js';
7
- const T = PMO_TABLES;
8
- export class PhaseStorage {
9
- ctx;
10
- constructor(ctx) {
11
- this.ctx = ctx;
12
- }
13
- // =========================================================================
14
- // Project Phases
15
- // =========================================================================
16
- /**
17
- * List project phases.
18
- */
19
- async listPhases(filter) {
20
- let sql = `SELECT * FROM ${T.phases}`;
21
- const conditions = [];
22
- const params = [];
23
- if (filter?.category) {
24
- conditions.push('category = ?');
25
- params.push(filter.category);
26
- }
27
- if (filter?.search) {
28
- conditions.push('(name LIKE ? OR description LIKE ?)');
29
- const searchTerm = `%${filter.search}%`;
30
- params.push(searchTerm, searchTerm);
31
- }
32
- if (conditions.length > 0) {
33
- sql += ' WHERE ' + conditions.join(' AND ');
34
- }
35
- sql += ` ORDER BY
36
- CASE category
37
- WHEN 'backlog' THEN 0
38
- WHEN 'unstarted' THEN 1
39
- WHEN 'started' THEN 2
40
- WHEN 'completed' THEN 3
41
- WHEN 'canceled' THEN 4
42
- END,
43
- position`;
44
- const rows = this.ctx.db.prepare(sql).all(...params);
45
- return rows.map((row) => this.rowToPhase(row));
46
- }
47
- /**
48
- * Get a phase by ID.
49
- */
50
- async getPhase(id) {
51
- const row = this.ctx.db.prepare(`SELECT * FROM ${T.phases} WHERE id = ?`).get(id);
52
- if (!row)
53
- return null;
54
- return this.rowToPhase(row);
55
- }
56
- /**
57
- * Create a new phase.
58
- */
59
- async createPhase(phase) {
60
- if (!phase.name) {
61
- throw new PMOError('INVALID', 'Phase name is required');
62
- }
63
- if (!phase.category) {
64
- throw new PMOError('INVALID', 'Phase category is required');
65
- }
66
- if (!STATE_CATEGORY_ORDER.includes(phase.category)) {
67
- throw new PMOError('INVALID', `Invalid category: ${phase.category}. Must be one of: ${STATE_CATEGORY_ORDER.join(', ')}`);
68
- }
69
- // Check for duplicate name
70
- const existing = this.ctx.db.prepare(`
71
- SELECT id FROM ${T.phases} WHERE LOWER(name) = LOWER(?)
72
- `).get(phase.name);
73
- if (existing) {
74
- throw new PMOError('CONFLICT', `Phase "${phase.name}" already exists`);
75
- }
76
- // Get next position within category
77
- const maxPos = this.ctx.db.prepare(`
78
- SELECT MAX(position) as max FROM ${T.phases} WHERE category = ?
79
- `).get(phase.category);
80
- const position = phase.position ?? (maxPos.max !== null ? maxPos.max + 1 : 0);
81
- const id = phase.id || slugify(phase.name);
82
- const now = new Date().toISOString();
83
- // If setting as default, unset other defaults first
84
- if (phase.isDefault) {
85
- this.ctx.db.prepare(`UPDATE ${T.phases} SET is_default = 0`).run();
86
- }
87
- this.ctx.db.prepare(`
88
- INSERT INTO ${T.phases} (id, name, category, position, color, description, is_default, created_at)
89
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
90
- `).run(id, phase.name, phase.category, position, phase.color || null, phase.description || null, phase.isDefault ? 1 : 0, now);
91
- return (await this.getPhase(id));
92
- }
93
- /**
94
- * Update a phase.
95
- */
96
- async updatePhase(id, changes) {
97
- const existing = await this.getPhase(id);
98
- if (!existing) {
99
- throw new PMOError('NOT_FOUND', `Phase not found: ${id}`);
100
- }
101
- if (changes.category &&
102
- !STATE_CATEGORY_ORDER.includes(changes.category)) {
103
- throw new PMOError('INVALID', `Invalid category: ${changes.category}. Must be one of: ${STATE_CATEGORY_ORDER.join(', ')}`);
104
- }
105
- // Check for duplicate name if name is changing
106
- if (changes.name &&
107
- changes.name.toLowerCase() !== existing.name.toLowerCase()) {
108
- const dup = this.ctx.db.prepare(`
109
- SELECT id FROM ${T.phases} WHERE LOWER(name) = LOWER(?) AND id != ?
110
- `).get(changes.name, id);
111
- if (dup) {
112
- throw new PMOError('CONFLICT', `Phase "${changes.name}" already exists`);
113
- }
114
- }
115
- const updates = [];
116
- const params = [];
117
- if (changes.name !== undefined) {
118
- updates.push('name = ?');
119
- params.push(changes.name);
120
- }
121
- if (changes.category !== undefined) {
122
- updates.push('category = ?');
123
- params.push(changes.category);
124
- }
125
- if (changes.position !== undefined) {
126
- updates.push('position = ?');
127
- params.push(changes.position);
128
- }
129
- if (changes.color !== undefined) {
130
- updates.push('color = ?');
131
- params.push(changes.color || null);
132
- }
133
- if (changes.description !== undefined) {
134
- updates.push('description = ?');
135
- params.push(changes.description || null);
136
- }
137
- if (changes.isDefault !== undefined) {
138
- updates.push('is_default = ?');
139
- params.push(changes.isDefault ? 1 : 0);
140
- if (changes.isDefault) {
141
- this.ctx.db.prepare(`UPDATE ${T.phases} SET is_default = 0 WHERE id != ?`).run(id);
142
- }
143
- }
144
- if (updates.length > 0) {
145
- params.push(id);
146
- this.ctx.db.prepare(`UPDATE ${T.phases} SET ${updates.join(', ')} WHERE id = ?`).run(...params);
147
- }
148
- return (await this.getPhase(id));
149
- }
150
- /**
151
- * Delete a phase.
152
- */
153
- async deletePhase(id) {
154
- const existing = await this.getPhase(id);
155
- if (!existing) {
156
- throw new PMOError('NOT_FOUND', `Phase not found: ${id}`);
157
- }
158
- // Check if any projects use this phase
159
- const projectCount = this.ctx.db.prepare(`
160
- SELECT COUNT(*) as count FROM ${T.projects} WHERE phase_id = ?
161
- `).get(id);
162
- if (projectCount.count > 0) {
163
- throw new PMOError('CONFLICT', `Cannot delete phase "${existing.name}" - ${projectCount.count} project(s) are using it`);
164
- }
165
- this.ctx.db.prepare(`DELETE FROM ${T.phases} WHERE id = ?`).run(id);
166
- }
167
- /**
168
- * Reorder a phase to a new position.
169
- */
170
- async reorderPhase(id, newPosition) {
171
- const phase = await this.getPhase(id);
172
- if (!phase) {
173
- throw new PMOError('NOT_FOUND', `Phase not found: ${id}`);
174
- }
175
- const oldPosition = phase.position;
176
- if (newPosition === oldPosition) {
177
- return phase;
178
- }
179
- if (newPosition < oldPosition) {
180
- this.ctx.db.prepare(`
181
- UPDATE ${T.phases}
182
- SET position = position + 1
183
- WHERE category = ? AND position >= ? AND position < ? AND id != ?
184
- `).run(phase.category, newPosition, oldPosition, id);
185
- }
186
- else {
187
- this.ctx.db.prepare(`
188
- UPDATE ${T.phases}
189
- SET position = position - 1
190
- WHERE category = ? AND position > ? AND position <= ? AND id != ?
191
- `).run(phase.category, oldPosition, newPosition, id);
192
- }
193
- this.ctx.db.prepare(`UPDATE ${T.phases} SET position = ? WHERE id = ?`).run(newPosition, id);
194
- return (await this.getPhase(id));
195
- }
196
- /**
197
- * Get the default phase.
198
- */
199
- async getDefaultPhase() {
200
- const row = this.ctx.db.prepare(`SELECT * FROM ${T.phases} WHERE is_default = 1`).get();
201
- if (!row) {
202
- // Fallback to first phase
203
- const firstRow = this.ctx.db.prepare(`
204
- SELECT * FROM ${T.phases}
205
- ORDER BY
206
- CASE category WHEN 'backlog' THEN 0 WHEN 'unstarted' THEN 1 WHEN 'started' THEN 2 WHEN 'completed' THEN 3 WHEN 'canceled' THEN 4 END,
207
- position
208
- LIMIT 1
209
- `).get();
210
- if (!firstRow)
211
- return null;
212
- return this.rowToPhase(firstRow);
213
- }
214
- return this.rowToPhase(row);
215
- }
216
- // =========================================================================
217
- // Phase Templates
218
- // =========================================================================
219
- /**
220
- * List phase templates.
221
- */
222
- async listPhaseTemplates(filter) {
223
- let query = `SELECT * FROM ${T.phase_templates} WHERE 1=1`;
224
- const params = [];
225
- if (filter?.isBuiltin !== undefined) {
226
- query += ' AND is_builtin = ?';
227
- params.push(filter.isBuiltin ? 1 : 0);
228
- }
229
- if (filter?.search) {
230
- query += ' AND (name LIKE ? OR description LIKE ?)';
231
- params.push(`%${filter.search}%`, `%${filter.search}%`);
232
- }
233
- query += ' ORDER BY is_builtin DESC, name';
234
- const rows = this.ctx.db.prepare(query).all(...params);
235
- return rows.map((row) => ({
236
- id: row.id,
237
- name: row.name,
238
- description: row.description || undefined,
239
- isBuiltin: row.is_builtin === 1,
240
- phases: JSON.parse(row.phases),
241
- createdAt: new Date(row.created_at),
242
- }));
243
- }
244
- /**
245
- * Get a phase template by ID.
246
- */
247
- async getPhaseTemplate(id) {
248
- const row = this.ctx.db.prepare(`
249
- SELECT * FROM ${T.phase_templates} WHERE id = ?
250
- `).get(id);
251
- if (!row)
252
- return null;
253
- return {
254
- id: row.id,
255
- name: row.name,
256
- description: row.description || undefined,
257
- isBuiltin: row.is_builtin === 1,
258
- phases: JSON.parse(row.phases),
259
- createdAt: new Date(row.created_at),
260
- };
261
- }
262
- /**
263
- * Apply a phase template.
264
- */
265
- async applyPhaseTemplate(templateId) {
266
- const template = await this.getPhaseTemplate(templateId);
267
- if (!template) {
268
- throw new PMOError('NOT_FOUND', `Phase template not found: ${templateId}`);
269
- }
270
- // Delete existing phases
271
- this.ctx.db.prepare(`DELETE FROM ${T.phases}`).run();
272
- // Create new phases from template
273
- const now = new Date().toISOString();
274
- const insertPhase = this.ctx.db.prepare(`
275
- INSERT INTO ${T.phases} (id, name, category, position, description, is_default, created_at)
276
- VALUES (?, ?, ?, ?, ?, ?, ?)
277
- `);
278
- const createdPhases = [];
279
- for (const templatePhase of template.phases) {
280
- const id = slugify(templatePhase.name);
281
- insertPhase.run(id, templatePhase.name, templatePhase.category, templatePhase.position, templatePhase.description || null, templatePhase.isDefault ? 1 : 0, now);
282
- createdPhases.push({
283
- id,
284
- name: templatePhase.name,
285
- category: templatePhase.category,
286
- position: templatePhase.position,
287
- description: templatePhase.description,
288
- isDefault: templatePhase.isDefault || false,
289
- createdAt: new Date(now),
290
- });
291
- }
292
- return createdPhases;
293
- }
294
- /**
295
- * Save current phases as a template.
296
- */
297
- async savePhaseTemplate(name, description) {
298
- // Get current phases
299
- const phases = await this.listPhases();
300
- if (phases.length === 0) {
301
- throw new PMOError('INVALID', 'No phases to save as template');
302
- }
303
- // Check for duplicate name
304
- const existing = this.ctx.db.prepare(`
305
- SELECT id FROM ${T.phase_templates} WHERE LOWER(name) = LOWER(?)
306
- `).get(name);
307
- if (existing) {
308
- throw new PMOError('CONFLICT', `Phase template "${name}" already exists`);
309
- }
310
- const id = slugify(name);
311
- const now = new Date().toISOString();
312
- // Convert phases to template format
313
- const templatePhases = phases.map((p) => ({
314
- name: p.name,
315
- category: p.category,
316
- position: p.position,
317
- description: p.description,
318
- isDefault: p.isDefault,
319
- }));
320
- this.ctx.db.prepare(`
321
- INSERT INTO ${T.phase_templates} (id, name, description, is_builtin, phases, created_at)
322
- VALUES (?, ?, ?, 0, ?, ?)
323
- `).run(id, name, description || null, JSON.stringify(templatePhases), now);
324
- return {
325
- id,
326
- name,
327
- description,
328
- isBuiltin: false,
329
- phases: templatePhases,
330
- createdAt: new Date(now),
331
- };
332
- }
333
- /**
334
- * Update a phase template.
335
- */
336
- async updatePhaseTemplate(id, changes) {
337
- const existing = await this.getPhaseTemplate(id);
338
- if (!existing) {
339
- throw new PMOError('NOT_FOUND', `Phase template not found: ${id}`);
340
- }
341
- if (existing.isBuiltin) {
342
- throw new PMOError('INVALID', 'Cannot modify built-in templates');
343
- }
344
- const updates = [];
345
- const params = [];
346
- if (changes.name !== undefined) {
347
- const dup = this.ctx.db.prepare(`
348
- SELECT id FROM ${T.phase_templates}
349
- WHERE LOWER(name) = LOWER(?) AND id != ?
350
- `).get(changes.name, id);
351
- if (dup) {
352
- throw new PMOError('CONFLICT', `Phase template "${changes.name}" already exists`);
353
- }
354
- updates.push('name = ?');
355
- params.push(changes.name);
356
- }
357
- if (changes.description !== undefined) {
358
- updates.push('description = ?');
359
- params.push(changes.description || null);
360
- }
361
- if (updates.length > 0) {
362
- params.push(id);
363
- this.ctx.db.prepare(`UPDATE ${T.phase_templates} SET ${updates.join(', ')} WHERE id = ?`).run(...params);
364
- }
365
- return (await this.getPhaseTemplate(id));
366
- }
367
- /**
368
- * Delete a phase template.
369
- */
370
- async deletePhaseTemplate(id) {
371
- const existing = await this.getPhaseTemplate(id);
372
- if (!existing) {
373
- throw new PMOError('NOT_FOUND', `Phase template not found: ${id}`);
374
- }
375
- if (existing.isBuiltin) {
376
- throw new PMOError('INVALID', 'Cannot delete built-in templates');
377
- }
378
- this.ctx.db.prepare(`DELETE FROM ${T.phase_templates} WHERE id = ?`).run(id);
379
- }
380
- rowToPhase(row) {
381
- return {
382
- id: row.id,
383
- name: row.name,
384
- category: row.category,
385
- position: row.position,
386
- color: row.color || undefined,
387
- description: row.description || undefined,
388
- isDefault: row.is_default === 1,
389
- createdAt: new Date(row.created_at),
390
- };
391
- }
392
- }
393
- //# sourceMappingURL=phases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../../../src/lib/pmo/storage/phases.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- /**
2
- * Roadmap operations for PMO.
3
- * Roadmaps are curated collections of projects for documentation/visualization.
4
- *
5
- * This module uses Drizzle ORM for type-safe database queries.
6
- */
7
- import { Roadmap, RoadmapProject, RoadmapFilter, Project } from '../types.js';
8
- import { StorageContext } from './types.js';
9
- export declare class RoadmapStorage {
10
- private ctx;
11
- constructor(ctx: StorageContext);
12
- /**
13
- * Create a new roadmap.
14
- */
15
- createRoadmap(roadmap: Partial<Roadmap> & {
16
- name: string;
17
- }): Promise<Roadmap>;
18
- /**
19
- * Get a roadmap by ID.
20
- */
21
- getRoadmap(id: string): Promise<Roadmap | null>;
22
- /**
23
- * List roadmaps with optional filters.
24
- */
25
- listRoadmaps(filter?: RoadmapFilter): Promise<Roadmap[]>;
26
- /**
27
- * Update a roadmap.
28
- */
29
- updateRoadmap(id: string, changes: Partial<Roadmap>): Promise<Roadmap>;
30
- /**
31
- * Delete a roadmap.
32
- */
33
- deleteRoadmap(id: string): Promise<void>;
34
- /**
35
- * Get the default roadmap.
36
- */
37
- getDefaultRoadmap(): Promise<Roadmap | null>;
38
- /**
39
- * Set a roadmap as the default.
40
- */
41
- setDefaultRoadmap(id: string): Promise<Roadmap>;
42
- /**
43
- * List projects in a roadmap, ordered by position.
44
- */
45
- listRoadmapProjects(roadmapId: string): Promise<Project[]>;
46
- /**
47
- * Add a project to a roadmap.
48
- */
49
- addProjectToRoadmap(roadmapId: string, projectId: string, position?: number): Promise<RoadmapProject>;
50
- /**
51
- * Remove a project from a roadmap.
52
- */
53
- removeProjectFromRoadmap(roadmapId: string, projectId: string): Promise<void>;
54
- /**
55
- * Reorder a project within a roadmap.
56
- */
57
- reorderRoadmapProject(roadmapId: string, projectId: string, newPosition: number): Promise<RoadmapProject>;
58
- /**
59
- * Get all roadmaps that contain a project.
60
- */
61
- getRoadmapsForProject(projectId: string): Promise<Roadmap[]>;
62
- private rowToRoadmap;
63
- private rowToProject;
64
- }