@proletariat/cli 0.3.93 → 0.3.95

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 (546) 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 +3 -4
  9. package/dist/commands/agent/cleanup.js +5 -4
  10. package/dist/commands/agent/cleanup.js.map +1 -1
  11. package/dist/commands/agent/gc.d.ts +3 -4
  12. package/dist/commands/agent/gc.js +5 -4
  13. package/dist/commands/agent/gc.js.map +1 -1
  14. package/dist/commands/agent/index.d.ts +3 -4
  15. package/dist/commands/agent/index.js +5 -4
  16. package/dist/commands/agent/index.js.map +1 -1
  17. package/dist/commands/agent/list.d.ts +3 -4
  18. package/dist/commands/agent/list.js +5 -4
  19. package/dist/commands/agent/list.js.map +1 -1
  20. package/dist/commands/agent/login.d.ts +1 -1
  21. package/dist/commands/agent/rebuild.d.ts +1 -1
  22. package/dist/commands/agent/remove.d.ts +3 -4
  23. package/dist/commands/agent/remove.js +5 -4
  24. package/dist/commands/agent/remove.js.map +1 -1
  25. package/dist/commands/agent/restart.d.ts +1 -1
  26. package/dist/commands/agent/shell.d.ts +1 -1
  27. package/dist/commands/agent/staff/index.d.ts +3 -4
  28. package/dist/commands/agent/staff/index.js +5 -4
  29. package/dist/commands/agent/staff/index.js.map +1 -1
  30. package/dist/commands/agent/staff/remove.d.ts +3 -4
  31. package/dist/commands/agent/staff/remove.js +5 -4
  32. package/dist/commands/agent/staff/remove.js.map +1 -1
  33. package/dist/commands/agent/status.d.ts +3 -4
  34. package/dist/commands/agent/status.js +5 -4
  35. package/dist/commands/agent/status.js.map +1 -1
  36. package/dist/commands/agent/visit.d.ts +3 -4
  37. package/dist/commands/agent/visit.js +5 -4
  38. package/dist/commands/agent/visit.js.map +1 -1
  39. package/dist/commands/asana/import.d.ts +1 -1
  40. package/dist/commands/branch/create.d.ts +1 -1
  41. package/dist/commands/branch/create.js +1 -12
  42. package/dist/commands/branch/create.js.map +1 -1
  43. package/dist/commands/branch/index.d.ts +1 -1
  44. package/dist/commands/branch/list.d.ts +3 -4
  45. package/dist/commands/branch/list.js +5 -4
  46. package/dist/commands/branch/list.js.map +1 -1
  47. package/dist/commands/branch/validate.d.ts +3 -4
  48. package/dist/commands/branch/validate.js +6 -5
  49. package/dist/commands/branch/validate.js.map +1 -1
  50. package/dist/commands/branch/where.d.ts +3 -4
  51. package/dist/commands/branch/where.js +5 -4
  52. package/dist/commands/branch/where.js.map +1 -1
  53. package/dist/commands/commit.js +1 -1
  54. package/dist/commands/commit.js.map +1 -1
  55. package/dist/commands/config/index.js +2 -2
  56. package/dist/commands/config/index.js.map +1 -1
  57. package/dist/commands/db/backup.d.ts +16 -0
  58. package/dist/commands/db/backup.js +125 -0
  59. package/dist/commands/db/backup.js.map +1 -0
  60. package/dist/commands/db/repair.js +8 -11
  61. package/dist/commands/db/repair.js.map +1 -1
  62. package/dist/commands/diet.d.ts +1 -1
  63. package/dist/commands/docker/index.js +2 -0
  64. package/dist/commands/docker/index.js.map +1 -1
  65. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  66. package/dist/commands/docker/rebuild-cache.js +144 -0
  67. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  68. package/dist/commands/execution/config.d.ts +3 -4
  69. package/dist/commands/execution/config.js +5 -4
  70. package/dist/commands/execution/config.js.map +1 -1
  71. package/dist/commands/execution/index.d.ts +3 -4
  72. package/dist/commands/execution/index.js +5 -4
  73. package/dist/commands/execution/index.js.map +1 -1
  74. package/dist/commands/execution/list.d.ts +3 -4
  75. package/dist/commands/execution/list.js +5 -4
  76. package/dist/commands/execution/list.js.map +1 -1
  77. package/dist/commands/execution/logs.d.ts +3 -4
  78. package/dist/commands/execution/logs.js +5 -4
  79. package/dist/commands/execution/logs.js.map +1 -1
  80. package/dist/commands/execution/stop.d.ts +3 -4
  81. package/dist/commands/execution/stop.js +5 -4
  82. package/dist/commands/execution/stop.js.map +1 -1
  83. package/dist/commands/execution/view.d.ts +3 -4
  84. package/dist/commands/execution/view.js +5 -4
  85. package/dist/commands/execution/view.js.map +1 -1
  86. package/dist/commands/hook/export.d.ts +3 -4
  87. package/dist/commands/hook/export.js +5 -4
  88. package/dist/commands/hook/export.js.map +1 -1
  89. package/dist/commands/hook/fire.d.ts +3 -4
  90. package/dist/commands/hook/fire.js +5 -4
  91. package/dist/commands/hook/fire.js.map +1 -1
  92. package/dist/commands/hook/index.d.ts +1 -1
  93. package/dist/commands/hook/list.d.ts +3 -4
  94. package/dist/commands/hook/list.js +5 -4
  95. package/dist/commands/hook/list.js.map +1 -1
  96. package/dist/commands/hook/preset.d.ts +3 -4
  97. package/dist/commands/hook/preset.js +5 -4
  98. package/dist/commands/hook/preset.js.map +1 -1
  99. package/dist/commands/linear/auth.d.ts +1 -1
  100. package/dist/commands/linear/connect.d.ts +1 -1
  101. package/dist/commands/linear/import.d.ts +1 -1
  102. package/dist/commands/linear/status.d.ts +1 -1
  103. package/dist/commands/linear/sync.d.ts +1 -1
  104. package/dist/commands/mcp-server.d.ts +8 -2
  105. package/dist/commands/mcp-server.js +15 -28
  106. package/dist/commands/mcp-server.js.map +1 -1
  107. package/dist/commands/monday/connect.d.ts +1 -1
  108. package/dist/commands/monday/sync.d.ts +1 -1
  109. package/dist/commands/orchestrate/index.d.ts +3 -4
  110. package/dist/commands/orchestrate/index.js +5 -4
  111. package/dist/commands/orchestrate/index.js.map +1 -1
  112. package/dist/commands/orchestrator/index.d.ts +3 -4
  113. package/dist/commands/orchestrator/index.js +5 -4
  114. package/dist/commands/orchestrator/index.js.map +1 -1
  115. package/dist/commands/orchestrator/start.d.ts +3 -3
  116. package/dist/commands/orchestrator/start.js +38 -40
  117. package/dist/commands/orchestrator/start.js.map +1 -1
  118. package/dist/commands/pr/checks.d.ts +3 -4
  119. package/dist/commands/pr/checks.js +5 -4
  120. package/dist/commands/pr/checks.js.map +1 -1
  121. package/dist/commands/pr/close.d.ts +1 -1
  122. package/dist/commands/pr/create.d.ts +1 -1
  123. package/dist/commands/pr/index.d.ts +1 -1
  124. package/dist/commands/pr/link.d.ts +1 -1
  125. package/dist/commands/pr/list.d.ts +1 -1
  126. package/dist/commands/pr/merge.d.ts +1 -1
  127. package/dist/commands/pr/status.d.ts +1 -1
  128. package/dist/commands/pull.d.ts +1 -1
  129. package/dist/commands/repo/add.d.ts +3 -4
  130. package/dist/commands/repo/add.js +5 -4
  131. package/dist/commands/repo/add.js.map +1 -1
  132. package/dist/commands/repo/create.d.ts +3 -4
  133. package/dist/commands/repo/create.js +5 -4
  134. package/dist/commands/repo/create.js.map +1 -1
  135. package/dist/commands/repo/fix-remotes.d.ts +3 -4
  136. package/dist/commands/repo/fix-remotes.js +5 -4
  137. package/dist/commands/repo/fix-remotes.js.map +1 -1
  138. package/dist/commands/repo/index.d.ts +3 -4
  139. package/dist/commands/repo/index.js +5 -4
  140. package/dist/commands/repo/index.js.map +1 -1
  141. package/dist/commands/repo/list.d.ts +3 -4
  142. package/dist/commands/repo/list.js +5 -4
  143. package/dist/commands/repo/list.js.map +1 -1
  144. package/dist/commands/repo/remove.d.ts +1 -1
  145. package/dist/commands/repo/view.d.ts +1 -1
  146. package/dist/commands/session/attach.d.ts +1 -1
  147. package/dist/commands/session/cleanup.d.ts +3 -4
  148. package/dist/commands/session/cleanup.js +5 -4
  149. package/dist/commands/session/cleanup.js.map +1 -1
  150. package/dist/commands/session/create.d.ts +3 -4
  151. package/dist/commands/session/create.js +5 -4
  152. package/dist/commands/session/create.js.map +1 -1
  153. package/dist/commands/session/exec.d.ts +3 -4
  154. package/dist/commands/session/exec.js +5 -4
  155. package/dist/commands/session/exec.js.map +1 -1
  156. package/dist/commands/session/health.d.ts +1 -1
  157. package/dist/commands/session/health.js +18 -0
  158. package/dist/commands/session/health.js.map +1 -1
  159. package/dist/commands/session/index.d.ts +3 -4
  160. package/dist/commands/session/index.js +9 -4
  161. package/dist/commands/session/index.js.map +1 -1
  162. package/dist/commands/session/inspect.d.ts +3 -4
  163. package/dist/commands/session/inspect.js +5 -4
  164. package/dist/commands/session/inspect.js.map +1 -1
  165. package/dist/commands/session/list.d.ts +3 -4
  166. package/dist/commands/session/list.js +19 -5
  167. package/dist/commands/session/list.js.map +1 -1
  168. package/dist/commands/session/peek.d.ts +1 -1
  169. package/dist/commands/session/prune.d.ts +3 -4
  170. package/dist/commands/session/prune.js +5 -4
  171. package/dist/commands/session/prune.js.map +1 -1
  172. package/dist/commands/session/report.d.ts +25 -5
  173. package/dist/commands/session/report.js +201 -5
  174. package/dist/commands/session/report.js.map +1 -1
  175. package/dist/commands/session/restart.d.ts +3 -4
  176. package/dist/commands/session/restart.js +5 -4
  177. package/dist/commands/session/restart.js.map +1 -1
  178. package/dist/commands/session/watch.d.ts +17 -0
  179. package/dist/commands/session/watch.js +139 -0
  180. package/dist/commands/session/watch.js.map +1 -0
  181. package/dist/commands/shortcut/connect.d.ts +1 -1
  182. package/dist/commands/support/logs.d.ts +1 -1
  183. package/dist/commands/ticket/create.d.ts +1 -1
  184. package/dist/commands/ticket/delete.d.ts +1 -1
  185. package/dist/commands/ticket/edit.d.ts +1 -1
  186. package/dist/commands/ticket/index.d.ts +3 -4
  187. package/dist/commands/ticket/index.js +11 -40
  188. package/dist/commands/ticket/index.js.map +1 -1
  189. package/dist/commands/ticket/list.d.ts +1 -1
  190. package/dist/commands/ticket/move.d.ts +1 -1
  191. package/dist/commands/ticket/show.d.ts +8 -7
  192. package/dist/commands/ticket/show.js +101 -8
  193. package/dist/commands/ticket/show.js.map +1 -1
  194. package/dist/commands/ticket/update.d.ts +1 -1
  195. package/dist/commands/trello/configure.d.ts +1 -1
  196. package/dist/commands/trello/import.d.ts +1 -1
  197. package/dist/commands/trello/sync.d.ts +1 -1
  198. package/dist/commands/{dashboard/index.d.ts → web.d.ts} +10 -4
  199. package/dist/commands/web.js +82 -0
  200. package/dist/commands/web.js.map +1 -0
  201. package/dist/commands/work/asana.d.ts +1 -1
  202. package/dist/commands/work/complete.d.ts +1 -1
  203. package/dist/commands/work/groom.d.ts +1 -1
  204. package/dist/commands/work/hooks/add.d.ts +3 -4
  205. package/dist/commands/work/hooks/add.js +5 -4
  206. package/dist/commands/work/hooks/add.js.map +1 -1
  207. package/dist/commands/work/hooks/index.d.ts +1 -1
  208. package/dist/commands/work/hooks/list.d.ts +3 -4
  209. package/dist/commands/work/hooks/list.js +5 -4
  210. package/dist/commands/work/hooks/list.js.map +1 -1
  211. package/dist/commands/work/hooks/remove.d.ts +1 -1
  212. package/dist/commands/work/hooks/toggle.d.ts +3 -4
  213. package/dist/commands/work/hooks/toggle.js +5 -4
  214. package/dist/commands/work/hooks/toggle.js.map +1 -1
  215. package/dist/commands/work/implement.d.ts +1 -1
  216. package/dist/commands/work/index.d.ts +1 -1
  217. package/dist/commands/work/jira.d.ts +1 -1
  218. package/dist/commands/work/linear.d.ts +1 -1
  219. package/dist/commands/work/peek.d.ts +3 -4
  220. package/dist/commands/work/peek.js +5 -4
  221. package/dist/commands/work/peek.js.map +1 -1
  222. package/dist/commands/{ticket/cancel.d.ts → work/propose.d.ts} +11 -5
  223. package/dist/commands/work/propose.js +57 -0
  224. package/dist/commands/work/propose.js.map +1 -0
  225. package/dist/commands/work/ready.d.ts +1 -1
  226. package/dist/commands/work/ready.js +2 -2
  227. package/dist/commands/work/ready.js.map +1 -1
  228. package/dist/commands/work/rebase.d.ts +2 -2
  229. package/dist/commands/work/rebase.js +52 -49
  230. package/dist/commands/work/rebase.js.map +1 -1
  231. package/dist/commands/work/resolve.d.ts +1 -1
  232. package/dist/commands/work/review.d.ts +1 -1
  233. package/dist/commands/work/ship.d.ts +7 -1
  234. package/dist/commands/work/ship.js +217 -48
  235. package/dist/commands/work/ship.js.map +1 -1
  236. package/dist/commands/work/shortcut.d.ts +1 -1
  237. package/dist/commands/work/source/set.d.ts +1 -1
  238. package/dist/commands/work/source.d.ts +1 -1
  239. package/dist/commands/work/spawn.d.ts +1 -1
  240. package/dist/commands/work/start.d.ts +1 -1
  241. package/dist/commands/work/start.js +3 -6
  242. package/dist/commands/work/start.js.map +1 -1
  243. package/dist/commands/work/status.d.ts +1 -1
  244. package/dist/commands/work/stop.d.ts +3 -4
  245. package/dist/commands/work/stop.js +5 -4
  246. package/dist/commands/work/stop.js.map +1 -1
  247. package/dist/commands/work/watch.d.ts +1 -1
  248. package/dist/hooks/init.js +12 -2
  249. package/dist/hooks/init.js.map +1 -1
  250. package/dist/lib/asana/config.js +13 -7
  251. package/dist/lib/asana/config.js.map +1 -1
  252. package/dist/lib/branch/index.d.ts +6 -5
  253. package/dist/lib/branch/index.js +8 -13
  254. package/dist/lib/branch/index.js.map +1 -1
  255. package/dist/lib/clickup/client.d.ts +92 -0
  256. package/dist/lib/clickup/client.js +150 -0
  257. package/dist/lib/clickup/client.js.map +1 -0
  258. package/dist/lib/clickup/config.d.ts +41 -0
  259. package/dist/lib/clickup/config.js +104 -0
  260. package/dist/lib/clickup/config.js.map +1 -0
  261. package/dist/lib/clickup/index.d.ts +4 -0
  262. package/dist/lib/clickup/index.js +4 -0
  263. package/dist/lib/clickup/index.js.map +1 -0
  264. package/dist/lib/clickup/types.d.ts +104 -0
  265. package/dist/lib/clickup/types.js +34 -0
  266. package/dist/lib/clickup/types.js.map +1 -0
  267. package/dist/lib/dashboard/html.d.ts +2 -1
  268. package/dist/lib/dashboard/html.js +150 -522
  269. package/dist/lib/dashboard/html.js.map +1 -1
  270. package/dist/lib/database/credential-store.d.ts +64 -0
  271. package/dist/lib/database/credential-store.js +306 -0
  272. package/dist/lib/database/credential-store.js.map +1 -0
  273. package/dist/lib/database/db-safety.d.ts +48 -9
  274. package/dist/lib/database/db-safety.js +308 -43
  275. package/dist/lib/database/db-safety.js.map +1 -1
  276. package/dist/lib/database/index.d.ts +2 -1
  277. package/dist/lib/database/index.js +3 -1
  278. package/dist/lib/database/index.js.map +1 -1
  279. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  280. package/dist/lib/database/pmo-bootstrap.js +45 -20
  281. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  282. package/dist/lib/database/workspace.js +7 -1
  283. package/dist/lib/database/workspace.js.map +1 -1
  284. package/dist/lib/execution/devcontainer.js +51 -0
  285. package/dist/lib/execution/devcontainer.js.map +1 -1
  286. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  287. package/dist/lib/execution/runners/docker-management.js +99 -7
  288. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  289. package/dist/lib/execution/runners/docker.js +8 -0
  290. package/dist/lib/execution/runners/docker.js.map +1 -1
  291. package/dist/lib/execution/runners/prompt-builder.js +9 -6
  292. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  293. package/dist/lib/execution/session-utils.d.ts +4 -0
  294. package/dist/lib/execution/session-utils.js +34 -24
  295. package/dist/lib/execution/session-utils.js.map +1 -1
  296. package/dist/lib/execution/spawner.js +2 -4
  297. package/dist/lib/execution/spawner.js.map +1 -1
  298. package/dist/lib/execution/storage.d.ts +29 -1
  299. package/dist/lib/execution/storage.js +77 -0
  300. package/dist/lib/execution/storage.js.map +1 -1
  301. package/dist/lib/execution/types.d.ts +17 -6
  302. package/dist/lib/execution/types.js +11 -8
  303. package/dist/lib/execution/types.js.map +1 -1
  304. package/dist/lib/external-issues/types.d.ts +3 -3
  305. package/dist/lib/external-issues/types.js +1 -1
  306. package/dist/lib/external-issues/types.js.map +1 -1
  307. package/dist/lib/jira/config.js +10 -4
  308. package/dist/lib/jira/config.js.map +1 -1
  309. package/dist/lib/linear/config.js +13 -8
  310. package/dist/lib/linear/config.js.map +1 -1
  311. package/dist/lib/machine-config.d.ts +8 -0
  312. package/dist/lib/machine-config.js +37 -0
  313. package/dist/lib/machine-config.js.map +1 -1
  314. package/dist/lib/mcp/generator.d.ts +26 -0
  315. package/dist/lib/mcp/generator.js +219 -0
  316. package/dist/lib/mcp/generator.js.map +1 -0
  317. package/dist/lib/mcp/index.d.ts +1 -0
  318. package/dist/lib/mcp/index.js +1 -0
  319. package/dist/lib/mcp/index.js.map +1 -1
  320. package/dist/lib/mcp/tools/index.d.ts +0 -11
  321. package/dist/lib/mcp/tools/index.js +0 -11
  322. package/dist/lib/mcp/tools/index.js.map +1 -1
  323. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  324. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  325. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  326. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  327. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  328. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  329. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  330. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  331. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  332. package/dist/lib/mcp/tools/ticket.js +10 -48
  333. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  334. package/dist/lib/monday/config.js +11 -5
  335. package/dist/lib/monday/config.js.map +1 -1
  336. package/dist/lib/orchestrate/poller.d.ts +1 -1
  337. package/dist/lib/orchestrate/poller.js +1 -1
  338. package/dist/lib/pmo/base-command.d.ts +20 -152
  339. package/dist/lib/pmo/base-command.js +32 -198
  340. package/dist/lib/pmo/base-command.js.map +1 -1
  341. package/dist/lib/pmo/index.d.ts +1 -0
  342. package/dist/lib/pmo/index.js +3 -0
  343. package/dist/lib/pmo/index.js.map +1 -1
  344. package/dist/lib/pmo/storage/base.d.ts +0 -18
  345. package/dist/lib/pmo/storage/base.js +5 -234
  346. package/dist/lib/pmo/storage/base.js.map +1 -1
  347. package/dist/lib/pmo/storage/index.d.ts +1 -76
  348. package/dist/lib/pmo/storage/index.js +1 -215
  349. package/dist/lib/pmo/storage/index.js.map +1 -1
  350. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  351. package/dist/lib/pmo/storage/tickets.js +4 -34
  352. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  353. package/dist/lib/pmo/types.d.ts +0 -37
  354. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  355. package/dist/lib/providers/clickup-provider.js +353 -0
  356. package/dist/lib/providers/clickup-provider.js.map +1 -0
  357. package/dist/lib/providers/index.d.ts +1 -0
  358. package/dist/lib/providers/index.js +1 -0
  359. package/dist/lib/providers/index.js.map +1 -1
  360. package/dist/lib/providers/resolver.d.ts +1 -1
  361. package/dist/lib/providers/resolver.js +32 -5
  362. package/dist/lib/providers/resolver.js.map +1 -1
  363. package/dist/lib/providers/trello-provider.d.ts +28 -0
  364. package/dist/lib/providers/trello-provider.js +381 -0
  365. package/dist/lib/providers/trello-provider.js.map +1 -0
  366. package/dist/lib/providers/types.d.ts +1 -1
  367. package/dist/lib/runners/claude-code-runner.js +13 -4
  368. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  369. package/dist/lib/runtime-command.d.ts +219 -0
  370. package/dist/lib/runtime-command.js +320 -0
  371. package/dist/lib/runtime-command.js.map +1 -0
  372. package/dist/lib/session/heartbeat.d.ts +45 -0
  373. package/dist/lib/session/heartbeat.js +150 -0
  374. package/dist/lib/session/heartbeat.js.map +1 -0
  375. package/dist/lib/session/index.d.ts +7 -0
  376. package/dist/lib/session/index.js +8 -0
  377. package/dist/lib/session/index.js.map +1 -0
  378. package/dist/lib/session/watcher.d.ts +79 -0
  379. package/dist/lib/session/watcher.js +142 -0
  380. package/dist/lib/session/watcher.js.map +1 -0
  381. package/dist/lib/shipping/auto-merge.d.ts +57 -0
  382. package/dist/lib/shipping/auto-merge.js +311 -0
  383. package/dist/lib/shipping/auto-merge.js.map +1 -0
  384. package/dist/lib/shipping/github.d.ts +68 -0
  385. package/dist/lib/shipping/github.js +217 -0
  386. package/dist/lib/shipping/github.js.map +1 -0
  387. package/dist/lib/shipping/index.d.ts +13 -0
  388. package/dist/lib/shipping/index.js +11 -0
  389. package/dist/lib/shipping/index.js.map +1 -0
  390. package/dist/lib/shipping/rebase.d.ts +35 -0
  391. package/dist/lib/shipping/rebase.js +107 -0
  392. package/dist/lib/shipping/rebase.js.map +1 -0
  393. package/dist/lib/shipping/types.d.ts +181 -0
  394. package/dist/lib/shipping/types.js +9 -0
  395. package/dist/lib/shipping/types.js.map +1 -0
  396. package/dist/lib/shortcut/config.js +13 -7
  397. package/dist/lib/shortcut/config.js.map +1 -1
  398. package/dist/lib/trello/client.d.ts +1 -0
  399. package/dist/lib/trello/client.js +6 -0
  400. package/dist/lib/trello/client.js.map +1 -1
  401. package/dist/lib/trello/config.js +17 -12
  402. package/dist/lib/trello/config.js.map +1 -1
  403. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  404. package/dist/lib/work-source/config.d.ts +1 -1
  405. package/dist/lib/work-source/config.js +11 -1
  406. package/dist/lib/work-source/config.js.map +1 -1
  407. package/dist/lib/work-source/provider-sources.js +6 -1
  408. package/dist/lib/work-source/provider-sources.js.map +1 -1
  409. package/oclif.manifest.json +3810 -5723
  410. package/package.json +8 -8
  411. package/dist/commands/board/index.d.ts +0 -21
  412. package/dist/commands/board/index.js +0 -263
  413. package/dist/commands/board/index.js.map +0 -1
  414. package/dist/commands/board/view.d.ts +0 -15
  415. package/dist/commands/board/view.js +0 -137
  416. package/dist/commands/board/view.js.map +0 -1
  417. package/dist/commands/board/watch.d.ts +0 -15
  418. package/dist/commands/board/watch.js +0 -59
  419. package/dist/commands/board/watch.js.map +0 -1
  420. package/dist/commands/dashboard/index.js +0 -117
  421. package/dist/commands/dashboard/index.js.map +0 -1
  422. package/dist/commands/dashboard.d.ts +0 -38
  423. package/dist/commands/dashboard.js +0 -353
  424. package/dist/commands/dashboard.js.map +0 -1
  425. package/dist/commands/pmo/init.d.ts +0 -28
  426. package/dist/commands/pmo/init.js +0 -410
  427. package/dist/commands/pmo/init.js.map +0 -1
  428. package/dist/commands/project/archive.d.ts +0 -18
  429. package/dist/commands/project/archive.js +0 -79
  430. package/dist/commands/project/archive.js.map +0 -1
  431. package/dist/commands/project/create.d.ts +0 -24
  432. package/dist/commands/project/create.js +0 -191
  433. package/dist/commands/project/create.js.map +0 -1
  434. package/dist/commands/project/delete.d.ts +0 -18
  435. package/dist/commands/project/delete.js +0 -115
  436. package/dist/commands/project/delete.js.map +0 -1
  437. package/dist/commands/project/index.d.ts +0 -14
  438. package/dist/commands/project/index.js +0 -60
  439. package/dist/commands/project/index.js.map +0 -1
  440. package/dist/commands/project/list.d.ts +0 -16
  441. package/dist/commands/project/list.js +0 -115
  442. package/dist/commands/project/list.js.map +0 -1
  443. package/dist/commands/project/spec.d.ts +0 -19
  444. package/dist/commands/project/spec.js +0 -218
  445. package/dist/commands/project/spec.js.map +0 -1
  446. package/dist/commands/project/unarchive.d.ts +0 -17
  447. package/dist/commands/project/unarchive.js +0 -55
  448. package/dist/commands/project/unarchive.js.map +0 -1
  449. package/dist/commands/project/update.d.ts +0 -19
  450. package/dist/commands/project/update.js +0 -161
  451. package/dist/commands/project/update.js.map +0 -1
  452. package/dist/commands/project/view.d.ts +0 -17
  453. package/dist/commands/project/view.js +0 -107
  454. package/dist/commands/project/view.js.map +0 -1
  455. package/dist/commands/ticket/bulk.d.ts +0 -14
  456. package/dist/commands/ticket/bulk.js +0 -141
  457. package/dist/commands/ticket/bulk.js.map +0 -1
  458. package/dist/commands/ticket/cancel.js +0 -206
  459. package/dist/commands/ticket/cancel.js.map +0 -1
  460. package/dist/commands/ticket/category.d.ts +0 -15
  461. package/dist/commands/ticket/category.js +0 -64
  462. package/dist/commands/ticket/category.js.map +0 -1
  463. package/dist/commands/ticket/complete.d.ts +0 -17
  464. package/dist/commands/ticket/complete.js +0 -193
  465. package/dist/commands/ticket/complete.js.map +0 -1
  466. package/dist/commands/ticket/epic.d.ts +0 -21
  467. package/dist/commands/ticket/epic.js +0 -306
  468. package/dist/commands/ticket/epic.js.map +0 -1
  469. package/dist/commands/ticket/link/block.d.ts +0 -15
  470. package/dist/commands/ticket/link/block.js +0 -96
  471. package/dist/commands/ticket/link/block.js.map +0 -1
  472. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  473. package/dist/commands/ticket/link/duplicates.js +0 -96
  474. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  475. package/dist/commands/ticket/link/index.d.ts +0 -14
  476. package/dist/commands/ticket/link/index.js +0 -99
  477. package/dist/commands/ticket/link/index.js.map +0 -1
  478. package/dist/commands/ticket/link/relates.d.ts +0 -15
  479. package/dist/commands/ticket/link/relates.js +0 -96
  480. package/dist/commands/ticket/link/relates.js.map +0 -1
  481. package/dist/commands/ticket/project.d.ts +0 -19
  482. package/dist/commands/ticket/project.js +0 -257
  483. package/dist/commands/ticket/project.js.map +0 -1
  484. package/dist/commands/ticket/reassign.d.ts +0 -20
  485. package/dist/commands/ticket/reassign.js +0 -340
  486. package/dist/commands/ticket/reassign.js.map +0 -1
  487. package/dist/commands/ticket/resolve.d.ts +0 -68
  488. package/dist/commands/ticket/resolve.js +0 -306
  489. package/dist/commands/ticket/resolve.js.map +0 -1
  490. package/dist/commands/ticket/spec.d.ts +0 -19
  491. package/dist/commands/ticket/spec.js +0 -260
  492. package/dist/commands/ticket/spec.js.map +0 -1
  493. package/dist/commands/ticket/status.d.ts +0 -14
  494. package/dist/commands/ticket/status.js +0 -84
  495. package/dist/commands/ticket/status.js.map +0 -1
  496. package/dist/commands/ticket/view.d.ts +0 -14
  497. package/dist/commands/ticket/view.js +0 -113
  498. package/dist/commands/ticket/view.js.map +0 -1
  499. package/dist/lib/mcp/tools/board.d.ts +0 -6
  500. package/dist/lib/mcp/tools/board.js +0 -190
  501. package/dist/lib/mcp/tools/board.js.map +0 -1
  502. package/dist/lib/mcp/tools/category.d.ts +0 -6
  503. package/dist/lib/mcp/tools/category.js +0 -85
  504. package/dist/lib/mcp/tools/category.js.map +0 -1
  505. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  506. package/dist/lib/mcp/tools/epic.js +0 -184
  507. package/dist/lib/mcp/tools/epic.js.map +0 -1
  508. package/dist/lib/mcp/tools/label.d.ts +0 -6
  509. package/dist/lib/mcp/tools/label.js +0 -339
  510. package/dist/lib/mcp/tools/label.js.map +0 -1
  511. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  512. package/dist/lib/mcp/tools/phase.js +0 -132
  513. package/dist/lib/mcp/tools/phase.js.map +0 -1
  514. package/dist/lib/mcp/tools/project.d.ts +0 -6
  515. package/dist/lib/mcp/tools/project.js +0 -197
  516. package/dist/lib/mcp/tools/project.js.map +0 -1
  517. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  518. package/dist/lib/mcp/tools/roadmap.js +0 -124
  519. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  520. package/dist/lib/mcp/tools/status.d.ts +0 -6
  521. package/dist/lib/mcp/tools/status.js +0 -110
  522. package/dist/lib/mcp/tools/status.js.map +0 -1
  523. package/dist/lib/mcp/tools/template.d.ts +0 -6
  524. package/dist/lib/mcp/tools/template.js +0 -108
  525. package/dist/lib/mcp/tools/template.js.map +0 -1
  526. package/dist/lib/mcp/tools/view.d.ts +0 -6
  527. package/dist/lib/mcp/tools/view.js +0 -77
  528. package/dist/lib/mcp/tools/view.js.map +0 -1
  529. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  530. package/dist/lib/mcp/tools/workflow.js +0 -96
  531. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  532. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  533. package/dist/lib/pmo/storage/categories.js +0 -206
  534. package/dist/lib/pmo/storage/categories.js.map +0 -1
  535. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  536. package/dist/lib/pmo/storage/labels.js +0 -347
  537. package/dist/lib/pmo/storage/labels.js.map +0 -1
  538. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  539. package/dist/lib/pmo/storage/phases.js +0 -393
  540. package/dist/lib/pmo/storage/phases.js.map +0 -1
  541. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  542. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  543. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  544. package/dist/lib/pmo/storage/views.d.ts +0 -57
  545. package/dist/lib/pmo/storage/views.js +0 -456
  546. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/lib/dashboard/html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwpBD,CAAA;AACR,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/lib/dashboard/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2SD,CAAA;AACR,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Credential Store
3
+ *
4
+ * Stores API keys and tokens in a separate credentials.db file
5
+ * that is NOT mounted into agent containers. This prevents agents
6
+ * from reading or leaking credentials.
7
+ *
8
+ * Credentials are stored at {workspacePath}/.proletariat-credentials/credentials.db
9
+ * while the main workspace.db lives at {workspacePath}/.proletariat/workspace.db.
10
+ * Only .proletariat/ is mounted into containers, keeping credentials isolated.
11
+ *
12
+ * PRLT-1114: Agent secret isolation
13
+ */
14
+ import Database from 'better-sqlite3';
15
+ /**
16
+ * Check if a workspace_settings key stores a credential (API key or token).
17
+ */
18
+ export declare function isCredentialKey(key: string): boolean;
19
+ /**
20
+ * Get the path to the credentials database for a workspace.
21
+ */
22
+ export declare function getCredentialDatabasePath(workspacePath: string): string;
23
+ /**
24
+ * Get a credential value, with automatic migration from workspace.db.
25
+ *
26
+ * Resolution order:
27
+ * 1. Check credentials.db (if available)
28
+ * 2. Fall back to workspace.db (for backward compatibility)
29
+ * 3. If found in workspace.db, migrate to credentials.db and delete from workspace.db
30
+ *
31
+ * In agent containers, credentials.db won't exist and workspace.db will have
32
+ * credentials removed — so this returns null, which is the desired behavior.
33
+ *
34
+ * For in-memory databases (tests), falls back to workspace_settings directly
35
+ * since there's no filesystem path to store credentials.db.
36
+ */
37
+ export declare function getCredential(workspaceDb: Database.Database, key: string): string | null;
38
+ /**
39
+ * Set a credential value. Always writes to credentials.db.
40
+ * Also removes from workspace.db if present (migration cleanup).
41
+ * For in-memory databases (tests), writes to workspace_settings directly.
42
+ */
43
+ export declare function setCredential(workspaceDb: Database.Database, key: string, value: string): void;
44
+ /**
45
+ * Delete a credential from both credentials.db and workspace.db.
46
+ * For in-memory databases (tests), deletes from workspace_settings directly.
47
+ */
48
+ export declare function deleteCredential(workspaceDb: Database.Database, key: string): void;
49
+ /**
50
+ * Check if a credential exists in either credentials.db or workspace.db.
51
+ */
52
+ export declare function hasCredential(workspaceDb: Database.Database, key: string): boolean;
53
+ /**
54
+ * Close all cached credential database connections.
55
+ * Call this during cleanup/shutdown.
56
+ */
57
+ export declare function closeAllCredentialStores(): void;
58
+ /**
59
+ * Eagerly migrate all known credential keys from workspace.db to credentials.db.
60
+ * This is safe to call multiple times (idempotent).
61
+ * Useful during workspace open to proactively move all credentials out.
62
+ * No-op for in-memory databases (tests).
63
+ */
64
+ export declare function migrateCredentials(workspaceDb: Database.Database): void;
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Credential Store
3
+ *
4
+ * Stores API keys and tokens in a separate credentials.db file
5
+ * that is NOT mounted into agent containers. This prevents agents
6
+ * from reading or leaking credentials.
7
+ *
8
+ * Credentials are stored at {workspacePath}/.proletariat-credentials/credentials.db
9
+ * while the main workspace.db lives at {workspacePath}/.proletariat/workspace.db.
10
+ * Only .proletariat/ is mounted into containers, keeping credentials isolated.
11
+ *
12
+ * PRLT-1114: Agent secret isolation
13
+ */
14
+ import Database from 'better-sqlite3';
15
+ import * as fs from 'node:fs';
16
+ import * as path from 'node:path';
17
+ const CREDENTIALS_TABLE = 'credentials';
18
+ /** Known credential setting keys that must be stored in credentials.db */
19
+ const CREDENTIAL_KEYS = new Set([
20
+ 'linear.api_key',
21
+ 'jira.api_token',
22
+ 'asana.access_token',
23
+ 'trello.api_key',
24
+ 'trello.api_token',
25
+ 'shortcut.api_token',
26
+ 'monday.api_token',
27
+ 'clickup.api_key',
28
+ ]);
29
+ /**
30
+ * Check if a workspace_settings key stores a credential (API key or token).
31
+ */
32
+ export function isCredentialKey(key) {
33
+ return CREDENTIAL_KEYS.has(key);
34
+ }
35
+ /**
36
+ * Get the path to the credentials database for a workspace.
37
+ */
38
+ export function getCredentialDatabasePath(workspacePath) {
39
+ return path.join(workspacePath, '.proletariat-credentials', 'credentials.db');
40
+ }
41
+ /**
42
+ * Derive the workspace root path from a workspace.db Database instance.
43
+ * workspace.db is at {workspacePath}/.proletariat/workspace.db
44
+ * Returns empty string for in-memory databases (used in tests).
45
+ */
46
+ function deriveWorkspacePath(db) {
47
+ const dbName = db.name;
48
+ // In-memory or unnamed databases don't have a filesystem path
49
+ if (!dbName || dbName === ':memory:' || dbName === '')
50
+ return '';
51
+ return path.dirname(path.dirname(dbName));
52
+ }
53
+ /**
54
+ * Open or create the credentials database.
55
+ * Creates the directory and schema if they don't exist.
56
+ */
57
+ function openCredentialDb(workspacePath) {
58
+ const dbPath = getCredentialDatabasePath(workspacePath);
59
+ const dir = path.dirname(dbPath);
60
+ if (!fs.existsSync(dir)) {
61
+ fs.mkdirSync(dir, { recursive: true });
62
+ }
63
+ const credDb = new Database(dbPath);
64
+ credDb.pragma('journal_mode = WAL');
65
+ credDb.pragma('foreign_keys = ON');
66
+ credDb.pragma('busy_timeout = 5000');
67
+ credDb.exec(`
68
+ CREATE TABLE IF NOT EXISTS ${CREDENTIALS_TABLE} (
69
+ key TEXT PRIMARY KEY,
70
+ value TEXT NOT NULL
71
+ )
72
+ `);
73
+ return credDb;
74
+ }
75
+ // Cache open credential db connections keyed by workspace path
76
+ const credentialDbCache = new Map();
77
+ /**
78
+ * Get a cached credential database connection.
79
+ * Returns null if credentials.db cannot be opened (e.g., in agent containers
80
+ * where the credentials directory is not mounted).
81
+ */
82
+ function getCachedCredentialDb(workspacePath, autoCreate) {
83
+ const cached = credentialDbCache.get(workspacePath);
84
+ if (cached) {
85
+ try {
86
+ cached.pragma('journal_mode');
87
+ return cached;
88
+ }
89
+ catch {
90
+ credentialDbCache.delete(workspacePath);
91
+ }
92
+ }
93
+ const dbPath = getCredentialDatabasePath(workspacePath);
94
+ const dir = path.dirname(dbPath);
95
+ // If the credentials directory doesn't exist and we're not auto-creating,
96
+ // return null. This is expected in agent containers where only .proletariat/
97
+ // is mounted, not .proletariat-credentials/.
98
+ if (!autoCreate && !fs.existsSync(dir)) {
99
+ return null;
100
+ }
101
+ try {
102
+ const credDb = openCredentialDb(workspacePath);
103
+ credentialDbCache.set(workspacePath, credDb);
104
+ return credDb;
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ /**
111
+ * Get a credential value, with automatic migration from workspace.db.
112
+ *
113
+ * Resolution order:
114
+ * 1. Check credentials.db (if available)
115
+ * 2. Fall back to workspace.db (for backward compatibility)
116
+ * 3. If found in workspace.db, migrate to credentials.db and delete from workspace.db
117
+ *
118
+ * In agent containers, credentials.db won't exist and workspace.db will have
119
+ * credentials removed — so this returns null, which is the desired behavior.
120
+ *
121
+ * For in-memory databases (tests), falls back to workspace_settings directly
122
+ * since there's no filesystem path to store credentials.db.
123
+ */
124
+ export function getCredential(workspaceDb, key) {
125
+ const workspacePath = deriveWorkspacePath(workspaceDb);
126
+ // In-memory databases (tests) — use workspace_settings directly
127
+ if (!workspacePath) {
128
+ try {
129
+ const row = workspaceDb
130
+ .prepare('SELECT value FROM workspace_settings WHERE key = ?')
131
+ .get(key);
132
+ return row?.value ?? null;
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ }
138
+ // Check credentials.db first (don't auto-create just for reads)
139
+ const credDb = getCachedCredentialDb(workspacePath, false);
140
+ if (credDb) {
141
+ const row = credDb
142
+ .prepare(`SELECT value FROM ${CREDENTIALS_TABLE} WHERE key = ?`)
143
+ .get(key);
144
+ if (row)
145
+ return row.value;
146
+ }
147
+ // Fall back to workspace.db (backward compatibility + auto-migration)
148
+ let fallbackValue = null;
149
+ try {
150
+ const fallbackRow = workspaceDb
151
+ .prepare('SELECT value FROM workspace_settings WHERE key = ?')
152
+ .get(key);
153
+ fallbackValue = fallbackRow?.value ?? null;
154
+ }
155
+ catch {
156
+ // workspace.db may not have the table yet
157
+ }
158
+ if (fallbackValue) {
159
+ // Auto-migrate: move credential to credentials.db (auto-create on write)
160
+ const writeDb = getCachedCredentialDb(workspacePath, true);
161
+ if (writeDb) {
162
+ writeDb
163
+ .prepare(`INSERT OR REPLACE INTO ${CREDENTIALS_TABLE} (key, value) VALUES (?, ?)`)
164
+ .run(key, fallbackValue);
165
+ }
166
+ // Remove from workspace.db so agents can't see it
167
+ try {
168
+ workspaceDb.prepare('DELETE FROM workspace_settings WHERE key = ?').run(key);
169
+ }
170
+ catch {
171
+ // workspace.db may be read-only in containers
172
+ }
173
+ return fallbackValue;
174
+ }
175
+ return null;
176
+ }
177
+ /**
178
+ * Set a credential value. Always writes to credentials.db.
179
+ * Also removes from workspace.db if present (migration cleanup).
180
+ * For in-memory databases (tests), writes to workspace_settings directly.
181
+ */
182
+ export function setCredential(workspaceDb, key, value) {
183
+ const workspacePath = deriveWorkspacePath(workspaceDb);
184
+ // In-memory databases (tests) — use workspace_settings directly
185
+ if (!workspacePath) {
186
+ workspaceDb.prepare(`
187
+ INSERT INTO workspace_settings (key, value)
188
+ VALUES (?, ?)
189
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value
190
+ `).run(key, value);
191
+ return;
192
+ }
193
+ const credDb = getCachedCredentialDb(workspacePath, true);
194
+ if (!credDb) {
195
+ throw new Error(`Cannot open credential store at ${getCredentialDatabasePath(workspacePath)}`);
196
+ }
197
+ credDb
198
+ .prepare(`INSERT OR REPLACE INTO ${CREDENTIALS_TABLE} (key, value) VALUES (?, ?)`)
199
+ .run(key, value);
200
+ // Clean up from workspace.db if it was there
201
+ try {
202
+ workspaceDb.prepare('DELETE FROM workspace_settings WHERE key = ?').run(key);
203
+ }
204
+ catch {
205
+ // workspace.db may be read-only in containers
206
+ }
207
+ }
208
+ /**
209
+ * Delete a credential from both credentials.db and workspace.db.
210
+ * For in-memory databases (tests), deletes from workspace_settings directly.
211
+ */
212
+ export function deleteCredential(workspaceDb, key) {
213
+ const workspacePath = deriveWorkspacePath(workspaceDb);
214
+ // In-memory databases (tests) — use workspace_settings directly
215
+ if (!workspacePath) {
216
+ try {
217
+ workspaceDb.prepare('DELETE FROM workspace_settings WHERE key = ?').run(key);
218
+ }
219
+ catch {
220
+ // Table may not exist
221
+ }
222
+ return;
223
+ }
224
+ const credDb = getCachedCredentialDb(workspacePath, false);
225
+ if (credDb) {
226
+ credDb.prepare(`DELETE FROM ${CREDENTIALS_TABLE} WHERE key = ?`).run(key);
227
+ }
228
+ // Also delete from workspace.db in case it's still there
229
+ try {
230
+ workspaceDb.prepare('DELETE FROM workspace_settings WHERE key = ?').run(key);
231
+ }
232
+ catch {
233
+ // workspace.db may be read-only
234
+ }
235
+ }
236
+ /**
237
+ * Check if a credential exists in either credentials.db or workspace.db.
238
+ */
239
+ export function hasCredential(workspaceDb, key) {
240
+ return getCredential(workspaceDb, key) !== null;
241
+ }
242
+ /**
243
+ * Close all cached credential database connections.
244
+ * Call this during cleanup/shutdown.
245
+ */
246
+ export function closeAllCredentialStores() {
247
+ for (const [, db] of credentialDbCache) {
248
+ try {
249
+ db.close();
250
+ }
251
+ catch {
252
+ // Ignore close errors
253
+ }
254
+ }
255
+ credentialDbCache.clear();
256
+ }
257
+ /**
258
+ * Eagerly migrate all known credential keys from workspace.db to credentials.db.
259
+ * This is safe to call multiple times (idempotent).
260
+ * Useful during workspace open to proactively move all credentials out.
261
+ * No-op for in-memory databases (tests).
262
+ */
263
+ export function migrateCredentials(workspaceDb) {
264
+ const workspacePath = deriveWorkspacePath(workspaceDb);
265
+ if (!workspacePath)
266
+ return; // In-memory databases (tests)
267
+ // Check if any credentials exist in workspace.db
268
+ let hasAny = false;
269
+ try {
270
+ for (const key of CREDENTIAL_KEYS) {
271
+ const row = workspaceDb
272
+ .prepare('SELECT value FROM workspace_settings WHERE key = ?')
273
+ .get(key);
274
+ if (row) {
275
+ hasAny = true;
276
+ break;
277
+ }
278
+ }
279
+ }
280
+ catch {
281
+ return; // workspace_settings table may not exist
282
+ }
283
+ if (!hasAny)
284
+ return;
285
+ // Open/create credentials.db and migrate
286
+ const credDb = getCachedCredentialDb(workspacePath, true);
287
+ if (!credDb)
288
+ return;
289
+ for (const key of CREDENTIAL_KEYS) {
290
+ try {
291
+ const row = workspaceDb
292
+ .prepare('SELECT value FROM workspace_settings WHERE key = ?')
293
+ .get(key);
294
+ if (row) {
295
+ credDb
296
+ .prepare(`INSERT OR REPLACE INTO ${CREDENTIALS_TABLE} (key, value) VALUES (?, ?)`)
297
+ .run(key, row.value);
298
+ workspaceDb.prepare('DELETE FROM workspace_settings WHERE key = ?').run(key);
299
+ }
300
+ }
301
+ catch {
302
+ // Skip individual key failures
303
+ }
304
+ }
305
+ }
306
+ //# sourceMappingURL=credential-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../../src/lib/database/credential-store.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,12 @@
3
3
  *
4
4
  * Provides:
5
5
  * - WAL journal mode configuration
6
- * - Rotating backup (keeps last 5 copies)
6
+ * - Timestamped backup in .proletariat/backups/ (keeps last 5)
7
7
  * - Integrity check on open with auto-recovery
8
8
  * - Manual repair via dump/reimport
9
+ * - Migration of legacy scattered backup files
9
10
  *
10
- * See: PRLT-1081
11
+ * See: PRLT-1081, PRLT-1154
11
12
  */
12
13
  import Database from 'better-sqlite3';
13
14
  /**
@@ -16,18 +17,56 @@ import Database from 'better-sqlite3';
16
17
  * more resistant to corruption than the default journal_mode=delete.
17
18
  */
18
19
  export declare function enableWALMode(db: Database.Database): void;
20
+ /**
21
+ * Get the backups directory for a given database path.
22
+ * The backups directory is always a sibling `backups/` directory
23
+ * relative to the database file (e.g., `.proletariat/backups/`).
24
+ */
25
+ export declare function getBackupsDir(dbPath: string): string;
19
26
  /**
20
27
  * Get the backup path for a given database path and backup number.
28
+ * Backups are stored in the backups/ directory with timestamps.
29
+ *
30
+ * For numbered access (used by backup restore), returns a path
31
+ * based on sorted backup files in the directory.
32
+ * Returns null if the backup doesn't exist.
21
33
  */
22
- export declare function getBackupPath(dbPath: string, n: number): string;
34
+ export declare function getBackupPath(dbPath: string, n: number): string | null;
23
35
  /**
24
- * Create a rotating backup of the database file.
25
- * Keeps the last MAX_BACKUPS copies, numbered 1 (newest) through MAX_BACKUPS (oldest).
26
- * Rotates existing backups before copying the current database.
36
+ * Create a timestamped backup of the database file in the backups/ directory.
37
+ * Keeps the last MAX_BACKUPS copies, deletes older ones.
27
38
  *
28
- * Returns true if backup was created, false if source didn't exist.
39
+ * Returns the backup path if created, null if source didn't exist.
40
+ */
41
+ export declare function createRotatingBackup(dbPath: string): string | null;
42
+ /**
43
+ * Create a manual backup with an optional label.
44
+ * Unlike auto-backups, manual backups include a "manual" prefix.
45
+ * Returns the backup path.
46
+ */
47
+ export declare function createManualBackup(dbPath: string, label?: string): string | null;
48
+ /**
49
+ * Migrate legacy backup files from the .proletariat/ top level into backups/.
50
+ *
51
+ * Handles:
52
+ * - workspace.db.backup (plain backup)
53
+ * - workspace.db.backup-YYYYMMDD-HHMMSS (timestamped backups)
54
+ * - workspace.db.backup.N (numbered backups with -wal/-shm companions)
55
+ * - workspace.db.corrupt (corrupt file preservations)
56
+ *
57
+ * Called on first run after upgrade. Safe to call multiple times.
58
+ */
59
+ export declare function migrateExistingBackups(dbPath: string): void;
60
+ /**
61
+ * List all backup entries with metadata, sorted newest-first.
62
+ * Used by the repair and backup commands to display backup info.
29
63
  */
30
- export declare function createRotatingBackup(dbPath: string): boolean;
64
+ export declare function listBackups(dbPath: string): Array<{
65
+ path: string;
66
+ filename: string;
67
+ size: number;
68
+ mtime: Date;
69
+ }>;
31
70
  export interface IntegrityCheckResult {
32
71
  ok: boolean;
33
72
  errors: string[];
@@ -54,6 +93,6 @@ export interface RepairResult {
54
93
  * 1. Try dump/reimport — opens the corrupt DB, dumps all SQL, creates a new DB
55
94
  * 2. If dump fails, fall back to the most recent backup
56
95
  *
57
- * The original corrupt file is preserved as dbPath.corrupt for forensics.
96
+ * The original corrupt file is preserved in backups/ for forensics.
58
97
  */
59
98
  export declare function repairDatabase(dbPath: string): RepairResult;