@cursor/bdk 0.2.9 → 0.2.11

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