@proletariat/cli 0.3.93 → 0.3.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +1 -1
  9. package/dist/commands/agent/gc.d.ts +1 -1
  10. package/dist/commands/agent/index.d.ts +1 -1
  11. package/dist/commands/agent/list.d.ts +1 -1
  12. package/dist/commands/agent/login.d.ts +1 -1
  13. package/dist/commands/agent/rebuild.d.ts +1 -1
  14. package/dist/commands/agent/remove.d.ts +1 -1
  15. package/dist/commands/agent/restart.d.ts +1 -1
  16. package/dist/commands/agent/shell.d.ts +1 -1
  17. package/dist/commands/agent/staff/index.d.ts +1 -1
  18. package/dist/commands/agent/staff/remove.d.ts +1 -1
  19. package/dist/commands/agent/status.d.ts +1 -1
  20. package/dist/commands/agent/visit.d.ts +1 -1
  21. package/dist/commands/asana/import.d.ts +1 -1
  22. package/dist/commands/branch/create.d.ts +1 -1
  23. package/dist/commands/branch/index.d.ts +1 -1
  24. package/dist/commands/branch/list.d.ts +1 -1
  25. package/dist/commands/branch/validate.d.ts +1 -1
  26. package/dist/commands/branch/where.d.ts +1 -1
  27. package/dist/commands/config/index.js +2 -2
  28. package/dist/commands/config/index.js.map +1 -1
  29. package/dist/commands/diet.d.ts +1 -1
  30. package/dist/commands/docker/index.js +2 -0
  31. package/dist/commands/docker/index.js.map +1 -1
  32. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  33. package/dist/commands/docker/rebuild-cache.js +144 -0
  34. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  35. package/dist/commands/execution/config.d.ts +1 -1
  36. package/dist/commands/execution/index.d.ts +1 -1
  37. package/dist/commands/execution/list.d.ts +1 -1
  38. package/dist/commands/execution/logs.d.ts +1 -1
  39. package/dist/commands/execution/stop.d.ts +1 -1
  40. package/dist/commands/execution/view.d.ts +1 -1
  41. package/dist/commands/hook/export.d.ts +1 -1
  42. package/dist/commands/hook/fire.d.ts +1 -1
  43. package/dist/commands/hook/index.d.ts +1 -1
  44. package/dist/commands/hook/list.d.ts +1 -1
  45. package/dist/commands/hook/preset.d.ts +1 -1
  46. package/dist/commands/linear/auth.d.ts +1 -1
  47. package/dist/commands/linear/connect.d.ts +1 -1
  48. package/dist/commands/linear/import.d.ts +1 -1
  49. package/dist/commands/linear/status.d.ts +1 -1
  50. package/dist/commands/linear/sync.d.ts +1 -1
  51. package/dist/commands/mcp-server.d.ts +8 -2
  52. package/dist/commands/mcp-server.js +15 -28
  53. package/dist/commands/mcp-server.js.map +1 -1
  54. package/dist/commands/monday/connect.d.ts +1 -1
  55. package/dist/commands/monday/sync.d.ts +1 -1
  56. package/dist/commands/orchestrate/index.d.ts +1 -1
  57. package/dist/commands/orchestrator/index.d.ts +1 -1
  58. package/dist/commands/orchestrator/start.d.ts +3 -3
  59. package/dist/commands/orchestrator/start.js +38 -40
  60. package/dist/commands/orchestrator/start.js.map +1 -1
  61. package/dist/commands/pr/checks.d.ts +1 -1
  62. package/dist/commands/pr/close.d.ts +1 -1
  63. package/dist/commands/pr/create.d.ts +1 -1
  64. package/dist/commands/pr/index.d.ts +1 -1
  65. package/dist/commands/pr/link.d.ts +1 -1
  66. package/dist/commands/pr/list.d.ts +1 -1
  67. package/dist/commands/pr/merge.d.ts +1 -1
  68. package/dist/commands/pr/status.d.ts +1 -1
  69. package/dist/commands/pull.d.ts +1 -1
  70. package/dist/commands/repo/add.d.ts +1 -1
  71. package/dist/commands/repo/create.d.ts +1 -1
  72. package/dist/commands/repo/fix-remotes.d.ts +1 -1
  73. package/dist/commands/repo/index.d.ts +1 -1
  74. package/dist/commands/repo/list.d.ts +1 -1
  75. package/dist/commands/repo/remove.d.ts +1 -1
  76. package/dist/commands/repo/view.d.ts +1 -1
  77. package/dist/commands/session/attach.d.ts +1 -1
  78. package/dist/commands/session/cleanup.d.ts +1 -1
  79. package/dist/commands/session/create.d.ts +1 -1
  80. package/dist/commands/session/exec.d.ts +1 -1
  81. package/dist/commands/session/health.d.ts +1 -1
  82. package/dist/commands/session/index.d.ts +1 -1
  83. package/dist/commands/session/inspect.d.ts +1 -1
  84. package/dist/commands/session/list.d.ts +1 -1
  85. package/dist/commands/session/peek.d.ts +1 -1
  86. package/dist/commands/session/prune.d.ts +1 -1
  87. package/dist/commands/session/report.d.ts +1 -1
  88. package/dist/commands/session/restart.d.ts +1 -1
  89. package/dist/commands/shortcut/connect.d.ts +1 -1
  90. package/dist/commands/support/logs.d.ts +1 -1
  91. package/dist/commands/ticket/create.d.ts +1 -1
  92. package/dist/commands/ticket/delete.d.ts +1 -1
  93. package/dist/commands/ticket/edit.d.ts +1 -1
  94. package/dist/commands/ticket/index.d.ts +1 -1
  95. package/dist/commands/ticket/index.js +6 -36
  96. package/dist/commands/ticket/index.js.map +1 -1
  97. package/dist/commands/ticket/list.d.ts +1 -1
  98. package/dist/commands/ticket/move.d.ts +1 -1
  99. package/dist/commands/ticket/show.d.ts +8 -7
  100. package/dist/commands/ticket/show.js +101 -8
  101. package/dist/commands/ticket/show.js.map +1 -1
  102. package/dist/commands/ticket/update.d.ts +1 -1
  103. package/dist/commands/trello/configure.d.ts +1 -1
  104. package/dist/commands/trello/import.d.ts +1 -1
  105. package/dist/commands/trello/sync.d.ts +1 -1
  106. package/dist/commands/work/asana.d.ts +1 -1
  107. package/dist/commands/work/complete.d.ts +1 -1
  108. package/dist/commands/work/groom.d.ts +1 -1
  109. package/dist/commands/work/hooks/add.d.ts +1 -1
  110. package/dist/commands/work/hooks/index.d.ts +1 -1
  111. package/dist/commands/work/hooks/list.d.ts +1 -1
  112. package/dist/commands/work/hooks/remove.d.ts +1 -1
  113. package/dist/commands/work/hooks/toggle.d.ts +1 -1
  114. package/dist/commands/work/implement.d.ts +1 -1
  115. package/dist/commands/work/index.d.ts +1 -1
  116. package/dist/commands/work/jira.d.ts +1 -1
  117. package/dist/commands/work/linear.d.ts +1 -1
  118. package/dist/commands/work/peek.d.ts +1 -1
  119. package/dist/commands/work/ready.d.ts +1 -1
  120. package/dist/commands/work/rebase.d.ts +1 -1
  121. package/dist/commands/work/resolve.d.ts +1 -1
  122. package/dist/commands/work/review.d.ts +1 -1
  123. package/dist/commands/work/ship.d.ts +1 -1
  124. package/dist/commands/work/shortcut.d.ts +1 -1
  125. package/dist/commands/work/source/set.d.ts +1 -1
  126. package/dist/commands/work/source.d.ts +1 -1
  127. package/dist/commands/work/spawn.d.ts +1 -1
  128. package/dist/commands/work/start.d.ts +1 -1
  129. package/dist/commands/work/status.d.ts +1 -1
  130. package/dist/commands/work/stop.d.ts +1 -1
  131. package/dist/commands/work/watch.d.ts +1 -1
  132. package/dist/hooks/init.js +1 -1
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/asana/config.js +13 -7
  135. package/dist/lib/asana/config.js.map +1 -1
  136. package/dist/lib/clickup/client.d.ts +92 -0
  137. package/dist/lib/clickup/client.js +150 -0
  138. package/dist/lib/clickup/client.js.map +1 -0
  139. package/dist/lib/clickup/config.d.ts +41 -0
  140. package/dist/lib/clickup/config.js +104 -0
  141. package/dist/lib/clickup/config.js.map +1 -0
  142. package/dist/lib/clickup/index.d.ts +4 -0
  143. package/dist/lib/clickup/index.js +4 -0
  144. package/dist/lib/clickup/index.js.map +1 -0
  145. package/dist/lib/clickup/types.d.ts +104 -0
  146. package/dist/lib/clickup/types.js +34 -0
  147. package/dist/lib/clickup/types.js.map +1 -0
  148. package/dist/lib/database/credential-store.d.ts +64 -0
  149. package/dist/lib/database/credential-store.js +306 -0
  150. package/dist/lib/database/credential-store.js.map +1 -0
  151. package/dist/lib/database/index.d.ts +1 -0
  152. package/dist/lib/database/index.js +2 -0
  153. package/dist/lib/database/index.js.map +1 -1
  154. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  155. package/dist/lib/database/pmo-bootstrap.js +45 -20
  156. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  157. package/dist/lib/database/workspace.js +4 -0
  158. package/dist/lib/database/workspace.js.map +1 -1
  159. package/dist/lib/execution/devcontainer.js +51 -0
  160. package/dist/lib/execution/devcontainer.js.map +1 -1
  161. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  162. package/dist/lib/execution/runners/docker-management.js +99 -7
  163. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  164. package/dist/lib/execution/session-utils.d.ts +4 -0
  165. package/dist/lib/execution/session-utils.js +34 -24
  166. package/dist/lib/execution/session-utils.js.map +1 -1
  167. package/dist/lib/execution/types.js +1 -1
  168. package/dist/lib/external-issues/types.d.ts +3 -3
  169. package/dist/lib/external-issues/types.js +1 -1
  170. package/dist/lib/external-issues/types.js.map +1 -1
  171. package/dist/lib/jira/config.js +10 -4
  172. package/dist/lib/jira/config.js.map +1 -1
  173. package/dist/lib/linear/config.js +13 -8
  174. package/dist/lib/linear/config.js.map +1 -1
  175. package/dist/lib/mcp/generator.d.ts +26 -0
  176. package/dist/lib/mcp/generator.js +219 -0
  177. package/dist/lib/mcp/generator.js.map +1 -0
  178. package/dist/lib/mcp/index.d.ts +1 -0
  179. package/dist/lib/mcp/index.js +1 -0
  180. package/dist/lib/mcp/index.js.map +1 -1
  181. package/dist/lib/mcp/tools/index.d.ts +0 -11
  182. package/dist/lib/mcp/tools/index.js +0 -11
  183. package/dist/lib/mcp/tools/index.js.map +1 -1
  184. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  185. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  186. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  187. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  188. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  189. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  190. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  191. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  192. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  193. package/dist/lib/mcp/tools/ticket.js +10 -48
  194. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  195. package/dist/lib/monday/config.js +11 -5
  196. package/dist/lib/monday/config.js.map +1 -1
  197. package/dist/lib/pmo/base-command.d.ts +20 -152
  198. package/dist/lib/pmo/base-command.js +32 -198
  199. package/dist/lib/pmo/base-command.js.map +1 -1
  200. package/dist/lib/pmo/index.d.ts +1 -0
  201. package/dist/lib/pmo/index.js +3 -0
  202. package/dist/lib/pmo/index.js.map +1 -1
  203. package/dist/lib/pmo/storage/base.d.ts +0 -18
  204. package/dist/lib/pmo/storage/base.js +0 -231
  205. package/dist/lib/pmo/storage/base.js.map +1 -1
  206. package/dist/lib/pmo/storage/index.d.ts +1 -76
  207. package/dist/lib/pmo/storage/index.js +1 -215
  208. package/dist/lib/pmo/storage/index.js.map +1 -1
  209. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  210. package/dist/lib/pmo/storage/tickets.js +4 -34
  211. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  212. package/dist/lib/pmo/types.d.ts +0 -37
  213. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  214. package/dist/lib/providers/clickup-provider.js +353 -0
  215. package/dist/lib/providers/clickup-provider.js.map +1 -0
  216. package/dist/lib/providers/resolver.d.ts +1 -1
  217. package/dist/lib/providers/resolver.js +16 -5
  218. package/dist/lib/providers/resolver.js.map +1 -1
  219. package/dist/lib/providers/types.d.ts +1 -1
  220. package/dist/lib/runners/claude-code-runner.js +13 -4
  221. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  222. package/dist/lib/runtime-command.d.ts +219 -0
  223. package/dist/lib/runtime-command.js +320 -0
  224. package/dist/lib/runtime-command.js.map +1 -0
  225. package/dist/lib/shortcut/config.js +13 -7
  226. package/dist/lib/shortcut/config.js.map +1 -1
  227. package/dist/lib/trello/config.js +17 -12
  228. package/dist/lib/trello/config.js.map +1 -1
  229. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  230. package/dist/lib/work-source/config.d.ts +1 -1
  231. package/dist/lib/work-source/config.js +11 -1
  232. package/dist/lib/work-source/config.js.map +1 -1
  233. package/dist/lib/work-source/provider-sources.js +6 -1
  234. package/dist/lib/work-source/provider-sources.js.map +1 -1
  235. package/oclif.manifest.json +3015 -4827
  236. package/package.json +1 -1
  237. package/dist/commands/board/index.d.ts +0 -21
  238. package/dist/commands/board/index.js +0 -263
  239. package/dist/commands/board/index.js.map +0 -1
  240. package/dist/commands/board/view.d.ts +0 -15
  241. package/dist/commands/board/view.js +0 -137
  242. package/dist/commands/board/view.js.map +0 -1
  243. package/dist/commands/board/watch.d.ts +0 -15
  244. package/dist/commands/board/watch.js +0 -59
  245. package/dist/commands/board/watch.js.map +0 -1
  246. package/dist/commands/dashboard/index.d.ts +0 -14
  247. package/dist/commands/dashboard/index.js +0 -117
  248. package/dist/commands/dashboard/index.js.map +0 -1
  249. package/dist/commands/dashboard.d.ts +0 -38
  250. package/dist/commands/dashboard.js +0 -353
  251. package/dist/commands/dashboard.js.map +0 -1
  252. package/dist/commands/pmo/init.d.ts +0 -28
  253. package/dist/commands/pmo/init.js +0 -410
  254. package/dist/commands/pmo/init.js.map +0 -1
  255. package/dist/commands/project/archive.d.ts +0 -18
  256. package/dist/commands/project/archive.js +0 -79
  257. package/dist/commands/project/archive.js.map +0 -1
  258. package/dist/commands/project/create.d.ts +0 -24
  259. package/dist/commands/project/create.js +0 -191
  260. package/dist/commands/project/create.js.map +0 -1
  261. package/dist/commands/project/delete.d.ts +0 -18
  262. package/dist/commands/project/delete.js +0 -115
  263. package/dist/commands/project/delete.js.map +0 -1
  264. package/dist/commands/project/index.d.ts +0 -14
  265. package/dist/commands/project/index.js +0 -60
  266. package/dist/commands/project/index.js.map +0 -1
  267. package/dist/commands/project/list.d.ts +0 -16
  268. package/dist/commands/project/list.js +0 -115
  269. package/dist/commands/project/list.js.map +0 -1
  270. package/dist/commands/project/spec.d.ts +0 -19
  271. package/dist/commands/project/spec.js +0 -218
  272. package/dist/commands/project/spec.js.map +0 -1
  273. package/dist/commands/project/unarchive.d.ts +0 -17
  274. package/dist/commands/project/unarchive.js +0 -55
  275. package/dist/commands/project/unarchive.js.map +0 -1
  276. package/dist/commands/project/update.d.ts +0 -19
  277. package/dist/commands/project/update.js +0 -161
  278. package/dist/commands/project/update.js.map +0 -1
  279. package/dist/commands/project/view.d.ts +0 -17
  280. package/dist/commands/project/view.js +0 -107
  281. package/dist/commands/project/view.js.map +0 -1
  282. package/dist/commands/ticket/bulk.d.ts +0 -14
  283. package/dist/commands/ticket/bulk.js +0 -141
  284. package/dist/commands/ticket/bulk.js.map +0 -1
  285. package/dist/commands/ticket/cancel.d.ts +0 -17
  286. package/dist/commands/ticket/cancel.js +0 -206
  287. package/dist/commands/ticket/cancel.js.map +0 -1
  288. package/dist/commands/ticket/category.d.ts +0 -15
  289. package/dist/commands/ticket/category.js +0 -64
  290. package/dist/commands/ticket/category.js.map +0 -1
  291. package/dist/commands/ticket/complete.d.ts +0 -17
  292. package/dist/commands/ticket/complete.js +0 -193
  293. package/dist/commands/ticket/complete.js.map +0 -1
  294. package/dist/commands/ticket/epic.d.ts +0 -21
  295. package/dist/commands/ticket/epic.js +0 -306
  296. package/dist/commands/ticket/epic.js.map +0 -1
  297. package/dist/commands/ticket/link/block.d.ts +0 -15
  298. package/dist/commands/ticket/link/block.js +0 -96
  299. package/dist/commands/ticket/link/block.js.map +0 -1
  300. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  301. package/dist/commands/ticket/link/duplicates.js +0 -96
  302. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  303. package/dist/commands/ticket/link/index.d.ts +0 -14
  304. package/dist/commands/ticket/link/index.js +0 -99
  305. package/dist/commands/ticket/link/index.js.map +0 -1
  306. package/dist/commands/ticket/link/relates.d.ts +0 -15
  307. package/dist/commands/ticket/link/relates.js +0 -96
  308. package/dist/commands/ticket/link/relates.js.map +0 -1
  309. package/dist/commands/ticket/project.d.ts +0 -19
  310. package/dist/commands/ticket/project.js +0 -257
  311. package/dist/commands/ticket/project.js.map +0 -1
  312. package/dist/commands/ticket/reassign.d.ts +0 -20
  313. package/dist/commands/ticket/reassign.js +0 -340
  314. package/dist/commands/ticket/reassign.js.map +0 -1
  315. package/dist/commands/ticket/resolve.d.ts +0 -68
  316. package/dist/commands/ticket/resolve.js +0 -306
  317. package/dist/commands/ticket/resolve.js.map +0 -1
  318. package/dist/commands/ticket/spec.d.ts +0 -19
  319. package/dist/commands/ticket/spec.js +0 -260
  320. package/dist/commands/ticket/spec.js.map +0 -1
  321. package/dist/commands/ticket/status.d.ts +0 -14
  322. package/dist/commands/ticket/status.js +0 -84
  323. package/dist/commands/ticket/status.js.map +0 -1
  324. package/dist/commands/ticket/view.d.ts +0 -14
  325. package/dist/commands/ticket/view.js +0 -113
  326. package/dist/commands/ticket/view.js.map +0 -1
  327. package/dist/lib/mcp/tools/board.d.ts +0 -6
  328. package/dist/lib/mcp/tools/board.js +0 -190
  329. package/dist/lib/mcp/tools/board.js.map +0 -1
  330. package/dist/lib/mcp/tools/category.d.ts +0 -6
  331. package/dist/lib/mcp/tools/category.js +0 -85
  332. package/dist/lib/mcp/tools/category.js.map +0 -1
  333. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  334. package/dist/lib/mcp/tools/epic.js +0 -184
  335. package/dist/lib/mcp/tools/epic.js.map +0 -1
  336. package/dist/lib/mcp/tools/label.d.ts +0 -6
  337. package/dist/lib/mcp/tools/label.js +0 -339
  338. package/dist/lib/mcp/tools/label.js.map +0 -1
  339. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  340. package/dist/lib/mcp/tools/phase.js +0 -132
  341. package/dist/lib/mcp/tools/phase.js.map +0 -1
  342. package/dist/lib/mcp/tools/project.d.ts +0 -6
  343. package/dist/lib/mcp/tools/project.js +0 -197
  344. package/dist/lib/mcp/tools/project.js.map +0 -1
  345. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  346. package/dist/lib/mcp/tools/roadmap.js +0 -124
  347. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  348. package/dist/lib/mcp/tools/status.d.ts +0 -6
  349. package/dist/lib/mcp/tools/status.js +0 -110
  350. package/dist/lib/mcp/tools/status.js.map +0 -1
  351. package/dist/lib/mcp/tools/template.d.ts +0 -6
  352. package/dist/lib/mcp/tools/template.js +0 -108
  353. package/dist/lib/mcp/tools/template.js.map +0 -1
  354. package/dist/lib/mcp/tools/view.d.ts +0 -6
  355. package/dist/lib/mcp/tools/view.js +0 -77
  356. package/dist/lib/mcp/tools/view.js.map +0 -1
  357. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  358. package/dist/lib/mcp/tools/workflow.js +0 -96
  359. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  360. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  361. package/dist/lib/pmo/storage/categories.js +0 -206
  362. package/dist/lib/pmo/storage/categories.js.map +0 -1
  363. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  364. package/dist/lib/pmo/storage/labels.js +0 -347
  365. package/dist/lib/pmo/storage/labels.js.map +0 -1
  366. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  367. package/dist/lib/pmo/storage/phases.js +0 -393
  368. package/dist/lib/pmo/storage/phases.js.map +0 -1
  369. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  370. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  371. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  372. package/dist/lib/pmo/storage/views.d.ts +0 -57
  373. package/dist/lib/pmo/storage/views.js +0 -456
  374. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -4,9 +4,9 @@ export default class WorkSourceSet extends PMOCommand {
4
4
  static strict: boolean;
5
5
  static examples: string[];
6
6
  static flags: {
7
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
8
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
9
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  execute(): Promise<void>;
12
12
  }
@@ -3,9 +3,9 @@ export default class WorkSource extends PMOCommand {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
7
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
8
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  execute(): Promise<void>;
11
11
  }
@@ -41,9 +41,9 @@ export default class WorkSpawn extends PMOCommand {
41
41
  'jira-jql': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
42
42
  'jira-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
43
43
  'shortcut-limit': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
44
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
44
45
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
45
46
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
46
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
47
47
  };
48
48
  private findLinkedJiraTicket;
49
49
  private findOrCreateJiraTicket;
@@ -43,9 +43,9 @@ export default class WorkStart extends PMOCommand {
43
43
  'allow-network': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
44
44
  repo: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
45
45
  'max-parallel': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
46
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
46
47
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
47
48
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
48
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
49
49
  };
50
50
  private findLinkedTicketByEnvelope;
51
51
  private createOrUpdateLinkedTicket;
@@ -3,9 +3,9 @@ export default class WorkStatus extends PMOCommand {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
7
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
8
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  protected getPMOOptions(): {
11
11
  promptIfMultiple: boolean;
@@ -7,8 +7,8 @@ export default class WorkStop extends PMOCommand {
7
7
  };
8
8
  static flags: {
9
9
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
10
  project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  };
13
13
  execute(): Promise<void>;
14
14
  }
@@ -12,9 +12,9 @@ export default class WorkWatch extends PMOCommand {
12
12
  mode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  'skip-permissions': import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
14
  'create-pr': import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
16
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
17
  machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
18
  };
19
19
  private isRunning;
20
20
  private knownTickets;
@@ -23,7 +23,7 @@ const hook = async function ({ id, argv, config }) {
23
23
  // Initialize Sentry as early as possible for crash reporting
24
24
  await initSentry(config.version);
25
25
  // Commands that work without an HQ still run native module checks.
26
- const hqOptionalCommands = ['init', 'new', 'commit', 'claude', 'pmo:init', 'telemetry'];
26
+ const hqOptionalCommands = ['init', 'new', 'commit', 'claude', 'telemetry'];
27
27
  const isHqOptionalCommand = !!id && hqOptionalCommands.some(cmd => id === cmd || id.startsWith(cmd + ':'));
28
28
  // Skip when running under oclif tooling (manifest, readme generation)
29
29
  // These run commands to scan metadata and should not trigger the init flow
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { loadProviderSources, resolveApiKey } from '../work-source/provider-sources.js';
2
2
  import { SettingsStore } from '../database/settings-store.js';
3
+ import { getCredential, setCredential, deleteCredential, hasCredential } from '../database/credential-store.js';
3
4
  const ASANA_CONFIG_KEYS = {
4
5
  accessToken: 'asana.access_token',
5
6
  workspaceGid: 'asana.workspace_gid',
@@ -8,13 +9,13 @@ const ASANA_CONFIG_KEYS = {
8
9
  projectName: 'asana.project_name',
9
10
  };
10
11
  export function isAsanaConfigured(db) {
11
- return new SettingsStore(db).has(ASANA_CONFIG_KEYS.accessToken);
12
+ return hasCredential(db, ASANA_CONFIG_KEYS.accessToken);
12
13
  }
13
14
  export function loadAsanaConfig(db) {
14
- const settings = new SettingsStore(db);
15
- const accessToken = settings.get(ASANA_CONFIG_KEYS.accessToken);
15
+ const accessToken = getCredential(db, ASANA_CONFIG_KEYS.accessToken);
16
16
  if (!accessToken)
17
17
  return null;
18
+ const settings = new SettingsStore(db);
18
19
  return {
19
20
  accessToken,
20
21
  workspaceGid: settings.get(ASANA_CONFIG_KEYS.workspaceGid) ?? undefined,
@@ -24,7 +25,7 @@ export function loadAsanaConfig(db) {
24
25
  };
25
26
  }
26
27
  export function saveAsanaAccessToken(db, accessToken) {
27
- new SettingsStore(db).set(ASANA_CONFIG_KEYS.accessToken, accessToken);
28
+ setCredential(db, ASANA_CONFIG_KEYS.accessToken, accessToken);
28
29
  }
29
30
  export function saveAsanaWorkspace(db, workspaceGid, workspaceName) {
30
31
  const settings = new SettingsStore(db);
@@ -39,7 +40,12 @@ export function saveAsanaProject(db, projectGid, projectName) {
39
40
  export function clearAsanaConfig(db) {
40
41
  const settings = new SettingsStore(db);
41
42
  for (const key of Object.values(ASANA_CONFIG_KEYS)) {
42
- settings.delete(key);
43
+ if (key === ASANA_CONFIG_KEYS.accessToken) {
44
+ deleteCredential(db, key);
45
+ }
46
+ else {
47
+ settings.delete(key);
48
+ }
43
49
  }
44
50
  }
45
51
  export function getAsanaAccessToken(db) {
@@ -61,7 +67,7 @@ export function getAsanaAccessToken(db) {
61
67
  const envToken = process.env.PRLT_ASANA_ACCESS_TOKEN || process.env.ASANA_ACCESS_TOKEN;
62
68
  if (envToken)
63
69
  return envToken;
64
- // 3. Legacy: stored workspace setting
65
- return new SettingsStore(db).get(ASANA_CONFIG_KEYS.accessToken);
70
+ // 3. Legacy: stored workspace setting (now in credentials.db)
71
+ return getCredential(db, ASANA_CONFIG_KEYS.accessToken);
66
72
  }
67
73
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/asana/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/asana/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * ClickUp API Client
3
+ *
4
+ * REST wrapper for ClickUp API v2 access.
5
+ * Provides typed access to tasks, lists, spaces, and statuses for the PMO integration.
6
+ */
7
+ import type { ClickUpTask, ClickUpSpace, ClickUpList, ClickUpStatus } from './types.js';
8
+ export declare class ClickUpClient {
9
+ private apiKey;
10
+ constructor(apiKey: string);
11
+ private request;
12
+ /**
13
+ * Verify the API key is valid and return the authenticated user info.
14
+ */
15
+ verify(): Promise<{
16
+ userName: string;
17
+ email: string;
18
+ }>;
19
+ /**
20
+ * List teams (workspaces) accessible to the authenticated user.
21
+ */
22
+ listTeams(): Promise<Array<{
23
+ id: string;
24
+ name: string;
25
+ }>>;
26
+ /**
27
+ * Get a task by ID.
28
+ */
29
+ getTask(taskId: string): Promise<ClickUpTask>;
30
+ /**
31
+ * Update a task's status.
32
+ */
33
+ updateTaskStatus(taskId: string, status: string): Promise<void>;
34
+ /**
35
+ * Update a task's fields (name, description, priority, assignees).
36
+ */
37
+ updateTask(taskId: string, input: {
38
+ name?: string;
39
+ description?: string;
40
+ priority?: number | null;
41
+ status?: string;
42
+ }): Promise<ClickUpTask>;
43
+ /**
44
+ * Add a comment to a task.
45
+ */
46
+ addComment(taskId: string, commentText: string): Promise<void>;
47
+ /**
48
+ * Create a new task in a list.
49
+ */
50
+ createTask(listId: string, input: {
51
+ name: string;
52
+ description?: string;
53
+ priority?: number | null;
54
+ status?: string;
55
+ tags?: string[];
56
+ }): Promise<ClickUpTask>;
57
+ /**
58
+ * List tasks in a list with optional filters.
59
+ */
60
+ listTasks(listId: string, options?: {
61
+ statuses?: string[];
62
+ assignees?: string[];
63
+ page?: number;
64
+ }): Promise<ClickUpTask[]>;
65
+ /**
66
+ * Get statuses for a list.
67
+ */
68
+ getListStatuses(listId: string): Promise<ClickUpStatus[]>;
69
+ /**
70
+ * Get a list by ID.
71
+ */
72
+ getList(listId: string): Promise<ClickUpList>;
73
+ /**
74
+ * Get spaces for a team/workspace.
75
+ */
76
+ listSpaces(teamId: string): Promise<ClickUpSpace[]>;
77
+ /**
78
+ * Delete (trash) a task.
79
+ */
80
+ deleteTask(taskId: string): Promise<void>;
81
+ /**
82
+ * Assign a user to a task by adding them to the assignees list.
83
+ */
84
+ addAssignee(taskId: string, assigneeId: number): Promise<void>;
85
+ /**
86
+ * Find a workspace member by email.
87
+ */
88
+ findMemberByEmail(teamId: string, email: string): Promise<{
89
+ id: number;
90
+ username: string;
91
+ } | null>;
92
+ }
@@ -0,0 +1,150 @@
1
+ /**
2
+ * ClickUp API Client
3
+ *
4
+ * REST wrapper for ClickUp API v2 access.
5
+ * Provides typed access to tasks, lists, spaces, and statuses for the PMO integration.
6
+ */
7
+ const CLICKUP_API_URL = 'https://api.clickup.com/api/v2';
8
+ export class ClickUpClient {
9
+ apiKey;
10
+ constructor(apiKey) {
11
+ this.apiKey = apiKey;
12
+ }
13
+ async request(method, path, body) {
14
+ const url = `${CLICKUP_API_URL}${path}`;
15
+ const options = {
16
+ method,
17
+ headers: {
18
+ 'Content-Type': 'application/json',
19
+ Authorization: this.apiKey,
20
+ },
21
+ };
22
+ if (body !== undefined) {
23
+ options.body = JSON.stringify(body);
24
+ }
25
+ const response = await fetch(url, options);
26
+ if (!response.ok) {
27
+ const text = await response.text().catch(() => '');
28
+ throw new Error(`ClickUp API ${method} ${path} failed with status ${response.status}: ${text}`);
29
+ }
30
+ return (await response.json());
31
+ }
32
+ /**
33
+ * Verify the API key is valid and return the authenticated user info.
34
+ */
35
+ async verify() {
36
+ const data = await this.request('GET', '/user');
37
+ return {
38
+ userName: data.user.username,
39
+ email: data.user.email,
40
+ };
41
+ }
42
+ /**
43
+ * List teams (workspaces) accessible to the authenticated user.
44
+ */
45
+ async listTeams() {
46
+ const data = await this.request('GET', '/team');
47
+ return data.teams;
48
+ }
49
+ /**
50
+ * Get a task by ID.
51
+ */
52
+ async getTask(taskId) {
53
+ return this.request('GET', `/task/${taskId}?include_subtasks=true`);
54
+ }
55
+ /**
56
+ * Update a task's status.
57
+ */
58
+ async updateTaskStatus(taskId, status) {
59
+ await this.request('PUT', `/task/${taskId}`, { status });
60
+ }
61
+ /**
62
+ * Update a task's fields (name, description, priority, assignees).
63
+ */
64
+ async updateTask(taskId, input) {
65
+ return this.request('PUT', `/task/${taskId}`, input);
66
+ }
67
+ /**
68
+ * Add a comment to a task.
69
+ */
70
+ async addComment(taskId, commentText) {
71
+ await this.request('POST', `/task/${taskId}/comment`, {
72
+ comment_text: commentText,
73
+ });
74
+ }
75
+ /**
76
+ * Create a new task in a list.
77
+ */
78
+ async createTask(listId, input) {
79
+ return this.request('POST', `/list/${listId}/task`, input);
80
+ }
81
+ /**
82
+ * List tasks in a list with optional filters.
83
+ */
84
+ async listTasks(listId, options) {
85
+ const params = new URLSearchParams();
86
+ if (options?.statuses) {
87
+ for (const s of options.statuses) {
88
+ params.append('statuses[]', s);
89
+ }
90
+ }
91
+ if (options?.assignees) {
92
+ for (const a of options.assignees) {
93
+ params.append('assignees[]', a);
94
+ }
95
+ }
96
+ if (options?.page !== undefined) {
97
+ params.set('page', String(options.page));
98
+ }
99
+ const qs = params.toString();
100
+ const path = `/list/${listId}/task${qs ? `?${qs}` : ''}`;
101
+ const data = await this.request('GET', path);
102
+ return data.tasks;
103
+ }
104
+ /**
105
+ * Get statuses for a list.
106
+ */
107
+ async getListStatuses(listId) {
108
+ const data = await this.request('GET', `/list/${listId}`);
109
+ return data.statuses;
110
+ }
111
+ /**
112
+ * Get a list by ID.
113
+ */
114
+ async getList(listId) {
115
+ return this.request('GET', `/list/${listId}`);
116
+ }
117
+ /**
118
+ * Get spaces for a team/workspace.
119
+ */
120
+ async listSpaces(teamId) {
121
+ const data = await this.request('GET', `/team/${teamId}/space?archived=false`);
122
+ return data.spaces;
123
+ }
124
+ /**
125
+ * Delete (trash) a task.
126
+ */
127
+ async deleteTask(taskId) {
128
+ await this.request('DELETE', `/task/${taskId}`);
129
+ }
130
+ /**
131
+ * Assign a user to a task by adding them to the assignees list.
132
+ */
133
+ async addAssignee(taskId, assigneeId) {
134
+ // ClickUp uses a separate endpoint for managing assignees
135
+ await this.request('POST', `/task/${taskId}`, {
136
+ assignees: { add: [assigneeId] },
137
+ });
138
+ }
139
+ /**
140
+ * Find a workspace member by email.
141
+ */
142
+ async findMemberByEmail(teamId, email) {
143
+ // ClickUp doesn't have a direct user-by-email endpoint.
144
+ // We list team members and filter.
145
+ const data = await this.request('GET', `/team/${teamId}`);
146
+ const member = data.members?.find((m) => m.user.email.toLowerCase() === email.toLowerCase());
147
+ return member ? { id: member.user.id, username: member.user.username } : null;
148
+ }
149
+ }
150
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/clickup/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ClickUp Configuration Storage
3
+ *
4
+ * Stores ClickUp credentials and preferences in the workspace_settings table.
5
+ */
6
+ import type Database from 'better-sqlite3';
7
+ import type { ClickUpConfig } from './types.js';
8
+ /**
9
+ * Check if ClickUp is configured (API key is stored).
10
+ */
11
+ export declare function isClickUpConfigured(db: Database.Database): boolean;
12
+ /**
13
+ * Load ClickUp configuration from the database.
14
+ * Returns null if not configured.
15
+ */
16
+ export declare function loadClickUpConfig(db: Database.Database): ClickUpConfig | null;
17
+ /**
18
+ * Save ClickUp API key to the database.
19
+ */
20
+ export declare function saveClickUpApiKey(db: Database.Database, apiKey: string): void;
21
+ /**
22
+ * Save the default list for ClickUp operations.
23
+ */
24
+ export declare function saveClickUpDefaultList(db: Database.Database, listId: string, listName: string): void;
25
+ /**
26
+ * Save the workspace name.
27
+ */
28
+ export declare function saveClickUpWorkspace(db: Database.Database, name: string): void;
29
+ /**
30
+ * Clear all ClickUp configuration from the database.
31
+ */
32
+ export declare function clearClickUpConfig(db: Database.Database): void;
33
+ /**
34
+ * Get the ClickUp API key using the provider-sources resolution chain.
35
+ *
36
+ * Resolution order:
37
+ * 1. If a ClickUp provider source is configured, resolve its apiKeyRef
38
+ * 2. Legacy fallback: PRLT_CLICKUP_API_KEY or CLICKUP_API_KEY environment variables
39
+ * 3. Legacy fallback: workspace_settings key 'clickup.api_key'
40
+ */
41
+ export declare function getClickUpApiKey(db: Database.Database): string | null;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ClickUp Configuration Storage
3
+ *
4
+ * Stores ClickUp credentials and preferences in the workspace_settings table.
5
+ */
6
+ import { loadProviderSources, resolveApiKey } from '../work-source/provider-sources.js';
7
+ import { SettingsStore } from '../database/settings-store.js';
8
+ import { getCredential, setCredential, deleteCredential, hasCredential } from '../database/credential-store.js';
9
+ const CLICKUP_CONFIG_KEYS = {
10
+ apiKey: 'clickup.api_key',
11
+ defaultListId: 'clickup.default_list_id',
12
+ defaultListName: 'clickup.default_list_name',
13
+ workspaceName: 'clickup.workspace_name',
14
+ };
15
+ // =============================================================================
16
+ // Public API
17
+ // =============================================================================
18
+ /**
19
+ * Check if ClickUp is configured (API key is stored).
20
+ */
21
+ export function isClickUpConfigured(db) {
22
+ return hasCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
23
+ }
24
+ /**
25
+ * Load ClickUp configuration from the database.
26
+ * Returns null if not configured.
27
+ */
28
+ export function loadClickUpConfig(db) {
29
+ const apiKey = getCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
30
+ if (!apiKey)
31
+ return null;
32
+ const settings = new SettingsStore(db);
33
+ return {
34
+ apiKey,
35
+ defaultListId: settings.get(CLICKUP_CONFIG_KEYS.defaultListId) ?? undefined,
36
+ defaultListName: settings.get(CLICKUP_CONFIG_KEYS.defaultListName) ?? undefined,
37
+ workspaceName: settings.get(CLICKUP_CONFIG_KEYS.workspaceName) ?? undefined,
38
+ };
39
+ }
40
+ /**
41
+ * Save ClickUp API key to the database.
42
+ */
43
+ export function saveClickUpApiKey(db, apiKey) {
44
+ setCredential(db, CLICKUP_CONFIG_KEYS.apiKey, apiKey);
45
+ }
46
+ /**
47
+ * Save the default list for ClickUp operations.
48
+ */
49
+ export function saveClickUpDefaultList(db, listId, listName) {
50
+ const settings = new SettingsStore(db);
51
+ settings.set(CLICKUP_CONFIG_KEYS.defaultListId, listId);
52
+ settings.set(CLICKUP_CONFIG_KEYS.defaultListName, listName);
53
+ }
54
+ /**
55
+ * Save the workspace name.
56
+ */
57
+ export function saveClickUpWorkspace(db, name) {
58
+ new SettingsStore(db).set(CLICKUP_CONFIG_KEYS.workspaceName, name);
59
+ }
60
+ /**
61
+ * Clear all ClickUp configuration from the database.
62
+ */
63
+ export function clearClickUpConfig(db) {
64
+ const settings = new SettingsStore(db);
65
+ for (const key of Object.values(CLICKUP_CONFIG_KEYS)) {
66
+ if (key === CLICKUP_CONFIG_KEYS.apiKey) {
67
+ deleteCredential(db, key);
68
+ }
69
+ else {
70
+ settings.delete(key);
71
+ }
72
+ }
73
+ }
74
+ /**
75
+ * Get the ClickUp API key using the provider-sources resolution chain.
76
+ *
77
+ * Resolution order:
78
+ * 1. If a ClickUp provider source is configured, resolve its apiKeyRef
79
+ * 2. Legacy fallback: PRLT_CLICKUP_API_KEY or CLICKUP_API_KEY environment variables
80
+ * 3. Legacy fallback: workspace_settings key 'clickup.api_key'
81
+ */
82
+ export function getClickUpApiKey(db) {
83
+ // 1. Try provider sources (supports custom apiKeyRef per source)
84
+ try {
85
+ const sources = loadProviderSources(db);
86
+ for (const source of sources) {
87
+ if (source.provider === 'clickup') {
88
+ const key = resolveApiKey(db, source);
89
+ if (key)
90
+ return key;
91
+ }
92
+ }
93
+ }
94
+ catch {
95
+ // Provider sources table may not exist in older databases
96
+ }
97
+ // 2. Legacy: environment variables
98
+ const envKey = process.env.PRLT_CLICKUP_API_KEY || process.env.CLICKUP_API_KEY;
99
+ if (envKey)
100
+ return envKey;
101
+ // 3. Legacy: stored workspace setting (now in credentials.db)
102
+ return getCredential(db, CLICKUP_CONFIG_KEYS.apiKey);
103
+ }
104
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/clickup/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ClickUpClient } from './client.js';
2
+ export { isClickUpConfigured, loadClickUpConfig, saveClickUpApiKey, saveClickUpDefaultList, saveClickUpWorkspace, clearClickUpConfig, getClickUpApiKey, } from './config.js';
3
+ export type { ClickUpConfig, ClickUpTask, ClickUpStatus, ClickUpSpace, ClickUpList, } from './types.js';
4
+ export { CLICKUP_PRIORITY_TO_PMO, PMO_PRIORITY_TO_CLICKUP, CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY, } from './types.js';
@@ -0,0 +1,4 @@
1
+ export { ClickUpClient } from './client.js';
2
+ export { isClickUpConfigured, loadClickUpConfig, saveClickUpApiKey, saveClickUpDefaultList, saveClickUpWorkspace, clearClickUpConfig, getClickUpApiKey, } from './config.js';
3
+ export { CLICKUP_PRIORITY_TO_PMO, PMO_PRIORITY_TO_CLICKUP, CLICKUP_STATUS_TYPE_TO_PMO_CATEGORY, } from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/clickup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAQpB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,YAAY,CAAA"}