@mastra/factory 0.0.0-aggregate-trace-20261015182851

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 (926) hide show
  1. package/LICENSE.md +32 -0
  2. package/README.md +671 -0
  3. package/dist/auth.d.ts +201 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +623 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/boards/define-board.d.ts +111 -0
  8. package/dist/boards/define-board.d.ts.map +1 -0
  9. package/dist/boards/define-board.js +156 -0
  10. package/dist/boards/define-board.js.map +1 -0
  11. package/dist/boards/index.d.ts +14 -0
  12. package/dist/boards/index.d.ts.map +1 -0
  13. package/dist/boards/index.js +21 -0
  14. package/dist/boards/index.js.map +1 -0
  15. package/dist/boards/registry.d.ts +16 -0
  16. package/dist/boards/registry.d.ts.map +1 -0
  17. package/dist/boards/registry.js +25 -0
  18. package/dist/boards/registry.js.map +1 -0
  19. package/dist/boards/relocate.d.ts +21 -0
  20. package/dist/boards/relocate.d.ts.map +1 -0
  21. package/dist/boards/relocate.js +58 -0
  22. package/dist/boards/relocate.js.map +1 -0
  23. package/dist/boards/review.d.ts +6 -0
  24. package/dist/boards/review.d.ts.map +1 -0
  25. package/dist/boards/review.js +104 -0
  26. package/dist/boards/review.js.map +1 -0
  27. package/dist/boards/semantics.d.ts +68 -0
  28. package/dist/boards/semantics.d.ts.map +1 -0
  29. package/dist/boards/semantics.js +119 -0
  30. package/dist/boards/semantics.js.map +1 -0
  31. package/dist/boards/transition-policy.d.ts +67 -0
  32. package/dist/boards/transition-policy.d.ts.map +1 -0
  33. package/dist/boards/transition-policy.js +36 -0
  34. package/dist/boards/transition-policy.js.map +1 -0
  35. package/dist/boards/work-tool-rules.d.ts +8 -0
  36. package/dist/boards/work-tool-rules.d.ts.map +1 -0
  37. package/dist/boards/work-tool-rules.js +20 -0
  38. package/dist/boards/work-tool-rules.js.map +1 -0
  39. package/dist/boards/work-transition-policy.d.ts +3 -0
  40. package/dist/boards/work-transition-policy.d.ts.map +1 -0
  41. package/dist/boards/work-transition-policy.js +46 -0
  42. package/dist/boards/work-transition-policy.js.map +1 -0
  43. package/dist/boards/work.d.ts +4 -0
  44. package/dist/boards/work.d.ts.map +1 -0
  45. package/dist/boards/work.js +222 -0
  46. package/dist/boards/work.js.map +1 -0
  47. package/dist/capabilities/connection.d.ts +9 -0
  48. package/dist/capabilities/connection.d.ts.map +1 -0
  49. package/dist/capabilities/connection.js +1 -0
  50. package/dist/capabilities/intake.d.ts +153 -0
  51. package/dist/capabilities/intake.d.ts.map +1 -0
  52. package/dist/capabilities/intake.js +1 -0
  53. package/dist/capabilities/version-control.d.ts +268 -0
  54. package/dist/capabilities/version-control.d.ts.map +1 -0
  55. package/dist/capabilities/version-control.js +1 -0
  56. package/dist/environment/build-runner.d.ts +72 -0
  57. package/dist/environment/build-runner.d.ts.map +1 -0
  58. package/dist/environment/build-runner.js +131 -0
  59. package/dist/environment/build-runner.js.map +1 -0
  60. package/dist/environment/build-schedule.d.ts +40 -0
  61. package/dist/environment/build-schedule.d.ts.map +1 -0
  62. package/dist/environment/build-schedule.js +94 -0
  63. package/dist/environment/build-schedule.js.map +1 -0
  64. package/dist/environment/build-workflow.d.ts +62 -0
  65. package/dist/environment/build-workflow.d.ts.map +1 -0
  66. package/dist/environment/build-workflow.js +149 -0
  67. package/dist/environment/build-workflow.js.map +1 -0
  68. package/dist/environment/build.d.ts +111 -0
  69. package/dist/environment/build.d.ts.map +1 -0
  70. package/dist/environment/build.js +344 -0
  71. package/dist/environment/build.js.map +1 -0
  72. package/dist/environment/heads.d.ts +36 -0
  73. package/dist/environment/heads.d.ts.map +1 -0
  74. package/dist/environment/heads.js +60 -0
  75. package/dist/environment/heads.js.map +1 -0
  76. package/dist/factory.d.ts +225 -0
  77. package/dist/factory.d.ts.map +1 -0
  78. package/dist/factory.js +1006 -0
  79. package/dist/factory.js.map +1 -0
  80. package/dist/feed-events.d.ts +13 -0
  81. package/dist/feed-events.d.ts.map +1 -0
  82. package/dist/feed-events.js +25 -0
  83. package/dist/feed-events.js.map +1 -0
  84. package/dist/index.d.ts +22 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +15 -0
  87. package/dist/integrations/base.d.ts +302 -0
  88. package/dist/integrations/base.d.ts.map +1 -0
  89. package/dist/integrations/base.js +1 -0
  90. package/dist/integrations/github/acceptance-labels.d.ts +16 -0
  91. package/dist/integrations/github/acceptance-labels.d.ts.map +1 -0
  92. package/dist/integrations/github/acceptance-labels.js +55 -0
  93. package/dist/integrations/github/acceptance-labels.js.map +1 -0
  94. package/dist/integrations/github/app-identity.d.ts +43 -0
  95. package/dist/integrations/github/app-identity.d.ts.map +1 -0
  96. package/dist/integrations/github/app-identity.js +62 -0
  97. package/dist/integrations/github/app-identity.js.map +1 -0
  98. package/dist/integrations/github/commits.d.ts +40 -0
  99. package/dist/integrations/github/commits.d.ts.map +1 -0
  100. package/dist/integrations/github/commits.js +48 -0
  101. package/dist/integrations/github/commits.js.map +1 -0
  102. package/dist/integrations/github/config.d.ts +60 -0
  103. package/dist/integrations/github/config.d.ts.map +1 -0
  104. package/dist/integrations/github/config.js +42 -0
  105. package/dist/integrations/github/config.js.map +1 -0
  106. package/dist/integrations/github/default-rules.d.ts +218 -0
  107. package/dist/integrations/github/default-rules.d.ts.map +1 -0
  108. package/dist/integrations/github/default-rules.js +296 -0
  109. package/dist/integrations/github/default-rules.js.map +1 -0
  110. package/dist/integrations/github/integration.d.ts +270 -0
  111. package/dist/integrations/github/integration.d.ts.map +1 -0
  112. package/dist/integrations/github/integration.js +1375 -0
  113. package/dist/integrations/github/integration.js.map +1 -0
  114. package/dist/integrations/github/issue-reconciler.d.ts +28 -0
  115. package/dist/integrations/github/issue-reconciler.d.ts.map +1 -0
  116. package/dist/integrations/github/issue-reconciler.js +138 -0
  117. package/dist/integrations/github/issue-reconciler.js.map +1 -0
  118. package/dist/integrations/github/pat.d.ts +38 -0
  119. package/dist/integrations/github/pat.d.ts.map +1 -0
  120. package/dist/integrations/github/pat.js +59 -0
  121. package/dist/integrations/github/pat.js.map +1 -0
  122. package/dist/integrations/github/provenance.d.ts +34 -0
  123. package/dist/integrations/github/provenance.d.ts.map +1 -0
  124. package/dist/integrations/github/provenance.js +91 -0
  125. package/dist/integrations/github/provenance.js.map +1 -0
  126. package/dist/integrations/github/reconcile-worker.d.ts +45 -0
  127. package/dist/integrations/github/reconcile-worker.d.ts.map +1 -0
  128. package/dist/integrations/github/reconcile-worker.js +189 -0
  129. package/dist/integrations/github/reconcile-worker.js.map +1 -0
  130. package/dist/integrations/github/reconciliation-config.d.ts +3 -0
  131. package/dist/integrations/github/reconciliation-config.d.ts.map +1 -0
  132. package/dist/integrations/github/reconciliation-config.js +19 -0
  133. package/dist/integrations/github/reconciliation-config.js.map +1 -0
  134. package/dist/integrations/github/routes.d.ts +90 -0
  135. package/dist/integrations/github/routes.d.ts.map +1 -0
  136. package/dist/integrations/github/routes.js +1362 -0
  137. package/dist/integrations/github/routes.js.map +1 -0
  138. package/dist/integrations/github/rules.d.ts +173 -0
  139. package/dist/integrations/github/rules.d.ts.map +1 -0
  140. package/dist/integrations/github/rules.js +1021 -0
  141. package/dist/integrations/github/rules.js.map +1 -0
  142. package/dist/integrations/github/sandbox-release.d.ts +25 -0
  143. package/dist/integrations/github/sandbox-release.d.ts.map +1 -0
  144. package/dist/integrations/github/sandbox-release.js +38 -0
  145. package/dist/integrations/github/sandbox-release.js.map +1 -0
  146. package/dist/integrations/github/sandbox.d.ts +234 -0
  147. package/dist/integrations/github/sandbox.d.ts.map +1 -0
  148. package/dist/integrations/github/sandbox.js +947 -0
  149. package/dist/integrations/github/sandbox.js.map +1 -0
  150. package/dist/integrations/github/session-subscriptions.d.ts +28 -0
  151. package/dist/integrations/github/session-subscriptions.d.ts.map +1 -0
  152. package/dist/integrations/github/session-subscriptions.js +283 -0
  153. package/dist/integrations/github/session-subscriptions.js.map +1 -0
  154. package/dist/integrations/github/settle-or-abort.d.ts +7 -0
  155. package/dist/integrations/github/settle-or-abort.d.ts.map +1 -0
  156. package/dist/integrations/github/settle-or-abort.js +25 -0
  157. package/dist/integrations/github/settle-or-abort.js.map +1 -0
  158. package/dist/integrations/github/stale-reviews.d.ts +22 -0
  159. package/dist/integrations/github/stale-reviews.d.ts.map +1 -0
  160. package/dist/integrations/github/stale-reviews.js +70 -0
  161. package/dist/integrations/github/stale-reviews.js.map +1 -0
  162. package/dist/integrations/github/subscriptions.d.ts +54 -0
  163. package/dist/integrations/github/subscriptions.d.ts.map +1 -0
  164. package/dist/integrations/github/subscriptions.js +64 -0
  165. package/dist/integrations/github/subscriptions.js.map +1 -0
  166. package/dist/integrations/github/token-refresh.d.ts +31 -0
  167. package/dist/integrations/github/token-refresh.d.ts.map +1 -0
  168. package/dist/integrations/github/token-refresh.js +42 -0
  169. package/dist/integrations/github/token-refresh.js.map +1 -0
  170. package/dist/integrations/github/webhook.d.ts +139 -0
  171. package/dist/integrations/github/webhook.d.ts.map +1 -0
  172. package/dist/integrations/github/webhook.js +432 -0
  173. package/dist/integrations/github/webhook.js.map +1 -0
  174. package/dist/integrations/gitlab/agent-tools.d.ts +14 -0
  175. package/dist/integrations/gitlab/agent-tools.d.ts.map +1 -0
  176. package/dist/integrations/gitlab/agent-tools.js +42 -0
  177. package/dist/integrations/gitlab/agent-tools.js.map +1 -0
  178. package/dist/integrations/gitlab/api.d.ts +222 -0
  179. package/dist/integrations/gitlab/api.d.ts.map +1 -0
  180. package/dist/integrations/gitlab/api.js +274 -0
  181. package/dist/integrations/gitlab/api.js.map +1 -0
  182. package/dist/integrations/gitlab/default-rules.d.ts +125 -0
  183. package/dist/integrations/gitlab/default-rules.d.ts.map +1 -0
  184. package/dist/integrations/gitlab/default-rules.js +180 -0
  185. package/dist/integrations/gitlab/default-rules.js.map +1 -0
  186. package/dist/integrations/gitlab/integration.d.ts +138 -0
  187. package/dist/integrations/gitlab/integration.d.ts.map +1 -0
  188. package/dist/integrations/gitlab/integration.js +705 -0
  189. package/dist/integrations/gitlab/integration.js.map +1 -0
  190. package/dist/integrations/gitlab/issue-reconciler.d.ts +6 -0
  191. package/dist/integrations/gitlab/issue-reconciler.d.ts.map +1 -0
  192. package/dist/integrations/gitlab/issue-reconciler.js +123 -0
  193. package/dist/integrations/gitlab/issue-reconciler.js.map +1 -0
  194. package/dist/integrations/gitlab/merge-request-reconciler.d.ts +6 -0
  195. package/dist/integrations/gitlab/merge-request-reconciler.d.ts.map +1 -0
  196. package/dist/integrations/gitlab/merge-request-reconciler.js +267 -0
  197. package/dist/integrations/gitlab/merge-request-reconciler.js.map +1 -0
  198. package/dist/integrations/gitlab/reconciler.d.ts +5 -0
  199. package/dist/integrations/gitlab/reconciler.d.ts.map +1 -0
  200. package/dist/integrations/gitlab/reconciler.js +31 -0
  201. package/dist/integrations/gitlab/reconciler.js.map +1 -0
  202. package/dist/integrations/gitlab/reconciliation-config.d.ts +3 -0
  203. package/dist/integrations/gitlab/reconciliation-config.d.ts.map +1 -0
  204. package/dist/integrations/gitlab/reconciliation-config.js +17 -0
  205. package/dist/integrations/gitlab/reconciliation-config.js.map +1 -0
  206. package/dist/integrations/gitlab/routes.d.ts +20 -0
  207. package/dist/integrations/gitlab/routes.d.ts.map +1 -0
  208. package/dist/integrations/gitlab/routes.js +474 -0
  209. package/dist/integrations/gitlab/routes.js.map +1 -0
  210. package/dist/integrations/gitlab/rules.d.ts +35 -0
  211. package/dist/integrations/gitlab/rules.d.ts.map +1 -0
  212. package/dist/integrations/gitlab/rules.js +502 -0
  213. package/dist/integrations/gitlab/rules.js.map +1 -0
  214. package/dist/integrations/gitlab/session-subscriptions.d.ts +32 -0
  215. package/dist/integrations/gitlab/session-subscriptions.d.ts.map +1 -0
  216. package/dist/integrations/gitlab/session-subscriptions.js +193 -0
  217. package/dist/integrations/gitlab/session-subscriptions.js.map +1 -0
  218. package/dist/integrations/gitlab/subscriptions.d.ts +70 -0
  219. package/dist/integrations/gitlab/subscriptions.d.ts.map +1 -0
  220. package/dist/integrations/gitlab/subscriptions.js +76 -0
  221. package/dist/integrations/gitlab/subscriptions.js.map +1 -0
  222. package/dist/integrations/gitlab/version-control.d.ts +16 -0
  223. package/dist/integrations/gitlab/version-control.d.ts.map +1 -0
  224. package/dist/integrations/gitlab/version-control.js +621 -0
  225. package/dist/integrations/gitlab/version-control.js.map +1 -0
  226. package/dist/integrations/gitlab/webhook-dispatch.d.ts +75 -0
  227. package/dist/integrations/gitlab/webhook-dispatch.d.ts.map +1 -0
  228. package/dist/integrations/gitlab/webhook-dispatch.js +235 -0
  229. package/dist/integrations/gitlab/webhook-dispatch.js.map +1 -0
  230. package/dist/integrations/gitlab/webhook.d.ts +72 -0
  231. package/dist/integrations/gitlab/webhook.d.ts.map +1 -0
  232. package/dist/integrations/gitlab/webhook.js +201 -0
  233. package/dist/integrations/gitlab/webhook.js.map +1 -0
  234. package/dist/integrations/incidentio/agent-tools.d.ts +49 -0
  235. package/dist/integrations/incidentio/agent-tools.d.ts.map +1 -0
  236. package/dist/integrations/incidentio/agent-tools.js +90 -0
  237. package/dist/integrations/incidentio/agent-tools.js.map +1 -0
  238. package/dist/integrations/incidentio/api.d.ts +400 -0
  239. package/dist/integrations/incidentio/api.d.ts.map +1 -0
  240. package/dist/integrations/incidentio/api.js +192 -0
  241. package/dist/integrations/incidentio/api.js.map +1 -0
  242. package/dist/integrations/incidentio/claim.d.ts +8 -0
  243. package/dist/integrations/incidentio/claim.d.ts.map +1 -0
  244. package/dist/integrations/incidentio/claim.js +14 -0
  245. package/dist/integrations/incidentio/claim.js.map +1 -0
  246. package/dist/integrations/incidentio/default-rules.d.ts +46 -0
  247. package/dist/integrations/incidentio/default-rules.d.ts.map +1 -0
  248. package/dist/integrations/incidentio/default-rules.js +68 -0
  249. package/dist/integrations/incidentio/default-rules.js.map +1 -0
  250. package/dist/integrations/incidentio/intake.d.ts +10 -0
  251. package/dist/integrations/incidentio/intake.d.ts.map +1 -0
  252. package/dist/integrations/incidentio/intake.js +307 -0
  253. package/dist/integrations/incidentio/intake.js.map +1 -0
  254. package/dist/integrations/incidentio/integration.d.ts +63 -0
  255. package/dist/integrations/incidentio/integration.d.ts.map +1 -0
  256. package/dist/integrations/incidentio/integration.js +141 -0
  257. package/dist/integrations/incidentio/integration.js.map +1 -0
  258. package/dist/integrations/incidentio/issue-reconciler.d.ts +10 -0
  259. package/dist/integrations/incidentio/issue-reconciler.d.ts.map +1 -0
  260. package/dist/integrations/incidentio/issue-reconciler.js +75 -0
  261. package/dist/integrations/incidentio/issue-reconciler.js.map +1 -0
  262. package/dist/integrations/incidentio/reconciliation-config.d.ts +3 -0
  263. package/dist/integrations/incidentio/reconciliation-config.d.ts.map +1 -0
  264. package/dist/integrations/incidentio/reconciliation-config.js +17 -0
  265. package/dist/integrations/incidentio/reconciliation-config.js.map +1 -0
  266. package/dist/integrations/incidentio/routes.d.ts +76 -0
  267. package/dist/integrations/incidentio/routes.d.ts.map +1 -0
  268. package/dist/integrations/incidentio/routes.js +249 -0
  269. package/dist/integrations/incidentio/routes.js.map +1 -0
  270. package/dist/integrations/incidentio/rules.d.ts +55 -0
  271. package/dist/integrations/incidentio/rules.d.ts.map +1 -0
  272. package/dist/integrations/incidentio/rules.js +189 -0
  273. package/dist/integrations/incidentio/rules.js.map +1 -0
  274. package/dist/integrations/issue-reconcile-worker.d.ts +19 -0
  275. package/dist/integrations/issue-reconcile-worker.d.ts.map +1 -0
  276. package/dist/integrations/issue-reconcile-worker.js +97 -0
  277. package/dist/integrations/issue-reconcile-worker.js.map +1 -0
  278. package/dist/integrations/issue-reconciler.d.ts +51 -0
  279. package/dist/integrations/issue-reconciler.d.ts.map +1 -0
  280. package/dist/integrations/issue-reconciler.js +158 -0
  281. package/dist/integrations/issue-reconciler.js.map +1 -0
  282. package/dist/integrations/jira/adf.d.ts +26 -0
  283. package/dist/integrations/jira/adf.d.ts.map +1 -0
  284. package/dist/integrations/jira/adf.js +73 -0
  285. package/dist/integrations/jira/adf.js.map +1 -0
  286. package/dist/integrations/jira/agent-tools.d.ts +45 -0
  287. package/dist/integrations/jira/agent-tools.d.ts.map +1 -0
  288. package/dist/integrations/jira/agent-tools.js +87 -0
  289. package/dist/integrations/jira/agent-tools.js.map +1 -0
  290. package/dist/integrations/jira/api.d.ts +157 -0
  291. package/dist/integrations/jira/api.d.ts.map +1 -0
  292. package/dist/integrations/jira/api.js +141 -0
  293. package/dist/integrations/jira/api.js.map +1 -0
  294. package/dist/integrations/jira/claim.d.ts +9 -0
  295. package/dist/integrations/jira/claim.d.ts.map +1 -0
  296. package/dist/integrations/jira/claim.js +15 -0
  297. package/dist/integrations/jira/claim.js.map +1 -0
  298. package/dist/integrations/jira/default-rules.d.ts +47 -0
  299. package/dist/integrations/jira/default-rules.d.ts.map +1 -0
  300. package/dist/integrations/jira/default-rules.js +69 -0
  301. package/dist/integrations/jira/default-rules.js.map +1 -0
  302. package/dist/integrations/jira/integration.d.ts +114 -0
  303. package/dist/integrations/jira/integration.d.ts.map +1 -0
  304. package/dist/integrations/jira/integration.js +407 -0
  305. package/dist/integrations/jira/integration.js.map +1 -0
  306. package/dist/integrations/jira/issue-reconciler.d.ts +10 -0
  307. package/dist/integrations/jira/issue-reconciler.d.ts.map +1 -0
  308. package/dist/integrations/jira/issue-reconciler.js +70 -0
  309. package/dist/integrations/jira/issue-reconciler.js.map +1 -0
  310. package/dist/integrations/jira/reconciliation-config.d.ts +3 -0
  311. package/dist/integrations/jira/reconciliation-config.d.ts.map +1 -0
  312. package/dist/integrations/jira/reconciliation-config.js +17 -0
  313. package/dist/integrations/jira/reconciliation-config.js.map +1 -0
  314. package/dist/integrations/jira/routes.d.ts +54 -0
  315. package/dist/integrations/jira/routes.d.ts.map +1 -0
  316. package/dist/integrations/jira/routes.js +260 -0
  317. package/dist/integrations/jira/routes.js.map +1 -0
  318. package/dist/integrations/jira/rules.d.ts +57 -0
  319. package/dist/integrations/jira/rules.d.ts.map +1 -0
  320. package/dist/integrations/jira/rules.js +189 -0
  321. package/dist/integrations/jira/rules.js.map +1 -0
  322. package/dist/integrations/linear/agent-tools.d.ts +34 -0
  323. package/dist/integrations/linear/agent-tools.d.ts.map +1 -0
  324. package/dist/integrations/linear/agent-tools.js +87 -0
  325. package/dist/integrations/linear/agent-tools.js.map +1 -0
  326. package/dist/integrations/linear/claim.d.ts +8 -0
  327. package/dist/integrations/linear/claim.d.ts.map +1 -0
  328. package/dist/integrations/linear/claim.js +14 -0
  329. package/dist/integrations/linear/claim.js.map +1 -0
  330. package/dist/integrations/linear/default-rules.d.ts +46 -0
  331. package/dist/integrations/linear/default-rules.d.ts.map +1 -0
  332. package/dist/integrations/linear/default-rules.js +70 -0
  333. package/dist/integrations/linear/default-rules.js.map +1 -0
  334. package/dist/integrations/linear/integration.d.ts +260 -0
  335. package/dist/integrations/linear/integration.d.ts.map +1 -0
  336. package/dist/integrations/linear/integration.js +900 -0
  337. package/dist/integrations/linear/integration.js.map +1 -0
  338. package/dist/integrations/linear/issue-reconciler.d.ts +8 -0
  339. package/dist/integrations/linear/issue-reconciler.d.ts.map +1 -0
  340. package/dist/integrations/linear/issue-reconciler.js +73 -0
  341. package/dist/integrations/linear/issue-reconciler.js.map +1 -0
  342. package/dist/integrations/linear/reconciliation-config.d.ts +3 -0
  343. package/dist/integrations/linear/reconciliation-config.d.ts.map +1 -0
  344. package/dist/integrations/linear/reconciliation-config.js +21 -0
  345. package/dist/integrations/linear/reconciliation-config.js.map +1 -0
  346. package/dist/integrations/linear/routes.d.ts +81 -0
  347. package/dist/integrations/linear/routes.d.ts.map +1 -0
  348. package/dist/integrations/linear/routes.js +380 -0
  349. package/dist/integrations/linear/routes.js.map +1 -0
  350. package/dist/integrations/linear/rules.d.ts +54 -0
  351. package/dist/integrations/linear/rules.d.ts.map +1 -0
  352. package/dist/integrations/linear/rules.js +189 -0
  353. package/dist/integrations/linear/rules.js.map +1 -0
  354. package/dist/integrations/linear/storage.d.ts +65 -0
  355. package/dist/integrations/linear/storage.d.ts.map +1 -0
  356. package/dist/integrations/linear/storage.js +1 -0
  357. package/dist/integrations/platform/api-client.d.ts +26 -0
  358. package/dist/integrations/platform/api-client.d.ts.map +1 -0
  359. package/dist/integrations/platform/api-client.js +177 -0
  360. package/dist/integrations/platform/api-client.js.map +1 -0
  361. package/dist/integrations/platform/connect/routes.d.ts +39 -0
  362. package/dist/integrations/platform/connect/routes.d.ts.map +1 -0
  363. package/dist/integrations/platform/connect/routes.js +133 -0
  364. package/dist/integrations/platform/connect/routes.js.map +1 -0
  365. package/dist/integrations/platform/github/event-worker.d.ts +58 -0
  366. package/dist/integrations/platform/github/event-worker.d.ts.map +1 -0
  367. package/dist/integrations/platform/github/event-worker.js +449 -0
  368. package/dist/integrations/platform/github/event-worker.js.map +1 -0
  369. package/dist/integrations/platform/github/integration.d.ts +89 -0
  370. package/dist/integrations/platform/github/integration.d.ts.map +1 -0
  371. package/dist/integrations/platform/github/integration.js +1266 -0
  372. package/dist/integrations/platform/github/integration.js.map +1 -0
  373. package/dist/integrations/platform/gitlab/event-worker.d.ts +64 -0
  374. package/dist/integrations/platform/gitlab/event-worker.d.ts.map +1 -0
  375. package/dist/integrations/platform/gitlab/event-worker.js +305 -0
  376. package/dist/integrations/platform/gitlab/event-worker.js.map +1 -0
  377. package/dist/integrations/platform/gitlab/integration.d.ts +57 -0
  378. package/dist/integrations/platform/gitlab/integration.d.ts.map +1 -0
  379. package/dist/integrations/platform/gitlab/integration.js +113 -0
  380. package/dist/integrations/platform/gitlab/integration.js.map +1 -0
  381. package/dist/integrations/platform/incidentio/integration.d.ts +74 -0
  382. package/dist/integrations/platform/incidentio/integration.d.ts.map +1 -0
  383. package/dist/integrations/platform/incidentio/integration.js +406 -0
  384. package/dist/integrations/platform/incidentio/integration.js.map +1 -0
  385. package/dist/integrations/platform/jira/agent-tools.d.ts +36 -0
  386. package/dist/integrations/platform/jira/agent-tools.d.ts.map +1 -0
  387. package/dist/integrations/platform/jira/agent-tools.js +85 -0
  388. package/dist/integrations/platform/jira/agent-tools.js.map +1 -0
  389. package/dist/integrations/platform/jira/integration.d.ts +65 -0
  390. package/dist/integrations/platform/jira/integration.d.ts.map +1 -0
  391. package/dist/integrations/platform/jira/integration.js +546 -0
  392. package/dist/integrations/platform/jira/integration.js.map +1 -0
  393. package/dist/integrations/platform/jira/routes.d.ts +55 -0
  394. package/dist/integrations/platform/jira/routes.d.ts.map +1 -0
  395. package/dist/integrations/platform/jira/routes.js +274 -0
  396. package/dist/integrations/platform/jira/routes.js.map +1 -0
  397. package/dist/integrations/platform/linear/event-worker.d.ts +105 -0
  398. package/dist/integrations/platform/linear/event-worker.d.ts.map +1 -0
  399. package/dist/integrations/platform/linear/event-worker.js +379 -0
  400. package/dist/integrations/platform/linear/event-worker.js.map +1 -0
  401. package/dist/integrations/platform/linear/integration.d.ts +92 -0
  402. package/dist/integrations/platform/linear/integration.d.ts.map +1 -0
  403. package/dist/integrations/platform/linear/integration.js +754 -0
  404. package/dist/integrations/platform/linear/integration.js.map +1 -0
  405. package/dist/integrations/pull-request-head.d.ts +18 -0
  406. package/dist/integrations/pull-request-head.d.ts.map +1 -0
  407. package/dist/integrations/pull-request-head.js +45 -0
  408. package/dist/integrations/pull-request-head.js.map +1 -0
  409. package/dist/integrations/reconciliation-config.d.ts +3 -0
  410. package/dist/integrations/reconciliation-config.d.ts.map +1 -0
  411. package/dist/integrations/reconciliation-config.js +16 -0
  412. package/dist/integrations/reconciliation-config.js.map +1 -0
  413. package/dist/integrations/slack/connect-route.d.ts +46 -0
  414. package/dist/integrations/slack/connect-route.d.ts.map +1 -0
  415. package/dist/integrations/slack/connect-route.js +186 -0
  416. package/dist/integrations/slack/connect-route.js.map +1 -0
  417. package/dist/integrations/slack/emoji-shortcodes.generated.d.ts +8 -0
  418. package/dist/integrations/slack/emoji-shortcodes.generated.d.ts.map +1 -0
  419. package/dist/integrations/slack/emoji-shortcodes.generated.js +1985 -0
  420. package/dist/integrations/slack/emoji-shortcodes.generated.js.map +1 -0
  421. package/dist/integrations/slack/emoji.d.ts +3 -0
  422. package/dist/integrations/slack/emoji.d.ts.map +1 -0
  423. package/dist/integrations/slack/emoji.js +12 -0
  424. package/dist/integrations/slack/emoji.js.map +1 -0
  425. package/dist/integrations/slack/feed-publisher.d.ts +26 -0
  426. package/dist/integrations/slack/feed-publisher.d.ts.map +1 -0
  427. package/dist/integrations/slack/feed-publisher.js +44 -0
  428. package/dist/integrations/slack/feed-publisher.js.map +1 -0
  429. package/dist/integrations/slack/integration.d.ts +80 -0
  430. package/dist/integrations/slack/integration.d.ts.map +1 -0
  431. package/dist/integrations/slack/integration.js +93 -0
  432. package/dist/integrations/slack/integration.js.map +1 -0
  433. package/dist/integrations/slack/slack.d.ts +205 -0
  434. package/dist/integrations/slack/slack.d.ts.map +1 -0
  435. package/dist/integrations/slack/slack.js +653 -0
  436. package/dist/integrations/slack/slack.js.map +1 -0
  437. package/dist/integrations/subscription-session.d.ts +49 -0
  438. package/dist/integrations/subscription-session.d.ts.map +1 -0
  439. package/dist/integrations/subscription-session.js +103 -0
  440. package/dist/integrations/subscription-session.js.map +1 -0
  441. package/dist/integrations/workos/integration.d.ts +39 -0
  442. package/dist/integrations/workos/integration.d.ts.map +1 -0
  443. package/dist/integrations/workos/integration.js +91 -0
  444. package/dist/integrations/workos/integration.js.map +1 -0
  445. package/dist/packages/_internals/workspace/dist/index.js +48 -0
  446. package/dist/packages/_internals/workspace/dist/index.js.map +1 -0
  447. package/dist/platform-auth-host.d.ts +4 -0
  448. package/dist/platform-auth-host.d.ts.map +1 -0
  449. package/dist/platform-auth-host.js +18 -0
  450. package/dist/platform-auth-host.js.map +1 -0
  451. package/dist/review-verdict.d.ts +6 -0
  452. package/dist/review-verdict.d.ts.map +1 -0
  453. package/dist/review-verdict.js +14 -0
  454. package/dist/review-verdict.js.map +1 -0
  455. package/dist/routes/attention-activity.d.ts +23 -0
  456. package/dist/routes/attention-activity.d.ts.map +1 -0
  457. package/dist/routes/attention-activity.js +152 -0
  458. package/dist/routes/attention-activity.js.map +1 -0
  459. package/dist/routes/attention-parked.d.ts +22 -0
  460. package/dist/routes/attention-parked.d.ts.map +1 -0
  461. package/dist/routes/attention-parked.js +136 -0
  462. package/dist/routes/attention-parked.js.map +1 -0
  463. package/dist/routes/attention-proposed.d.ts +3 -0
  464. package/dist/routes/attention-proposed.d.ts.map +1 -0
  465. package/dist/routes/attention-proposed.js +21 -0
  466. package/dist/routes/attention-proposed.js.map +1 -0
  467. package/dist/routes/attention-providers.d.ts +159 -0
  468. package/dist/routes/attention-providers.d.ts.map +1 -0
  469. package/dist/routes/attention-providers.js +524 -0
  470. package/dist/routes/attention-providers.js.map +1 -0
  471. package/dist/routes/attention.d.ts +23 -0
  472. package/dist/routes/attention.d.ts.map +1 -0
  473. package/dist/routes/attention.js +219 -0
  474. package/dist/routes/attention.js.map +1 -0
  475. package/dist/routes/automation-runs.d.ts +37 -0
  476. package/dist/routes/automation-runs.d.ts.map +1 -0
  477. package/dist/routes/automation-runs.js +196 -0
  478. package/dist/routes/automation-runs.js.map +1 -0
  479. package/dist/routes/config.d.ts +238 -0
  480. package/dist/routes/config.d.ts.map +1 -0
  481. package/dist/routes/config.js +1011 -0
  482. package/dist/routes/config.js.map +1 -0
  483. package/dist/routes/contracts.d.ts +1080 -0
  484. package/dist/routes/contracts.d.ts.map +1 -0
  485. package/dist/routes/contracts.js +673 -0
  486. package/dist/routes/contracts.js.map +1 -0
  487. package/dist/routes/custom-provider-source.d.ts +52 -0
  488. package/dist/routes/custom-provider-source.d.ts.map +1 -0
  489. package/dist/routes/custom-provider-source.js +124 -0
  490. package/dist/routes/custom-provider-source.js.map +1 -0
  491. package/dist/routes/fs.d.ts +189 -0
  492. package/dist/routes/fs.d.ts.map +1 -0
  493. package/dist/routes/fs.js +916 -0
  494. package/dist/routes/fs.js.map +1 -0
  495. package/dist/routes/intake.d.ts +64 -0
  496. package/dist/routes/intake.d.ts.map +1 -0
  497. package/dist/routes/intake.js +627 -0
  498. package/dist/routes/intake.js.map +1 -0
  499. package/dist/routes/knowledge.d.ts +247 -0
  500. package/dist/routes/knowledge.d.ts.map +1 -0
  501. package/dist/routes/knowledge.js +1128 -0
  502. package/dist/routes/knowledge.js.map +1 -0
  503. package/dist/routes/oauth.d.ts +43 -0
  504. package/dist/routes/oauth.d.ts.map +1 -0
  505. package/dist/routes/oauth.js +477 -0
  506. package/dist/routes/oauth.js.map +1 -0
  507. package/dist/routes/projects.d.ts +68 -0
  508. package/dist/routes/projects.d.ts.map +1 -0
  509. package/dist/routes/projects.js +919 -0
  510. package/dist/routes/projects.js.map +1 -0
  511. package/dist/routes/provider-credentials.d.ts +82 -0
  512. package/dist/routes/provider-credentials.d.ts.map +1 -0
  513. package/dist/routes/provider-credentials.js +80 -0
  514. package/dist/routes/provider-credentials.js.map +1 -0
  515. package/dist/routes/route.d.ts +48 -0
  516. package/dist/routes/route.d.ts.map +1 -0
  517. package/dist/routes/route.js +15 -0
  518. package/dist/routes/route.js.map +1 -0
  519. package/dist/routes/skills.d.ts +30 -0
  520. package/dist/routes/skills.d.ts.map +1 -0
  521. package/dist/routes/skills.js +198 -0
  522. package/dist/routes/skills.js.map +1 -0
  523. package/dist/routes/source-control-sessions.d.ts +22 -0
  524. package/dist/routes/source-control-sessions.d.ts.map +1 -0
  525. package/dist/routes/source-control-sessions.js +356 -0
  526. package/dist/routes/source-control-sessions.js.map +1 -0
  527. package/dist/routes/source-control-settings.d.ts +10 -0
  528. package/dist/routes/source-control-settings.d.ts.map +1 -0
  529. package/dist/routes/source-control-settings.js +87 -0
  530. package/dist/routes/source-control-settings.js.map +1 -0
  531. package/dist/routes/supervisor.d.ts +25 -0
  532. package/dist/routes/supervisor.d.ts.map +1 -0
  533. package/dist/routes/supervisor.js +35 -0
  534. package/dist/routes/supervisor.js.map +1 -0
  535. package/dist/routes/surface.d.ts +133 -0
  536. package/dist/routes/surface.d.ts.map +1 -0
  537. package/dist/routes/surface.js +518 -0
  538. package/dist/routes/surface.js.map +1 -0
  539. package/dist/routes/telemetry.d.ts +13 -0
  540. package/dist/routes/telemetry.d.ts.map +1 -0
  541. package/dist/routes/telemetry.js +60 -0
  542. package/dist/routes/telemetry.js.map +1 -0
  543. package/dist/routes/tenant-credentials.d.ts +87 -0
  544. package/dist/routes/tenant-credentials.d.ts.map +1 -0
  545. package/dist/routes/tenant-credentials.js +219 -0
  546. package/dist/routes/tenant-credentials.js.map +1 -0
  547. package/dist/routes/work-items.d.ts +49 -0
  548. package/dist/routes/work-items.d.ts.map +1 -0
  549. package/dist/routes/work-items.js +633 -0
  550. package/dist/routes/work-items.js.map +1 -0
  551. package/dist/rules/binding-context.d.ts +59 -0
  552. package/dist/rules/binding-context.d.ts.map +1 -0
  553. package/dist/rules/binding-context.js +134 -0
  554. package/dist/rules/binding-context.js.map +1 -0
  555. package/dist/rules/decision-applicability.d.ts +32 -0
  556. package/dist/rules/decision-applicability.d.ts.map +1 -0
  557. package/dist/rules/decision-applicability.js +56 -0
  558. package/dist/rules/decision-applicability.js.map +1 -0
  559. package/dist/rules/dispatch-errors.d.ts +13 -0
  560. package/dist/rules/dispatch-errors.d.ts.map +1 -0
  561. package/dist/rules/dispatch-errors.js +105 -0
  562. package/dist/rules/dispatch-errors.js.map +1 -0
  563. package/dist/rules/dispatcher.d.ts +86 -0
  564. package/dist/rules/dispatcher.d.ts.map +1 -0
  565. package/dist/rules/dispatcher.js +1159 -0
  566. package/dist/rules/dispatcher.js.map +1 -0
  567. package/dist/rules/event-rules.d.ts +23 -0
  568. package/dist/rules/event-rules.d.ts.map +1 -0
  569. package/dist/rules/event-rules.js +46 -0
  570. package/dist/rules/event-rules.js.map +1 -0
  571. package/dist/rules/index.d.ts +6 -0
  572. package/dist/rules/index.d.ts.map +1 -0
  573. package/dist/rules/index.js +4 -0
  574. package/dist/rules/processor.d.ts +90 -0
  575. package/dist/rules/processor.d.ts.map +1 -0
  576. package/dist/rules/processor.js +486 -0
  577. package/dist/rules/processor.js.map +1 -0
  578. package/dist/rules/resolve.d.ts +15 -0
  579. package/dist/rules/resolve.d.ts.map +1 -0
  580. package/dist/rules/resolve.js +23 -0
  581. package/dist/rules/resolve.js.map +1 -0
  582. package/dist/rules/review-source-tool.d.ts +105 -0
  583. package/dist/rules/review-source-tool.d.ts.map +1 -0
  584. package/dist/rules/review-source-tool.js +109 -0
  585. package/dist/rules/review-source-tool.js.map +1 -0
  586. package/dist/rules/start-coordinator.d.ts +64 -0
  587. package/dist/rules/start-coordinator.d.ts.map +1 -0
  588. package/dist/rules/start-coordinator.js +246 -0
  589. package/dist/rules/start-coordinator.js.map +1 -0
  590. package/dist/rules/terminal-cleanup.d.ts +38 -0
  591. package/dist/rules/terminal-cleanup.d.ts.map +1 -0
  592. package/dist/rules/terminal-cleanup.js +68 -0
  593. package/dist/rules/terminal-cleanup.js.map +1 -0
  594. package/dist/rules/tools.d.ts +15 -0
  595. package/dist/rules/tools.d.ts.map +1 -0
  596. package/dist/rules/tools.js +185 -0
  597. package/dist/rules/tools.js.map +1 -0
  598. package/dist/rules/transition-service.d.ts +93 -0
  599. package/dist/rules/transition-service.d.ts.map +1 -0
  600. package/dist/rules/transition-service.js +402 -0
  601. package/dist/rules/transition-service.js.map +1 -0
  602. package/dist/rules/types.d.ts +553 -0
  603. package/dist/rules/types.d.ts.map +1 -0
  604. package/dist/rules/types.js +154 -0
  605. package/dist/rules/types.js.map +1 -0
  606. package/dist/rules/validation.d.ts +21 -0
  607. package/dist/rules/validation.d.ts.map +1 -0
  608. package/dist/rules/validation.js +327 -0
  609. package/dist/rules/validation.js.map +1 -0
  610. package/dist/sandbox/callback-factory-sandbox.d.ts +15 -0
  611. package/dist/sandbox/callback-factory-sandbox.d.ts.map +1 -0
  612. package/dist/sandbox/callback-factory-sandbox.js +22 -0
  613. package/dist/sandbox/callback-factory-sandbox.js.map +1 -0
  614. package/dist/sandbox/git-ref.d.ts +7 -0
  615. package/dist/sandbox/git-ref.d.ts.map +1 -0
  616. package/dist/sandbox/git-ref.js +15 -0
  617. package/dist/sandbox/git-ref.js.map +1 -0
  618. package/dist/sandbox/local-factory-sandbox.d.ts +20 -0
  619. package/dist/sandbox/local-factory-sandbox.d.ts.map +1 -0
  620. package/dist/sandbox/local-factory-sandbox.js +27 -0
  621. package/dist/sandbox/local-factory-sandbox.js.map +1 -0
  622. package/dist/sandbox/materialization.d.ts +41 -0
  623. package/dist/sandbox/materialization.d.ts.map +1 -0
  624. package/dist/sandbox/materialization.js +18 -0
  625. package/dist/sandbox/materialization.js.map +1 -0
  626. package/dist/sandbox/session-retirement.d.ts +45 -0
  627. package/dist/sandbox/session-retirement.d.ts.map +1 -0
  628. package/dist/sandbox/session-retirement.js +153 -0
  629. package/dist/sandbox/session-retirement.js.map +1 -0
  630. package/dist/sandbox/session-sandbox.d.ts +185 -0
  631. package/dist/sandbox/session-sandbox.d.ts.map +1 -0
  632. package/dist/sandbox/session-sandbox.js +248 -0
  633. package/dist/sandbox/session-sandbox.js.map +1 -0
  634. package/dist/sandbox/workdir.d.ts +45 -0
  635. package/dist/sandbox/workdir.d.ts.map +1 -0
  636. package/dist/sandbox/workdir.js +64 -0
  637. package/dist/sandbox/workdir.js.map +1 -0
  638. package/dist/secret-encryption.d.ts +25 -0
  639. package/dist/secret-encryption.d.ts.map +1 -0
  640. package/dist/secret-encryption.js +107 -0
  641. package/dist/secret-encryption.js.map +1 -0
  642. package/dist/server-error.d.ts +12 -0
  643. package/dist/server-error.d.ts.map +1 -0
  644. package/dist/server-error.js +16 -0
  645. package/dist/server-error.js.map +1 -0
  646. package/dist/session/credential-policy.d.ts +20 -0
  647. package/dist/session/credential-policy.d.ts.map +1 -0
  648. package/dist/session/credential-policy.js +70 -0
  649. package/dist/session/credential-policy.js.map +1 -0
  650. package/dist/session/default-model-hydration.d.ts +46 -0
  651. package/dist/session/default-model-hydration.d.ts.map +1 -0
  652. package/dist/session/default-model-hydration.js +85 -0
  653. package/dist/session/default-model-hydration.js.map +1 -0
  654. package/dist/session/environment-repositories.d.ts +31 -0
  655. package/dist/session/environment-repositories.d.ts.map +1 -0
  656. package/dist/session/environment-repositories.js +89 -0
  657. package/dist/session/environment-repositories.js.map +1 -0
  658. package/dist/session/environment-state-processor.d.ts +59 -0
  659. package/dist/session/environment-state-processor.d.ts.map +1 -0
  660. package/dist/session/environment-state-processor.js +105 -0
  661. package/dist/session/environment-state-processor.js.map +1 -0
  662. package/dist/session/factory-session.d.ts +159 -0
  663. package/dist/session/factory-session.d.ts.map +1 -0
  664. package/dist/session/factory-session.js +226 -0
  665. package/dist/session/factory-session.js.map +1 -0
  666. package/dist/session/filesystem-capture.d.ts +50 -0
  667. package/dist/session/filesystem-capture.d.ts.map +1 -0
  668. package/dist/session/filesystem-capture.js +231 -0
  669. package/dist/session/filesystem-capture.js.map +1 -0
  670. package/dist/session/first-exec-capture.d.ts +38 -0
  671. package/dist/session/first-exec-capture.d.ts.map +1 -0
  672. package/dist/session/first-exec-capture.js +91 -0
  673. package/dist/session/first-exec-capture.js.map +1 -0
  674. package/dist/session/first-message-capture.d.ts +33 -0
  675. package/dist/session/first-message-capture.d.ts.map +1 -0
  676. package/dist/session/first-message-capture.js +35 -0
  677. package/dist/session/first-message-capture.js.map +1 -0
  678. package/dist/session/live-sessions.d.ts +63 -0
  679. package/dist/session/live-sessions.d.ts.map +1 -0
  680. package/dist/session/live-sessions.js +90 -0
  681. package/dist/session/live-sessions.js.map +1 -0
  682. package/dist/session/memory-settings-hydration.d.ts +36 -0
  683. package/dist/session/memory-settings-hydration.d.ts.map +1 -0
  684. package/dist/session/memory-settings-hydration.js +43 -0
  685. package/dist/session/memory-settings-hydration.js.map +1 -0
  686. package/dist/session/org-seed.d.ts +67 -0
  687. package/dist/session/org-seed.d.ts.map +1 -0
  688. package/dist/session/org-seed.js +53 -0
  689. package/dist/session/org-seed.js.map +1 -0
  690. package/dist/session/run-audit.d.ts +54 -0
  691. package/dist/session/run-audit.d.ts.map +1 -0
  692. package/dist/session/run-audit.js +124 -0
  693. package/dist/session/run-audit.js.map +1 -0
  694. package/dist/session/session-title.d.ts +7 -0
  695. package/dist/session/session-title.d.ts.map +1 -0
  696. package/dist/session/session-title.js +14 -0
  697. package/dist/session/session-title.js.map +1 -0
  698. package/dist/session/shell-commands.d.ts +5 -0
  699. package/dist/session/shell-commands.d.ts.map +1 -0
  700. package/dist/session/shell-commands.js +25 -0
  701. package/dist/session/shell-commands.js.map +1 -0
  702. package/dist/session/source-control-tools.d.ts +25 -0
  703. package/dist/session/source-control-tools.d.ts.map +1 -0
  704. package/dist/session/source-control-tools.js +594 -0
  705. package/dist/session/source-control-tools.js.map +1 -0
  706. package/dist/session/thread-title-mirror.d.ts +35 -0
  707. package/dist/session/thread-title-mirror.d.ts.map +1 -0
  708. package/dist/session/thread-title-mirror.js +51 -0
  709. package/dist/session/thread-title-mirror.js.map +1 -0
  710. package/dist/session/work-item-repository.d.ts +21 -0
  711. package/dist/session/work-item-repository.d.ts.map +1 -0
  712. package/dist/session/work-item-repository.js +113 -0
  713. package/dist/session/work-item-repository.js.map +1 -0
  714. package/dist/skills/catalog.d.ts +14 -0
  715. package/dist/skills/catalog.d.ts.map +1 -0
  716. package/dist/skills/catalog.js +62 -0
  717. package/dist/skills/catalog.js.map +1 -0
  718. package/dist/skills/service.d.ts +70 -0
  719. package/dist/skills/service.d.ts.map +1 -0
  720. package/dist/skills/service.js +88 -0
  721. package/dist/skills/service.js.map +1 -0
  722. package/dist/spa-static.d.ts +33 -0
  723. package/dist/spa-static.d.ts.map +1 -0
  724. package/dist/spa-static.js +104 -0
  725. package/dist/spa-static.js.map +1 -0
  726. package/dist/state-signing.d.ts +59 -0
  727. package/dist/state-signing.d.ts.map +1 -0
  728. package/dist/state-signing.js +83 -0
  729. package/dist/state-signing.js.map +1 -0
  730. package/dist/storage/domains/audit/actions.d.ts +24 -0
  731. package/dist/storage/domains/audit/actions.d.ts.map +1 -0
  732. package/dist/storage/domains/audit/actions.js +69 -0
  733. package/dist/storage/domains/audit/actions.js.map +1 -0
  734. package/dist/storage/domains/audit/actors.d.ts +5 -0
  735. package/dist/storage/domains/audit/actors.d.ts.map +1 -0
  736. package/dist/storage/domains/audit/actors.js +25 -0
  737. package/dist/storage/domains/audit/actors.js.map +1 -0
  738. package/dist/storage/domains/audit/agent-audit.d.ts +30 -0
  739. package/dist/storage/domains/audit/agent-audit.d.ts.map +1 -0
  740. package/dist/storage/domains/audit/agent-audit.js +93 -0
  741. package/dist/storage/domains/audit/agent-audit.js.map +1 -0
  742. package/dist/storage/domains/audit/base.d.ts +133 -0
  743. package/dist/storage/domains/audit/base.d.ts.map +1 -0
  744. package/dist/storage/domains/audit/base.js +206 -0
  745. package/dist/storage/domains/audit/base.js.map +1 -0
  746. package/dist/storage/domains/audit/domain.d.ts +79 -0
  747. package/dist/storage/domains/audit/domain.d.ts.map +1 -0
  748. package/dist/storage/domains/audit/domain.js +248 -0
  749. package/dist/storage/domains/audit/domain.js.map +1 -0
  750. package/dist/storage/domains/audit/wire.d.ts +24 -0
  751. package/dist/storage/domains/audit/wire.d.ts.map +1 -0
  752. package/dist/storage/domains/audit/wire.js +16 -0
  753. package/dist/storage/domains/audit/wire.js.map +1 -0
  754. package/dist/storage/domains/channel-identity/base.d.ts +100 -0
  755. package/dist/storage/domains/channel-identity/base.d.ts.map +1 -0
  756. package/dist/storage/domains/channel-identity/base.js +164 -0
  757. package/dist/storage/domains/channel-identity/base.js.map +1 -0
  758. package/dist/storage/domains/comments/activity.d.ts +40 -0
  759. package/dist/storage/domains/comments/activity.d.ts.map +1 -0
  760. package/dist/storage/domains/comments/activity.js +94 -0
  761. package/dist/storage/domains/comments/activity.js.map +1 -0
  762. package/dist/storage/domains/comments/actor.d.ts +51 -0
  763. package/dist/storage/domains/comments/actor.d.ts.map +1 -0
  764. package/dist/storage/domains/comments/actor.js +38 -0
  765. package/dist/storage/domains/comments/actor.js.map +1 -0
  766. package/dist/storage/domains/comments/base.d.ts +245 -0
  767. package/dist/storage/domains/comments/base.d.ts.map +1 -0
  768. package/dist/storage/domains/comments/base.js +533 -0
  769. package/dist/storage/domains/comments/base.js.map +1 -0
  770. package/dist/storage/domains/comments/domain.d.ts +135 -0
  771. package/dist/storage/domains/comments/domain.d.ts.map +1 -0
  772. package/dist/storage/domains/comments/domain.js +285 -0
  773. package/dist/storage/domains/comments/domain.js.map +1 -0
  774. package/dist/storage/domains/comments/feed-context.d.ts +22 -0
  775. package/dist/storage/domains/comments/feed-context.d.ts.map +1 -0
  776. package/dist/storage/domains/comments/feed-context.js +89 -0
  777. package/dist/storage/domains/comments/feed-context.js.map +1 -0
  778. package/dist/storage/domains/comments/feed-sync.d.ts +21 -0
  779. package/dist/storage/domains/comments/feed-sync.d.ts.map +1 -0
  780. package/dist/storage/domains/comments/feed-sync.js +1 -0
  781. package/dist/storage/domains/comments/parse.d.ts +23 -0
  782. package/dist/storage/domains/comments/parse.d.ts.map +1 -0
  783. package/dist/storage/domains/comments/parse.js +90 -0
  784. package/dist/storage/domains/comments/parse.js.map +1 -0
  785. package/dist/storage/domains/comments/routes.d.ts +24 -0
  786. package/dist/storage/domains/comments/routes.d.ts.map +1 -0
  787. package/dist/storage/domains/comments/routes.js +302 -0
  788. package/dist/storage/domains/comments/routes.js.map +1 -0
  789. package/dist/storage/domains/comments/schema.d.ts +5 -0
  790. package/dist/storage/domains/comments/schema.d.ts.map +1 -0
  791. package/dist/storage/domains/comments/schema.js +179 -0
  792. package/dist/storage/domains/comments/schema.js.map +1 -0
  793. package/dist/storage/domains/comments/wire.d.ts +40 -0
  794. package/dist/storage/domains/comments/wire.d.ts.map +1 -0
  795. package/dist/storage/domains/comments/wire.js +37 -0
  796. package/dist/storage/domains/comments/wire.js.map +1 -0
  797. package/dist/storage/domains/credentials/base.d.ts +136 -0
  798. package/dist/storage/domains/credentials/base.d.ts.map +1 -0
  799. package/dist/storage/domains/credentials/base.js +294 -0
  800. package/dist/storage/domains/credentials/base.js.map +1 -0
  801. package/dist/storage/domains/custom-providers/base.d.ts +59 -0
  802. package/dist/storage/domains/custom-providers/base.d.ts.map +1 -0
  803. package/dist/storage/domains/custom-providers/base.js +176 -0
  804. package/dist/storage/domains/custom-providers/base.js.map +1 -0
  805. package/dist/storage/domains/filesystem/base.d.ts +26 -0
  806. package/dist/storage/domains/filesystem/base.d.ts.map +1 -0
  807. package/dist/storage/domains/filesystem/base.js +74 -0
  808. package/dist/storage/domains/filesystem/base.js.map +1 -0
  809. package/dist/storage/domains/intake/base.d.ts +150 -0
  810. package/dist/storage/domains/intake/base.d.ts.map +1 -0
  811. package/dist/storage/domains/intake/base.js +431 -0
  812. package/dist/storage/domains/intake/base.js.map +1 -0
  813. package/dist/storage/domains/integrations/base.d.ts +128 -0
  814. package/dist/storage/domains/integrations/base.d.ts.map +1 -0
  815. package/dist/storage/domains/integrations/base.js +333 -0
  816. package/dist/storage/domains/integrations/base.js.map +1 -0
  817. package/dist/storage/domains/memory-settings/base.d.ts +58 -0
  818. package/dist/storage/domains/memory-settings/base.d.ts.map +1 -0
  819. package/dist/storage/domains/memory-settings/base.js +129 -0
  820. package/dist/storage/domains/memory-settings/base.js.map +1 -0
  821. package/dist/storage/domains/model-defaults/base.d.ts +29 -0
  822. package/dist/storage/domains/model-defaults/base.d.ts.map +1 -0
  823. package/dist/storage/domains/model-defaults/base.js +79 -0
  824. package/dist/storage/domains/model-defaults/base.js.map +1 -0
  825. package/dist/storage/domains/projects/base.d.ts +191 -0
  826. package/dist/storage/domains/projects/base.d.ts.map +1 -0
  827. package/dist/storage/domains/projects/base.js +352 -0
  828. package/dist/storage/domains/projects/base.js.map +1 -0
  829. package/dist/storage/domains/queue-health/base.d.ts +52 -0
  830. package/dist/storage/domains/queue-health/base.d.ts.map +1 -0
  831. package/dist/storage/domains/queue-health/base.js +122 -0
  832. package/dist/storage/domains/queue-health/base.js.map +1 -0
  833. package/dist/storage/domains/source-control/base.d.ts +422 -0
  834. package/dist/storage/domains/source-control/base.d.ts.map +1 -0
  835. package/dist/storage/domains/source-control/base.js +1114 -0
  836. package/dist/storage/domains/source-control/base.js.map +1 -0
  837. package/dist/storage/domains/source-control/inmemory.d.ts +147 -0
  838. package/dist/storage/domains/source-control/inmemory.d.ts.map +1 -0
  839. package/dist/storage/domains/source-control/inmemory.js +416 -0
  840. package/dist/storage/domains/source-control/inmemory.js.map +1 -0
  841. package/dist/storage/domains/work-items/base.d.ts +794 -0
  842. package/dist/storage/domains/work-items/base.d.ts.map +1 -0
  843. package/dist/storage/domains/work-items/base.js +2747 -0
  844. package/dist/storage/domains/work-items/base.js.map +1 -0
  845. package/dist/storage/domains/work-items/board-version.d.ts +26 -0
  846. package/dist/storage/domains/work-items/board-version.d.ts.map +1 -0
  847. package/dist/storage/domains/work-items/board-version.js +110 -0
  848. package/dist/storage/domains/work-items/board-version.js.map +1 -0
  849. package/dist/storage/domains/work-items/metrics.d.ts +97 -0
  850. package/dist/storage/domains/work-items/metrics.d.ts.map +1 -0
  851. package/dist/storage/domains/work-items/metrics.js +226 -0
  852. package/dist/storage/domains/work-items/metrics.js.map +1 -0
  853. package/dist/supervisor/health-worker.d.ts +19 -0
  854. package/dist/supervisor/health-worker.d.ts.map +1 -0
  855. package/dist/supervisor/health-worker.js +74 -0
  856. package/dist/supervisor/health-worker.js.map +1 -0
  857. package/dist/supervisor/health.d.ts +79 -0
  858. package/dist/supervisor/health.d.ts.map +1 -0
  859. package/dist/supervisor/health.js +228 -0
  860. package/dist/supervisor/health.js.map +1 -0
  861. package/dist/supervisor/instructions.d.ts +6 -0
  862. package/dist/supervisor/instructions.d.ts.map +1 -0
  863. package/dist/supervisor/instructions.js +66 -0
  864. package/dist/supervisor/instructions.js.map +1 -0
  865. package/dist/supervisor/read-tools.d.ts +43 -0
  866. package/dist/supervisor/read-tools.d.ts.map +1 -0
  867. package/dist/supervisor/read-tools.js +343 -0
  868. package/dist/supervisor/read-tools.js.map +1 -0
  869. package/dist/supervisor/session-messaging.d.ts +26 -0
  870. package/dist/supervisor/session-messaging.d.ts.map +1 -0
  871. package/dist/supervisor/session-messaging.js +21 -0
  872. package/dist/supervisor/session-messaging.js.map +1 -0
  873. package/dist/supervisor/session.d.ts +38 -0
  874. package/dist/supervisor/session.d.ts.map +1 -0
  875. package/dist/supervisor/session.js +79 -0
  876. package/dist/supervisor/session.js.map +1 -0
  877. package/dist/supervisor/write-tools.d.ts +30 -0
  878. package/dist/supervisor/write-tools.d.ts.map +1 -0
  879. package/dist/supervisor/write-tools.js +231 -0
  880. package/dist/supervisor/write-tools.js.map +1 -0
  881. package/dist/telemetry-types.d.ts +7 -0
  882. package/dist/telemetry-types.d.ts.map +1 -0
  883. package/dist/telemetry-types.js +24 -0
  884. package/dist/telemetry-types.js.map +1 -0
  885. package/dist/telemetry.d.ts +9 -0
  886. package/dist/telemetry.d.ts.map +1 -0
  887. package/dist/telemetry.js +47 -0
  888. package/dist/telemetry.js.map +1 -0
  889. package/dist/timing.d.ts +15 -0
  890. package/dist/timing.d.ts.map +1 -0
  891. package/dist/timing.js +34 -0
  892. package/dist/timing.js.map +1 -0
  893. package/dist/work-item-branch.d.ts +33 -0
  894. package/dist/work-item-branch.d.ts.map +1 -0
  895. package/dist/work-item-branch.js +70 -0
  896. package/dist/work-item-branch.js.map +1 -0
  897. package/dist/workspace.d.ts +131 -0
  898. package/dist/workspace.d.ts.map +1 -0
  899. package/dist/workspace.js +995 -0
  900. package/dist/workspace.js.map +1 -0
  901. package/factory-skills/configure-factory-rules/SKILL.md +122 -0
  902. package/factory-skills/factory-complete-issue/SKILL.md +24 -0
  903. package/factory-skills/factory-gitlab-rereview/SKILL.md +22 -0
  904. package/factory-skills/factory-gitlab-review/SKILL.md +48 -0
  905. package/factory-skills/factory-plan/SKILL.md +72 -0
  906. package/factory-skills/factory-rereview/SKILL.md +225 -0
  907. package/factory-skills/factory-review/SKILL.md +214 -0
  908. package/factory-skills/factory-review/references/archaeology.md +225 -0
  909. package/factory-skills/factory-review/references/categories/README.md +34 -0
  910. package/factory-skills/factory-review/references/categories/behavior-change.md +36 -0
  911. package/factory-skills/factory-review/references/categories/bug-fix.md +37 -0
  912. package/factory-skills/factory-review/references/categories/docs.md +32 -0
  913. package/factory-skills/factory-review/references/categories/experimental-flagged.md +34 -0
  914. package/factory-skills/factory-review/references/categories/infra-tooling.md +37 -0
  915. package/factory-skills/factory-review/references/categories/internal-capability.md +35 -0
  916. package/factory-skills/factory-review/references/categories/large-cross-cutting.md +35 -0
  917. package/factory-skills/factory-review/references/categories/mechanical.md +36 -0
  918. package/factory-skills/factory-review/references/categories/performance.md +33 -0
  919. package/factory-skills/factory-review/references/categories/public-api.md +38 -0
  920. package/factory-skills/factory-review/references/categories/refactor.md +35 -0
  921. package/factory-skills/factory-review/references/categories/revert.md +31 -0
  922. package/factory-skills/factory-review/references/categories/schema-storage.md +39 -0
  923. package/factory-skills/factory-review/references/categories/security.md +35 -0
  924. package/factory-skills/factory-review/references/categories/tests-only.md +38 -0
  925. package/factory-skills/factory-triage/SKILL.md +197 -0
  926. package/package.json +92 -0
@@ -0,0 +1,222 @@
1
+ import { PlatformApiClient } from '../platform/api-client.js';
2
+ export declare const GITLAB_PROJECTS_PAGE_SIZE = 100;
3
+ export declare const GITLAB_ISSUES_PAGE_SIZE = 30;
4
+ export declare const GITLAB_NOTES_PAGE_SIZE = 100;
5
+ export declare const GITLAB_MIN_ACCESS_LEVEL = 20;
6
+ export declare const GITLAB_MERGE_REQUESTS_PAGE_SIZE = 30;
7
+ export declare const GITLAB_DISCUSSIONS_PAGE_SIZE = 100;
8
+ export type GitLabApiErrorCode = 'gitlab_auth_failed' | 'gitlab_request_failed';
9
+ export declare class GitLabApiError extends Error {
10
+ readonly status: number | null;
11
+ readonly code: GitLabApiErrorCode;
12
+ constructor(message: string, status: number | null);
13
+ }
14
+ export interface GitLabProject {
15
+ id: number;
16
+ name: string;
17
+ path_with_namespace: string;
18
+ web_url: string;
19
+ default_branch?: string | null;
20
+ }
21
+ export interface GitLabUser {
22
+ id?: number;
23
+ name?: string | null;
24
+ username: string;
25
+ }
26
+ export interface GitLabLabelDetail {
27
+ name: string;
28
+ color: string;
29
+ text_color?: string;
30
+ }
31
+ export interface GitLabIssue {
32
+ id: number;
33
+ iid: number;
34
+ project_id: number;
35
+ title: string;
36
+ description?: string | null;
37
+ state: 'opened' | 'closed';
38
+ web_url: string;
39
+ author?: GitLabUser | null;
40
+ assignee?: GitLabUser | null;
41
+ assignees?: GitLabUser[];
42
+ labels?: string[];
43
+ labelDetails?: GitLabLabelDetail[];
44
+ weight?: number | null;
45
+ user_notes_count?: number;
46
+ created_at: string;
47
+ updated_at: string;
48
+ }
49
+ export interface GitLabNote {
50
+ id: number;
51
+ body: string;
52
+ type?: string | null;
53
+ author?: GitLabUser | null;
54
+ created_at: string;
55
+ updated_at?: string;
56
+ system?: boolean;
57
+ }
58
+ export interface GitLabDiffRefs {
59
+ base_sha: string;
60
+ start_sha: string;
61
+ head_sha: string;
62
+ }
63
+ export interface GitLabMergeRequest {
64
+ id: number;
65
+ iid: number;
66
+ project_id: number;
67
+ title: string;
68
+ description?: string | null;
69
+ state: 'opened' | 'closed' | 'merged' | 'locked';
70
+ web_url: string;
71
+ author?: GitLabUser | null;
72
+ assignees?: GitLabUser[];
73
+ reviewers?: GitLabUser[];
74
+ labels?: string[];
75
+ source_branch: string;
76
+ target_branch: string;
77
+ sha: string;
78
+ merge_commit_sha?: string | null;
79
+ squash_commit_sha?: string | null;
80
+ diff_refs?: GitLabDiffRefs | null;
81
+ merge_status?: string;
82
+ detailed_merge_status?: string;
83
+ draft?: boolean;
84
+ work_in_progress?: boolean;
85
+ merged_at?: string | null;
86
+ user_notes_count?: number;
87
+ created_at: string;
88
+ updated_at: string;
89
+ }
90
+ export interface GitLabMergeResult extends GitLabMergeRequest {
91
+ message?: string;
92
+ }
93
+ export interface GitLabDiscussionPosition {
94
+ position_type: 'text';
95
+ base_sha: string;
96
+ start_sha: string;
97
+ head_sha: string;
98
+ old_path: string;
99
+ new_path: string;
100
+ old_line?: number | null;
101
+ new_line?: number | null;
102
+ line_range?: {
103
+ start: GitLabDiscussionLine;
104
+ end: GitLabDiscussionLine;
105
+ };
106
+ }
107
+ export interface GitLabDiscussionLine {
108
+ line_code: string;
109
+ type: 'old' | 'new';
110
+ old_line?: number | null;
111
+ new_line?: number | null;
112
+ }
113
+ export interface GitLabDiscussionNote extends GitLabNote {
114
+ position?: GitLabDiscussionPosition | null;
115
+ resolvable?: boolean;
116
+ resolved?: boolean;
117
+ }
118
+ export interface GitLabDiscussion {
119
+ id: string;
120
+ individual_note?: boolean;
121
+ notes: GitLabDiscussionNote[];
122
+ }
123
+ export interface GitLabMergeRequestApprovals {
124
+ approved: boolean;
125
+ approvals_required?: number;
126
+ approvals_left?: number;
127
+ approved_by?: Array<{
128
+ user: GitLabUser;
129
+ }>;
130
+ }
131
+ export interface GitLabMember {
132
+ id: number;
133
+ username: string;
134
+ name?: string | null;
135
+ state?: string;
136
+ access_level?: number;
137
+ }
138
+ export interface GitLabApiClientConfig {
139
+ baseUrl: string;
140
+ accessToken: string;
141
+ fetchImpl?: typeof fetch;
142
+ }
143
+ export interface PlatformGitLabApiClientConfig {
144
+ client: PlatformApiClient;
145
+ connectionId: string;
146
+ }
147
+ export declare class GitLabApiClient {
148
+ #private;
149
+ constructor(config: GitLabApiClientConfig | PlatformGitLabApiClientConfig);
150
+ getCurrentUser(): Promise<GitLabUser>;
151
+ getProject(projectId: string): Promise<GitLabProject>;
152
+ listProjects(options?: {
153
+ page?: number;
154
+ }): Promise<GitLabProject[]>;
155
+ listIssues(projectId: string, options?: {
156
+ page?: number;
157
+ labels?: string[];
158
+ }): Promise<GitLabIssue[]>;
159
+ getIssue(projectId: string, issueIid: number): Promise<GitLabIssue>;
160
+ listNotes(projectId: string, issueIid: number, options?: {
161
+ page?: number;
162
+ }): Promise<GitLabNote[]>;
163
+ createNote(projectId: string, issueIid: number, body: string): Promise<GitLabNote>;
164
+ updateIssueState(projectId: string, issueIid: number, stateEvent: 'close' | 'reopen'): Promise<GitLabIssue>;
165
+ listMergeRequests(projectId: string, options?: {
166
+ page?: number;
167
+ state?: 'opened' | 'closed' | 'merged' | 'all';
168
+ }): Promise<GitLabMergeRequest[]>;
169
+ getMergeRequest(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequest>;
170
+ createMergeRequest(projectId: string, input: {
171
+ sourceBranch: string;
172
+ targetBranch: string;
173
+ title: string;
174
+ description?: string;
175
+ removeSourceBranch?: boolean;
176
+ squash?: boolean;
177
+ }): Promise<GitLabMergeRequest>;
178
+ updateMergeRequest(projectId: string, mergeRequestIid: number, input: {
179
+ title?: string;
180
+ description?: string;
181
+ targetBranch?: string;
182
+ stateEvent?: 'close' | 'reopen';
183
+ removeSourceBranch?: boolean;
184
+ squash?: boolean;
185
+ reviewerIds?: number[];
186
+ }): Promise<GitLabMergeRequest>;
187
+ mergeMergeRequest(projectId: string, mergeRequestIid: number, options?: {
188
+ squash?: boolean;
189
+ mergeCommitMessage?: string;
190
+ squashCommitMessage?: string;
191
+ shouldRemoveSourceBranch?: boolean;
192
+ }): Promise<GitLabMergeResult>;
193
+ listMergeRequestNotes(projectId: string, mergeRequestIid: number, options?: {
194
+ page?: number;
195
+ }): Promise<GitLabNote[]>;
196
+ createMergeRequestNote(projectId: string, mergeRequestIid: number, body: string): Promise<GitLabNote>;
197
+ getMergeRequestNote(projectId: string, mergeRequestIid: number, noteId: number): Promise<GitLabNote>;
198
+ updateMergeRequestNote(projectId: string, mergeRequestIid: number, noteId: number, body: string): Promise<GitLabNote>;
199
+ deleteMergeRequestNote(projectId: string, mergeRequestIid: number, noteId: number): Promise<void>;
200
+ listMergeRequestDiscussions(projectId: string, mergeRequestIid: number, options?: {
201
+ page?: number;
202
+ }): Promise<GitLabDiscussion[]>;
203
+ getMergeRequestDiscussion(projectId: string, mergeRequestIid: number, discussionId: string): Promise<GitLabDiscussion>;
204
+ resolveMergeRequestDiscussion(projectId: string, mergeRequestIid: number, discussionId: string, resolved: boolean): Promise<GitLabDiscussion>;
205
+ createMergeRequestDiscussion(projectId: string, mergeRequestIid: number, input: {
206
+ body: string;
207
+ commitId?: string;
208
+ position?: GitLabDiscussionPosition;
209
+ }): Promise<GitLabDiscussion>;
210
+ addMergeRequestDiscussionNote(projectId: string, mergeRequestIid: number, discussionId: string, body: string): Promise<GitLabDiscussionNote>;
211
+ updateMergeRequestDiscussionNote(projectId: string, mergeRequestIid: number, discussionId: string, noteId: number, body: string): Promise<GitLabDiscussionNote>;
212
+ deleteMergeRequestDiscussionNote(projectId: string, mergeRequestIid: number, discussionId: string, noteId: number): Promise<void>;
213
+ getMergeRequestApprovals(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequestApprovals>;
214
+ approveMergeRequest(projectId: string, mergeRequestIid: number, sha?: string): Promise<GitLabMergeRequest>;
215
+ unapproveMergeRequest(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequest>;
216
+ setMergeRequestReviewers(projectId: string, mergeRequestIid: number, reviewerIds: number[]): Promise<GitLabMergeRequest>;
217
+ listProjectMembers(projectId: string, options?: {
218
+ query?: string;
219
+ page?: number;
220
+ }): Promise<GitLabMember[]>;
221
+ }
222
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/integrations/gitlab/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,274 @@
1
+ import { PlatformApiError } from "../platform/api-client.js";
2
+ //#region src/integrations/gitlab/api.ts
3
+ const GITLAB_PROJECTS_PAGE_SIZE = 100;
4
+ const GITLAB_ISSUES_PAGE_SIZE = 30;
5
+ const GITLAB_NOTES_PAGE_SIZE = 100;
6
+ const GITLAB_MIN_ACCESS_LEVEL = 20;
7
+ const GITLAB_MERGE_REQUESTS_PAGE_SIZE = 30;
8
+ const GITLAB_DISCUSSIONS_PAGE_SIZE = 100;
9
+ var GitLabApiError = class extends Error {
10
+ status;
11
+ code;
12
+ constructor(message, status) {
13
+ super(message);
14
+ this.name = "GitLabApiError";
15
+ this.status = status;
16
+ this.code = status === 401 || status === 403 ? "gitlab_auth_failed" : "gitlab_request_failed";
17
+ }
18
+ };
19
+ var GitLabApiClient = class {
20
+ #direct;
21
+ #platform;
22
+ constructor(config) {
23
+ if ("client" in config) {
24
+ if (!config.connectionId.trim()) throw new Error("GitLabApiClient is missing required config: connectionId.");
25
+ this.#direct = null;
26
+ this.#platform = config;
27
+ return;
28
+ }
29
+ const accessToken = config.accessToken.trim();
30
+ if (!accessToken) throw new Error("GitLabApiClient is missing required config: accessToken.");
31
+ let url;
32
+ try {
33
+ url = new URL(config.baseUrl);
34
+ } catch {
35
+ throw new Error("GitLabApiClient baseUrl must be an absolute HTTP(S) URL.");
36
+ }
37
+ if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("GitLabApiClient baseUrl must be an absolute HTTP(S) URL.");
38
+ if (url.username || url.password || url.search || url.hash) throw new Error("GitLabApiClient baseUrl must not include credentials, query, or fragment.");
39
+ const hostname = url.hostname.replace(/^\[|\]$/g, "").toLowerCase();
40
+ const isLoopback = hostname === "localhost" || hostname === "::1" || /^127(?:\.\d{1,3}){3}$/.test(hostname);
41
+ if (url.protocol === "http:" && !isLoopback) throw new Error("GitLabApiClient baseUrl must use HTTPS unless it targets a loopback host.");
42
+ this.#direct = {
43
+ baseUrl: config.baseUrl.replace(/\/+$/, ""),
44
+ accessToken,
45
+ fetch: config.fetchImpl ?? globalThis.fetch
46
+ };
47
+ this.#platform = null;
48
+ }
49
+ async getCurrentUser() {
50
+ return this.#request("GET", "/api/v4/user");
51
+ }
52
+ async getProject(projectId) {
53
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}`);
54
+ }
55
+ async listProjects(options = {}) {
56
+ return this.#request("GET", "/api/v4/projects", { query: {
57
+ membership: "true",
58
+ simple: "true",
59
+ with_issues_enabled: "true",
60
+ min_access_level: 20,
61
+ order_by: "last_activity_at",
62
+ sort: "desc",
63
+ page: options.page ?? 1,
64
+ per_page: 100
65
+ } });
66
+ }
67
+ async listIssues(projectId, options = {}) {
68
+ return (await this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/issues`, { query: {
69
+ state: "opened",
70
+ scope: "all",
71
+ order_by: "updated_at",
72
+ sort: "desc",
73
+ page: options.page ?? 1,
74
+ per_page: 30,
75
+ labels: options.labels?.length ? options.labels.join(",") : void 0,
76
+ with_labels_details: "true"
77
+ } })).map(normalizeIssue);
78
+ }
79
+ async getIssue(projectId, issueIid) {
80
+ const issue = (await this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/issues`, { query: {
81
+ "iids[]": issueIid,
82
+ state: "all",
83
+ scope: "all",
84
+ with_labels_details: "true"
85
+ } })).find((candidate) => candidate.iid === issueIid);
86
+ if (!issue) throw new GitLabApiError(`GitLab issue ${issueIid} was not found`, 404);
87
+ return normalizeIssue(issue);
88
+ }
89
+ async listNotes(projectId, issueIid, options = {}) {
90
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}/notes`, { query: {
91
+ order_by: "created_at",
92
+ sort: "asc",
93
+ page: options.page ?? 1,
94
+ per_page: 100
95
+ } });
96
+ }
97
+ async createNote(projectId, issueIid, body) {
98
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}/notes`, { body: { body } });
99
+ }
100
+ async updateIssueState(projectId, issueIid, stateEvent) {
101
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}`, { body: { state_event: stateEvent } });
102
+ }
103
+ async listMergeRequests(projectId, options = {}) {
104
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests`, { query: {
105
+ state: options.state ?? "opened",
106
+ order_by: "updated_at",
107
+ sort: "desc",
108
+ page: options.page ?? 1,
109
+ per_page: 30
110
+ } });
111
+ }
112
+ async getMergeRequest(projectId, mergeRequestIid) {
113
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`);
114
+ }
115
+ async createMergeRequest(projectId, input) {
116
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests`, { body: {
117
+ source_branch: input.sourceBranch,
118
+ target_branch: input.targetBranch,
119
+ title: input.title,
120
+ description: input.description,
121
+ remove_source_branch: input.removeSourceBranch,
122
+ squash: input.squash
123
+ } });
124
+ }
125
+ async updateMergeRequest(projectId, mergeRequestIid, input) {
126
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`, { body: {
127
+ title: input.title,
128
+ description: input.description,
129
+ target_branch: input.targetBranch,
130
+ state_event: input.stateEvent,
131
+ remove_source_branch: input.removeSourceBranch,
132
+ squash: input.squash,
133
+ reviewer_ids: input.reviewerIds
134
+ } });
135
+ }
136
+ async mergeMergeRequest(projectId, mergeRequestIid, options = {}) {
137
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/merge`, { body: {
138
+ squash: options.squash,
139
+ merge_commit_message: options.mergeCommitMessage,
140
+ squash_commit_message: options.squashCommitMessage,
141
+ should_remove_source_branch: options.shouldRemoveSourceBranch
142
+ } });
143
+ }
144
+ async listMergeRequestNotes(projectId, mergeRequestIid, options = {}) {
145
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes`, { query: {
146
+ order_by: "created_at",
147
+ sort: "asc",
148
+ page: options.page ?? 1,
149
+ per_page: 100
150
+ } });
151
+ }
152
+ async createMergeRequestNote(projectId, mergeRequestIid, body) {
153
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes`, { body: { body } });
154
+ }
155
+ async getMergeRequestNote(projectId, mergeRequestIid, noteId) {
156
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`);
157
+ }
158
+ async updateMergeRequestNote(projectId, mergeRequestIid, noteId, body) {
159
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`, { body: { body } });
160
+ }
161
+ async deleteMergeRequestNote(projectId, mergeRequestIid, noteId) {
162
+ await this.#request("DELETE", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`);
163
+ }
164
+ async listMergeRequestDiscussions(projectId, mergeRequestIid, options = {}) {
165
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions`, { query: {
166
+ page: options.page ?? 1,
167
+ per_page: 100
168
+ } });
169
+ }
170
+ async getMergeRequestDiscussion(projectId, mergeRequestIid, discussionId) {
171
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}`);
172
+ }
173
+ async resolveMergeRequestDiscussion(projectId, mergeRequestIid, discussionId, resolved) {
174
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}`, { body: { resolved } });
175
+ }
176
+ async createMergeRequestDiscussion(projectId, mergeRequestIid, input) {
177
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions`, { body: {
178
+ body: input.body,
179
+ commit_id: input.commitId,
180
+ position: input.position
181
+ } });
182
+ }
183
+ async addMergeRequestDiscussionNote(projectId, mergeRequestIid, discussionId, body) {
184
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes`, { body: { body } });
185
+ }
186
+ async updateMergeRequestDiscussionNote(projectId, mergeRequestIid, discussionId, noteId, body) {
187
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes/${noteId}`, { body: { body } });
188
+ }
189
+ async deleteMergeRequestDiscussionNote(projectId, mergeRequestIid, discussionId, noteId) {
190
+ await this.#request("DELETE", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes/${noteId}`);
191
+ }
192
+ async getMergeRequestApprovals(projectId, mergeRequestIid) {
193
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/approvals`);
194
+ }
195
+ async approveMergeRequest(projectId, mergeRequestIid, sha) {
196
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/approve`, sha ? { body: { sha } } : void 0);
197
+ }
198
+ async unapproveMergeRequest(projectId, mergeRequestIid) {
199
+ return this.#request("POST", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/unapprove`);
200
+ }
201
+ async setMergeRequestReviewers(projectId, mergeRequestIid, reviewerIds) {
202
+ return this.#request("PUT", `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`, { body: { reviewer_ids: reviewerIds } });
203
+ }
204
+ async listProjectMembers(projectId, options = {}) {
205
+ return this.#request("GET", `/api/v4/projects/${encodeURIComponent(projectId)}/members/all`, { query: {
206
+ query: options.query,
207
+ page: options.page ?? 1,
208
+ per_page: 100
209
+ } });
210
+ }
211
+ async #request(method, path, options = {}) {
212
+ const query = new URLSearchParams();
213
+ for (const [key, value] of Object.entries(options.query ?? {})) if (value !== void 0) query.set(key, String(value));
214
+ const suffix = query.size > 0 ? `?${query.toString()}` : "";
215
+ const apiPath = path.replace(/^\/api\/v4\/projects\/([^/]+)/, (full, encoded) => {
216
+ const target = decodeURIComponent(encoded);
217
+ const match = /^(\d+):(.+)$/.exec(target);
218
+ return match ? `/api/v4/projects/${encodeURIComponent(match[1])}` : full;
219
+ });
220
+ if (this.#platform) {
221
+ const proxyPath = `/v2/connections/${encodeURIComponent(this.#platform.connectionId)}/proxy${apiPath}${suffix}`;
222
+ try {
223
+ return await this.#platform.client.request(method, proxyPath, options.body);
224
+ } catch (error) {
225
+ if (error instanceof PlatformApiError) throw new GitLabApiError(error.message, error.status);
226
+ throw new GitLabApiError(error instanceof Error ? error.message : String(error), null);
227
+ }
228
+ }
229
+ const direct = this.#direct;
230
+ const headers = {
231
+ accept: "application/json",
232
+ "private-token": direct.accessToken
233
+ };
234
+ const init = {
235
+ method,
236
+ headers,
237
+ signal: AbortSignal.timeout(15e3)
238
+ };
239
+ if (options.body !== void 0) {
240
+ headers["content-type"] = "application/json";
241
+ init.body = JSON.stringify(options.body);
242
+ }
243
+ let response;
244
+ try {
245
+ response = await direct.fetch(`${direct.baseUrl}${apiPath}${suffix}`, init);
246
+ } catch (error) {
247
+ throw new GitLabApiError((error instanceof Error ? error.message : String(error)).split(direct.accessToken).join("[REDACTED]"), null);
248
+ }
249
+ if (!response.ok) throw new GitLabApiError((await extractError(response)).split(direct.accessToken).join("[REDACTED]"), response.status);
250
+ if (response.status === 204) return void 0;
251
+ return await response.json();
252
+ }
253
+ };
254
+ async function extractError(response) {
255
+ try {
256
+ const data = await response.clone().json();
257
+ if (typeof data.message === "string" && data.message) return data.message;
258
+ if (typeof data.error === "string" && data.error) return data.error;
259
+ } catch {}
260
+ return `GitLab API request failed (${response.status})`;
261
+ }
262
+ function normalizeIssue(response) {
263
+ const { labels, ...issue } = response;
264
+ const labelDetails = (labels ?? []).filter((label) => typeof label !== "string");
265
+ return {
266
+ ...issue,
267
+ labels: (labels ?? []).map((label) => typeof label === "string" ? label : label.name),
268
+ ...labelDetails.length > 0 ? { labelDetails } : {}
269
+ };
270
+ }
271
+ //#endregion
272
+ export { GITLAB_DISCUSSIONS_PAGE_SIZE, GITLAB_ISSUES_PAGE_SIZE, GITLAB_MERGE_REQUESTS_PAGE_SIZE, GITLAB_MIN_ACCESS_LEVEL, GITLAB_NOTES_PAGE_SIZE, GITLAB_PROJECTS_PAGE_SIZE, GitLabApiClient, GitLabApiError };
273
+
274
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","names":["#direct","#platform","#request"],"sources":["../../../src/integrations/gitlab/api.ts"],"sourcesContent":["import { PlatformApiClient, PlatformApiError } from '../platform/api-client.js';\n\nexport const GITLAB_PROJECTS_PAGE_SIZE = 100;\nexport const GITLAB_ISSUES_PAGE_SIZE = 30;\nexport const GITLAB_NOTES_PAGE_SIZE = 100;\nexport const GITLAB_MIN_ACCESS_LEVEL = 20;\nexport const GITLAB_MERGE_REQUESTS_PAGE_SIZE = 30;\nexport const GITLAB_DISCUSSIONS_PAGE_SIZE = 100;\n\nexport type GitLabApiErrorCode = 'gitlab_auth_failed' | 'gitlab_request_failed';\n\nexport class GitLabApiError extends Error {\n readonly status: number | null;\n readonly code: GitLabApiErrorCode;\n\n constructor(message: string, status: number | null) {\n super(message);\n this.name = 'GitLabApiError';\n this.status = status;\n this.code = status === 401 || status === 403 ? 'gitlab_auth_failed' : 'gitlab_request_failed';\n }\n}\n\nexport interface GitLabProject {\n id: number;\n name: string;\n path_with_namespace: string;\n web_url: string;\n default_branch?: string | null;\n}\n\nexport interface GitLabUser {\n id?: number;\n name?: string | null;\n username: string;\n}\n\nexport interface GitLabLabelDetail {\n name: string;\n color: string;\n text_color?: string;\n}\n\ntype GitLabIssueResponse = Omit<GitLabIssue, 'labels' | 'labelDetails'> & {\n labels?: Array<string | GitLabLabelDetail>;\n};\n\nexport interface GitLabIssue {\n id: number;\n iid: number;\n project_id: number;\n title: string;\n description?: string | null;\n state: 'opened' | 'closed';\n web_url: string;\n author?: GitLabUser | null;\n assignee?: GitLabUser | null;\n assignees?: GitLabUser[];\n labels?: string[];\n labelDetails?: GitLabLabelDetail[];\n weight?: number | null;\n user_notes_count?: number;\n created_at: string;\n updated_at: string;\n}\n\nexport interface GitLabNote {\n id: number;\n body: string;\n type?: string | null;\n author?: GitLabUser | null;\n created_at: string;\n updated_at?: string;\n system?: boolean;\n}\n\nexport interface GitLabDiffRefs {\n base_sha: string;\n start_sha: string;\n head_sha: string;\n}\n\nexport interface GitLabMergeRequest {\n id: number;\n iid: number;\n project_id: number;\n title: string;\n description?: string | null;\n state: 'opened' | 'closed' | 'merged' | 'locked';\n web_url: string;\n author?: GitLabUser | null;\n assignees?: GitLabUser[];\n reviewers?: GitLabUser[];\n labels?: string[];\n source_branch: string;\n target_branch: string;\n sha: string;\n merge_commit_sha?: string | null;\n squash_commit_sha?: string | null;\n diff_refs?: GitLabDiffRefs | null;\n merge_status?: string;\n detailed_merge_status?: string;\n draft?: boolean;\n work_in_progress?: boolean;\n merged_at?: string | null;\n user_notes_count?: number;\n created_at: string;\n updated_at: string;\n}\n\nexport interface GitLabMergeResult extends GitLabMergeRequest {\n message?: string;\n}\n\nexport interface GitLabDiscussionPosition {\n position_type: 'text';\n base_sha: string;\n start_sha: string;\n head_sha: string;\n old_path: string;\n new_path: string;\n old_line?: number | null;\n new_line?: number | null;\n line_range?: {\n start: GitLabDiscussionLine;\n end: GitLabDiscussionLine;\n };\n}\n\nexport interface GitLabDiscussionLine {\n line_code: string;\n type: 'old' | 'new';\n old_line?: number | null;\n new_line?: number | null;\n}\n\nexport interface GitLabDiscussionNote extends GitLabNote {\n position?: GitLabDiscussionPosition | null;\n resolvable?: boolean;\n resolved?: boolean;\n}\n\nexport interface GitLabDiscussion {\n id: string;\n individual_note?: boolean;\n notes: GitLabDiscussionNote[];\n}\n\nexport interface GitLabMergeRequestApprovals {\n approved: boolean;\n approvals_required?: number;\n approvals_left?: number;\n approved_by?: Array<{ user: GitLabUser }>;\n}\n\nexport interface GitLabMember {\n id: number;\n username: string;\n name?: string | null;\n state?: string;\n access_level?: number;\n}\n\nexport interface GitLabApiClientConfig {\n baseUrl: string;\n accessToken: string;\n fetchImpl?: typeof fetch;\n}\n\nexport interface PlatformGitLabApiClientConfig {\n client: PlatformApiClient;\n connectionId: string;\n}\n\nexport class GitLabApiClient {\n readonly #direct: { baseUrl: string; accessToken: string; fetch: typeof fetch } | null;\n readonly #platform: PlatformGitLabApiClientConfig | null;\n\n constructor(config: GitLabApiClientConfig | PlatformGitLabApiClientConfig) {\n if ('client' in config) {\n if (!config.connectionId.trim()) throw new Error('GitLabApiClient is missing required config: connectionId.');\n this.#direct = null;\n this.#platform = config;\n return;\n }\n\n const accessToken = config.accessToken.trim();\n if (!accessToken) throw new Error('GitLabApiClient is missing required config: accessToken.');\n let url: URL;\n try {\n url = new URL(config.baseUrl);\n } catch {\n throw new Error('GitLabApiClient baseUrl must be an absolute HTTP(S) URL.');\n }\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new Error('GitLabApiClient baseUrl must be an absolute HTTP(S) URL.');\n }\n if (url.username || url.password || url.search || url.hash) {\n throw new Error('GitLabApiClient baseUrl must not include credentials, query, or fragment.');\n }\n const hostname = url.hostname.replace(/^\\[|\\]$/g, '').toLowerCase();\n const isLoopback = hostname === 'localhost' || hostname === '::1' || /^127(?:\\.\\d{1,3}){3}$/.test(hostname);\n if (url.protocol === 'http:' && !isLoopback) {\n throw new Error('GitLabApiClient baseUrl must use HTTPS unless it targets a loopback host.');\n }\n this.#direct = {\n baseUrl: config.baseUrl.replace(/\\/+$/, ''),\n accessToken,\n fetch: config.fetchImpl ?? globalThis.fetch,\n };\n this.#platform = null;\n }\n\n async getCurrentUser(): Promise<GitLabUser> {\n return this.#request<GitLabUser>('GET', '/api/v4/user');\n }\n\n async getProject(projectId: string): Promise<GitLabProject> {\n return this.#request<GitLabProject>('GET', `/api/v4/projects/${encodeURIComponent(projectId)}`);\n }\n\n async listProjects(options: { page?: number } = {}): Promise<GitLabProject[]> {\n return this.#request<GitLabProject[]>('GET', '/api/v4/projects', {\n query: {\n membership: 'true',\n simple: 'true',\n with_issues_enabled: 'true',\n min_access_level: GITLAB_MIN_ACCESS_LEVEL,\n order_by: 'last_activity_at',\n sort: 'desc',\n page: options.page ?? 1,\n per_page: GITLAB_PROJECTS_PAGE_SIZE,\n },\n });\n }\n\n async listIssues(projectId: string, options: { page?: number; labels?: string[] } = {}): Promise<GitLabIssue[]> {\n const issues = await this.#request<GitLabIssueResponse[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/issues`,\n {\n query: {\n state: 'opened',\n scope: 'all',\n order_by: 'updated_at',\n sort: 'desc',\n page: options.page ?? 1,\n per_page: GITLAB_ISSUES_PAGE_SIZE,\n labels: options.labels?.length ? options.labels.join(',') : undefined,\n with_labels_details: 'true',\n },\n },\n );\n return issues.map(normalizeIssue);\n }\n\n async getIssue(projectId: string, issueIid: number): Promise<GitLabIssue> {\n // GitLab's single-issue endpoint returns label names even when\n // with_labels_details is requested. The IID-filtered list endpoint returns\n // the same issue with label colors, including for closed issues.\n const issues = await this.#request<GitLabIssueResponse[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/issues`,\n { query: { 'iids[]': issueIid, state: 'all', scope: 'all', with_labels_details: 'true' } },\n );\n const issue = issues.find(candidate => candidate.iid === issueIid);\n if (!issue) throw new GitLabApiError(`GitLab issue ${issueIid} was not found`, 404);\n return normalizeIssue(issue);\n }\n\n async listNotes(projectId: string, issueIid: number, options: { page?: number } = {}): Promise<GitLabNote[]> {\n return this.#request<GitLabNote[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}/notes`,\n {\n query: { order_by: 'created_at', sort: 'asc', page: options.page ?? 1, per_page: GITLAB_NOTES_PAGE_SIZE },\n },\n );\n }\n\n async createNote(projectId: string, issueIid: number, body: string): Promise<GitLabNote> {\n return this.#request<GitLabNote>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}/notes`,\n { body: { body } },\n );\n }\n\n async updateIssueState(projectId: string, issueIid: number, stateEvent: 'close' | 'reopen'): Promise<GitLabIssue> {\n return this.#request<GitLabIssue>('PUT', `/api/v4/projects/${encodeURIComponent(projectId)}/issues/${issueIid}`, {\n body: { state_event: stateEvent },\n });\n }\n\n async listMergeRequests(\n projectId: string,\n options: { page?: number; state?: 'opened' | 'closed' | 'merged' | 'all' } = {},\n ): Promise<GitLabMergeRequest[]> {\n return this.#request<GitLabMergeRequest[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests`,\n {\n query: {\n state: options.state ?? 'opened',\n order_by: 'updated_at',\n sort: 'desc',\n page: options.page ?? 1,\n per_page: GITLAB_MERGE_REQUESTS_PAGE_SIZE,\n },\n },\n );\n }\n\n async getMergeRequest(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`,\n );\n }\n\n async createMergeRequest(\n projectId: string,\n input: {\n sourceBranch: string;\n targetBranch: string;\n title: string;\n description?: string;\n removeSourceBranch?: boolean;\n squash?: boolean;\n },\n ): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests`,\n {\n body: {\n source_branch: input.sourceBranch,\n target_branch: input.targetBranch,\n title: input.title,\n description: input.description,\n remove_source_branch: input.removeSourceBranch,\n squash: input.squash,\n },\n },\n );\n }\n\n async updateMergeRequest(\n projectId: string,\n mergeRequestIid: number,\n input: {\n title?: string;\n description?: string;\n targetBranch?: string;\n stateEvent?: 'close' | 'reopen';\n removeSourceBranch?: boolean;\n squash?: boolean;\n reviewerIds?: number[];\n },\n ): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`,\n {\n body: {\n title: input.title,\n description: input.description,\n target_branch: input.targetBranch,\n state_event: input.stateEvent,\n remove_source_branch: input.removeSourceBranch,\n squash: input.squash,\n reviewer_ids: input.reviewerIds,\n },\n },\n );\n }\n\n async mergeMergeRequest(\n projectId: string,\n mergeRequestIid: number,\n options: {\n squash?: boolean;\n mergeCommitMessage?: string;\n squashCommitMessage?: string;\n shouldRemoveSourceBranch?: boolean;\n } = {},\n ): Promise<GitLabMergeResult> {\n return this.#request<GitLabMergeResult>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/merge`,\n {\n body: {\n squash: options.squash,\n merge_commit_message: options.mergeCommitMessage,\n squash_commit_message: options.squashCommitMessage,\n should_remove_source_branch: options.shouldRemoveSourceBranch,\n },\n },\n );\n }\n\n async listMergeRequestNotes(\n projectId: string,\n mergeRequestIid: number,\n options: { page?: number } = {},\n ): Promise<GitLabNote[]> {\n return this.#request<GitLabNote[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes`,\n {\n query: {\n order_by: 'created_at',\n sort: 'asc',\n page: options.page ?? 1,\n per_page: GITLAB_NOTES_PAGE_SIZE,\n },\n },\n );\n }\n\n async createMergeRequestNote(projectId: string, mergeRequestIid: number, body: string): Promise<GitLabNote> {\n return this.#request<GitLabNote>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes`,\n { body: { body } },\n );\n }\n\n async getMergeRequestNote(projectId: string, mergeRequestIid: number, noteId: number): Promise<GitLabNote> {\n return this.#request<GitLabNote>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`,\n );\n }\n\n async updateMergeRequestNote(\n projectId: string,\n mergeRequestIid: number,\n noteId: number,\n body: string,\n ): Promise<GitLabNote> {\n return this.#request<GitLabNote>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`,\n { body: { body } },\n );\n }\n\n async deleteMergeRequestNote(projectId: string, mergeRequestIid: number, noteId: number): Promise<void> {\n await this.#request<void>(\n 'DELETE',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/notes/${noteId}`,\n );\n }\n\n async listMergeRequestDiscussions(\n projectId: string,\n mergeRequestIid: number,\n options: { page?: number } = {},\n ): Promise<GitLabDiscussion[]> {\n return this.#request<GitLabDiscussion[]>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions`,\n { query: { page: options.page ?? 1, per_page: GITLAB_DISCUSSIONS_PAGE_SIZE } },\n );\n }\n\n async getMergeRequestDiscussion(\n projectId: string,\n mergeRequestIid: number,\n discussionId: string,\n ): Promise<GitLabDiscussion> {\n return this.#request<GitLabDiscussion>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}`,\n );\n }\n\n async resolveMergeRequestDiscussion(\n projectId: string,\n mergeRequestIid: number,\n discussionId: string,\n resolved: boolean,\n ): Promise<GitLabDiscussion> {\n return this.#request<GitLabDiscussion>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}`,\n { body: { resolved } },\n );\n }\n\n async createMergeRequestDiscussion(\n projectId: string,\n mergeRequestIid: number,\n input: { body: string; commitId?: string; position?: GitLabDiscussionPosition },\n ): Promise<GitLabDiscussion> {\n return this.#request<GitLabDiscussion>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions`,\n { body: { body: input.body, commit_id: input.commitId, position: input.position } },\n );\n }\n\n async addMergeRequestDiscussionNote(\n projectId: string,\n mergeRequestIid: number,\n discussionId: string,\n body: string,\n ): Promise<GitLabDiscussionNote> {\n return this.#request<GitLabDiscussionNote>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes`,\n { body: { body } },\n );\n }\n\n async updateMergeRequestDiscussionNote(\n projectId: string,\n mergeRequestIid: number,\n discussionId: string,\n noteId: number,\n body: string,\n ): Promise<GitLabDiscussionNote> {\n return this.#request<GitLabDiscussionNote>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes/${noteId}`,\n { body: { body } },\n );\n }\n\n async deleteMergeRequestDiscussionNote(\n projectId: string,\n mergeRequestIid: number,\n discussionId: string,\n noteId: number,\n ): Promise<void> {\n await this.#request<void>(\n 'DELETE',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/discussions/${encodeURIComponent(discussionId)}/notes/${noteId}`,\n );\n }\n\n async getMergeRequestApprovals(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequestApprovals> {\n return this.#request<GitLabMergeRequestApprovals>(\n 'GET',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/approvals`,\n );\n }\n\n async approveMergeRequest(projectId: string, mergeRequestIid: number, sha?: string): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/approve`,\n sha ? { body: { sha } } : undefined,\n );\n }\n\n async unapproveMergeRequest(projectId: string, mergeRequestIid: number): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'POST',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}/unapprove`,\n );\n }\n\n async setMergeRequestReviewers(\n projectId: string,\n mergeRequestIid: number,\n reviewerIds: number[],\n ): Promise<GitLabMergeRequest> {\n return this.#request<GitLabMergeRequest>(\n 'PUT',\n `/api/v4/projects/${encodeURIComponent(projectId)}/merge_requests/${mergeRequestIid}`,\n { body: { reviewer_ids: reviewerIds } },\n );\n }\n\n async listProjectMembers(\n projectId: string,\n options: { query?: string; page?: number } = {},\n ): Promise<GitLabMember[]> {\n return this.#request<GitLabMember[]>('GET', `/api/v4/projects/${encodeURIComponent(projectId)}/members/all`, {\n query: {\n query: options.query,\n page: options.page ?? 1,\n per_page: GITLAB_DISCUSSIONS_PAGE_SIZE,\n },\n });\n }\n\n async #request<T>(\n method: 'GET' | 'POST' | 'PUT' | 'DELETE',\n path: string,\n options: { query?: Record<string, string | number | undefined>; body?: unknown } = {},\n ): Promise<T> {\n const query = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query ?? {})) {\n if (value !== undefined) query.set(key, String(value));\n }\n const suffix = query.size > 0 ? `?${query.toString()}` : '';\n // Repository targets carry both the immutable numeric ID for GitLab API\n // requests and the path for browser links. A Platform proxy decodes %2F,\n // so forwarding a path-based project locator would turn into a 404.\n const apiPath = path.replace(/^\\/api\\/v4\\/projects\\/([^/]+)/, (full, encoded: string) => {\n const target = decodeURIComponent(encoded);\n const match = /^(\\d+):(.+)$/.exec(target);\n return match ? `/api/v4/projects/${encodeURIComponent(match[1]!)}` : full;\n });\n\n if (this.#platform) {\n const proxyPath = `/v2/connections/${encodeURIComponent(this.#platform.connectionId)}/proxy${apiPath}${suffix}`;\n try {\n return await this.#platform.client.request<T>(method, proxyPath, options.body);\n } catch (error) {\n if (error instanceof PlatformApiError) throw new GitLabApiError(error.message, error.status);\n throw new GitLabApiError(error instanceof Error ? error.message : String(error), null);\n }\n }\n\n const direct = this.#direct!;\n const headers: Record<string, string> = {\n accept: 'application/json',\n 'private-token': direct.accessToken,\n };\n const init: RequestInit = { method, headers, signal: AbortSignal.timeout(15_000) };\n if (options.body !== undefined) {\n headers['content-type'] = 'application/json';\n init.body = JSON.stringify(options.body);\n }\n\n let response: Response;\n try {\n response = await direct.fetch(`${direct.baseUrl}${apiPath}${suffix}`, init);\n } catch (error) {\n const message = (error instanceof Error ? error.message : String(error))\n .split(direct.accessToken)\n .join('[REDACTED]');\n throw new GitLabApiError(message, null);\n }\n if (!response.ok) {\n const message = (await extractError(response)).split(direct.accessToken).join('[REDACTED]');\n throw new GitLabApiError(message, response.status);\n }\n if (response.status === 204) return undefined as T;\n return (await response.json()) as T;\n }\n}\n\nasync function extractError(response: Response): Promise<string> {\n try {\n const data = (await response.clone().json()) as Record<string, unknown>;\n if (typeof data.message === 'string' && data.message) return data.message;\n if (typeof data.error === 'string' && data.error) return data.error;\n } catch {\n // Fall through to the status-based message.\n }\n return `GitLab API request failed (${response.status})`;\n}\n\nfunction normalizeIssue(response: GitLabIssueResponse): GitLabIssue {\n const { labels, ...issue } = response;\n const labelDetails = (labels ?? []).filter((label): label is GitLabLabelDetail => typeof label !== 'string');\n return {\n ...issue,\n labels: (labels ?? []).map(label => (typeof label === 'string' ? label : label.name)),\n ...(labelDetails.length > 0 ? { labelDetails } : {}),\n };\n}\n"],"mappings":"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"}