@cursor/bdk 0.2.8 → 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 (581) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.d.ts +1 -0
  3. package/dist/bin/agent-serve.d.ts.map +1 -1
  4. package/dist/bin/agent-serve.js +820 -807
  5. package/dist/channels/bitbucket/api.js +305 -321
  6. package/dist/channels/bitbucket/binding.js +97 -61
  7. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  8. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  9. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  11. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  12. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  13. package/dist/channels/bitbucket/checks.js +9 -21
  14. package/dist/channels/bitbucket/cursor-account.js +1 -1
  15. package/dist/channels/bitbucket/defaults.js +14 -4
  16. package/dist/channels/bitbucket/events.js +1 -2
  17. package/dist/channels/bitbucket/index.d.ts +6 -2
  18. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  19. package/dist/channels/bitbucket/index.js +6 -2
  20. package/dist/channels/bitbucket/replay.js +80 -56
  21. package/dist/channels/bitbucket/state.js +16 -7
  22. package/dist/channels/bitbucket/types.d.ts +11 -2
  23. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  24. package/dist/channels/checks.js +18 -28
  25. package/dist/channels/deployments/deployments-channel.js +26 -34
  26. package/dist/channels/github/api.js +216 -210
  27. package/dist/channels/github/auth.d.ts +5 -1
  28. package/dist/channels/github/auth.d.ts.map +1 -1
  29. package/dist/channels/github/auth.js +157 -174
  30. package/dist/channels/github/binding.js +48 -39
  31. package/dist/channels/github/checks.js +9 -14
  32. package/dist/channels/github/cursor-account.js +6 -11
  33. package/dist/channels/github/defaults.js +105 -130
  34. package/dist/channels/github/forward.js +13 -17
  35. package/dist/channels/github/github-channel.d.ts +43 -2
  36. package/dist/channels/github/github-channel.d.ts.map +1 -1
  37. package/dist/channels/github/github-channel.js +1228 -958
  38. package/dist/channels/github/progress.js +145 -146
  39. package/dist/channels/github/replay.js +30 -39
  40. package/dist/channels/github/state.js +40 -16
  41. package/dist/channels/github/types.d.ts +30 -6
  42. package/dist/channels/github/types.d.ts.map +1 -1
  43. package/dist/channels/gitlab/api.js +100 -114
  44. package/dist/channels/gitlab/binding.js +52 -33
  45. package/dist/channels/gitlab/checks.js +28 -29
  46. package/dist/channels/gitlab/cursor-account.js +1 -1
  47. package/dist/channels/gitlab/defaults.js +9 -3
  48. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  49. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  50. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  51. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  52. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  53. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  54. package/dist/channels/gitlab/index.d.ts +6 -2
  55. package/dist/channels/gitlab/index.d.ts.map +1 -1
  56. package/dist/channels/gitlab/index.js +6 -2
  57. package/dist/channels/gitlab/replay.js +50 -27
  58. package/dist/channels/gitlab/state.js +14 -6
  59. package/dist/channels/gitlab/types.d.ts +13 -2
  60. package/dist/channels/gitlab/types.d.ts.map +1 -1
  61. package/dist/channels/origin/api.js +100 -116
  62. package/dist/channels/origin/binding.js +15 -16
  63. package/dist/channels/origin/checks.js +30 -28
  64. package/dist/channels/origin/defaults.js +50 -65
  65. package/dist/channels/origin/origin-channel.js +266 -272
  66. package/dist/channels/origin/origin-webhook.js +70 -88
  67. package/dist/channels/origin/reactions.js +9 -21
  68. package/dist/channels/origin/state.js +13 -5
  69. package/dist/channels/slack/agentic-delivery.js +426 -478
  70. package/dist/channels/slack/agentic-posted.js +9 -10
  71. package/dist/channels/slack/agentic-signals.js +2 -3
  72. package/dist/channels/slack/api.js +417 -427
  73. package/dist/channels/slack/approvals.js +1 -1
  74. package/dist/channels/slack/assistant.js +37 -47
  75. package/dist/channels/slack/attachments.js +188 -206
  76. package/dist/channels/slack/auth.js +8 -6
  77. package/dist/channels/slack/bot-mentions.js +31 -45
  78. package/dist/channels/slack/channel-watch.js +42 -48
  79. package/dist/channels/slack/cli-project.js +112 -137
  80. package/dist/channels/slack/code-fences.js +3 -5
  81. package/dist/channels/slack/constants.js +2 -2
  82. package/dist/channels/slack/credentials.js +23 -38
  83. package/dist/channels/slack/defaults.js +292 -331
  84. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  85. package/dist/channels/slack/dispatch.js +533 -460
  86. package/dist/channels/slack/doctor.js +200 -214
  87. package/dist/channels/slack/eval-directive.js +79 -96
  88. package/dist/channels/slack/event-id-dedupe.js +1 -1
  89. package/dist/channels/slack/external-policy.js +26 -39
  90. package/dist/channels/slack/footer.js +28 -41
  91. package/dist/channels/slack/inbound.d.ts +1 -0
  92. package/dist/channels/slack/inbound.d.ts.map +1 -1
  93. package/dist/channels/slack/inbound.js +50 -31
  94. package/dist/channels/slack/init.d.ts +1 -5
  95. package/dist/channels/slack/init.d.ts.map +1 -1
  96. package/dist/channels/slack/init.js +42 -59
  97. package/dist/channels/slack/interactive.d.ts +9 -3
  98. package/dist/channels/slack/interactive.d.ts.map +1 -1
  99. package/dist/channels/slack/interactive.js +160 -162
  100. package/dist/channels/slack/links.js +1 -2
  101. package/dist/channels/slack/live-delivery.js +172 -190
  102. package/dist/channels/slack/manifest.d.ts.map +1 -1
  103. package/dist/channels/slack/manifest.js +44 -23
  104. package/dist/channels/slack/message-body.js +2 -2
  105. package/dist/channels/slack/nudge-carrier.js +30 -42
  106. package/dist/channels/slack/nudge-store.js +164 -191
  107. package/dist/channels/slack/paint-start.js +66 -81
  108. package/dist/channels/slack/placeholder.js +123 -152
  109. package/dist/channels/slack/pr-ref.js +1 -1
  110. package/dist/channels/slack/progress-delivery.js +65 -78
  111. package/dist/channels/slack/reasoning-card.js +36 -49
  112. package/dist/channels/slack/recording-sink.js +12 -24
  113. package/dist/channels/slack/reply-options.js +7 -12
  114. package/dist/channels/slack/self-identity.js +27 -35
  115. package/dist/channels/slack/sender-name.d.ts +12 -3
  116. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  117. package/dist/channels/slack/sender-name.js +57 -61
  118. package/dist/channels/slack/setup.js +2 -4
  119. package/dist/channels/slack/slack-channel.d.ts +6 -4
  120. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  121. package/dist/channels/slack/slack-channel.js +441 -308
  122. package/dist/channels/slack/socket-mode.js +38 -52
  123. package/dist/channels/slack/thread-context.js +143 -160
  124. package/dist/channels/slack/tool-approval-events.js +149 -166
  125. package/dist/channels/slack/tool-cards.js +6 -11
  126. package/dist/channels/slack/tool-chip.js +1 -2
  127. package/dist/channels/slack/types.d.ts +15 -17
  128. package/dist/channels/slack/types.d.ts.map +1 -1
  129. package/dist/channels/slack/upload.js +84 -97
  130. package/dist/channels/slack/user-info.js +27 -41
  131. package/dist/channels.js +9 -20
  132. package/dist/dashboard-session-url.js +3 -4
  133. package/dist/docs/404.html +2 -2
  134. package/dist/docs/assets/{app.oyjtOr3W.js → app.DXI7bwox.js} +4 -4
  135. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  136. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  137. package/dist/docs/assets/chunks/{VPLocalSearchBox.D0P6J_UJ.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  138. package/dist/docs/assets/chunks/{arc.B0LY1J1h.js → arc.BOG1yms8.js} +1 -1
  139. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.dPduLUxY.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  140. package/dist/docs/assets/chunks/{baseUniq.B_Ohm21h.js → baseUniq.H044KjKs.js} +1 -1
  141. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.B4zcanaJ.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  142. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D9Iw21nx.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  143. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  144. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DDVwRShI.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DsYcdn1i.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-55IACEB6.BzzQvcYp.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BMiXZ7FX.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.D_mBcLoc.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CMVjWVMx.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  150. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BG-FrPv9.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  151. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CkFE1ap3.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  152. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  153. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  154. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  155. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BVNnCTvY.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  156. package/dist/docs/assets/chunks/{dagre-KV5264BT.CDN5PR9l.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DQRUlT-i.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CoeblYQT.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  159. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DW3ymjl0.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  160. package/dist/docs/assets/chunks/{diagram-TYMM5635.BP0uN4Jw.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  161. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DVFUWEn4.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  162. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.HU-eHspv.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  163. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHNhXijY.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  164. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DkISXcO3.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  165. package/dist/docs/assets/chunks/{graph.CCV0fuRR.js → graph.BVqKRmRo.js} +1 -1
  166. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.bgILzOoc.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  167. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CuryXC0F.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  168. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BL1Pr-wu.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  169. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BbGjvk4l.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  170. package/dist/docs/assets/chunks/{layout.C4PfdldS.js → layout.CGU3gfSf.js} +1 -1
  171. package/dist/docs/assets/chunks/{linear.C3xD1T6X.js → linear.DaihpW_n.js} +1 -1
  172. package/dist/docs/assets/chunks/{min.CzgRAQ9c.js → min.BS-j8kHQ.js} +1 -1
  173. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CA9rSWum.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  174. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B8MprgJu.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  175. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DndDwbKT.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  176. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.Zhfgwlnn.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  177. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.B6RRm6N5.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  178. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bfmz-1PN.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  179. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.gbrdNqgj.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  180. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  181. package/dist/docs/assets/chunks/{theme.gpWjytMh.js → theme.DaplWQhQ.js} +2 -2
  182. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bl1l7M1f.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  183. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.Dfle4U0d.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  184. package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +162 -0
  185. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CM_4lmvZ.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  186. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CHT5X28R.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  187. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  188. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  189. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  191. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  192. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  193. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  194. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  195. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  196. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  197. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  198. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  199. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  200. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  201. package/dist/docs/building-with-agents.html +37 -37
  202. package/dist/docs/building-with-agents.md +2 -0
  203. package/dist/docs/deployment.html +38 -38
  204. package/dist/docs/deployment.md +7 -0
  205. package/dist/docs/evals.html +36 -36
  206. package/dist/docs/guides/agent-to-agent.html +35 -35
  207. package/dist/docs/guides/bitbucket.html +38 -38
  208. package/dist/docs/guides/bitbucket.md +9 -1
  209. package/dist/docs/guides/cloud-agents.html +35 -35
  210. package/dist/docs/guides/convert-automation.html +35 -35
  211. package/dist/docs/guides/github.html +39 -39
  212. package/dist/docs/guides/github.md +20 -4
  213. package/dist/docs/guides/gitlab.html +38 -38
  214. package/dist/docs/guides/gitlab.md +9 -1
  215. package/dist/docs/guides/grokbot-agents.html +35 -35
  216. package/dist/docs/guides/hooks.html +35 -35
  217. package/dist/docs/guides/improve.html +35 -35
  218. package/dist/docs/guides/jev.html +35 -35
  219. package/dist/docs/guides/mcp-oauth.html +35 -35
  220. package/dist/docs/guides/migrate.html +66 -0
  221. package/dist/docs/guides/migrate.md +122 -0
  222. package/dist/docs/guides/opentelemetry.html +35 -35
  223. package/dist/docs/guides/slack.html +35 -35
  224. package/dist/docs/guides/webhooks.html +35 -35
  225. package/dist/docs/hashmap.json +1 -1
  226. package/dist/docs/hillclimbing.html +35 -35
  227. package/dist/docs/index.html +35 -35
  228. package/dist/docs/llms-full.txt +214 -6
  229. package/dist/docs/llms.txt +1 -0
  230. package/dist/docs/quickstart.html +35 -35
  231. package/dist/docs/reference/agent-config.html +35 -35
  232. package/dist/docs/reference/artifacts.html +35 -35
  233. package/dist/docs/reference/channels.html +35 -35
  234. package/dist/docs/reference/cli.html +39 -38
  235. package/dist/docs/reference/cli.md +39 -0
  236. package/dist/docs/reference/connections.html +35 -35
  237. package/dist/docs/reference/evals.html +35 -35
  238. package/dist/docs/reference/extensions.html +35 -35
  239. package/dist/docs/reference/hooks.html +35 -35
  240. package/dist/docs/reference/http-api.html +35 -35
  241. package/dist/docs/reference/instructions.html +35 -35
  242. package/dist/docs/reference/playground.html +35 -35
  243. package/dist/docs/reference/project-layout.html +35 -35
  244. package/dist/docs/reference/prompt.html +35 -35
  245. package/dist/docs/reference/schedules.html +35 -35
  246. package/dist/docs/reference/sessions.html +35 -35
  247. package/dist/docs/reference/skills.html +38 -38
  248. package/dist/docs/reference/subagents.html +35 -35
  249. package/dist/docs/reference/tools.html +35 -35
  250. package/dist/docs/templates/agentic-owners.html +35 -35
  251. package/dist/docs/templates/grokbot-agents.html +35 -35
  252. package/dist/docs/templates/security-reviewer.html +35 -35
  253. package/dist/docs/templates/thermo-quality-review.html +35 -35
  254. package/dist/docs/templates/thermo-review.html +35 -35
  255. package/dist/docs/templates/triage.html +35 -35
  256. package/dist/docs/troubleshooting.html +36 -36
  257. package/dist/docs/troubleshooting.md +1 -0
  258. package/dist/evals/assertions.js +20 -34
  259. package/dist/evals/expect.js +3 -6
  260. package/dist/evals/judge.js +5 -8
  261. package/dist/evals/loaders.js +45 -62
  262. package/dist/evals/matchers.js +2 -3
  263. package/dist/evals/reporters.js +43 -67
  264. package/dist/evals/results.js +1 -1
  265. package/dist/evals/run-facts.js +5 -6
  266. package/dist/evals.js +27 -15
  267. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  268. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +0 -1
  269. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  270. package/dist/extensions/cursor-cloud-agents/lib/backend.js +101 -130
  271. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  272. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  273. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  274. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  275. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  276. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  277. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  278. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  279. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  280. package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -1
  281. package/dist/extensions/cursor-cloud-agents/tools/list.js +9 -20
  282. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  283. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  284. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  285. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  286. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  287. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  288. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  289. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  290. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  291. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  292. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  293. package/dist/extensions/jev/extension.js +3 -3
  294. package/dist/extensions/jev/lib/evaluate.js +43 -60
  295. package/dist/extensions/jev/tools/evaluate.js +6 -17
  296. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  297. package/dist/extensions.js +3 -5
  298. package/dist/files-backends/cursor-hosted.js +504 -523
  299. package/dist/files-backends/local-fs.js +72 -134
  300. package/dist/files.js +3 -3
  301. package/dist/filesystem.js +562 -861
  302. package/dist/index.js +16 -35
  303. package/dist/internal/advertise-tools.js +74 -86
  304. package/dist/internal/artifacts-store.js +298 -361
  305. package/dist/internal/as-of.js +2 -4
  306. package/dist/internal/authored-alias-hooks.js +6 -4
  307. package/dist/internal/authored-loaders.js +37 -52
  308. package/dist/internal/bounded-int.js +1 -2
  309. package/dist/internal/bounded.js +13 -24
  310. package/dist/internal/brand.js +1 -1
  311. package/dist/internal/browser-origin-guard.js +4 -4
  312. package/dist/internal/builtin-tools/artifacts.js +15 -27
  313. package/dist/internal/builtin-tools/index.js +2 -3
  314. package/dist/internal/builtin-tools/reminders.js +33 -52
  315. package/dist/internal/channel-architecture.d.ts +21 -0
  316. package/dist/internal/channel-architecture.d.ts.map +1 -0
  317. package/dist/internal/channel-architecture.js +41 -0
  318. package/dist/internal/channel-dispatch.js +3 -4
  319. package/dist/internal/channel-route-dispatch.js +40 -51
  320. package/dist/internal/channel-state.js +1 -1
  321. package/dist/internal/chat-client.js +319 -340
  322. package/dist/internal/cli-ax.js +1262 -1294
  323. package/dist/internal/cli-bitbucket.js +244 -272
  324. package/dist/internal/cli-convert-automation.js +137 -151
  325. package/dist/internal/cli-cursor.js +126 -147
  326. package/dist/internal/cli-deploy.d.ts.map +1 -1
  327. package/dist/internal/cli-deploy.js +1457 -1507
  328. package/dist/internal/cli-docs.js +130 -147
  329. package/dist/internal/cli-github.js +437 -476
  330. package/dist/internal/cli-gitlab.js +259 -288
  331. package/dist/internal/cli-images.js +266 -334
  332. package/dist/internal/cli-manifest.js +25 -37
  333. package/dist/internal/cli-mcp-oauth.js +228 -247
  334. package/dist/internal/cli-mcp.js +358 -383
  335. package/dist/internal/cli-migrate.d.ts +18 -0
  336. package/dist/internal/cli-migrate.d.ts.map +1 -0
  337. package/dist/internal/cli-migrate.js +136 -0
  338. package/dist/internal/cli-skills.js +35 -47
  339. package/dist/internal/cli-slack-manual.d.ts +0 -1
  340. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  341. package/dist/internal/cli-slack-manual.js +175 -204
  342. package/dist/internal/cli-slack.d.ts +1 -1
  343. package/dist/internal/cli-slack.d.ts.map +1 -1
  344. package/dist/internal/cli-slack.js +416 -456
  345. package/dist/internal/cloud-merge.js +7 -3
  346. package/dist/internal/cloud-turn-cost.js +8 -1
  347. package/dist/internal/connection-env.js +5 -6
  348. package/dist/internal/continuation-channel.js +10 -7
  349. package/dist/internal/continuation-identity.js +85 -67
  350. package/dist/internal/conversation-mirror.js +112 -131
  351. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  352. package/dist/internal/cron.js +3 -3
  353. package/dist/internal/cursor/account-mcp.js +147 -146
  354. package/dist/internal/cursor/backend-client.js +290 -320
  355. package/dist/internal/cursor/bound-secret-file.js +3 -3
  356. package/dist/internal/cursor/credentials.d.ts +1 -0
  357. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  358. package/dist/internal/cursor/credentials.js +130 -142
  359. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  360. package/dist/internal/cursor/github-credentials.js +91 -108
  361. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  362. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  363. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  364. package/dist/internal/cursor/session-token.js +36 -48
  365. package/dist/internal/cursor/store-api-client.js +77 -92
  366. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  367. package/dist/internal/cursor-agent-template.js +1 -1
  368. package/dist/internal/cursor-deployment-relay.js +33 -54
  369. package/dist/internal/cursor-event-relay.js +65 -59
  370. package/dist/internal/cursor-relay-core.js +258 -286
  371. package/dist/internal/deferred-channel-session.js +3 -12
  372. package/dist/internal/deploy-client.js +410 -475
  373. package/dist/internal/deploy-manifest.d.ts +17 -0
  374. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  375. package/dist/internal/deploy-manifest.js +71 -21
  376. package/dist/internal/deploy-source.js +31 -43
  377. package/dist/internal/discovery/agent-config.js +45 -59
  378. package/dist/internal/discovery/agent.js +276 -280
  379. package/dist/internal/discovery/channels.js +67 -80
  380. package/dist/internal/discovery/connections.js +286 -296
  381. package/dist/internal/discovery/context.js +2 -13
  382. package/dist/internal/discovery/cursor-plugin.js +223 -259
  383. package/dist/internal/discovery/extension-overlay.js +104 -131
  384. package/dist/internal/discovery/extensions.js +276 -281
  385. package/dist/internal/discovery/fs.js +56 -79
  386. package/dist/internal/discovery/hooks.js +39 -50
  387. package/dist/internal/discovery/info.js +17 -19
  388. package/dist/internal/discovery/instructions.js +58 -71
  389. package/dist/internal/discovery/modules.js +45 -58
  390. package/dist/internal/discovery/project.d.ts.map +1 -1
  391. package/dist/internal/discovery/project.js +192 -215
  392. package/dist/internal/discovery/reminders.js +41 -52
  393. package/dist/internal/discovery/runtime.js +1 -1
  394. package/dist/internal/discovery/schedules.js +71 -82
  395. package/dist/internal/discovery/seed-files.js +21 -32
  396. package/dist/internal/discovery/services.js +74 -96
  397. package/dist/internal/discovery/skills.js +77 -94
  398. package/dist/internal/discovery/subagent.js +79 -95
  399. package/dist/internal/discovery/tools.js +12 -23
  400. package/dist/internal/distribution.js +2 -2
  401. package/dist/internal/docs-site.js +30 -45
  402. package/dist/internal/duration.js +1 -1
  403. package/dist/internal/env-file.js +48 -64
  404. package/dist/internal/eval-judge-model.js +17 -28
  405. package/dist/internal/eval-run-store.js +265 -254
  406. package/dist/internal/eval-runner.d.ts +8 -0
  407. package/dist/internal/eval-runner.d.ts.map +1 -1
  408. package/dist/internal/eval-runner.js +406 -408
  409. package/dist/internal/eval-transport.d.ts +24 -0
  410. package/dist/internal/eval-transport.d.ts.map +1 -0
  411. package/dist/internal/eval-transport.js +22 -0
  412. package/dist/internal/evals-client.js +242 -246
  413. package/dist/internal/event-log.js +72 -120
  414. package/dist/internal/event-mapper.js +30 -31
  415. package/dist/internal/factory-resource-channel.js +16 -30
  416. package/dist/internal/filesystem/errors.js +6 -6
  417. package/dist/internal/filesystem/format.js +10 -13
  418. package/dist/internal/filesystem/merge.js +52 -94
  419. package/dist/internal/filesystem/nearest.js +15 -27
  420. package/dist/internal/filesystem/scratch.js +65 -85
  421. package/dist/internal/filesystem/tools.js +221 -241
  422. package/dist/internal/filesystem/walk.js +76 -143
  423. package/dist/internal/framework-file-storage.js +118 -139
  424. package/dist/internal/framework-storage-selection.js +21 -13
  425. package/dist/internal/frontmatter.js +4 -6
  426. package/dist/internal/github-fanout.js +50 -64
  427. package/dist/internal/guest-network.js +96 -109
  428. package/dist/internal/handleAgentServeTrigger.js +121 -126
  429. package/dist/internal/host-files.js +73 -88
  430. package/dist/internal/host-kv.js +21 -36
  431. package/dist/internal/host-otel.js +22 -19
  432. package/dist/internal/host-platforms.js +49 -63
  433. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  434. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  435. package/dist/internal/hosted-catch-protocol.js +1 -0
  436. package/dist/internal/hosted-catch.d.ts +5 -3
  437. package/dist/internal/hosted-catch.d.ts.map +1 -1
  438. package/dist/internal/hosted-catch.js +84 -93
  439. package/dist/internal/hosted-delivery-protocol.js +32 -8
  440. package/dist/internal/hosted-delivery.d.ts +13 -1
  441. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  442. package/dist/internal/hosted-delivery.js +614 -584
  443. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  444. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  445. package/dist/internal/hosted-eval-cases.js +162 -0
  446. package/dist/internal/hosted-execution-diag.js +38 -30
  447. package/dist/internal/hosted-execution-flush.js +75 -66
  448. package/dist/internal/hosted-execution-latency.js +16 -8
  449. package/dist/internal/hosted-managed-automation.js +2 -2
  450. package/dist/internal/hosting.js +2 -3
  451. package/dist/internal/http-channel-define.js +4 -1
  452. package/dist/internal/http-channel.js +101 -112
  453. package/dist/internal/http-control-plane-session.d.ts +18 -1
  454. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  455. package/dist/internal/http-control-plane-session.js +66 -32
  456. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  457. package/dist/internal/init-interview.js +73 -93
  458. package/dist/internal/init-project.js +182 -214
  459. package/dist/internal/init-scaffold.js +10 -21
  460. package/dist/internal/inline-stdio-mcp.js +80 -86
  461. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  462. package/dist/internal/install-cursor-skills.js +238 -274
  463. package/dist/internal/legacy-command-guard.js +18 -31
  464. package/dist/internal/listen-port.js +34 -45
  465. package/dist/internal/local-control-plane.js +293 -307
  466. package/dist/internal/local-env.js +1 -1
  467. package/dist/internal/local-ingress.js +15 -9
  468. package/dist/internal/log-ring.js +1 -2
  469. package/dist/internal/logs-client.js +207 -227
  470. package/dist/internal/map-pool.js +24 -38
  471. package/dist/internal/mcp-endpoint.js +204 -180
  472. package/dist/internal/mcp-host.js +165 -168
  473. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  474. package/dist/internal/mcp-oauth-persist.js +15 -29
  475. package/dist/internal/mcp-oauth.js +209 -266
  476. package/dist/internal/named-webhook-secret.d.ts +39 -0
  477. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  478. package/dist/internal/named-webhook-secret.js +47 -0
  479. package/dist/internal/open-browser.js +2 -3
  480. package/dist/internal/otel/collector.js +104 -68
  481. package/dist/internal/otel/config.js +24 -37
  482. package/dist/internal/otel/http.js +5 -7
  483. package/dist/internal/otel/mcp.js +3 -12
  484. package/dist/internal/otel/runtime.js +69 -83
  485. package/dist/internal/package-inline-stdio.js +57 -65
  486. package/dist/internal/peer-connections.js +9 -5
  487. package/dist/internal/platform-schedule-sync.js +39 -54
  488. package/dist/internal/platform-timers.js +176 -210
  489. package/dist/internal/playground/static.js +1 -2
  490. package/dist/internal/playground/toolchain.js +37 -53
  491. package/dist/internal/playground-proxy.js +230 -270
  492. package/dist/internal/process-memory-telemetry.js +33 -51
  493. package/dist/internal/prompt-context.js +3 -6
  494. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  495. package/dist/internal/reminder-runner.js +770 -785
  496. package/dist/internal/reminder-schedule.js +1 -1
  497. package/dist/internal/reminder-store.js +57 -78
  498. package/dist/internal/request-error-status.js +1 -3
  499. package/dist/internal/request-headers.js +2 -2
  500. package/dist/internal/resolve-prod-target.js +119 -135
  501. package/dist/internal/resolved-connections.js +16 -6
  502. package/dist/internal/run-client.js +221 -229
  503. package/dist/internal/runtime-dispatch-runner.js +18 -43
  504. package/dist/internal/schedule-runner.js +49 -58
  505. package/dist/internal/scm/pr-url.js +7 -6
  506. package/dist/internal/sdk-runner.js +388 -363
  507. package/dist/internal/serve-restart.js +26 -39
  508. package/dist/internal/server.d.ts.map +1 -1
  509. package/dist/internal/server.js +1283 -1244
  510. package/dist/internal/session-cost.js +7 -9
  511. package/dist/internal/session-engine.d.ts +3 -1
  512. package/dist/internal/session-engine.d.ts.map +1 -1
  513. package/dist/internal/session-engine.js +2801 -2777
  514. package/dist/internal/session-links.js +12 -16
  515. package/dist/internal/session-run-log.js +134 -82
  516. package/dist/internal/session-store.js +133 -164
  517. package/dist/internal/sessions-client.js +97 -118
  518. package/dist/internal/skill-catalog.js +18 -23
  519. package/dist/internal/skills-sync.js +16 -30
  520. package/dist/internal/slack-provision-client.js +90 -116
  521. package/dist/internal/start-log-store.js +48 -67
  522. package/dist/internal/steering.js +1 -2
  523. package/dist/internal/storage-coordinator.js +160 -196
  524. package/dist/internal/store-mirror.js +16 -30
  525. package/dist/internal/stream-progress.js +6 -8
  526. package/dist/internal/terminal-style.js +3 -4
  527. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  528. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  529. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  530. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  531. package/dist/internal/tool-catalog.js +11 -5
  532. package/dist/internal/tool-result.js +1 -1
  533. package/dist/internal/trajectory.js +19 -22
  534. package/dist/internal/turn-cost.js +52 -62
  535. package/dist/internal/turn-governor.js +5 -8
  536. package/dist/internal/turn-lease-store.js +85 -105
  537. package/dist/internal/turn-outbox.js +28 -43
  538. package/dist/internal/update-check.js +231 -259
  539. package/dist/internal/v2-hosting.js +1 -2
  540. package/dist/internal/workspace-sync.js +25 -41
  541. package/dist/internal/workspace.js +111 -139
  542. package/dist/kv/memory-kv.js +27 -51
  543. package/dist/memory.js +106 -148
  544. package/dist/otel.js +5 -8
  545. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  546. package/dist/playground/assets/{index-MijLHTbB.js → index-JekUQERK.js} +45 -45
  547. package/dist/playground/index.html +2 -2
  548. package/dist/prompt.js +2 -4
  549. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  550. package/dist/storage-backends/cursor-hosted.js +105 -145
  551. package/dist/storage-backends/file-kv.js +100 -128
  552. package/dist/storage-protocol.js +3 -5
  553. package/dist/storage.js +17 -26
  554. package/dist/types.d.ts +68 -0
  555. package/dist/types.d.ts.map +1 -1
  556. package/dist/types.js +20 -18
  557. package/docs/building-with-agents.md +2 -0
  558. package/docs/deployment.md +7 -0
  559. package/docs/guides/bitbucket.md +9 -1
  560. package/docs/guides/github.md +20 -4
  561. package/docs/guides/gitlab.md +9 -1
  562. package/docs/guides/migrate.md +127 -0
  563. package/docs/reference/cli.md +39 -0
  564. package/docs/troubleshooting.md +1 -0
  565. package/package.json +1 -1
  566. package/skills/debug/SKILL.md +1 -0
  567. package/skills/github/SKILL.md +23 -0
  568. package/skills/migrate-v2/SKILL.md +264 -0
  569. package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +0 -1
  570. package/dist/docs/assets/chunks/channel.CRUyWDV-.js +0 -1
  571. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +0 -1
  572. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +0 -1
  573. package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +0 -1
  574. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +0 -1
  575. package/dist/docs/assets/chunks/wardley-RL74JXVD.BJrCW6xc.js +0 -162
  576. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  577. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  578. package/dist/playground/assets/index-DPKLl4C_.css +0 -1
  579. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  580. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  581. /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)}`,