@cursor/bdk 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/artifacts.js +3 -5
  2. package/dist/bin/agent-serve.js +803 -812
  3. package/dist/channels/bitbucket/api.js +305 -321
  4. package/dist/channels/bitbucket/binding.js +97 -61
  5. package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
  6. package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
  7. package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
  8. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  10. package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
  11. package/dist/channels/bitbucket/checks.js +9 -21
  12. package/dist/channels/bitbucket/cursor-account.js +1 -1
  13. package/dist/channels/bitbucket/defaults.js +14 -4
  14. package/dist/channels/bitbucket/events.js +1 -2
  15. package/dist/channels/bitbucket/index.d.ts +6 -2
  16. package/dist/channels/bitbucket/index.d.ts.map +1 -1
  17. package/dist/channels/bitbucket/index.js +6 -2
  18. package/dist/channels/bitbucket/replay.js +80 -56
  19. package/dist/channels/bitbucket/state.js +16 -7
  20. package/dist/channels/bitbucket/types.d.ts +11 -2
  21. package/dist/channels/bitbucket/types.d.ts.map +1 -1
  22. package/dist/channels/checks.js +18 -28
  23. package/dist/channels/deployments/deployments-channel.js +26 -34
  24. package/dist/channels/github/api.js +216 -210
  25. package/dist/channels/github/auth.d.ts +5 -1
  26. package/dist/channels/github/auth.d.ts.map +1 -1
  27. package/dist/channels/github/auth.js +157 -174
  28. package/dist/channels/github/binding.js +48 -39
  29. package/dist/channels/github/checks.js +9 -14
  30. package/dist/channels/github/cursor-account.js +6 -11
  31. package/dist/channels/github/defaults.js +105 -130
  32. package/dist/channels/github/forward.js +13 -17
  33. package/dist/channels/github/github-channel.d.ts +43 -2
  34. package/dist/channels/github/github-channel.d.ts.map +1 -1
  35. package/dist/channels/github/github-channel.js +1228 -958
  36. package/dist/channels/github/progress.js +145 -146
  37. package/dist/channels/github/replay.js +30 -39
  38. package/dist/channels/github/state.js +40 -16
  39. package/dist/channels/github/types.d.ts +30 -6
  40. package/dist/channels/github/types.d.ts.map +1 -1
  41. package/dist/channels/gitlab/api.js +100 -114
  42. package/dist/channels/gitlab/binding.js +52 -33
  43. package/dist/channels/gitlab/checks.js +28 -29
  44. package/dist/channels/gitlab/cursor-account.js +1 -1
  45. package/dist/channels/gitlab/defaults.js +9 -3
  46. package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
  47. package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
  48. package/dist/channels/gitlab/gitlab-channel.js +95 -42
  49. package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
  50. package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
  51. package/dist/channels/gitlab/gitlab-webhook.js +282 -249
  52. package/dist/channels/gitlab/index.d.ts +6 -2
  53. package/dist/channels/gitlab/index.d.ts.map +1 -1
  54. package/dist/channels/gitlab/index.js +6 -2
  55. package/dist/channels/gitlab/replay.js +50 -27
  56. package/dist/channels/gitlab/state.js +14 -6
  57. package/dist/channels/gitlab/types.d.ts +13 -2
  58. package/dist/channels/gitlab/types.d.ts.map +1 -1
  59. package/dist/channels/origin/api.js +100 -116
  60. package/dist/channels/origin/binding.js +15 -16
  61. package/dist/channels/origin/checks.js +30 -28
  62. package/dist/channels/origin/defaults.js +50 -65
  63. package/dist/channels/origin/origin-channel.js +266 -272
  64. package/dist/channels/origin/origin-webhook.js +70 -88
  65. package/dist/channels/origin/reactions.js +9 -21
  66. package/dist/channels/origin/state.js +13 -5
  67. package/dist/channels/slack/agentic-delivery.js +426 -478
  68. package/dist/channels/slack/agentic-posted.js +9 -10
  69. package/dist/channels/slack/agentic-signals.js +2 -3
  70. package/dist/channels/slack/api.js +417 -427
  71. package/dist/channels/slack/approvals.js +1 -1
  72. package/dist/channels/slack/assistant.js +37 -47
  73. package/dist/channels/slack/attachments.js +188 -206
  74. package/dist/channels/slack/auth.js +8 -6
  75. package/dist/channels/slack/bot-mentions.js +31 -45
  76. package/dist/channels/slack/channel-watch.js +42 -48
  77. package/dist/channels/slack/cli-project.js +112 -137
  78. package/dist/channels/slack/code-fences.js +3 -5
  79. package/dist/channels/slack/constants.js +2 -2
  80. package/dist/channels/slack/credentials.js +23 -38
  81. package/dist/channels/slack/defaults.js +292 -331
  82. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  83. package/dist/channels/slack/dispatch.js +533 -460
  84. package/dist/channels/slack/doctor.js +200 -214
  85. package/dist/channels/slack/eval-directive.js +79 -96
  86. package/dist/channels/slack/event-id-dedupe.js +1 -1
  87. package/dist/channels/slack/external-policy.js +26 -39
  88. package/dist/channels/slack/footer.js +28 -41
  89. package/dist/channels/slack/inbound.d.ts +1 -0
  90. package/dist/channels/slack/inbound.d.ts.map +1 -1
  91. package/dist/channels/slack/inbound.js +50 -31
  92. package/dist/channels/slack/init.d.ts +1 -5
  93. package/dist/channels/slack/init.d.ts.map +1 -1
  94. package/dist/channels/slack/init.js +42 -59
  95. package/dist/channels/slack/interactive.d.ts +9 -3
  96. package/dist/channels/slack/interactive.d.ts.map +1 -1
  97. package/dist/channels/slack/interactive.js +160 -162
  98. package/dist/channels/slack/links.js +1 -2
  99. package/dist/channels/slack/live-delivery.js +172 -190
  100. package/dist/channels/slack/manifest.d.ts.map +1 -1
  101. package/dist/channels/slack/manifest.js +44 -23
  102. package/dist/channels/slack/message-body.js +2 -2
  103. package/dist/channels/slack/nudge-carrier.js +30 -42
  104. package/dist/channels/slack/nudge-store.js +164 -191
  105. package/dist/channels/slack/paint-start.js +66 -81
  106. package/dist/channels/slack/placeholder.js +123 -152
  107. package/dist/channels/slack/pr-ref.js +1 -1
  108. package/dist/channels/slack/progress-delivery.js +65 -78
  109. package/dist/channels/slack/reasoning-card.js +36 -49
  110. package/dist/channels/slack/recording-sink.js +12 -24
  111. package/dist/channels/slack/reply-options.js +7 -12
  112. package/dist/channels/slack/self-identity.js +27 -35
  113. package/dist/channels/slack/sender-name.d.ts +12 -3
  114. package/dist/channels/slack/sender-name.d.ts.map +1 -1
  115. package/dist/channels/slack/sender-name.js +57 -61
  116. package/dist/channels/slack/setup.js +2 -4
  117. package/dist/channels/slack/slack-channel.d.ts +6 -4
  118. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  119. package/dist/channels/slack/slack-channel.js +441 -308
  120. package/dist/channels/slack/socket-mode.js +38 -52
  121. package/dist/channels/slack/thread-context.js +143 -160
  122. package/dist/channels/slack/tool-approval-events.js +149 -166
  123. package/dist/channels/slack/tool-cards.js +6 -11
  124. package/dist/channels/slack/tool-chip.js +1 -2
  125. package/dist/channels/slack/types.d.ts +15 -17
  126. package/dist/channels/slack/types.d.ts.map +1 -1
  127. package/dist/channels/slack/upload.js +84 -97
  128. package/dist/channels/slack/user-info.js +27 -41
  129. package/dist/channels.js +9 -20
  130. package/dist/dashboard-session-url.js +3 -4
  131. package/dist/docs/404.html +2 -2
  132. package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
  133. package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
  134. package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
  135. package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
  136. package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
  137. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
  138. package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
  139. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
  140. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
  141. package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
  142. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
  143. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
  144. package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
  145. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
  146. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
  147. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
  148. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
  149. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
  150. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
  151. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
  152. package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
  153. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
  154. package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
  155. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
  156. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
  157. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
  158. package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
  159. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
  160. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
  161. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
  162. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
  163. package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
  164. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
  165. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
  166. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
  167. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
  168. package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
  169. package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
  170. package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
  171. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
  172. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
  173. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
  174. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
  175. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
  176. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
  177. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
  178. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
  179. package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
  180. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
  181. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
  182. package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
  183. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
  184. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
  185. package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
  186. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
  187. package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
  188. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
  189. package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
  190. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
  191. package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
  192. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
  193. package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
  194. package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
  195. package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
  196. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
  197. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
  198. package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
  199. package/dist/docs/building-with-agents.html +37 -37
  200. package/dist/docs/building-with-agents.md +2 -0
  201. package/dist/docs/deployment.html +38 -38
  202. package/dist/docs/deployment.md +7 -0
  203. package/dist/docs/evals.html +36 -36
  204. package/dist/docs/guides/agent-to-agent.html +35 -35
  205. package/dist/docs/guides/bitbucket.html +38 -38
  206. package/dist/docs/guides/bitbucket.md +9 -1
  207. package/dist/docs/guides/cloud-agents.html +35 -35
  208. package/dist/docs/guides/convert-automation.html +35 -35
  209. package/dist/docs/guides/github.html +39 -39
  210. package/dist/docs/guides/github.md +20 -4
  211. package/dist/docs/guides/gitlab.html +38 -38
  212. package/dist/docs/guides/gitlab.md +9 -1
  213. package/dist/docs/guides/grokbot-agents.html +35 -35
  214. package/dist/docs/guides/hooks.html +35 -35
  215. package/dist/docs/guides/improve.html +35 -35
  216. package/dist/docs/guides/jev.html +35 -35
  217. package/dist/docs/guides/mcp-oauth.html +35 -35
  218. package/dist/docs/guides/migrate.html +66 -0
  219. package/dist/docs/guides/migrate.md +122 -0
  220. package/dist/docs/guides/opentelemetry.html +35 -35
  221. package/dist/docs/guides/slack.html +35 -35
  222. package/dist/docs/guides/webhooks.html +35 -35
  223. package/dist/docs/hashmap.json +1 -1
  224. package/dist/docs/hillclimbing.html +35 -35
  225. package/dist/docs/index.html +35 -35
  226. package/dist/docs/llms-full.txt +214 -6
  227. package/dist/docs/llms.txt +1 -0
  228. package/dist/docs/quickstart.html +35 -35
  229. package/dist/docs/reference/agent-config.html +35 -35
  230. package/dist/docs/reference/artifacts.html +35 -35
  231. package/dist/docs/reference/channels.html +35 -35
  232. package/dist/docs/reference/cli.html +39 -38
  233. package/dist/docs/reference/cli.md +39 -0
  234. package/dist/docs/reference/connections.html +35 -35
  235. package/dist/docs/reference/evals.html +35 -35
  236. package/dist/docs/reference/extensions.html +35 -35
  237. package/dist/docs/reference/hooks.html +35 -35
  238. package/dist/docs/reference/http-api.html +35 -35
  239. package/dist/docs/reference/instructions.html +35 -35
  240. package/dist/docs/reference/playground.html +35 -35
  241. package/dist/docs/reference/project-layout.html +35 -35
  242. package/dist/docs/reference/prompt.html +35 -35
  243. package/dist/docs/reference/schedules.html +35 -35
  244. package/dist/docs/reference/sessions.html +35 -35
  245. package/dist/docs/reference/skills.html +38 -38
  246. package/dist/docs/reference/subagents.html +35 -35
  247. package/dist/docs/reference/tools.html +35 -35
  248. package/dist/docs/templates/agentic-owners.html +35 -35
  249. package/dist/docs/templates/grokbot-agents.html +35 -35
  250. package/dist/docs/templates/security-reviewer.html +35 -35
  251. package/dist/docs/templates/thermo-quality-review.html +35 -35
  252. package/dist/docs/templates/thermo-review.html +35 -35
  253. package/dist/docs/templates/triage.html +35 -35
  254. package/dist/docs/troubleshooting.html +36 -36
  255. package/dist/docs/troubleshooting.md +1 -0
  256. package/dist/evals/assertions.js +20 -34
  257. package/dist/evals/expect.js +3 -6
  258. package/dist/evals/judge.js +5 -8
  259. package/dist/evals/loaders.js +45 -62
  260. package/dist/evals/matchers.js +2 -3
  261. package/dist/evals/reporters.js +43 -67
  262. package/dist/evals/results.js +1 -1
  263. package/dist/evals/run-facts.js +5 -6
  264. package/dist/evals.js +27 -15
  265. package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
  266. package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
  267. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
  268. package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
  269. package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
  270. package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
  271. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
  272. package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
  273. package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
  274. package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
  275. package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
  276. package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
  277. package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
  278. package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
  279. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
  280. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
  281. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
  282. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
  283. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
  284. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
  285. package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
  286. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
  287. package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
  288. package/dist/extensions/jev/extension.js +3 -3
  289. package/dist/extensions/jev/lib/evaluate.js +43 -60
  290. package/dist/extensions/jev/tools/evaluate.js +6 -17
  291. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  292. package/dist/extensions.js +3 -5
  293. package/dist/files-backends/cursor-hosted.js +504 -523
  294. package/dist/files-backends/local-fs.js +72 -134
  295. package/dist/files.js +3 -3
  296. package/dist/filesystem.js +562 -861
  297. package/dist/index.js +16 -35
  298. package/dist/internal/advertise-tools.js +74 -86
  299. package/dist/internal/artifacts-store.js +298 -361
  300. package/dist/internal/as-of.js +2 -4
  301. package/dist/internal/authored-alias-hooks.js +6 -4
  302. package/dist/internal/authored-loaders.js +37 -52
  303. package/dist/internal/bounded-int.js +1 -2
  304. package/dist/internal/bounded.js +13 -24
  305. package/dist/internal/brand.js +1 -1
  306. package/dist/internal/browser-origin-guard.js +4 -4
  307. package/dist/internal/builtin-tools/artifacts.js +15 -27
  308. package/dist/internal/builtin-tools/index.js +2 -3
  309. package/dist/internal/builtin-tools/reminders.js +33 -52
  310. package/dist/internal/channel-architecture.d.ts +21 -0
  311. package/dist/internal/channel-architecture.d.ts.map +1 -0
  312. package/dist/internal/channel-architecture.js +41 -0
  313. package/dist/internal/channel-dispatch.js +3 -4
  314. package/dist/internal/channel-route-dispatch.js +40 -51
  315. package/dist/internal/channel-state.js +1 -1
  316. package/dist/internal/chat-client.js +319 -340
  317. package/dist/internal/cli-ax.js +1262 -1294
  318. package/dist/internal/cli-bitbucket.js +244 -272
  319. package/dist/internal/cli-convert-automation.js +137 -151
  320. package/dist/internal/cli-cursor.js +126 -147
  321. package/dist/internal/cli-deploy.d.ts.map +1 -1
  322. package/dist/internal/cli-deploy.js +1457 -1507
  323. package/dist/internal/cli-docs.js +130 -147
  324. package/dist/internal/cli-github.js +437 -476
  325. package/dist/internal/cli-gitlab.js +259 -288
  326. package/dist/internal/cli-images.js +266 -334
  327. package/dist/internal/cli-manifest.js +25 -37
  328. package/dist/internal/cli-mcp-oauth.js +228 -247
  329. package/dist/internal/cli-mcp.js +358 -383
  330. package/dist/internal/cli-migrate.js +73 -90
  331. package/dist/internal/cli-skills.js +35 -47
  332. package/dist/internal/cli-slack-manual.d.ts +0 -1
  333. package/dist/internal/cli-slack-manual.d.ts.map +1 -1
  334. package/dist/internal/cli-slack-manual.js +175 -204
  335. package/dist/internal/cli-slack.d.ts +1 -1
  336. package/dist/internal/cli-slack.d.ts.map +1 -1
  337. package/dist/internal/cli-slack.js +416 -456
  338. package/dist/internal/cloud-merge.js +7 -3
  339. package/dist/internal/cloud-turn-cost.js +8 -1
  340. package/dist/internal/connection-env.js +5 -6
  341. package/dist/internal/continuation-channel.js +10 -7
  342. package/dist/internal/continuation-identity.js +85 -67
  343. package/dist/internal/conversation-mirror.js +112 -131
  344. package/dist/internal/convert-automation/convert-workflow.js +21 -31
  345. package/dist/internal/cron.js +3 -3
  346. package/dist/internal/cursor/account-mcp.js +147 -146
  347. package/dist/internal/cursor/backend-client.js +290 -320
  348. package/dist/internal/cursor/bound-secret-file.js +3 -3
  349. package/dist/internal/cursor/credentials.js +127 -142
  350. package/dist/internal/cursor/cursor-api-transport.js +4 -8
  351. package/dist/internal/cursor/github-credentials.js +91 -108
  352. package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
  353. package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
  354. package/dist/internal/cursor/hosted-store-secrets.js +5 -9
  355. package/dist/internal/cursor/session-token.js +36 -48
  356. package/dist/internal/cursor/store-api-client.js +77 -92
  357. package/dist/internal/cursor-account-mcp-auth.js +132 -149
  358. package/dist/internal/cursor-agent-template.js +1 -1
  359. package/dist/internal/cursor-deployment-relay.js +33 -54
  360. package/dist/internal/cursor-event-relay.js +65 -59
  361. package/dist/internal/cursor-relay-core.js +258 -286
  362. package/dist/internal/deferred-channel-session.js +3 -12
  363. package/dist/internal/deploy-client.js +410 -475
  364. package/dist/internal/deploy-manifest.d.ts +17 -0
  365. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  366. package/dist/internal/deploy-manifest.js +71 -21
  367. package/dist/internal/deploy-source.js +31 -43
  368. package/dist/internal/discovery/agent-config.js +45 -59
  369. package/dist/internal/discovery/agent.js +276 -280
  370. package/dist/internal/discovery/channels.js +67 -80
  371. package/dist/internal/discovery/connections.js +286 -296
  372. package/dist/internal/discovery/context.js +2 -13
  373. package/dist/internal/discovery/cursor-plugin.js +223 -259
  374. package/dist/internal/discovery/extension-overlay.js +104 -131
  375. package/dist/internal/discovery/extensions.js +276 -281
  376. package/dist/internal/discovery/fs.js +56 -79
  377. package/dist/internal/discovery/hooks.js +39 -50
  378. package/dist/internal/discovery/info.js +17 -19
  379. package/dist/internal/discovery/instructions.js +58 -71
  380. package/dist/internal/discovery/modules.js +45 -58
  381. package/dist/internal/discovery/project.d.ts.map +1 -1
  382. package/dist/internal/discovery/project.js +192 -215
  383. package/dist/internal/discovery/reminders.js +41 -52
  384. package/dist/internal/discovery/runtime.js +1 -1
  385. package/dist/internal/discovery/schedules.js +71 -82
  386. package/dist/internal/discovery/seed-files.js +21 -32
  387. package/dist/internal/discovery/services.js +74 -96
  388. package/dist/internal/discovery/skills.js +77 -94
  389. package/dist/internal/discovery/subagent.js +79 -95
  390. package/dist/internal/discovery/tools.js +12 -23
  391. package/dist/internal/distribution.js +2 -2
  392. package/dist/internal/docs-site.js +30 -45
  393. package/dist/internal/duration.js +1 -1
  394. package/dist/internal/env-file.js +48 -64
  395. package/dist/internal/eval-judge-model.js +17 -28
  396. package/dist/internal/eval-run-store.js +265 -254
  397. package/dist/internal/eval-runner.d.ts +8 -0
  398. package/dist/internal/eval-runner.d.ts.map +1 -1
  399. package/dist/internal/eval-runner.js +406 -408
  400. package/dist/internal/eval-transport.d.ts +24 -0
  401. package/dist/internal/eval-transport.d.ts.map +1 -0
  402. package/dist/internal/eval-transport.js +22 -0
  403. package/dist/internal/evals-client.js +242 -246
  404. package/dist/internal/event-log.js +72 -120
  405. package/dist/internal/event-mapper.js +30 -31
  406. package/dist/internal/factory-resource-channel.js +16 -30
  407. package/dist/internal/filesystem/errors.js +6 -6
  408. package/dist/internal/filesystem/format.js +10 -13
  409. package/dist/internal/filesystem/merge.js +52 -94
  410. package/dist/internal/filesystem/nearest.js +15 -27
  411. package/dist/internal/filesystem/scratch.js +65 -85
  412. package/dist/internal/filesystem/tools.js +221 -241
  413. package/dist/internal/filesystem/walk.js +76 -143
  414. package/dist/internal/framework-file-storage.js +118 -139
  415. package/dist/internal/framework-storage-selection.js +21 -13
  416. package/dist/internal/frontmatter.js +4 -6
  417. package/dist/internal/github-fanout.js +50 -64
  418. package/dist/internal/guest-network.js +96 -109
  419. package/dist/internal/handleAgentServeTrigger.js +121 -126
  420. package/dist/internal/host-files.js +73 -88
  421. package/dist/internal/host-kv.js +21 -36
  422. package/dist/internal/host-otel.js +22 -19
  423. package/dist/internal/host-platforms.js +49 -63
  424. package/dist/internal/hosted-catch-protocol.d.ts +1 -0
  425. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  426. package/dist/internal/hosted-catch-protocol.js +1 -0
  427. package/dist/internal/hosted-catch.d.ts +5 -3
  428. package/dist/internal/hosted-catch.d.ts.map +1 -1
  429. package/dist/internal/hosted-catch.js +84 -93
  430. package/dist/internal/hosted-delivery-protocol.js +32 -8
  431. package/dist/internal/hosted-delivery.d.ts +13 -1
  432. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  433. package/dist/internal/hosted-delivery.js +614 -584
  434. package/dist/internal/hosted-eval-cases.d.ts +21 -0
  435. package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
  436. package/dist/internal/hosted-eval-cases.js +162 -0
  437. package/dist/internal/hosted-execution-diag.js +38 -30
  438. package/dist/internal/hosted-execution-flush.js +75 -66
  439. package/dist/internal/hosted-execution-latency.js +16 -8
  440. package/dist/internal/hosted-managed-automation.js +2 -2
  441. package/dist/internal/hosting.js +2 -3
  442. package/dist/internal/http-channel-define.js +4 -1
  443. package/dist/internal/http-channel.js +101 -112
  444. package/dist/internal/http-control-plane-session.d.ts +18 -1
  445. package/dist/internal/http-control-plane-session.d.ts.map +1 -1
  446. package/dist/internal/http-control-plane-session.js +66 -32
  447. package/dist/internal/incoming-headers-to-fetch.js +1 -2
  448. package/dist/internal/init-interview.js +73 -93
  449. package/dist/internal/init-project.js +182 -214
  450. package/dist/internal/init-scaffold.js +10 -21
  451. package/dist/internal/inline-stdio-mcp.js +80 -86
  452. package/dist/internal/install-cursor-skills.js +231 -273
  453. package/dist/internal/legacy-command-guard.js +18 -31
  454. package/dist/internal/listen-port.js +34 -45
  455. package/dist/internal/local-control-plane.js +293 -307
  456. package/dist/internal/local-env.js +1 -1
  457. package/dist/internal/local-ingress.js +15 -9
  458. package/dist/internal/log-ring.js +1 -2
  459. package/dist/internal/logs-client.js +207 -227
  460. package/dist/internal/map-pool.js +24 -38
  461. package/dist/internal/mcp-endpoint.js +204 -180
  462. package/dist/internal/mcp-host.js +165 -168
  463. package/dist/internal/mcp-oauth-on-demand.js +170 -207
  464. package/dist/internal/mcp-oauth-persist.js +15 -29
  465. package/dist/internal/mcp-oauth.js +209 -266
  466. package/dist/internal/named-webhook-secret.d.ts +39 -0
  467. package/dist/internal/named-webhook-secret.d.ts.map +1 -0
  468. package/dist/internal/named-webhook-secret.js +47 -0
  469. package/dist/internal/open-browser.js +2 -3
  470. package/dist/internal/otel/collector.js +104 -68
  471. package/dist/internal/otel/config.js +24 -37
  472. package/dist/internal/otel/http.js +5 -7
  473. package/dist/internal/otel/mcp.js +3 -12
  474. package/dist/internal/otel/runtime.js +69 -83
  475. package/dist/internal/package-inline-stdio.js +57 -65
  476. package/dist/internal/peer-connections.js +9 -5
  477. package/dist/internal/platform-schedule-sync.js +39 -54
  478. package/dist/internal/platform-timers.js +176 -210
  479. package/dist/internal/playground/static.js +1 -2
  480. package/dist/internal/playground/toolchain.js +37 -53
  481. package/dist/internal/playground-proxy.js +230 -270
  482. package/dist/internal/process-memory-telemetry.js +33 -51
  483. package/dist/internal/prompt-context.js +3 -6
  484. package/dist/internal/reminder-control-plane-protocol.js +46 -13
  485. package/dist/internal/reminder-runner.js +770 -785
  486. package/dist/internal/reminder-schedule.js +1 -1
  487. package/dist/internal/reminder-store.js +57 -78
  488. package/dist/internal/request-error-status.js +1 -3
  489. package/dist/internal/request-headers.js +2 -2
  490. package/dist/internal/resolve-prod-target.js +119 -135
  491. package/dist/internal/resolved-connections.js +16 -6
  492. package/dist/internal/run-client.js +221 -229
  493. package/dist/internal/runtime-dispatch-runner.js +18 -43
  494. package/dist/internal/schedule-runner.js +49 -58
  495. package/dist/internal/scm/pr-url.js +7 -6
  496. package/dist/internal/sdk-runner.js +388 -363
  497. package/dist/internal/serve-restart.js +26 -39
  498. package/dist/internal/server.d.ts.map +1 -1
  499. package/dist/internal/server.js +1283 -1244
  500. package/dist/internal/session-cost.js +7 -9
  501. package/dist/internal/session-engine.d.ts +3 -1
  502. package/dist/internal/session-engine.d.ts.map +1 -1
  503. package/dist/internal/session-engine.js +2801 -2777
  504. package/dist/internal/session-links.js +12 -16
  505. package/dist/internal/session-run-log.js +134 -82
  506. package/dist/internal/session-store.js +133 -164
  507. package/dist/internal/sessions-client.js +97 -118
  508. package/dist/internal/skill-catalog.js +18 -23
  509. package/dist/internal/skills-sync.js +16 -30
  510. package/dist/internal/slack-provision-client.js +90 -116
  511. package/dist/internal/start-log-store.js +48 -67
  512. package/dist/internal/steering.js +1 -2
  513. package/dist/internal/storage-coordinator.js +160 -196
  514. package/dist/internal/store-mirror.js +16 -30
  515. package/dist/internal/stream-progress.js +6 -8
  516. package/dist/internal/terminal-style.js +3 -4
  517. package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
  518. package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
  519. package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
  520. package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
  521. package/dist/internal/tool-catalog.js +11 -5
  522. package/dist/internal/tool-result.js +1 -1
  523. package/dist/internal/trajectory.js +19 -22
  524. package/dist/internal/turn-cost.js +52 -62
  525. package/dist/internal/turn-governor.js +5 -8
  526. package/dist/internal/turn-lease-store.js +85 -105
  527. package/dist/internal/turn-outbox.js +28 -43
  528. package/dist/internal/update-check.js +231 -259
  529. package/dist/internal/v2-hosting.js +1 -2
  530. package/dist/internal/workspace-sync.js +25 -41
  531. package/dist/internal/workspace.js +111 -139
  532. package/dist/kv/memory-kv.js +27 -51
  533. package/dist/memory.js +106 -148
  534. package/dist/otel.js +5 -8
  535. package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
  536. package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
  537. package/dist/playground/index.html +2 -2
  538. package/dist/prompt.js +2 -4
  539. package/dist/storage-backends/cursor-hosted-v2.js +53 -83
  540. package/dist/storage-backends/cursor-hosted.js +105 -145
  541. package/dist/storage-backends/file-kv.js +100 -128
  542. package/dist/storage-protocol.js +3 -5
  543. package/dist/storage.js +17 -26
  544. package/dist/types.d.ts +68 -0
  545. package/dist/types.d.ts.map +1 -1
  546. package/dist/types.js +20 -18
  547. package/docs/building-with-agents.md +2 -0
  548. package/docs/deployment.md +7 -0
  549. package/docs/guides/bitbucket.md +9 -1
  550. package/docs/guides/github.md +20 -4
  551. package/docs/guides/gitlab.md +9 -1
  552. package/docs/guides/migrate.md +127 -0
  553. package/docs/reference/cli.md +39 -0
  554. package/docs/troubleshooting.md +1 -0
  555. package/package.json +1 -1
  556. package/skills/debug/SKILL.md +1 -0
  557. package/skills/github/SKILL.md +23 -0
  558. package/skills/migrate-v2/SKILL.md +51 -10
  559. package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
  560. package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
  561. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
  562. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
  563. package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
  564. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
  565. package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
  566. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
  567. package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
  568. /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
  569. /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
  570. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
@@ -7,15 +7,6 @@
7
7
  * readable. Both authenticate with the host's Cursor API key; the RPCs
8
8
  * exchange it for a session token the way the dashboard client does.
9
9
  */
10
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
11
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12
- return new (P || (P = Promise))(function (resolve, reject) {
13
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
14
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
15
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
16
- step((generator = generator.apply(thisArg, _arguments || [])).next());
17
- });
18
- };
19
10
  import { randomUUID } from "node:crypto";
20
11
  import { z } from "zod";
21
12
  import { CursorBackendClient } from "../../../internal/cursor/backend-client.js";
@@ -25,9 +16,9 @@ import extension from "../extension.js";
25
16
  const SERVICE = "BackgroundComposerService";
26
17
  /** Launches and follow-ups from this extension carry the SDK source, like the v1 API. */
27
18
  const SOURCE = "BACKGROUND_COMPOSER_SOURCE_SDK";
28
- const RPC_TIMEOUT_MS = 60000;
19
+ const RPC_TIMEOUT_MS = 60_000;
29
20
  // The create call returns once the initial run exists, which can wait on a VM.
30
- const LAUNCH_TIMEOUT_MS = 300000;
21
+ const LAUNCH_TIMEOUT_MS = 300_000;
31
22
  export class CloudAgentsApiError extends Error {
32
23
  constructor(message, status) {
33
24
  super(message);
@@ -96,128 +87,114 @@ export class CloudAgentsBackend {
96
87
  });
97
88
  }
98
89
  /** `POST /v1/agents`: create the agent and start its first run in one call. */
99
- launch(request) {
100
- return __awaiter(this, void 0, void 0, function* () {
101
- var _a;
102
- const { cloud } = request;
103
- const body = {
104
- prompt: { text: request.prompt },
105
- name: request.name,
106
- model: request.model === undefined ? undefined : toModelSelection(request.model),
107
- env: cloud.env,
108
- envVars: cloud.envVars,
109
- repos: cloud.repos,
110
- workOnCurrentBranch: cloud.workOnCurrentBranch,
111
- autoCreatePR: cloud.autoCreatePR,
112
- skipReviewerRequest: cloud.skipReviewerRequest,
113
- };
114
- let response;
115
- try {
116
- response = yield this.fetchImpl(`${cursorExternalApiUrl()}/v1/agents`, {
117
- method: "POST",
118
- headers: {
119
- "content-type": "application/json",
120
- authorization: `Bearer ${this.apiKey()}`,
121
- "x-ghost-mode": "true",
122
- "x-cursor-client-type": "agent-serve",
123
- "x-request-id": randomUUID(),
124
- },
125
- body: JSON.stringify(body),
126
- signal: AbortSignal.timeout(LAUNCH_TIMEOUT_MS),
127
- });
128
- }
129
- catch (error) {
130
- throw new CloudAgentsApiError(`Cloud agent launch failed: ${error instanceof Error ? error.message : String(error)}`);
131
- }
132
- const text = yield response.text();
133
- if (!response.ok) {
134
- throw new CloudAgentsApiError(`Cloud agent launch failed (${response.status}): ${apiErrorMessage(text)}`, response.status);
135
- }
136
- const parsed = launchResponseSchema.parse(JSON.parse(text));
137
- return {
138
- agentId: parsed.agent.id,
139
- runId: parsed.run.id,
140
- status: parsed.run.status.toLowerCase(),
141
- url: (_a = parsed.agent.url) !== null && _a !== void 0 ? _a : cloudAgentUrl(parsed.agent.id),
142
- };
143
- });
90
+ async launch(request) {
91
+ const { cloud } = request;
92
+ const body = {
93
+ prompt: { text: request.prompt },
94
+ name: request.name,
95
+ model: request.model === undefined ? undefined : toModelSelection(request.model),
96
+ env: cloud.env,
97
+ envVars: cloud.envVars,
98
+ repos: cloud.repos,
99
+ workOnCurrentBranch: cloud.workOnCurrentBranch,
100
+ autoCreatePR: cloud.autoCreatePR,
101
+ skipReviewerRequest: cloud.skipReviewerRequest,
102
+ };
103
+ let response;
104
+ try {
105
+ response = await this.fetchImpl(`${cursorExternalApiUrl()}/v1/agents`, {
106
+ method: "POST",
107
+ headers: {
108
+ "content-type": "application/json",
109
+ authorization: `Bearer ${this.apiKey()}`,
110
+ "x-ghost-mode": "true",
111
+ "x-cursor-client-type": "agent-serve",
112
+ "x-request-id": randomUUID(),
113
+ },
114
+ body: JSON.stringify(body),
115
+ signal: AbortSignal.timeout(LAUNCH_TIMEOUT_MS),
116
+ });
117
+ }
118
+ catch (error) {
119
+ throw new CloudAgentsApiError(`Cloud agent launch failed: ${error instanceof Error ? error.message : String(error)}`);
120
+ }
121
+ const text = await response.text();
122
+ if (!response.ok) {
123
+ throw new CloudAgentsApiError(`Cloud agent launch failed (${response.status}): ${apiErrorMessage(text)}`, response.status);
124
+ }
125
+ const parsed = launchResponseSchema.parse(JSON.parse(text));
126
+ return {
127
+ agentId: parsed.agent.id,
128
+ runId: parsed.run.id,
129
+ status: parsed.run.status.toLowerCase(),
130
+ url: parsed.agent.url ?? cloudAgentUrl(parsed.agent.id),
131
+ };
132
+ }
133
+ async info(agentId) {
134
+ const { composer } = infoResponseSchema.parse(await this.rpcClient.serviceRpc(SERVICE, "GetBackgroundComposerInfo", { bcId: agentId }, RPC_TIMEOUT_MS));
135
+ const { composer: summary } = composer;
136
+ const failure = composer.permanentError ?? composer.startError;
137
+ return {
138
+ agentId: summary.bcId,
139
+ name: summary.name ?? "",
140
+ status: statusOf(summary.status),
141
+ archived: summary.isArchived === true,
142
+ url: cloudAgentUrl(summary.bcId),
143
+ branch: emptyToUndefined(summary.branchName),
144
+ prUrl: emptyToUndefined(summary.prUrl),
145
+ summary: emptyToUndefined(composer.summary),
146
+ error: failureMessage(failure),
147
+ changes: summary.filesChanged === undefined
148
+ ? undefined
149
+ : {
150
+ filesChanged: summary.filesChanged,
151
+ linesAdded: summary.linesAdded ?? 0,
152
+ linesRemoved: summary.linesRemoved ?? 0,
153
+ },
154
+ };
144
155
  }
145
- info(agentId) {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- var _a, _b, _c, _d;
148
- const { composer } = infoResponseSchema.parse(yield this.rpcClient.serviceRpc(SERVICE, "GetBackgroundComposerInfo", { bcId: agentId }, RPC_TIMEOUT_MS));
149
- const { composer: summary } = composer;
150
- const failure = (_a = composer.permanentError) !== null && _a !== void 0 ? _a : composer.startError;
156
+ async conversation(agentId) {
157
+ const { conversation } = conversationResponseSchema.parse(await this.rpcClient.serviceRpc(SERVICE, "GetBackgroundComposerConversation", { bcId: agentId }, RPC_TIMEOUT_MS));
158
+ return (conversation ?? []).map(message => {
159
+ const toolCalls = (message.toolResults ?? []).map(result => ({
160
+ name: result.toolName ?? "",
161
+ args: parseArgs(result.args ?? result.rawArgs),
162
+ content: result.content,
163
+ error: result.error?.clientVisibleErrorMessage,
164
+ }));
151
165
  return {
152
- agentId: summary.bcId,
153
- name: (_b = summary.name) !== null && _b !== void 0 ? _b : "",
154
- status: statusOf(summary.status),
155
- archived: summary.isArchived === true,
156
- url: cloudAgentUrl(summary.bcId),
157
- branch: emptyToUndefined(summary.branchName),
158
- prUrl: emptyToUndefined(summary.prUrl),
159
- summary: emptyToUndefined(composer.summary),
160
- error: failureMessage(failure),
161
- changes: summary.filesChanged === undefined
162
- ? undefined
163
- : {
164
- filesChanged: summary.filesChanged,
165
- linesAdded: (_c = summary.linesAdded) !== null && _c !== void 0 ? _c : 0,
166
- linesRemoved: (_d = summary.linesRemoved) !== null && _d !== void 0 ? _d : 0,
167
- },
166
+ role: message.type === "MESSAGE_TYPE_HUMAN" ? "user" : "assistant",
167
+ text: emptyToUndefined(message.text),
168
+ thinking: emptyToUndefined(message.thinking?.text),
169
+ toolCalls: toolCalls.length === 0 ? undefined : toolCalls,
168
170
  };
169
171
  });
170
172
  }
171
- conversation(agentId) {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- const { conversation } = conversationResponseSchema.parse(yield this.rpcClient.serviceRpc(SERVICE, "GetBackgroundComposerConversation", { bcId: agentId }, RPC_TIMEOUT_MS));
174
- return (conversation !== null && conversation !== void 0 ? conversation : []).map(message => {
175
- var _a;
176
- var _b;
177
- const toolCalls = ((_b = message.toolResults) !== null && _b !== void 0 ? _b : []).map(result => { var _a; var _b, _c; return ({
178
- name: (_b = result.toolName) !== null && _b !== void 0 ? _b : "",
179
- args: parseArgs((_c = result.args) !== null && _c !== void 0 ? _c : result.rawArgs),
180
- content: result.content,
181
- error: (_a = result.error) === null || _a === void 0 ? void 0 : _a.clientVisibleErrorMessage,
182
- }); });
183
- return {
184
- role: message.type === "MESSAGE_TYPE_HUMAN" ? "user" : "assistant",
185
- text: emptyToUndefined(message.text),
186
- thinking: emptyToUndefined((_a = message.thinking) === null || _a === void 0 ? void 0 : _a.text),
187
- toolCalls: toolCalls.length === 0 ? undefined : toolCalls,
188
- };
189
- });
190
- });
191
- }
192
173
  /**
193
174
  * Queue a follow-up behind the current run, or with `interrupt` cancel the
194
175
  * in-flight step and run it now; the backend's `synchronous` switch.
195
176
  */
196
- followUp(agentId, prompt, interrupt) {
197
- return __awaiter(this, void 0, void 0, function* () {
198
- const { runId } = followupResponseSchema.parse(yield this.rpcClient.serviceRpc(SERVICE, "AddAsyncFollowupBackgroundComposer", {
199
- bcId: agentId,
200
- synchronous: interrupt,
201
- followupSource: SOURCE,
202
- followupMessage: {
203
- text: prompt,
204
- type: "MESSAGE_TYPE_HUMAN",
205
- bubbleId: randomUUID(),
206
- },
207
- }, RPC_TIMEOUT_MS));
208
- return { runId };
209
- });
177
+ async followUp(agentId, prompt, interrupt) {
178
+ const { runId } = followupResponseSchema.parse(await this.rpcClient.serviceRpc(SERVICE, "AddAsyncFollowupBackgroundComposer", {
179
+ bcId: agentId,
180
+ synchronous: interrupt,
181
+ followupSource: SOURCE,
182
+ followupMessage: {
183
+ text: prompt,
184
+ type: "MESSAGE_TYPE_HUMAN",
185
+ bubbleId: randomUUID(),
186
+ },
187
+ }, RPC_TIMEOUT_MS));
188
+ return { runId };
210
189
  }
211
- pause(agentId) {
212
- return __awaiter(this, void 0, void 0, function* () {
213
- yield this.rpcClient.serviceRpc(SERVICE, "PauseBackgroundComposer", { bcId: agentId, source: SOURCE }, RPC_TIMEOUT_MS);
214
- });
190
+ async pause(agentId) {
191
+ await this.rpcClient.serviceRpc(SERVICE, "PauseBackgroundComposer", { bcId: agentId, source: SOURCE }, RPC_TIMEOUT_MS);
215
192
  }
216
193
  }
217
194
  let backend;
218
195
  /** The process-wide backend for this mount, built on first use. */
219
196
  export function cloudAgentsBackend() {
220
- backend !== null && backend !== void 0 ? backend : (backend = new CloudAgentsBackend(apiKey));
197
+ backend ??= new CloudAgentsBackend(apiKey);
221
198
  return backend;
222
199
  }
223
200
  export function apiKey() {
@@ -244,8 +221,7 @@ function statusOf(status) {
244
221
  }
245
222
  }
246
223
  function failureMessage(failure) {
247
- var _a, _b;
248
- const parts = [(_a = failure === null || failure === void 0 ? void 0 : failure.details) === null || _a === void 0 ? void 0 : _a.title, (_b = failure === null || failure === void 0 ? void 0 : failure.details) === null || _b === void 0 ? void 0 : _b.detail].filter((part) => part !== undefined && part !== "");
224
+ const parts = [failure?.details?.title, failure?.details?.detail].filter((part) => part !== undefined && part !== "");
249
225
  return parts.length === 0 ? undefined : parts.join(": ");
250
226
  }
251
227
  function parseArgs(args) {
@@ -255,7 +231,7 @@ function parseArgs(args) {
255
231
  try {
256
232
  return JSON.parse(args);
257
233
  }
258
- catch (_a) {
234
+ catch {
259
235
  return args;
260
236
  }
261
237
  }
@@ -263,15 +239,13 @@ function emptyToUndefined(value) {
263
239
  return value === undefined || value === "" ? undefined : value;
264
240
  }
265
241
  function apiErrorMessage(text) {
266
- var _a, _b;
267
- var _c, _d;
268
242
  try {
269
243
  const parsed = JSON.parse(text);
270
- const code = (_c = (_a = parsed.error) === null || _a === void 0 ? void 0 : _a.code) !== null && _c !== void 0 ? _c : parsed.code;
271
- const message = (_d = (_b = parsed.error) === null || _b === void 0 ? void 0 : _b.message) !== null && _d !== void 0 ? _d : parsed.message;
244
+ const code = parsed.error?.code ?? parsed.code;
245
+ const message = parsed.error?.message ?? parsed.message;
272
246
  return [code, message].filter(part => part !== undefined).join(": ") || text;
273
247
  }
274
- catch (_e) {
248
+ catch {
275
249
  return text;
276
250
  }
277
251
  }
@@ -6,15 +6,6 @@
6
6
  * the fleet listing is that principal's records, by default narrowed to the
7
7
  * session that launched them.
8
8
  */
9
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
10
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11
- return new (P || (P = Promise))(function (resolve, reject) {
12
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
13
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
14
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
15
- step((generator = generator.apply(thisArg, _arguments || [])).next());
16
- });
17
- };
18
9
  import { z } from "zod";
19
10
  const PREFIX = "cloud-agents";
20
11
  const fleetSchema = z.array(z.object({
@@ -29,8 +20,7 @@ const ownerSchema = z.object({ principal: z.string() });
29
20
  // principal so neither launch overwrites the other's entry.
30
21
  const indexWrites = new Map();
31
22
  function withIndexLock(key, task) {
32
- var _a;
33
- const run = ((_a = indexWrites.get(key)) !== null && _a !== void 0 ? _a : Promise.resolve()).then(task, task);
23
+ const run = (indexWrites.get(key) ?? Promise.resolve()).then(task, task);
34
24
  indexWrites.set(key, run);
35
25
  return run.finally(() => {
36
26
  if (indexWrites.get(key) === run) {
@@ -43,38 +33,32 @@ export function principalOf(ctx) {
43
33
  const auth = ctx.session.auth;
44
34
  return auth === null ? "anonymous" : `${auth.principalType}:${auth.principalId}`;
45
35
  }
46
- export function recordLaunch(ctx, agentId, name) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const principal = principalOf(ctx);
49
- const entry = {
50
- agentId,
51
- name,
52
- launchedAt: new Date().toISOString(),
53
- sessionId: ctx.session.id,
54
- };
55
- yield ctx.host.kv.put(`${PREFIX}/agents/${agentId}`, { principal });
56
- yield withIndexLock(fleetKey(principal), () => __awaiter(this, void 0, void 0, function* () {
57
- const fleet = yield listFleet(ctx);
58
- yield ctx.host.kv.put(fleetKey(principal), [entry, ...fleet]);
59
- }));
36
+ export async function recordLaunch(ctx, agentId, name) {
37
+ const principal = principalOf(ctx);
38
+ const entry = {
39
+ agentId,
40
+ name,
41
+ launchedAt: new Date().toISOString(),
42
+ sessionId: ctx.session.id,
43
+ };
44
+ await ctx.host.kv.put(`${PREFIX}/agents/${agentId}`, { principal });
45
+ await withIndexLock(fleetKey(principal), async () => {
46
+ const fleet = await listFleet(ctx);
47
+ await ctx.host.kv.put(fleetKey(principal), [entry, ...fleet]);
60
48
  });
61
49
  }
62
50
  /** Refuse agents launched by another principal, or not through the extension. */
63
- export function assertOwned(ctx, agentId) {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- const owner = ownerSchema.safeParse(yield ctx.host.kv.get(`${PREFIX}/agents/${agentId}`));
66
- if (!owner.success || owner.data.principal !== principalOf(ctx)) {
67
- throw new Error(`Agent ${agentId} was not launched through this extension by this principal; only your own launches can be read or steered.`);
68
- }
69
- });
51
+ export async function assertOwned(ctx, agentId) {
52
+ const owner = ownerSchema.safeParse(await ctx.host.kv.get(`${PREFIX}/agents/${agentId}`));
53
+ if (!owner.success || owner.data.principal !== principalOf(ctx)) {
54
+ throw new Error(`Agent ${agentId} was not launched through this extension by this principal; only your own launches can be read or steered.`);
55
+ }
70
56
  }
71
57
  /** The caller's launches, newest first: this session's, or every session's. */
72
- export function listFleet(ctx_1) {
73
- return __awaiter(this, arguments, void 0, function* (ctx, scope = "all") {
74
- const fleet = fleetSchema.safeParse(yield ctx.host.kv.get(fleetKey(principalOf(ctx))));
75
- const entries = fleet.success ? fleet.data : [];
76
- return scope === "all" ? entries : entries.filter(entry => entry.sessionId === ctx.session.id);
77
- });
58
+ export async function listFleet(ctx, scope = "all") {
59
+ const fleet = fleetSchema.safeParse(await ctx.host.kv.get(fleetKey(principalOf(ctx))));
60
+ const entries = fleet.success ? fleet.data : [];
61
+ return scope === "all" ? entries : entries.filter(entry => entry.sessionId === ctx.session.id);
78
62
  }
79
63
  function fleetKey(principal) {
80
64
  return `${PREFIX}/principals/${encodeURIComponent(principal)}`;
@@ -8,11 +8,9 @@
8
8
  */
9
9
  import { parsePrUrl } from "../../../internal/scm/pr-url.js";
10
10
  export function launchRepos(target, cloud) {
11
- var _a;
12
- var _b, _c, _d, _e, _f;
13
11
  const resolved = typeof cloud.repos === "function";
14
12
  const allowlist = typeof cloud.repos === "function" ? cloud.repos() : cloud.repos;
15
- if (resolved && (allowlist === null || allowlist === void 0 ? void 0 : allowlist.length) === 0) {
13
+ if (resolved && allowlist?.length === 0) {
16
14
  throw new Error("No repositories are available to cloud agents for this deployment.");
17
15
  }
18
16
  if (!resolved &&
@@ -22,13 +20,13 @@ export function launchRepos(target, cloud) {
22
20
  return allowlist;
23
21
  }
24
22
  const pr = target.prUrl === undefined ? undefined : parsePrUrl(target.prUrl);
25
- if (target.prUrl !== undefined && (pr === null || pr === void 0 ? void 0 : pr.provider) !== "github") {
23
+ if (target.prUrl !== undefined && pr?.provider !== "github") {
26
24
  throw new Error(`prUrl must be a GitHub pull request URL: ${target.prUrl}`);
27
25
  }
28
26
  const prRepo = pr === undefined ? undefined : `https://github.com/${pr.owner}/${pr.repo}`;
29
27
  // A lone `ref` needs exactly one configured repository to apply to.
30
- const configured = allowlist !== null && allowlist !== void 0 ? allowlist : [];
31
- const url = (_c = (_b = target.repo) !== null && _b !== void 0 ? _b : prRepo) !== null && _c !== void 0 ? _c : (configured.length === 1 ? (_a = configured[0]) === null || _a === void 0 ? void 0 : _a.url : undefined);
28
+ const configured = allowlist ?? [];
29
+ const url = target.repo ?? prRepo ?? (configured.length === 1 ? configured[0]?.url : undefined);
32
30
  if (url === undefined) {
33
31
  throw new Error(configured.length > 1
34
32
  ? "`repo` is required: this extension configures several repositories."
@@ -37,7 +35,7 @@ export function launchRepos(target, cloud) {
37
35
  if (prRepo !== undefined && repoKey(prRepo) !== repoKey(url)) {
38
36
  throw new Error(`prUrl ${target.prUrl} is not a pull request of ${url}.`);
39
37
  }
40
- const allowlisted = allowlist === null || allowlist === void 0 ? void 0 : allowlist.some(configured => repoKey(configured.url) === repoKey(url));
38
+ const allowlisted = allowlist?.some(configured => repoKey(configured.url) === repoKey(url));
41
39
  if (allowlisted !== true) {
42
40
  throw new Error(allowlist === undefined
43
41
  ? `Configure cloud.repos before launching against a model-chosen repository (${url}).`
@@ -49,9 +47,9 @@ export function launchRepos(target, cloud) {
49
47
  const match = configured.find(configuredRepo => repoKey(configuredRepo.url) === repoKey(url));
50
48
  return [
51
49
  {
52
- url: (_d = match === null || match === void 0 ? void 0 : match.url) !== null && _d !== void 0 ? _d : url,
53
- startingRef: (_e = target.ref) !== null && _e !== void 0 ? _e : match === null || match === void 0 ? void 0 : match.startingRef,
54
- prUrl: (_f = target.prUrl) !== null && _f !== void 0 ? _f : (target.ref !== undefined ? undefined : match === null || match === void 0 ? void 0 : match.prUrl),
50
+ url: match?.url ?? url,
51
+ startingRef: target.ref ?? match?.startingRef,
52
+ prUrl: target.prUrl ?? (target.ref !== undefined ? undefined : match?.prUrl),
55
53
  },
56
54
  ];
57
55
  }
@@ -8,8 +8,7 @@ export function transcriptLines(messages) {
8
8
  }
9
9
  /** The text of the last assistant message, the agent's report. */
10
10
  export function lastAssistantText(messages) {
11
- var _a;
12
- return (_a = messages
11
+ return messages
13
12
  .toReversed()
14
- .find(message => message.role === "assistant" && message.text !== undefined)) === null || _a === void 0 ? void 0 : _a.text;
13
+ .find(message => message.role === "assistant" && message.text !== undefined)?.text;
15
14
  }
@@ -3,15 +3,6 @@
3
3
  * per launched agent, bound to the session whose turn launched it, so the
4
4
  * host wakes that conversation once the launched run stops.
5
5
  */
6
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
- step((generator = generator.apply(thisArg, _arguments || [])).next());
13
- });
14
- };
15
6
  import { describeError } from "../../../internal/describe-error.js";
16
7
  import extension from "../extension.js";
17
8
  import stopWatch, { WATCH_WINDOW_HOURS, } from "../reminders/cloud-agent-stop-watch.js";
@@ -31,69 +22,64 @@ const STOPPED_RUN_STATUSES = new Set([
31
22
  * reminders, the session has no continuation key, or arming failed; the
32
23
  * agent runs either way.
33
24
  */
34
- export function armWatch(ctx, launch) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const reminders = ctx.host.reminders;
37
- const continuationToken = ctx.session.continuationKey;
38
- if (!extension.config.watchStops ||
39
- STOPPED_RUN_STATUSES.has(launch.status) ||
40
- reminders === undefined ||
41
- continuationToken == null) {
42
- return false;
43
- }
44
- const { agentId } = launch;
45
- const { channelId } = ctx.session;
46
- try {
47
- const armed = yield reminders.list({
48
- status: "armed",
49
- purpose: WATCH_PURPOSE,
50
- continuationToken,
51
- });
52
- if (armed.some(reminder => reminder.channelId === channelId && watched(reminder) === agentId)) {
53
- return true;
54
- }
55
- const args = {
56
- agentId,
57
- deadline: new Date(Date.now() + WATCH_WINDOW_HOURS * 3600000).toISOString(),
58
- };
59
- yield reminders.create({
60
- purpose: WATCH_PURPOSE,
61
- channelId,
62
- continuationToken,
63
- handler: stopWatch,
64
- args,
65
- every: POLL_INTERVAL,
66
- // A fire during a turn waits for it instead of skipping to the next poll.
67
- busyPolicy: "queueBehindTurn",
68
- });
25
+ export async function armWatch(ctx, launch) {
26
+ const reminders = ctx.host.reminders;
27
+ const continuationToken = ctx.session.continuationKey;
28
+ if (!extension.config.watchStops ||
29
+ STOPPED_RUN_STATUSES.has(launch.status) ||
30
+ reminders === undefined ||
31
+ continuationToken == null) {
32
+ return false;
33
+ }
34
+ const { agentId } = launch;
35
+ const { channelId } = ctx.session;
36
+ try {
37
+ const armed = await reminders.list({
38
+ status: "armed",
39
+ purpose: WATCH_PURPOSE,
40
+ continuationToken,
41
+ });
42
+ if (armed.some(reminder => reminder.channelId === channelId && watched(reminder) === agentId)) {
69
43
  return true;
70
44
  }
71
- catch (error) {
72
- console.warn(`[cursor-cloud-agents] could not watch ${agentId}: ${describeError(error)}`);
73
- return false;
74
- }
75
- });
45
+ const args = {
46
+ agentId,
47
+ deadline: new Date(Date.now() + WATCH_WINDOW_HOURS * 3_600_000).toISOString(),
48
+ };
49
+ await reminders.create({
50
+ purpose: WATCH_PURPOSE,
51
+ channelId,
52
+ continuationToken,
53
+ handler: stopWatch,
54
+ args,
55
+ every: POLL_INTERVAL,
56
+ // A fire during a turn waits for it instead of skipping to the next poll.
57
+ busyPolicy: "queueBehindTurn",
58
+ });
59
+ return true;
60
+ }
61
+ catch (error) {
62
+ console.warn(`[cursor-cloud-agents] could not watch ${agentId}: ${describeError(error)}`);
63
+ return false;
64
+ }
76
65
  }
77
66
  /** End every watch on `agentId`, whose run was stopped on purpose. */
78
- export function disarmWatches(ctx, agentId) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- const reminders = ctx.host.reminders;
81
- if (reminders === undefined) {
82
- return;
83
- }
84
- try {
85
- for (const reminder of yield reminders.list({ status: "armed", purpose: WATCH_PURPOSE })) {
86
- if (watched(reminder) === agentId) {
87
- yield reminders.cancel(reminder.id, "cloud_agent_cancelled");
88
- }
67
+ export async function disarmWatches(ctx, agentId) {
68
+ const reminders = ctx.host.reminders;
69
+ if (reminders === undefined) {
70
+ return;
71
+ }
72
+ try {
73
+ for (const reminder of await reminders.list({ status: "armed", purpose: WATCH_PURPOSE })) {
74
+ if (watched(reminder) === agentId) {
75
+ await reminders.cancel(reminder.id, "cloud_agent_cancelled");
89
76
  }
90
77
  }
91
- catch (error) {
92
- console.warn(`[cursor-cloud-agents] could not stop watching ${agentId}: ${describeError(error)}`);
93
- }
94
- });
78
+ }
79
+ catch (error) {
80
+ console.warn(`[cursor-cloud-agents] could not stop watching ${agentId}: ${describeError(error)}`);
81
+ }
95
82
  }
96
83
  function watched(reminder) {
97
- var _a;
98
- return (_a = reminder.args) === null || _a === void 0 ? void 0 : _a.agentId;
84
+ return reminder.args?.agentId;
99
85
  }