@cursor/bdk 0.2.8 → 0.2.10

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