@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
@@ -13,15 +13,6 @@
13
13
  * (so `servers` filters apply there too); without one they omit the bridge
14
14
  * and fall back to the account's natively hydrated connectors.
15
15
  */
16
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
- return new (P || (P = Promise))(function (resolve, reject) {
19
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
- step((generator = generator.apply(thisArg, _arguments || [])).next());
23
- });
24
- };
25
16
  import { randomBytes } from "node:crypto";
26
17
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
27
18
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
@@ -35,12 +26,12 @@ import { isLoopbackAddress } from "../net.js";
35
26
  import { sanitizeMcpToolName, suffixMcpToolName } from "../sanitize-mcp-tool-name.js";
36
27
  import { colorEnabledFor, formatTerminalBox, stdoutPalette, terminalHyperlink, } from "../terminal-style.js";
37
28
  /** Catalog freshness window; a miss inside it re-uses the cached listing. */
38
- const CATALOG_TTL_MS = 60000;
29
+ const CATALOG_TTL_MS = 60_000;
39
30
  /**
40
31
  * Unknown-tool lookups force a refresh, but never more often than this —
41
32
  * a model hallucinating tool names cannot turn into a backend hot loop.
42
33
  */
43
- const FORCE_REFRESH_MIN_INTERVAL_MS = 5000;
34
+ const FORCE_REFRESH_MIN_INTERVAL_MS = 5_000;
44
35
  /** Dashboard Integrations & MCP — reconnect team / account connectors. */
45
36
  export const CURSOR_ACCOUNT_MCP_DASHBOARD_URL = "https://cursor.com/dashboard/integrations";
46
37
  /** Cursor app Settings → MCP (Connect / Authenticate on the named row). */
@@ -51,20 +42,22 @@ export const CURSOR_ACCOUNT_MCP_SETTINGS_DEEPLINK = "cursor://anysphere.cursor-d
51
42
  * the account (see {@link CursorAccountMcpBridge.logPreflight}).
52
43
  */
53
44
  export function collectCursorAccountConnections(mounts) {
54
- var _a;
55
45
  const bySlug = new Map();
56
46
  for (const { slug, project } of mounts) {
57
47
  const refs = [];
58
48
  for (const connection of [
59
49
  ...project.agent.connections,
60
- ...((_a = project.agent.hostConnections) !== null && _a !== void 0 ? _a : []),
50
+ ...(project.agent.hostConnections ?? []),
61
51
  ]) {
62
52
  if (!isCursorAccountTransport(connection.transport)) {
63
53
  continue;
64
54
  }
65
- refs.push(Object.assign({ name: connection.name }, (connection.transport.servers === undefined
66
- ? {}
67
- : { servers: [...connection.transport.servers] })));
55
+ refs.push({
56
+ name: connection.name,
57
+ ...(connection.transport.servers === undefined
58
+ ? {}
59
+ : { servers: [...connection.transport.servers] }),
60
+ });
68
61
  }
69
62
  if (refs.length > 0) {
70
63
  bySlug.set(slug, refs);
@@ -86,21 +79,26 @@ export function resolveCursorAccountConnections(args) {
86
79
  const serverBase = trimTrailingSlash(args.serverUrl);
87
80
  const publicBase = args.publicUrl === undefined ? undefined : trimTrailingSlash(args.publicUrl);
88
81
  const headers = { authorization: `Bearer ${args.bridgeSecret}` };
89
- return args.refs.map(ref => (Object.assign(Object.assign(Object.assign({ name: ref.name, localUrl: `${serverBase}${args.basePath}${cursorAccountMcpPath(ref.name)}` }, (publicBase === undefined
90
- ? {}
91
- : {
92
- cloudUrl: `${publicBase}${args.basePath}${cursorAccountMcpPath(ref.name)}`,
93
- })), { headers }), (ref.servers === undefined ? {} : { accountServersFilter: ref.servers }))));
82
+ return args.refs.map(ref => ({
83
+ name: ref.name,
84
+ localUrl: `${serverBase}${args.basePath}${cursorAccountMcpPath(ref.name)}`,
85
+ ...(publicBase === undefined
86
+ ? {}
87
+ : {
88
+ cloudUrl: `${publicBase}${args.basePath}${cursorAccountMcpPath(ref.name)}`,
89
+ }),
90
+ headers,
91
+ ...(ref.servers === undefined ? {} : { accountServersFilter: ref.servers }),
92
+ }));
94
93
  }
95
94
  export class CursorAccountMcpBridge {
96
95
  constructor(args) {
97
- var _a, _b;
98
96
  /** Per-boot shared secret; resolved connections carry it as a bearer. */
99
97
  this.secret = randomBytes(32).toString("hex");
100
98
  this.catalogs = new Map();
101
99
  this.client = args.client;
102
- this.logger = (_a = args.logger) !== null && _a !== void 0 ? _a : (() => { });
103
- this.palette = (_b = args.palette) !== null && _b !== void 0 ? _b : stdoutPalette();
100
+ this.logger = args.logger ?? (() => { });
101
+ this.palette = args.palette ?? stdoutPalette();
104
102
  this.secretPolicy = bearerAuth(this.secret);
105
103
  this.allowRemoteCallers = args.allowRemoteCallers === true;
106
104
  }
@@ -110,12 +108,12 @@ export class CursorAccountMcpBridge {
110
108
  * `publicUrl` (cloud turns arrive through that ingress with the secret).
111
109
  */
112
110
  authPolicy() {
113
- return (request, info) => __awaiter(this, void 0, void 0, function* () {
111
+ return async (request, info) => {
114
112
  const loopback = info.requestIp !== null && isLoopbackAddress(info.requestIp);
115
113
  if (!loopback && !this.allowRemoteCallers) {
116
114
  return null;
117
115
  }
118
- if ((yield this.secretPolicy(request, info)) === null) {
116
+ if ((await this.secretPolicy(request, info)) === null) {
119
117
  return null;
120
118
  }
121
119
  return {
@@ -123,15 +121,14 @@ export class CursorAccountMcpBridge {
123
121
  principalId: "cursor-account-bridge",
124
122
  principalType: "runtime",
125
123
  };
126
- });
124
+ };
127
125
  }
128
126
  /**
129
127
  * Handle one streamable-HTTP MCP request for the connection described by
130
128
  * `ref` (stateless: fresh server per POST, like the per-agent endpoint).
131
129
  */
132
130
  handle(request, ref, decorate) {
133
- var _a;
134
- const sessionId = (_a = new URL(request.url).searchParams.get("agentkitSessionId")) !== null && _a !== void 0 ? _a : "";
131
+ const sessionId = new URL(request.url).searchParams.get("agentkitSessionId") ?? "";
135
132
  return handleStatelessMcpRequest({
136
133
  request,
137
134
  buildServer: () => this.buildServer(ref, sessionId, decorate),
@@ -148,89 +145,92 @@ export class CursorAccountMcpBridge {
148
145
  * Returns a promise that settles when every ref's log lines are written —
149
146
  * callers may ignore it; tests can await it.
150
147
  */
151
- probeAuthUrl(ref) {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- const identifiers = ref.servers !== undefined && ref.servers.length > 0
154
- ? [...ref.servers]
155
- : (yield this.client.getAvailableMcpServers()).map(server => { var _a; return (_a = server.serverIdentifier) !== null && _a !== void 0 ? _a : server.name; });
156
- const urls = yield probeConnectorAuthUrls({
157
- client: this.client,
158
- identifiers,
159
- });
160
- for (const url of urls.values()) {
161
- if (url !== "") {
162
- return url;
163
- }
164
- }
165
- return undefined;
148
+ async probeAuthUrl(ref) {
149
+ const identifiers = ref.servers !== undefined && ref.servers.length > 0
150
+ ? [...ref.servers]
151
+ : (await this.client.getAvailableMcpServers()).map(server => server.serverIdentifier ?? server.name);
152
+ const urls = await probeConnectorAuthUrls({
153
+ client: this.client,
154
+ identifiers,
166
155
  });
156
+ for (const url of urls.values()) {
157
+ if (url !== "") {
158
+ return url;
159
+ }
160
+ }
161
+ return undefined;
167
162
  }
168
163
  logPreflight(refs) {
169
164
  return Promise.all(refs.map(ref => this.runPreflight(ref))).then(() => undefined);
170
165
  }
171
- runPreflight(ref) {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- try {
174
- const catalog = yield this.getCatalog(ref);
175
- const errorDetails = new Map();
176
- const needsAuthNames = catalog.servers
177
- .filter(server => server.status === "needsAuth")
178
- .map(server => server.serverIdentifier);
179
- const [authUrls] = yield Promise.all([
180
- probeConnectorAuthUrls({
181
- client: this.client,
182
- identifiers: needsAuthNames,
183
- }),
184
- Promise.all(catalog.servers
185
- .filter(server => server.status === "error")
186
- .map((server) => __awaiter(this, void 0, void 0, function* () {
187
- const detail = yield diagnoseConnectorError(this.client, server.serverIdentifier);
188
- if (detail !== undefined) {
189
- errorDetails.set(server.serverIdentifier, detail);
190
- }
191
- }))),
192
- ]);
193
- const unhealthy = catalog.servers.some(server => server.status === "needsAuth" || server.status === "error");
194
- if (catalog.servers.length === 0 || unhealthy) {
195
- this.logger(formatCursorAccountMcpWarningBox({
196
- connectionName: ref.name,
197
- servers: catalog.servers.map(server => ({
198
- serverIdentifier: server.serverIdentifier,
199
- status: server.status,
200
- toolCount: server.tools.length,
201
- errorDetail: errorDetails.get(server.serverIdentifier),
202
- authUrl: authUrls.get(server.serverIdentifier),
203
- })),
204
- palette: this.palette,
205
- }));
206
- return;
207
- }
208
- const summary = catalog.servers
209
- .map(server => formatServerStatusSummary(server, errorDetails.get(server.serverIdentifier)))
210
- .join(", ");
211
- this.logger(`${LOG_PREFIX} Cursor account MCP connection "${ref.name}": ${summary}`);
212
- }
213
- catch (error) {
214
- this.logger(`${LOG_PREFIX} Cursor account MCP connection "${ref.name}" preflight failed: ${describeError(error)}`);
166
+ async runPreflight(ref) {
167
+ try {
168
+ const catalog = await this.getCatalog(ref);
169
+ const errorDetails = new Map();
170
+ const needsAuthNames = catalog.servers
171
+ .filter(server => server.status === "needsAuth")
172
+ .map(server => server.serverIdentifier);
173
+ const [authUrls] = await Promise.all([
174
+ probeConnectorAuthUrls({
175
+ client: this.client,
176
+ identifiers: needsAuthNames,
177
+ }),
178
+ Promise.all(catalog.servers
179
+ .filter(server => server.status === "error")
180
+ .map(async (server) => {
181
+ const detail = await diagnoseConnectorError(this.client, server.serverIdentifier);
182
+ if (detail !== undefined) {
183
+ errorDetails.set(server.serverIdentifier, detail);
184
+ }
185
+ })),
186
+ ]);
187
+ const unhealthy = catalog.servers.some(server => server.status === "needsAuth" || server.status === "error");
188
+ if (catalog.servers.length === 0 || unhealthy) {
189
+ this.logger(formatCursorAccountMcpWarningBox({
190
+ connectionName: ref.name,
191
+ servers: catalog.servers.map(server => ({
192
+ serverIdentifier: server.serverIdentifier,
193
+ status: server.status,
194
+ toolCount: server.tools.length,
195
+ errorDetail: errorDetails.get(server.serverIdentifier),
196
+ authUrl: authUrls.get(server.serverIdentifier),
197
+ })),
198
+ palette: this.palette,
199
+ }));
200
+ return;
215
201
  }
216
- });
202
+ const summary = catalog.servers
203
+ .map(server => formatServerStatusSummary(server, errorDetails.get(server.serverIdentifier)))
204
+ .join(", ");
205
+ this.logger(`${LOG_PREFIX} Cursor account MCP connection "${ref.name}": ${summary}`);
206
+ }
207
+ catch (error) {
208
+ this.logger(`${LOG_PREFIX} Cursor account MCP connection "${ref.name}" preflight failed: ${describeError(error)}`);
209
+ }
217
210
  }
218
211
  buildServer(ref, sessionId, decorate) {
219
212
  const server = new Server({ name: `cursor-account:${ref.name}`, version: "0.1.0" }, {
220
213
  capabilities: { tools: {} },
221
214
  instructions: "Tools from the Cursor account's MCP connectors. Every call executes on the Cursor backend with the account's stored credentials.",
222
215
  });
223
- server.setRequestHandler(ListToolsRequestSchema, () => __awaiter(this, void 0, void 0, function* () {
224
- const catalog = yield this.getCatalog(ref);
216
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
217
+ const catalog = await this.getCatalog(ref);
225
218
  return {
226
- tools: catalog.tools.map(tool => (Object.assign(Object.assign({ name: tool.exposedName, description: tool.description, inputSchema: tool.inputSchema }, (tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema })), (tool.annotations === undefined ? {} : { annotations: tool.annotations })))),
219
+ tools: catalog.tools.map(tool => ({
220
+ name: tool.exposedName,
221
+ description: tool.description,
222
+ inputSchema: tool.inputSchema,
223
+ ...(tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema }),
224
+ // Already bounded to the MCP-spec fields at the backend-client
225
+ // parse; absent stays absent so classifiers fail closed.
226
+ ...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),
227
+ })),
227
228
  };
228
- }));
229
- server.setRequestHandler(CallToolRequestSchema, (request) => __awaiter(this, void 0, void 0, function* () {
230
- var _a;
231
- const tool = yield this.findTool(ref, request.params.name);
229
+ });
230
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
231
+ const tool = await this.findTool(ref, request.params.name);
232
232
  if (tool === undefined) {
233
- const catalog = yield this.getCatalog(ref);
233
+ const catalog = await this.getCatalog(ref);
234
234
  const unhealthy = catalog.servers.filter(server => server.status !== "connected");
235
235
  const statusHint = unhealthy.length === 0
236
236
  ? ""
@@ -248,10 +248,10 @@ export class CursorAccountMcpBridge {
248
248
  };
249
249
  }
250
250
  try {
251
- const executed = yield this.client.executeAccountMcpTool({
251
+ const executed = await this.client.executeAccountMcpTool({
252
252
  serverIdentifier: tool.serverIdentifier,
253
253
  toolName: tool.backendName,
254
- args: (_a = request.params.arguments) !== null && _a !== void 0 ? _a : {},
254
+ args: request.params.arguments ?? {},
255
255
  });
256
256
  const decorated = decorate === undefined ? executed : decorate(sessionId, executed);
257
257
  return {
@@ -271,20 +271,18 @@ export class CursorAccountMcpBridge {
271
271
  isError: true,
272
272
  };
273
273
  }
274
- }));
274
+ });
275
275
  return server;
276
276
  }
277
277
  /** Resolve a tool by exposed name, refreshing once when it is unknown. */
278
- findTool(ref, exposedName) {
279
- return __awaiter(this, void 0, void 0, function* () {
280
- const catalog = yield this.getCatalog(ref);
281
- const hit = catalog.byExposedName.get(exposedName);
282
- if (hit !== undefined) {
283
- return hit;
284
- }
285
- const fresh = yield this.getCatalog(ref, { forceRefresh: true });
286
- return fresh.byExposedName.get(exposedName);
287
- });
278
+ async findTool(ref, exposedName) {
279
+ const catalog = await this.getCatalog(ref);
280
+ const hit = catalog.byExposedName.get(exposedName);
281
+ if (hit !== undefined) {
282
+ return hit;
283
+ }
284
+ const fresh = await this.getCatalog(ref, { forceRefresh: true });
285
+ return fresh.byExposedName.get(exposedName);
288
286
  }
289
287
  /**
290
288
  * Fetch (or join) the catalog for `ref`'s server filter. Staleness and
@@ -292,7 +290,6 @@ export class CursorAccountMcpBridge {
292
290
  * promise; fresh entries use {@link CatalogEntry.freshAtMs} for TTL.
293
291
  */
294
292
  getCatalog(ref, options) {
295
- var _a;
296
293
  const key = ref.servers === undefined ? "*" : [...ref.servers].sort().join("\n");
297
294
  const entry = this.catalogs.get(key);
298
295
  if (entry !== undefined) {
@@ -300,14 +297,14 @@ export class CursorAccountMcpBridge {
300
297
  return entry.promise;
301
298
  }
302
299
  const age = Date.now() - entry.freshAtMs;
303
- const maxAge = (options === null || options === void 0 ? void 0 : options.forceRefresh) === true ? FORCE_REFRESH_MIN_INTERVAL_MS : CATALOG_TTL_MS;
300
+ const maxAge = options?.forceRefresh === true ? FORCE_REFRESH_MIN_INTERVAL_MS : CATALOG_TTL_MS;
304
301
  if (age < maxAge) {
305
302
  return entry.promise;
306
303
  }
307
304
  }
308
305
  const fresh = {
309
306
  promise: this.client
310
- .listAccountMcpTools((_a = ref.servers) !== null && _a !== void 0 ? _a : [])
307
+ .listAccountMcpTools(ref.servers ?? [])
311
308
  .then(servers => {
312
309
  const catalog = buildCatalog(servers);
313
310
  fresh.freshAtMs = Date.now();
@@ -368,7 +365,15 @@ function buildCatalog(servers) {
368
365
  suffixIndex++;
369
366
  exposedName = suffixMcpToolName(base, suffixIndex);
370
367
  }
371
- const entry = Object.assign(Object.assign({ exposedName, backendName: tool.name, serverIdentifier, description: tool.description, inputSchema: tool.inputSchema }, (tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema })), (tool.annotations === undefined ? {} : { annotations: tool.annotations }));
368
+ const entry = {
369
+ exposedName,
370
+ backendName: tool.name,
371
+ serverIdentifier,
372
+ description: tool.description,
373
+ inputSchema: tool.inputSchema,
374
+ ...(tool.outputSchema === undefined ? {} : { outputSchema: tool.outputSchema }),
375
+ ...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),
376
+ };
372
377
  tools.push(entry);
373
378
  byExposedName.set(entry.exposedName, entry);
374
379
  });
@@ -404,8 +409,7 @@ function formatWarningStatusRow(server, nameWidth, hyperlinks) {
404
409
  }
405
410
  }
406
411
  function connectUrl(authUrl) {
407
- var _a;
408
- const minted = (_a = authUrl === null || authUrl === void 0 ? void 0 : authUrl.trim()) !== null && _a !== void 0 ? _a : "";
412
+ const minted = authUrl?.trim() ?? "";
409
413
  if (minted.startsWith("https://") && !minted.includes("\u001b") && !minted.includes("\u0007")) {
410
414
  return minted;
411
415
  }
@@ -416,10 +420,9 @@ function connectUrl(authUrl) {
416
420
  * One box replaces the old stacked `[bdk]` log lines.
417
421
  */
418
422
  export function formatCursorAccountMcpWarningBox(args) {
419
- var _a, _b;
420
- const palette = (_a = args.palette) !== null && _a !== void 0 ? _a : stdoutPalette();
421
- const hyperlinks = (_b = args.hyperlinks) !== null && _b !== void 0 ? _b : colorEnabledFor();
422
- const copy = warningCopy(Object.assign(Object.assign({}, args), { hyperlinks }));
423
+ const palette = args.palette ?? stdoutPalette();
424
+ const hyperlinks = args.hyperlinks ?? colorEnabledFor();
425
+ const copy = warningCopy({ ...args, hyperlinks });
423
426
  return `\n${formatTerminalBox([copy.title, "", ...copy.intro, ...copy.actions], {
424
427
  color: palette.yellow,
425
428
  padding: 2,
@@ -480,31 +483,29 @@ export function formatServerStatusSummary(server, errorDetail) {
480
483
  * returns the status enum today, so probe ExecuteSandMcpTool (ping) and surface
481
484
  * the backend failure text (e.g. `HTTP MCP tool execution failed: fetch failed`).
482
485
  */
483
- export function diagnoseConnectorError(client, serverIdentifier) {
484
- return __awaiter(this, void 0, void 0, function* () {
485
- try {
486
- const result = yield client.executeAccountMcpTool({
487
- serverIdentifier,
488
- // Conventional health tool; even a tool-not-found path usually still
489
- // surfaces the same transport failure when the connector is down.
490
- toolName: `${serverIdentifier}-ping`,
491
- args: {},
492
- });
493
- const text = result.content
494
- .filter((part) => part.type === "text")
495
- .map(part => part.text.trim())
496
- .filter(part => part.length > 0)
497
- .join(" ");
498
- if (result.isError) {
499
- return text.length > 0 ? text : "backend reported an error with no detail";
500
- }
501
- // Listing said error but ping succeeded — surface that inconsistency.
502
- return text.length > 0
503
- ? `listing reported error but probe succeeded: ${text}`
504
- : "listing reported error but probe succeeded";
505
- }
506
- catch (error) {
507
- return describeError(error);
486
+ export async function diagnoseConnectorError(client, serverIdentifier) {
487
+ try {
488
+ const result = await client.executeAccountMcpTool({
489
+ serverIdentifier,
490
+ // Conventional health tool; even a tool-not-found path usually still
491
+ // surfaces the same transport failure when the connector is down.
492
+ toolName: `${serverIdentifier}-ping`,
493
+ args: {},
494
+ });
495
+ const text = result.content
496
+ .filter((part) => part.type === "text")
497
+ .map(part => part.text.trim())
498
+ .filter(part => part.length > 0)
499
+ .join(" ");
500
+ if (result.isError) {
501
+ return text.length > 0 ? text : "backend reported an error with no detail";
508
502
  }
509
- });
503
+ // Listing said error but ping succeeded — surface that inconsistency.
504
+ return text.length > 0
505
+ ? `listing reported error but probe succeeded: ${text}`
506
+ : "listing reported error but probe succeeded";
507
+ }
508
+ catch (error) {
509
+ return describeError(error);
510
+ }
510
511
  }