@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
@@ -4,27 +4,8 @@
4
4
  * Owns request, response, and error mapping. Rendering and polling remain in
5
5
  * the CLI layer. Requests authenticate with the user's Cursor API key.
6
6
  */
7
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
- return new (P || (P = Promise))(function (resolve, reject) {
10
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
- step((generator = generator.apply(thisArg, _arguments || [])).next());
14
- });
15
- };
16
- var __rest = (this && this.__rest) || function (s, e) {
17
- var t = {};
18
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
- t[p] = s[p];
20
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
- t[p[i]] = s[p[i]];
24
- }
25
- return t;
26
- };
27
7
  import { z } from "zod";
8
+ import { packageVersion } from "./distribution.js";
28
9
  import { MAX_SECRET_VALUE_BYTES, MAX_SECRETS, validateEgressDomain, validateSettableSecretName, } from "./hosting.js";
29
10
  export const TERMINAL_DEPLOY_STATUSES = new Set([
30
11
  "running",
@@ -380,60 +361,65 @@ const automationExportSchema = z
380
361
  .passthrough();
381
362
  export class AgentServeDeployClient {
382
363
  constructor(options) {
383
- var _a;
384
364
  this.backendUrl = options.backendUrl.endsWith("/")
385
365
  ? options.backendUrl.slice(0, -1)
386
366
  : options.backendUrl;
387
367
  this.apiKey = options.apiKey;
388
- this.fetchImpl = (_a = options.fetchImpl) !== null && _a !== void 0 ? _a : fetch;
368
+ this.fetchImpl = options.fetchImpl ?? fetch;
389
369
  }
390
370
  /** Create or redeploy; 202 means accepted, not running (poll status). */
391
- deploy(args) {
392
- return __awaiter(this, void 0, void 0, function* () {
393
- var _a;
394
- const slugError = validateDeploymentSlug(args.slug);
395
- if (slugError !== undefined) {
396
- throw new DeployApiError(slugError, 400);
397
- }
398
- for (const domain of (_a = args.source.egressAllowedDomains) !== null && _a !== void 0 ? _a : []) {
399
- const domainError = validateEgressDomain(domain);
400
- if (domainError !== undefined) {
401
- throw new DeployApiError(domainError, 400);
402
- }
371
+ async deploy(args) {
372
+ const slugError = validateDeploymentSlug(args.slug);
373
+ if (slugError !== undefined) {
374
+ throw new DeployApiError(slugError, 400);
375
+ }
376
+ for (const domain of args.source.egressAllowedDomains ?? []) {
377
+ const domainError = validateEgressDomain(domain);
378
+ if (domainError !== undefined) {
379
+ throw new DeployApiError(domainError, 400);
403
380
  }
404
- // Only the git-ref member exists today; a future artifact member would
405
- // upload the build first and post a different body from this branch.
406
- const body = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ teamId: args.teamId, slug: args.slug, gitRepoUrl: args.source.gitRepoUrl }, (args.source.gitRef === undefined ? {} : { gitRef: args.source.gitRef })), (args.source.agentPath === undefined ? {} : { agentPath: args.source.agentPath })), (args.source.cursorEventRepos === undefined
381
+ }
382
+ // Only the git-ref member exists today; a future artifact member would
383
+ // upload the build first and post a different body from this branch.
384
+ const body = {
385
+ teamId: args.teamId,
386
+ slug: args.slug,
387
+ gitRepoUrl: args.source.gitRepoUrl,
388
+ ...(args.source.gitRef === undefined ? {} : { gitRef: args.source.gitRef }),
389
+ ...(args.source.agentPath === undefined ? {} : { agentPath: args.source.agentPath }),
390
+ ...(args.source.cursorEventRepos === undefined
407
391
  ? {}
408
- : { cursorEventRepos: args.source.cursorEventRepos })), (args.source.egressAllowedDomains === undefined
392
+ : { cursorEventRepos: args.source.cursorEventRepos }),
393
+ ...(args.source.egressAllowedDomains === undefined
409
394
  ? {}
410
- : { egressAllowedDomains: args.source.egressAllowedDomains })), {
411
- // JSON.stringify drops undefined keys.
412
- publicRoutePaths: args.source.publicRoutePaths, template: args.template });
413
- const send = () => this.request({
414
- method: "POST",
415
- path: "/internal/agent-serve/deployments",
416
- body,
417
- context: { verb: "deploy", slug: args.slug },
418
- });
419
- let raw;
420
- try {
421
- raw = yield send();
422
- }
423
- catch (error) {
424
- const unsupportedTemplate = args.template !== undefined &&
425
- error instanceof DeployApiError &&
426
- error.status === 400 &&
427
- error.message.toLowerCase().includes("template") &&
428
- /unrecognized|unknown/i.test(error.message);
429
- if (!unsupportedTemplate) {
430
- throw error;
431
- }
432
- delete body.template;
433
- raw = yield send();
395
+ : { egressAllowedDomains: args.source.egressAllowedDomains }),
396
+ // JSON.stringify drops undefined keys.
397
+ publicRoutePaths: args.source.publicRoutePaths,
398
+ template: args.template,
399
+ };
400
+ const send = () => this.request({
401
+ method: "POST",
402
+ path: "/internal/agent-serve/deployments",
403
+ body,
404
+ context: { verb: "deploy", slug: args.slug },
405
+ });
406
+ let raw;
407
+ try {
408
+ raw = await send();
409
+ }
410
+ catch (error) {
411
+ const unsupportedTemplate = args.template !== undefined &&
412
+ error instanceof DeployApiError &&
413
+ error.status === 400 &&
414
+ error.message.toLowerCase().includes("template") &&
415
+ /unrecognized|unknown/i.test(error.message);
416
+ if (!unsupportedTemplate) {
417
+ throw error;
434
418
  }
435
- return deployAcceptedSchema.parse(raw);
436
- });
419
+ delete body.template;
420
+ raw = await send();
421
+ }
422
+ return deployAcceptedSchema.parse(raw);
437
423
  }
438
424
  /**
439
425
  * Create or redeploy an architecture-v2 deployment. Poll
@@ -441,402 +427,355 @@ export class AgentServeDeployClient {
441
427
  * one application with several release components (one per agent
442
428
  * directory); it is mutually exclusive with `agentPath`.
443
429
  */
444
- deployAgentkit(args) {
445
- return __awaiter(this, void 0, void 0, function* () {
446
- var _a;
447
- const slugError = validateDeploymentSlug(args.slug);
448
- if (slugError !== undefined) {
449
- throw new DeployApiError(slugError, 400);
450
- }
451
- for (const component of (_a = args.components) !== null && _a !== void 0 ? _a : []) {
452
- const keyError = validateDeploymentSlug(component.componentKey);
453
- if (keyError !== undefined) {
454
- throw new DeployApiError(`Invalid component key ${JSON.stringify(component.componentKey)}: use lowercase letters, digits, '-' or '_' (max 64 chars)`, 400);
455
- }
430
+ async deployAgentkit(args) {
431
+ const slugError = validateDeploymentSlug(args.slug);
432
+ if (slugError !== undefined) {
433
+ throw new DeployApiError(slugError, 400);
434
+ }
435
+ for (const component of args.components ?? []) {
436
+ const keyError = validateDeploymentSlug(component.componentKey);
437
+ if (keyError !== undefined) {
438
+ throw new DeployApiError(`Invalid component key ${JSON.stringify(component.componentKey)}: use lowercase letters, digits, '-' or '_' (max 64 chars)`, 400);
456
439
  }
457
- const raw = yield this.request({
458
- method: "POST",
459
- path: "/internal/agentsdk/deployments",
460
- body: Object.assign(Object.assign(Object.assign({ teamId: args.teamId, slug: args.slug, gitRepoUrl: args.gitRepoUrl, gitRef: args.gitRef, agentPath: args.agentPath, components: args.components, repositories: args.repositories !== undefined && args.repositories.length > 0
461
- ? args.repositories
462
- : undefined }, (args.multiTenant === true ? { multiTenant: true } : {})), { persistent: args.persistent }), (args.image === undefined ? {} : { image: args.image })),
463
- context: { verb: "deploy", slug: args.slug },
464
- });
465
- return agentkitDeployAcceptedSchema.parse(raw);
466
- });
467
- }
468
- getAgentkitDeploy(args) {
469
- return __awaiter(this, void 0, void 0, function* () {
470
- const raw = yield this.request({
471
- method: "GET",
472
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
473
- context: { verb: "get deployment", slug: args.slug },
474
- });
475
- return agentkitDeployStatusSchema.parse(raw);
476
- });
440
+ }
441
+ const raw = await this.request({
442
+ method: "POST",
443
+ path: "/internal/agentsdk/deployments",
444
+ body: {
445
+ teamId: args.teamId,
446
+ slug: args.slug,
447
+ gitRepoUrl: args.gitRepoUrl,
448
+ gitRef: args.gitRef,
449
+ agentPath: args.agentPath,
450
+ components: args.components,
451
+ repositories: args.repositories !== undefined && args.repositories.length > 0
452
+ ? args.repositories
453
+ : undefined,
454
+ ...(args.multiTenant === true ? { multiTenant: true } : {}),
455
+ persistent: args.persistent,
456
+ ...(args.image === undefined ? {} : { image: args.image }),
457
+ },
458
+ context: { verb: "deploy", slug: args.slug },
459
+ });
460
+ return agentkitDeployAcceptedSchema.parse(raw);
461
+ }
462
+ async getAgentkitDeploy(args) {
463
+ const raw = await this.request({
464
+ method: "GET",
465
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
466
+ context: { verb: "get deployment", slug: args.slug },
467
+ });
468
+ return agentkitDeployStatusSchema.parse(raw);
477
469
  }
478
470
  /**
479
471
  * Stop an architecture-v2 deployment. Poll {@link getAgentkitDeploy} until
480
472
  * `stopped`.
481
473
  */
482
- stopAgentkit(args) {
483
- return __awaiter(this, void 0, void 0, function* () {
484
- const raw = yield this.request({
485
- method: "POST",
486
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}` +
487
- (args.cancelRuns === true ? "&cancelRuns=true" : ""),
488
- context: { verb: "stop", slug: args.slug },
489
- });
490
- return agentkitStopAcceptedSchema.parse(raw);
474
+ async stopAgentkit(args) {
475
+ const raw = await this.request({
476
+ method: "POST",
477
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}` +
478
+ (args.cancelRuns === true ? "&cancelRuns=true" : ""),
479
+ context: { verb: "stop", slug: args.slug },
491
480
  });
481
+ return agentkitStopAcceptedSchema.parse(raw);
492
482
  }
493
483
  /** Start an architecture-v2 deployment with a compatibility fallback. */
494
- startAgentkit(args) {
495
- return __awaiter(this, void 0, void 0, function* () {
496
- const encoded = encodeURIComponent(args.slug);
497
- try {
498
- const raw = yield this.request({
499
- method: "POST",
500
- path: `/internal/agentsdk/deployments/${encoded}/start?teamId=${args.teamId}`,
501
- context: { verb: "start", slug: args.slug },
502
- });
503
- return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
504
- }
505
- catch (error) {
506
- if (!(error instanceof DeployApiError) || error.status !== 404) {
507
- throw error;
508
- }
509
- const raw = yield this.request({
510
- method: "POST",
511
- path: `/internal/agentsdk/deployments/${encoded}/global-resume?teamId=${args.teamId}`,
512
- context: { verb: "start", slug: args.slug },
513
- });
514
- return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
515
- }
516
- });
517
- }
518
- setAgentkitGlobalSuspension(args) {
519
- return __awaiter(this, void 0, void 0, function* () {
520
- const action = args.suspended ? "global-stop" : "global-resume";
521
- const cancelQuery = args.suspended === true && args.cancelRuns === true ? "&cancelRuns=true" : "";
522
- const raw = yield this.request({
484
+ async startAgentkit(args) {
485
+ const encoded = encodeURIComponent(args.slug);
486
+ try {
487
+ const raw = await this.request({
523
488
  method: "POST",
524
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${action}?teamId=${args.teamId}${cancelQuery}`,
525
- context: {
526
- verb: args.suspended ? "globally stop" : "globally resume",
527
- slug: args.slug,
528
- },
489
+ path: `/internal/agentsdk/deployments/${encoded}/start?teamId=${args.teamId}`,
490
+ context: { verb: "start", slug: args.slug },
529
491
  });
530
492
  return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
531
- });
532
- }
533
- killAgentkit(args) {
534
- return __awaiter(this, void 0, void 0, function* () {
535
- const raw = yield this.request({
493
+ }
494
+ catch (error) {
495
+ if (!(error instanceof DeployApiError) || error.status !== 404) {
496
+ throw error;
497
+ }
498
+ const raw = await this.request({
536
499
  method: "POST",
537
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/kill?teamId=${args.teamId}`,
538
- context: { verb: "kill", slug: args.slug },
500
+ path: `/internal/agentsdk/deployments/${encoded}/global-resume?teamId=${args.teamId}`,
501
+ context: { verb: "start", slug: args.slug },
539
502
  });
540
- return agentkitStopAcceptedSchema.parse(raw);
541
- });
503
+ return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
504
+ }
542
505
  }
543
- unlockAgentkitDeploys(args) {
544
- return __awaiter(this, void 0, void 0, function* () {
545
- const raw = yield this.request({
546
- method: "POST",
547
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/unlock-deploys?teamId=${args.teamId}`,
548
- context: { verb: "unlock deploys", slug: args.slug },
549
- });
550
- return z
551
- .object({
552
- applicationId: z.string().min(1),
553
- deployLocked: z.literal(false),
554
- })
555
- .parse(raw);
556
- });
506
+ async setAgentkitGlobalSuspension(args) {
507
+ const action = args.suspended ? "global-stop" : "global-resume";
508
+ const cancelQuery = args.suspended === true && args.cancelRuns === true ? "&cancelRuns=true" : "";
509
+ const raw = await this.request({
510
+ method: "POST",
511
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${action}?teamId=${args.teamId}${cancelQuery}`,
512
+ context: {
513
+ verb: args.suspended ? "globally stop" : "globally resume",
514
+ slug: args.slug,
515
+ },
516
+ });
517
+ return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
518
+ }
519
+ async killAgentkit(args) {
520
+ const raw = await this.request({
521
+ method: "POST",
522
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/kill?teamId=${args.teamId}`,
523
+ context: { verb: "kill", slug: args.slug },
524
+ });
525
+ return agentkitStopAcceptedSchema.parse(raw);
526
+ }
527
+ async unlockAgentkitDeploys(args) {
528
+ const raw = await this.request({
529
+ method: "POST",
530
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/unlock-deploys?teamId=${args.teamId}`,
531
+ context: { verb: "unlock deploys", slug: args.slug },
532
+ });
533
+ return z
534
+ .object({
535
+ applicationId: z.string().min(1),
536
+ deployLocked: z.literal(false),
537
+ })
538
+ .parse(raw);
557
539
  }
558
- cancelAgentkitRuns(args) {
559
- return __awaiter(this, void 0, void 0, function* () {
560
- const raw = yield this.request({
561
- method: "POST",
562
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/cancel-runs?teamId=${args.teamId}`,
563
- context: { verb: "cancel runs", slug: args.slug },
564
- });
565
- return agentkitCancelRunsResultSchema.parse(raw);
540
+ async cancelAgentkitRuns(args) {
541
+ const raw = await this.request({
542
+ method: "POST",
543
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/cancel-runs?teamId=${args.teamId}`,
544
+ context: { verb: "cancel runs", slug: args.slug },
566
545
  });
546
+ return agentkitCancelRunsResultSchema.parse(raw);
567
547
  }
568
548
  /** Repoint a managed deployment's event repositories. */
569
- setAgentkitEventRepositories(args) {
570
- return __awaiter(this, void 0, void 0, function* () {
571
- const raw = yield this.request({
572
- method: "PUT",
573
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/event-repositories?teamId=${args.teamId}`,
574
- body: { repositories: args.repositories },
575
- context: { verb: "set event repositories", slug: args.slug },
576
- });
577
- return agentkitEventRepositoriesSchema.parse(raw).repositories;
578
- });
579
- }
580
- upgradeAgentkitInstall(args) {
581
- return __awaiter(this, void 0, void 0, function* () {
582
- return this.pinAgentkitInstall("upgrade", args);
583
- });
584
- }
585
- rollbackAgentkitInstall(args) {
586
- return __awaiter(this, void 0, void 0, function* () {
587
- return this.pinAgentkitInstall("rollback", args);
588
- });
589
- }
590
- pinAgentkitInstall(direction, args) {
591
- return __awaiter(this, void 0, void 0, function* () {
592
- const raw = yield this.request({
593
- method: direction === "upgrade" ? "PUT" : "POST",
594
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${direction === "upgrade" ? "release" : "rollback"}?teamId=${args.teamId}`,
595
- body: Object.assign(Object.assign({}, (args.releaseId === undefined ? {} : { releaseId: args.releaseId })), (args.version === undefined ? {} : { version: args.version })),
596
- context: {
597
- verb: direction === "upgrade" ? "upgrade" : "roll back",
598
- slug: args.slug,
599
- },
600
- });
601
- return agentkitInstallReleaseSchema.parse(raw).releaseId;
602
- });
549
+ async setAgentkitEventRepositories(args) {
550
+ const raw = await this.request({
551
+ method: "PUT",
552
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/event-repositories?teamId=${args.teamId}`,
553
+ body: { repositories: args.repositories },
554
+ context: { verb: "set event repositories", slug: args.slug },
555
+ });
556
+ return agentkitEventRepositoriesSchema.parse(raw).repositories;
557
+ }
558
+ async upgradeAgentkitInstall(args) {
559
+ return this.pinAgentkitInstall("upgrade", args);
560
+ }
561
+ async rollbackAgentkitInstall(args) {
562
+ return this.pinAgentkitInstall("rollback", args);
563
+ }
564
+ async pinAgentkitInstall(direction, args) {
565
+ const raw = await this.request({
566
+ method: direction === "upgrade" ? "PUT" : "POST",
567
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${direction === "upgrade" ? "release" : "rollback"}?teamId=${args.teamId}`,
568
+ body: {
569
+ ...(args.releaseId === undefined ? {} : { releaseId: args.releaseId }),
570
+ ...(args.version === undefined ? {} : { version: args.version }),
571
+ },
572
+ context: {
573
+ verb: direction === "upgrade" ? "upgrade" : "roll back",
574
+ slug: args.slug,
575
+ },
576
+ });
577
+ return agentkitInstallReleaseSchema.parse(raw).releaseId;
603
578
  }
604
579
  /**
605
580
  * Delete an architecture-v2 deployment. Poll {@link getAgentkitDeploy}
606
581
  * until it is no longer found.
607
582
  */
608
- deleteAgentkit(args) {
609
- return __awaiter(this, void 0, void 0, function* () {
610
- const raw = yield this.request({
611
- method: "DELETE",
612
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
613
- context: { verb: "delete", slug: args.slug },
614
- });
615
- return agentkitStopAcceptedSchema.parse(raw);
583
+ async deleteAgentkit(args) {
584
+ const raw = await this.request({
585
+ method: "DELETE",
586
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
587
+ context: { verb: "delete", slug: args.slug },
616
588
  });
589
+ return agentkitStopAcceptedSchema.parse(raw);
617
590
  }
618
591
  /**
619
592
  * Start or, with `sessionId`, resume a hosted architecture-v2 session.
620
593
  */
621
- startSession(args) {
622
- return __awaiter(this, void 0, void 0, function* () {
623
- const raw = yield this.request({
624
- method: "POST",
625
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions`,
626
- body: {
627
- teamId: args.teamId,
628
- message: args.message,
629
- sessionId: args.sessionId,
630
- dryRun: args.dryRun === true ? true : undefined,
631
- asOf: args.asOf,
632
- componentKey: args.componentKey,
633
- },
634
- context: { verb: "start session", slug: args.slug },
635
- });
636
- return agentkitStartSessionAcceptedSchema.parse(raw);
637
- });
594
+ async startSession(args) {
595
+ const raw = await this.request({
596
+ method: "POST",
597
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions`,
598
+ body: {
599
+ teamId: args.teamId,
600
+ message: args.message,
601
+ sessionId: args.sessionId,
602
+ dryRun: args.dryRun === true ? true : undefined,
603
+ asOf: args.asOf,
604
+ componentKey: args.componentKey,
605
+ },
606
+ context: { verb: "start session", slug: args.slug },
607
+ });
608
+ return agentkitStartSessionAcceptedSchema.parse(raw);
638
609
  }
639
610
  /** Hosted executions and the start-log tee for one v2 session. */
640
- getAgentkitSessionRuns(args) {
641
- return __awaiter(this, void 0, void 0, function* () {
642
- const raw = yield this.request({
643
- method: "GET",
644
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions/${encodeURIComponent(args.sessionId)}/runs?teamId=${args.teamId}`,
645
- context: { verb: "get session runs", slug: args.slug },
646
- });
647
- return agentkitSessionRunsSchema.parse(raw);
611
+ async getAgentkitSessionRuns(args) {
612
+ const raw = await this.request({
613
+ method: "GET",
614
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions/${encodeURIComponent(args.sessionId)}/runs?teamId=${args.teamId}`,
615
+ context: { verb: "get session runs", slug: args.slug },
648
616
  });
617
+ return agentkitSessionRunsSchema.parse(raw);
649
618
  }
650
619
  /** Events written so far. Pass `afterEventIndex: -1` to read from the start. */
651
- getAgentkitSessionEvents(args) {
652
- return __awaiter(this, void 0, void 0, function* () {
653
- const raw = yield this.request({
654
- method: "GET",
655
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}` +
656
- `/sessions/${encodeURIComponent(args.sessionId)}/events` +
657
- `?teamId=${args.teamId}&afterEventIndex=${args.afterEventIndex}`,
658
- context: { verb: "get session events", slug: args.slug },
659
- });
660
- return agentkitSessionEventPollSchema.parse(raw);
620
+ async getAgentkitSessionEvents(args) {
621
+ const raw = await this.request({
622
+ method: "GET",
623
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}` +
624
+ `/sessions/${encodeURIComponent(args.sessionId)}/events` +
625
+ `?teamId=${args.teamId}&afterEventIndex=${args.afterEventIndex}`,
626
+ context: { verb: "get session events", slug: args.slug },
661
627
  });
628
+ return agentkitSessionEventPollSchema.parse(raw);
662
629
  }
663
630
  /**
664
631
  * Recent output of the deployment's most recent sessions, oldest first, or
665
632
  * of one session when `sessionId` is set.
666
633
  */
667
- getAgentkitDeploymentLogs(args) {
668
- return __awaiter(this, void 0, void 0, function* () {
669
- const query = new URLSearchParams({ teamId: String(args.teamId) });
670
- if (args.sessionId !== undefined) {
671
- query.set("sessionId", args.sessionId);
672
- }
673
- const raw = yield this.request({
674
- method: "GET",
675
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/logs?${query}`,
676
- context: { verb: "get logs", slug: args.slug },
677
- signal: args.signal,
678
- });
679
- return agentkitDeploymentLogsSchema.parse(raw).sessions;
680
- });
681
- }
682
- listDeployments(args) {
683
- return __awaiter(this, void 0, void 0, function* () {
684
- const raw = yield this.request({
634
+ async getAgentkitDeploymentLogs(args) {
635
+ const query = new URLSearchParams({ teamId: String(args.teamId) });
636
+ if (args.sessionId !== undefined) {
637
+ query.set("sessionId", args.sessionId);
638
+ }
639
+ const raw = await this.request({
640
+ method: "GET",
641
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/logs?${query}`,
642
+ context: { verb: "get logs", slug: args.slug },
643
+ signal: args.signal,
644
+ });
645
+ return agentkitDeploymentLogsSchema.parse(raw).sessions;
646
+ }
647
+ async listDeployments(args) {
648
+ const raw = await this.request({
649
+ method: "GET",
650
+ path: `/internal/agent-serve/deployments?teamId=${args.teamId}`,
651
+ context: { verb: "list deployments" },
652
+ });
653
+ return listResponseSchema.parse(raw).deployments;
654
+ }
655
+ async listAgentkitDeployments(args) {
656
+ const deployments = [];
657
+ let pageToken = null;
658
+ do {
659
+ const qs = `teamId=${args.teamId}&pageSize=100` +
660
+ (pageToken === null ? "" : `&pageToken=${encodeURIComponent(pageToken)}`);
661
+ const page = agentkitDeploymentListResponseSchema.parse(await this.request({
685
662
  method: "GET",
686
- path: `/internal/agent-serve/deployments?teamId=${args.teamId}`,
687
- context: { verb: "list deployments" },
688
- });
689
- return listResponseSchema.parse(raw).deployments;
690
- });
691
- }
692
- listAgentkitDeployments(args) {
693
- return __awaiter(this, void 0, void 0, function* () {
694
- const deployments = [];
695
- let pageToken = null;
696
- do {
697
- const qs = `teamId=${args.teamId}&pageSize=100` +
698
- (pageToken === null ? "" : `&pageToken=${encodeURIComponent(pageToken)}`);
699
- const page = agentkitDeploymentListResponseSchema.parse(yield this.request({
700
- method: "GET",
701
- path: `/internal/agentsdk/deployments?${qs}`,
702
- context: { verb: "list architecture v2 deployments" },
703
- }));
704
- deployments.push(...page.deployments);
705
- pageToken = page.nextPageToken;
706
- } while (pageToken !== null);
707
- return deployments;
708
- });
709
- }
710
- getDeployment(args) {
711
- return __awaiter(this, void 0, void 0, function* () {
712
- const raw = yield this.request({
713
- method: "GET",
714
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
715
- context: { verb: "get deployment", slug: args.slug },
716
- });
717
- return deploymentDetailSchema.parse(raw);
718
- });
719
- }
720
- stopDeployment(args) {
721
- return __awaiter(this, void 0, void 0, function* () {
722
- const raw = yield this.request({
723
- method: "POST",
724
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
725
- context: { verb: "stop", slug: args.slug },
726
- });
727
- return stopAcceptedSchema.parse(raw);
728
- });
729
- }
730
- deleteDeployment(args) {
731
- return __awaiter(this, void 0, void 0, function* () {
732
- const raw = yield this.request({
733
- method: "DELETE",
734
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
735
- context: { verb: "delete", slug: args.slug },
736
- });
737
- return stopAcceptedSchema.parse(raw);
738
- });
663
+ path: `/internal/agentsdk/deployments?${qs}`,
664
+ context: { verb: "list architecture v2 deployments" },
665
+ }));
666
+ deployments.push(...page.deployments);
667
+ pageToken = page.nextPageToken;
668
+ } while (pageToken !== null);
669
+ return deployments;
670
+ }
671
+ async getDeployment(args) {
672
+ const raw = await this.request({
673
+ method: "GET",
674
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
675
+ context: { verb: "get deployment", slug: args.slug },
676
+ });
677
+ return deploymentDetailSchema.parse(raw);
678
+ }
679
+ async stopDeployment(args) {
680
+ const raw = await this.request({
681
+ method: "POST",
682
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
683
+ context: { verb: "stop", slug: args.slug },
684
+ });
685
+ return stopAcceptedSchema.parse(raw);
686
+ }
687
+ async deleteDeployment(args) {
688
+ const raw = await this.request({
689
+ method: "DELETE",
690
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
691
+ context: { verb: "delete", slug: args.slug },
692
+ });
693
+ return stopAcceptedSchema.parse(raw);
739
694
  }
740
695
  /** Returns the new alias token exactly once; the old one dies now. */
741
- rotateAliasToken(args) {
742
- return __awaiter(this, void 0, void 0, function* () {
743
- const raw = yield this.request({
744
- method: "POST",
745
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
746
- context: { verb: "rotate alias token", slug: args.slug },
747
- });
748
- return rotateResponseSchema.parse(raw).aliasToken;
696
+ async rotateAliasToken(args) {
697
+ const raw = await this.request({
698
+ method: "POST",
699
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
700
+ context: { verb: "rotate alias token", slug: args.slug },
749
701
  });
702
+ return rotateResponseSchema.parse(raw).aliasToken;
750
703
  }
751
704
  /** Rotate the alias token on an AgentSDK v2 deployment. */
752
- rotateAgentsdkAliasToken(args) {
753
- return __awaiter(this, void 0, void 0, function* () {
754
- const raw = yield this.request({
755
- method: "POST",
756
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
757
- context: { verb: "rotate alias token", slug: args.slug },
758
- });
759
- return rotateResponseSchema.parse(raw).aliasToken;
705
+ async rotateAgentsdkAliasToken(args) {
706
+ const raw = await this.request({
707
+ method: "POST",
708
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
709
+ context: { verb: "rotate alias token", slug: args.slug },
760
710
  });
711
+ return rotateResponseSchema.parse(raw).aliasToken;
761
712
  }
762
713
  /**
763
714
  * Upsert secrets by name (unlisted names stay untouched). Returns the
764
715
  * post-write union of secret names, sorted. Validates names and value
765
716
  * sizes client-side with the backend's grammar before any network call.
766
717
  */
767
- setSecrets(args) {
768
- return __awaiter(this, void 0, void 0, function* () {
769
- this.validateSecrets(args.secrets);
770
- const raw = yield this.request({
771
- method: "PUT",
772
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
773
- body: { teamId: args.teamId, secrets: args.secrets },
774
- context: { verb: "set secrets", slug: args.slug },
775
- });
776
- return setSecretsResponseSchema.parse(raw).secretNames;
718
+ async setSecrets(args) {
719
+ this.validateSecrets(args.secrets);
720
+ const raw = await this.request({
721
+ method: "PUT",
722
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
723
+ body: { teamId: args.teamId, secrets: args.secrets },
724
+ context: { verb: "set secrets", slug: args.slug },
777
725
  });
726
+ return setSecretsResponseSchema.parse(raw).secretNames;
778
727
  }
779
728
  /** Upsert application-scoped secrets on an AgentSDK v2 deployment. */
780
- setAgentkitSecrets(args) {
781
- return __awaiter(this, void 0, void 0, function* () {
782
- this.validateSecrets(args.secrets);
783
- const raw = yield this.request({
784
- method: "PUT",
785
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
786
- body: { teamId: args.teamId, secrets: args.secrets },
787
- context: { verb: "set secrets", slug: args.slug },
788
- });
789
- return setSecretsResponseSchema.parse(raw).secretNames;
729
+ async setAgentkitSecrets(args) {
730
+ this.validateSecrets(args.secrets);
731
+ const raw = await this.request({
732
+ method: "PUT",
733
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
734
+ body: { teamId: args.teamId, secrets: args.secrets },
735
+ context: { verb: "set secrets", slug: args.slug },
790
736
  });
737
+ return setSecretsResponseSchema.parse(raw).secretNames;
791
738
  }
792
739
  /** Secret names + creation times; values are never returned. */
793
- listSecrets(args) {
794
- return __awaiter(this, void 0, void 0, function* () {
795
- const raw = yield this.request({
796
- method: "GET",
797
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
798
- context: { verb: "list secrets", slug: args.slug },
799
- });
800
- return listSecretsResponseSchema.parse(raw).secrets;
740
+ async listSecrets(args) {
741
+ const raw = await this.request({
742
+ method: "GET",
743
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
744
+ context: { verb: "list secrets", slug: args.slug },
801
745
  });
746
+ return listSecretsResponseSchema.parse(raw).secrets;
802
747
  }
803
748
  /** Secret names + creation times for an AgentSDK v2 application. */
804
- listAgentkitSecrets(args) {
805
- return __awaiter(this, void 0, void 0, function* () {
806
- const raw = yield this.request({
807
- method: "GET",
808
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
809
- context: { verb: "list secrets", slug: args.slug },
810
- });
811
- return listSecretsResponseSchema.parse(raw).secrets;
749
+ async listAgentkitSecrets(args) {
750
+ const raw = await this.request({
751
+ method: "GET",
752
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
753
+ context: { verb: "list secrets", slug: args.slug },
812
754
  });
755
+ return listSecretsResponseSchema.parse(raw).secrets;
813
756
  }
814
757
  /** Remove one secret by name; 404 when it is not set. */
815
- deleteSecret(args) {
816
- return __awaiter(this, void 0, void 0, function* () {
817
- const nameError = validateSettableSecretName(args.name);
818
- if (nameError !== undefined) {
819
- throw new DeployApiError(nameError, 400);
820
- }
821
- yield this.request({
822
- method: "DELETE",
823
- path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
824
- context: { verb: "unset secret", slug: args.slug },
825
- });
758
+ async deleteSecret(args) {
759
+ const nameError = validateSettableSecretName(args.name);
760
+ if (nameError !== undefined) {
761
+ throw new DeployApiError(nameError, 400);
762
+ }
763
+ await this.request({
764
+ method: "DELETE",
765
+ path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
766
+ context: { verb: "unset secret", slug: args.slug },
826
767
  });
827
768
  }
828
769
  /** Remove one application-scoped secret from an AgentSDK v2 deployment. */
829
- deleteAgentkitSecret(args) {
830
- return __awaiter(this, void 0, void 0, function* () {
831
- const nameError = validateSettableSecretName(args.name);
832
- if (nameError !== undefined) {
833
- throw new DeployApiError(nameError, 400);
834
- }
835
- yield this.request({
836
- method: "DELETE",
837
- path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
838
- context: { verb: "unset secret", slug: args.slug },
839
- });
770
+ async deleteAgentkitSecret(args) {
771
+ const nameError = validateSettableSecretName(args.name);
772
+ if (nameError !== undefined) {
773
+ throw new DeployApiError(nameError, 400);
774
+ }
775
+ await this.request({
776
+ method: "DELETE",
777
+ path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
778
+ context: { verb: "unset secret", slug: args.slug },
840
779
  });
841
780
  }
842
781
  validateSecrets(secrets) {
@@ -859,26 +798,24 @@ export class AgentServeDeployClient {
859
798
  * indistinguishable 404s on the backend, so they map to one message here
860
799
  * (the wrong-host 404 hint from {@link mapErrorResponse} passes through).
861
800
  */
862
- exportAutomation(args) {
863
- return __awaiter(this, void 0, void 0, function* () {
864
- let raw;
865
- try {
866
- raw = yield this.request({
867
- method: "GET",
868
- path: `/internal/agent-serve/automations/${encodeURIComponent(args.uuid)}/export`,
869
- context: { verb: "export automation" },
870
- });
871
- }
872
- catch (error) {
873
- if (error instanceof DeployApiError &&
874
- error.status === 404 &&
875
- !error.message.includes("api.cursor.com")) {
876
- throw new DeployApiError(`Automation ${args.uuid} was not found or you don't have access to it (the agent_serve_mvp feature gate may also be off for your team).`, 404);
877
- }
878
- throw error;
801
+ async exportAutomation(args) {
802
+ let raw;
803
+ try {
804
+ raw = await this.request({
805
+ method: "GET",
806
+ path: `/internal/agent-serve/automations/${encodeURIComponent(args.uuid)}/export`,
807
+ context: { verb: "export automation" },
808
+ });
809
+ }
810
+ catch (error) {
811
+ if (error instanceof DeployApiError &&
812
+ error.status === 404 &&
813
+ !error.message.includes("api.cursor.com")) {
814
+ throw new DeployApiError(`Automation ${args.uuid} was not found or you don't have access to it (the agent_serve_mvp feature gate may also be off for your team).`, 404);
879
815
  }
880
- return automationExportSchema.parse(raw);
881
- });
816
+ throw error;
817
+ }
818
+ return automationExportSchema.parse(raw);
882
819
  }
883
820
  /** Full URL of the stable engine alias for a deployment. */
884
821
  aliasUrl(engineAlias) {
@@ -894,72 +831,73 @@ export class AgentServeDeployClient {
894
831
  return `${this.backendUrl}/internal/agent-serve/mcp/${teamId}/${encodeURIComponent(slug)}`;
895
832
  }
896
833
  /** Team container images, newest first, with the per-team cap. */
897
- listContainerImages(args) {
898
- return __awaiter(this, void 0, void 0, function* () {
899
- const raw = yield this.request({
900
- method: "GET",
901
- path: `/internal/agentsdk/images?teamId=${args.teamId}`,
902
- context: { verb: "list images" },
903
- });
904
- return listContainerImagesResponseSchema.parse(raw);
834
+ async listContainerImages(args) {
835
+ const raw = await this.request({
836
+ method: "GET",
837
+ path: `/internal/agentsdk/images?teamId=${args.teamId}`,
838
+ context: { verb: "list images" },
905
839
  });
840
+ return listContainerImagesResponseSchema.parse(raw);
906
841
  }
907
842
  /** Start (or restart) the upload for `name`; 409 when a new name would exceed the cap. */
908
- beginContainerImageUpload(args) {
909
- return __awaiter(this, void 0, void 0, function* () {
910
- const { name } = args, body = __rest(args, ["name"]);
911
- const raw = yield this.request({
912
- method: "POST",
913
- path: `/internal/agentsdk/images/${encodeURIComponent(name)}/begin`,
914
- body,
915
- context: { verb: "push image" },
916
- });
917
- return containerImageUploadSchema.parse(raw);
843
+ async beginContainerImageUpload(args) {
844
+ const { name, ...body } = args;
845
+ const raw = await this.request({
846
+ method: "POST",
847
+ path: `/internal/agentsdk/images/${encodeURIComponent(name)}/begin`,
848
+ body,
849
+ context: { verb: "push image" },
918
850
  });
851
+ return containerImageUploadSchema.parse(raw);
919
852
  }
920
853
  /** Every part is uploaded: complete the object and mark the image ready. */
921
- finalizeContainerImage(args) {
922
- return __awaiter(this, void 0, void 0, function* () {
923
- const raw = yield this.request({
924
- method: "POST",
925
- path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}/finalize`,
926
- body: { teamId: args.teamId, uploadId: args.uploadId, parts: args.parts },
927
- context: { verb: "push image" },
928
- });
929
- return z.object({ image: containerImageSchema }).passthrough().parse(raw).image;
854
+ async finalizeContainerImage(args) {
855
+ const raw = await this.request({
856
+ method: "POST",
857
+ path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}/finalize`,
858
+ body: { teamId: args.teamId, uploadId: args.uploadId, parts: args.parts },
859
+ context: { verb: "push image" },
930
860
  });
861
+ return z.object({ image: containerImageSchema }).passthrough().parse(raw).image;
931
862
  }
932
863
  /** Remove one image and its tarball; 404 when there is none by that name. */
933
- deleteContainerImage(args) {
934
- return __awaiter(this, void 0, void 0, function* () {
935
- yield this.request({
936
- method: "DELETE",
937
- path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
938
- context: { verb: "remove image" },
864
+ async deleteContainerImage(args) {
865
+ await this.request({
866
+ method: "DELETE",
867
+ path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
868
+ context: { verb: "remove image" },
869
+ });
870
+ }
871
+ async request(args) {
872
+ const timeout = AbortSignal.timeout(60_000);
873
+ let response;
874
+ try {
875
+ response = await this.fetchImpl(`${this.backendUrl}${args.path}`, {
876
+ method: args.method,
877
+ headers: {
878
+ accept: "application/json",
879
+ authorization: `Bearer ${this.apiKey}`,
880
+ // The backend refuses deploys from a CLI below its v2 floor.
881
+ "x-agent-sdk-cli-version": packageVersion(),
882
+ ...(args.body === undefined ? {} : { "content-type": "application/json" }),
883
+ },
884
+ ...(args.body === undefined ? {} : { body: JSON.stringify(args.body) }),
885
+ signal: args.signal === undefined ? timeout : AbortSignal.any([args.signal, timeout]),
939
886
  });
940
- });
941
- }
942
- request(args) {
943
- return __awaiter(this, void 0, void 0, function* () {
944
- const timeout = AbortSignal.timeout(60000);
945
- let response;
946
- try {
947
- response = yield this.fetchImpl(`${this.backendUrl}${args.path}`, Object.assign(Object.assign({ method: args.method, headers: Object.assign({ accept: "application/json", authorization: `Bearer ${this.apiKey}` }, (args.body === undefined ? {} : { "content-type": "application/json" })) }, (args.body === undefined ? {} : { body: JSON.stringify(args.body) })), { signal: args.signal === undefined ? timeout : AbortSignal.any([args.signal, timeout]) }));
948
- }
949
- catch (error) {
950
- throw new DeployApiError(`Could not reach the Cursor backend at ${this.backendUrl}: ${error instanceof Error ? error.message : String(error)}`, 0);
951
- }
952
- const text = yield response.text();
953
- if (!response.ok) {
954
- throw mapErrorResponse(response, text, args.context);
955
- }
956
- try {
957
- return JSON.parse(text);
958
- }
959
- catch (_a) {
960
- throw new DeployApiError(`The Cursor backend returned a non-JSON response to ${args.context.verb}.`, response.status);
961
- }
962
- });
887
+ }
888
+ catch (error) {
889
+ throw new DeployApiError(`Could not reach the Cursor backend at ${this.backendUrl}: ${error instanceof Error ? error.message : String(error)}`, 0);
890
+ }
891
+ const text = await response.text();
892
+ if (!response.ok) {
893
+ throw mapErrorResponse(response, text, args.context);
894
+ }
895
+ try {
896
+ return JSON.parse(text);
897
+ }
898
+ catch {
899
+ throw new DeployApiError(`The Cursor backend returned a non-JSON response to ${args.context.verb}.`, response.status);
900
+ }
963
901
  }
964
902
  }
965
903
  const MCP_GATEWAY_PATH = /^\/internal\/agent-serve\/mcp\/(\d+)\/([^/]+)(?:\/tools)?\/?$/;
@@ -972,7 +910,7 @@ export function parseAgentServeMcpGatewayUrl(url) {
972
910
  try {
973
911
  parsed = new URL(url);
974
912
  }
975
- catch (_a) {
913
+ catch {
976
914
  return undefined;
977
915
  }
978
916
  const match = MCP_GATEWAY_PATH.exec(parsed.pathname);
@@ -999,22 +937,21 @@ function serverErrorText(bodyText) {
999
937
  return parsed.error;
1000
938
  }
1001
939
  }
1002
- catch (_a) {
940
+ catch {
1003
941
  // Non-JSON body — fall through.
1004
942
  }
1005
943
  return undefined;
1006
944
  }
1007
945
  function mapErrorResponse(response, bodyText, context) {
1008
- var _a;
1009
946
  const serverError = serverErrorText(bodyText);
1010
947
  const slugPart = context.slug === undefined ? "" : ` "${context.slug}"`;
1011
948
  switch (response.status) {
1012
949
  case 400:
1013
- return new DeployApiError(serverError !== null && serverError !== void 0 ? serverError : `The ${context.verb} request was rejected as invalid.`, 400);
950
+ return new DeployApiError(serverError ?? `The ${context.verb} request was rejected as invalid.`, 400);
1014
951
  case 401:
1015
952
  return new DeployApiError("The Cursor API key was rejected. Run `agent-sdk login` again or update CURSOR_API_KEY.", 401);
1016
953
  case 403:
1017
- return new DeployApiError(`${serverError !== null && serverError !== void 0 ? serverError : "Not authorized"} — deploying needs team membership and the cloud-agent entitlement on that team.`, 403);
954
+ return new DeployApiError(`${serverError ?? "Not authorized"} — deploying needs team membership and the cloud-agent entitlement on that team.`, 403);
1018
955
  case 404: {
1019
956
  // Fastify's route-not-found envelope means we hit the wrong host
1020
957
  // (api2 vs api.cursor.com), not a missing deployment / closed gate.
@@ -1029,15 +966,16 @@ function mapErrorResponse(response, bodyText, context) {
1029
966
  // The server's 409 body distinguishes real conflicts (CAS races,
1030
967
  // "still deploying", architecture-v2 slugs on the v1 surface); keep
1031
968
  // its message when present.
1032
- return new DeployApiError(serverError !== null && serverError !== void 0 ? serverError : `A concurrent deploy or stop is changing deployment${slugPart}; retry in a moment.`, 409);
969
+ return new DeployApiError(serverError ??
970
+ `A concurrent deploy or stop is changing deployment${slugPart}; retry in a moment.`, 409);
1033
971
  case 429: {
1034
972
  const retryAfterHeader = response.headers.get("retry-after");
1035
973
  const retryAfterSeconds = retryAfterHeader !== null && /^\d+$/.test(retryAfterHeader)
1036
974
  ? Number(retryAfterHeader)
1037
975
  : undefined;
1038
- return new DeployApiError(`${serverError !== null && serverError !== void 0 ? serverError : "Rate limited"}${retryAfterSeconds === undefined ? "" : ` — retry in ${retryAfterSeconds}s`}`, 429, retryAfterSeconds);
976
+ return new DeployApiError(`${serverError ?? "Rate limited"}${retryAfterSeconds === undefined ? "" : ` — retry in ${retryAfterSeconds}s`}`, 429, retryAfterSeconds);
1039
977
  }
1040
978
  default:
1041
- return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${(_a = serverError !== null && serverError !== void 0 ? serverError : bodyText.slice(0, 300)) !== null && _a !== void 0 ? _a : "(empty body)"}`, response.status);
979
+ return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${serverError ?? bodyText.slice(0, 300) ?? "(empty body)"}`, response.status);
1042
980
  }
1043
981
  }