@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
@@ -2,15 +2,6 @@
2
2
  * Host-side MCP OAuth for `defineConnection({ url, oauth: true })`.
3
3
  * Local: mcp-auth.json. Prod secrets: `mcp oauth <name> --store`.
4
4
  */
5
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
- return new (P || (P = Promise))(function (resolve, reject) {
8
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
- step((generator = generator.apply(thisArg, _arguments || [])).next());
12
- });
13
- };
14
5
  import { execFile } from "node:child_process";
15
6
  import { randomUUID } from "node:crypto";
16
7
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
@@ -38,13 +29,12 @@ export function mcpOauthSecretNames(connection) {
38
29
  };
39
30
  }
40
31
  export function tokensFromEnv(connection, env = process.env) {
41
- var _a, _b;
42
32
  const names = mcpOauthSecretNames(connection);
43
- const access = (_a = env[names.accessToken]) === null || _a === void 0 ? void 0 : _a.trim();
33
+ const access = env[names.accessToken]?.trim();
44
34
  if (access === undefined || access === "") {
45
35
  return undefined;
46
36
  }
47
- const refresh = (_b = env[names.refreshToken]) === null || _b === void 0 ? void 0 : _b.trim();
37
+ const refresh = env[names.refreshToken]?.trim();
48
38
  return {
49
39
  access_token: access,
50
40
  refresh_token: refresh === undefined || refresh === "" ? undefined : refresh,
@@ -52,8 +42,7 @@ export function tokensFromEnv(connection, env = process.env) {
52
42
  };
53
43
  }
54
44
  export function clientIdFromEnv(connection, env = process.env) {
55
- var _a;
56
- const clientId = (_a = env[mcpOauthSecretNames(connection).clientId]) === null || _a === void 0 ? void 0 : _a.trim();
45
+ const clientId = env[mcpOauthSecretNames(connection).clientId]?.trim();
57
46
  if (clientId === undefined || clientId === "") {
58
47
  return undefined;
59
48
  }
@@ -87,127 +76,101 @@ export class FileMcpOAuthStore {
87
76
  constructor(path = defaultMcpAuthPath()) {
88
77
  this.path = path;
89
78
  }
90
- loadTokens(id, resourceUrl) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- var _a;
93
- return (_a = (yield this.entryFor(id, resourceUrl))) === null || _a === void 0 ? void 0 : _a.tokens;
94
- });
95
- }
96
- loadClientInformation(id, resourceUrl) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- var _a;
99
- return (_a = (yield this.entryFor(id, resourceUrl))) === null || _a === void 0 ? void 0 : _a.clientInfo;
100
- });
101
- }
102
- saveTokens(id, resourceUrl, tokens) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- yield this.update(id, resourceUrl, entry => {
105
- entry.tokens = tokens;
106
- });
107
- });
108
- }
109
- saveClientInformation(id, resourceUrl, clientInfo) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- yield this.update(id, resourceUrl, entry => {
112
- entry.clientInfo = clientInfo;
113
- });
114
- });
79
+ async loadTokens(id, resourceUrl) {
80
+ return (await this.entryFor(id, resourceUrl))?.tokens;
115
81
  }
116
- deleteCredentials(id) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- yield this.withLock(() => __awaiter(this, void 0, void 0, function* () {
119
- const data = yield this.read();
120
- delete data[id];
121
- yield this.write(data);
122
- }));
123
- });
82
+ async loadClientInformation(id, resourceUrl) {
83
+ return (await this.entryFor(id, resourceUrl))?.clientInfo;
124
84
  }
125
- entryFor(id, resourceUrl) {
126
- return __awaiter(this, void 0, void 0, function* () {
127
- const entry = (yield this.read())[id];
128
- if (entry === undefined) {
129
- return undefined;
130
- }
131
- const bound = entry.resourceUrl;
132
- if (bound === undefined || bound !== normalizeMcpResourceUrl(resourceUrl)) {
133
- return undefined;
134
- }
135
- return entry;
85
+ async saveTokens(id, resourceUrl, tokens) {
86
+ await this.update(id, resourceUrl, entry => {
87
+ entry.tokens = tokens;
136
88
  });
137
89
  }
138
- update(id, resourceUrl, mutate) {
139
- return __awaiter(this, void 0, void 0, function* () {
140
- const normalized = normalizeMcpResourceUrl(resourceUrl);
141
- yield this.withLock(() => __awaiter(this, void 0, void 0, function* () {
142
- const data = yield this.read();
143
- const existing = data[id];
144
- const entry = (existing === null || existing === void 0 ? void 0 : existing.resourceUrl) === normalized ? Object.assign({}, existing) : {};
145
- entry.resourceUrl = normalized;
146
- mutate(entry);
147
- data[id] = entry;
148
- yield this.write(data);
149
- }));
90
+ async saveClientInformation(id, resourceUrl, clientInfo) {
91
+ await this.update(id, resourceUrl, entry => {
92
+ entry.clientInfo = clientInfo;
150
93
  });
151
94
  }
152
- read() {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- var _a;
155
- if (this.cache !== undefined) {
156
- return this.cache;
157
- }
158
- (_a = this.loading) !== null && _a !== void 0 ? _a : (this.loading = this.readDisk().then(data => {
159
- this.cache = data;
160
- return data;
161
- }));
162
- return this.loading;
95
+ async deleteCredentials(id) {
96
+ await this.withLock(async () => {
97
+ const data = await this.read();
98
+ delete data[id];
99
+ await this.write(data);
163
100
  });
164
101
  }
165
- readDisk() {
166
- return __awaiter(this, void 0, void 0, function* () {
167
- try {
168
- const parsed = JSON.parse(yield readFile(this.path, "utf8"));
169
- if (typeof parsed !== "object" || parsed === null) {
170
- return {};
171
- }
172
- return parsed;
173
- }
174
- catch (error) {
175
- if (typeof error === "object" &&
176
- error !== null &&
177
- "code" in error &&
178
- error.code === "ENOENT") {
179
- return {};
180
- }
181
- throw error;
182
- }
102
+ async entryFor(id, resourceUrl) {
103
+ const entry = (await this.read())[id];
104
+ if (entry === undefined) {
105
+ return undefined;
106
+ }
107
+ const bound = entry.resourceUrl;
108
+ if (bound === undefined || bound !== normalizeMcpResourceUrl(resourceUrl)) {
109
+ return undefined;
110
+ }
111
+ return entry;
112
+ }
113
+ async update(id, resourceUrl, mutate) {
114
+ const normalized = normalizeMcpResourceUrl(resourceUrl);
115
+ await this.withLock(async () => {
116
+ const data = await this.read();
117
+ const existing = data[id];
118
+ const entry = existing?.resourceUrl === normalized ? { ...existing } : {};
119
+ entry.resourceUrl = normalized;
120
+ mutate(entry);
121
+ data[id] = entry;
122
+ await this.write(data);
183
123
  });
184
124
  }
185
- write(data) {
186
- return __awaiter(this, void 0, void 0, function* () {
125
+ async read() {
126
+ if (this.cache !== undefined) {
127
+ return this.cache;
128
+ }
129
+ this.loading ??= this.readDisk().then(data => {
187
130
  this.cache = data;
188
- yield mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
189
- yield writeFile(this.path, `${JSON.stringify(data, null, 2)}\n`, {
190
- mode: 0o600,
191
- });
192
- yield chmod(this.path, 0o600);
131
+ return data;
193
132
  });
133
+ return this.loading;
194
134
  }
195
- withLock(fn) {
196
- return __awaiter(this, void 0, void 0, function* () {
197
- var _a;
198
- const prev = (_a = locks.get(this.path)) !== null && _a !== void 0 ? _a : Promise.resolve();
199
- let release;
200
- locks.set(this.path, new Promise(resolve => {
201
- release = resolve;
202
- }));
203
- try {
204
- yield prev;
205
- return yield fn();
135
+ async readDisk() {
136
+ try {
137
+ const parsed = JSON.parse(await readFile(this.path, "utf8"));
138
+ if (typeof parsed !== "object" || parsed === null) {
139
+ return {};
206
140
  }
207
- finally {
208
- release();
141
+ return parsed;
142
+ }
143
+ catch (error) {
144
+ if (typeof error === "object" &&
145
+ error !== null &&
146
+ "code" in error &&
147
+ error.code === "ENOENT") {
148
+ return {};
209
149
  }
150
+ throw error;
151
+ }
152
+ }
153
+ async write(data) {
154
+ this.cache = data;
155
+ await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
156
+ await writeFile(this.path, `${JSON.stringify(data, null, 2)}\n`, {
157
+ mode: 0o600,
210
158
  });
159
+ await chmod(this.path, 0o600);
160
+ }
161
+ async withLock(fn) {
162
+ const prev = locks.get(this.path) ?? Promise.resolve();
163
+ let release;
164
+ locks.set(this.path, new Promise(resolve => {
165
+ release = resolve;
166
+ }));
167
+ try {
168
+ await prev;
169
+ return await fn();
170
+ }
171
+ finally {
172
+ release();
173
+ }
211
174
  }
212
175
  }
213
176
  /**
@@ -218,43 +181,40 @@ export class FileMcpOAuthStore {
218
181
  * path shape on any origin so local translators work, and fails to the
219
182
  * default behavior (indicator kept) when the PRM is unreachable.
220
183
  */
221
- export function fetchOmitResourceIndicatorFromPrm(resourceUrl_1) {
222
- return __awaiter(this, arguments, void 0, function* (resourceUrl, fetchImpl = fetch) {
223
- let url;
224
- try {
225
- url = new URL(resourceUrl);
226
- }
227
- catch (_a) {
228
- return false;
229
- }
230
- if (!/^\/rest-mcp\/[^/]+\/mcp\/?$/.test(url.pathname)) {
231
- return false;
232
- }
233
- const prmUrl = `${url.origin}/.well-known/oauth-protected-resource${url.pathname.replace(/\/+$/, "")}`;
234
- try {
235
- const response = yield fetchImpl(prmUrl);
236
- if (!response.ok) {
237
- return false;
238
- }
239
- const document = (yield response.json());
240
- return document.cursor_omit_resource_indicator === true;
241
- }
242
- catch (_b) {
184
+ export async function fetchOmitResourceIndicatorFromPrm(resourceUrl, fetchImpl = fetch) {
185
+ let url;
186
+ try {
187
+ url = new URL(resourceUrl);
188
+ }
189
+ catch {
190
+ return false;
191
+ }
192
+ if (!/^\/rest-mcp\/[^/]+\/mcp\/?$/.test(url.pathname)) {
193
+ return false;
194
+ }
195
+ const prmUrl = `${url.origin}/.well-known/oauth-protected-resource${url.pathname.replace(/\/+$/, "")}`;
196
+ try {
197
+ const response = await fetchImpl(prmUrl);
198
+ if (!response.ok) {
243
199
  return false;
244
200
  }
245
- });
201
+ const document = (await response.json());
202
+ return document.cursor_omit_resource_indicator === true;
203
+ }
204
+ catch {
205
+ return false;
206
+ }
246
207
  }
247
208
  export class HostMcpOAuthProvider {
248
209
  constructor(args) {
249
- var _a;
250
210
  this.args = args;
251
211
  this.tokensValue = args.tokens;
252
212
  this.clientInfo = args.clientInformation;
253
213
  if (args.omitResourceIndicator === true) {
254
- this.validateResourceURL = () => __awaiter(this, void 0, void 0, function* () { return undefined; });
214
+ this.validateResourceURL = async () => undefined;
255
215
  }
256
216
  this.meta = {
257
- redirect_uris: [(_a = args.redirectUrl) !== null && _a !== void 0 ? _a : MCP_OAUTH_CALLBACK_URL],
217
+ redirect_uris: [args.redirectUrl ?? MCP_OAUTH_CALLBACK_URL],
258
218
  token_endpoint_auth_method: "none",
259
219
  grant_types: ["authorization_code", "refresh_token"],
260
220
  response_types: ["code"],
@@ -262,8 +222,7 @@ export class HostMcpOAuthProvider {
262
222
  };
263
223
  }
264
224
  get redirectUrl() {
265
- var _a;
266
- return (_a = this.args.redirectUrl) !== null && _a !== void 0 ? _a : MCP_OAUTH_CALLBACK_URL;
225
+ return this.args.redirectUrl ?? MCP_OAUTH_CALLBACK_URL;
267
226
  }
268
227
  get clientMetadata() {
269
228
  return this.meta;
@@ -277,30 +236,23 @@ export class HostMcpOAuthProvider {
277
236
  clientInformation() {
278
237
  return this.clientInfo;
279
238
  }
280
- saveClientInformation(info) {
281
- return __awaiter(this, void 0, void 0, function* () {
282
- this.clientInfo = info;
283
- yield this.args.store.saveClientInformation(this.args.identifier, this.args.resourceUrl, info);
284
- });
239
+ async saveClientInformation(info) {
240
+ this.clientInfo = info;
241
+ await this.args.store.saveClientInformation(this.args.identifier, this.args.resourceUrl, info);
285
242
  }
286
243
  tokens() {
287
244
  return this.tokensValue;
288
245
  }
289
- saveTokens(tokens) {
290
- return __awaiter(this, void 0, void 0, function* () {
291
- this.tokensValue = tokens;
292
- yield this.args.store.saveTokens(this.args.identifier, this.args.resourceUrl, tokens);
293
- });
246
+ async saveTokens(tokens) {
247
+ this.tokensValue = tokens;
248
+ await this.args.store.saveTokens(this.args.identifier, this.args.resourceUrl, tokens);
294
249
  }
295
250
  redirectToAuthorization(url) {
296
- var _a, _b;
297
251
  this.redirect = url;
298
- (_b = (_a = this.args).onRedirect) === null || _b === void 0 ? void 0 : _b.call(_a, url);
252
+ this.args.onRedirect?.(url);
299
253
  }
300
- saveCodeVerifier(codeVerifier) {
301
- return __awaiter(this, void 0, void 0, function* () {
302
- this.verifier = codeVerifier;
303
- });
254
+ async saveCodeVerifier(codeVerifier) {
255
+ this.verifier = codeVerifier;
304
256
  }
305
257
  codeVerifier() {
306
258
  if (this.verifier === undefined) {
@@ -308,22 +260,20 @@ export class HostMcpOAuthProvider {
308
260
  }
309
261
  return this.verifier;
310
262
  }
311
- invalidateCredentials(scope) {
312
- return __awaiter(this, void 0, void 0, function* () {
313
- if (scope === "tokens" || scope === "all") {
314
- this.tokensValue = undefined;
315
- }
316
- if (scope === "client" || scope === "all") {
317
- this.clientInfo = undefined;
318
- }
319
- if (scope === "verifier" || scope === "all") {
320
- this.verifier = undefined;
321
- this.redirect = undefined;
322
- }
323
- if (scope === "all") {
324
- yield this.args.store.deleteCredentials(this.args.identifier);
325
- }
326
- });
263
+ async invalidateCredentials(scope) {
264
+ if (scope === "tokens" || scope === "all") {
265
+ this.tokensValue = undefined;
266
+ }
267
+ if (scope === "client" || scope === "all") {
268
+ this.clientInfo = undefined;
269
+ }
270
+ if (scope === "verifier" || scope === "all") {
271
+ this.verifier = undefined;
272
+ this.redirect = undefined;
273
+ }
274
+ if (scope === "all") {
275
+ await this.args.store.deleteCredentials(this.args.identifier);
276
+ }
327
277
  }
328
278
  }
329
279
  function clientForRedirect(info, redirectUrl) {
@@ -332,26 +282,23 @@ function clientForRedirect(info, redirectUrl) {
332
282
  }
333
283
  return info;
334
284
  }
335
- export function createHostMcpOAuthProvider(args) {
336
- return __awaiter(this, void 0, void 0, function* () {
337
- var _a, _b;
338
- const store = (_a = args.store) !== null && _a !== void 0 ? _a : new FileMcpOAuthStore();
339
- const redirectUrl = (_b = args.redirectUrl) !== null && _b !== void 0 ? _b : MCP_OAUTH_CALLBACK_URL;
340
- const [fileTokens, fileClient, omitResourceIndicator] = yield Promise.all([
341
- store.loadTokens(args.identifier, args.resourceUrl),
342
- store.loadClientInformation(args.identifier, args.resourceUrl),
343
- fetchOmitResourceIndicatorFromPrm(args.resourceUrl),
344
- ]);
345
- return new HostMcpOAuthProvider({
346
- identifier: args.identifier,
347
- resourceUrl: args.resourceUrl,
348
- store,
349
- redirectUrl,
350
- tokens: fileTokens !== null && fileTokens !== void 0 ? fileTokens : tokensFromEnv(args.identifier),
351
- clientInformation: clientForRedirect(fileClient !== null && fileClient !== void 0 ? fileClient : clientIdFromEnv(args.identifier), redirectUrl),
352
- onRedirect: args.onRedirect,
353
- omitResourceIndicator,
354
- });
285
+ export async function createHostMcpOAuthProvider(args) {
286
+ const store = args.store ?? new FileMcpOAuthStore();
287
+ const redirectUrl = args.redirectUrl ?? MCP_OAUTH_CALLBACK_URL;
288
+ const [fileTokens, fileClient, omitResourceIndicator] = await Promise.all([
289
+ store.loadTokens(args.identifier, args.resourceUrl),
290
+ store.loadClientInformation(args.identifier, args.resourceUrl),
291
+ fetchOmitResourceIndicatorFromPrm(args.resourceUrl),
292
+ ]);
293
+ return new HostMcpOAuthProvider({
294
+ identifier: args.identifier,
295
+ resourceUrl: args.resourceUrl,
296
+ store,
297
+ redirectUrl,
298
+ tokens: fileTokens ?? tokensFromEnv(args.identifier),
299
+ clientInformation: clientForRedirect(fileClient ?? clientIdFromEnv(args.identifier), redirectUrl),
300
+ onRedirect: args.onRedirect,
301
+ omitResourceIndicator,
355
302
  });
356
303
  }
357
304
  /**
@@ -360,75 +307,71 @@ export function createHostMcpOAuthProvider(args) {
360
307
  * public npm with no private workspace dependencies, and its OAuth state is a
361
308
  * bare UUID rather than the payload that module's validator expects.
362
309
  */
363
- export function waitForMcpOAuthCallback(args) {
364
- return __awaiter(this, void 0, void 0, function* () {
365
- var _a, _b, _c;
366
- const port = (_a = args.port) !== null && _a !== void 0 ? _a : MCP_OAUTH_CALLBACK_PORT;
367
- const path = (_b = args.path) !== null && _b !== void 0 ? _b : MCP_OAUTH_CALLBACK_PATH;
368
- const timeoutMs = (_c = args.timeoutMs) !== null && _c !== void 0 ? _c : 5 * 60 * 1000;
369
- const expectedState = new URL(args.authorizationUrl).searchParams.get("state");
370
- return new Promise((resolve, reject) => {
371
- let done = false;
372
- const finish = (result, error) => {
373
- if (done) {
374
- return;
375
- }
376
- done = true;
377
- clearTimeout(timer);
378
- server.close();
379
- if (error !== undefined) {
380
- reject(error);
381
- return;
382
- }
383
- if (result !== undefined) {
384
- resolve(result);
385
- }
386
- };
387
- const server = createServer((req, res) => {
388
- var _a, _b;
389
- if (req.url === "/favicon.ico") {
390
- res.writeHead(404).end();
391
- return;
392
- }
393
- const url = new URL((_a = req.url) !== null && _a !== void 0 ? _a : "", `http://localhost:${port}`);
394
- if (url.pathname !== path) {
395
- res.writeHead(404).end("Not found");
396
- return;
397
- }
398
- const code = url.searchParams.get("code");
399
- const oauthError = url.searchParams.get("error");
400
- const state = (_b = url.searchParams.get("state")) !== null && _b !== void 0 ? _b : undefined;
401
- // Without this, any page that can reach the loopback port during a login
402
- // can inject its own authorization code into the exchange. Ignore what is
403
- // not ours rather than failing the login: treating a stray request as
404
- // fatal would let any page cancel a login, and free the port for someone
405
- // else to bind before the real callback arrives.
406
- if (state !== (expectedState !== null && expectedState !== void 0 ? expectedState : undefined)) {
407
- res
408
- .writeHead(404, { "content-type": "text/html; charset=utf-8" })
409
- .end("<!doctype html><html><body><h1>Not found</h1></body></html>");
410
- return;
411
- }
412
- if (code) {
413
- res
414
- .writeHead(200, { "content-type": "text/html; charset=utf-8" })
415
- .end("<!doctype html><html><body><h1>Authorized</h1><p>Return to Agent SDK.</p></body></html>");
416
- finish({ code, state });
417
- return;
418
- }
310
+ export async function waitForMcpOAuthCallback(args) {
311
+ const port = args.port ?? MCP_OAUTH_CALLBACK_PORT;
312
+ const path = args.path ?? MCP_OAUTH_CALLBACK_PATH;
313
+ const timeoutMs = args.timeoutMs ?? 5 * 60 * 1000;
314
+ const expectedState = new URL(args.authorizationUrl).searchParams.get("state");
315
+ return new Promise((resolve, reject) => {
316
+ let done = false;
317
+ const finish = (result, error) => {
318
+ if (done) {
319
+ return;
320
+ }
321
+ done = true;
322
+ clearTimeout(timer);
323
+ server.close();
324
+ if (error !== undefined) {
325
+ reject(error);
326
+ return;
327
+ }
328
+ if (result !== undefined) {
329
+ resolve(result);
330
+ }
331
+ };
332
+ const server = createServer((req, res) => {
333
+ if (req.url === "/favicon.ico") {
334
+ res.writeHead(404).end();
335
+ return;
336
+ }
337
+ const url = new URL(req.url ?? "", `http://localhost:${port}`);
338
+ if (url.pathname !== path) {
339
+ res.writeHead(404).end("Not found");
340
+ return;
341
+ }
342
+ const code = url.searchParams.get("code");
343
+ const oauthError = url.searchParams.get("error");
344
+ const state = url.searchParams.get("state") ?? undefined;
345
+ // Without this, any page that can reach the loopback port during a login
346
+ // can inject its own authorization code into the exchange. Ignore what is
347
+ // not ours rather than failing the login: treating a stray request as
348
+ // fatal would let any page cancel a login, and free the port for someone
349
+ // else to bind before the real callback arrives.
350
+ if (state !== (expectedState ?? undefined)) {
419
351
  res
420
- .writeHead(400, { "content-type": "text/html; charset=utf-8" })
421
- .end(`<!doctype html><html><body><h1>Authorization failed</h1><p>${oauthError !== null && oauthError !== void 0 ? oauthError : "missing code"}</p></body></html>`);
422
- finish(undefined, new Error(`OAuth authorization failed: ${oauthError !== null && oauthError !== void 0 ? oauthError : "missing code"}`));
423
- });
424
- const timer = setTimeout(() => {
425
- finish(undefined, new Error(`Timed out waiting for OAuth callback on http://localhost:${port}${path}`));
426
- }, timeoutMs);
427
- server.on("error", error => {
428
- finish(undefined, new Error(`OAuth callback port ${port} failed: ${error instanceof Error ? error.message : String(error)}`));
429
- });
430
- server.listen(port, "127.0.0.1");
352
+ .writeHead(404, { "content-type": "text/html; charset=utf-8" })
353
+ .end("<!doctype html><html><body><h1>Not found</h1></body></html>");
354
+ return;
355
+ }
356
+ if (code) {
357
+ res
358
+ .writeHead(200, { "content-type": "text/html; charset=utf-8" })
359
+ .end("<!doctype html><html><body><h1>Authorized</h1><p>Return to Agent SDK.</p></body></html>");
360
+ finish({ code, state });
361
+ return;
362
+ }
363
+ res
364
+ .writeHead(400, { "content-type": "text/html; charset=utf-8" })
365
+ .end(`<!doctype html><html><body><h1>Authorization failed</h1><p>${oauthError ?? "missing code"}</p></body></html>`);
366
+ finish(undefined, new Error(`OAuth authorization failed: ${oauthError ?? "missing code"}`));
367
+ });
368
+ const timer = setTimeout(() => {
369
+ finish(undefined, new Error(`Timed out waiting for OAuth callback on http://localhost:${port}${path}`));
370
+ }, timeoutMs);
371
+ server.on("error", error => {
372
+ finish(undefined, new Error(`OAuth callback port ${port} failed: ${error instanceof Error ? error.message : String(error)}`));
431
373
  });
374
+ server.listen(port, "127.0.0.1");
432
375
  });
433
376
  }
434
377
  export function openBrowser(url) {
@@ -0,0 +1,39 @@
1
+ import { type SecretRef } from "../types.js";
2
+ /**
3
+ * The shapes an SCM channel accepts for its webhook secret. Only the
4
+ * {@link SecretRef} form names the secret, which is what lets `deploy` write
5
+ * it into the manifest and the control plane verify the sender at ingestion.
6
+ */
7
+ export type WebhookSecretValue = string | SecretRef | (() => string | undefined);
8
+ /**
9
+ * The omitted-`webhookSecret` fallback: a {@link SecretRef} naming `envName`,
10
+ * present only while that env var is non-empty at channel construction.
11
+ * Named rather than read so the fallback keeps the same route policy (and
12
+ * the same control-plane catch declaration) as an authored
13
+ * `{ secretName: envName }`.
14
+ */
15
+ export declare function envSecretRef(envName: string): SecretRef | undefined;
16
+ /**
17
+ * The secret's value for the handler's own check. A named secret resolves
18
+ * from the environment: locally the shell's, hosted the bound deployment
19
+ * secrets. Empty and whitespace-only values count as unset.
20
+ */
21
+ export declare function resolveWebhookSecretValue(value: WebhookSecretValue | undefined): string | undefined;
22
+ /**
23
+ * Why an SCM channel cannot deploy onto architecture v2 as authored, or
24
+ * `undefined` when it can. v2 terminates the provider's webhook check on
25
+ * the control plane, which can only do that for a secret it can name: a
26
+ * literal or getter value never reaches the manifest, so the check would
27
+ * run inside the guest only — after compute was spent and after the SCM
28
+ * already got its 202. Omitting the field (the env fallback) is allowed.
29
+ */
30
+ export declare function namedWebhookSecretArchitectureError(args: {
31
+ /** Author-facing option path, e.g. `githubChannel credentials.webhookSecret`. */
32
+ option: string;
33
+ webhookSecret: unknown;
34
+ /** Env var / deployment secret name the fallback and the fix use. */
35
+ envName: string;
36
+ /** What the control plane checks, e.g. `X-Hub-Signature-256`. */
37
+ verifies: string;
38
+ }): string | undefined;
39
+ //# sourceMappingURL=named-webhook-secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"named-webhook-secret.d.ts","sourceRoot":"","sources":["../../src/internal/named-webhook-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GACpC,MAAM,GAAG,SAAS,CAYpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACxD,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,SAAS,CAWrB"}