@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
@@ -1,32 +1,32 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { createHmac, timingSafeEqual } from "node:crypto";
11
2
  import { acknowledgeTask, isTaskDispatch, skipped, turnStarted, } from "../../internal/channel-dispatch.js";
12
3
  import { continuationSource } from "../../internal/continuation-identity.js";
13
4
  import { bindLocalIngressSend } from "../../internal/local-ingress.js";
5
+ import { resolveWebhookSecretValue } from "../../internal/named-webhook-secret.js";
14
6
  import { asNonEmptyString, asPositiveInt, asRecord, bitbucketCommentFromPayload, bitbucketPullRequestFromPayload, bitbucketPullRequestRecord, bitbucketPullRequestUrl, bitbucketPushFromPayload, bitbucketRepositoryFromPayload, bitbucketUser, buildBitbucketBinding, } from "./binding.js";
15
7
  import { defaultBitbucketPullRequestDispatch, defaultBitbucketPullRequestMessage, defaultBitbucketTitle, } from "./defaults.js";
16
8
  import { BITBUCKET_CHANNEL_KIND, BITBUCKET_PULL_REQUEST_EVENTS, normalizeBitbucketEventKey, } from "./events.js";
17
9
  import { bitbucketChannelStateForEvent } from "./state.js";
10
+ /** Env var / deployment secret an omitted `webhookSecret` falls back to. */
11
+ export const BITBUCKET_WEBHOOK_SECRET_ENV = "BITBUCKET_WEBHOOK_SECRET";
12
+ /** Header both dialects sign deliveries with; `sha256=<hex hmac of the raw body>`. */
13
+ export const BITBUCKET_SIGNATURE_HEADER = "x-hub-signature";
14
+ export const BITBUCKET_SIGNATURE_PREFIX = "sha256=";
18
15
  /** `BITBUCKET_WEBHOOK_SECRET` fallback for {@link BitbucketChannelOptions.webhookSecret}. */
19
16
  export function envBitbucketWebhookSecret() {
20
- var _a;
21
- const value = (_a = process.env.BITBUCKET_WEBHOOK_SECRET) === null || _a === void 0 ? void 0 : _a.trim();
17
+ const value = process.env[BITBUCKET_WEBHOOK_SECRET_ENV]?.trim();
22
18
  return value === undefined || value === "" ? undefined : value;
23
19
  }
20
+ /**
21
+ * The secret's value for the handler's own signature check. A named secret
22
+ * resolves from the environment (locally the shell's, hosted the bound
23
+ * deployment secrets); an unset field falls back to
24
+ * `BITBUCKET_WEBHOOK_SECRET`.
25
+ */
24
26
  export function resolveBitbucketWebhookSecret(options) {
25
- const authored = typeof options.webhookSecret === "function" ? options.webhookSecret() : options.webhookSecret;
26
- const trimmed = authored === null || authored === void 0 ? void 0 : authored.trim();
27
- return trimmed === undefined || trimmed === "" ? envBitbucketWebhookSecret() : trimmed;
27
+ return resolveWebhookSecretValue(options.webhookSecret) ?? envBitbucketWebhookSecret();
28
28
  }
29
- const SIGNATURE_PREFIX = "sha256=";
29
+ const SIGNATURE_PREFIX = BITBUCKET_SIGNATURE_PREFIX;
30
30
  /** The `X-Hub-Signature` value Bitbucket sends for a raw body. */
31
31
  export function signBitbucketWebhookBody(rawBody, secret) {
32
32
  return `${SIGNATURE_PREFIX}${createHmac("sha256", secret).update(rawBody).digest("hex")}`;
@@ -69,13 +69,13 @@ export function parseBitbucketWebhookPayload(payload, eventKey) {
69
69
  return null;
70
70
  }
71
71
  const fromBody = asNonEmptyString(record.eventKey);
72
- const fromHeader = (eventKey === null || eventKey === void 0 ? void 0 : eventKey.trim()) || undefined;
72
+ const fromHeader = eventKey?.trim() || undefined;
73
73
  if (fromBody !== undefined &&
74
74
  fromHeader !== undefined &&
75
75
  normalizeBitbucketEventKey(fromBody) !== normalizeBitbucketEventKey(fromHeader)) {
76
76
  return null;
77
77
  }
78
- const raw = fromBody !== null && fromBody !== void 0 ? fromBody : fromHeader;
78
+ const raw = fromBody ?? fromHeader;
79
79
  if (raw === undefined) {
80
80
  return null;
81
81
  }
@@ -145,91 +145,98 @@ function isPullRequestEvent(eventType) {
145
145
  return BITBUCKET_PULL_REQUEST_EVENTS.includes(eventType);
146
146
  }
147
147
  export function parseBitbucketEventContext(delivery) {
148
- var _a, _b;
149
- var _c;
150
148
  const repository = bitbucketRepositoryFromPayload(delivery.payload);
151
149
  if (repository === undefined) {
152
150
  return null;
153
151
  }
154
152
  const pullRequestRecord = bitbucketPullRequestRecord(delivery.payload);
155
- const pullRequestId = asPositiveInt(pullRequestRecord === null || pullRequestRecord === void 0 ? void 0 : pullRequestRecord.id);
156
- return Object.assign(Object.assign({ deliveryId: delivery.deliveryId, eventType: delivery.eventType, rawEventType: (_c = delivery.rawEventType) !== null && _c !== void 0 ? _c : delivery.eventType, repository }, (pullRequestId === undefined
157
- ? {}
158
- : {
159
- pullRequestId,
160
- pullRequestUrl: bitbucketPullRequestUrl(repository, pullRequestId, asNonEmptyString((_b = asRecord((_a = asRecord(pullRequestRecord === null || pullRequestRecord === void 0 ? void 0 : pullRequestRecord.links)) === null || _a === void 0 ? void 0 : _a.html)) === null || _b === void 0 ? void 0 : _b.href)),
161
- })), { payload: delivery.payload, sender: bitbucketUser(delivery.payload.actor) });
153
+ const pullRequestId = asPositiveInt(pullRequestRecord?.id);
154
+ return {
155
+ deliveryId: delivery.deliveryId,
156
+ eventType: delivery.eventType,
157
+ rawEventType: delivery.rawEventType ?? delivery.eventType,
158
+ repository,
159
+ ...(pullRequestId === undefined
160
+ ? {}
161
+ : {
162
+ pullRequestId,
163
+ pullRequestUrl: bitbucketPullRequestUrl(repository, pullRequestId, asNonEmptyString(asRecord(asRecord(pullRequestRecord?.links)?.html)?.href)),
164
+ }),
165
+ payload: delivery.payload,
166
+ sender: bitbucketUser(delivery.payload.actor),
167
+ };
162
168
  }
163
169
  function invalidPayload(error) {
164
170
  return Response.json({ ok: false, error }, { status: 400 });
165
171
  }
166
- function startTurn(input) {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- var _a;
169
- const source = continuationSource(input.options.continuation, "bitbucket");
170
- const session = yield input.args.send(input.message, Object.assign(Object.assign(Object.assign(Object.assign({ auth: input.dispatch.auth }, (source === "engine" && input.ctx.pullRequestId !== undefined
172
+ async function startTurn(input) {
173
+ const source = continuationSource(input.options.continuation, "bitbucket");
174
+ const session = await input.args.send(input.message, {
175
+ auth: input.dispatch.auth,
176
+ // v1 agents (omitted continuation resolves to `none/v1`) keep one
177
+ // engine-minted conversation per pull request; v2 takes the CP stamp.
178
+ ...(source === "engine" && input.ctx.pullRequestId !== undefined
171
179
  ? {
172
180
  continuationToken: `bitbucket-pr:${input.ctx.repository.fullName.toLowerCase()}#${input.ctx.pullRequestId}`,
173
181
  }
174
- : {})), { title: (_a = input.dispatch.title) !== null && _a !== void 0 ? _a : defaultBitbucketTitle(input.ctx) }), (input.cloud === undefined ? {} : { cloud: input.cloud })), { state: input.state, refreshState: input.state }));
175
- return turnStarted(session);
182
+ : {}),
183
+ title: input.dispatch.title ?? defaultBitbucketTitle(input.ctx),
184
+ ...(input.cloud === undefined ? {} : { cloud: input.cloud }),
185
+ state: input.state,
186
+ refreshState: input.state,
176
187
  });
188
+ return turnStarted(session);
177
189
  }
178
- function resolveCloudOptions(cloud, ctx, pullRequest) {
179
- return __awaiter(this, void 0, void 0, function* () {
180
- var _a;
181
- if (cloud === undefined || cloud === false) {
182
- return undefined;
183
- }
184
- if (cloud === true) {
185
- const url = (_a = ctx.repository.htmlUrl) !== null && _a !== void 0 ? _a : (ctx.repository.dialect === "cloud"
190
+ async function resolveCloudOptions(cloud, ctx, pullRequest) {
191
+ if (cloud === undefined || cloud === false) {
192
+ return undefined;
193
+ }
194
+ if (cloud === true) {
195
+ const url = ctx.repository.htmlUrl ??
196
+ (ctx.repository.dialect === "cloud"
186
197
  ? `https://bitbucket.org/${ctx.repository.fullName}`
187
198
  : undefined);
188
- if (url === undefined) {
189
- return undefined;
190
- }
191
- return {
192
- repos: [
193
- {
194
- url,
195
- prUrl: pullRequest.htmlUrl,
196
- startingRef: pullRequest.headSha,
197
- },
198
- ],
199
- };
200
- }
201
- if (typeof cloud === "function") {
202
- return yield cloud(ctx, pullRequest);
199
+ if (url === undefined) {
200
+ return undefined;
203
201
  }
204
- return cloud;
205
- });
202
+ return {
203
+ repos: [
204
+ {
205
+ url,
206
+ prUrl: pullRequest.htmlUrl,
207
+ startingRef: pullRequest.headSha,
208
+ },
209
+ ],
210
+ };
211
+ }
212
+ if (typeof cloud === "function") {
213
+ return await cloud(ctx, pullRequest);
214
+ }
215
+ return cloud;
206
216
  }
207
- function applyDispatch(input) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- var _a, _b;
210
- if (input.dispatch === null) {
211
- return skipped("not_dispatched", input.extra);
212
- }
213
- if (isTaskDispatch(input.dispatch)) {
214
- return acknowledgeTask(input.args, BITBUCKET_CHANNEL_KIND, input.dispatch, input.extra);
215
- }
216
- const message = [(_a = input.dispatch.message) !== null && _a !== void 0 ? _a : input.message, ...((_b = input.dispatch.context) !== null && _b !== void 0 ? _b : [])].join("\n");
217
- return startTurn({
218
- options: input.options,
219
- args: input.args,
220
- ctx: input.ctx,
221
- message,
222
- dispatch: input.dispatch,
223
- cloud: input.cloud,
224
- state: bitbucketChannelStateForEvent({
225
- repository: input.ctx.repository,
226
- pullRequestId: input.ctx.pullRequestId,
227
- headSha: input.headSha,
228
- deliveryId: input.ctx.deliveryId,
229
- eventType: input.ctx.eventType,
230
- triggeringCommentId: input.triggeringCommentId,
231
- }),
232
- });
217
+ async function applyDispatch(input) {
218
+ if (input.dispatch === null) {
219
+ return skipped("not_dispatched", input.extra);
220
+ }
221
+ if (isTaskDispatch(input.dispatch)) {
222
+ return acknowledgeTask(input.args, BITBUCKET_CHANNEL_KIND, input.dispatch, input.extra);
223
+ }
224
+ const message = [input.dispatch.message ?? input.message, ...(input.dispatch.context ?? [])].join("\n");
225
+ return startTurn({
226
+ options: input.options,
227
+ args: input.args,
228
+ ctx: input.ctx,
229
+ message,
230
+ dispatch: input.dispatch,
231
+ cloud: input.cloud,
232
+ state: bitbucketChannelStateForEvent({
233
+ repository: input.ctx.repository,
234
+ pullRequestId: input.ctx.pullRequestId,
235
+ headSha: input.headSha,
236
+ deliveryId: input.ctx.deliveryId,
237
+ eventType: input.ctx.eventType,
238
+ triggeringCommentId: input.triggeringCommentId,
239
+ }),
233
240
  });
234
241
  }
235
242
  /**
@@ -238,108 +245,111 @@ function applyDispatch(input) {
238
245
  * hosted admission arrives verified. The v2 mailbox is stamped upstream
239
246
  * (local CP or hosted ingress), never here.
240
247
  */
241
- export function dispatchBitbucketWebhook(input) {
242
- return __awaiter(this, void 0, void 0, function* () {
243
- var _a;
244
- const { eventType, payload } = input.delivery;
245
- const parsed = parseBitbucketEventContext(input.delivery);
246
- if (parsed === null) {
247
- return invalidPayload("invalid_bitbucket_payload");
248
- }
249
- const args = input.args;
250
- const ctx = Object.assign(Object.assign({}, parsed), { bitbucket: buildBitbucketBinding({
251
- repository: parsed.repository,
252
- proxy: (_a = input.proxy) === null || _a === void 0 ? void 0 : _a.call(input),
253
- token: input.options.token,
254
- apiBaseUrl: input.options.apiBaseUrl,
255
- }), host: args.host, artifacts: args.artifacts, send: args.send });
256
- const allowlist = configuredRepoAllowlist(input.options);
257
- if (allowlist !== undefined && !allowlist.has(ctx.repository.fullName.toLowerCase())) {
258
- return skipped("repo_not_allowed", { repo: ctx.repository.fullName });
248
+ export async function dispatchBitbucketWebhook(input) {
249
+ const { eventType, payload } = input.delivery;
250
+ const parsed = parseBitbucketEventContext(input.delivery);
251
+ if (parsed === null) {
252
+ return invalidPayload("invalid_bitbucket_payload");
253
+ }
254
+ const args = input.args;
255
+ const ctx = {
256
+ ...parsed,
257
+ bitbucket: buildBitbucketBinding({
258
+ repository: parsed.repository,
259
+ proxy: input.proxy?.(),
260
+ token: input.options.token,
261
+ apiBaseUrl: input.options.apiBaseUrl,
262
+ }),
263
+ host: args.host,
264
+ artifacts: args.artifacts,
265
+ send: args.send,
266
+ };
267
+ const allowlist = configuredRepoAllowlist(input.options);
268
+ if (allowlist !== undefined && !allowlist.has(ctx.repository.fullName.toLowerCase())) {
269
+ return skipped("repo_not_allowed", { repo: ctx.repository.fullName });
270
+ }
271
+ const extra = { event: eventType, rawEvent: ctx.rawEventType };
272
+ if (isPullRequestEvent(eventType)) {
273
+ const action = eventType.slice("pullrequest:".length);
274
+ const pullRequest = bitbucketPullRequestFromPayload(ctx.repository, payload, action);
275
+ if (pullRequest === undefined) {
276
+ return invalidPayload("invalid_bitbucket_pull_request_payload");
259
277
  }
260
- const extra = { event: eventType, rawEvent: ctx.rawEventType };
261
- if (isPullRequestEvent(eventType)) {
262
- const action = eventType.slice("pullrequest:".length);
263
- const pullRequest = bitbucketPullRequestFromPayload(ctx.repository, payload, action);
264
- if (pullRequest === undefined) {
265
- return invalidPayload("invalid_bitbucket_pull_request_payload");
278
+ const dispatch = input.options.onPullRequest === undefined
279
+ ? defaultBitbucketPullRequestDispatch(ctx, pullRequest)
280
+ : await input.options.onPullRequest(ctx, pullRequest);
281
+ return applyDispatch({
282
+ options: input.options,
283
+ args,
284
+ ctx,
285
+ dispatch,
286
+ extra: { ...extra, action },
287
+ message: defaultBitbucketPullRequestMessage(ctx, pullRequest),
288
+ cloud: await resolveCloudOptions(input.options.cloud, ctx, pullRequest),
289
+ headSha: pullRequest.headSha,
290
+ });
291
+ }
292
+ switch (eventType) {
293
+ case "pullrequest:comment_created": {
294
+ if (input.options.onPullRequestComment === undefined) {
295
+ return skipped("no_handler", extra);
266
296
  }
267
- const dispatch = input.options.onPullRequest === undefined
268
- ? defaultBitbucketPullRequestDispatch(ctx, pullRequest)
269
- : yield input.options.onPullRequest(ctx, pullRequest);
297
+ const comment = bitbucketCommentFromPayload(payload);
298
+ const pullRequest = bitbucketPullRequestFromPayload(ctx.repository, payload, "comment_created");
299
+ if (comment === undefined || pullRequest === undefined) {
300
+ return invalidPayload("invalid_bitbucket_comment_payload");
301
+ }
302
+ const dispatch = await input.options.onPullRequestComment(ctx, comment, pullRequest);
270
303
  return applyDispatch({
271
304
  options: input.options,
272
305
  args,
273
306
  ctx,
274
307
  dispatch,
275
- extra: Object.assign(Object.assign({}, extra), { action }),
276
- message: defaultBitbucketPullRequestMessage(ctx, pullRequest),
277
- cloud: yield resolveCloudOptions(input.options.cloud, ctx, pullRequest),
308
+ extra,
309
+ message: `Bitbucket comment on ${ctx.repository.fullName}#${pullRequest.id}`,
278
310
  headSha: pullRequest.headSha,
311
+ triggeringCommentId: comment.id,
279
312
  });
280
313
  }
281
- switch (eventType) {
282
- case "pullrequest:comment_created": {
283
- if (input.options.onPullRequestComment === undefined) {
284
- return skipped("no_handler", extra);
285
- }
286
- const comment = bitbucketCommentFromPayload(payload);
287
- const pullRequest = bitbucketPullRequestFromPayload(ctx.repository, payload, "comment_created");
288
- if (comment === undefined || pullRequest === undefined) {
289
- return invalidPayload("invalid_bitbucket_comment_payload");
290
- }
291
- const dispatch = yield input.options.onPullRequestComment(ctx, comment, pullRequest);
292
- return applyDispatch({
293
- options: input.options,
294
- args,
295
- ctx,
296
- dispatch,
297
- extra,
298
- message: `Bitbucket comment on ${ctx.repository.fullName}#${pullRequest.id}`,
299
- headSha: pullRequest.headSha,
300
- triggeringCommentId: comment.id,
301
- });
314
+ case "repo:push": {
315
+ if (input.options.onPush === undefined) {
316
+ return skipped("no_handler", extra);
302
317
  }
303
- case "repo:push": {
304
- if (input.options.onPush === undefined) {
305
- return skipped("no_handler", extra);
306
- }
307
- const push = bitbucketPushFromPayload(payload);
308
- if (push === undefined) {
309
- return invalidPayload("invalid_bitbucket_push_payload");
310
- }
311
- const dispatch = yield input.options.onPush(ctx, push);
312
- const first = push.changes[0];
313
- return applyDispatch({
314
- options: input.options,
315
- args,
316
- ctx,
317
- dispatch,
318
- extra,
319
- message: `Bitbucket push to ${ctx.repository.fullName}${(first === null || first === void 0 ? void 0 : first.name) === undefined ? "" : ` ${first.name}`}`,
320
- headSha: first === null || first === void 0 ? void 0 : first.after,
321
- });
318
+ const push = bitbucketPushFromPayload(payload);
319
+ if (push === undefined) {
320
+ return invalidPayload("invalid_bitbucket_push_payload");
322
321
  }
323
- default: {
324
- if (input.options.onEvent === undefined) {
325
- return skipped("unsupported_event", extra);
326
- }
327
- const dispatch = yield input.options.onEvent(ctx, {
328
- eventType,
329
- rawEventType: ctx.rawEventType,
330
- payload,
331
- });
332
- return applyDispatch({
333
- options: input.options,
334
- args,
335
- ctx,
336
- dispatch,
337
- extra,
338
- message: `Bitbucket ${eventType} event on ${ctx.repository.fullName}`,
339
- });
322
+ const dispatch = await input.options.onPush(ctx, push);
323
+ const first = push.changes[0];
324
+ return applyDispatch({
325
+ options: input.options,
326
+ args,
327
+ ctx,
328
+ dispatch,
329
+ extra,
330
+ message: `Bitbucket push to ${ctx.repository.fullName}${first?.name === undefined ? "" : ` ${first.name}`}`,
331
+ headSha: first?.after,
332
+ });
333
+ }
334
+ default: {
335
+ if (input.options.onEvent === undefined) {
336
+ return skipped("unsupported_event", extra);
340
337
  }
338
+ const dispatch = await input.options.onEvent(ctx, {
339
+ eventType,
340
+ rawEventType: ctx.rawEventType,
341
+ payload,
342
+ });
343
+ return applyDispatch({
344
+ options: input.options,
345
+ args,
346
+ ctx,
347
+ dispatch,
348
+ extra,
349
+ message: `Bitbucket ${eventType} event on ${ctx.repository.fullName}`,
350
+ });
341
351
  }
342
- });
352
+ }
343
353
  }
344
354
  /**
345
355
  * HTTP entry for a single agent's Bitbucket channel: `X-Hub-Signature` HMAC
@@ -347,38 +357,38 @@ export function dispatchBitbucketWebhook(input) {
347
357
  * Without a secret the route auth owns admission (`serve --dev` admits
348
358
  * loopback only; production stays loopback-strict).
349
359
  */
350
- export function handleBitbucketWebhookRequest(input) {
351
- return __awaiter(this, void 0, void 0, function* () {
352
- var _a, _b;
353
- const bodyText = yield input.request.text();
354
- const secret = resolveBitbucketWebhookSecret(input.options);
355
- if (secret !== undefined && input.skipSignatureVerification !== true) {
356
- if (!verifyBitbucketWebhookSignature(bodyText, input.request.headers.get("x-hub-signature"), secret)) {
357
- return Response.json({ ok: false, error: "invalid_signature" }, { status: 401 });
358
- }
359
- }
360
- let payload;
361
- try {
362
- payload = JSON.parse(bodyText);
363
- }
364
- catch (_c) {
365
- return Response.json({ ok: false, error: "invalid_json" }, { status: 400 });
366
- }
367
- const delivery = parseBitbucketWebhookPayload(payload, input.request.headers.get("x-event-key"));
368
- if (delivery === null) {
369
- return invalidPayload("invalid_bitbucket_payload");
360
+ export async function handleBitbucketWebhookRequest(input) {
361
+ const bodyText = await input.request.text();
362
+ const secret = resolveBitbucketWebhookSecret(input.options);
363
+ if (secret !== undefined && input.skipSignatureVerification !== true) {
364
+ if (!verifyBitbucketWebhookSignature(bodyText, input.request.headers.get(BITBUCKET_SIGNATURE_HEADER), secret)) {
365
+ return Response.json({ ok: false, error: "invalid_signature" }, { status: 401 });
370
366
  }
371
- delivery.deliveryId = (_b = (_a = input.request.headers.get("x-request-uuid")) !== null && _a !== void 0 ? _a : input.request.headers.get("x-request-id")) !== null && _b !== void 0 ? _b : undefined;
372
- return dispatchBitbucketWebhook({
373
- options: input.options,
374
- delivery,
375
- proxy: input.proxy,
376
- args: bindLocalIngressSend(input.args, {
377
- identity: input.options.continuation,
378
- kind: BITBUCKET_CHANNEL_KIND,
379
- eventType: delivery.eventType,
380
- payload: delivery.payload,
381
- }),
382
- });
367
+ }
368
+ let payload;
369
+ try {
370
+ payload = JSON.parse(bodyText);
371
+ }
372
+ catch {
373
+ return Response.json({ ok: false, error: "invalid_json" }, { status: 400 });
374
+ }
375
+ const delivery = parseBitbucketWebhookPayload(payload, input.request.headers.get("x-event-key"));
376
+ if (delivery === null) {
377
+ return invalidPayload("invalid_bitbucket_payload");
378
+ }
379
+ delivery.deliveryId =
380
+ input.request.headers.get("x-request-uuid") ??
381
+ input.request.headers.get("x-request-id") ??
382
+ undefined;
383
+ return dispatchBitbucketWebhook({
384
+ options: input.options,
385
+ delivery,
386
+ proxy: input.proxy,
387
+ args: bindLocalIngressSend(input.args, {
388
+ identity: input.options.continuation,
389
+ kind: BITBUCKET_CHANNEL_KIND,
390
+ eventType: delivery.eventType,
391
+ payload: delivery.payload,
392
+ }),
383
393
  });
384
394
  }
@@ -9,15 +9,6 @@
9
9
  * Bitbucket's state set and re-posts the full desired state on every write,
10
10
  * so `resumeBitbucketCheck` needs only `(sha, key)` to rebuild a handle.
11
11
  */
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
12
  import { openCiCheck, resumeCiCheck, } from "../checks.js";
22
13
  /** Shared check status / conclusion → Bitbucket build-status state. */
23
14
  export function bitbucketBuildStatusState(input) {
@@ -44,28 +35,25 @@ export function bitbucketBuildStatusState(input) {
44
35
  * Build statuses have no server id or page URL of their own.
45
36
  */
46
37
  function bitbucketCheckWriter(input) {
47
- var _a;
48
- let lastStatus = (_a = input.status) !== null && _a !== void 0 ? _a : "in_progress";
38
+ let lastStatus = input.status ?? "in_progress";
49
39
  let lastUrl = input.url;
50
- return (write) => __awaiter(this, void 0, void 0, function* () {
51
- var _a, _b;
52
- var _c, _d, _e;
53
- const status = (_c = write.status) !== null && _c !== void 0 ? _c : (write.conclusion === undefined ? lastStatus : "completed");
40
+ return async (write) => {
41
+ const status = write.status ?? (write.conclusion === undefined ? lastStatus : "completed");
54
42
  lastStatus = status;
55
- lastUrl = (_d = write.detailsUrl) !== null && _d !== void 0 ? _d : lastUrl;
56
- yield input.bitbucket.setBuildStatus({
43
+ lastUrl = write.detailsUrl ?? lastUrl;
44
+ await input.bitbucket.setBuildStatus({
57
45
  sha: input.sha,
58
46
  key: input.name,
59
- name: (_e = (_a = write.output) === null || _a === void 0 ? void 0 : _a.title) !== null && _e !== void 0 ? _e : input.name,
47
+ name: write.output?.title ?? input.name,
60
48
  state: bitbucketBuildStatusState({
61
49
  status,
62
50
  conclusion: write.conclusion,
63
51
  }),
64
52
  url: lastUrl,
65
- description: (_b = write.output) === null || _b === void 0 ? void 0 : _b.summary,
53
+ description: write.output?.summary,
66
54
  });
67
55
  return lastUrl === undefined ? undefined : { url: lastUrl };
68
- });
56
+ };
69
57
  }
70
58
  /**
71
59
  * Open a build status on `sha` and return a handle for later updates.
@@ -97,6 +85,6 @@ export function resumeBitbucketCheck(input) {
97
85
  */
98
86
  export function bindBitbucketChecks(input) {
99
87
  return {
100
- createCheck: check => createBitbucketCheck(Object.assign(Object.assign({}, check), { bitbucket: input.bitbucket })),
88
+ createCheck: check => createBitbucketCheck({ ...check, bitbucket: input.bitbucket }),
101
89
  };
102
90
  }
@@ -49,7 +49,7 @@ export function createPendingCursorBitbucketCredentials() {
49
49
  if (getApiKey === undefined || transport === undefined) {
50
50
  return undefined;
51
51
  }
52
- return Object.assign(Object.assign({}, transport), { getApiKey });
52
+ return { ...transport, getApiKey };
53
53
  },
54
54
  };
55
55
  }
@@ -8,7 +8,7 @@ function issuerHost(ctx) {
8
8
  try {
9
9
  return new URL(ctx.repository.htmlUrl).host;
10
10
  }
11
- catch (_a) {
11
+ catch {
12
12
  // fall through to the dialect default
13
13
  }
14
14
  }
@@ -26,9 +26,19 @@ export function defaultBitbucketAuth(ctx) {
26
26
  authenticator: "bitbucket-webhook",
27
27
  principalId: sender === undefined ? "bitbucket" : sender.id,
28
28
  principalType: "user",
29
- attributes: Object.assign(Object.assign(Object.assign({ conversation_kind: ctx.pullRequestId === undefined ? ctx.eventType : "pull_request", repo: ctx.repository.fullName, dialect: ctx.repository.dialect }, (ctx.deliveryId === undefined ? {} : { delivery_id: ctx.deliveryId })), (sender === undefined
30
- ? {}
31
- : Object.assign({ subject: sender.id }, (sender.username === undefined ? {} : { username: sender.username })))), { issuer: `bitbucket:${issuerHost(ctx)}` }),
29
+ attributes: {
30
+ conversation_kind: ctx.pullRequestId === undefined ? ctx.eventType : "pull_request",
31
+ repo: ctx.repository.fullName,
32
+ dialect: ctx.repository.dialect,
33
+ ...(ctx.deliveryId === undefined ? {} : { delivery_id: ctx.deliveryId }),
34
+ ...(sender === undefined
35
+ ? {}
36
+ : {
37
+ subject: sender.id,
38
+ ...(sender.username === undefined ? {} : { username: sender.username }),
39
+ }),
40
+ issuer: `bitbucket:${issuerHost(ctx)}`,
41
+ },
32
42
  };
33
43
  }
34
44
  export function defaultBitbucketTitle(ctx) {
@@ -18,9 +18,8 @@ export const BITBUCKET_DATA_CENTER_EVENT_KEYS = {
18
18
  };
19
19
  /** `pr:opened` → `pullrequest:created`; Cloud keys pass through unchanged. */
20
20
  export function normalizeBitbucketEventKey(eventKey) {
21
- var _a;
22
21
  const trimmed = eventKey.trim();
23
- return (_a = BITBUCKET_DATA_CENTER_EVENT_KEYS[trimmed]) !== null && _a !== void 0 ? _a : trimmed;
22
+ return BITBUCKET_DATA_CENTER_EVENT_KEYS[trimmed] ?? trimmed;
24
23
  }
25
24
  /** Cloud pull-request event keys, grouped by the hook that receives them. */
26
25
  export const BITBUCKET_PULL_REQUEST_EVENTS = [
@@ -5,7 +5,9 @@
5
5
  * import { bitbucketChannel, defaultBitbucketAuth } from "@cursor/bdk/channels/bitbucket";
6
6
  *
7
7
  * export default bitbucketChannel({
8
- * webhookSecret: () => process.env.BITBUCKET_WEBHOOK_SECRET,
8
+ * // Named, not read: locally `process.env.BITBUCKET_WEBHOOK_SECRET`; hosted,
9
+ * // the deployment secret, which the control plane checks at ingestion.
10
+ * webhookSecret: { secretName: "BITBUCKET_WEBHOOK_SECRET" },
9
11
  * onPullRequest: (ctx) => ({ auth: defaultBitbucketAuth(ctx) }),
10
12
  * onPullRequestComment: (ctx) => ({ auth: defaultBitbucketAuth(ctx) }),
11
13
  * });
@@ -17,7 +19,9 @@
17
19
  * are normalized to the Cloud vocabulary (`pullrequest:created`) before
18
20
  * hooks run, and payload fields from either dialect land on one shape.
19
21
  * Hosted deployments receive deliveries the Cursor backend already verified
20
- * and normalized. The turn principal is `bitbucket-webhook` plus the
22
+ * and normalized: a named `webhookSecret` lets the control plane verify
23
+ * `X-Hub-Signature` before any compute starts (architecture `v2` requires
24
+ * that form) and the handler verifies it again on replay. The turn principal is `bitbucket-webhook` plus the
21
25
  * Bitbucket actor — not the Cursor subscriber.
22
26
  */
23
27
  export * from "./api.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,eAAe,EACpB,+BAA+B,EAC/B,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/bitbucket/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,KAAK,eAAe,EACpB,+BAA+B,EAC/B,2BAA2B,EAC3B,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,wBAAwB,EAC7B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}