@proletariat/cli 0.3.93 → 0.3.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +1 -1
  9. package/dist/commands/agent/gc.d.ts +1 -1
  10. package/dist/commands/agent/index.d.ts +1 -1
  11. package/dist/commands/agent/list.d.ts +1 -1
  12. package/dist/commands/agent/login.d.ts +1 -1
  13. package/dist/commands/agent/rebuild.d.ts +1 -1
  14. package/dist/commands/agent/remove.d.ts +1 -1
  15. package/dist/commands/agent/restart.d.ts +1 -1
  16. package/dist/commands/agent/shell.d.ts +1 -1
  17. package/dist/commands/agent/staff/index.d.ts +1 -1
  18. package/dist/commands/agent/staff/remove.d.ts +1 -1
  19. package/dist/commands/agent/status.d.ts +1 -1
  20. package/dist/commands/agent/visit.d.ts +1 -1
  21. package/dist/commands/asana/import.d.ts +1 -1
  22. package/dist/commands/branch/create.d.ts +1 -1
  23. package/dist/commands/branch/index.d.ts +1 -1
  24. package/dist/commands/branch/list.d.ts +1 -1
  25. package/dist/commands/branch/validate.d.ts +1 -1
  26. package/dist/commands/branch/where.d.ts +1 -1
  27. package/dist/commands/config/index.js +2 -2
  28. package/dist/commands/config/index.js.map +1 -1
  29. package/dist/commands/diet.d.ts +1 -1
  30. package/dist/commands/docker/index.js +2 -0
  31. package/dist/commands/docker/index.js.map +1 -1
  32. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  33. package/dist/commands/docker/rebuild-cache.js +144 -0
  34. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  35. package/dist/commands/execution/config.d.ts +1 -1
  36. package/dist/commands/execution/index.d.ts +1 -1
  37. package/dist/commands/execution/list.d.ts +1 -1
  38. package/dist/commands/execution/logs.d.ts +1 -1
  39. package/dist/commands/execution/stop.d.ts +1 -1
  40. package/dist/commands/execution/view.d.ts +1 -1
  41. package/dist/commands/hook/export.d.ts +1 -1
  42. package/dist/commands/hook/fire.d.ts +1 -1
  43. package/dist/commands/hook/index.d.ts +1 -1
  44. package/dist/commands/hook/list.d.ts +1 -1
  45. package/dist/commands/hook/preset.d.ts +1 -1
  46. package/dist/commands/linear/auth.d.ts +1 -1
  47. package/dist/commands/linear/connect.d.ts +1 -1
  48. package/dist/commands/linear/import.d.ts +1 -1
  49. package/dist/commands/linear/status.d.ts +1 -1
  50. package/dist/commands/linear/sync.d.ts +1 -1
  51. package/dist/commands/mcp-server.d.ts +8 -2
  52. package/dist/commands/mcp-server.js +15 -28
  53. package/dist/commands/mcp-server.js.map +1 -1
  54. package/dist/commands/monday/connect.d.ts +1 -1
  55. package/dist/commands/monday/sync.d.ts +1 -1
  56. package/dist/commands/orchestrate/index.d.ts +1 -1
  57. package/dist/commands/orchestrator/index.d.ts +1 -1
  58. package/dist/commands/orchestrator/start.d.ts +3 -3
  59. package/dist/commands/orchestrator/start.js +38 -40
  60. package/dist/commands/orchestrator/start.js.map +1 -1
  61. package/dist/commands/pr/checks.d.ts +1 -1
  62. package/dist/commands/pr/close.d.ts +1 -1
  63. package/dist/commands/pr/create.d.ts +1 -1
  64. package/dist/commands/pr/index.d.ts +1 -1
  65. package/dist/commands/pr/link.d.ts +1 -1
  66. package/dist/commands/pr/list.d.ts +1 -1
  67. package/dist/commands/pr/merge.d.ts +1 -1
  68. package/dist/commands/pr/status.d.ts +1 -1
  69. package/dist/commands/pull.d.ts +1 -1
  70. package/dist/commands/repo/add.d.ts +1 -1
  71. package/dist/commands/repo/create.d.ts +1 -1
  72. package/dist/commands/repo/fix-remotes.d.ts +1 -1
  73. package/dist/commands/repo/index.d.ts +1 -1
  74. package/dist/commands/repo/list.d.ts +1 -1
  75. package/dist/commands/repo/remove.d.ts +1 -1
  76. package/dist/commands/repo/view.d.ts +1 -1
  77. package/dist/commands/session/attach.d.ts +1 -1
  78. package/dist/commands/session/cleanup.d.ts +1 -1
  79. package/dist/commands/session/create.d.ts +1 -1
  80. package/dist/commands/session/exec.d.ts +1 -1
  81. package/dist/commands/session/health.d.ts +1 -1
  82. package/dist/commands/session/index.d.ts +1 -1
  83. package/dist/commands/session/inspect.d.ts +1 -1
  84. package/dist/commands/session/list.d.ts +1 -1
  85. package/dist/commands/session/peek.d.ts +1 -1
  86. package/dist/commands/session/prune.d.ts +1 -1
  87. package/dist/commands/session/report.d.ts +1 -1
  88. package/dist/commands/session/restart.d.ts +1 -1
  89. package/dist/commands/shortcut/connect.d.ts +1 -1
  90. package/dist/commands/support/logs.d.ts +1 -1
  91. package/dist/commands/ticket/create.d.ts +1 -1
  92. package/dist/commands/ticket/delete.d.ts +1 -1
  93. package/dist/commands/ticket/edit.d.ts +1 -1
  94. package/dist/commands/ticket/index.d.ts +1 -1
  95. package/dist/commands/ticket/index.js +6 -36
  96. package/dist/commands/ticket/index.js.map +1 -1
  97. package/dist/commands/ticket/list.d.ts +1 -1
  98. package/dist/commands/ticket/move.d.ts +1 -1
  99. package/dist/commands/ticket/show.d.ts +8 -7
  100. package/dist/commands/ticket/show.js +101 -8
  101. package/dist/commands/ticket/show.js.map +1 -1
  102. package/dist/commands/ticket/update.d.ts +1 -1
  103. package/dist/commands/trello/configure.d.ts +1 -1
  104. package/dist/commands/trello/import.d.ts +1 -1
  105. package/dist/commands/trello/sync.d.ts +1 -1
  106. package/dist/commands/work/asana.d.ts +1 -1
  107. package/dist/commands/work/complete.d.ts +1 -1
  108. package/dist/commands/work/groom.d.ts +1 -1
  109. package/dist/commands/work/hooks/add.d.ts +1 -1
  110. package/dist/commands/work/hooks/index.d.ts +1 -1
  111. package/dist/commands/work/hooks/list.d.ts +1 -1
  112. package/dist/commands/work/hooks/remove.d.ts +1 -1
  113. package/dist/commands/work/hooks/toggle.d.ts +1 -1
  114. package/dist/commands/work/implement.d.ts +1 -1
  115. package/dist/commands/work/index.d.ts +1 -1
  116. package/dist/commands/work/jira.d.ts +1 -1
  117. package/dist/commands/work/linear.d.ts +1 -1
  118. package/dist/commands/work/peek.d.ts +1 -1
  119. package/dist/commands/work/ready.d.ts +1 -1
  120. package/dist/commands/work/rebase.d.ts +1 -1
  121. package/dist/commands/work/resolve.d.ts +1 -1
  122. package/dist/commands/work/review.d.ts +1 -1
  123. package/dist/commands/work/ship.d.ts +1 -1
  124. package/dist/commands/work/shortcut.d.ts +1 -1
  125. package/dist/commands/work/source/set.d.ts +1 -1
  126. package/dist/commands/work/source.d.ts +1 -1
  127. package/dist/commands/work/spawn.d.ts +1 -1
  128. package/dist/commands/work/start.d.ts +1 -1
  129. package/dist/commands/work/status.d.ts +1 -1
  130. package/dist/commands/work/stop.d.ts +1 -1
  131. package/dist/commands/work/watch.d.ts +1 -1
  132. package/dist/hooks/init.js +1 -1
  133. package/dist/hooks/init.js.map +1 -1
  134. package/dist/lib/asana/config.js +13 -7
  135. package/dist/lib/asana/config.js.map +1 -1
  136. package/dist/lib/clickup/client.d.ts +92 -0
  137. package/dist/lib/clickup/client.js +150 -0
  138. package/dist/lib/clickup/client.js.map +1 -0
  139. package/dist/lib/clickup/config.d.ts +41 -0
  140. package/dist/lib/clickup/config.js +104 -0
  141. package/dist/lib/clickup/config.js.map +1 -0
  142. package/dist/lib/clickup/index.d.ts +4 -0
  143. package/dist/lib/clickup/index.js +4 -0
  144. package/dist/lib/clickup/index.js.map +1 -0
  145. package/dist/lib/clickup/types.d.ts +104 -0
  146. package/dist/lib/clickup/types.js +34 -0
  147. package/dist/lib/clickup/types.js.map +1 -0
  148. package/dist/lib/database/credential-store.d.ts +64 -0
  149. package/dist/lib/database/credential-store.js +306 -0
  150. package/dist/lib/database/credential-store.js.map +1 -0
  151. package/dist/lib/database/index.d.ts +1 -0
  152. package/dist/lib/database/index.js +2 -0
  153. package/dist/lib/database/index.js.map +1 -1
  154. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  155. package/dist/lib/database/pmo-bootstrap.js +45 -20
  156. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  157. package/dist/lib/database/workspace.js +4 -0
  158. package/dist/lib/database/workspace.js.map +1 -1
  159. package/dist/lib/execution/devcontainer.js +51 -0
  160. package/dist/lib/execution/devcontainer.js.map +1 -1
  161. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  162. package/dist/lib/execution/runners/docker-management.js +99 -7
  163. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  164. package/dist/lib/execution/session-utils.d.ts +4 -0
  165. package/dist/lib/execution/session-utils.js +34 -24
  166. package/dist/lib/execution/session-utils.js.map +1 -1
  167. package/dist/lib/execution/types.js +1 -1
  168. package/dist/lib/external-issues/types.d.ts +3 -3
  169. package/dist/lib/external-issues/types.js +1 -1
  170. package/dist/lib/external-issues/types.js.map +1 -1
  171. package/dist/lib/jira/config.js +10 -4
  172. package/dist/lib/jira/config.js.map +1 -1
  173. package/dist/lib/linear/config.js +13 -8
  174. package/dist/lib/linear/config.js.map +1 -1
  175. package/dist/lib/mcp/generator.d.ts +26 -0
  176. package/dist/lib/mcp/generator.js +219 -0
  177. package/dist/lib/mcp/generator.js.map +1 -0
  178. package/dist/lib/mcp/index.d.ts +1 -0
  179. package/dist/lib/mcp/index.js +1 -0
  180. package/dist/lib/mcp/index.js.map +1 -1
  181. package/dist/lib/mcp/tools/index.d.ts +0 -11
  182. package/dist/lib/mcp/tools/index.js +0 -11
  183. package/dist/lib/mcp/tools/index.js.map +1 -1
  184. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  185. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  186. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  187. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  188. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  189. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  190. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  191. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  192. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  193. package/dist/lib/mcp/tools/ticket.js +10 -48
  194. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  195. package/dist/lib/monday/config.js +11 -5
  196. package/dist/lib/monday/config.js.map +1 -1
  197. package/dist/lib/pmo/base-command.d.ts +20 -152
  198. package/dist/lib/pmo/base-command.js +32 -198
  199. package/dist/lib/pmo/base-command.js.map +1 -1
  200. package/dist/lib/pmo/index.d.ts +1 -0
  201. package/dist/lib/pmo/index.js +3 -0
  202. package/dist/lib/pmo/index.js.map +1 -1
  203. package/dist/lib/pmo/storage/base.d.ts +0 -18
  204. package/dist/lib/pmo/storage/base.js +0 -231
  205. package/dist/lib/pmo/storage/base.js.map +1 -1
  206. package/dist/lib/pmo/storage/index.d.ts +1 -76
  207. package/dist/lib/pmo/storage/index.js +1 -215
  208. package/dist/lib/pmo/storage/index.js.map +1 -1
  209. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  210. package/dist/lib/pmo/storage/tickets.js +4 -34
  211. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  212. package/dist/lib/pmo/types.d.ts +0 -37
  213. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  214. package/dist/lib/providers/clickup-provider.js +353 -0
  215. package/dist/lib/providers/clickup-provider.js.map +1 -0
  216. package/dist/lib/providers/resolver.d.ts +1 -1
  217. package/dist/lib/providers/resolver.js +16 -5
  218. package/dist/lib/providers/resolver.js.map +1 -1
  219. package/dist/lib/providers/types.d.ts +1 -1
  220. package/dist/lib/runners/claude-code-runner.js +13 -4
  221. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  222. package/dist/lib/runtime-command.d.ts +219 -0
  223. package/dist/lib/runtime-command.js +320 -0
  224. package/dist/lib/runtime-command.js.map +1 -0
  225. package/dist/lib/shortcut/config.js +13 -7
  226. package/dist/lib/shortcut/config.js.map +1 -1
  227. package/dist/lib/trello/config.js +17 -12
  228. package/dist/lib/trello/config.js.map +1 -1
  229. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  230. package/dist/lib/work-source/config.d.ts +1 -1
  231. package/dist/lib/work-source/config.js +11 -1
  232. package/dist/lib/work-source/config.js.map +1 -1
  233. package/dist/lib/work-source/provider-sources.js +6 -1
  234. package/dist/lib/work-source/provider-sources.js.map +1 -1
  235. package/oclif.manifest.json +3015 -4827
  236. package/package.json +1 -1
  237. package/dist/commands/board/index.d.ts +0 -21
  238. package/dist/commands/board/index.js +0 -263
  239. package/dist/commands/board/index.js.map +0 -1
  240. package/dist/commands/board/view.d.ts +0 -15
  241. package/dist/commands/board/view.js +0 -137
  242. package/dist/commands/board/view.js.map +0 -1
  243. package/dist/commands/board/watch.d.ts +0 -15
  244. package/dist/commands/board/watch.js +0 -59
  245. package/dist/commands/board/watch.js.map +0 -1
  246. package/dist/commands/dashboard/index.d.ts +0 -14
  247. package/dist/commands/dashboard/index.js +0 -117
  248. package/dist/commands/dashboard/index.js.map +0 -1
  249. package/dist/commands/dashboard.d.ts +0 -38
  250. package/dist/commands/dashboard.js +0 -353
  251. package/dist/commands/dashboard.js.map +0 -1
  252. package/dist/commands/pmo/init.d.ts +0 -28
  253. package/dist/commands/pmo/init.js +0 -410
  254. package/dist/commands/pmo/init.js.map +0 -1
  255. package/dist/commands/project/archive.d.ts +0 -18
  256. package/dist/commands/project/archive.js +0 -79
  257. package/dist/commands/project/archive.js.map +0 -1
  258. package/dist/commands/project/create.d.ts +0 -24
  259. package/dist/commands/project/create.js +0 -191
  260. package/dist/commands/project/create.js.map +0 -1
  261. package/dist/commands/project/delete.d.ts +0 -18
  262. package/dist/commands/project/delete.js +0 -115
  263. package/dist/commands/project/delete.js.map +0 -1
  264. package/dist/commands/project/index.d.ts +0 -14
  265. package/dist/commands/project/index.js +0 -60
  266. package/dist/commands/project/index.js.map +0 -1
  267. package/dist/commands/project/list.d.ts +0 -16
  268. package/dist/commands/project/list.js +0 -115
  269. package/dist/commands/project/list.js.map +0 -1
  270. package/dist/commands/project/spec.d.ts +0 -19
  271. package/dist/commands/project/spec.js +0 -218
  272. package/dist/commands/project/spec.js.map +0 -1
  273. package/dist/commands/project/unarchive.d.ts +0 -17
  274. package/dist/commands/project/unarchive.js +0 -55
  275. package/dist/commands/project/unarchive.js.map +0 -1
  276. package/dist/commands/project/update.d.ts +0 -19
  277. package/dist/commands/project/update.js +0 -161
  278. package/dist/commands/project/update.js.map +0 -1
  279. package/dist/commands/project/view.d.ts +0 -17
  280. package/dist/commands/project/view.js +0 -107
  281. package/dist/commands/project/view.js.map +0 -1
  282. package/dist/commands/ticket/bulk.d.ts +0 -14
  283. package/dist/commands/ticket/bulk.js +0 -141
  284. package/dist/commands/ticket/bulk.js.map +0 -1
  285. package/dist/commands/ticket/cancel.d.ts +0 -17
  286. package/dist/commands/ticket/cancel.js +0 -206
  287. package/dist/commands/ticket/cancel.js.map +0 -1
  288. package/dist/commands/ticket/category.d.ts +0 -15
  289. package/dist/commands/ticket/category.js +0 -64
  290. package/dist/commands/ticket/category.js.map +0 -1
  291. package/dist/commands/ticket/complete.d.ts +0 -17
  292. package/dist/commands/ticket/complete.js +0 -193
  293. package/dist/commands/ticket/complete.js.map +0 -1
  294. package/dist/commands/ticket/epic.d.ts +0 -21
  295. package/dist/commands/ticket/epic.js +0 -306
  296. package/dist/commands/ticket/epic.js.map +0 -1
  297. package/dist/commands/ticket/link/block.d.ts +0 -15
  298. package/dist/commands/ticket/link/block.js +0 -96
  299. package/dist/commands/ticket/link/block.js.map +0 -1
  300. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  301. package/dist/commands/ticket/link/duplicates.js +0 -96
  302. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  303. package/dist/commands/ticket/link/index.d.ts +0 -14
  304. package/dist/commands/ticket/link/index.js +0 -99
  305. package/dist/commands/ticket/link/index.js.map +0 -1
  306. package/dist/commands/ticket/link/relates.d.ts +0 -15
  307. package/dist/commands/ticket/link/relates.js +0 -96
  308. package/dist/commands/ticket/link/relates.js.map +0 -1
  309. package/dist/commands/ticket/project.d.ts +0 -19
  310. package/dist/commands/ticket/project.js +0 -257
  311. package/dist/commands/ticket/project.js.map +0 -1
  312. package/dist/commands/ticket/reassign.d.ts +0 -20
  313. package/dist/commands/ticket/reassign.js +0 -340
  314. package/dist/commands/ticket/reassign.js.map +0 -1
  315. package/dist/commands/ticket/resolve.d.ts +0 -68
  316. package/dist/commands/ticket/resolve.js +0 -306
  317. package/dist/commands/ticket/resolve.js.map +0 -1
  318. package/dist/commands/ticket/spec.d.ts +0 -19
  319. package/dist/commands/ticket/spec.js +0 -260
  320. package/dist/commands/ticket/spec.js.map +0 -1
  321. package/dist/commands/ticket/status.d.ts +0 -14
  322. package/dist/commands/ticket/status.js +0 -84
  323. package/dist/commands/ticket/status.js.map +0 -1
  324. package/dist/commands/ticket/view.d.ts +0 -14
  325. package/dist/commands/ticket/view.js +0 -113
  326. package/dist/commands/ticket/view.js.map +0 -1
  327. package/dist/lib/mcp/tools/board.d.ts +0 -6
  328. package/dist/lib/mcp/tools/board.js +0 -190
  329. package/dist/lib/mcp/tools/board.js.map +0 -1
  330. package/dist/lib/mcp/tools/category.d.ts +0 -6
  331. package/dist/lib/mcp/tools/category.js +0 -85
  332. package/dist/lib/mcp/tools/category.js.map +0 -1
  333. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  334. package/dist/lib/mcp/tools/epic.js +0 -184
  335. package/dist/lib/mcp/tools/epic.js.map +0 -1
  336. package/dist/lib/mcp/tools/label.d.ts +0 -6
  337. package/dist/lib/mcp/tools/label.js +0 -339
  338. package/dist/lib/mcp/tools/label.js.map +0 -1
  339. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  340. package/dist/lib/mcp/tools/phase.js +0 -132
  341. package/dist/lib/mcp/tools/phase.js.map +0 -1
  342. package/dist/lib/mcp/tools/project.d.ts +0 -6
  343. package/dist/lib/mcp/tools/project.js +0 -197
  344. package/dist/lib/mcp/tools/project.js.map +0 -1
  345. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  346. package/dist/lib/mcp/tools/roadmap.js +0 -124
  347. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  348. package/dist/lib/mcp/tools/status.d.ts +0 -6
  349. package/dist/lib/mcp/tools/status.js +0 -110
  350. package/dist/lib/mcp/tools/status.js.map +0 -1
  351. package/dist/lib/mcp/tools/template.d.ts +0 -6
  352. package/dist/lib/mcp/tools/template.js +0 -108
  353. package/dist/lib/mcp/tools/template.js.map +0 -1
  354. package/dist/lib/mcp/tools/view.d.ts +0 -6
  355. package/dist/lib/mcp/tools/view.js +0 -77
  356. package/dist/lib/mcp/tools/view.js.map +0 -1
  357. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  358. package/dist/lib/mcp/tools/workflow.js +0 -96
  359. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  360. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  361. package/dist/lib/pmo/storage/categories.js +0 -206
  362. package/dist/lib/pmo/storage/categories.js.map +0 -1
  363. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  364. package/dist/lib/pmo/storage/labels.js +0 -347
  365. package/dist/lib/pmo/storage/labels.js.map +0 -1
  366. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  367. package/dist/lib/pmo/storage/phases.js +0 -393
  368. package/dist/lib/pmo/storage/phases.js.map +0 -1
  369. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  370. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  371. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  372. package/dist/lib/pmo/storage/views.d.ts +0 -57
  373. package/dist/lib/pmo/storage/views.js +0 -456
  374. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -1,193 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { autoExportToBoard, PMOCommand, pmoBaseFlags, } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class TicketComplete extends PMOCommand {
6
- static description = 'Mark ticket(s) as complete (move to Done column)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %>',
9
- '<%= config.bin %> <%= command.id %> TICK-001',
10
- '<%= config.bin %> <%= command.id %> --bulk',
11
- ];
12
- static args = {
13
- ticketId: Args.string({
14
- description: 'Ticket ID - prompts with dropdown if not provided',
15
- required: false,
16
- }),
17
- };
18
- static flags = {
19
- ...pmoBaseFlags,
20
- bulk: Flags.boolean({
21
- char: 'b',
22
- description: 'Enable bulk mode to complete multiple tickets',
23
- default: false,
24
- }),
25
- force: Flags.boolean({
26
- char: 'f',
27
- description: 'Skip confirmation prompt (bulk mode only)',
28
- default: false,
29
- }),
30
- };
31
- async execute() {
32
- const { args, flags } = await this.parse(TicketComplete);
33
- const projectId = flags.project;
34
- // Check if JSON output mode is active
35
- const jsonMode = shouldOutputJson(flags);
36
- // Helper to handle errors in JSON mode
37
- const handleError = (code, message) => {
38
- if (jsonMode) {
39
- outputErrorAsJson(code, message, createMetadata('ticket complete', flags));
40
- return;
41
- }
42
- this.error(message);
43
- };
44
- // Get all incomplete tickets
45
- const allTickets = await this.storage.listTickets(projectId);
46
- const incompleteTickets = allTickets.filter(t => t.statusName && !t.statusName.toLowerCase().includes('done'));
47
- if (incompleteTickets.length === 0) {
48
- if (jsonMode) {
49
- outputErrorAsJson('NO_INCOMPLETE_TICKETS', 'No incomplete tickets found. All tickets are done!', createMetadata('ticket complete', flags));
50
- return;
51
- }
52
- this.log(styles.info('No incomplete tickets found. All tickets are done!'));
53
- return;
54
- }
55
- // Get board for columns (use the first incomplete ticket's project)
56
- const board = await this.storage.getProjectBoard(incompleteTickets[0].projectId);
57
- if (!board) {
58
- return handleError('PROJECT_NOT_FOUND', `Project "${incompleteTickets[0].projectId}" not found. The ticket may belong to an orphaned project.`);
59
- }
60
- // Find the "Done" column (case-insensitive)
61
- const doneColumn = board.columns.find(col => col.name.toLowerCase().includes('done'));
62
- if (!doneColumn) {
63
- return handleError('NO_DONE_COLUMN', 'No "Done" column found in board configuration.');
64
- }
65
- // Bulk mode
66
- if (flags.bulk) {
67
- await this.executeBulk(incompleteTickets, doneColumn.name, flags);
68
- return;
69
- }
70
- // Single ticket mode
71
- let ticketId = args.ticketId;
72
- if (!ticketId) {
73
- const selected = await this.selectFromList({
74
- message: 'Select ticket to mark complete:',
75
- items: incompleteTickets,
76
- getName: (t) => `${t.id} - ${t.title} (${t.statusName})`,
77
- getValue: (t) => t.id,
78
- getCommand: (t) => `prlt ticket complete ${t.id}${projectId ? ` -P ${projectId}` : ''} --json`,
79
- jsonMode: jsonMode ? { flags, commandName: 'ticket complete' } : null,
80
- });
81
- if (!selected) {
82
- return;
83
- }
84
- ticketId = selected;
85
- }
86
- // Get ticket
87
- const ticket = await this.storage.getTicket(ticketId);
88
- if (!ticket) {
89
- this.error(`Ticket "${ticketId}" not found.`);
90
- }
91
- // Use resolved internal ID for all subsequent operations (external keys like PRLT-xxx resolve to TKT-xxx)
92
- ticketId = ticket.id;
93
- // Move to Done column through provider (routes to Linear/Jira/PMO as appropriate)
94
- const provider = await this.resolveTicketProvider(ticketId, ticket.projectId);
95
- const moveResult = await provider.moveTicket(ticketId, doneColumn.name);
96
- if (!moveResult.success) {
97
- this.error(`Failed to complete ticket: ${moveResult.error}`);
98
- }
99
- // Auto-export to board.md if configured
100
- await autoExportToBoard(this.pmoPath, this.storage);
101
- this.log(styles.success(`✅ Completed ${ticketId}`));
102
- this.log(styles.muted(` Title: ${ticket.title}`));
103
- this.log(styles.muted(` Moved to: ${doneColumn.name}`));
104
- if (moveResult.provider !== 'pmo') {
105
- this.log(styles.muted(` Provider: ${moveResult.provider}`));
106
- }
107
- }
108
- async executeBulk(incompleteTickets, doneColumnName, flags) {
109
- // Only show header in interactive mode
110
- if (!shouldOutputJson(flags)) {
111
- this.log(styles.emphasis('✅ Complete Multiple Tickets\n'));
112
- }
113
- // Agent mode config for prompts
114
- const jsonModeConfig = shouldOutputJson(flags) ? { flags, commandName: 'ticket complete --bulk' } : null;
115
- // Select tickets to complete (now agent-compatible!)
116
- const { selectedTickets } = await this.prompt([{
117
- type: 'checkbox',
118
- name: 'selectedTickets',
119
- message: 'Select tickets to mark as COMPLETE:',
120
- choices: incompleteTickets.map(t => ({
121
- name: `${t.id} - ${t.title} (${t.statusName})`,
122
- value: t.id,
123
- command: `prlt ticket complete ${t.id}${flags.project ? ` -P ${flags.project}` : ''} --json`, // For agent: complete single ticket
124
- })),
125
- }], jsonModeConfig);
126
- if (selectedTickets.length === 0) {
127
- this.log(styles.muted('No tickets selected.'));
128
- return;
129
- }
130
- // Confirmation
131
- if (!flags.force) {
132
- this.log(styles.primary('\nWill mark as complete:'));
133
- for (const ticketId of selectedTickets) {
134
- const ticket = incompleteTickets.find(t => t.id === ticketId);
135
- this.log(styles.primary(` • ${ticketId}: ${ticket?.title}`));
136
- }
137
- this.log(styles.primary(` → Move to: ${doneColumnName}\n`));
138
- const { confirm } = await this.prompt([{
139
- type: 'list',
140
- name: 'confirm',
141
- message: 'Continue?',
142
- choices: [
143
- { name: 'No, cancel', value: 'false', command: '' },
144
- { name: 'Yes, complete tickets', value: 'true', command: `prlt ticket complete ${selectedTickets.join(' ')}${flags.project ? ` -P ${flags.project}` : ''} --force --json` }
145
- ],
146
- }], jsonModeConfig);
147
- if (!confirm) {
148
- this.log(styles.muted('Operation cancelled.'));
149
- return;
150
- }
151
- }
152
- this.log('');
153
- // Complete each ticket
154
- let successCount = 0;
155
- let failCount = 0;
156
- // Process sequentially for clear success/failure logging
157
- for (const ticketId of selectedTickets) {
158
- try {
159
- const ticket = incompleteTickets.find(t => t.id === ticketId);
160
- if (!ticket) {
161
- throw new Error('Ticket not found in incomplete tickets list');
162
- }
163
- // eslint-disable-next-line no-await-in-loop
164
- const provider = await this.resolveTicketProvider(ticketId, ticket.projectId);
165
- // eslint-disable-next-line no-await-in-loop
166
- const result = await provider.moveTicket(ticketId, doneColumnName);
167
- if (result.success) {
168
- this.log(styles.success(`Completed ${ticketId}`));
169
- successCount++;
170
- }
171
- else {
172
- this.log(styles.error(`Failed to complete ${ticketId}: ${result.error}`));
173
- failCount++;
174
- }
175
- }
176
- catch (error) {
177
- this.log(styles.error(`Failed to complete ${ticketId}: ${error instanceof Error ? error.message : String(error)}`));
178
- failCount++;
179
- }
180
- }
181
- // Auto-export to kanban.md
182
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
183
- // Summary
184
- this.log('');
185
- if (successCount > 0) {
186
- this.log(styles.success(`Completed ${successCount} ticket(s)`));
187
- }
188
- if (failCount > 0) {
189
- this.log(styles.error(`Failed to complete ${failCount} ticket(s)`));
190
- }
191
- }
192
- }
193
- //# sourceMappingURL=complete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../src/commands/ticket/complete.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { PMOCommand } from '../../lib/pmo/index.js';
2
- export default class TicketEpic extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
- 'epic-id': import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
- };
9
- static flags: {
10
- unlink: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- bulk: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- 'to-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- 'from-epic': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
- };
19
- execute(): Promise<void>;
20
- private executeBulk;
21
- }
@@ -1,306 +0,0 @@
1
- import { Args, Flags } from '@oclif/core';
2
- import { PMOCommand, pmoBaseFlags, autoExportToBoard } from '../../lib/pmo/index.js';
3
- import { styles } from '../../lib/styles.js';
4
- import { shouldOutputJson, outputErrorAsJson, createMetadata, } from '../../lib/prompt-json.js';
5
- export default class TicketEpic extends PMOCommand {
6
- static description = 'Assign ticket(s) to an epic (parent-child relationship)';
7
- static examples = [
8
- '<%= config.bin %> <%= command.id %> TKT-001 EPIC-001',
9
- '<%= config.bin %> <%= command.id %> TKT-001 --unlink',
10
- '<%= config.bin %> <%= command.id %>',
11
- '<%= config.bin %> <%= command.id %> --bulk --to-epic EPIC-001',
12
- ];
13
- static args = {
14
- id: Args.string({
15
- description: 'Ticket ID',
16
- required: false,
17
- }),
18
- 'epic-id': Args.string({
19
- description: 'Epic ID to link to',
20
- required: false,
21
- }),
22
- };
23
- static flags = {
24
- ...pmoBaseFlags,
25
- unlink: Flags.boolean({
26
- char: 'u',
27
- description: 'Remove epic link instead of adding',
28
- default: false,
29
- }),
30
- bulk: Flags.boolean({
31
- char: 'b',
32
- description: 'Enable bulk mode to link multiple tickets to an epic',
33
- default: false,
34
- }),
35
- 'to-epic': Flags.string({
36
- description: 'Target epic ID (for bulk mode)',
37
- }),
38
- 'from-epic': Flags.string({
39
- description: 'Filter tickets by current epic (bulk mode)',
40
- }),
41
- force: Flags.boolean({
42
- char: 'f',
43
- description: 'Skip confirmation prompt (bulk mode)',
44
- default: false,
45
- }),
46
- };
47
- async execute() {
48
- const { args, flags } = await this.parse(TicketEpic);
49
- const filterProjectId = flags.project;
50
- // Check if JSON output mode is active
51
- const jsonMode = shouldOutputJson(flags);
52
- // Bulk mode
53
- if (flags.bulk) {
54
- await this.executeBulk(flags);
55
- return;
56
- }
57
- // Get all tickets
58
- const allTickets = await this.storage.listTickets(filterProjectId);
59
- if (allTickets.length === 0) {
60
- if (jsonMode) {
61
- outputErrorAsJson('NO_TICKETS', 'No tickets found.', createMetadata('ticket epic', flags));
62
- return;
63
- }
64
- this.log(styles.muted('\nNo tickets found.'));
65
- return;
66
- }
67
- // Get project for epics - use first ticket's project or prompt
68
- const projectId = await this.requireProject();
69
- // Get all epics
70
- const epics = await this.storage.listEpics(projectId);
71
- // Helper to get ticket's epic ID via storage layer
72
- const getTicketEpicId = (ticketId) => {
73
- const ticket = allTickets.find((t) => t.id === ticketId);
74
- return ticket?.epicId ?? null;
75
- };
76
- let ticketId = args.id;
77
- let epicId = args['epic-id'];
78
- // If unlinking, we don't need an epic ID
79
- if (flags.unlink) {
80
- epicId = undefined;
81
- }
82
- // If no ticket ID provided, prompt for selection
83
- if (!ticketId) {
84
- const ticketChoices = allTickets.map((t) => {
85
- const currentEpicId = getTicketEpicId(t.id);
86
- const epicLabel = currentEpicId
87
- ? epics.find(e => e.id === currentEpicId)?.title || currentEpicId
88
- : 'No epic';
89
- return {
90
- id: t.id,
91
- name: `${t.id} - ${t.title} (${t.statusName || t.status}) [${epicLabel}]`,
92
- };
93
- });
94
- const selected = await this.selectFromList({
95
- message: 'Select ticket to link:',
96
- items: ticketChoices,
97
- getName: (t) => t.name,
98
- getValue: (t) => t.id,
99
- getCommand: (t) => `prlt ticket epic ${t.id} -P ${projectId} --json`,
100
- jsonMode: jsonMode ? { flags, commandName: 'ticket epic' } : null,
101
- });
102
- if (!selected) {
103
- return;
104
- }
105
- ticketId = selected;
106
- }
107
- // Validate ticket exists
108
- const ticket = allTickets.find((t) => t.id === ticketId);
109
- if (!ticket) {
110
- this.error(`Ticket not found: ${ticketId}`);
111
- }
112
- const currentEpicId = getTicketEpicId(ticketId);
113
- // If unlinking, just remove the link
114
- if (flags.unlink) {
115
- if (!currentEpicId) {
116
- this.log(styles.muted(`\nTicket ${ticketId} is not linked to any epic.`));
117
- return;
118
- }
119
- const currentEpic = epics.find(e => e.id === currentEpicId);
120
- // Update the ticket
121
- await this.storage.unlinkTicketFromEpic(ticketId);
122
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
123
- this.log(styles.success(`\n✅ Unlinked ${styles.emphasis(ticketId)} from ${currentEpic?.title || currentEpicId}`));
124
- this.log(styles.muted(` Title: ${ticket.title}`));
125
- return;
126
- }
127
- // If no epic ID provided, prompt for selection
128
- if (!epicId) {
129
- const epicChoices = epics.map(e => ({
130
- id: e.id,
131
- name: `${e.id} ${e.title} (${e.status})${e.id === currentEpicId ? ' ← current' : ''}`,
132
- }));
133
- if (epicChoices.length === 0) {
134
- this.log(styles.muted('\nNo epics found. Create one with: prlt epic create'));
135
- return;
136
- }
137
- // Add "None" option if ticket has an epic
138
- if (currentEpicId) {
139
- epicChoices.push({ id: '__none__', name: 'None (remove epic link)' });
140
- }
141
- const selected = await this.selectFromList({
142
- message: 'Link to which epic?',
143
- items: epicChoices,
144
- getName: (e) => e.name,
145
- getValue: (e) => e.id,
146
- getCommand: (e) => e.id === '__none__' ? `prlt ticket epic ${ticketId} --unlink -P ${projectId} --json` : `prlt ticket epic ${ticketId} ${e.id} -P ${projectId} --json`,
147
- jsonMode: jsonMode ? { flags, commandName: 'ticket epic' } : null,
148
- });
149
- if (!selected) {
150
- return;
151
- }
152
- if (selected === '__none__') {
153
- // Unlink
154
- await this.storage.unlinkTicketFromEpic(ticketId);
155
- const currentEpic = epics.find(e => e.id === currentEpicId);
156
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
157
- this.log(styles.success(`\n✅ Unlinked ${styles.emphasis(ticketId)} from ${currentEpic?.title || currentEpicId}`));
158
- this.log(styles.muted(` Title: ${ticket.title}`));
159
- return;
160
- }
161
- epicId = selected;
162
- }
163
- // Validate epic exists
164
- const epic = epics.find(e => e.id === epicId);
165
- if (!epic) {
166
- this.error(`Epic not found: ${epicId}`);
167
- }
168
- // Check if already linked to this epic
169
- if (currentEpicId === epicId) {
170
- this.log(styles.muted(`\nTicket ${ticketId} is already linked to ${epic.title}.`));
171
- return;
172
- }
173
- // Update the ticket
174
- await this.storage.linkTicketToEpic(ticketId, epicId);
175
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
176
- this.log(styles.success(`\n✅ Linked ${styles.emphasis(ticketId)} to ${styles.emphasis(epicId)}`));
177
- this.log(styles.muted(` Title: ${ticket.title}`));
178
- this.log(styles.muted(` Epic: ${epic.title}`));
179
- }
180
- async executeBulk(flags) {
181
- const jsonMode = shouldOutputJson(flags);
182
- const jsonModeConfig = jsonMode ? { flags: flags, commandName: 'ticket epic' } : null;
183
- this.log(styles.emphasis('🔗 Link Tickets to Epic\n'));
184
- // Get project first
185
- const projectId = await this.requireProject();
186
- // Get all tickets
187
- const allTickets = await this.storage.listTickets(projectId);
188
- if (allTickets.length === 0) {
189
- this.log(styles.warning('No tickets found.'));
190
- return;
191
- }
192
- // Get epics via storage layer
193
- const epics = await this.storage.listEpics(projectId);
194
- // Filter tickets if --from-epic specified
195
- let filteredTickets = allTickets;
196
- if (flags['from-epic']) {
197
- filteredTickets = allTickets.filter(t => t.epicId === flags['from-epic']);
198
- }
199
- if (filteredTickets.length === 0) {
200
- this.log(styles.warning('No tickets found matching filter.'));
201
- return;
202
- }
203
- // Get current epic for each ticket (already available on Ticket objects)
204
- const ticketEpics = new Map();
205
- for (const ticket of filteredTickets) {
206
- ticketEpics.set(ticket.id, ticket.epicId ?? null);
207
- }
208
- // Select tickets to link
209
- const { selectedTickets } = await this.prompt([{
210
- type: 'checkbox',
211
- name: 'selectedTickets',
212
- message: 'Select tickets to link:',
213
- choices: filteredTickets.map(t => {
214
- const epicId = ticketEpics.get(t.id);
215
- const epicTitle = epicId ? epics.find(e => e.id === epicId)?.title || epicId : '(none)';
216
- return {
217
- name: `${t.id} - ${t.title} [Epic: ${epicTitle}]`,
218
- value: t.id,
219
- };
220
- }),
221
- }], jsonModeConfig);
222
- if (selectedTickets.length === 0) {
223
- this.log(styles.muted('No tickets selected.'));
224
- return;
225
- }
226
- // Select target epic
227
- let targetEpic = flags['to-epic'];
228
- if (targetEpic === undefined) {
229
- const { epic } = await this.prompt([{
230
- type: 'list',
231
- name: 'epic',
232
- message: 'Link to which epic?',
233
- choices: [
234
- { name: 'None (remove epic link)', value: null, command: 'prlt ticket epic --bulk --unlink --json' },
235
- ...epics.map(e => ({
236
- name: `${e.title} (${e.status})`,
237
- value: e.id,
238
- command: `prlt ticket epic --bulk --to-epic ${e.id} --json`,
239
- })),
240
- ],
241
- }], jsonModeConfig);
242
- targetEpic = epic;
243
- }
244
- // Confirmation
245
- if (!flags.force) {
246
- const epicLabel = targetEpic
247
- ? epics.find(e => e.id === targetEpic)?.title || targetEpic
248
- : 'None (removing link)';
249
- this.log(styles.primary('\nWill link to epic:'));
250
- this.log(styles.primary(` → ${epicLabel}\n`));
251
- this.log(styles.primary('Tickets:'));
252
- for (const ticketId of selectedTickets) {
253
- const ticket = filteredTickets.find(t => t.id === ticketId);
254
- this.log(styles.primary(` • ${ticketId}: ${ticket?.title}`));
255
- }
256
- this.log('');
257
- const { confirm } = await this.prompt([{
258
- type: 'list',
259
- name: 'confirm',
260
- message: 'Continue?',
261
- choices: [
262
- { name: 'No, cancel', value: false, command: '' },
263
- { name: 'Yes, link tickets', value: true, command: `prlt ticket epic --bulk --to-epic ${targetEpic || 'none'} --force --json` }
264
- ],
265
- default: 0
266
- }], jsonModeConfig);
267
- if (!confirm) {
268
- this.log(styles.muted('Operation cancelled.'));
269
- return;
270
- }
271
- }
272
- this.log('');
273
- // Link each ticket
274
- let successCount = 0;
275
- let failCount = 0;
276
- for (const ticketId of selectedTickets) {
277
- try {
278
- if (targetEpic) {
279
- await this.storage.linkTicketToEpic(ticketId, targetEpic);
280
- }
281
- else {
282
- await this.storage.unlinkTicketFromEpic(ticketId);
283
- }
284
- const action = targetEpic ? `Linked to ${targetEpic}` : 'Removed epic link';
285
- this.log(styles.success(`${ticketId}: ${action}`));
286
- successCount++;
287
- }
288
- catch (error) {
289
- this.log(styles.error(`Failed to link ${ticketId}: ${error instanceof Error ? error.message : String(error)}`));
290
- failCount++;
291
- }
292
- }
293
- // Auto-export to kanban.md
294
- await autoExportToBoard(this.pmoPath, this.storage, (msg) => this.log(styles.muted(msg)));
295
- // Summary
296
- this.log('');
297
- if (successCount > 0) {
298
- const action = targetEpic ? 'Linked' : 'Unlinked';
299
- this.log(styles.success(`${action} ${successCount} ticket(s)`));
300
- }
301
- if (failCount > 0) {
302
- this.log(styles.error(`Failed to link ${failCount} ticket(s)`));
303
- }
304
- }
305
- }
306
- //# sourceMappingURL=epic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"epic.js","sourceRoot":"","sources":["../../../src/commands/ticket/epic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAU;IAChD,MAAM,CAAC,WAAW,GAAG,yDAAyD,CAAC;IAE/E,MAAM,CAAC,QAAQ,GAAG;QAChB,sDAAsD;QACtD,sDAAsD;QACtD,qCAAqC;QACrC,+DAA+D;KAChE,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,YAAY;QACf,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oCAAoC;YACjD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sDAAsD;YACnE,OAAO,EAAE,KAAK;SACf,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,gCAAgC;SAC9C,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,4CAA4C;SAC1D,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,eAAe,GAAI,KAA8B,CAAC,OAAO,CAAC;QAEhE,sCAAsC;QACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,YAAY;QACZ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBACb,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3F,OAAO;YACT,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,+DAA+D;QAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,gBAAgB;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEtD,mDAAmD;QACnD,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAiB,EAAE;YAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACjE,OAAO,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,yCAAyC;QACzC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE;gBACjD,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5C,MAAM,SAAS,GAAG,aAAa;oBAC7B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,KAAK,IAAI,aAAa;oBACjE,CAAC,CAAC,SAAS,CAAC;gBACd,OAAO;oBACL,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,MAAM,SAAS,GAAG;iBAC1E,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;gBACzC,OAAO,EAAE,wBAAwB;gBACjC,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,OAAO,SAAS,SAAS;gBACpE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI;aAClE,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,yBAAyB;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,QAAS,CAAC,CAAC;QAEjD,qCAAqC;QACrC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,6BAA6B,CAAC,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;YAE5D,oBAAoB;YACpB,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAS,CAAC,CAAC;YAEnD,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE1F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,WAAW,EAAE,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;YAClH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;aACtF,CAAC,CAAC,CAAC;YAEJ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAED,0CAA0C;YAC1C,IAAI,aAAa,EAAE,CAAC;gBAClB,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;gBACzC,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,WAAW;gBAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;gBACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,oBAAoB,QAAQ,gBAAgB,SAAS,SAAS,CAAC,CAAC,CAAC,oBAAoB,QAAQ,IAAI,CAAC,CAAC,EAAE,OAAO,SAAS,SAAS;gBACvK,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI;aAClE,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,SAAS;gBACT,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAS,CAAC,CAAC;gBAEnD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;gBAC5D,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE1F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,WAAW,EAAE,KAAK,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;gBAClH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YAED,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,uCAAuC;QACvC,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,QAAQ,yBAAyB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAS,EAAE,MAAO,CAAC,CAAC;QAExD,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAMzB;QACC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAgC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAEvD,oBAAoB;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,kBAAkB;QAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEtD,0CAA0C;QAC1C,IAAI,eAAe,GAAG,UAAU,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;QACrD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,yBAAyB;QACzB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAgC,CAAC;gBAC5E,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,yBAAyB;gBAClC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACxF,OAAO;wBACL,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,YAAY,SAAS,GAAG;wBAClD,KAAK,EAAE,CAAC,CAAC,EAAE;qBACZ,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC,EAAE,cAAc,CAAC,CAAC;QAEpB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,qBAAqB;QACrB,IAAI,UAAU,GAA8B,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAA0B,CAAC;oBAC3D,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,qBAAqB;oBAC9B,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,yCAAyC,EAAE;wBACpG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACjB,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG;4BAChC,KAAK,EAAE,CAAC,CAAC,EAAE;4BACX,OAAO,EAAE,qCAAqC,CAAC,CAAC,EAAE,SAAS;yBAC5D,CAAC,CAAC;qBACJ;iBACF,CAAC,EAAE,cAAc,CAAC,CAAC;YACpB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,eAAe;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,UAAU;gBAC1B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,UAAU;gBAC3D,CAAC,CAAC,sBAAsB,CAAC;YAE3B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACrC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,QAAQ,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAuB,CAAC;oBAC3D,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;wBACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,qCAAqC,UAAU,IAAI,MAAM,iBAAiB,EAAE;qBAChI;oBACD,OAAO,EAAE,CAAC;iBACX,CAAC,EAAE,cAAc,CAAC,CAAC;YAEpB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEb,mBAAmB;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACpD,CAAC;gBAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAC5E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;gBACnD,YAAY,EAAE,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChH,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE1F,UAAU;QACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,YAAY,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC"}
@@ -1,15 +0,0 @@
1
- import { PMOCommand } from '../../../lib/pmo/index.js';
2
- export default class TicketLinkBlock extends PMOCommand {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- ticket: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
- blocker: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
- };
9
- static flags: {
10
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
- machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
- project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- };
14
- execute(): Promise<void>;
15
- }