@cursor/bdk 0.2.9 → 0.2.10

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 (570) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  197. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  198. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  199. package/dist/docs/building-with-agents.html +37 -37
  200. package/dist/docs/building-with-agents.md +2 -0
  201. package/dist/docs/deployment.html +38 -38
  202. package/dist/docs/deployment.md +7 -0
  203. package/dist/docs/evals.html +36 -36
  204. package/dist/docs/guides/agent-to-agent.html +35 -35
  205. package/dist/docs/guides/bitbucket.html +38 -38
  206. package/dist/docs/guides/bitbucket.md +9 -1
  207. package/dist/docs/guides/cloud-agents.html +35 -35
  208. package/dist/docs/guides/convert-automation.html +35 -35
  209. package/dist/docs/guides/github.html +39 -39
  210. package/dist/docs/guides/github.md +20 -4
  211. package/dist/docs/guides/gitlab.html +38 -38
  212. package/dist/docs/guides/gitlab.md +9 -1
  213. package/dist/docs/guides/grokbot-agents.html +35 -35
  214. package/dist/docs/guides/hooks.html +35 -35
  215. package/dist/docs/guides/improve.html +35 -35
  216. package/dist/docs/guides/jev.html +35 -35
  217. package/dist/docs/guides/mcp-oauth.html +35 -35
  218. package/dist/docs/guides/migrate.html +66 -0
  219. package/dist/docs/guides/migrate.md +122 -0
  220. package/dist/docs/guides/opentelemetry.html +35 -35
  221. package/dist/docs/guides/slack.html +35 -35
  222. package/dist/docs/guides/webhooks.html +35 -35
  223. package/dist/docs/hashmap.json +1 -1
  224. package/dist/docs/hillclimbing.html +35 -35
  225. package/dist/docs/index.html +35 -35
  226. package/dist/docs/llms-full.txt +214 -6
  227. package/dist/docs/llms.txt +1 -0
  228. package/dist/docs/quickstart.html +35 -35
  229. package/dist/docs/reference/agent-config.html +35 -35
  230. package/dist/docs/reference/artifacts.html +35 -35
  231. package/dist/docs/reference/channels.html +35 -35
  232. package/dist/docs/reference/cli.html +39 -38
  233. package/dist/docs/reference/cli.md +39 -0
  234. package/dist/docs/reference/connections.html +35 -35
  235. package/dist/docs/reference/evals.html +35 -35
  236. package/dist/docs/reference/extensions.html +35 -35
  237. package/dist/docs/reference/hooks.html +35 -35
  238. package/dist/docs/reference/http-api.html +35 -35
  239. package/dist/docs/reference/instructions.html +35 -35
  240. package/dist/docs/reference/playground.html +35 -35
  241. package/dist/docs/reference/project-layout.html +35 -35
  242. package/dist/docs/reference/prompt.html +35 -35
  243. package/dist/docs/reference/schedules.html +35 -35
  244. package/dist/docs/reference/sessions.html +35 -35
  245. package/dist/docs/reference/skills.html +38 -38
  246. package/dist/docs/reference/subagents.html +35 -35
  247. package/dist/docs/reference/tools.html +35 -35
  248. package/dist/docs/templates/agentic-owners.html +35 -35
  249. package/dist/docs/templates/grokbot-agents.html +35 -35
  250. package/dist/docs/templates/security-reviewer.html +35 -35
  251. package/dist/docs/templates/thermo-quality-review.html +35 -35
  252. package/dist/docs/templates/thermo-review.html +35 -35
  253. package/dist/docs/templates/triage.html +35 -35
  254. package/dist/docs/troubleshooting.html +36 -36
  255. package/dist/docs/troubleshooting.md +1 -0
  256. package/dist/evals/assertions.js +20 -34
  257. package/dist/evals/expect.js +3 -6
  258. package/dist/evals/judge.js +5 -8
  259. package/dist/evals/loaders.js +45 -62
  260. package/dist/evals/matchers.js +2 -3
  261. package/dist/evals/reporters.js +43 -67
  262. package/dist/evals/results.js +1 -1
  263. package/dist/evals/run-facts.js +5 -6
  264. package/dist/evals.js +27 -15
  265. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  267. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  268. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  269. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  270. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  271. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  272. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  273. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  274. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  275. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  276. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  277. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  278. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  279. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  280. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  281. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  282. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  283. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  284. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  285. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  286. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  287. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  288. package/dist/extensions/jev/extension.js +3 -3
  289. package/dist/extensions/jev/lib/evaluate.js +43 -60
  290. package/dist/extensions/jev/tools/evaluate.js +6 -17
  291. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  292. package/dist/extensions.js +3 -5
  293. package/dist/files-backends/cursor-hosted.js +504 -523
  294. package/dist/files-backends/local-fs.js +72 -134
  295. package/dist/files.js +3 -3
  296. package/dist/filesystem.js +562 -861
  297. package/dist/index.js +16 -35
  298. package/dist/internal/advertise-tools.js +74 -86
  299. package/dist/internal/artifacts-store.js +298 -361
  300. package/dist/internal/as-of.js +2 -4
  301. package/dist/internal/authored-alias-hooks.js +6 -4
  302. package/dist/internal/authored-loaders.js +37 -52
  303. package/dist/internal/bounded-int.js +1 -2
  304. package/dist/internal/bounded.js +13 -24
  305. package/dist/internal/brand.js +1 -1
  306. package/dist/internal/browser-origin-guard.js +4 -4
  307. package/dist/internal/builtin-tools/artifacts.js +15 -27
  308. package/dist/internal/builtin-tools/index.js +2 -3
  309. package/dist/internal/builtin-tools/reminders.js +33 -52
  310. package/dist/internal/channel-architecture.d.ts +21 -0
  311. package/dist/internal/channel-architecture.d.ts.map +1 -0
  312. package/dist/internal/channel-architecture.js +41 -0
  313. package/dist/internal/channel-dispatch.js +3 -4
  314. package/dist/internal/channel-route-dispatch.js +40 -51
  315. package/dist/internal/channel-state.js +1 -1
  316. package/dist/internal/chat-client.js +319 -340
  317. package/dist/internal/cli-ax.js +1262 -1294
  318. package/dist/internal/cli-bitbucket.js +244 -272
  319. package/dist/internal/cli-convert-automation.js +137 -151
  320. package/dist/internal/cli-cursor.js +126 -147
  321. package/dist/internal/cli-deploy.d.ts.map +1 -1
  322. package/dist/internal/cli-deploy.js +1457 -1507
  323. package/dist/internal/cli-docs.js +130 -147
  324. package/dist/internal/cli-github.js +437 -476
  325. package/dist/internal/cli-gitlab.js +259 -288
  326. package/dist/internal/cli-images.js +266 -334
  327. package/dist/internal/cli-manifest.js +25 -37
  328. package/dist/internal/cli-mcp-oauth.js +228 -247
  329. package/dist/internal/cli-mcp.js +358 -383
  330. package/dist/internal/cli-migrate.js +73 -90
  331. package/dist/internal/cli-skills.js +35 -47
  332. package/dist/internal/cli-slack-manual.d.ts +0 -1
  333. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  334. package/dist/internal/cli-slack-manual.js +175 -204
  335. package/dist/internal/cli-slack.d.ts +1 -1
  336. package/dist/internal/cli-slack.d.ts.map +1 -1
  337. package/dist/internal/cli-slack.js +416 -456
  338. package/dist/internal/cloud-merge.js +7 -3
  339. package/dist/internal/cloud-turn-cost.js +8 -1
  340. package/dist/internal/connection-env.js +5 -6
  341. package/dist/internal/continuation-channel.js +10 -7
  342. package/dist/internal/continuation-identity.js +85 -67
  343. package/dist/internal/conversation-mirror.js +112 -131
  344. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  345. package/dist/internal/cron.js +3 -3
  346. package/dist/internal/cursor/account-mcp.js +147 -146
  347. package/dist/internal/cursor/backend-client.js +290 -320
  348. package/dist/internal/cursor/bound-secret-file.js +3 -3
  349. package/dist/internal/cursor/credentials.js +127 -142
  350. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  351. package/dist/internal/cursor/github-credentials.js +91 -108
  352. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  353. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  354. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  355. package/dist/internal/cursor/session-token.js +36 -48
  356. package/dist/internal/cursor/store-api-client.js +77 -92
  357. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  358. package/dist/internal/cursor-agent-template.js +1 -1
  359. package/dist/internal/cursor-deployment-relay.js +33 -54
  360. package/dist/internal/cursor-event-relay.js +65 -59
  361. package/dist/internal/cursor-relay-core.js +258 -286
  362. package/dist/internal/deferred-channel-session.js +3 -12
  363. package/dist/internal/deploy-client.js +410 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  536. package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  570. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -18,15 +18,6 @@
18
18
  * scoped to; the backend swaps in the tenant's Bitbucket credential and
19
19
  * picks the upstream (Cloud 2.0 or the DC host's 1.0) per tenant.
20
20
  */
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
21
  export const DEFAULT_BITBUCKET_CLOUD_API_BASE_URL = "https://api.bitbucket.org/2.0";
31
22
  /** Header the SCM proxy reads to scope a Bitbucket call to one repo. */
32
23
  export const CURSOR_BITBUCKET_REPOS_HEADER = "x-cursor-bitbucket-repos";
@@ -42,7 +33,7 @@ export class BitbucketApiError extends Error {
42
33
  }
43
34
  }
44
35
  function envValue(value) {
45
- const trimmed = value === null || value === void 0 ? void 0 : value.trim();
36
+ const trimmed = value?.trim();
46
37
  return trimmed === undefined || trimmed === "" ? undefined : trimmed;
47
38
  }
48
39
  /** `BITBUCKET_TOKEN` when set. */
@@ -56,8 +47,7 @@ export function envBitbucketToken(env = process.env) {
56
47
  * read from a delivery payload.
57
48
  */
58
49
  export function bitbucketApiBaseUrl(input) {
59
- var _a;
60
- const fromEnv = envValue(((_a = input.env) !== null && _a !== void 0 ? _a : process.env).BITBUCKET_API_BASE_URL);
50
+ const fromEnv = envValue((input.env ?? process.env).BITBUCKET_API_BASE_URL);
61
51
  if (fromEnv !== undefined) {
62
52
  return fromEnv.replace(/\/+$/, "");
63
53
  }
@@ -68,7 +58,7 @@ export function bitbucketApiBaseUrl(input) {
68
58
  try {
69
59
  return `${new URL(input.repoHtmlUrl).origin}/rest/api/1.0`;
70
60
  }
71
- catch (_b) {
61
+ catch {
72
62
  // no usable host
73
63
  }
74
64
  }
@@ -88,20 +78,20 @@ function buildQuery(query) {
88
78
  return encoded === "" ? "" : `?${encoded}`;
89
79
  }
90
80
  export function createBitbucketClient(options = {}) {
91
- var _a, _b;
92
- var _c, _d, _e;
93
- const fetchImpl = (_c = options.fetch) !== null && _c !== void 0 ? _c : fetch;
94
- const apiBaseUrl = (_e = (_d = (_a = options.proxy) === null || _a === void 0 ? void 0 : _a.apiBaseUrl) !== null && _d !== void 0 ? _d : options.apiBaseUrl) !== null && _e !== void 0 ? _e : envValue(process.env.BITBUCKET_API_BASE_URL);
81
+ const fetchImpl = options.fetch ?? fetch;
82
+ const apiBaseUrl = options.proxy?.apiBaseUrl ?? options.apiBaseUrl ?? envValue(process.env.BITBUCKET_API_BASE_URL);
95
83
  if (apiBaseUrl === undefined || apiBaseUrl.trim() === "") {
96
84
  throw new Error("bitbucketChannel: no Bitbucket API base URL (pass apiBaseUrl, set BITBUCKET_API_BASE_URL, or serve with --cursor-scm-proxy and cursorAccount).");
97
85
  }
98
86
  const base = apiBaseUrl.replace(/\/+$/, "");
99
- const repo = (_b = options.repo) === null || _b === void 0 ? void 0 : _b.trim().replace(/^\/+|\/+$/g, "");
100
- const authHeaders = () => __awaiter(this, void 0, void 0, function* () {
101
- var _a, _b;
87
+ const repo = options.repo?.trim().replace(/^\/+|\/+$/g, "");
88
+ const authHeaders = async () => {
102
89
  if (options.proxy !== undefined) {
103
- const headers = Object.assign({ authorization: `Bearer ${yield options.proxy.getApiKey()}` }, options.proxy.headers);
104
- if (((_a = headers[CURSOR_BITBUCKET_REPOS_HEADER]) !== null && _a !== void 0 ? _a : "").trim() === "" &&
90
+ const headers = {
91
+ authorization: `Bearer ${await options.proxy.getApiKey()}`,
92
+ ...options.proxy.headers,
93
+ };
94
+ if ((headers[CURSOR_BITBUCKET_REPOS_HEADER] ?? "").trim() === "" &&
105
95
  repo !== undefined &&
106
96
  repo !== "") {
107
97
  headers[CURSOR_BITBUCKET_REPOS_HEADER] = repo.toLowerCase();
@@ -109,45 +99,46 @@ export function createBitbucketClient(options = {}) {
109
99
  return headers;
110
100
  }
111
101
  const token = typeof options.token === "function"
112
- ? yield options.token()
113
- : ((_b = options.token) !== null && _b !== void 0 ? _b : envBitbucketToken());
102
+ ? await options.token()
103
+ : (options.token ?? envBitbucketToken());
114
104
  if (token === undefined || token === "") {
115
105
  throw new Error("bitbucketChannel: no Bitbucket credential available (pass token, set BITBUCKET_TOKEN, or serve with --cursor-scm-proxy and cursorAccount).");
116
106
  }
117
107
  return { authorization: `Bearer ${token}` };
118
- });
108
+ };
119
109
  return {
120
110
  apiBaseUrl: base,
121
- request(input) {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- var _a;
124
- const path = input.path.startsWith("/") ? input.path : `/${input.path}`;
125
- const accept = (_a = input.accept) !== null && _a !== void 0 ? _a : "application/json";
126
- const response = yield fetchImpl(`${base}${path}${buildQuery(input.query)}`, {
127
- method: input.method,
128
- headers: Object.assign(Object.assign(Object.assign({}, (yield authHeaders())), { accept }), (input.body === undefined ? {} : { "content-type": "application/json" })),
129
- body: input.body === undefined ? undefined : JSON.stringify(input.body),
130
- });
131
- const text = yield response.text();
132
- let parsed = text;
133
- if (accept === "application/json") {
134
- try {
135
- parsed = text === "" ? undefined : JSON.parse(text);
136
- }
137
- catch (_b) {
138
- parsed = text;
139
- }
111
+ async request(input) {
112
+ const path = input.path.startsWith("/") ? input.path : `/${input.path}`;
113
+ const accept = input.accept ?? "application/json";
114
+ const response = await fetchImpl(`${base}${path}${buildQuery(input.query)}`, {
115
+ method: input.method,
116
+ headers: {
117
+ ...(await authHeaders()),
118
+ accept,
119
+ ...(input.body === undefined ? {} : { "content-type": "application/json" }),
120
+ },
121
+ body: input.body === undefined ? undefined : JSON.stringify(input.body),
122
+ });
123
+ const text = await response.text();
124
+ let parsed = text;
125
+ if (accept === "application/json") {
126
+ try {
127
+ parsed = text === "" ? undefined : JSON.parse(text);
140
128
  }
141
- if (!response.ok) {
142
- throw new BitbucketApiError({
143
- body: parsed,
144
- method: input.method,
145
- path,
146
- status: response.status,
147
- });
129
+ catch {
130
+ parsed = text;
148
131
  }
149
- return parsed;
150
- });
132
+ }
133
+ if (!response.ok) {
134
+ throw new BitbucketApiError({
135
+ body: parsed,
136
+ method: input.method,
137
+ path,
138
+ status: response.status,
139
+ });
140
+ }
141
+ return parsed;
151
142
  },
152
143
  };
153
144
  }
@@ -163,15 +154,16 @@ function num(value) {
163
154
  return typeof value === "number" && Number.isFinite(value) ? value : undefined;
164
155
  }
165
156
  function errorStatus(error) {
166
- var _a;
167
- return num((_a = asRecord(error)) === null || _a === void 0 ? void 0 : _a.status);
157
+ return num(asRecord(error)?.status);
168
158
  }
169
159
  function bitbucketAuthorUsername(raw) {
170
- var _a;
171
- var _b, _c, _d, _e;
172
- const author = asRecord((_a = asRecord(raw)) === null || _a === void 0 ? void 0 : _a.author);
173
- const user = asRecord(author === null || author === void 0 ? void 0 : author.user);
174
- return ((_e = (_d = (_c = (_b = str(author === null || author === void 0 ? void 0 : author.nickname)) !== null && _b !== void 0 ? _b : str(user === null || user === void 0 ? void 0 : user.name)) !== null && _c !== void 0 ? _c : str(user === null || user === void 0 ? void 0 : user.slug)) !== null && _d !== void 0 ? _d : str(author === null || author === void 0 ? void 0 : author.display_name)) !== null && _e !== void 0 ? _e : str(user === null || user === void 0 ? void 0 : user.displayName));
160
+ const author = asRecord(asRecord(raw)?.author);
161
+ const user = asRecord(author?.user);
162
+ return (str(author?.nickname) ??
163
+ str(user?.name) ??
164
+ str(user?.slug) ??
165
+ str(author?.display_name) ??
166
+ str(user?.displayName));
175
167
  }
176
168
  const GIT_PATH_ESCAPES = {
177
169
  a: "\u0007",
@@ -185,7 +177,6 @@ const GIT_PATH_ESCAPES = {
185
177
  '"': '"',
186
178
  };
187
179
  function unescapeGitPath(path, quoted) {
188
- var _a, _b;
189
180
  if (!quoted) {
190
181
  return path;
191
182
  }
@@ -211,8 +202,8 @@ function unescapeGitPath(path, quoted) {
211
202
  continue;
212
203
  }
213
204
  flush();
214
- const next = (_a = path[index + 1]) !== null && _a !== void 0 ? _a : "";
215
- output += (_b = GIT_PATH_ESCAPES[next]) !== null && _b !== void 0 ? _b : next;
205
+ const next = path[index + 1] ?? "";
206
+ output += GIT_PATH_ESCAPES[next] ?? next;
216
207
  index += 1;
217
208
  }
218
209
  flush();
@@ -220,21 +211,20 @@ function unescapeGitPath(path, quoted) {
220
211
  }
221
212
  /** Split a Git-style unified diff into normalized changed files. */
222
213
  export function splitBitbucketUnifiedDiff(diff) {
223
- var _a, _b, _c, _d;
224
214
  const files = [];
225
215
  const sections = diff.split(/^(?=diff --git )/m).filter(Boolean);
226
216
  for (const section of sections) {
227
217
  const lines = section.replace(/\n$/, "").split("\n");
228
- const header = /^diff --git ("?)a\/(.+?)\1 ("?)b\/(.+?)\3$/.exec((_a = lines[0]) !== null && _a !== void 0 ? _a : "");
218
+ const header = /^diff --git ("?)a\/(.+?)\1 ("?)b\/(.+?)\3$/.exec(lines[0] ?? "");
229
219
  if (header === null) {
230
220
  continue;
231
221
  }
232
- const oldPath = unescapeGitPath((_b = header[2]) !== null && _b !== void 0 ? _b : "", header[1] !== "");
233
- const newPath = unescapeGitPath((_c = header[4]) !== null && _c !== void 0 ? _c : "", header[3] !== "");
222
+ const oldPath = unescapeGitPath(header[2] ?? "", header[1] !== "");
223
+ const newPath = unescapeGitPath(header[4] ?? "", header[3] !== "");
234
224
  let status = "modified";
235
225
  let bodyStart = 1;
236
226
  for (; bodyStart < lines.length; bodyStart += 1) {
237
- const line = (_d = lines[bodyStart]) !== null && _d !== void 0 ? _d : "";
227
+ const line = lines[bodyStart] ?? "";
238
228
  if (line.startsWith("@@")) {
239
229
  break;
240
230
  }
@@ -266,10 +256,10 @@ function encodePath(path) {
266
256
  .join("/");
267
257
  }
268
258
  function fallbackUrl(repository) {
269
- var _a;
270
- return ((_a = repository.htmlUrl) !== null && _a !== void 0 ? _a : (repository.dialect === "cloud"
271
- ? `https://bitbucket.org/${repository.fullName}`
272
- : "https://cursor.com"));
259
+ return (repository.htmlUrl ??
260
+ (repository.dialect === "cloud"
261
+ ? `https://bitbucket.org/${repository.fullName}`
262
+ : "https://cursor.com"));
273
263
  }
274
264
  /** `/repositories/{workspace}/{slug}` — Bitbucket Cloud 2.0. */
275
265
  export function bitbucketCloudRepoPath(repository) {
@@ -279,28 +269,23 @@ export function bitbucketCloudRepoPath(repository) {
279
269
  export function bitbucketDataCenterRepoPath(repository) {
280
270
  return `/projects/${encodeURIComponent(repository.owner)}/repos/${encodeURIComponent(repository.slug)}`;
281
271
  }
282
- export function expandBitbucketCloudCommitSha(bitbucket, repository, sha, onError) {
283
- return __awaiter(this, void 0, void 0, function* () {
284
- var _a;
285
- if (sha === undefined || !/^[0-9a-f]{7,39}$/i.test(sha)) {
286
- return sha;
287
- }
288
- try {
289
- const commit = yield bitbucket.request({
290
- method: "GET",
291
- path: `${bitbucketCloudRepoPath(repository)}/commit/${encodeURIComponent(sha)}`,
292
- });
293
- return /^[0-9a-f]{40}$/i.test((_a = commit.hash) !== null && _a !== void 0 ? _a : "") ? commit.hash : sha;
294
- }
295
- catch (error) {
296
- onError === null || onError === void 0 ? void 0 : onError(error);
297
- return sha;
298
- }
299
- });
272
+ export async function expandBitbucketCloudCommitSha(bitbucket, repository, sha, onError) {
273
+ if (sha === undefined || !/^[0-9a-f]{7,39}$/i.test(sha)) {
274
+ return sha;
275
+ }
276
+ try {
277
+ const commit = await bitbucket.request({
278
+ method: "GET",
279
+ path: `${bitbucketCloudRepoPath(repository)}/commit/${encodeURIComponent(sha)}`,
280
+ });
281
+ return /^[0-9a-f]{40}$/i.test(commit.hash ?? "") ? commit.hash : sha;
282
+ }
283
+ catch (error) {
284
+ onError?.(error);
285
+ return sha;
286
+ }
300
287
  }
301
288
  function bitbucketPullRequestFromRaw(raw, id, htmlUrl) {
302
- var _a, _b, _c, _d, _e, _f, _g, _h;
303
- var _j, _k, _l, _m;
304
289
  const source = asRecord(raw.source);
305
290
  const destination = asRecord(raw.destination);
306
291
  return {
@@ -310,10 +295,10 @@ function bitbucketPullRequestFromRaw(raw, id, htmlUrl) {
310
295
  state: str(raw.state),
311
296
  draft: typeof raw.draft === "boolean" ? raw.draft : undefined,
312
297
  authorUsername: bitbucketAuthorUsername(raw),
313
- sourceBranch: (_j = str((_a = asRecord(source === null || source === void 0 ? void 0 : source.branch)) === null || _a === void 0 ? void 0 : _a.name)) !== null && _j !== void 0 ? _j : str((_b = asRecord(raw.fromRef)) === null || _b === void 0 ? void 0 : _b.displayId),
314
- targetBranch: (_k = str((_c = asRecord(destination === null || destination === void 0 ? void 0 : destination.branch)) === null || _c === void 0 ? void 0 : _c.name)) !== null && _k !== void 0 ? _k : str((_d = asRecord(raw.toRef)) === null || _d === void 0 ? void 0 : _d.displayId),
315
- headSha: (_l = str((_e = asRecord(source === null || source === void 0 ? void 0 : source.commit)) === null || _e === void 0 ? void 0 : _e.hash)) !== null && _l !== void 0 ? _l : str((_f = asRecord(raw.fromRef)) === null || _f === void 0 ? void 0 : _f.latestCommit),
316
- baseSha: (_m = str((_g = asRecord(destination === null || destination === void 0 ? void 0 : destination.commit)) === null || _g === void 0 ? void 0 : _g.hash)) !== null && _m !== void 0 ? _m : str((_h = asRecord(raw.toRef)) === null || _h === void 0 ? void 0 : _h.latestCommit),
298
+ sourceBranch: str(asRecord(source?.branch)?.name) ?? str(asRecord(raw.fromRef)?.displayId),
299
+ targetBranch: str(asRecord(destination?.branch)?.name) ?? str(asRecord(raw.toRef)?.displayId),
300
+ headSha: str(asRecord(source?.commit)?.hash) ?? str(asRecord(raw.fromRef)?.latestCommit),
301
+ baseSha: str(asRecord(destination?.commit)?.hash) ?? str(asRecord(raw.toRef)?.latestCommit),
317
302
  htmlUrl,
318
303
  raw,
319
304
  };
@@ -323,18 +308,17 @@ export function createBitbucketPullRequestReadApi(bitbucket, options = {}) {
323
308
  const repo = repository.dialect === "cloud"
324
309
  ? bitbucketCloudRepoPath(repository)
325
310
  : bitbucketDataCenterRepoPath(repository);
326
- const cloudPullRequestFromActivity = (id) => __awaiter(this, void 0, void 0, function* () {
327
- var _a;
311
+ const cloudPullRequestFromActivity = async (id) => {
328
312
  let path = `${repo}/pullrequests/${id}/activity`;
329
313
  let query = { pagelen: 50 };
330
314
  for (let page = 0; page < 20; page += 1) {
331
- const response = yield bitbucket.request({
315
+ const response = await bitbucket.request({
332
316
  method: "GET",
333
317
  path,
334
318
  query,
335
319
  });
336
320
  for (const value of Array.isArray(response.values) ? response.values : []) {
337
- const update = asRecord((_a = asRecord(value)) === null || _a === void 0 ? void 0 : _a.update);
321
+ const update = asRecord(asRecord(value)?.update);
338
322
  if (update !== undefined) {
339
323
  return bitbucketPullRequestFromRaw(update, id);
340
324
  }
@@ -349,193 +333,190 @@ export function createBitbucketPullRequestReadApi(bitbucket, options = {}) {
349
333
  query = Object.fromEntries(nextUrl.searchParams.entries());
350
334
  }
351
335
  return undefined;
352
- });
336
+ };
353
337
  return {
354
- getPullRequest(id) {
355
- return __awaiter(this, void 0, void 0, function* () {
356
- var _a, _b;
357
- let pullRequest;
358
- try {
359
- pullRequest = yield bitbucket.api.getPullRequest(id);
360
- }
361
- catch (error) {
362
- const status = errorStatus(error);
363
- if (repository.dialect !== "cloud" || status === undefined || status < 500) {
364
- throw error;
365
- }
366
- (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, { kind: "metadata-fallback", status });
367
- const fallback = yield cloudPullRequestFromActivity(id);
368
- if (fallback === undefined) {
369
- throw error;
370
- }
371
- pullRequest = fallback;
338
+ async getPullRequest(id) {
339
+ let pullRequest;
340
+ try {
341
+ pullRequest = await bitbucket.api.getPullRequest(id);
342
+ }
343
+ catch (error) {
344
+ const status = errorStatus(error);
345
+ if (repository.dialect !== "cloud" || status === undefined || status < 500) {
346
+ throw error;
372
347
  }
373
- const normalized = Object.assign(Object.assign({}, pullRequest), { draft: ((_b = asRecord(pullRequest.raw)) === null || _b === void 0 ? void 0 : _b.draft) === true, authorUsername: bitbucketAuthorUsername(pullRequest.raw) });
374
- if (repository.dialect !== "cloud") {
375
- return normalized;
348
+ options.onDiagnostic?.({ kind: "metadata-fallback", status });
349
+ const fallback = await cloudPullRequestFromActivity(id);
350
+ if (fallback === undefined) {
351
+ throw error;
376
352
  }
377
- const [headSha, baseSha] = yield Promise.all([
378
- expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.headSha, error => { var _a; return pullRequest.headSha === undefined
379
- ? undefined
380
- : (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, {
381
- kind: "commit-expansion-failed",
382
- sha: pullRequest.headSha,
383
- error,
384
- }); }),
385
- expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.baseSha, error => { var _a; return pullRequest.baseSha === undefined
386
- ? undefined
387
- : (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, {
388
- kind: "commit-expansion-failed",
389
- sha: pullRequest.baseSha,
390
- error,
391
- }); }),
392
- ]);
393
- return Object.assign(Object.assign({}, normalized), { headSha, baseSha });
394
- });
353
+ pullRequest = fallback;
354
+ }
355
+ const normalized = {
356
+ ...pullRequest,
357
+ draft: asRecord(pullRequest.raw)?.draft === true,
358
+ authorUsername: bitbucketAuthorUsername(pullRequest.raw),
359
+ };
360
+ if (repository.dialect !== "cloud") {
361
+ return normalized;
362
+ }
363
+ const [headSha, baseSha] = await Promise.all([
364
+ expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.headSha, error => pullRequest.headSha === undefined
365
+ ? undefined
366
+ : options.onDiagnostic?.({
367
+ kind: "commit-expansion-failed",
368
+ sha: pullRequest.headSha,
369
+ error,
370
+ })),
371
+ expandBitbucketCloudCommitSha(bitbucket, repository, pullRequest.baseSha, error => pullRequest.baseSha === undefined
372
+ ? undefined
373
+ : options.onDiagnostic?.({
374
+ kind: "commit-expansion-failed",
375
+ sha: pullRequest.baseSha,
376
+ error,
377
+ })),
378
+ ]);
379
+ return { ...normalized, headSha, baseSha };
395
380
  },
396
- getMergeBaseSha(id, base, headSha) {
397
- return __awaiter(this, void 0, void 0, function* () {
398
- if (repository.dialect === "cloud") {
399
- const commit = yield bitbucket.request({
400
- method: "GET",
401
- path: `${repo}/merge-base/${encodeURIComponent(headSha)}..${encodeURIComponent(base)}`,
402
- });
403
- return str(commit.hash);
404
- }
405
- const commit = yield bitbucket.request({
381
+ async getMergeBaseSha(id, base, headSha) {
382
+ if (repository.dialect === "cloud") {
383
+ const commit = await bitbucket.request({
406
384
  method: "GET",
407
- path: `${repo}/pull-requests/${id}/merge-base`,
385
+ path: `${repo}/merge-base/${encodeURIComponent(headSha)}..${encodeURIComponent(base)}`,
408
386
  });
409
- return str(commit.id);
387
+ return str(commit.hash);
388
+ }
389
+ const commit = await bitbucket.request({
390
+ method: "GET",
391
+ path: `${repo}/pull-requests/${id}/merge-base`,
410
392
  });
393
+ return str(commit.id);
411
394
  },
412
- listChangedFiles(id, input) {
413
- return __awaiter(this, void 0, void 0, function* () {
414
- var _a;
415
- var _b;
416
- try {
417
- return splitBitbucketUnifiedDiff(yield bitbucket.api.getPullRequestDiff(id));
418
- }
419
- catch (error) {
420
- const status = errorStatus(error);
421
- const comparisonBase = (_b = input === null || input === void 0 ? void 0 : input.mergeBaseSha) !== null && _b !== void 0 ? _b : input === null || input === void 0 ? void 0 : input.baseSha;
422
- if (repository.dialect !== "cloud" ||
423
- status === undefined ||
424
- status < 500 ||
425
- (input === null || input === void 0 ? void 0 : input.headSha) === undefined ||
426
- comparisonBase === undefined) {
427
- throw error;
428
- }
429
- (_a = options.onDiagnostic) === null || _a === void 0 ? void 0 : _a.call(options, { kind: "diff-fallback", status });
430
- const diff = yield bitbucket.request({
431
- method: "GET",
432
- path: `${repo}/diff/${encodeURIComponent(input.headSha)}..${encodeURIComponent(comparisonBase)}`,
433
- query: { topic: input.mergeBaseResolved === true ? "false" : "true" },
434
- accept: "text/plain",
435
- });
436
- return splitBitbucketUnifiedDiff(diff);
395
+ async listChangedFiles(id, input) {
396
+ try {
397
+ return splitBitbucketUnifiedDiff(await bitbucket.api.getPullRequestDiff(id));
398
+ }
399
+ catch (error) {
400
+ const status = errorStatus(error);
401
+ const comparisonBase = input?.mergeBaseSha ?? input?.baseSha;
402
+ if (repository.dialect !== "cloud" ||
403
+ status === undefined ||
404
+ status < 500 ||
405
+ input?.headSha === undefined ||
406
+ comparisonBase === undefined) {
407
+ throw error;
437
408
  }
438
- });
409
+ options.onDiagnostic?.({ kind: "diff-fallback", status });
410
+ const diff = await bitbucket.request({
411
+ method: "GET",
412
+ path: `${repo}/diff/${encodeURIComponent(input.headSha)}..${encodeURIComponent(comparisonBase)}`,
413
+ query: { topic: input.mergeBaseResolved === true ? "false" : "true" },
414
+ accept: "text/plain",
415
+ });
416
+ return splitBitbucketUnifiedDiff(diff);
417
+ }
439
418
  },
440
419
  };
441
420
  }
442
421
  export function cloudBitbucketApi(client, repository) {
443
422
  const repo = bitbucketCloudRepoPath(repository);
444
423
  const mapComment = (raw) => {
445
- var _a, _b;
446
- var _c, _d, _e, _f;
447
- const record = (_c = asRecord(raw)) !== null && _c !== void 0 ? _c : {};
424
+ const record = asRecord(raw) ?? {};
448
425
  const inline = asRecord(record.inline);
449
426
  return {
450
- id: (_d = num(record.id)) !== null && _d !== void 0 ? _d : 0,
451
- body: (_e = str((_a = asRecord(record.content)) === null || _a === void 0 ? void 0 : _a.raw)) !== null && _e !== void 0 ? _e : "",
452
- authorId: str((_b = asRecord(record.user)) === null || _b === void 0 ? void 0 : _b.uuid),
453
- path: str(inline === null || inline === void 0 ? void 0 : inline.path),
454
- line: (_f = num(inline === null || inline === void 0 ? void 0 : inline.to)) !== null && _f !== void 0 ? _f : num(inline === null || inline === void 0 ? void 0 : inline.from),
427
+ id: num(record.id) ?? 0,
428
+ body: str(asRecord(record.content)?.raw) ?? "",
429
+ authorId: str(asRecord(record.user)?.uuid),
430
+ path: str(inline?.path),
431
+ line: num(inline?.to) ?? num(inline?.from),
455
432
  raw,
456
433
  };
457
434
  };
458
435
  return {
459
436
  dialect: "cloud",
460
437
  repository,
461
- getPullRequest(id) {
462
- return __awaiter(this, void 0, void 0, function* () {
463
- var _a, _b, _c, _d, _e, _f;
464
- var _g;
465
- const raw = yield client.request({
466
- method: "GET",
467
- path: `${repo}/pullrequests/${id}`,
468
- });
469
- const source = asRecord(raw.source);
470
- const destination = asRecord(raw.destination);
471
- return {
472
- id: (_g = num(raw.id)) !== null && _g !== void 0 ? _g : id,
473
- title: str(raw.title),
474
- description: str(raw.description),
475
- state: str(raw.state),
476
- sourceBranch: str((_a = asRecord(source === null || source === void 0 ? void 0 : source.branch)) === null || _a === void 0 ? void 0 : _a.name),
477
- targetBranch: str((_b = asRecord(destination === null || destination === void 0 ? void 0 : destination.branch)) === null || _b === void 0 ? void 0 : _b.name),
478
- headSha: str((_c = asRecord(source === null || source === void 0 ? void 0 : source.commit)) === null || _c === void 0 ? void 0 : _c.hash),
479
- baseSha: str((_d = asRecord(destination === null || destination === void 0 ? void 0 : destination.commit)) === null || _d === void 0 ? void 0 : _d.hash),
480
- htmlUrl: str((_f = asRecord((_e = asRecord(raw.links)) === null || _e === void 0 ? void 0 : _e.html)) === null || _f === void 0 ? void 0 : _f.href),
481
- raw,
482
- };
438
+ async getPullRequest(id) {
439
+ const raw = await client.request({
440
+ method: "GET",
441
+ path: `${repo}/pullrequests/${id}`,
483
442
  });
443
+ const source = asRecord(raw.source);
444
+ const destination = asRecord(raw.destination);
445
+ return {
446
+ id: num(raw.id) ?? id,
447
+ title: str(raw.title),
448
+ description: str(raw.description),
449
+ state: str(raw.state),
450
+ sourceBranch: str(asRecord(source?.branch)?.name),
451
+ targetBranch: str(asRecord(destination?.branch)?.name),
452
+ headSha: str(asRecord(source?.commit)?.hash),
453
+ baseSha: str(asRecord(destination?.commit)?.hash),
454
+ htmlUrl: str(asRecord(asRecord(raw.links)?.html)?.href),
455
+ raw,
456
+ };
484
457
  },
485
458
  getPullRequestDiff: id => client.request({
486
459
  method: "GET",
487
460
  path: `${repo}/pullrequests/${id}/diff`,
488
461
  accept: "text/plain",
489
462
  }),
490
- listPullRequestComments(id) {
491
- return __awaiter(this, void 0, void 0, function* () {
492
- const comments = [];
493
- let page = `${repo}/pullrequests/${id}/comments`;
494
- let query = { pagelen: 100 };
495
- while (page !== undefined) {
496
- const raw = yield client.request({
497
- method: "GET",
498
- path: page,
499
- query,
500
- });
501
- for (const value of Array.isArray(raw.values) ? raw.values : []) {
502
- comments.push(mapComment(value));
503
- }
504
- const next = str(raw.next);
505
- if (next === undefined) {
506
- break;
507
- }
508
- // `next` is absolute; re-root it under the client base so the proxy
509
- // (which only forwards paths) keeps working.
510
- const nextUrl = new URL(next);
511
- const baseUrl = new URL(`${client.apiBaseUrl}/`);
512
- page = nextUrl.pathname.startsWith(baseUrl.pathname)
513
- ? nextUrl.pathname.slice(baseUrl.pathname.length - 1)
514
- : nextUrl.pathname;
515
- query = Object.fromEntries(nextUrl.searchParams.entries());
463
+ async listPullRequestComments(id) {
464
+ const comments = [];
465
+ let page = `${repo}/pullrequests/${id}/comments`;
466
+ let query = { pagelen: 100 };
467
+ while (page !== undefined) {
468
+ const raw = await client.request({
469
+ method: "GET",
470
+ path: page,
471
+ query,
472
+ });
473
+ for (const value of Array.isArray(raw.values) ? raw.values : []) {
474
+ comments.push(mapComment(value));
516
475
  }
517
- return comments;
518
- });
476
+ const next = str(raw.next);
477
+ if (next === undefined) {
478
+ break;
479
+ }
480
+ // `next` is absolute; re-root it under the client base so the proxy
481
+ // (which only forwards paths) keeps working.
482
+ const nextUrl = new URL(next);
483
+ const baseUrl = new URL(`${client.apiBaseUrl}/`);
484
+ page = nextUrl.pathname.startsWith(baseUrl.pathname)
485
+ ? nextUrl.pathname.slice(baseUrl.pathname.length - 1)
486
+ : nextUrl.pathname;
487
+ query = Object.fromEntries(nextUrl.searchParams.entries());
488
+ }
489
+ return comments;
519
490
  },
520
- postPullRequestComment(id, input) {
521
- return __awaiter(this, void 0, void 0, function* () {
522
- const raw = yield client.request({
523
- method: "POST",
524
- path: `${repo}/pullrequests/${id}/comments`,
525
- body: Object.assign({ content: { raw: input.body } }, (input.inline === undefined
491
+ async postPullRequestComment(id, input) {
492
+ const raw = await client.request({
493
+ method: "POST",
494
+ path: `${repo}/pullrequests/${id}/comments`,
495
+ body: {
496
+ content: { raw: input.body },
497
+ ...(input.inline === undefined
526
498
  ? {}
527
499
  : {
528
- inline: Object.assign({ path: input.inline.path }, (input.inline.line === undefined ? {} : { to: input.inline.line })),
529
- })),
530
- });
531
- return mapComment(raw);
500
+ inline: {
501
+ path: input.inline.path,
502
+ ...(input.inline.line === undefined ? {} : { to: input.inline.line }),
503
+ },
504
+ }),
505
+ },
532
506
  });
507
+ return mapComment(raw);
533
508
  },
534
- setBuildStatus: input => { var _a, _b; return client.request({
509
+ setBuildStatus: input => client.request({
535
510
  method: "POST",
536
511
  path: `${repo}/commit/${encodeURIComponent(input.sha)}/statuses/build`,
537
- body: Object.assign({ key: input.key, state: input.state, name: (_a = input.name) !== null && _a !== void 0 ? _a : input.key, url: (_b = input.url) !== null && _b !== void 0 ? _b : fallbackUrl(repository) }, (input.description === undefined ? {} : { description: input.description })),
538
- }); },
512
+ body: {
513
+ key: input.key,
514
+ state: input.state,
515
+ name: input.name ?? input.key,
516
+ url: input.url ?? fallbackUrl(repository),
517
+ ...(input.description === undefined ? {} : { description: input.description }),
518
+ },
519
+ }),
539
520
  getFileAtRef: (path, ref) => client.request({
540
521
  method: "GET",
541
522
  path: `${repo}/src/${encodeURIComponent(ref)}/${encodePath(path)}`,
@@ -546,47 +527,41 @@ export function cloudBitbucketApi(client, repository) {
546
527
  export function dcBitbucketApi(client, repository) {
547
528
  const repo = bitbucketDataCenterRepoPath(repository);
548
529
  const mapComment = (raw) => {
549
- var _a;
550
- var _b, _c, _d;
551
- const record = (_b = asRecord(raw)) !== null && _b !== void 0 ? _b : {};
530
+ const record = asRecord(raw) ?? {};
552
531
  const anchor = asRecord(record.anchor);
553
- const authorId = num((_a = asRecord(record.author)) === null || _a === void 0 ? void 0 : _a.id);
532
+ const authorId = num(asRecord(record.author)?.id);
554
533
  return {
555
- id: (_c = num(record.id)) !== null && _c !== void 0 ? _c : 0,
556
- body: (_d = str(record.text)) !== null && _d !== void 0 ? _d : "",
534
+ id: num(record.id) ?? 0,
535
+ body: str(record.text) ?? "",
557
536
  authorId: authorId === undefined ? undefined : String(authorId),
558
- path: str(anchor === null || anchor === void 0 ? void 0 : anchor.path),
559
- line: num(anchor === null || anchor === void 0 ? void 0 : anchor.line),
537
+ path: str(anchor?.path),
538
+ line: num(anchor?.line),
560
539
  raw,
561
540
  };
562
541
  };
563
542
  return {
564
543
  dialect: "data-center",
565
544
  repository,
566
- getPullRequest(id) {
567
- return __awaiter(this, void 0, void 0, function* () {
568
- var _a, _b;
569
- var _c;
570
- const raw = yield client.request({
571
- method: "GET",
572
- path: `${repo}/pull-requests/${id}`,
573
- });
574
- const fromRef = asRecord(raw.fromRef);
575
- const toRef = asRecord(raw.toRef);
576
- const self = (_a = asRecord(raw.links)) === null || _a === void 0 ? void 0 : _a.self;
577
- return {
578
- id: (_c = num(raw.id)) !== null && _c !== void 0 ? _c : id,
579
- title: str(raw.title),
580
- description: str(raw.description),
581
- state: str(raw.state),
582
- sourceBranch: str(fromRef === null || fromRef === void 0 ? void 0 : fromRef.displayId),
583
- targetBranch: str(toRef === null || toRef === void 0 ? void 0 : toRef.displayId),
584
- headSha: str(fromRef === null || fromRef === void 0 ? void 0 : fromRef.latestCommit),
585
- baseSha: str(toRef === null || toRef === void 0 ? void 0 : toRef.latestCommit),
586
- htmlUrl: Array.isArray(self) ? str((_b = asRecord(self[0])) === null || _b === void 0 ? void 0 : _b.href) : undefined,
587
- raw,
588
- };
545
+ async getPullRequest(id) {
546
+ const raw = await client.request({
547
+ method: "GET",
548
+ path: `${repo}/pull-requests/${id}`,
589
549
  });
550
+ const fromRef = asRecord(raw.fromRef);
551
+ const toRef = asRecord(raw.toRef);
552
+ const self = asRecord(raw.links)?.self;
553
+ return {
554
+ id: num(raw.id) ?? id,
555
+ title: str(raw.title),
556
+ description: str(raw.description),
557
+ state: str(raw.state),
558
+ sourceBranch: str(fromRef?.displayId),
559
+ targetBranch: str(toRef?.displayId),
560
+ headSha: str(fromRef?.latestCommit),
561
+ baseSha: str(toRef?.latestCommit),
562
+ htmlUrl: Array.isArray(self) ? str(asRecord(self[0])?.href) : undefined,
563
+ raw,
564
+ };
590
565
  },
591
566
  // `/pull-requests/{id}.diff` streams the raw unified diff; the sibling
592
567
  // `/pull-requests/{id}/diff` route returns a JSON `RestDiff` instead.
@@ -595,59 +570,68 @@ export function dcBitbucketApi(client, repository) {
595
570
  path: `${repo}/pull-requests/${id}.diff`,
596
571
  accept: "text/plain",
597
572
  }),
598
- listPullRequestComments(id) {
599
- return __awaiter(this, void 0, void 0, function* () {
600
- const comments = [];
601
- let start = 0;
602
- for (;;) {
603
- const raw = yield client.request({
604
- method: "GET",
605
- path: `${repo}/pull-requests/${id}/activities`,
606
- query: { limit: 100, start },
607
- });
608
- for (const value of Array.isArray(raw.values) ? raw.values : []) {
609
- const activity = asRecord(value);
610
- if ((activity === null || activity === void 0 ? void 0 : activity.action) === "COMMENTED" && activity.comment !== undefined) {
611
- comments.push(mapComment(activity.comment));
612
- }
613
- }
614
- const nextStart = num(raw.nextPageStart);
615
- if (raw.isLastPage !== false || nextStart === undefined) {
616
- break;
573
+ async listPullRequestComments(id) {
574
+ const comments = [];
575
+ let start = 0;
576
+ for (;;) {
577
+ const raw = await client.request({
578
+ method: "GET",
579
+ path: `${repo}/pull-requests/${id}/activities`,
580
+ query: { limit: 100, start },
581
+ });
582
+ for (const value of Array.isArray(raw.values) ? raw.values : []) {
583
+ const activity = asRecord(value);
584
+ if (activity?.action === "COMMENTED" && activity.comment !== undefined) {
585
+ comments.push(mapComment(activity.comment));
617
586
  }
618
- start = nextStart;
619
587
  }
620
- return comments;
621
- });
588
+ const nextStart = num(raw.nextPageStart);
589
+ if (raw.isLastPage !== false || nextStart === undefined) {
590
+ break;
591
+ }
592
+ start = nextStart;
593
+ }
594
+ return comments;
622
595
  },
623
- postPullRequestComment(id, input) {
624
- return __awaiter(this, void 0, void 0, function* () {
625
- const raw = yield client.request({
626
- method: "POST",
627
- path: `${repo}/pull-requests/${id}/comments`,
628
- body: Object.assign({ text: input.body }, (input.inline === undefined
596
+ async postPullRequestComment(id, input) {
597
+ const raw = await client.request({
598
+ method: "POST",
599
+ path: `${repo}/pull-requests/${id}/comments`,
600
+ body: {
601
+ text: input.body,
602
+ ...(input.inline === undefined
629
603
  ? {}
630
604
  : {
631
- anchor: Object.assign({ path: input.inline.path, diffType: "EFFECTIVE" }, (input.inline.line === undefined
632
- ? { fileType: "TO" }
633
- : {
634
- line: input.inline.line,
635
- lineType: "CONTEXT",
636
- fileType: "TO",
637
- })),
638
- })),
639
- });
640
- return mapComment(raw);
605
+ anchor: {
606
+ path: input.inline.path,
607
+ diffType: "EFFECTIVE",
608
+ ...(input.inline.line === undefined
609
+ ? { fileType: "TO" }
610
+ : {
611
+ line: input.inline.line,
612
+ lineType: "CONTEXT",
613
+ fileType: "TO",
614
+ }),
615
+ },
616
+ }),
617
+ },
641
618
  });
619
+ return mapComment(raw);
642
620
  },
643
621
  // Repository-scoped build status (DC 7.14+), which lives under
644
622
  // `rest/api/1.0` so the proxy's single upstream base reaches it; the
645
623
  // older `rest/build-status/1.0/commits/{sha}` sits outside that base.
646
- setBuildStatus: input => { var _a, _b; return client.request({
624
+ setBuildStatus: input => client.request({
647
625
  method: "POST",
648
626
  path: `${repo}/commits/${encodeURIComponent(input.sha)}/builds`,
649
- body: Object.assign({ key: input.key, state: input.state === "STOPPED" ? "CANCELLED" : input.state, name: (_a = input.name) !== null && _a !== void 0 ? _a : input.key, url: (_b = input.url) !== null && _b !== void 0 ? _b : fallbackUrl(repository) }, (input.description === undefined ? {} : { description: input.description })),
650
- }); },
627
+ body: {
628
+ key: input.key,
629
+ state: input.state === "STOPPED" ? "CANCELLED" : input.state,
630
+ name: input.name ?? input.key,
631
+ url: input.url ?? fallbackUrl(repository),
632
+ ...(input.description === undefined ? {} : { description: input.description }),
633
+ },
634
+ }),
651
635
  getFileAtRef: (path, ref) => client.request({
652
636
  method: "GET",
653
637
  path: `${repo}/raw/${encodePath(path)}`,