@chief-clancy/core 0.1.0

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 (635) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/dist/board/azdo/api/api.d.ts +95 -0
  4. package/dist/board/azdo/api/api.d.ts.map +1 -0
  5. package/dist/board/azdo/api/api.js +173 -0
  6. package/dist/board/azdo/api/api.js.map +1 -0
  7. package/dist/board/azdo/api/helpers.d.ts +89 -0
  8. package/dist/board/azdo/api/helpers.d.ts.map +1 -0
  9. package/dist/board/azdo/api/helpers.js +133 -0
  10. package/dist/board/azdo/api/helpers.js.map +1 -0
  11. package/dist/board/azdo/api/index.d.ts +5 -0
  12. package/dist/board/azdo/api/index.d.ts.map +1 -0
  13. package/dist/board/azdo/api/index.js +3 -0
  14. package/dist/board/azdo/api/index.js.map +1 -0
  15. package/dist/board/azdo/azdo-board.d.ts +12 -0
  16. package/dist/board/azdo/azdo-board.d.ts.map +1 -0
  17. package/dist/board/azdo/azdo-board.js +104 -0
  18. package/dist/board/azdo/azdo-board.js.map +1 -0
  19. package/dist/board/azdo/index.d.ts +3 -0
  20. package/dist/board/azdo/index.d.ts.map +1 -0
  21. package/dist/board/azdo/index.js +3 -0
  22. package/dist/board/azdo/index.js.map +1 -0
  23. package/dist/board/azdo/labels/index.d.ts +2 -0
  24. package/dist/board/azdo/labels/index.d.ts.map +1 -0
  25. package/dist/board/azdo/labels/index.js +2 -0
  26. package/dist/board/azdo/labels/index.js.map +1 -0
  27. package/dist/board/azdo/labels/labels.d.ts +27 -0
  28. package/dist/board/azdo/labels/labels.d.ts.map +1 -0
  29. package/dist/board/azdo/labels/labels.js +64 -0
  30. package/dist/board/azdo/labels/labels.js.map +1 -0
  31. package/dist/board/azdo/relations/index.d.ts +2 -0
  32. package/dist/board/azdo/relations/index.d.ts.map +1 -0
  33. package/dist/board/azdo/relations/index.js +2 -0
  34. package/dist/board/azdo/relations/index.js.map +1 -0
  35. package/dist/board/azdo/relations/relations.d.ts +37 -0
  36. package/dist/board/azdo/relations/relations.d.ts.map +1 -0
  37. package/dist/board/azdo/relations/relations.js +109 -0
  38. package/dist/board/azdo/relations/relations.js.map +1 -0
  39. package/dist/board/detect-board.d.ts +28 -0
  40. package/dist/board/detect-board.d.ts.map +1 -0
  41. package/dist/board/detect-board.js +80 -0
  42. package/dist/board/detect-board.js.map +1 -0
  43. package/dist/board/factory/factory.d.ts +18 -0
  44. package/dist/board/factory/factory.d.ts.map +1 -0
  45. package/dist/board/factory/factory.js +34 -0
  46. package/dist/board/factory/factory.js.map +1 -0
  47. package/dist/board/factory/index.d.ts +2 -0
  48. package/dist/board/factory/index.d.ts.map +1 -0
  49. package/dist/board/factory/index.js +2 -0
  50. package/dist/board/factory/index.js.map +1 -0
  51. package/dist/board/github/api/api.d.ts +86 -0
  52. package/dist/board/github/api/api.d.ts.map +1 -0
  53. package/dist/board/github/api/api.js +161 -0
  54. package/dist/board/github/api/api.js.map +1 -0
  55. package/dist/board/github/api/index.d.ts +3 -0
  56. package/dist/board/github/api/index.d.ts.map +1 -0
  57. package/dist/board/github/api/index.js +2 -0
  58. package/dist/board/github/api/index.js.map +1 -0
  59. package/dist/board/github/github-board.d.ts +19 -0
  60. package/dist/board/github/github-board.d.ts.map +1 -0
  61. package/dist/board/github/github-board.js +104 -0
  62. package/dist/board/github/github-board.js.map +1 -0
  63. package/dist/board/github/index.d.ts +3 -0
  64. package/dist/board/github/index.d.ts.map +1 -0
  65. package/dist/board/github/index.js +3 -0
  66. package/dist/board/github/index.js.map +1 -0
  67. package/dist/board/github/labels/index.d.ts +2 -0
  68. package/dist/board/github/labels/index.d.ts.map +1 -0
  69. package/dist/board/github/labels/index.js +2 -0
  70. package/dist/board/github/labels/index.js.map +1 -0
  71. package/dist/board/github/labels/labels.d.ts +42 -0
  72. package/dist/board/github/labels/labels.d.ts.map +1 -0
  73. package/dist/board/github/labels/labels.js +93 -0
  74. package/dist/board/github/labels/labels.js.map +1 -0
  75. package/dist/board/github/relations/index.d.ts +2 -0
  76. package/dist/board/github/relations/index.d.ts.map +1 -0
  77. package/dist/board/github/relations/index.js +2 -0
  78. package/dist/board/github/relations/index.js.map +1 -0
  79. package/dist/board/github/relations/relations.d.ts +54 -0
  80. package/dist/board/github/relations/relations.d.ts.map +1 -0
  81. package/dist/board/github/relations/relations.js +152 -0
  82. package/dist/board/github/relations/relations.js.map +1 -0
  83. package/dist/board/index.d.ts +2 -0
  84. package/dist/board/index.d.ts.map +1 -0
  85. package/dist/board/index.js +2 -0
  86. package/dist/board/index.js.map +1 -0
  87. package/dist/board/jira/api/api.d.ts +129 -0
  88. package/dist/board/jira/api/api.d.ts.map +1 -0
  89. package/dist/board/jira/api/api.js +207 -0
  90. package/dist/board/jira/api/api.js.map +1 -0
  91. package/dist/board/jira/api/index.d.ts +3 -0
  92. package/dist/board/jira/api/index.d.ts.map +1 -0
  93. package/dist/board/jira/api/index.js +2 -0
  94. package/dist/board/jira/api/index.js.map +1 -0
  95. package/dist/board/jira/index.d.ts +3 -0
  96. package/dist/board/jira/index.d.ts.map +1 -0
  97. package/dist/board/jira/index.js +3 -0
  98. package/dist/board/jira/index.js.map +1 -0
  99. package/dist/board/jira/jira-board.d.ts +12 -0
  100. package/dist/board/jira/jira-board.d.ts.map +1 -0
  101. package/dist/board/jira/jira-board.js +112 -0
  102. package/dist/board/jira/jira-board.js.map +1 -0
  103. package/dist/board/jira/labels/index.d.ts +2 -0
  104. package/dist/board/jira/labels/index.d.ts.map +1 -0
  105. package/dist/board/jira/labels/index.js +2 -0
  106. package/dist/board/jira/labels/index.js.map +1 -0
  107. package/dist/board/jira/labels/labels.d.ts +34 -0
  108. package/dist/board/jira/labels/labels.d.ts.map +1 -0
  109. package/dist/board/jira/labels/labels.js +69 -0
  110. package/dist/board/jira/labels/labels.js.map +1 -0
  111. package/dist/board/jira/relations/index.d.ts +2 -0
  112. package/dist/board/jira/relations/index.d.ts.map +1 -0
  113. package/dist/board/jira/relations/index.js +2 -0
  114. package/dist/board/jira/relations/index.js.map +1 -0
  115. package/dist/board/jira/relations/relations.d.ts +44 -0
  116. package/dist/board/jira/relations/relations.d.ts.map +1 -0
  117. package/dist/board/jira/relations/relations.js +111 -0
  118. package/dist/board/jira/relations/relations.js.map +1 -0
  119. package/dist/board/linear/api/api.d.ts +68 -0
  120. package/dist/board/linear/api/api.d.ts.map +1 -0
  121. package/dist/board/linear/api/api.js +179 -0
  122. package/dist/board/linear/api/api.js.map +1 -0
  123. package/dist/board/linear/api/index.d.ts +2 -0
  124. package/dist/board/linear/api/index.d.ts.map +1 -0
  125. package/dist/board/linear/api/index.js +2 -0
  126. package/dist/board/linear/api/index.js.map +1 -0
  127. package/dist/board/linear/index.d.ts +3 -0
  128. package/dist/board/linear/index.d.ts.map +1 -0
  129. package/dist/board/linear/index.js +3 -0
  130. package/dist/board/linear/index.js.map +1 -0
  131. package/dist/board/linear/labels/index.d.ts +2 -0
  132. package/dist/board/linear/labels/index.d.ts.map +1 -0
  133. package/dist/board/linear/labels/index.js +2 -0
  134. package/dist/board/linear/labels/index.js.map +1 -0
  135. package/dist/board/linear/labels/labels.d.ts +63 -0
  136. package/dist/board/linear/labels/labels.d.ts.map +1 -0
  137. package/dist/board/linear/labels/labels.js +204 -0
  138. package/dist/board/linear/labels/labels.js.map +1 -0
  139. package/dist/board/linear/linear-board.d.ts +18 -0
  140. package/dist/board/linear/linear-board.d.ts.map +1 -0
  141. package/dist/board/linear/linear-board.js +115 -0
  142. package/dist/board/linear/linear-board.js.map +1 -0
  143. package/dist/board/linear/relations/index.d.ts +2 -0
  144. package/dist/board/linear/relations/index.d.ts.map +1 -0
  145. package/dist/board/linear/relations/index.js +2 -0
  146. package/dist/board/linear/relations/index.js.map +1 -0
  147. package/dist/board/linear/relations/relations.d.ts +67 -0
  148. package/dist/board/linear/relations/relations.d.ts.map +1 -0
  149. package/dist/board/linear/relations/relations.js +195 -0
  150. package/dist/board/linear/relations/relations.js.map +1 -0
  151. package/dist/board/notion/api/api.d.ts +83 -0
  152. package/dist/board/notion/api/api.d.ts.map +1 -0
  153. package/dist/board/notion/api/api.js +124 -0
  154. package/dist/board/notion/api/api.js.map +1 -0
  155. package/dist/board/notion/api/helpers.d.ts +105 -0
  156. package/dist/board/notion/api/helpers.d.ts.map +1 -0
  157. package/dist/board/notion/api/helpers.js +175 -0
  158. package/dist/board/notion/api/helpers.js.map +1 -0
  159. package/dist/board/notion/api/index.d.ts +4 -0
  160. package/dist/board/notion/api/index.d.ts.map +1 -0
  161. package/dist/board/notion/api/index.js +3 -0
  162. package/dist/board/notion/api/index.js.map +1 -0
  163. package/dist/board/notion/index.d.ts +3 -0
  164. package/dist/board/notion/index.d.ts.map +1 -0
  165. package/dist/board/notion/index.js +3 -0
  166. package/dist/board/notion/index.js.map +1 -0
  167. package/dist/board/notion/labels/index.d.ts +2 -0
  168. package/dist/board/notion/labels/index.d.ts.map +1 -0
  169. package/dist/board/notion/labels/index.js +2 -0
  170. package/dist/board/notion/labels/index.js.map +1 -0
  171. package/dist/board/notion/labels/labels.d.ts +30 -0
  172. package/dist/board/notion/labels/labels.d.ts.map +1 -0
  173. package/dist/board/notion/labels/labels.js +56 -0
  174. package/dist/board/notion/labels/labels.js.map +1 -0
  175. package/dist/board/notion/notion-board.d.ts +12 -0
  176. package/dist/board/notion/notion-board.d.ts.map +1 -0
  177. package/dist/board/notion/notion-board.js +156 -0
  178. package/dist/board/notion/notion-board.js.map +1 -0
  179. package/dist/board/notion/relations/index.d.ts +2 -0
  180. package/dist/board/notion/relations/index.d.ts.map +1 -0
  181. package/dist/board/notion/relations/index.js +2 -0
  182. package/dist/board/notion/relations/index.js.map +1 -0
  183. package/dist/board/notion/relations/relations.d.ts +43 -0
  184. package/dist/board/notion/relations/relations.d.ts.map +1 -0
  185. package/dist/board/notion/relations/relations.js +127 -0
  186. package/dist/board/notion/relations/relations.js.map +1 -0
  187. package/dist/board/shortcut/api/api.d.ts +110 -0
  188. package/dist/board/shortcut/api/api.d.ts.map +1 -0
  189. package/dist/board/shortcut/api/api.js +227 -0
  190. package/dist/board/shortcut/api/api.js.map +1 -0
  191. package/dist/board/shortcut/api/index.d.ts +2 -0
  192. package/dist/board/shortcut/api/index.d.ts.map +1 -0
  193. package/dist/board/shortcut/api/index.js +2 -0
  194. package/dist/board/shortcut/api/index.js.map +1 -0
  195. package/dist/board/shortcut/index.d.ts +3 -0
  196. package/dist/board/shortcut/index.d.ts.map +1 -0
  197. package/dist/board/shortcut/index.js +3 -0
  198. package/dist/board/shortcut/index.js.map +1 -0
  199. package/dist/board/shortcut/labels/index.d.ts +2 -0
  200. package/dist/board/shortcut/labels/index.d.ts.map +1 -0
  201. package/dist/board/shortcut/labels/index.js +2 -0
  202. package/dist/board/shortcut/labels/index.js.map +1 -0
  203. package/dist/board/shortcut/labels/labels.d.ts +95 -0
  204. package/dist/board/shortcut/labels/labels.d.ts.map +1 -0
  205. package/dist/board/shortcut/labels/labels.js +154 -0
  206. package/dist/board/shortcut/labels/labels.js.map +1 -0
  207. package/dist/board/shortcut/relations/index.d.ts +2 -0
  208. package/dist/board/shortcut/relations/index.d.ts.map +1 -0
  209. package/dist/board/shortcut/relations/index.js +2 -0
  210. package/dist/board/shortcut/relations/index.js.map +1 -0
  211. package/dist/board/shortcut/relations/relations.d.ts +44 -0
  212. package/dist/board/shortcut/relations/relations.d.ts.map +1 -0
  213. package/dist/board/shortcut/relations/relations.js +118 -0
  214. package/dist/board/shortcut/relations/relations.js.map +1 -0
  215. package/dist/board/shortcut/shortcut-board.d.ts +18 -0
  216. package/dist/board/shortcut/shortcut-board.d.ts.map +1 -0
  217. package/dist/board/shortcut/shortcut-board.js +143 -0
  218. package/dist/board/shortcut/shortcut-board.js.map +1 -0
  219. package/dist/dev/lifecycle/branch/branch.d.ts +35 -0
  220. package/dist/dev/lifecycle/branch/branch.d.ts.map +1 -0
  221. package/dist/dev/lifecycle/branch/branch.js +48 -0
  222. package/dist/dev/lifecycle/branch/branch.js.map +1 -0
  223. package/dist/dev/lifecycle/branch/index.d.ts +2 -0
  224. package/dist/dev/lifecycle/branch/index.d.ts.map +1 -0
  225. package/dist/dev/lifecycle/branch/index.js +2 -0
  226. package/dist/dev/lifecycle/branch/index.js.map +1 -0
  227. package/dist/dev/lifecycle/commit-type/commit-type.d.ts +22 -0
  228. package/dist/dev/lifecycle/commit-type/commit-type.d.ts.map +1 -0
  229. package/dist/dev/lifecycle/commit-type/commit-type.js +50 -0
  230. package/dist/dev/lifecycle/commit-type/commit-type.js.map +1 -0
  231. package/dist/dev/lifecycle/commit-type/index.d.ts +2 -0
  232. package/dist/dev/lifecycle/commit-type/index.d.ts.map +1 -0
  233. package/dist/dev/lifecycle/commit-type/index.js +2 -0
  234. package/dist/dev/lifecycle/commit-type/index.js.map +1 -0
  235. package/dist/dev/lifecycle/cost/cost.d.ts +28 -0
  236. package/dist/dev/lifecycle/cost/cost.d.ts.map +1 -0
  237. package/dist/dev/lifecycle/cost/cost.js +36 -0
  238. package/dist/dev/lifecycle/cost/cost.js.map +1 -0
  239. package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts +44 -0
  240. package/dist/dev/lifecycle/deliver-epic/deliver-epic.d.ts.map +1 -0
  241. package/dist/dev/lifecycle/deliver-epic/deliver-epic.js +75 -0
  242. package/dist/dev/lifecycle/deliver-epic/deliver-epic.js.map +1 -0
  243. package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts +51 -0
  244. package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.d.ts.map +1 -0
  245. package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js +132 -0
  246. package/dist/dev/lifecycle/deliver-ticket/deliver-ticket.js.map +1 -0
  247. package/dist/dev/lifecycle/epic/epic.d.ts +66 -0
  248. package/dist/dev/lifecycle/epic/epic.d.ts.map +1 -0
  249. package/dist/dev/lifecycle/epic/epic.js +91 -0
  250. package/dist/dev/lifecycle/epic/epic.js.map +1 -0
  251. package/dist/dev/lifecycle/epic/index.d.ts +2 -0
  252. package/dist/dev/lifecycle/epic/index.d.ts.map +1 -0
  253. package/dist/dev/lifecycle/epic/index.js +2 -0
  254. package/dist/dev/lifecycle/epic/index.js.map +1 -0
  255. package/dist/dev/lifecycle/feasibility/feasibility.d.ts +55 -0
  256. package/dist/dev/lifecycle/feasibility/feasibility.d.ts.map +1 -0
  257. package/dist/dev/lifecycle/feasibility/feasibility.js +75 -0
  258. package/dist/dev/lifecycle/feasibility/feasibility.js.map +1 -0
  259. package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts +49 -0
  260. package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.d.ts.map +1 -0
  261. package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js +81 -0
  262. package/dist/dev/lifecycle/fetch-ticket/fetch-ticket.js.map +1 -0
  263. package/dist/dev/lifecycle/format/format.d.ts +11 -0
  264. package/dist/dev/lifecycle/format/format.d.ts.map +1 -0
  265. package/dist/dev/lifecycle/format/format.js +23 -0
  266. package/dist/dev/lifecycle/format/format.js.map +1 -0
  267. package/dist/dev/lifecycle/lock/index.d.ts +3 -0
  268. package/dist/dev/lifecycle/lock/index.d.ts.map +1 -0
  269. package/dist/dev/lifecycle/lock/index.js +2 -0
  270. package/dist/dev/lifecycle/lock/index.js.map +1 -0
  271. package/dist/dev/lifecycle/lock/lock.d.ts +68 -0
  272. package/dist/dev/lifecycle/lock/lock.d.ts.map +1 -0
  273. package/dist/dev/lifecycle/lock/lock.js +125 -0
  274. package/dist/dev/lifecycle/lock/lock.js.map +1 -0
  275. package/dist/dev/lifecycle/outcome/index.d.ts +2 -0
  276. package/dist/dev/lifecycle/outcome/index.d.ts.map +1 -0
  277. package/dist/dev/lifecycle/outcome/index.js +2 -0
  278. package/dist/dev/lifecycle/outcome/index.js.map +1 -0
  279. package/dist/dev/lifecycle/outcome/outcome.d.ts +65 -0
  280. package/dist/dev/lifecycle/outcome/outcome.d.ts.map +1 -0
  281. package/dist/dev/lifecycle/outcome/outcome.js +61 -0
  282. package/dist/dev/lifecycle/outcome/outcome.js.map +1 -0
  283. package/dist/dev/lifecycle/pr-creation/index.d.ts +3 -0
  284. package/dist/dev/lifecycle/pr-creation/index.d.ts.map +1 -0
  285. package/dist/dev/lifecycle/pr-creation/index.js +2 -0
  286. package/dist/dev/lifecycle/pr-creation/index.js.map +1 -0
  287. package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts +47 -0
  288. package/dist/dev/lifecycle/pr-creation/pr-creation.d.ts.map +1 -0
  289. package/dist/dev/lifecycle/pr-creation/pr-creation.js +143 -0
  290. package/dist/dev/lifecycle/pr-creation/pr-creation.js.map +1 -0
  291. package/dist/dev/lifecycle/preflight/preflight.d.ts +42 -0
  292. package/dist/dev/lifecycle/preflight/preflight.d.ts.map +1 -0
  293. package/dist/dev/lifecycle/preflight/preflight.js +101 -0
  294. package/dist/dev/lifecycle/preflight/preflight.js.map +1 -0
  295. package/dist/dev/lifecycle/progress/index.d.ts +3 -0
  296. package/dist/dev/lifecycle/progress/index.d.ts.map +1 -0
  297. package/dist/dev/lifecycle/progress/index.js +2 -0
  298. package/dist/dev/lifecycle/progress/index.js.map +1 -0
  299. package/dist/dev/lifecycle/progress/progress.d.ts +98 -0
  300. package/dist/dev/lifecycle/progress/progress.d.ts.map +1 -0
  301. package/dist/dev/lifecycle/progress/progress.js +212 -0
  302. package/dist/dev/lifecycle/progress/progress.js.map +1 -0
  303. package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts +86 -0
  304. package/dist/dev/lifecycle/pull-request/azdo/azdo.d.ts.map +1 -0
  305. package/dist/dev/lifecycle/pull-request/azdo/azdo.js +198 -0
  306. package/dist/dev/lifecycle/pull-request/azdo/azdo.js.map +1 -0
  307. package/dist/dev/lifecycle/pull-request/azdo/index.d.ts +2 -0
  308. package/dist/dev/lifecycle/pull-request/azdo/index.d.ts.map +1 -0
  309. package/dist/dev/lifecycle/pull-request/azdo/index.js +2 -0
  310. package/dist/dev/lifecycle/pull-request/azdo/index.js.map +1 -0
  311. package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts +85 -0
  312. package/dist/dev/lifecycle/pull-request/bitbucket/cloud.d.ts.map +1 -0
  313. package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js +158 -0
  314. package/dist/dev/lifecycle/pull-request/bitbucket/cloud.js.map +1 -0
  315. package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts +3 -0
  316. package/dist/dev/lifecycle/pull-request/bitbucket/index.d.ts.map +1 -0
  317. package/dist/dev/lifecycle/pull-request/bitbucket/index.js +3 -0
  318. package/dist/dev/lifecycle/pull-request/bitbucket/index.js.map +1 -0
  319. package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts +85 -0
  320. package/dist/dev/lifecycle/pull-request/bitbucket/server.d.ts.map +1 -0
  321. package/dist/dev/lifecycle/pull-request/bitbucket/server.js +168 -0
  322. package/dist/dev/lifecycle/pull-request/bitbucket/server.js.map +1 -0
  323. package/dist/dev/lifecycle/pull-request/github/github.d.ts +107 -0
  324. package/dist/dev/lifecycle/pull-request/github/github.d.ts.map +1 -0
  325. package/dist/dev/lifecycle/pull-request/github/github.js +225 -0
  326. package/dist/dev/lifecycle/pull-request/github/github.js.map +1 -0
  327. package/dist/dev/lifecycle/pull-request/github/index.d.ts +2 -0
  328. package/dist/dev/lifecycle/pull-request/github/index.d.ts.map +1 -0
  329. package/dist/dev/lifecycle/pull-request/github/index.js +2 -0
  330. package/dist/dev/lifecycle/pull-request/github/index.js.map +1 -0
  331. package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts +103 -0
  332. package/dist/dev/lifecycle/pull-request/gitlab/gitlab.d.ts.map +1 -0
  333. package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js +215 -0
  334. package/dist/dev/lifecycle/pull-request/gitlab/gitlab.js.map +1 -0
  335. package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts +2 -0
  336. package/dist/dev/lifecycle/pull-request/gitlab/index.d.ts.map +1 -0
  337. package/dist/dev/lifecycle/pull-request/gitlab/index.js +2 -0
  338. package/dist/dev/lifecycle/pull-request/gitlab/index.js.map +1 -0
  339. package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts +44 -0
  340. package/dist/dev/lifecycle/pull-request/post-pr/post-pr.d.ts.map +1 -0
  341. package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js +64 -0
  342. package/dist/dev/lifecycle/pull-request/post-pr/post-pr.js.map +1 -0
  343. package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts +3 -0
  344. package/dist/dev/lifecycle/pull-request/pr-body/index.d.ts.map +1 -0
  345. package/dist/dev/lifecycle/pull-request/pr-body/index.js +2 -0
  346. package/dist/dev/lifecycle/pull-request/pr-body/index.js.map +1 -0
  347. package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts +65 -0
  348. package/dist/dev/lifecycle/pull-request/pr-body/pr-body.d.ts.map +1 -0
  349. package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js +144 -0
  350. package/dist/dev/lifecycle/pull-request/pr-body/pr-body.js.map +1 -0
  351. package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts +30 -0
  352. package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.d.ts.map +1 -0
  353. package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js +39 -0
  354. package/dist/dev/lifecycle/pull-request/rework-comment/rework-comment.js.map +1 -0
  355. package/dist/dev/lifecycle/quality/quality.d.ts +99 -0
  356. package/dist/dev/lifecycle/quality/quality.d.ts.map +1 -0
  357. package/dist/dev/lifecycle/quality/quality.js +213 -0
  358. package/dist/dev/lifecycle/quality/quality.js.map +1 -0
  359. package/dist/dev/lifecycle/resume/resume.d.ts +64 -0
  360. package/dist/dev/lifecycle/resume/resume.d.ts.map +1 -0
  361. package/dist/dev/lifecycle/resume/resume.js +171 -0
  362. package/dist/dev/lifecycle/resume/resume.js.map +1 -0
  363. package/dist/dev/lifecycle/rework/rework-builders.d.ts +20 -0
  364. package/dist/dev/lifecycle/rework/rework-builders.d.ts.map +1 -0
  365. package/dist/dev/lifecycle/rework/rework-builders.js +203 -0
  366. package/dist/dev/lifecycle/rework/rework-builders.js.map +1 -0
  367. package/dist/dev/lifecycle/rework/rework-handlers.d.ts +50 -0
  368. package/dist/dev/lifecycle/rework/rework-handlers.d.ts.map +1 -0
  369. package/dist/dev/lifecycle/rework/rework-handlers.js +41 -0
  370. package/dist/dev/lifecycle/rework/rework-handlers.js.map +1 -0
  371. package/dist/dev/lifecycle/rework/rework.d.ts +63 -0
  372. package/dist/dev/lifecycle/rework/rework.d.ts.map +1 -0
  373. package/dist/dev/lifecycle/rework/rework.js +141 -0
  374. package/dist/dev/lifecycle/rework/rework.js.map +1 -0
  375. package/dist/dev/pipeline/context.d.ts +105 -0
  376. package/dist/dev/pipeline/context.d.ts.map +1 -0
  377. package/dist/dev/pipeline/context.js +107 -0
  378. package/dist/dev/pipeline/context.js.map +1 -0
  379. package/dist/dev/pipeline/index.d.ts +6 -0
  380. package/dist/dev/pipeline/index.d.ts.map +1 -0
  381. package/dist/dev/pipeline/index.js +5 -0
  382. package/dist/dev/pipeline/index.js.map +1 -0
  383. package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts +62 -0
  384. package/dist/dev/pipeline/phases/branch-setup/branch-setup.d.ts.map +1 -0
  385. package/dist/dev/pipeline/phases/branch-setup/branch-setup.js +128 -0
  386. package/dist/dev/pipeline/phases/branch-setup/branch-setup.js.map +1 -0
  387. package/dist/dev/pipeline/phases/branch-setup/index.d.ts +3 -0
  388. package/dist/dev/pipeline/phases/branch-setup/index.d.ts.map +1 -0
  389. package/dist/dev/pipeline/phases/branch-setup/index.js +2 -0
  390. package/dist/dev/pipeline/phases/branch-setup/index.js.map +1 -0
  391. package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts +32 -0
  392. package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.d.ts.map +1 -0
  393. package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js +32 -0
  394. package/dist/dev/pipeline/phases/cleanup-phase/cleanup-phase.js.map +1 -0
  395. package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts +3 -0
  396. package/dist/dev/pipeline/phases/cleanup-phase/index.d.ts.map +1 -0
  397. package/dist/dev/pipeline/phases/cleanup-phase/index.js +2 -0
  398. package/dist/dev/pipeline/phases/cleanup-phase/index.js.map +1 -0
  399. package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts +40 -0
  400. package/dist/dev/pipeline/phases/cost-phase/cost-phase.d.ts.map +1 -0
  401. package/dist/dev/pipeline/phases/cost-phase/cost-phase.js +43 -0
  402. package/dist/dev/pipeline/phases/cost-phase/cost-phase.js.map +1 -0
  403. package/dist/dev/pipeline/phases/cost-phase/index.d.ts +3 -0
  404. package/dist/dev/pipeline/phases/cost-phase/index.d.ts.map +1 -0
  405. package/dist/dev/pipeline/phases/cost-phase/index.js +2 -0
  406. package/dist/dev/pipeline/phases/cost-phase/index.js.map +1 -0
  407. package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts +68 -0
  408. package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.d.ts.map +1 -0
  409. package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js +125 -0
  410. package/dist/dev/pipeline/phases/deliver-phase/deliver-phase.js.map +1 -0
  411. package/dist/dev/pipeline/phases/deliver-phase/index.d.ts +3 -0
  412. package/dist/dev/pipeline/phases/deliver-phase/index.d.ts.map +1 -0
  413. package/dist/dev/pipeline/phases/deliver-phase/index.js +2 -0
  414. package/dist/dev/pipeline/phases/deliver-phase/index.js.map +1 -0
  415. package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts +38 -0
  416. package/dist/dev/pipeline/phases/dry-run/dry-run.d.ts.map +1 -0
  417. package/dist/dev/pipeline/phases/dry-run/dry-run.js +33 -0
  418. package/dist/dev/pipeline/phases/dry-run/dry-run.js.map +1 -0
  419. package/dist/dev/pipeline/phases/dry-run/index.d.ts +2 -0
  420. package/dist/dev/pipeline/phases/dry-run/index.d.ts.map +1 -0
  421. package/dist/dev/pipeline/phases/dry-run/index.js +2 -0
  422. package/dist/dev/pipeline/phases/dry-run/index.js.map +1 -0
  423. package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts +48 -0
  424. package/dist/dev/pipeline/phases/epic-completion/epic-completion.d.ts.map +1 -0
  425. package/dist/dev/pipeline/phases/epic-completion/epic-completion.js +42 -0
  426. package/dist/dev/pipeline/phases/epic-completion/epic-completion.js.map +1 -0
  427. package/dist/dev/pipeline/phases/epic-completion/index.d.ts +3 -0
  428. package/dist/dev/pipeline/phases/epic-completion/index.d.ts.map +1 -0
  429. package/dist/dev/pipeline/phases/epic-completion/index.js +2 -0
  430. package/dist/dev/pipeline/phases/epic-completion/index.js.map +1 -0
  431. package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts +52 -0
  432. package/dist/dev/pipeline/phases/feasibility/feasibility.d.ts.map +1 -0
  433. package/dist/dev/pipeline/phases/feasibility/feasibility.js +34 -0
  434. package/dist/dev/pipeline/phases/feasibility/feasibility.js.map +1 -0
  435. package/dist/dev/pipeline/phases/feasibility/index.d.ts +3 -0
  436. package/dist/dev/pipeline/phases/feasibility/index.d.ts.map +1 -0
  437. package/dist/dev/pipeline/phases/feasibility/index.js +2 -0
  438. package/dist/dev/pipeline/phases/feasibility/index.js.map +1 -0
  439. package/dist/dev/pipeline/phases/index.d.ts +26 -0
  440. package/dist/dev/pipeline/phases/index.d.ts.map +1 -0
  441. package/dist/dev/pipeline/phases/index.js +14 -0
  442. package/dist/dev/pipeline/phases/index.js.map +1 -0
  443. package/dist/dev/pipeline/phases/lock-check/index.d.ts +3 -0
  444. package/dist/dev/pipeline/phases/lock-check/index.d.ts.map +1 -0
  445. package/dist/dev/pipeline/phases/lock-check/index.js +2 -0
  446. package/dist/dev/pipeline/phases/lock-check/index.js.map +1 -0
  447. package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts +55 -0
  448. package/dist/dev/pipeline/phases/lock-check/lock-check.d.ts.map +1 -0
  449. package/dist/dev/pipeline/phases/lock-check/lock-check.js +60 -0
  450. package/dist/dev/pipeline/phases/lock-check/lock-check.js.map +1 -0
  451. package/dist/dev/pipeline/phases/pr-retry/index.d.ts +3 -0
  452. package/dist/dev/pipeline/phases/pr-retry/index.d.ts.map +1 -0
  453. package/dist/dev/pipeline/phases/pr-retry/index.js +2 -0
  454. package/dist/dev/pipeline/phases/pr-retry/index.js.map +1 -0
  455. package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts +58 -0
  456. package/dist/dev/pipeline/phases/pr-retry/pr-retry.d.ts.map +1 -0
  457. package/dist/dev/pipeline/phases/pr-retry/pr-retry.js +82 -0
  458. package/dist/dev/pipeline/phases/pr-retry/pr-retry.js.map +1 -0
  459. package/dist/dev/pipeline/phases/preflight-phase/index.d.ts +3 -0
  460. package/dist/dev/pipeline/phases/preflight-phase/index.d.ts.map +1 -0
  461. package/dist/dev/pipeline/phases/preflight-phase/index.js +2 -0
  462. package/dist/dev/pipeline/phases/preflight-phase/index.js.map +1 -0
  463. package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts +42 -0
  464. package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.d.ts.map +1 -0
  465. package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js +41 -0
  466. package/dist/dev/pipeline/phases/preflight-phase/preflight-phase.js.map +1 -0
  467. package/dist/dev/pipeline/phases/rework-detection/index.d.ts +3 -0
  468. package/dist/dev/pipeline/phases/rework-detection/index.d.ts.map +1 -0
  469. package/dist/dev/pipeline/phases/rework-detection/index.js +2 -0
  470. package/dist/dev/pipeline/phases/rework-detection/index.js.map +1 -0
  471. package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts +40 -0
  472. package/dist/dev/pipeline/phases/rework-detection/rework-detection.d.ts.map +1 -0
  473. package/dist/dev/pipeline/phases/rework-detection/rework-detection.js +38 -0
  474. package/dist/dev/pipeline/phases/rework-detection/rework-detection.js.map +1 -0
  475. package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts +3 -0
  476. package/dist/dev/pipeline/phases/ticket-fetch/index.d.ts.map +1 -0
  477. package/dist/dev/pipeline/phases/ticket-fetch/index.js +2 -0
  478. package/dist/dev/pipeline/phases/ticket-fetch/index.js.map +1 -0
  479. package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts +46 -0
  480. package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.d.ts.map +1 -0
  481. package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js +64 -0
  482. package/dist/dev/pipeline/phases/ticket-fetch/ticket-fetch.js.map +1 -0
  483. package/dist/dev/pipeline/phases/transition/index.d.ts +3 -0
  484. package/dist/dev/pipeline/phases/transition/index.d.ts.map +1 -0
  485. package/dist/dev/pipeline/phases/transition/index.js +2 -0
  486. package/dist/dev/pipeline/phases/transition/index.js.map +1 -0
  487. package/dist/dev/pipeline/phases/transition/transition.d.ts +30 -0
  488. package/dist/dev/pipeline/phases/transition/transition.d.ts.map +1 -0
  489. package/dist/dev/pipeline/phases/transition/transition.js +27 -0
  490. package/dist/dev/pipeline/phases/transition/transition.js.map +1 -0
  491. package/dist/dev/pipeline/run-pipeline.d.ts +98 -0
  492. package/dist/dev/pipeline/run-pipeline.d.ts.map +1 -0
  493. package/dist/dev/pipeline/run-pipeline.js +106 -0
  494. package/dist/dev/pipeline/run-pipeline.js.map +1 -0
  495. package/dist/index.d.ts +58 -0
  496. package/dist/index.d.ts.map +1 -0
  497. package/dist/index.js +58 -0
  498. package/dist/index.js.map +1 -0
  499. package/dist/schemas/azdo/azdo-pr.d.ts +58 -0
  500. package/dist/schemas/azdo/azdo-pr.d.ts.map +1 -0
  501. package/dist/schemas/azdo/azdo-pr.js +48 -0
  502. package/dist/schemas/azdo/azdo-pr.js.map +1 -0
  503. package/dist/schemas/azdo/azdo.d.ts +88 -0
  504. package/dist/schemas/azdo/azdo.d.ts.map +1 -0
  505. package/dist/schemas/azdo/azdo.js +60 -0
  506. package/dist/schemas/azdo/azdo.js.map +1 -0
  507. package/dist/schemas/bitbucket/bitbucket.d.ts +112 -0
  508. package/dist/schemas/bitbucket/bitbucket.d.ts.map +1 -0
  509. package/dist/schemas/bitbucket/bitbucket.js +73 -0
  510. package/dist/schemas/bitbucket/bitbucket.js.map +1 -0
  511. package/dist/schemas/env/env.d.ts +336 -0
  512. package/dist/schemas/env/env.d.ts.map +1 -0
  513. package/dist/schemas/env/env.js +94 -0
  514. package/dist/schemas/env/env.js.map +1 -0
  515. package/dist/schemas/github/github.d.ts +128 -0
  516. package/dist/schemas/github/github.d.ts.map +1 -0
  517. package/dist/schemas/github/github.js +65 -0
  518. package/dist/schemas/github/github.js.map +1 -0
  519. package/dist/schemas/gitlab/gitlab.d.ts +72 -0
  520. package/dist/schemas/gitlab/gitlab.d.ts.map +1 -0
  521. package/dist/schemas/gitlab/gitlab.js +38 -0
  522. package/dist/schemas/gitlab/gitlab.js.map +1 -0
  523. package/dist/schemas/index.d.ts +15 -0
  524. package/dist/schemas/index.d.ts.map +1 -0
  525. package/dist/schemas/index.js +8 -0
  526. package/dist/schemas/index.js.map +1 -0
  527. package/dist/schemas/jira/jira.d.ts +79 -0
  528. package/dist/schemas/jira/jira.d.ts.map +1 -0
  529. package/dist/schemas/jira/jira.js +69 -0
  530. package/dist/schemas/jira/jira.js.map +1 -0
  531. package/dist/schemas/linear/linear.d.ts +178 -0
  532. package/dist/schemas/linear/linear.d.ts.map +1 -0
  533. package/dist/schemas/linear/linear.js +136 -0
  534. package/dist/schemas/linear/linear.js.map +1 -0
  535. package/dist/schemas/notion/notion.d.ts +131 -0
  536. package/dist/schemas/notion/notion.d.ts.map +1 -0
  537. package/dist/schemas/notion/notion.js +102 -0
  538. package/dist/schemas/notion/notion.js.map +1 -0
  539. package/dist/schemas/shortcut/shortcut.d.ts +149 -0
  540. package/dist/schemas/shortcut/shortcut.d.ts.map +1 -0
  541. package/dist/schemas/shortcut/shortcut.js +68 -0
  542. package/dist/schemas/shortcut/shortcut.js.map +1 -0
  543. package/dist/shared/cache/cache.d.ts +14 -0
  544. package/dist/shared/cache/cache.d.ts.map +1 -0
  545. package/dist/shared/cache/cache.js +25 -0
  546. package/dist/shared/cache/cache.js.map +1 -0
  547. package/dist/shared/cache/index.d.ts +2 -0
  548. package/dist/shared/cache/index.d.ts.map +1 -0
  549. package/dist/shared/cache/index.js +2 -0
  550. package/dist/shared/cache/index.js.map +1 -0
  551. package/dist/shared/env-parser/env-parser.d.ts +42 -0
  552. package/dist/shared/env-parser/env-parser.d.ts.map +1 -0
  553. package/dist/shared/env-parser/env-parser.js +97 -0
  554. package/dist/shared/env-parser/env-parser.js.map +1 -0
  555. package/dist/shared/env-parser/index.d.ts +3 -0
  556. package/dist/shared/env-parser/index.d.ts.map +1 -0
  557. package/dist/shared/env-parser/index.js +2 -0
  558. package/dist/shared/env-parser/index.js.map +1 -0
  559. package/dist/shared/git-ops/git-ops.d.ts +127 -0
  560. package/dist/shared/git-ops/git-ops.d.ts.map +1 -0
  561. package/dist/shared/git-ops/git-ops.js +225 -0
  562. package/dist/shared/git-ops/git-ops.js.map +1 -0
  563. package/dist/shared/git-ops/index.d.ts +3 -0
  564. package/dist/shared/git-ops/index.d.ts.map +1 -0
  565. package/dist/shared/git-ops/index.js +2 -0
  566. package/dist/shared/git-ops/index.js.map +1 -0
  567. package/dist/shared/git-token/git-token.d.ts +18 -0
  568. package/dist/shared/git-token/git-token.d.ts.map +1 -0
  569. package/dist/shared/git-token/git-token.js +28 -0
  570. package/dist/shared/git-token/git-token.js.map +1 -0
  571. package/dist/shared/git-token/index.d.ts +2 -0
  572. package/dist/shared/git-token/index.d.ts.map +1 -0
  573. package/dist/shared/git-token/index.js +2 -0
  574. package/dist/shared/git-token/index.js.map +1 -0
  575. package/dist/shared/http/fetch-and-parse/fetch-and-parse.d.ts +32 -0
  576. package/dist/shared/http/fetch-and-parse/fetch-and-parse.d.ts.map +1 -0
  577. package/dist/shared/http/fetch-and-parse/fetch-and-parse.js +53 -0
  578. package/dist/shared/http/fetch-and-parse/fetch-and-parse.js.map +1 -0
  579. package/dist/shared/http/fetch-and-parse/index.d.ts +3 -0
  580. package/dist/shared/http/fetch-and-parse/index.d.ts.map +1 -0
  581. package/dist/shared/http/fetch-and-parse/index.js +2 -0
  582. package/dist/shared/http/fetch-and-parse/index.js.map +1 -0
  583. package/dist/shared/http/index.d.ts +7 -0
  584. package/dist/shared/http/index.d.ts.map +1 -0
  585. package/dist/shared/http/index.js +4 -0
  586. package/dist/shared/http/index.js.map +1 -0
  587. package/dist/shared/http/ping-endpoint/index.d.ts +3 -0
  588. package/dist/shared/http/ping-endpoint/index.d.ts.map +1 -0
  589. package/dist/shared/http/ping-endpoint/index.js +2 -0
  590. package/dist/shared/http/ping-endpoint/index.js.map +1 -0
  591. package/dist/shared/http/ping-endpoint/ping-endpoint.d.ts +29 -0
  592. package/dist/shared/http/ping-endpoint/ping-endpoint.d.ts.map +1 -0
  593. package/dist/shared/http/ping-endpoint/ping-endpoint.js +31 -0
  594. package/dist/shared/http/ping-endpoint/ping-endpoint.js.map +1 -0
  595. package/dist/shared/http/retry-fetch/index.d.ts +3 -0
  596. package/dist/shared/http/retry-fetch/index.d.ts.map +1 -0
  597. package/dist/shared/http/retry-fetch/index.js +2 -0
  598. package/dist/shared/http/retry-fetch/index.js.map +1 -0
  599. package/dist/shared/http/retry-fetch/retry-fetch.d.ts +33 -0
  600. package/dist/shared/http/retry-fetch/retry-fetch.d.ts.map +1 -0
  601. package/dist/shared/http/retry-fetch/retry-fetch.js +94 -0
  602. package/dist/shared/http/retry-fetch/retry-fetch.js.map +1 -0
  603. package/dist/shared/label-helpers/index.d.ts +3 -0
  604. package/dist/shared/label-helpers/index.d.ts.map +1 -0
  605. package/dist/shared/label-helpers/index.js +2 -0
  606. package/dist/shared/label-helpers/index.js.map +1 -0
  607. package/dist/shared/label-helpers/label-helpers.d.ts +41 -0
  608. package/dist/shared/label-helpers/label-helpers.d.ts.map +1 -0
  609. package/dist/shared/label-helpers/label-helpers.js +51 -0
  610. package/dist/shared/label-helpers/label-helpers.js.map +1 -0
  611. package/dist/shared/remote/index.d.ts +2 -0
  612. package/dist/shared/remote/index.d.ts.map +1 -0
  613. package/dist/shared/remote/index.js +2 -0
  614. package/dist/shared/remote/index.js.map +1 -0
  615. package/dist/shared/remote/remote.d.ts +39 -0
  616. package/dist/shared/remote/remote.d.ts.map +1 -0
  617. package/dist/shared/remote/remote.js +180 -0
  618. package/dist/shared/remote/remote.js.map +1 -0
  619. package/dist/types/board.d.ts +62 -0
  620. package/dist/types/board.d.ts.map +1 -0
  621. package/dist/types/board.js +5 -0
  622. package/dist/types/board.js.map +1 -0
  623. package/dist/types/index.d.ts +5 -0
  624. package/dist/types/index.d.ts.map +1 -0
  625. package/dist/types/index.js +2 -0
  626. package/dist/types/index.js.map +1 -0
  627. package/dist/types/progress.d.ts +21 -0
  628. package/dist/types/progress.d.ts.map +1 -0
  629. package/dist/types/progress.js +34 -0
  630. package/dist/types/progress.js.map +1 -0
  631. package/dist/types/remote.d.ts +77 -0
  632. package/dist/types/remote.d.ts.map +1 -0
  633. package/dist/types/remote.js +5 -0
  634. package/dist/types/remote.js.map +1 -0
  635. package/package.json +44 -0
@@ -0,0 +1,127 @@
1
+ import { fetchPage, findPageByKey, findPropertyByName, getDescriptionText, getPageStatus, isCompleteStatus, isPageIncomplete, queryAllPages, queryDatabase, } from '../api/index.js';
2
+ /** Check whether a page has an active (non-complete) status. */
3
+ function hasActiveStatus(page, statusProp) {
4
+ const status = getPageStatus(page, statusProp);
5
+ return status !== undefined && !isCompleteStatus(status);
6
+ }
7
+ /**
8
+ * Check whether a Notion page is blocked by unresolved blockers.
9
+ *
10
+ * Checks "Blocked by" relation property first, then falls back to
11
+ * description text search for "Blocked by notion-{shortId}" references.
12
+ *
13
+ * @param opts - Connection context, page ID, and status property name.
14
+ * @returns `true` if any blocker is unresolved, `false` otherwise.
15
+ */
16
+ export async function fetchBlockerStatus(opts) {
17
+ const { ctx, pageId, statusProp } = opts;
18
+ try {
19
+ const page = await fetchPage(ctx.token, pageId, ctx.fetcher);
20
+ if (!page)
21
+ return false;
22
+ const blocked = await checkRelationBlockers(ctx, page, statusProp);
23
+ if (blocked !== undefined)
24
+ return blocked;
25
+ return checkDescriptionBlockers({ ctx, page, pageId, statusProp });
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ /** Check blockers via "Blocked by" relation property. */
32
+ async function checkRelationBlockers(ctx, page, statusProp) {
33
+ const blockedByProp = findPropertyByName(page, 'Blocked by');
34
+ if (blockedByProp?.type !== 'relation')
35
+ return undefined;
36
+ // Safe cast: type guard guarantees relation shape
37
+ const relations = blockedByProp.relation;
38
+ if (!relations.length)
39
+ return false;
40
+ const blockerPages = await Promise.all(relations.map((rel) => fetchPage(ctx.token, rel.id, ctx.fetcher)));
41
+ return blockerPages.some((blockerPage) => !!blockerPage && hasActiveStatus(blockerPage, statusProp));
42
+ }
43
+ /** Check blockers via description text "Blocked by notion-{id}" references. */
44
+ async function checkDescriptionBlockers(opts) {
45
+ const { ctx, page, pageId, statusProp } = opts;
46
+ const description = getDescriptionText(page);
47
+ if (!description)
48
+ return false;
49
+ const blockerMatch = description.match(/Blocked by (notion-[a-f0-9]{8})/gi);
50
+ if (!blockerMatch)
51
+ return false;
52
+ const selfShortId = pageId.replace(/-/g, '').slice(0, 8);
53
+ const allPages = await queryAllPages({ ctx });
54
+ if (!allPages.length)
55
+ return false;
56
+ const isBlockedByActive = (match) => {
57
+ const shortId = match.replace(/blocked by notion-/i, '').toLowerCase();
58
+ if (shortId === selfShortId)
59
+ return false;
60
+ const candidate = allPages.find((p) => p.id.replace(/-/g, '').slice(0, 8) === shortId);
61
+ return candidate != null && hasActiveStatus(candidate, statusProp);
62
+ };
63
+ return blockerMatch.some(isBlockedByActive);
64
+ }
65
+ /**
66
+ * Fetch the children status of a parent page (dual-mode).
67
+ *
68
+ * Mode 1: Search descriptions for `Epic: notion-{shortId}` text.
69
+ * Mode 2: Query by parent relation property as fallback.
70
+ *
71
+ * @param opts - Connection context, parent key, and property names.
72
+ * @returns The children status, or `undefined` on failure.
73
+ */
74
+ export async function fetchChildrenStatus(opts) {
75
+ const { ctx, parentKey, parentProp, statusProp } = opts;
76
+ try {
77
+ const epicRef = `Epic: ${parentKey}`;
78
+ const textResult = await fetchChildrenByDescription(ctx, epicRef, statusProp);
79
+ if (textResult && textResult.total > 0)
80
+ return textResult;
81
+ const parentPage = await findPageByKey(ctx, parentKey);
82
+ if (!parentPage)
83
+ return undefined;
84
+ return await fetchChildrenByRelation({
85
+ ctx,
86
+ parentPageId: parentPage.id,
87
+ parentProp,
88
+ statusProp,
89
+ });
90
+ }
91
+ catch {
92
+ return undefined;
93
+ }
94
+ }
95
+ /** Count children by searching descriptions for an Epic: reference. */
96
+ async function fetchChildrenByDescription(ctx, descriptionRef, statusProp) {
97
+ const allPages = await queryAllPages({ ctx });
98
+ if (!allPages.length)
99
+ return undefined;
100
+ const matching = allPages.filter((page) => {
101
+ const desc = getDescriptionText(page);
102
+ return desc?.includes(descriptionRef);
103
+ });
104
+ return countStatus(matching, statusProp);
105
+ }
106
+ /** Count children via relation property filter. */
107
+ async function fetchChildrenByRelation(opts) {
108
+ const { ctx, parentPageId, parentProp, statusProp } = opts;
109
+ const result = await queryDatabase({
110
+ ctx,
111
+ filter: {
112
+ property: parentProp,
113
+ relation: { contains: parentPageId },
114
+ },
115
+ });
116
+ if (!result)
117
+ return undefined;
118
+ return countStatus([...result.results], statusProp);
119
+ }
120
+ /** Count total and incomplete pages. */
121
+ function countStatus(pages, statusProp) {
122
+ return {
123
+ total: pages.length,
124
+ incomplete: pages.filter((p) => isPageIncomplete(p, statusProp)).length,
125
+ };
126
+ }
127
+ //# sourceMappingURL=relations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../../src/board/notion/relations/relations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Shortcut REST API functions.
3
+ *
4
+ * Low-level functions for interacting with the Shortcut v3 API.
5
+ * Auth uses `Shortcut-Token` header (no "Bearer" prefix).
6
+ */
7
+ import type { ShortcutWorkflowsResponse } from '../../../schemas/index.js';
8
+ import type { Cached } from '../../../shared/cache/index.js';
9
+ import type { Fetcher } from '../../../shared/http/index.js';
10
+ import type { PingResult } from '../../../types/index.js';
11
+ /** Shortcut REST API v3 endpoint. */
12
+ export declare const SHORTCUT_API = "https://api.app.shortcut.com/api/v3";
13
+ /**
14
+ * Build standard Shortcut API request headers.
15
+ *
16
+ * @param token - The Shortcut API token.
17
+ * @returns Headers object for Shortcut API requests.
18
+ */
19
+ export declare function shortcutHeaders(token: string): Record<string, string>;
20
+ /**
21
+ * Ping the Shortcut API to verify connectivity and credentials.
22
+ *
23
+ * Tries `/member-info` first, falls back to `/workflows` (some
24
+ * token types return 404 on member-info).
25
+ *
26
+ * @param token - The Shortcut API token.
27
+ * @returns Ping result with `ok` and optional `error`.
28
+ */
29
+ export declare function pingShortcut(token: string, fetcher?: Fetcher): Promise<PingResult>;
30
+ /**
31
+ * Fetch all workflows from Shortcut (cached per process).
32
+ *
33
+ * @param token - The Shortcut API token.
34
+ * @param cache - The workflow cache instance.
35
+ * @returns The workflows array, or an empty array on failure.
36
+ */
37
+ export declare function fetchWorkflows(token: string, cache: Cached<ShortcutWorkflowsResponse>, fetcher?: Fetcher): Promise<ShortcutWorkflowsResponse>;
38
+ /** Options for {@link resolveWorkflowStateId}. */
39
+ type ResolveStateOpts = {
40
+ readonly token: string;
41
+ readonly cache: Cached<ShortcutWorkflowsResponse>;
42
+ readonly workflowName?: string;
43
+ readonly fetcher?: Fetcher;
44
+ };
45
+ /**
46
+ * Resolve a workflow state name to its numeric ID.
47
+ *
48
+ * @param stateName - The state name (case-insensitive).
49
+ * @param opts - Token, cache, and optional workflow name.
50
+ * @returns The state ID, or `undefined` if not found.
51
+ */
52
+ export declare function resolveWorkflowStateId(stateName: string, opts: ResolveStateOpts): Promise<number | undefined>;
53
+ /**
54
+ * Resolve all workflow state IDs matching a given type.
55
+ *
56
+ * @param stateType - The state type (e.g., `"unstarted"`, `"done"`).
57
+ * @param opts - Token, cache, and optional workflow name.
58
+ * @returns Array of matching state IDs.
59
+ */
60
+ export declare function resolveWorkflowStateIdsByType(stateType: string, opts: ResolveStateOpts): Promise<readonly number[]>;
61
+ /**
62
+ * Build the set of "done" workflow state IDs.
63
+ *
64
+ * @param token - The Shortcut API token.
65
+ * @param cache - The workflow cache instance.
66
+ * @returns A set of numeric state IDs with type `"done"`.
67
+ */
68
+ export declare function resolveDoneStateIds(token: string, cache: Cached<ShortcutWorkflowsResponse>): Promise<ReadonlySet<number>>;
69
+ /** Shortcut ticket with optional epic and label info. */
70
+ type ShortcutTicket = {
71
+ readonly key: string;
72
+ readonly title: string;
73
+ readonly description: string;
74
+ readonly provider: 'shortcut';
75
+ readonly storyId: number;
76
+ readonly epicId?: number;
77
+ readonly labels?: readonly string[];
78
+ };
79
+ /** Options for {@link fetchStories}. */
80
+ type FetchStoriesOpts = {
81
+ readonly token: string;
82
+ readonly workflowStateIds: readonly number[];
83
+ readonly label?: string;
84
+ readonly excludeHitl?: boolean;
85
+ readonly limit?: number;
86
+ readonly fetcher?: Fetcher;
87
+ };
88
+ /**
89
+ * Fetch candidate stories from Shortcut.
90
+ *
91
+ * @param opts - Token, workflow state IDs, and optional filters.
92
+ * @returns Array of fetched tickets (may be empty).
93
+ */
94
+ export declare function fetchStories(opts: FetchStoriesOpts): Promise<readonly ShortcutTicket[]>;
95
+ /** Options for {@link transitionStory}. */
96
+ type TransitionStoryOpts = {
97
+ readonly token: string;
98
+ readonly storyId: number;
99
+ readonly workflowStateId: number;
100
+ readonly fetcher?: Fetcher;
101
+ };
102
+ /**
103
+ * Transition a Shortcut story to a new workflow state.
104
+ *
105
+ * @param opts - Token, story ID, target state ID, and optional fetcher.
106
+ * @returns `true` if the transition succeeded.
107
+ */
108
+ export declare function transitionStory(opts: TransitionStoryOpts): Promise<boolean>;
109
+ export {};
110
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/board/shortcut/api/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { shortcutMemberInfoResponseSchema, shortcutStorySearchResponseSchema, shortcutWorkflowsResponseSchema, } from '../../../schemas/index.js';
2
+ import { fetchAndParse } from '../../../shared/http/index.js';
3
+ /** Shortcut REST API v3 endpoint. */
4
+ export const SHORTCUT_API = 'https://api.app.shortcut.com/api/v3';
5
+ /**
6
+ * Build standard Shortcut API request headers.
7
+ *
8
+ * @param token - The Shortcut API token.
9
+ * @returns Headers object for Shortcut API requests.
10
+ */
11
+ export function shortcutHeaders(token) {
12
+ return {
13
+ 'Shortcut-Token': token,
14
+ 'Content-Type': 'application/json',
15
+ };
16
+ }
17
+ /**
18
+ * Ping the Shortcut API to verify connectivity and credentials.
19
+ *
20
+ * Tries `/member-info` first, falls back to `/workflows` (some
21
+ * token types return 404 on member-info).
22
+ *
23
+ * @param token - The Shortcut API token.
24
+ * @returns Ping result with `ok` and optional `error`.
25
+ */
26
+ export async function pingShortcut(token, fetcher) {
27
+ const headers = shortcutHeaders(token);
28
+ const doFetch = fetcher ?? fetch;
29
+ const response = await doFetch(`${SHORTCUT_API}/member-info`, { headers })
30
+ .then(async (res) => res.ok ? res : doFetch(`${SHORTCUT_API}/workflows`, { headers }))
31
+ .catch(() => undefined);
32
+ if (!response) {
33
+ return { ok: false, error: '✗ Could not reach Shortcut — check network' };
34
+ }
35
+ if (!response.ok) {
36
+ return response.status === 401 || response.status === 403
37
+ ? {
38
+ ok: false,
39
+ error: '✗ Shortcut auth failed — check SHORTCUT_API_TOKEN',
40
+ }
41
+ : { ok: false, error: `✗ Shortcut API returned HTTP ${response.status}` };
42
+ }
43
+ try {
44
+ const json = await response.json();
45
+ const parsed = shortcutMemberInfoResponseSchema.safeParse(json);
46
+ if (parsed.success && parsed.data.id)
47
+ return { ok: true };
48
+ if (Array.isArray(json))
49
+ return { ok: true };
50
+ }
51
+ catch {
52
+ // Invalid JSON — treat as auth issue
53
+ }
54
+ return {
55
+ ok: false,
56
+ error: '✗ Shortcut auth failed — check SHORTCUT_API_TOKEN',
57
+ };
58
+ }
59
+ /**
60
+ * Fetch all workflows from Shortcut (cached per process).
61
+ *
62
+ * @param token - The Shortcut API token.
63
+ * @param cache - The workflow cache instance.
64
+ * @returns The workflows array, or an empty array on failure.
65
+ */
66
+ export async function fetchWorkflows(token, cache, fetcher) {
67
+ const cached = cache.get();
68
+ if (cached)
69
+ return cached;
70
+ const data = await fetchAndParse(`${SHORTCUT_API}/workflows`, { headers: shortcutHeaders(token) }, {
71
+ schema: shortcutWorkflowsResponseSchema,
72
+ label: 'Shortcut workflows',
73
+ fetcher,
74
+ });
75
+ if (data)
76
+ cache.store(data);
77
+ return data ?? [];
78
+ }
79
+ /**
80
+ * Resolve a workflow state name to its numeric ID.
81
+ *
82
+ * @param stateName - The state name (case-insensitive).
83
+ * @param opts - Token, cache, and optional workflow name.
84
+ * @returns The state ID, or `undefined` if not found.
85
+ */
86
+ export async function resolveWorkflowStateId(stateName, opts) {
87
+ const { token, cache, workflowName, fetcher } = opts;
88
+ const workflows = await fetchWorkflows(token, cache, fetcher);
89
+ const lower = stateName.toLowerCase();
90
+ const matching = workflows
91
+ .filter((wf) => !workflowName || wf.name === workflowName)
92
+ .flatMap((wf) => wf.states)
93
+ .find((s) => s.name.toLowerCase() === lower);
94
+ return matching?.id;
95
+ }
96
+ /**
97
+ * Resolve all workflow state IDs matching a given type.
98
+ *
99
+ * @param stateType - The state type (e.g., `"unstarted"`, `"done"`).
100
+ * @param opts - Token, cache, and optional workflow name.
101
+ * @returns Array of matching state IDs.
102
+ */
103
+ export async function resolveWorkflowStateIdsByType(stateType, opts) {
104
+ const { token, cache, workflowName, fetcher } = opts;
105
+ const workflows = await fetchWorkflows(token, cache, fetcher);
106
+ return workflows.flatMap((wf) => {
107
+ if (workflowName && wf.name !== workflowName)
108
+ return [];
109
+ return wf.states.filter((s) => s.type === stateType).map((s) => s.id);
110
+ });
111
+ }
112
+ /**
113
+ * Build the set of "done" workflow state IDs.
114
+ *
115
+ * @param token - The Shortcut API token.
116
+ * @param cache - The workflow cache instance.
117
+ * @returns A set of numeric state IDs with type `"done"`.
118
+ */
119
+ export async function resolveDoneStateIds(token, cache) {
120
+ const ids = await resolveWorkflowStateIdsByType('done', { token, cache });
121
+ return new Set(ids);
122
+ }
123
+ /** Parse the dual-shape Shortcut search response. */
124
+ function parseSearchResponse(json) {
125
+ const parsed = shortcutStorySearchResponseSchema.safeParse(json);
126
+ if (parsed.success)
127
+ return parsed.data.data;
128
+ // Shortcut may return a bare array instead of { data: [...] }
129
+ if (Array.isArray(json)) {
130
+ const wrapped = shortcutStorySearchResponseSchema.safeParse({ data: json });
131
+ if (wrapped.success)
132
+ return wrapped.data.data;
133
+ }
134
+ return [];
135
+ }
136
+ /** Map a raw story node to a ShortcutTicket. */
137
+ function toShortcutTicket(story) {
138
+ return {
139
+ key: `sc-${String(story.id)}`,
140
+ title: story.name,
141
+ description: story.description ?? '',
142
+ provider: 'shortcut',
143
+ storyId: story.id,
144
+ epicId: story.epic_id ?? undefined,
145
+ labels: story.labels
146
+ ?.map((l) => l.name)
147
+ .filter((n) => Boolean(n)),
148
+ };
149
+ }
150
+ /**
151
+ * Fetch candidate stories from Shortcut.
152
+ *
153
+ * @param opts - Token, workflow state IDs, and optional filters.
154
+ * @returns Array of fetched tickets (may be empty).
155
+ */
156
+ /** Execute the /stories/search POST and parse the response. */
157
+ async function searchStories(token, body, fetcher) {
158
+ const doFetch = fetcher ?? fetch;
159
+ const response = await doFetch(`${SHORTCUT_API}/stories/search`, {
160
+ method: 'POST',
161
+ headers: shortcutHeaders(token),
162
+ body: JSON.stringify(body),
163
+ }).catch((err) => {
164
+ console.warn(`⚠ Shortcut API request failed: ${err instanceof Error ? err.message : String(err)}`);
165
+ return undefined;
166
+ });
167
+ if (!response)
168
+ return [];
169
+ if (!response.ok) {
170
+ const text = await response.text().catch(() => '');
171
+ console.warn(`⚠ Shortcut story search returned HTTP ${response.status} — ${text}`);
172
+ return [];
173
+ }
174
+ const json = await response.json().catch(() => {
175
+ console.warn('⚠ Shortcut API returned invalid JSON');
176
+ return undefined;
177
+ });
178
+ return json === undefined ? [] : parseSearchResponse(json);
179
+ }
180
+ /**
181
+ * Fetch candidate stories from Shortcut.
182
+ *
183
+ * @param opts - Token, workflow state IDs, and optional filters.
184
+ * @returns Array of fetched tickets (may be empty).
185
+ */
186
+ export async function fetchStories(opts) {
187
+ const { token, workflowStateIds, label, excludeHitl, limit = 5 } = opts;
188
+ if (!workflowStateIds.length)
189
+ return [];
190
+ // Shortcut removed workflow_state_id from /stories/search (2026).
191
+ // Filter by label server-side, then by workflow state client-side.
192
+ // archived: false is required — empty body returns no results.
193
+ const stateSet = new Set(workflowStateIds);
194
+ const body = {
195
+ archived: false,
196
+ ...(label ? { label_name: label } : {}),
197
+ };
198
+ const stories = await searchStories(token, body, opts.fetcher);
199
+ // Client-side workflow state filter (was server-side before API change)
200
+ const stateFiltered = stories.filter((s) => s.workflow_state_id !== undefined && stateSet.has(s.workflow_state_id));
201
+ const hitlFiltered = excludeHitl
202
+ ? stateFiltered.filter((s) => !s.labels?.some((l) => l.name === 'clancy:hitl'))
203
+ : stateFiltered;
204
+ return hitlFiltered.slice(0, limit).map(toShortcutTicket);
205
+ }
206
+ /**
207
+ * Transition a Shortcut story to a new workflow state.
208
+ *
209
+ * @param opts - Token, story ID, target state ID, and optional fetcher.
210
+ * @returns `true` if the transition succeeded.
211
+ */
212
+ export async function transitionStory(opts) {
213
+ const { token, storyId, workflowStateId, fetcher } = opts;
214
+ const doFetch = fetcher ?? fetch;
215
+ try {
216
+ const response = await doFetch(`${SHORTCUT_API}/stories/${String(storyId)}`, {
217
+ method: 'PUT',
218
+ headers: shortcutHeaders(token),
219
+ body: JSON.stringify({ workflow_state_id: workflowStateId }),
220
+ });
221
+ return response.ok;
222
+ }
223
+ catch {
224
+ return false;
225
+ }
226
+ }
227
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/board/shortcut/api/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { fetchStories, pingShortcut, resolveDoneStateIds, resolveWorkflowStateId, resolveWorkflowStateIdsByType, SHORTCUT_API, shortcutHeaders, transitionStory, } from './api.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/board/shortcut/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { fetchStories, pingShortcut, resolveDoneStateIds, resolveWorkflowStateId, resolveWorkflowStateIdsByType, SHORTCUT_API, shortcutHeaders, transitionStory, } from './api.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/board/shortcut/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createShortcutBoard } from './shortcut-board.js';
2
+ export { fetchBlockerStatus, fetchChildrenStatus } from './relations/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/board/shortcut/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createShortcutBoard } from './shortcut-board.js';
2
+ export { fetchBlockerStatus, fetchChildrenStatus } from './relations/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/board/shortcut/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addLabel, ensureLabel, parseStoryId, removeLabel } from './labels.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/board/shortcut/labels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addLabel, ensureLabel, parseStoryId, removeLabel } from './labels.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/board/shortcut/labels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Shortcut label operations.
3
+ *
4
+ * Labels are numeric-ID-based. Adding/removing uses read-modify-write
5
+ * via {@link modifyLabelList}. Label list is cached per process via
6
+ * {@link Cached}. Cache is invalidated when a new label is created.
7
+ */
8
+ import type { ShortcutLabelsResponse } from '../../../schemas/index.js';
9
+ import type { Cached } from '../../../shared/cache/index.js';
10
+ import type { Fetcher } from '../../../shared/http/index.js';
11
+ /** Options for {@link fetchLabels}. */
12
+ type FetchLabelsOpts = {
13
+ readonly token: string;
14
+ readonly cache: Cached<ShortcutLabelsResponse>;
15
+ readonly refresh?: boolean;
16
+ readonly fetcher?: Fetcher;
17
+ };
18
+ /**
19
+ * Fetch all labels from Shortcut (cached per process).
20
+ *
21
+ * @param opts - Token, cache, optional refresh flag, and optional fetcher.
22
+ * @returns The labels array, or an empty array on failure.
23
+ */
24
+ export declare function fetchLabels(opts: FetchLabelsOpts): Promise<ShortcutLabelsResponse>;
25
+ /**
26
+ * Create a new label in Shortcut.
27
+ *
28
+ * @param token - The Shortcut API token.
29
+ * @param name - The label name to create.
30
+ * @param fetcher - Optional custom fetch function.
31
+ * @returns The created label's numeric ID, or `undefined` on failure.
32
+ */
33
+ export declare function createLabel(token: string, name: string, fetcher?: Fetcher): Promise<number | undefined>;
34
+ /**
35
+ * Fetch current label IDs for a story.
36
+ *
37
+ * @param token - The Shortcut API token.
38
+ * @param storyId - The story numeric ID.
39
+ * @returns The label IDs array, or `undefined` on failure.
40
+ */
41
+ export declare function getStoryLabelIds(token: string, storyId: number, fetcher?: Fetcher): Promise<readonly number[] | undefined>;
42
+ /** Options for {@link updateStoryLabelIds}. */
43
+ type UpdateStoryLabelsOpts = {
44
+ readonly token: string;
45
+ readonly storyId: number;
46
+ readonly labelIds: readonly number[];
47
+ readonly fetcher?: Fetcher;
48
+ };
49
+ /**
50
+ * Update a story's label IDs.
51
+ *
52
+ * @param opts - Token, story ID, and label IDs array.
53
+ * @returns Resolves when complete (best-effort — never throws).
54
+ */
55
+ export declare function updateStoryLabelIds(opts: UpdateStoryLabelsOpts): Promise<void>;
56
+ /** Options for {@link ensureLabel}. */
57
+ type EnsureLabelOpts = {
58
+ readonly token: string;
59
+ readonly labelCache: Cached<ShortcutLabelsResponse>;
60
+ readonly label: string;
61
+ readonly fetcher?: Fetcher;
62
+ };
63
+ /**
64
+ * Ensure a label exists in Shortcut. Creates it if missing.
65
+ *
66
+ * @param opts - Token, cache, and label name.
67
+ * @returns Resolves when complete (best-effort — never throws).
68
+ */
69
+ export declare function ensureLabel(opts: EnsureLabelOpts): Promise<void>;
70
+ /** Parse a story ID from a Shortcut key (e.g., `'sc-123'` → `123`). */
71
+ export declare function parseStoryId(key: string): number | undefined;
72
+ /** Options for {@link addLabel} and {@link removeLabel}. */
73
+ type ModifyLabelOpts = {
74
+ readonly token: string;
75
+ readonly labelCache: Cached<ShortcutLabelsResponse>;
76
+ readonly issueKey: string;
77
+ readonly label: string;
78
+ readonly fetcher?: Fetcher;
79
+ };
80
+ /**
81
+ * Add a label to a Shortcut story (best-effort).
82
+ *
83
+ * @param opts - Token, cache, issue key, and label name.
84
+ * @returns Resolves when complete (best-effort — never throws).
85
+ */
86
+ export declare function addLabel(opts: ModifyLabelOpts): Promise<void>;
87
+ /**
88
+ * Remove a label from a Shortcut story (best-effort).
89
+ *
90
+ * @param opts - Token, cache, issue key, and label name.
91
+ * @returns Resolves when complete (best-effort — never throws).
92
+ */
93
+ export declare function removeLabel(opts: ModifyLabelOpts): Promise<void>;
94
+ export {};
95
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../../src/board/shortcut/labels/labels.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAYxD,uCAAuC;AACvC,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAajC;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB7B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAYxC;AAED,+CAA+C;AAC/C,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,uCAAuC;AACvC,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE;AAWD,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5D;AAED,4DAA4D;AAC5D,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBnE;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBtE"}