@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
@@ -5,15 +5,6 @@
5
5
  * errors, and bounded retries. Availability requires both a compatible
6
6
  * transport and a managed store, resolved lazily for each call.
7
7
  */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  import { MEMORY_APPEND_MAX_RECORD_BYTES, memoryAppendResponseSchema, memoryReadResponseSchema, STORE_API_MEMORY_APPEND_CALL, STORE_API_MEMORY_READ_CALL, STORE_API_PATH, STORE_API_PROTOCOL_VERSION, serializedRecordBytes, } from "../store-api-protocol.js";
18
9
  import { resolveCursorApiBaseUrl, resolveCursorApiFetch, resolveCursorApiKey, } from "./cursor-api-transport.js";
19
10
  import { resolveDeploymentStoreSourceIdSync, resolveStoreProtocolSync, storeProtocolEnablesStoreApi, } from "./hosted-store-secrets.js";
@@ -32,35 +23,34 @@ export class StoreApiCallError extends Error {
32
23
  * A 429 whose Retry-After exceeds the cap gives up immediately.
33
24
  */
34
25
  const STORE_API_MAX_ATTEMPTS = 3;
35
- const STORE_API_MAX_BACKOFF_MS = 2000;
26
+ const STORE_API_MAX_BACKOFF_MS = 2_000;
36
27
  /**
37
28
  * Hard deadline per request. Hydration runs at the head of the session
38
29
  * dispatch chain, so a stalled connection must not delay every queued
39
30
  * handler.
40
31
  */
41
- const STORE_API_FETCH_TIMEOUT_MS = 15000;
32
+ const STORE_API_FETCH_TIMEOUT_MS = 15_000;
42
33
  function backoffMs(attempt, random) {
43
- return Math.min(200 * Math.pow(2, attempt) * (0.5 + random()), STORE_API_MAX_BACKOFF_MS);
34
+ return Math.min(200 * 2 ** attempt * (0.5 + random()), STORE_API_MAX_BACKOFF_MS);
44
35
  }
45
36
  /** True when managed store operations are available. */
46
37
  export function isStoreApiLaneEnabled(options = {}) {
47
- var _a, _b, _c;
48
- var _d, _e, _f;
49
- const protocol = (_d = (_a = options.resolveStoreProtocol) === null || _a === void 0 ? void 0 : _a.call(options)) !== null && _d !== void 0 ? _d : resolveStoreProtocolSync();
38
+ const protocol = options.resolveStoreProtocol?.() ?? resolveStoreProtocolSync();
50
39
  if (!storeProtocolEnablesStoreApi(protocol)) {
51
40
  return false;
52
41
  }
53
- const sourceId = (_c = ((_f = (_e = (_b = options.resolveStoreSourceId) === null || _b === void 0 ? void 0 : _b.call(options)) !== null && _e !== void 0 ? _e : options.storeSourceId) !== null && _f !== void 0 ? _f : resolveDeploymentStoreSourceIdSync())) === null || _c === void 0 ? void 0 : _c.trim();
42
+ const sourceId = (options.resolveStoreSourceId?.() ??
43
+ options.storeSourceId ??
44
+ resolveDeploymentStoreSourceIdSync())?.trim();
54
45
  return sourceId !== undefined && sourceId !== "";
55
46
  }
56
47
  export function createStoreApiClient(options = {}) {
57
- var _a, _b;
58
- const sleep = (_a = options.sleep) !== null && _a !== void 0 ? _a : ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
59
- const random = (_b = options.random) !== null && _b !== void 0 ? _b : Math.random;
48
+ const sleep = options.sleep ?? ((ms) => new Promise(resolve => setTimeout(resolve, ms)));
49
+ const random = options.random ?? Math.random;
60
50
  /** One POST of a versioned envelope; returns the parsed 2xx body. */
61
- const postOnce = (call, envelope) => __awaiter(this, void 0, void 0, function* () {
51
+ const postOnce = async (call, envelope) => {
62
52
  const fetchImpl = resolveCursorApiFetch(options);
63
- return yield fetchImpl(`${resolveCursorApiBaseUrl(options)}${STORE_API_PATH}/${call}`, {
53
+ return await fetchImpl(`${resolveCursorApiBaseUrl(options)}${STORE_API_PATH}/${call}`, {
64
54
  method: "POST",
65
55
  headers: {
66
56
  Authorization: `Bearer ${resolveCursorApiKey(options)}`,
@@ -69,39 +59,38 @@ export function createStoreApiClient(options = {}) {
69
59
  body: JSON.stringify(envelope),
70
60
  signal: AbortSignal.timeout(STORE_API_FETCH_TIMEOUT_MS),
71
61
  });
72
- });
62
+ };
73
63
  /** The response's `Retry-After` in ms, when present and numeric. */
74
64
  const retryAfterDelayMs = (response) => {
75
- var _a;
76
- const header = (_a = response.headers.get("retry-after")) === null || _a === void 0 ? void 0 : _a.trim();
65
+ const header = response.headers.get("retry-after")?.trim();
77
66
  const seconds = header === undefined || header === "" ? Number.NaN : Number(header);
78
- return Number.isFinite(seconds) ? seconds * 1000 : undefined;
67
+ return Number.isFinite(seconds) ? seconds * 1_000 : undefined;
79
68
  };
80
- const describeErrorBody = (response) => __awaiter(this, void 0, void 0, function* () {
69
+ const describeErrorBody = async (response) => {
81
70
  try {
82
- const parsed = (yield response.json());
83
- if (typeof (parsed === null || parsed === void 0 ? void 0 : parsed.error) === "string") {
71
+ const parsed = (await response.json());
72
+ if (typeof parsed?.error === "string") {
84
73
  return parsed.error;
85
74
  }
86
75
  }
87
- catch (_a) {
76
+ catch {
88
77
  // Non-JSON error body; the status is the message.
89
78
  }
90
79
  return `HTTP ${response.status}`;
91
- });
92
- const callApi = (call, envelope) => __awaiter(this, void 0, void 0, function* () {
80
+ };
81
+ const callApi = async (call, envelope) => {
93
82
  let lastFailure;
94
83
  // A shed's Retry-After (when within the cap) overrides the next jittered
95
84
  // backoff; cleared before every attempt.
96
85
  let nextDelayMs;
97
86
  for (let attempt = 0; attempt < STORE_API_MAX_ATTEMPTS; attempt += 1) {
98
87
  if (attempt > 0) {
99
- yield sleep(nextDelayMs !== null && nextDelayMs !== void 0 ? nextDelayMs : backoffMs(attempt, random));
88
+ await sleep(nextDelayMs ?? backoffMs(attempt, random));
100
89
  }
101
90
  nextDelayMs = undefined;
102
91
  let response;
103
92
  try {
104
- response = yield postOnce(call, envelope);
93
+ response = await postOnce(call, envelope);
105
94
  }
106
95
  catch (error) {
107
96
  lastFailure = new StoreApiCallError("unavailable", `store api ${call} transport failure: ${error instanceof Error ? error.message : String(error)}`);
@@ -109,15 +98,15 @@ export function createStoreApiClient(options = {}) {
109
98
  }
110
99
  if (response.ok) {
111
100
  try {
112
- return (yield response.json());
101
+ return (await response.json());
113
102
  }
114
- catch (_a) {
103
+ catch {
115
104
  throw new StoreApiCallError("bad_response", `store api ${call} answered non-JSON (${response.status})`, response.status);
116
105
  }
117
106
  }
118
107
  if (response.status === 429) {
119
108
  const retryDelayMs = retryAfterDelayMs(response);
120
- const shed = new StoreApiCallError("shed", `store api ${call} shed: ${yield describeErrorBody(response)}`, response.status);
109
+ const shed = new StoreApiCallError("shed", `store api ${call} shed: ${await describeErrorBody(response)}`, response.status);
121
110
  if (retryDelayMs !== undefined && retryDelayMs > STORE_API_MAX_BACKOFF_MS) {
122
111
  // A long Retry-After is an explicit instruction to stop retrying.
123
112
  throw shed;
@@ -135,70 +124,66 @@ export function createStoreApiClient(options = {}) {
135
124
  if (retryDelayMs !== undefined) {
136
125
  nextDelayMs = Math.min(retryDelayMs, STORE_API_MAX_BACKOFF_MS);
137
126
  }
138
- lastFailure = new StoreApiCallError("unavailable", `store api ${call} failed: ${yield describeErrorBody(response)}`, response.status);
127
+ lastFailure = new StoreApiCallError("unavailable", `store api ${call} failed: ${await describeErrorBody(response)}`, response.status);
139
128
  continue;
140
129
  }
141
130
  // Any other 4xx is deterministic; retrying re-sends the same refusal.
142
- throw new StoreApiCallError("rejected", `store api ${call} rejected: ${yield describeErrorBody(response)}`, response.status);
131
+ throw new StoreApiCallError("rejected", `store api ${call} rejected: ${await describeErrorBody(response)}`, response.status);
143
132
  }
144
- throw lastFailure !== null && lastFailure !== void 0 ? lastFailure : new StoreApiCallError("unavailable", "no attempt ran");
145
- });
133
+ throw lastFailure ?? new StoreApiCallError("unavailable", "no attempt ran");
134
+ };
146
135
  return {
147
- memoryAppend(payload) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const recordBytes = serializedRecordBytes(payload.record);
150
- if (recordBytes > MEMORY_APPEND_MAX_RECORD_BYTES) {
151
- // The server-side controller enforces the same cap; checking here
152
- // spares a doomed request and fails with the same typed shape.
153
- throw new StoreApiCallError("rejected", `memory.append record is ${recordBytes} serialized bytes; the cap is ${MEMORY_APPEND_MAX_RECORD_BYTES}`);
154
- }
155
- const body = yield callApi(STORE_API_MEMORY_APPEND_CALL, {
156
- v: STORE_API_PROTOCOL_VERSION,
157
- call: STORE_API_MEMORY_APPEND_CALL,
158
- payload,
159
- });
160
- if (!memoryAppendResponseSchema.safeParse(body).success) {
161
- throw new StoreApiCallError("bad_response", "unexpected memory.append response shape");
162
- }
136
+ async memoryAppend(payload) {
137
+ const recordBytes = serializedRecordBytes(payload.record);
138
+ if (recordBytes > MEMORY_APPEND_MAX_RECORD_BYTES) {
139
+ // The server-side controller enforces the same cap; checking here
140
+ // spares a doomed request and fails with the same typed shape.
141
+ throw new StoreApiCallError("rejected", `memory.append record is ${recordBytes} serialized bytes; the cap is ${MEMORY_APPEND_MAX_RECORD_BYTES}`);
142
+ }
143
+ const body = await callApi(STORE_API_MEMORY_APPEND_CALL, {
144
+ v: STORE_API_PROTOCOL_VERSION,
145
+ call: STORE_API_MEMORY_APPEND_CALL,
146
+ payload,
163
147
  });
148
+ if (!memoryAppendResponseSchema.safeParse(body).success) {
149
+ throw new StoreApiCallError("bad_response", "unexpected memory.append response shape");
150
+ }
164
151
  },
165
- memoryReadContent(payload) {
166
- return __awaiter(this, void 0, void 0, function* () {
167
- const body = yield callApi(STORE_API_MEMORY_READ_CALL, {
168
- v: STORE_API_PROTOCOL_VERSION,
169
- call: STORE_API_MEMORY_READ_CALL,
170
- payload,
171
- });
172
- const parsed = memoryReadResponseSchema.safeParse(body);
173
- if (!parsed.success) {
174
- throw new StoreApiCallError("bad_response", "unexpected memory.read response shape");
175
- }
176
- if (parsed.data.journal === null) {
177
- return undefined;
178
- }
179
- // Fetch bulk bytes from the authorized URL. This read is not retried;
180
- // the whole operation runs again at the next session start.
181
- const fetchImpl = resolveCursorApiFetch(options);
182
- let response;
183
- try {
184
- response = yield fetchImpl(parsed.data.journal.url, {
185
- method: "GET",
186
- redirect: "manual",
187
- signal: AbortSignal.timeout(STORE_API_FETCH_TIMEOUT_MS),
188
- });
189
- }
190
- catch (error) {
191
- throw new StoreApiCallError("unavailable", `memory.read journal fetch transport failure: ${error instanceof Error ? error.message : String(error)}`);
192
- }
193
- if (response.status === 404) {
194
- // The snapshot raced a rotation or delete; absent is absent.
195
- return undefined;
196
- }
197
- if (!response.ok) {
198
- throw new StoreApiCallError("unavailable", `memory.read journal fetch failed (HTTP ${response.status})`, response.status);
199
- }
200
- return new Uint8Array(yield response.arrayBuffer());
152
+ async memoryReadContent(payload) {
153
+ const body = await callApi(STORE_API_MEMORY_READ_CALL, {
154
+ v: STORE_API_PROTOCOL_VERSION,
155
+ call: STORE_API_MEMORY_READ_CALL,
156
+ payload,
201
157
  });
158
+ const parsed = memoryReadResponseSchema.safeParse(body);
159
+ if (!parsed.success) {
160
+ throw new StoreApiCallError("bad_response", "unexpected memory.read response shape");
161
+ }
162
+ if (parsed.data.journal === null) {
163
+ return undefined;
164
+ }
165
+ // Fetch bulk bytes from the authorized URL. This read is not retried;
166
+ // the whole operation runs again at the next session start.
167
+ const fetchImpl = resolveCursorApiFetch(options);
168
+ let response;
169
+ try {
170
+ response = await fetchImpl(parsed.data.journal.url, {
171
+ method: "GET",
172
+ redirect: "manual",
173
+ signal: AbortSignal.timeout(STORE_API_FETCH_TIMEOUT_MS),
174
+ });
175
+ }
176
+ catch (error) {
177
+ throw new StoreApiCallError("unavailable", `memory.read journal fetch transport failure: ${error instanceof Error ? error.message : String(error)}`);
178
+ }
179
+ if (response.status === 404) {
180
+ // The snapshot raced a rotation or delete; absent is absent.
181
+ return undefined;
182
+ }
183
+ if (!response.ok) {
184
+ throw new StoreApiCallError("unavailable", `memory.read journal fetch failed (HTTP ${response.status})`, response.status);
185
+ }
186
+ return new Uint8Array(await response.arrayBuffer());
202
187
  },
203
188
  };
204
189
  }
@@ -12,19 +12,10 @@
12
12
  * account. Used by `agent-sdk mcp oauth <connection>` and the post-deploy
13
13
  * hook in `cli-deploy.ts`.
14
14
  */
15
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
- return new (P || (P = Promise))(function (resolve, reject) {
18
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
- step((generator = generator.apply(thisArg, _arguments || [])).next());
22
- });
23
- };
24
15
  import { LOG_PREFIX } from "./distribution.js";
25
16
  import { openBrowser } from "./mcp-oauth.js";
26
17
  import { sleep as defaultSleep } from "./sleep.js";
27
- const DEFAULT_POLL_INTERVAL_MS = 3000;
18
+ const DEFAULT_POLL_INTERVAL_MS = 3_000;
28
19
  const DEFAULT_POLL_TIMEOUT_MS = 5 * 60 * 1000;
29
20
  /** Same default the dashboard uses; MCP_OAUTH_REDIRECT_URI overrides for dev. */
30
21
  export function mcpOauthRedirectUri() {
@@ -39,83 +30,80 @@ export function mcpOauthRedirectUri() {
39
30
  * Already-authorized connectors are skipped; the rest get a browser OAuth
40
31
  * each (sequentially), polled until the backend stores the token.
41
32
  */
42
- export function authorizeCursorAccountConnectors(args) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- var _a, _b, _c, _d, _e, _f;
45
- const { backendClient, teamId, serviceAccountId, connectionName, out, err } = args;
46
- const open = (_a = args.openBrowserImpl) !== null && _a !== void 0 ? _a : openBrowser;
47
- const sleep = (_b = args.sleep) !== null && _b !== void 0 ? _b : defaultSleep;
48
- const pollIntervalMs = (_c = args.pollIntervalMs) !== null && _c !== void 0 ? _c : DEFAULT_POLL_INTERVAL_MS;
49
- const pollTimeoutMs = (_d = args.pollTimeoutMs) !== null && _d !== void 0 ? _d : DEFAULT_POLL_TIMEOUT_MS;
50
- const redirectUri = mcpOauthRedirectUri();
51
- // Team-scoped connectors only: the hosted bridge resolves the SA's team
52
- // servers, so personal connectors can never apply to a deployment.
53
- const available = (yield backendClient.getAvailableMcpServers({ teamId })).filter(server => server.isTeamServer);
54
- const selected = selectConnectors(available, args.servers);
55
- for (const missing of selected.unmatched) {
56
- err(`${LOG_PREFIX} Connection "${connectionName}" lists connector ${JSON.stringify(missing)}, but the team has no such connector (dashboard → MCP).\n`);
33
+ export async function authorizeCursorAccountConnectors(args) {
34
+ const { backendClient, teamId, serviceAccountId, connectionName, out, err } = args;
35
+ const open = args.openBrowserImpl ?? openBrowser;
36
+ const sleep = args.sleep ?? defaultSleep;
37
+ const pollIntervalMs = args.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
38
+ const pollTimeoutMs = args.pollTimeoutMs ?? DEFAULT_POLL_TIMEOUT_MS;
39
+ const redirectUri = mcpOauthRedirectUri();
40
+ // Team-scoped connectors only: the hosted bridge resolves the SA's team
41
+ // servers, so personal connectors can never apply to a deployment.
42
+ const available = (await backendClient.getAvailableMcpServers({ teamId })).filter(server => server.isTeamServer);
43
+ const selected = selectConnectors(available, args.servers);
44
+ for (const missing of selected.unmatched) {
45
+ err(`${LOG_PREFIX} Connection "${connectionName}" lists connector ${JSON.stringify(missing)}, but the team has no such connector (dashboard → MCP).\n`);
46
+ }
47
+ if (selected.servers.length === 0) {
48
+ err(`${LOG_PREFIX} No matching team connectors for connection "${connectionName}".\n`);
49
+ return { authorized: [], pending: [], errored: [] };
50
+ }
51
+ const nameById = new Map(selected.servers.map(server => [server.id, server.name]));
52
+ const statuses = await backendClient.checkHttpMcpStatus({
53
+ serverIds: selected.servers.map(server => server.id),
54
+ oauthRedirectUri: redirectUri,
55
+ serviceAccountId,
56
+ });
57
+ const result = {
58
+ authorized: [],
59
+ pending: [],
60
+ errored: [],
61
+ };
62
+ for (const status of statuses) {
63
+ const name = nameById.get(status.id) ?? `#${status.id}`;
64
+ if (!status.requiresAuth) {
65
+ if (status.error !== undefined && status.error !== "") {
66
+ err(`${LOG_PREFIX} ${name}: ${status.error}\n`);
67
+ result.errored.push({ name, error: status.error });
68
+ continue;
69
+ }
70
+ out(`${LOG_PREFIX} ${name}: already authorized ✓\n`);
71
+ result.authorized.push(name);
72
+ continue;
73
+ }
74
+ if (status.authUrl === undefined || status.authUrl === "") {
75
+ const error = status.error ?? "no authorization URL was minted";
76
+ err(`${LOG_PREFIX} ${name}: ${error}\n`);
77
+ result.errored.push({ name, error });
78
+ continue;
57
79
  }
58
- if (selected.servers.length === 0) {
59
- err(`${LOG_PREFIX} No matching team connectors for connection "${connectionName}".\n`);
60
- return { authorized: [], pending: [], errored: [] };
80
+ if (!args.interactive) {
81
+ result.pending.push(name);
82
+ continue;
61
83
  }
62
- const nameById = new Map(selected.servers.map(server => [server.id, server.name]));
63
- const statuses = yield backendClient.checkHttpMcpStatus({
64
- serverIds: selected.servers.map(server => server.id),
65
- oauthRedirectUri: redirectUri,
84
+ out(`${LOG_PREFIX} ${name}: authorization needed. You'll authorize ${name} as yourself; ` +
85
+ `anyone who can talk to this agent can act with that access.\n` +
86
+ `${LOG_PREFIX} Opening (or open manually):\n ${status.authUrl}\n`);
87
+ open(status.authUrl);
88
+ const authorized = await pollUntilAuthorized({
89
+ backendClient,
90
+ serverId: status.id,
66
91
  serviceAccountId,
92
+ redirectUri,
93
+ sleep,
94
+ pollIntervalMs,
95
+ pollTimeoutMs,
67
96
  });
68
- const result = {
69
- authorized: [],
70
- pending: [],
71
- errored: [],
72
- };
73
- for (const status of statuses) {
74
- const name = (_e = nameById.get(status.id)) !== null && _e !== void 0 ? _e : `#${status.id}`;
75
- if (!status.requiresAuth) {
76
- if (status.error !== undefined && status.error !== "") {
77
- err(`${LOG_PREFIX} ${name}: ${status.error}\n`);
78
- result.errored.push({ name, error: status.error });
79
- continue;
80
- }
81
- out(`${LOG_PREFIX} ${name}: already authorized ✓\n`);
82
- result.authorized.push(name);
83
- continue;
84
- }
85
- if (status.authUrl === undefined || status.authUrl === "") {
86
- const error = (_f = status.error) !== null && _f !== void 0 ? _f : "no authorization URL was minted";
87
- err(`${LOG_PREFIX} ${name}: ${error}\n`);
88
- result.errored.push({ name, error });
89
- continue;
90
- }
91
- if (!args.interactive) {
92
- result.pending.push(name);
93
- continue;
94
- }
95
- out(`${LOG_PREFIX} ${name}: authorization needed. You'll authorize ${name} as yourself; ` +
96
- `anyone who can talk to this agent can act with that access.\n` +
97
- `${LOG_PREFIX} Opening (or open manually):\n ${status.authUrl}\n`);
98
- open(status.authUrl);
99
- const authorized = yield pollUntilAuthorized({
100
- backendClient,
101
- serverId: status.id,
102
- serviceAccountId,
103
- redirectUri,
104
- sleep,
105
- pollIntervalMs,
106
- pollTimeoutMs,
107
- });
108
- if (authorized) {
109
- out(`${LOG_PREFIX} ${name}: authorized ✓\n`);
110
- result.authorized.push(name);
111
- }
112
- else {
113
- err(`${LOG_PREFIX} ${name}: still waiting on authorization; giving up for now.\n`);
114
- result.pending.push(name);
115
- }
97
+ if (authorized) {
98
+ out(`${LOG_PREFIX} ${name}: authorized ✓\n`);
99
+ result.authorized.push(name);
116
100
  }
117
- return result;
118
- });
101
+ else {
102
+ err(`${LOG_PREFIX} ${name}: still waiting on authorization; giving up for now.\n`);
103
+ result.pending.push(name);
104
+ }
105
+ }
106
+ return result;
119
107
  }
120
108
  function selectConnectors(available, filter) {
121
109
  if (filter === undefined || filter.length === 0) {
@@ -126,7 +114,7 @@ function selectConnectors(available, filter) {
126
114
  const unmatched = [];
127
115
  for (const name of filter) {
128
116
  const wanted = name.trim().toLowerCase();
129
- const matches = available.filter(server => { var _a; return server.name.toLowerCase() === wanted || ((_a = server.serverIdentifier) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === wanted; });
117
+ const matches = available.filter(server => server.name.toLowerCase() === wanted || server.serverIdentifier?.toLowerCase() === wanted);
130
118
  if (matches.length === 0) {
131
119
  unmatched.push(name);
132
120
  continue;
@@ -145,7 +133,7 @@ function uniqueConnectorMatch(available, identifier) {
145
133
  if (wanted === "") {
146
134
  return undefined;
147
135
  }
148
- const byIdentifier = available.filter(server => { var _a; return ((_a = server.serverIdentifier) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === wanted; });
136
+ const byIdentifier = available.filter(server => server.serverIdentifier?.toLowerCase() === wanted);
149
137
  if (byIdentifier.length === 1) {
150
138
  return byIdentifier[0];
151
139
  }
@@ -164,78 +152,73 @@ function uniqueConnectorMatch(available, identifier) {
164
152
  * (local `serve` preflight). Failures return an empty map so the caller
165
153
  * can fall back to the dashboard URL.
166
154
  */
167
- export function probeConnectorAuthUrls(args) {
168
- return __awaiter(this, void 0, void 0, function* () {
169
- var _a, _b;
170
- const urls = new Map();
171
- if (args.identifiers.length === 0) {
155
+ export async function probeConnectorAuthUrls(args) {
156
+ const urls = new Map();
157
+ if (args.identifiers.length === 0) {
158
+ return urls;
159
+ }
160
+ try {
161
+ const available = await args.client.getAvailableMcpServers();
162
+ const matched = [];
163
+ const seen = new Set();
164
+ for (const identifier of args.identifiers) {
165
+ const match = uniqueConnectorMatch(available, identifier);
166
+ if (match === undefined || seen.has(match.id)) {
167
+ continue;
168
+ }
169
+ seen.add(match.id);
170
+ matched.push(match);
171
+ }
172
+ if (matched.length === 0) {
172
173
  return urls;
173
174
  }
174
- try {
175
- const available = yield args.client.getAvailableMcpServers();
176
- const matched = [];
177
- const seen = new Set();
178
- for (const identifier of args.identifiers) {
179
- const match = uniqueConnectorMatch(available, identifier);
180
- if (match === undefined || seen.has(match.id)) {
181
- continue;
182
- }
183
- seen.add(match.id);
184
- matched.push(match);
175
+ const statuses = await args.client.checkHttpMcpStatus({
176
+ serverIds: matched.map(server => server.id),
177
+ oauthRedirectUri: mcpOauthRedirectUri(),
178
+ serviceAccountId: args.serviceAccountId,
179
+ });
180
+ const statusById = new Map(statuses.map(status => [status.id, status]));
181
+ for (const identifier of args.identifiers) {
182
+ const match = uniqueConnectorMatch(available, identifier);
183
+ if (match === undefined) {
184
+ continue;
185
185
  }
186
- if (matched.length === 0) {
187
- return urls;
186
+ const authUrl = statusById.get(match.id)?.authUrl?.trim();
187
+ if (authUrl !== undefined && authUrl !== "") {
188
+ urls.set(identifier, authUrl);
188
189
  }
189
- const statuses = yield args.client.checkHttpMcpStatus({
190
- serverIds: matched.map(server => server.id),
191
- oauthRedirectUri: mcpOauthRedirectUri(),
190
+ }
191
+ return urls;
192
+ }
193
+ catch {
194
+ return urls;
195
+ }
196
+ }
197
+ async function pollUntilAuthorized(args) {
198
+ const deadline = Date.now() + args.pollTimeoutMs;
199
+ // Each unauthorized probe is a full backend connect to the provider, so
200
+ // back off while the human works through the OAuth pages.
201
+ let intervalMs = args.pollIntervalMs;
202
+ const maxIntervalMs = Math.max(args.pollIntervalMs, 15_000);
203
+ while (Date.now() < deadline) {
204
+ await args.sleep(intervalMs);
205
+ intervalMs = Math.min(intervalMs * 1.5, maxIntervalMs);
206
+ let statuses;
207
+ try {
208
+ statuses = await args.backendClient.checkHttpMcpStatus({
209
+ serverIds: [args.serverId],
210
+ oauthRedirectUri: args.redirectUri,
192
211
  serviceAccountId: args.serviceAccountId,
193
212
  });
194
- const statusById = new Map(statuses.map(status => [status.id, status]));
195
- for (const identifier of args.identifiers) {
196
- const match = uniqueConnectorMatch(available, identifier);
197
- if (match === undefined) {
198
- continue;
199
- }
200
- const authUrl = (_b = (_a = statusById.get(match.id)) === null || _a === void 0 ? void 0 : _a.authUrl) === null || _b === void 0 ? void 0 : _b.trim();
201
- if (authUrl !== undefined && authUrl !== "") {
202
- urls.set(identifier, authUrl);
203
- }
204
- }
205
- return urls;
206
213
  }
207
- catch (_c) {
208
- return urls;
214
+ catch {
215
+ // Transient probe errors; keep polling until the deadline.
216
+ continue;
209
217
  }
210
- });
211
- }
212
- function pollUntilAuthorized(args) {
213
- return __awaiter(this, void 0, void 0, function* () {
214
- const deadline = Date.now() + args.pollTimeoutMs;
215
- // Each unauthorized probe is a full backend connect to the provider, so
216
- // back off while the human works through the OAuth pages.
217
- let intervalMs = args.pollIntervalMs;
218
- const maxIntervalMs = Math.max(args.pollIntervalMs, 15000);
219
- while (Date.now() < deadline) {
220
- yield args.sleep(intervalMs);
221
- intervalMs = Math.min(intervalMs * 1.5, maxIntervalMs);
222
- let statuses;
223
- try {
224
- statuses = yield args.backendClient.checkHttpMcpStatus({
225
- serverIds: [args.serverId],
226
- oauthRedirectUri: args.redirectUri,
227
- serviceAccountId: args.serviceAccountId,
228
- });
229
- }
230
- catch (_a) {
231
- // Transient probe errors; keep polling until the deadline.
232
- continue;
233
- }
234
- const status = statuses.find(entry => entry.id === args.serverId);
235
- if (status !== undefined && !status.requiresAuth) {
236
- return true;
237
- }
218
+ const status = statuses.find(entry => entry.id === args.serverId);
219
+ if (status !== undefined && !status.requiresAuth) {
220
+ return true;
238
221
  }
239
- return false;
240
- });
222
+ }
223
+ return false;
241
224
  }
@@ -29,7 +29,7 @@ export function readCursorAgentTemplate(rootDir) {
29
29
  const stamp = pkg.cursorAgentTemplate;
30
30
  return typeof stamp === "string" ? stamp : undefined;
31
31
  }
32
- catch (_a) {
32
+ catch {
33
33
  return undefined;
34
34
  }
35
35
  }