@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
@@ -0,0 +1,28 @@
1
+ /**
2
+ * ClickUp Ticket Provider
3
+ *
4
+ * Writes ticket operations directly to ClickUp via REST API,
5
+ * then updates local PMO to keep it in sync.
6
+ *
7
+ * Follows the same pattern as LinearTicketProvider:
8
+ * - Write to ClickUp first
9
+ * - Update local PMO as best-effort fallback
10
+ */
11
+ import type Database from 'better-sqlite3';
12
+ import type { TicketFilter, CreateTicketInput, UpdateTicketInput } from '../pmo/types.js';
13
+ import type { TicketProvider, TicketProviderName, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderUpdateResult, ProviderAssignResult, ProviderStorage } from './types.js';
14
+ export declare class ClickUpTicketProvider implements TicketProvider {
15
+ private db;
16
+ private storage;
17
+ private projectId;
18
+ readonly name: TicketProviderName;
19
+ constructor(db: Database.Database, storage: ProviderStorage, projectId: string);
20
+ private getApiKeyOrFail;
21
+ moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
22
+ deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
23
+ listTickets(_projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
24
+ createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
25
+ getTicket(ticketId: string): Promise<ProviderGetResult>;
26
+ updateTicket(ticketId: string, input: UpdateTicketInput): Promise<ProviderUpdateResult>;
27
+ assignTicket(ticketId: string, assignee: string): Promise<ProviderAssignResult>;
28
+ }
@@ -0,0 +1,353 @@
1
+ /**
2
+ * ClickUp Ticket Provider
3
+ *
4
+ * Writes ticket operations directly to ClickUp via REST API,
5
+ * then updates local PMO to keep it in sync.
6
+ *
7
+ * Follows the same pattern as LinearTicketProvider:
8
+ * - Write to ClickUp first
9
+ * - Update local PMO as best-effort fallback
10
+ */
11
+ import { ClickUpClient } from '../clickup/client.js';
12
+ import { getClickUpApiKey, loadClickUpConfig } from '../clickup/config.js';
13
+ import { PMO_PRIORITY_TO_CLICKUP, CLICKUP_PRIORITY_TO_PMO, CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY } from '../clickup/types.js';
14
+ export class ClickUpTicketProvider {
15
+ db;
16
+ storage;
17
+ projectId;
18
+ name = 'clickup';
19
+ constructor(db, storage, projectId) {
20
+ this.db = db;
21
+ this.storage = storage;
22
+ this.projectId = projectId;
23
+ }
24
+ getApiKeyOrFail() {
25
+ const apiKey = getClickUpApiKey(this.db);
26
+ if (!apiKey)
27
+ throw new Error('ClickUp API key not configured');
28
+ return apiKey;
29
+ }
30
+ async moveTicket(ticketId, newState) {
31
+ const apiKey = getClickUpApiKey(this.db);
32
+ if (!apiKey) {
33
+ return { success: false, provider: 'clickup', error: 'ClickUp API key not configured' };
34
+ }
35
+ // Look up ClickUp task ID from ticket metadata
36
+ const ticket = await this.storage.getTicket(ticketId);
37
+ if (!ticket) {
38
+ return { success: false, provider: 'clickup', error: `Ticket ${ticketId} not found` };
39
+ }
40
+ const clickUpTaskId = ticket.metadata?.['clickup.task_id'];
41
+ if (!clickUpTaskId) {
42
+ return { success: false, provider: 'clickup', error: `No ClickUp mapping for ticket ${ticketId}` };
43
+ }
44
+ const client = new ClickUpClient(apiKey);
45
+ // Update the task status on ClickUp
46
+ try {
47
+ await client.updateTaskStatus(clickUpTaskId, newState);
48
+ }
49
+ catch (error) {
50
+ return {
51
+ success: false,
52
+ provider: 'clickup',
53
+ error: `Failed to update ClickUp task: ${error instanceof Error ? error.message : String(error)}`,
54
+ };
55
+ }
56
+ // Also update local PMO to keep it in sync
57
+ try {
58
+ await this.storage.moveTicket(this.projectId, ticketId, newState);
59
+ }
60
+ catch {
61
+ // Non-fatal: ClickUp is the source of truth
62
+ }
63
+ // Post a comment about the status change
64
+ try {
65
+ await client.addComment(clickUpTaskId, `Status updated to ${newState} (via prlt)`);
66
+ }
67
+ catch {
68
+ // Non-fatal: comment is informational
69
+ }
70
+ return { success: true, provider: 'clickup' };
71
+ }
72
+ async deleteTicket(ticketId) {
73
+ let apiKey;
74
+ try {
75
+ apiKey = this.getApiKeyOrFail();
76
+ }
77
+ catch {
78
+ return { success: false, provider: 'clickup', error: 'ClickUp API key not configured' };
79
+ }
80
+ // Look up ClickUp task ID from ticket metadata
81
+ const ticket = await this.storage.getTicket(ticketId);
82
+ const clickUpTaskId = ticket?.metadata?.['clickup.task_id'];
83
+ if (clickUpTaskId) {
84
+ const client = new ClickUpClient(apiKey);
85
+ try {
86
+ await client.deleteTask(clickUpTaskId);
87
+ }
88
+ catch (error) {
89
+ return {
90
+ success: false,
91
+ provider: 'clickup',
92
+ error: `Failed to delete ClickUp task: ${error instanceof Error ? error.message : String(error)}`,
93
+ };
94
+ }
95
+ }
96
+ // Also delete the local PMO mirror
97
+ try {
98
+ await this.storage.deleteTicket(ticketId);
99
+ }
100
+ catch {
101
+ // Non-fatal if ClickUp delete succeeded
102
+ }
103
+ return { success: true, provider: 'clickup' };
104
+ }
105
+ async listTickets(_projectId, filter) {
106
+ let apiKey;
107
+ try {
108
+ apiKey = this.getApiKeyOrFail();
109
+ }
110
+ catch {
111
+ return { success: false, provider: 'clickup', tickets: [], error: 'ClickUp API key not configured' };
112
+ }
113
+ const clickUpConfig = loadClickUpConfig(this.db);
114
+ const listId = clickUpConfig?.defaultListId || process.env.PRLT_CLICKUP_LIST_ID;
115
+ if (!listId) {
116
+ return { success: false, provider: 'clickup', tickets: [], error: 'ClickUp list ID is required. Set PRLT_CLICKUP_LIST_ID.' };
117
+ }
118
+ try {
119
+ const client = new ClickUpClient(apiKey);
120
+ const tasks = await client.listTasks(listId);
121
+ let tickets = tasks.map(task => clickUpTaskToTicket(task));
122
+ // Apply client-side filters
123
+ if (filter?.priority) {
124
+ tickets = tickets.filter(t => t.priority === filter.priority);
125
+ }
126
+ if (filter?.column) {
127
+ tickets = tickets.filter(t => t.statusName === filter.column);
128
+ }
129
+ if (filter?.category) {
130
+ tickets = tickets.filter(t => t.category === filter.category);
131
+ }
132
+ if (filter?.search) {
133
+ const term = filter.search.toLowerCase();
134
+ tickets = tickets.filter(t => t.title.toLowerCase().includes(term) ||
135
+ (t.description || '').toLowerCase().includes(term));
136
+ }
137
+ if (filter?.label) {
138
+ const label = filter.label.toLowerCase();
139
+ tickets = tickets.filter(t => t.labels.some(l => l.toLowerCase() === label));
140
+ }
141
+ return { success: true, provider: 'clickup', tickets };
142
+ }
143
+ catch (error) {
144
+ return {
145
+ success: false,
146
+ provider: 'clickup',
147
+ tickets: [],
148
+ error: error instanceof Error ? error.message : String(error),
149
+ };
150
+ }
151
+ }
152
+ async createTicket(projectId, input) {
153
+ let apiKey;
154
+ try {
155
+ apiKey = this.getApiKeyOrFail();
156
+ }
157
+ catch {
158
+ return { success: false, provider: 'clickup', error: 'ClickUp API key not configured' };
159
+ }
160
+ const client = new ClickUpClient(apiKey);
161
+ const clickUpConfig = loadClickUpConfig(this.db);
162
+ const listId = clickUpConfig?.defaultListId || process.env.PRLT_CLICKUP_LIST_ID;
163
+ if (!listId) {
164
+ return { success: false, provider: 'clickup', error: 'ClickUp list ID is required. Set PRLT_CLICKUP_LIST_ID.' };
165
+ }
166
+ try {
167
+ // Map PMO priority to ClickUp priority number
168
+ const clickUpPriority = input.priority ? PMO_PRIORITY_TO_CLICKUP[input.priority] : undefined;
169
+ // Create the task in ClickUp
170
+ const task = await client.createTask(listId, {
171
+ name: input.title,
172
+ description: input.description,
173
+ priority: clickUpPriority ?? null,
174
+ tags: input.labels,
175
+ });
176
+ // Create local PMO mirror ticket
177
+ const mirrorDescription = [
178
+ input.description || '',
179
+ '',
180
+ '---',
181
+ `_Created in ClickUp: [${task.id}](${task.url})_`,
182
+ ].join('\n').trim();
183
+ const mirrorPriority = input.priority || (task.priority ? CLICKUP_PRIORITY_TO_PMO[task.priority.id] : undefined);
184
+ const pmoTicket = await this.storage.createTicket(projectId, {
185
+ ...input,
186
+ title: task.name,
187
+ description: mirrorDescription,
188
+ priority: mirrorPriority,
189
+ metadata: {
190
+ ...input.metadata,
191
+ 'external_source': 'clickup',
192
+ 'external_id': task.id,
193
+ 'external_key': task.custom_id || task.id,
194
+ 'external_url': task.url,
195
+ 'clickup.task_id': task.id,
196
+ 'clickup.list_id': listId,
197
+ 'clickup.status': task.status.status,
198
+ },
199
+ });
200
+ return { success: true, provider: 'clickup', ticket: pmoTicket };
201
+ }
202
+ catch (error) {
203
+ return {
204
+ success: false,
205
+ provider: 'clickup',
206
+ error: error instanceof Error ? error.message : String(error),
207
+ };
208
+ }
209
+ }
210
+ async getTicket(ticketId) {
211
+ // For getTicket, use local PMO since we maintain mirrors
212
+ try {
213
+ const ticket = await this.storage.getTicket(ticketId);
214
+ return { success: true, provider: 'clickup', ticket };
215
+ }
216
+ catch (error) {
217
+ return {
218
+ success: false,
219
+ provider: 'clickup',
220
+ error: error instanceof Error ? error.message : String(error),
221
+ };
222
+ }
223
+ }
224
+ async updateTicket(ticketId, input) {
225
+ let apiKey;
226
+ try {
227
+ apiKey = this.getApiKeyOrFail();
228
+ }
229
+ catch {
230
+ return { success: false, provider: 'clickup', error: 'ClickUp API key not configured' };
231
+ }
232
+ // Look up ClickUp task ID from ticket metadata
233
+ const ticket = await this.storage.getTicket(ticketId);
234
+ const clickUpTaskId = ticket?.metadata?.['clickup.task_id'];
235
+ if (clickUpTaskId) {
236
+ // Build ClickUp update payload from input fields
237
+ const clickUpInput = {};
238
+ if (input.title !== undefined)
239
+ clickUpInput.name = input.title;
240
+ if (input.description !== undefined)
241
+ clickUpInput.description = input.description ?? undefined;
242
+ if (input.priority !== undefined) {
243
+ clickUpInput.priority = input.priority ? PMO_PRIORITY_TO_CLICKUP[input.priority] : null;
244
+ }
245
+ // Only call ClickUp API if there are relevant fields
246
+ if (Object.keys(clickUpInput).length > 0) {
247
+ const client = new ClickUpClient(apiKey);
248
+ try {
249
+ await client.updateTask(clickUpTaskId, clickUpInput);
250
+ }
251
+ catch (error) {
252
+ return {
253
+ success: false,
254
+ provider: 'clickup',
255
+ error: `Failed to update ClickUp task: ${error instanceof Error ? error.message : String(error)}`,
256
+ };
257
+ }
258
+ }
259
+ }
260
+ // Also update local PMO mirror
261
+ try {
262
+ const updated = await this.storage.updateTicket(ticketId, input);
263
+ return { success: true, provider: 'clickup', ticket: updated };
264
+ }
265
+ catch (error) {
266
+ return {
267
+ success: false,
268
+ provider: 'clickup',
269
+ error: error instanceof Error ? error.message : String(error),
270
+ };
271
+ }
272
+ }
273
+ async assignTicket(ticketId, assignee) {
274
+ let apiKey;
275
+ try {
276
+ apiKey = this.getApiKeyOrFail();
277
+ }
278
+ catch {
279
+ return { success: false, provider: 'clickup', error: 'ClickUp API key not configured' };
280
+ }
281
+ // Look up ClickUp task ID from ticket metadata
282
+ const ticket = await this.storage.getTicket(ticketId);
283
+ const clickUpTaskId = ticket?.metadata?.['clickup.task_id'];
284
+ if (clickUpTaskId) {
285
+ const client = new ClickUpClient(apiKey);
286
+ // ClickUp requires numeric user IDs for assignment.
287
+ // If the assignee looks like an email, try to resolve it.
288
+ // Otherwise, skip the ClickUp-side assignment (best-effort).
289
+ if (assignee.includes('@')) {
290
+ try {
291
+ const teams = await client.listTeams();
292
+ const teamId = teams[0]?.id;
293
+ if (teamId) {
294
+ const member = await client.findMemberByEmail(teamId, assignee);
295
+ if (member) {
296
+ await client.addAssignee(clickUpTaskId, member.id);
297
+ }
298
+ }
299
+ }
300
+ catch {
301
+ // Non-fatal: assignee resolution is best-effort
302
+ }
303
+ }
304
+ }
305
+ // Update local PMO mirror
306
+ try {
307
+ await this.storage.updateTicket(ticketId, { assignee });
308
+ return { success: true, provider: 'clickup' };
309
+ }
310
+ catch (error) {
311
+ return {
312
+ success: false,
313
+ provider: 'clickup',
314
+ error: error instanceof Error ? error.message : String(error),
315
+ };
316
+ }
317
+ }
318
+ }
319
+ /**
320
+ * Convert a ClickUp task to a normalized PMO Ticket.
321
+ */
322
+ function clickUpTaskToTicket(task) {
323
+ const priorityId = task.priority?.id;
324
+ const priority = priorityId ? CLICKUP_PRIORITY_TO_PMO[priorityId] : undefined;
325
+ const statusCategory = CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY[task.status.type] || 'started';
326
+ return {
327
+ id: task.custom_id || task.id,
328
+ title: task.name,
329
+ description: task.description || undefined,
330
+ priority,
331
+ projectId: task.list.id,
332
+ projectName: task.list.name,
333
+ statusId: task.status.id,
334
+ statusName: task.status.status,
335
+ statusCategory: statusCategory,
336
+ owner: task.assignees[0]?.username || undefined,
337
+ assignee: task.assignees[0]?.username || undefined,
338
+ subtasks: [],
339
+ labels: task.tags.map(t => t.name),
340
+ metadata: {
341
+ external_source: 'clickup',
342
+ external_key: task.custom_id || task.id,
343
+ external_id: task.id,
344
+ external_url: task.url,
345
+ 'clickup.task_id': task.id,
346
+ 'clickup.list_id': task.list.id,
347
+ 'clickup.status': task.status.status,
348
+ },
349
+ createdAt: new Date(parseInt(task.date_created, 10)),
350
+ updatedAt: new Date(parseInt(task.date_updated, 10)),
351
+ };
352
+ }
353
+ //# sourceMappingURL=clickup-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickup-provider.js","sourceRoot":"","sources":["../../../src/lib/providers/clickup-provider.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  export type { TicketProvider, TicketProviderName, ProviderResult, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderUpdateResult, ProviderAssignResult, ProviderContext, ProviderStorage, } from './types.js';
9
9
  export { PMOTicketProvider } from './pmo-provider.js';
10
10
  export { LinearTicketProvider } from './linear-provider.js';
11
+ export { TrelloTicketProvider } from './trello-provider.js';
11
12
  export { EventEmittingProvider, type StatusResolver } from './event-emitting-provider.js';
12
13
  export { ProviderStatusMappingStore, type StatusMapping } from './status-mapping.js';
13
14
  export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, type TriggerEvent, type TriggerConfig, } from './trigger-config.js';
@@ -7,6 +7,7 @@
7
7
  */
8
8
  export { PMOTicketProvider } from './pmo-provider.js';
9
9
  export { LinearTicketProvider } from './linear-provider.js';
10
+ export { TrelloTicketProvider } from './trello-provider.js';
10
11
  export { EventEmittingProvider } from './event-emitting-provider.js';
11
12
  export { ProviderStatusMappingStore } from './status-mapping.js';
12
13
  export { ProviderTriggerStore, TriggerHandler, initTriggerHandler, stopTriggerHandler, TRIGGER_EVENTS, } from './trigger-config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EACL,IAAI,EACJ,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,0BAA0B,EAAsB,MAAM,qBAAqB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GAGf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EACL,IAAI,EACJ,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GAKpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,oBAAoB,CAAA"}
@@ -23,7 +23,7 @@ import type { TicketProvider, ProviderStorage } from './types.js';
23
23
  * Resolve the correct provider for a given ticket.
24
24
  *
25
25
  * Uses the ticket's metadata to determine the source of truth:
26
- * - external_source = 'linear' + configured + inbound/bidirectional → Linear
26
+ * - external_source = 'linear' + configured + outbound/bidirectional → Linear
27
27
  * - Otherwise → PMO
28
28
  *
29
29
  * The resolved provider is wrapped with EventEmittingProvider so that
@@ -18,9 +18,14 @@
18
18
  * the active provider.
19
19
  */
20
20
  import { isLinearConfigured } from '../linear/config.js';
21
+ import { isClickUpConfigured } from '../clickup/config.js';
21
22
  import { LinearMapper } from '../linear/mapper.js';
23
+ import { isTrelloConfigured } from '../trello/config.js';
24
+ import { TrelloMapper } from '../trello/mapper.js';
22
25
  import { PMOTicketProvider } from './pmo-provider.js';
23
26
  import { LinearTicketProvider } from './linear-provider.js';
27
+ import { ClickUpTicketProvider } from './clickup-provider.js';
28
+ import { TrelloTicketProvider } from './trello-provider.js';
24
29
  import { EventEmittingProvider } from './event-emitting-provider.js';
25
30
  /**
26
31
  * Create a StatusResolver backed by the database.
@@ -87,7 +92,7 @@ function wrapWithEvents(provider, db, storage, projectId) {
87
92
  * Resolve the correct provider for a given ticket.
88
93
  *
89
94
  * Uses the ticket's metadata to determine the source of truth:
90
- * - external_source = 'linear' + configured + inbound/bidirectional → Linear
95
+ * - external_source = 'linear' + configured + outbound/bidirectional → Linear
91
96
  * - Otherwise → PMO
92
97
  *
93
98
  * The resolved provider is wrapped with EventEmittingProvider so that
@@ -107,16 +112,30 @@ export function resolveTicketProvider(ticketId, projectId, db, storage, metadata
107
112
  const mapper = new LinearMapper(db);
108
113
  const mapping = mapper.getByTicketId(ticketId);
109
114
  if (mapping) {
110
- // Only use Linear provider when Linear is the source of truth:
111
- // - 'inbound' = ticket was imported from Linear → Linear is source of truth
115
+ // Use Linear provider when we need to write back to Linear:
116
+ // - 'outbound' = ticket came from Linear (via work start) write back status changes
112
117
  // - 'bidirectional' = both directions synced → write to Linear directly
113
- // - 'outbound' = ticket was created in PMO and pushed to Linear → PMO is source of truth
114
- if (mapping.syncDirection !== 'outbound') {
118
+ // - 'inbound' = bulk import from Linear → read-only, no write-back
119
+ if (mapping.syncDirection === 'outbound' || mapping.syncDirection === 'bidirectional') {
115
120
  const inner = new LinearTicketProvider(db, storage, projectId, null);
116
121
  return wrapWithEvents(inner, db, storage, projectId);
117
122
  }
118
123
  }
119
124
  }
125
+ // Check ClickUp
126
+ if (externalSource === 'clickup' && isClickUpConfigured(db)) {
127
+ const inner = new ClickUpTicketProvider(db, storage, projectId);
128
+ return wrapWithEvents(inner, db, storage, projectId);
129
+ }
130
+ // Check Trello
131
+ if (externalSource === 'trello' && isTrelloConfigured(db)) {
132
+ const mapper = new TrelloMapper(db);
133
+ const mapping = mapper.getByTicketId(ticketId);
134
+ if (mapping) {
135
+ const inner = new TrelloTicketProvider(db, storage, projectId, null);
136
+ return wrapWithEvents(inner, db, storage, projectId);
137
+ }
138
+ }
120
139
  // Default: local PMO
121
140
  const inner = new PMOTicketProvider(storage, projectId);
122
141
  return wrapWithEvents(inner, db, storage, projectId);
@@ -145,6 +164,14 @@ export function resolveProjectProvider(db, storage, projectId, source) {
145
164
  const inner = new LinearTicketProvider(db, storage, projectId, null);
146
165
  return wrapWithEvents(inner, db, storage, projectId);
147
166
  }
167
+ if (source === 'clickup') {
168
+ const inner = new ClickUpTicketProvider(db, storage, projectId);
169
+ return wrapWithEvents(inner, db, storage, projectId);
170
+ }
171
+ if (source === 'trello') {
172
+ const inner = new TrelloTicketProvider(db, storage, projectId, null);
173
+ return wrapWithEvents(inner, db, storage, projectId);
174
+ }
148
175
  // auto: use Linear when it's configured in the workspace
149
176
  try {
150
177
  if (isLinearConfigured(db)) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Trello Ticket Provider
3
+ *
4
+ * Writes ticket operations directly to Trello via API,
5
+ * then updates local PMO to keep it in sync.
6
+ *
7
+ * Follows the same pattern as LinearTicketProvider:
8
+ * Trello is the source of truth, PMO is best-effort mirror.
9
+ */
10
+ import type Database from 'better-sqlite3';
11
+ import type { TicketFilter, CreateTicketInput, UpdateTicketInput } from '../pmo/types.js';
12
+ import type { TicketProvider, ProviderMoveResult, ProviderDeleteResult, ProviderListResult, ProviderCreateResult, ProviderGetResult, ProviderUpdateResult, ProviderAssignResult, ProviderStorage } from './types.js';
13
+ export declare class TrelloTicketProvider implements TicketProvider {
14
+ private db;
15
+ private storage;
16
+ private projectId;
17
+ private ticketStatusCategory;
18
+ readonly name: "trello";
19
+ constructor(db: Database.Database, storage: ProviderStorage, projectId: string, ticketStatusCategory: string | null);
20
+ private getCredentialsOrFail;
21
+ moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
22
+ deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
23
+ listTickets(projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
24
+ createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
25
+ getTicket(ticketId: string): Promise<ProviderGetResult>;
26
+ updateTicket(ticketId: string, input: UpdateTicketInput): Promise<ProviderUpdateResult>;
27
+ assignTicket(ticketId: string, assignee: string): Promise<ProviderAssignResult>;
28
+ }