@cursor/bdk 0.2.2 → 0.2.3

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 (284) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/bin/agent-serve.js +23 -7
  3. package/dist/channels/github/auth.d.ts.map +1 -1
  4. package/dist/channels/github/auth.js +36 -5
  5. package/dist/connections.d.ts +1 -1
  6. package/dist/connections.js +1 -1
  7. package/dist/docs/404.html +2 -2
  8. package/dist/docs/assets/{app.DtYVVVyK.js → app.BOIHhrKi.js} +4 -4
  9. package/dist/docs/assets/chunks/@localSearchIndexroot.D5L-b34G.js +1 -0
  10. package/dist/docs/assets/chunks/{VPLocalSearchBox.D47xT7J4.js → VPLocalSearchBox.D49zVZqM.js} +1 -1
  11. package/dist/docs/assets/chunks/{arc.CDJ6xzxR.js → arc.hmjb-sc4.js} +1 -1
  12. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.l1Xnjd3N.js → architectureDiagram-Q4EWVU46.CxEI1KqM.js} +1 -1
  13. package/dist/docs/assets/chunks/{baseUniq.x-finShZ.js → baseUniq.DHHvBWoV.js} +1 -1
  14. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.COC3qynH.js → blockDiagram-DXYQGD6D.DnXW-3bu.js} +1 -1
  15. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DdQO850E.js → c4Diagram-AHTNJAMY.e-47O2jM.js} +1 -1
  16. package/dist/docs/assets/chunks/channel.BbOGaJQP.js +1 -0
  17. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dpn8omLk.js → chunk-4BX2VUAB.3ry4pYXB.js} +1 -1
  18. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C0XWStUN.js → chunk-4TB4RGXK.DGIZFRx6.js} +1 -1
  19. package/dist/docs/assets/chunks/{chunk-55IACEB6.DsKSZfIM.js → chunk-55IACEB6.DKBnqg9U.js} +1 -1
  20. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.dNU6JDu6.js → chunk-EDXVE4YY.BIU8Ue5k.js} +1 -1
  21. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DN41fxKE.js → chunk-FMBD7UC4.DP-TFhjI.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.COpKCZus.js → chunk-OYMX7WX6.Ux0OYj5v.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.HDB-azx2.js → chunk-QZHKN3VN.BzHMwYox.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DEeX_a2j.js → chunk-YZCP3GAM.D4OGAsSP.js} +1 -1
  25. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.Db58HCb1.js +1 -0
  26. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.Db58HCb1.js +1 -0
  27. package/dist/docs/assets/chunks/clone.Co4MBflG.js +1 -0
  28. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.C3yGL2A8.js → cose-bilkent-S5V4N54A.Jq_7BUNx.js} +1 -1
  29. package/dist/docs/assets/chunks/{dagre-KV5264BT.Bpl24en4.js → dagre-KV5264BT.Di-skR2x.js} +1 -1
  30. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.nFco6seU.js → diagram-5BDNPKRD.DeREHIdH.js} +1 -1
  31. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DXhA6DWR.js → diagram-G4DWMVQ6.C7Kcqxro.js} +1 -1
  32. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.8GoOYcwk.js → diagram-MMDJMWI5.BK3eohyo.js} +1 -1
  33. package/dist/docs/assets/chunks/{diagram-TYMM5635.DDBlqvlJ.js → diagram-TYMM5635.C6TyymXT.js} +1 -1
  34. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.vl_N81P4.js → erDiagram-SMLLAGMA.DYGG-gGx.js} +1 -1
  35. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.Cteg8g7I.js → flowDiagram-DWJPFMVM.C9nBcSV4.js} +1 -1
  36. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.D4aMhlMM.js → ganttDiagram-T4ZO3ILL.wAg_ymsp.js} +1 -1
  37. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DF_J0D4q.js → gitGraphDiagram-UUTBAWPF.B87j9Oeg.js} +1 -1
  38. package/dist/docs/assets/chunks/{graph.DJs0LDCf.js → graph.CuFMj31w.js} +1 -1
  39. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Bb-4RQwg.js → infoDiagram-42DDH7IO.P_mLGumP.js} +1 -1
  40. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DEtQRSbc.js → ishikawaDiagram-UXIWVN3A.DyuL_MsT.js} +1 -1
  41. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.DhQQ75FA.js → journeyDiagram-VCZTEJTY.CtP09IoJ.js} +1 -1
  42. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.C4gEw3Rk.js → kanban-definition-6JOO6SKY.BoeSYPZo.js} +1 -1
  43. package/dist/docs/assets/chunks/{layout.DT-PGlXa.js → layout.B0lMMtNo.js} +1 -1
  44. package/dist/docs/assets/chunks/{linear.BMMe__JW.js → linear.HxRBiAFX.js} +1 -1
  45. package/dist/docs/assets/chunks/{min.XyaU9K9Q.js → min.BGlFFHwS.js} +1 -1
  46. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CbBM6xZ-.js → mindmap-definition-QFDTVHPH.JyLBD9M8.js} +1 -1
  47. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DFJoIVou.js → pieDiagram-DEJITSTG.DnSmNZF8.js} +1 -1
  48. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CQjkDYqb.js → quadrantDiagram-34T5L4WZ.CUCnbfCa.js} +1 -1
  49. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.D-mK-JQu.js → requirementDiagram-MS252O5E.py0IVUn5.js} +1 -1
  50. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BStQInpd.js → sankeyDiagram-XADWPNL6.Bkc-HWYp.js} +1 -1
  51. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.CA_eooPJ.js → sequenceDiagram-FGHM5R23.Dqn8Mlv2.js} +1 -1
  52. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BXl-b7ad.js → stateDiagram-FHFEXIEX.JikkoQUU.js} +1 -1
  53. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CMsKhrW0.js +1 -0
  54. package/dist/docs/assets/chunks/{theme.q37tOs4x.js → theme.b6HQ6zG_.js} +2 -2
  55. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.vjuaGOSe.js → timeline-definition-GMOUNBTQ.BvpSXiBj.js} +1 -1
  56. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BxduJl-F.js → vennDiagram-DHZGUBPP.CU7MVnZx.js} +1 -1
  57. package/dist/docs/assets/chunks/wardley-RL74JXVD.BKwC4ctG.js +162 -0
  58. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D1z3ds0D.js → wardleyDiagram-NUSXRM2D.BfaF6Uhe.js} +1 -1
  59. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CRU5Ti9b.js → xychartDiagram-5P7HB3ND.Bg5dcpj4.js} +1 -1
  60. package/dist/docs/assets/{deployment.md.nGo1yIsa.js → deployment.md.BJ8i7Q6p.js} +5 -8
  61. package/dist/docs/assets/{deployment.md.nGo1yIsa.lean.js → deployment.md.BJ8i7Q6p.lean.js} +1 -1
  62. package/dist/docs/assets/{guides_github.md.C2_DSWlE.js → guides_github.md.Bq9kQU9B.js} +9 -3
  63. package/dist/docs/assets/{guides_github.md.C2_DSWlE.lean.js → guides_github.md.Bq9kQU9B.lean.js} +1 -1
  64. package/dist/docs/assets/{guides_slack.md.ZbHQETOT.js → guides_slack.md.diqqXTTm.js} +2 -2
  65. package/dist/docs/assets/{guides_slack.md.ZbHQETOT.lean.js → guides_slack.md.diqqXTTm.lean.js} +1 -1
  66. package/dist/docs/assets/{quickstart.md.wG4shE1f.js → quickstart.md.CHpHPBUN.js} +5 -3
  67. package/dist/docs/assets/{quickstart.md.wG4shE1f.lean.js → quickstart.md.CHpHPBUN.lean.js} +1 -1
  68. package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.js → reference_artifacts.md.CQfKq8F2.js} +1 -1
  69. package/dist/docs/assets/reference_cli.md.DgeLTO18.js +91 -0
  70. package/dist/docs/assets/reference_cli.md.DgeLTO18.lean.js +1 -0
  71. package/dist/docs/assets/{reference_connections.md._XpKiOaF.js → reference_connections.md.COq--gAm.js} +7 -3
  72. package/dist/docs/assets/{reference_connections.md._XpKiOaF.lean.js → reference_connections.md.COq--gAm.lean.js} +1 -1
  73. package/dist/docs/assets/{reference_evals.md.DqNyHMA6.js → reference_evals.md.CJm3uCUm.js} +4 -4
  74. package/dist/docs/assets/{reference_evals.md.DqNyHMA6.lean.js → reference_evals.md.CJm3uCUm.lean.js} +1 -1
  75. package/dist/docs/assets/{reference_skills.md.CRFTxt9M.js → reference_skills.md.Cy00QMKS.js} +3 -3
  76. package/dist/docs/assets/{reference_skills.md.CRFTxt9M.lean.js → reference_skills.md.Cy00QMKS.lean.js} +1 -1
  77. package/dist/docs/assets/troubleshooting.md.Cw5PKa3t.js +1 -0
  78. package/dist/docs/assets/{troubleshooting.md.BzZSu1Gz.lean.js → troubleshooting.md.Cw5PKa3t.lean.js} +1 -1
  79. package/dist/docs/building-with-agents.html +35 -35
  80. package/dist/docs/deployment.html +40 -43
  81. package/dist/docs/deployment.md +45 -15
  82. package/dist/docs/evals.html +35 -35
  83. package/dist/docs/guides/agent-to-agent.html +35 -35
  84. package/dist/docs/guides/bitbucket.html +35 -35
  85. package/dist/docs/guides/cloud-agents.html +35 -35
  86. package/dist/docs/guides/convert-automation.html +35 -35
  87. package/dist/docs/guides/github.html +43 -37
  88. package/dist/docs/guides/github.md +34 -0
  89. package/dist/docs/guides/gitlab.html +35 -35
  90. package/dist/docs/guides/grokbot-agents.html +35 -35
  91. package/dist/docs/guides/hooks.html +35 -35
  92. package/dist/docs/guides/improve.html +35 -35
  93. package/dist/docs/guides/jev.html +35 -35
  94. package/dist/docs/guides/mcp-oauth.html +35 -35
  95. package/dist/docs/guides/opentelemetry.html +35 -35
  96. package/dist/docs/guides/slack.html +37 -37
  97. package/dist/docs/guides/slack.md +5 -0
  98. package/dist/docs/guides/webhooks.html +35 -35
  99. package/dist/docs/hashmap.json +1 -1
  100. package/dist/docs/hillclimbing.html +35 -35
  101. package/dist/docs/index.html +35 -35
  102. package/dist/docs/llms-full.txt +198 -92
  103. package/dist/docs/quickstart.html +40 -38
  104. package/dist/docs/quickstart.md +7 -1
  105. package/dist/docs/reference/agent-config.html +35 -35
  106. package/dist/docs/reference/artifacts.html +37 -37
  107. package/dist/docs/reference/artifacts.md +1 -1
  108. package/dist/docs/reference/channels.html +35 -35
  109. package/dist/docs/reference/cli.html +55 -61
  110. package/dist/docs/reference/cli.md +65 -63
  111. package/dist/docs/reference/connections.html +42 -38
  112. package/dist/docs/reference/connections.md +28 -2
  113. package/dist/docs/reference/evals.html +39 -39
  114. package/dist/docs/reference/evals.md +6 -7
  115. package/dist/docs/reference/extensions.html +35 -35
  116. package/dist/docs/reference/hooks.html +35 -35
  117. package/dist/docs/reference/http-api.html +35 -35
  118. package/dist/docs/reference/instructions.html +35 -35
  119. package/dist/docs/reference/playground.html +35 -35
  120. package/dist/docs/reference/project-layout.html +35 -35
  121. package/dist/docs/reference/prompt.html +35 -35
  122. package/dist/docs/reference/schedules.html +35 -35
  123. package/dist/docs/reference/sessions.html +35 -35
  124. package/dist/docs/reference/skills.html +38 -38
  125. package/dist/docs/reference/subagents.html +35 -35
  126. package/dist/docs/reference/tools.html +35 -35
  127. package/dist/docs/templates/agentic-owners.html +35 -35
  128. package/dist/docs/templates/security-reviewer.html +35 -35
  129. package/dist/docs/templates/thermo-quality-review.html +35 -35
  130. package/dist/docs/templates/thermo-review.html +35 -35
  131. package/dist/docs/templates/triage.html +35 -35
  132. package/dist/docs/troubleshooting.html +36 -36
  133. package/dist/docs/troubleshooting.md +7 -3
  134. package/dist/extensions/cursor-grokbot-agents/extension.d.ts +77 -0
  135. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -0
  136. package/dist/extensions/cursor-grokbot-agents/extension.js +63 -0
  137. package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts +11 -0
  138. package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts.map +1 -0
  139. package/dist/extensions/cursor-grokbot-agents/lib/agents.js +31 -0
  140. package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts +56 -0
  141. package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts.map +1 -0
  142. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +158 -0
  143. package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts +28 -0
  144. package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts.map +1 -0
  145. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +59 -0
  146. package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts +53 -0
  147. package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts.map +1 -0
  148. package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +206 -0
  149. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +4 -0
  150. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -0
  151. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +15 -0
  152. package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts +12 -0
  153. package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts.map +1 -0
  154. package/dist/extensions/cursor-grokbot-agents/lib/lock.js +25 -0
  155. package/dist/extensions/cursor-grokbot-agents/skills/consult.md +40 -0
  156. package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts +4 -0
  157. package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts.map +1 -0
  158. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +37 -0
  159. package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts +4 -0
  160. package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts.map +1 -0
  161. package/dist/extensions/cursor-grokbot-agents/tools/check.js +32 -0
  162. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts +4 -0
  163. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts.map +1 -0
  164. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +24 -0
  165. package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts +4 -0
  166. package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts.map +1 -0
  167. package/dist/extensions/cursor-grokbot-agents/tools/list.js +34 -0
  168. package/dist/internal/cli-ax.d.ts +1 -0
  169. package/dist/internal/cli-ax.d.ts.map +1 -1
  170. package/dist/internal/cli-ax.js +43 -10
  171. package/dist/internal/cli-deploy.d.ts +5 -1
  172. package/dist/internal/cli-deploy.d.ts.map +1 -1
  173. package/dist/internal/cli-deploy.js +22 -4
  174. package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
  175. package/dist/internal/cli-mcp-oauth.js +2 -1
  176. package/dist/internal/cli-skills.d.ts +1 -1
  177. package/dist/internal/cli-skills.d.ts.map +1 -1
  178. package/dist/internal/cli-skills.js +5 -5
  179. package/dist/internal/connection-env.d.ts +31 -0
  180. package/dist/internal/connection-env.d.ts.map +1 -0
  181. package/dist/internal/connection-env.js +84 -0
  182. package/dist/internal/cursor/backend-client.js +5 -0
  183. package/dist/internal/deploy-client.d.ts +30 -6
  184. package/dist/internal/deploy-client.d.ts.map +1 -1
  185. package/dist/internal/deploy-client.js +45 -9
  186. package/dist/internal/discovery/connections.d.ts.map +1 -1
  187. package/dist/internal/discovery/connections.js +11 -0
  188. package/dist/internal/hosted-delivery-protocol.d.ts +36 -11
  189. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  190. package/dist/internal/hosted-delivery-protocol.js +31 -8
  191. package/dist/internal/hosted-delivery.d.ts +2 -2
  192. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  193. package/dist/internal/hosted-delivery.js +228 -48
  194. package/dist/internal/hosting.d.ts +2 -2
  195. package/dist/internal/hosting.d.ts.map +1 -1
  196. package/dist/internal/hosting.js +9 -3
  197. package/dist/internal/install-cursor-skills.d.ts +20 -24
  198. package/dist/internal/install-cursor-skills.d.ts.map +1 -1
  199. package/dist/internal/install-cursor-skills.js +50 -48
  200. package/dist/internal/legacy-command-guard.d.ts +2 -0
  201. package/dist/internal/legacy-command-guard.d.ts.map +1 -1
  202. package/dist/internal/legacy-command-guard.js +10 -1
  203. package/dist/internal/mcp-host.d.ts +6 -0
  204. package/dist/internal/mcp-host.d.ts.map +1 -1
  205. package/dist/internal/mcp-host.js +35 -16
  206. package/dist/internal/sdk-runner.d.ts +2 -0
  207. package/dist/internal/sdk-runner.d.ts.map +1 -1
  208. package/dist/internal/sdk-runner.js +10 -0
  209. package/dist/internal/server.d.ts.map +1 -1
  210. package/dist/internal/server.js +11 -1
  211. package/dist/internal/session-engine.d.ts.map +1 -1
  212. package/dist/internal/session-engine.js +9 -5
  213. package/dist/types.d.ts +11 -1
  214. package/dist/types.d.ts.map +1 -1
  215. package/docs/deployment.md +45 -15
  216. package/docs/guides/github.md +34 -0
  217. package/docs/guides/slack.md +5 -0
  218. package/docs/quickstart.md +7 -1
  219. package/docs/reference/artifacts.md +1 -1
  220. package/docs/reference/cli.md +65 -63
  221. package/docs/reference/connections.md +28 -2
  222. package/docs/reference/evals.md +6 -7
  223. package/docs/troubleshooting.md +7 -3
  224. package/package.json +1 -3
  225. package/scripts/install-cursor-skills.mjs +1 -1
  226. package/skills/create-agent/SKILL.md +1 -1
  227. package/skills/debug/SKILL.md +1 -1
  228. package/skills/deploy/SKILL.md +1 -1
  229. package/skills/evals/SKILL.md +1 -1
  230. package/skills/framework-map/SKILL.md +1 -1
  231. package/skills/github/SKILL.md +1 -1
  232. package/skills/hillclimb/SKILL.md +1 -1
  233. package/skills/mcp-auth/SKILL.md +1 -1
  234. package/skills/otel/SKILL.md +1 -1
  235. package/skills/setup-slack/SKILL.md +1 -1
  236. package/src/bin/agent-serve.ts +27 -6
  237. package/src/channels/github/auth.ts +44 -5
  238. package/src/connections.ts +1 -1
  239. package/src/extensions/cursor-grokbot-agents/extension.ts +132 -0
  240. package/src/extensions/cursor-grokbot-agents/lib/agents.ts +42 -0
  241. package/src/extensions/cursor-grokbot-agents/lib/backend.ts +208 -0
  242. package/src/extensions/cursor-grokbot-agents/lib/contacts.ts +74 -0
  243. package/src/extensions/cursor-grokbot-agents/lib/conversation.ts +260 -0
  244. package/src/extensions/cursor-grokbot-agents/lib/inputs.ts +21 -0
  245. package/src/extensions/cursor-grokbot-agents/lib/lock.ts +26 -0
  246. package/src/extensions/cursor-grokbot-agents/skills/consult.md +40 -0
  247. package/src/extensions/cursor-grokbot-agents/tools/ask.ts +32 -0
  248. package/src/extensions/cursor-grokbot-agents/tools/check.ts +25 -0
  249. package/src/extensions/cursor-grokbot-agents/tools/interrupt.ts +17 -0
  250. package/src/extensions/cursor-grokbot-agents/tools/list.ts +26 -0
  251. package/src/internal/cli-ax.ts +52 -7
  252. package/src/internal/cli-deploy.ts +39 -6
  253. package/src/internal/cli-mcp-oauth.ts +2 -1
  254. package/src/internal/cli-skills.ts +4 -5
  255. package/src/internal/connection-env.ts +106 -0
  256. package/src/internal/cursor/backend-client.ts +6 -0
  257. package/src/internal/deploy-client.ts +79 -9
  258. package/src/internal/discovery/connections.ts +11 -0
  259. package/src/internal/hosted-delivery-protocol.ts +57 -20
  260. package/src/internal/hosted-delivery.ts +486 -228
  261. package/src/internal/hosting.ts +10 -3
  262. package/src/internal/install-cursor-skills.ts +56 -53
  263. package/src/internal/legacy-command-guard.ts +13 -1
  264. package/src/internal/mcp-host.ts +45 -17
  265. package/src/internal/sdk-runner.ts +11 -0
  266. package/src/internal/server.ts +13 -1
  267. package/src/internal/session-engine.ts +9 -5
  268. package/src/types.ts +11 -1
  269. package/templates/agents-md/bot/lib/collect.ts +1 -4
  270. package/templates/code-wiki/bot/channels/github.ts +2 -2
  271. package/templates/demo/bot/channels/github.ts +5 -1
  272. package/templates/pr-autofixer/bot/lib/start-drive.ts +4 -4
  273. package/templates/triage/bot/lib/types.ts +6 -6
  274. package/dist/docs/assets/chunks/@localSearchIndexroot.BgTA2tV1.js +0 -1
  275. package/dist/docs/assets/chunks/channel.B2nMEx82.js +0 -1
  276. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D8iCH2ve.js +0 -1
  277. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D8iCH2ve.js +0 -1
  278. package/dist/docs/assets/chunks/clone.5XNLjby0.js +0 -1
  279. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.yGM2uLZQ.js +0 -1
  280. package/dist/docs/assets/chunks/wardley-RL74JXVD.DKfyIejL.js +0 -162
  281. package/dist/docs/assets/reference_cli.md.BK2QUH67.js +0 -97
  282. package/dist/docs/assets/reference_cli.md.BK2QUH67.lean.js +0 -1
  283. package/dist/docs/assets/troubleshooting.md.BzZSu1Gz.js +0 -1
  284. /package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.lean.js → reference_artifacts.md.CQfKq8F2.lean.js} +0 -0
@@ -232,24 +232,55 @@ values without echoing them; `secrets list` returns names and creation
232
232
  times only. Do not pass `NAME=VALUE`, print a secret to verify it, or
233
233
  put names beginning with reserved `CURSOR_` in `secretNames`.
234
234
 
235
- Enter egress hosts without schemes, ports, or paths. The
235
+ A hosted deployment receives its secrets per request, after its modules
236
+ are loaded, so code that reads `process.env` while a module is still
237
+ loading sees nothing. Read a secret inside the handler, tool, or callback
238
+ that needs it, and give an MCP connection its credential as a `${NAME}`
239
+ template, which resolves when the connection opens. See
240
+ [credentials in headers and env](/docs/reference/connections.md#credentials-in-headers-and-env).
241
+
242
+ Enter egress hosts without schemes or paths. An HTTPS host needs no port;
243
+ add one, as `clickhouse.example.com:9440`, only for a protocol the proxy
244
+ reads no hostname from. The
236
245
  [Host MCP OAuth guide](/docs/guides/mcp-oauth.md) owns the extra secret and
237
246
  egress steps for OAuth-backed MCP servers.
238
247
 
239
248
  ## Use the hosted agent
240
249
 
241
- The `--prod` commands authenticate through your Cursor credential and
242
- connect to the deployment directly. Open the playground, run a turn,
243
- then inspect the same session in logs.
250
+ ### Verify a hosted turn
251
+
252
+ Start a turn on the deployment:
244
253
 
245
254
  ```text
246
- bdk playground --prod --slug weather-agent
247
255
  bdk run --prod --slug weather-agent \
248
256
  --message "Forecast for Paris"
249
- bdk logs --prod --slug weather-agent
250
- bdk deployment weather-agent
251
257
  ```
252
258
 
259
+ The command returns as soon as the deployment accepts the turn, so the output
260
+ has a `deliveryId` but no `sessionId` yet. That's expected, with or without
261
+ `--dry-run`. Open the deployment from **Deployed Agents** in the
262
+ [dashboard](https://cursor.com/dashboard) and select **Sessions** to find the
263
+ new session's `ses_...` ID.
264
+
265
+ Check the session from the CLI:
266
+
267
+ ```text
268
+ bdk session ses_... --prod --slug weather-agent
269
+ ```
270
+
271
+ While the turn runs, the command reports how many events have arrived and
272
+ prints `Turn running; runs may lag behind events.` Rerun it until the latest
273
+ run shows a final status such as `finished`. High-effort turns can take about
274
+ eight minutes, and runs can stay empty until the turn ends, so a growing event
275
+ count is the progress signal. Escalate only when no new events arrive for about
276
+ two to three minutes.
277
+
278
+ Hosted deployments don't support `bdk call` or `bdk sessions`, so use
279
+ `bdk run --prod` and `bdk session` instead. Dashboard links to a single session
280
+ may not open yet, so confirm the result with `bdk session`.
281
+
282
+ ### Call the hosted HTTP API
283
+
253
284
  External HTTP clients use the stable alias URL and send the alias token
254
285
  on every request:
255
286
 
@@ -280,13 +311,12 @@ the new generation replaces the previous one.
280
311
  bdk deploy --dir . --slug weather-agent
281
312
  ```
282
313
 
283
- A redeploy replaces its source, Cursor-event repository list, and any
284
- egress domains supplied through CLI flags. Repass
285
- `--cursor-events-repo` and other CLI-only settings each time. Keep
286
- source-controlled egress in the `hosting` block when possible.
314
+ A redeploy replaces its source, its watched repositories, and any egress
315
+ domains supplied through CLI flags. Pass every `--cursor-events-repo` value
316
+ again; without the flag, the deployment watches its GitHub source repository.
317
+ Keep source-controlled egress in the `hosting` block when possible.
287
318
 
288
- Use `bdk deployment weather-agent` and
289
- `bdk logs --prod --slug weather-agent` to inspect a rollout.
319
+ Use `bdk deployment weather-agent` to inspect a rollout.
290
320
  The [CLI reference](/docs/reference/cli.md#deploy) owns `--no-wait`,
291
321
  multi-agent deployment, stop, and delete behavior.
292
322
 
@@ -341,10 +371,10 @@ per-caller and channel-specific auth.
341
371
 
342
372
  ## Observability
343
373
 
344
- Use `bdk logs --prod` for runtime output,
374
+ Use `bdk session <sessionId> --prod` for a hosted session's runs and logs,
345
375
  [OpenTelemetry](/docs/guides/opentelemetry.md) for traces and metrics, and
346
376
  [session traces](/docs/reference/sessions.md#inspect-a-saved-event-stream)
347
- for one conversation.
377
+ for a local conversation.
348
378
 
349
379
  ## Related
350
380
 
@@ -1553,6 +1583,40 @@ Each hook returns one of three outcomes:
1553
1583
 
1554
1584
  [Channels](/docs/reference/channels.md) covers the shared session behavior.
1555
1585
 
1586
+ ## Choose watched repositories
1587
+
1588
+ The examples above list their repositories in the channel with
1589
+ `cursorAccount: { repos: [...] }`. A hosted deployment receives events for the
1590
+ repositories set at deploy time, so pass each one to `bdk deploy`:
1591
+
1592
+ ```text
1593
+ bdk deploy --dir . --cursor-events-repo acme/checkout
1594
+ ```
1595
+
1596
+ To keep the list out of source, set `cursorAccount: true` and pass the
1597
+ repositories on the command line instead. `bdk serve` takes repeatable
1598
+ `--repo` flags:
1599
+
1600
+ ```ts
1601
+ export default githubChannel({
1602
+ cursorAccount: true,
1603
+ });
1604
+ ```
1605
+
1606
+ ```text
1607
+ bdk serve --dir . --cursor-events \
1608
+ --repo acme/checkout --repo acme/payments
1609
+ bdk deploy --dir . \
1610
+ --cursor-events-repo acme/checkout \
1611
+ --cursor-events-repo acme/payments
1612
+ ```
1613
+
1614
+ The `--cursor-events-repo` flags on a deploy form its complete list and
1615
+ replace the previous one, so pass every repository on each redeploy. A deploy
1616
+ without the flag watches the agent's GitHub source repository instead. Use
1617
+ [`bdk event-repos`](/docs/reference/cli.md#event-repos) to change or clear the
1618
+ list without redeploying.
1619
+
1556
1620
  ## PR and agent affinity
1557
1621
 
1558
1622
  Every wake for the same repo and PR number resumes the same session. The
@@ -3254,6 +3318,11 @@ the browser and writes the resulting tokens to `.env.local` without
3254
3318
  printing them. You can open the same wizard from **Integrations** on
3255
3319
  [Deployed Agents](https://cursor.com/dashboard).
3256
3320
 
3321
+ If Slack requires workspace-admin approval, keep `slack create` running and
3322
+ open the **Request approval** link printed by the CLI. Installing from the
3323
+ dashboard doesn't send that request for you. After an admin approves it,
3324
+ return to the dashboard's **Add Slack** wizard and select **Retry**.
3325
+
3257
3326
  If you already own the Slack app, initialize it with
3258
3327
  `bdk slack init --manual --dir . --name "Triage"` and follow the
3259
3328
  [Slack setup skill](https://github.com/cursor/cursor/blob/main/packages/agent-serve/skills/setup-slack/SKILL.md) for installation
@@ -4063,12 +4132,18 @@ export default githubChannel({
4063
4132
  return {
4064
4133
  auth: defaultGitHubAuth(ctx),
4065
4134
  title: `Review ${ctx.repository.fullName}#${pr.number}`,
4066
- context: `Review ${pr.url}. Inspect it first, then submit your verdict with submit_review.`,
4135
+ context: [
4136
+ `Review ${pr.url}. Inspect it first, then submit your verdict with submit_review.`,
4137
+ ],
4067
4138
  };
4068
4139
  },
4069
4140
  });
4070
4141
  ```
4071
4142
 
4143
+ Channel-turn `context` is a `readonly string[]`, so wrap each context block in
4144
+ an array. The `context` label under `progress.commitStatus` is a separate
4145
+ string option.
4146
+
4072
4147
  Keep `bdk dev` running. In a second terminal, replay an open pull
4073
4148
  request. Pull access is enough; repo admin isn't required:
4074
4149
 
@@ -4335,7 +4410,7 @@ export default defineArtifacts({
4335
4410
  | --- | --- |
4336
4411
  | `kinds` | Map of accepted kind names to a non-empty `description` and optional Zod `schema` |
4337
4412
  | `agentTool` | Expose `tag_artifact` to the model; requires at least one declared kind |
4338
- | `max` | Positive retention cap, default `1000`. Architecture v1 and self-hosted v2 evict the oldest-updated record. Hosted architecture v2 does not evict |
4413
+ | `max` | Positive retention cap, default `1000`. Local and self-hosted servers evict the oldest-updated record; hosted deployments don't evict. |
4339
4414
 
4340
4415
  With declared kinds, `tag` rejects any other kind. With no registry, it
4341
4416
  accepts free-form kind names and defaults an omitted kind to
@@ -4674,12 +4749,12 @@ provide their own `help` subcommands.
4674
4749
  | --- | --- |
4675
4750
  | [`chat`](#chat) | Talk to a running agent |
4676
4751
  | [`resume`](#resume) | Reattach chat to a previous session |
4677
- | [`run`](#run) | Start or continue work on a local, running, or managed agent |
4752
+ | [`run`](#run) | Start or continue work on a local, running, or hosted agent |
4678
4753
  | [`call`](#call) | Call a server tool without a model turn |
4679
4754
  | [`skill`](#skill) | Read an authored skill without a model turn |
4680
4755
  | [`logs`](#logs) | Follow or dump agent logs |
4681
4756
  | [`sessions`](#sessions) | List sessions |
4682
- | [`session`](#session) | Inspect a session or start a managed session turn |
4757
+ | [`session`](#session) | Inspect a session or start a hosted session turn |
4683
4758
  | [`cost`](#cost) | Report token usage and estimated cost |
4684
4759
  | [`playground`](#playground) | Open an agent's playground |
4685
4760
  | [`trajectory`](#trajectory) | Summarize a saved event stream |
@@ -4694,8 +4769,8 @@ provide their own `help` subcommands.
4694
4769
  | [`deployment`](#deployment) | Inspect one deployment |
4695
4770
  | [`stop`](#stop) | Stop a deployment |
4696
4771
  | [`cancel-runs`](#cancel-runs) | Cancel active runs and reminder wakes |
4697
- | [`event-repos`](#event-repos) | Replace a managed application's event repositories |
4698
- | [`upgrade`](#upgrade) | Move a managed application to a release |
4772
+ | [`event-repos`](#event-repos) | Replace a deployment's event repositories |
4773
+ | [`upgrade`](#upgrade) | Move a deployment to a release |
4699
4774
  | [`delete`](#delete) | Delete a deployment |
4700
4775
  | [`rotate-token`](#rotate-token) | Replace a deployment's alias token |
4701
4776
  | [`secrets`](#secrets) | Set, list, or remove deployment secrets |
@@ -4721,8 +4796,7 @@ Commands that send requests support these targets:
4721
4796
  | Ephemeral local server | Omit `--url` and `--prod` | `run`, `call`, `skill`, `eval` |
4722
4797
  | Running server | Pass `--url <baseUrl>` | `chat`, `resume`, `run`, `call`, `skill`, `eval`, `logs`, `sessions`, `session`, `cost`, `playground`, `mcp` |
4723
4798
  | Default local server | Omit `--url` and `--prod`; uses `http://127.0.0.1:3000` | `chat`, `resume`, `logs`, `sessions`, `session`, `cost`, `playground` |
4724
- | Hosted deployment | Pass `--prod` | `chat`, `resume`, `run`, `call`, `skill`, `eval`, `logs`, `sessions`, `session`, `cost`, `playground`, `mcp` |
4725
- | Managed application | Pass `--prod` | `run`, `session` |
4799
+ | Hosted deployment | Pass `--prod` | `run`, `session`, `playground` |
4726
4800
 
4727
4801
  An explicit `--url` must include the slug for a multi-agent server, such as
4728
4802
  `http://127.0.0.1:3000/pr-approver`. `--slug` never changes an explicit URL.
@@ -4732,7 +4806,7 @@ An explicit `--url` must include the slug for a multi-agent server, such as
4732
4806
  | --- | --- |
4733
4807
  | `--dir <path>` | Select the project root. The default is the current directory. |
4734
4808
  | `--url <baseUrl>` | Use a running agent instead of local project discovery. |
4735
- | `--prod` | Use a hosted deployment or managed application. Command support depends on the target type as listed above. |
4809
+ | `--prod` | Use the hosted deployment. Only `run`, `session`, and `playground` accept it. |
4736
4810
  | `--slug <slug>` | Select an agent from a multi-agent project or a hosted resource. Under `--prod`, the default is the `--dir` basename. |
4737
4811
  | `--team <id>` | Select a Cursor team. The signed-in account's team is the default. |
4738
4812
  | `--api-key <key>` | Override the Cursor credential for commands that authenticate with Cursor. |
@@ -4810,9 +4884,9 @@ prints the URL without opening a browser.
4810
4884
  `chat` connects to a running server and never starts an ephemeral one:
4811
4885
 
4812
4886
  ```text
4813
- bdk chat [--url <baseUrl> | --prod] [--message <text>]
4887
+ bdk chat [--url <baseUrl>] [--message <text>]
4814
4888
  [--session <id> | --resume] [--continuation-token <token>]
4815
- [--slug <slug>] [--team <id>] [--json] [--text] [--no-color]
4889
+ [--slug <slug>] [--json] [--text] [--no-color]
4816
4890
  ```
4817
4891
 
4818
4892
  | Input mode | Behavior |
@@ -4834,9 +4908,9 @@ token. An explicit session ID takes precedence.
4834
4908
  `resume` provides the same reattachment contract as `chat --session`:
4835
4909
 
4836
4910
  ```text
4837
- bdk resume [sessionId] [--url <baseUrl> | --prod]
4911
+ bdk resume [sessionId] [--url <baseUrl>]
4838
4912
  [--message <text>] [--json] [--text]
4839
- [--continuation-token <token>] [--slug <slug>] [--team <id>]
4913
+ [--continuation-token <token>] [--slug <slug>]
4840
4914
  ```
4841
4915
 
4842
4916
  Omit the session ID to select the most recently updated followable session.
@@ -4858,27 +4932,28 @@ bdk run [--dir <path>] [--message <text>]...
4858
4932
 
4859
4933
  | Option | Contract |
4860
4934
  | --- | --- |
4861
- | `--message <text>` | Send a user message. Repeat it for a multi-turn local or `--url` run. Managed starts accept one message. |
4935
+ | `--message <text>` | Send a user message. Repeat it for a multi-turn local or `--url` run. `--prod` starts accept one message. |
4862
4936
  | `--messages-file <path>` | Read a JSON array of strings. File messages run before repeated `--message` values. |
4863
- | `--session <id>` | Continue a session. Managed session starts accept a hosted `ses_...` ID. |
4864
- | `--continuation-token <token>` | Continue the session selected by `--session` on a running server. Managed session starts use `--session` instead. |
4937
+ | `--session <id>` | Continue a session. With `--prod`, pass a hosted `ses_...` ID. |
4938
+ | `--continuation-token <token>` | Continue the session selected by `--session` on a running server. `--prod` starts use `--session` instead. |
4865
4939
  | `--events <file>` | Write the raw NDJSON stream to this path. |
4866
4940
  | `--no-events` | Skip the NDJSON trace. |
4867
4941
  | `--text` | Print a compact trajectory instead of JSON. |
4868
4942
  | `--timeout-ms <n>` | Stop waiting after a positive number of milliseconds. There is no default timeout. |
4869
4943
  | `--no-stream` | Hide live tool and reply progress on stderr. |
4870
- | `--dry-run` | Mark a managed session turn as non-mutating. |
4871
- | `--as-of <instant>` | Freeze a managed session's clock at a timezone-bearing ISO-8601 instant. |
4872
- | `--component <key>` | Select a managed application's component instead of its default. |
4944
+ | `--dry-run` | Mark a `--prod` turn as non-mutating. |
4945
+ | `--as-of <instant>` | Freeze a `--prod` session's clock at a timezone-bearing ISO-8601 instant. |
4946
+ | `--component <key>` | Select a hosted deployment's component instead of its default. |
4873
4947
 
4874
4948
  For local and running-server targets, JSON output contains `ok`, `sessionId`,
4875
4949
  `continuationToken`, `trace`, `playgroundUrl`, `playgroundHint`, `visualize`,
4876
4950
  and `trajectory`. The `trace` value gives the saved path when event output is
4877
- enabled. A managed session start confirms acceptance; a continuation also
4878
- returns `sessionId`. Managed starts return before the turn finishes and ignore
4879
- `--events`, `--no-events`, `--text`, `--timeout-ms`, and `--no-stream`.
4880
- A successful managed start exits `0` on acceptance, before its turn outcome is
4881
- known. A fresh start doesn't return `sessionId` synchronously.
4951
+ enabled. With `--prod`, `run` prints a `deliveryId` when the deployment accepts
4952
+ the turn and returns before the turn finishes. A fresh start has no
4953
+ `sessionId` yet, even with `--dry-run`; a continuation includes it. `--prod`
4954
+ starts ignore `--events`, `--no-events`, `--text`, `--timeout-ms`, and
4955
+ `--no-stream`, and a successful start exits `0` before the turn outcome is
4956
+ known. See [Verify a hosted turn](/docs/deployment.md#verify-a-hosted-turn).
4882
4957
 
4883
4958
  ### Call a tool {#call}
4884
4959
 
@@ -4886,8 +4961,8 @@ known. A fresh start doesn't return `sessionId` synchronously.
4886
4961
 
4887
4962
  ```text
4888
4963
  bdk call <tool> [--input <json>]
4889
- [--dir <path> | --url <baseUrl> | --prod]
4890
- [--session <id>] [--slug <slug>] [--team <id>]
4964
+ [--dir <path> | --url <baseUrl>]
4965
+ [--session <id>] [--slug <slug>]
4891
4966
  ```
4892
4967
 
4893
4968
  `--input` accepts JSON and defaults to `{}`. `--session` uses the session
@@ -4895,6 +4970,9 @@ workspace and records the call on its event stream. The command prints the
4895
4970
  server's JSON response and succeeds only when the HTTP response succeeds with
4896
4971
  `ok: true`.
4897
4972
 
4973
+ Hosted deployments don't support `call`. Start a model turn with `run --prod`
4974
+ and check it with [`session`](#session).
4975
+
4898
4976
  See [Tools](/docs/reference/tools.md#call-a-tool-without-a-model-turn) for validation,
4899
4977
  busy-session behavior, and error codes.
4900
4978
 
@@ -4903,8 +4981,8 @@ busy-session behavior, and error codes.
4903
4981
  `skill` reads an authored skill without a model turn:
4904
4982
 
4905
4983
  ```text
4906
- bdk skill <name> [--dir <path> | --url <baseUrl> | --prod]
4907
- [--slug <slug>] [--team <id>] [--text]
4984
+ bdk skill <name> [--dir <path> | --url <baseUrl>]
4985
+ [--slug <slug>] [--text]
4908
4986
  ```
4909
4987
 
4910
4988
  The default output is the server's JSON response. `--text` prints the rendered
@@ -4913,14 +4991,18 @@ The default output is the server's JSON response. `--text` prints the rendered
4913
4991
  ### List sessions {#sessions}
4914
4992
 
4915
4993
  ```text
4916
- bdk sessions [--url <baseUrl> | --prod]
4917
- [--slug <slug>] [--team <id>] [--bearer-token <token>] [--json]
4994
+ bdk sessions [--url <baseUrl>]
4995
+ [--slug <slug>] [--bearer-token <token>] [--json]
4918
4996
  ```
4919
4997
 
4920
4998
  Text output shows the session ID, channel, mode, turn count, running status,
4921
4999
  and update time. `--json` prints `{ sessions }`, including continuation
4922
5000
  tokens.
4923
5001
 
5002
+ Hosted deployments don't support `sessions`. Find a hosted session in the
5003
+ deployment's **Sessions** list in the dashboard, then check it with
5004
+ [`session <sessionId> --prod`](#session).
5005
+
4924
5006
  ### Inspect a session {#session}
4925
5007
 
4926
5008
  ```text
@@ -4939,29 +5021,31 @@ bdk session --prod [<sessionId>] --slug <slug> --message <text>
4939
5021
  | `--json` | Print the trajectory object. |
4940
5022
  | `--events` | Print `{ sessionId, events }` with the raw event list. |
4941
5023
  | `--out <file.ndjson>` | Write the raw NDJSON trace instead of printing it. |
4942
- | `--prod --message <text>` | Start a managed session or continue the supplied managed session ID. |
5024
+ | `--prod --message <text>` | Start a hosted session or continue the supplied hosted session ID. |
4943
5025
 
4944
- `--events` and `--json` are mutually exclusive. Managed sessions without an
4945
- event trajectory return hosted execution status and logs in text or JSON;
4946
- `--events` and `--out` require an event trajectory. Use [`resume`](#resume) to
4947
- continue a conversational session.
5026
+ `--events` and `--json` are mutually exclusive. With `--prod`, the command
5027
+ prints the session's runs and logs in text or JSON, and `--events` and `--out`
5028
+ aren't available. While a hosted turn is running, text output also reports the
5029
+ event count so far and prints `Turn running; runs may lag behind events.` Use
5030
+ [`resume`](#resume) to continue a conversational session.
4948
5031
 
4949
5032
  ### Follow logs {#logs}
4950
5033
 
4951
5034
  ```text
4952
- bdk logs [--url <baseUrl> | --prod]
4953
- [--slug <slug>] [--team <id>] [--once] [--json]
5035
+ bdk logs [--url <baseUrl>]
5036
+ [--slug <slug>] [--once] [--json]
4954
5037
  ```
4955
5038
 
4956
5039
  The command follows logs until Ctrl-C. `--once` prints the current buffer and
4957
- exits; `--json` emits newline-delimited JSON events. A hosted deployment
4958
- reports deployment progress before runtime logs become available.
5040
+ exits; `--json` emits newline-delimited JSON events. For a hosted deployment,
5041
+ use [`deployment`](#deployment) for rollout status and
5042
+ [`session <sessionId> --prod`](#session) for a session's runs and logs.
4959
5043
 
4960
5044
  ### Report costs {#cost}
4961
5045
 
4962
5046
  ```text
4963
- bdk cost [sessionId] [--url <baseUrl> | --prod]
4964
- [--slug <slug>] [--team <id>] [--json]
5047
+ bdk cost [sessionId] [--url <baseUrl>]
5048
+ [--slug <slug>] [--json]
4965
5049
  ```
4966
5050
 
4967
5051
  With a session ID, `cost` prints per-turn token usage and estimated cost.
@@ -4979,6 +5063,8 @@ bdk playground [--url <baseUrl> | --prod] [--session <id>]
4979
5063
  The command prints the playground URL and opens it unless `--print` is set.
4980
5064
  `--session` opens a deep link. A running target with credentials that a
4981
5065
  browser can't send starts a loopback proxy and stays open until Ctrl-C.
5066
+ `--session` links for a hosted deployment may not open yet; check that session
5067
+ with [`session <sessionId> --prod`](#session) instead.
4982
5068
 
4983
5069
  ### Inspect a trajectory {#trajectory}
4984
5070
 
@@ -5001,8 +5087,7 @@ bdk eval [--dir <path>] [evalId...]
5001
5087
  [--timeout-ms <n>] [--strict] [--max-concurrency <n>]
5002
5088
  [--junit <path>] [--artifacts <dir> | --no-artifacts]
5003
5089
  [--skip-report] [--out <file.json>] [--no-stream]
5004
- [--url <baseUrl> | --prod] [--no-wait]
5005
- [--slug <slug>] [--team <id>]
5090
+ [--url <baseUrl>] [--no-wait] [--slug <slug>]
5006
5091
  ```
5007
5092
 
5008
5093
  Select an exact case such as `weather/nyc`, a file prefix such as `weather`,
@@ -5025,22 +5110,18 @@ between 1 and 200.
5025
5110
  | `--no-artifacts` | Skip artifacts for an ephemeral local run. |
5026
5111
  | `--skip-report` | Ignore reporters from eval files and the eval config during an ephemeral local run. |
5027
5112
  | `--out <file.json>` | Also write the full result JSON. |
5028
- | `--no-wait` | Return after a running server or hosted deployment accepts the batch. |
5113
+ | `--no-wait` | Return after a running server accepts the batch. |
5029
5114
 
5030
- A running server or hosted deployment prints its Eval ID when it accepts the
5031
- batch.
5115
+ A running server prints its Eval ID when it accepts the batch.
5032
5116
  Use these commands to inspect or cancel it:
5033
5117
 
5034
5118
  ```text
5035
- bdk eval status [evalId] --prod [--slug <slug>] [--team <id>]
5036
5119
  bdk eval status [evalId] --url <baseUrl>
5037
- bdk eval cancel <evalId> --prod [--slug <slug>] [--team <id>]
5038
5120
  bdk eval cancel <evalId> --url <baseUrl>
5039
5121
  ```
5040
5122
 
5041
5123
  `eval status` without an ID lists recent remote runs. `eval status --out`
5042
- requires an ID. The `status` and `cancel` subcommands require `--url` or
5043
- `--prod`.
5124
+ requires an ID. The `status` and `cancel` subcommands require `--url`.
5044
5125
 
5045
5126
  ## Projects
5046
5127
 
@@ -5192,7 +5273,7 @@ service-account API key with agent access can deploy.
5192
5273
  | `--repo <https-url>` | Set the source repository. The CLI infers it from the current checkout when possible. HTTPS is required. |
5193
5274
  | `--ref <git-ref>` | Set the source Git ref. The CLI infers the current branch when possible. |
5194
5275
  | `--path <agent-path>` | Set the project path relative to the repository root. |
5195
- | `--cursor-events-repo <owner/name>` | Add a repository whose SCM events reach the deployment. Repeat for multiple repositories. |
5276
+ | `--cursor-events-repo <owner/name>` | Watch a repository's Cursor events. Repeat the flag for each repository; the repositories you pass replace the previous list. Without the flag, the deployment watches its GitHub source repository. |
5196
5277
  | `--allow-domain <domain>` | Add an egress hostname. Repeat for multiple domains; values are combined with `hosting.egressDomains`. |
5197
5278
  | `--no-wait` | Return after the deployment request is accepted. |
5198
5279
  | `--json` | Print one object for one target or an array for multiple targets. |
@@ -5200,7 +5281,8 @@ service-account API key with agent access can deploy.
5200
5281
  Deployment slugs contain lowercase letters, digits, `_`, or `-`, start with a
5201
5282
  letter or digit, and have at most 64 characters. Egress entries are lowercase
5202
5283
  hostnames with an alphabetic top-level domain; one leading `*.` wildcard is
5203
- allowed, with at most 20 entries.
5284
+ allowed, or a trailing `:port` for a protocol that is not HTTPS, with at most
5285
+ 64 entries.
5204
5286
 
5205
5287
  By default, `deploy` waits until the deployment is running and exits nonzero
5206
5288
  if it reaches a failed state. A first deployment can return an alias token
@@ -5235,8 +5317,7 @@ bdk stop <slug> [--team <id>] [--no-wait] [--cancel-runs] [--json]
5235
5317
 
5236
5318
  The command waits for `stopped` by default. `--no-wait` returns after the
5237
5319
  request is accepted. `--cancel-runs` also requests cancellation of active
5238
- runs and reminder wakes for a managed application. Other deployment types
5239
- reject this option.
5320
+ runs and reminder wakes.
5240
5321
 
5241
5322
  ### Cancel active runs {#cancel-runs}
5242
5323
 
@@ -5244,8 +5325,8 @@ reject this option.
5244
5325
  bdk cancel-runs <slug> [--team <id>] [--json]
5245
5326
  ```
5246
5327
 
5247
- The command requests cancellation for a managed application's active runs and
5248
- reminder wakes. Other deployment types reject it. For a multi-tenant
5328
+ The command requests cancellation for a deployment's active runs and reminder
5329
+ wakes. For a multi-tenant
5249
5330
  application, this cancels every install; use `stop --cancel-runs` for
5250
5331
  install-local cancellation. It exits nonzero if any cancellation request fails
5251
5332
  to start.
@@ -5257,11 +5338,11 @@ bdk event-repos <slug> [--repo <owner/name>]...
5257
5338
  [--team <id>] [--json]
5258
5339
  ```
5259
5340
 
5260
- The supplied repositories replace the managed application's complete event
5261
- repository list; they aren't merged with the previous list. Omit `--repo` to
5262
- clear the list.
5341
+ The supplied repositories replace the deployment's complete event repository
5342
+ list; they aren't merged with the previous list. Omit `--repo` to clear the
5343
+ list.
5263
5344
 
5264
- ### Upgrade a managed application {#upgrade}
5345
+ ### Upgrade a deployment {#upgrade}
5265
5346
 
5266
5347
  ```text
5267
5348
  bdk upgrade <slug> [--release <id-or-version>]
@@ -5316,11 +5397,8 @@ most 4096 bytes, and each deployment holds at most 32 secrets.
5316
5397
  ### Connect an MCP client {#mcp}
5317
5398
 
5318
5399
  ```text
5319
- bdk mcp --prod [--slug <slug>] [--team <id>]
5320
5400
  bdk mcp --url <baseUrl> [--bearer-token <token>]
5321
5401
 
5322
- bdk mcp install --prod [--slug <slug>] [--team <id>]
5323
- [--name <server-name>] [--print] [--json] [--remote]
5324
5402
  bdk mcp install --url <baseUrl> [--bearer-token <token>]
5325
5403
  [--name <server-name>] [--print] [--json]
5326
5404
  ```
@@ -5329,7 +5407,6 @@ bdk mcp install --url <baseUrl> [--bearer-token <token>]
5329
5407
  | --- | --- |
5330
5408
  | `mcp` | Read newline-delimited JSON-RPC from stdin and proxy it to the selected agent's MCP endpoint. stdout is reserved for MCP messages. A target is required. |
5331
5409
  | `mcp install` | Add the selected agent to `~/.cursor/mcp.json`. `--name` sets the server name, `--print` previews the entry, and `--json` prints a machine-readable result. A `--url` entry with `--bearer-token` contains that token; handle printed and written copies as credentials. |
5332
- | `mcp install --remote --prod` | Write a remote HTTP entry for clients that can't spawn a stdio process. The entry contains the API key in plain text and must be handled as a credential. |
5333
5410
 
5334
5411
  ### Authorize MCP OAuth {#mcp-oauth}
5335
5412
 
@@ -5344,7 +5421,7 @@ bdk mcp oauth <connection> [--dir <path>] [--store]
5344
5421
  | Connection | Result |
5345
5422
  | --- | --- |
5346
5423
  | `defineConnection({ url, oauth: true })` | Open a browser PKCE flow and save tokens in `mcp-auth.json` under the CLI config directory. `--store` also sets the matching deployment secrets. |
5347
- | `defineConnection({ cursorAccount: true })` | Authorize the managed deployment's service account through Cursor. `--store` isn't needed. |
5424
+ | `defineConnection({ cursorAccount: true })` | Authorize the hosted deployment's service account through Cursor. `--store` isn't needed. |
5348
5425
 
5349
5426
  Stored secret names are `MCP_OAUTH_<NAME>_ACCESS_TOKEN`,
5350
5427
  `MCP_OAUTH_<NAME>_REFRESH_TOKEN`, and `MCP_OAUTH_<NAME>_CLIENT_ID`. Declare
@@ -5558,11 +5635,37 @@ import { defineConnection } from "@cursor/bdk/connections";
5558
5635
 
5559
5636
  export default defineConnection({
5560
5637
  url: "https://mcp.linear.app/mcp",
5561
- headers: { authorization: `Bearer ${process.env.LINEAR_TOKEN}` },
5638
+ headers: { authorization: "Bearer ${LINEAR_TOKEN}" },
5562
5639
  });
5563
5640
  ```
5564
5641
 
5565
- Tokens come from env vars. Never hardcode them in the file.
5642
+ ## Credentials in headers and env
5643
+
5644
+ Write a credential as a `${NAME}` template in `headers` on a remote
5645
+ connection or in `env` on a stdio one. The connection stores the template
5646
+ as you wrote it and reads `NAME` from the environment every time it opens a
5647
+ client, so the value can arrive after the project loads.
5648
+
5649
+ ```ts
5650
+ export default defineConnection({
5651
+ command: "slack-mcp-server",
5652
+ args: ["--transport", "stdio"],
5653
+ env: { SLACK_MCP_XOXB_TOKEN: "${SLACK_BOT_TOKEN}" },
5654
+ });
5655
+ ```
5656
+
5657
+ That timing is the point of the template. Your connection file is imported
5658
+ once, when the project loads, and a hosted deployment has none of its
5659
+ secrets in the environment yet, because the platform passes them to the
5660
+ agent per request. So a `process.env.SLACK_BOT_TOKEN` read at the top of
5661
+ the file captures an empty string and keeps sending it for the life of the
5662
+ process, while the same file works locally because `.env.local` was read
5663
+ before the import. The template form is right in both places.
5664
+
5665
+ `bdk validate` warns about a template the environment does not define and
5666
+ names the variable. It stays a warning rather than an error, since a
5667
+ hosted deployment resolves it later. An unset variable resolves to an
5668
+ empty value at connect time, which the server reports as an auth failure.
5566
5669
 
5567
5670
  ## Host MCP OAuth
5568
5671
 
@@ -6077,19 +6180,18 @@ disables them. This location is independent of `--state-root`.
6077
6180
 
6078
6181
  ## Run evals against a server
6079
6182
 
6080
- The playground **Evals** view starts batches on its running server.
6081
- `--url` targets a named running server, and `--prod --slug <slug>`
6082
- targets a hosted deployment.
6183
+ The playground **Evals** view starts batches on its running server, and
6184
+ `--url` targets a named running server:
6083
6185
 
6084
6186
  ```text
6085
- bdk eval --prod --slug vulnerability-scanner --tag smoke
6086
- bdk eval status <eval-id> --prod --slug vulnerability-scanner
6087
- bdk eval cancel <eval-id> --prod --slug vulnerability-scanner
6187
+ bdk eval --url http://127.0.0.1:3000/vulnerability-scanner --tag smoke
6188
+ bdk eval status <eval-id> --url http://127.0.0.1:3000/vulnerability-scanner
6189
+ bdk eval cancel <eval-id> --url http://127.0.0.1:3000/vulnerability-scanner
6088
6190
  ```
6089
6191
 
6090
6192
  Server-side batches use the target's discovered cases and return an eval
6091
6193
  ID for `status` or `cancel`. Local reporter and concurrency flags don't
6092
- apply to `--url` or `--prod` runs.
6194
+ apply to `--url` runs.
6093
6195
 
6094
6196
  ## Related
6095
6197
 
@@ -8328,6 +8430,7 @@ Match the visible symptom below. The `bdk` binary ships with
8328
8430
  | File reads and greps fail repeatedly with `NGHTTP2_FRAME_SIZE_ERROR` | Run the agent under Node 22.13 or newer, never Bun. |
8329
8431
  | The turn immediately reports a missing API key | Set `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`, or `CURSOR_SERVICE_ACCOUNT_KEY`, or run `bdk login`. |
8330
8432
  | Login succeeds but the model host rejects the key | Point login and model traffic at the same API host; check `CURSOR_API_BASE_URL` and `CURSOR_BACKEND_URL`. |
8433
+ | The first turn reports `[resource_exhausted]` | Treat it as a capacity-shaped error. For a GitHub wake, also check the connected GitHub credential and any GitHub `429` rate limit before assuming the model quota is exhausted. |
8331
8434
 
8332
8435
  ## A turn behaves unexpectedly
8333
8436
 
@@ -8354,9 +8457,12 @@ Match the visible symptom below. The `bdk` binary ships with
8354
8457
  | What you see | What to do |
8355
8458
  | --- | --- |
8356
8459
  | Local changes do not appear after deploy | `deploy` reads a pushed Git ref, not the working tree. Commit and push the intended ref, then deploy it again. |
8357
- | The deployment never becomes running | Run `bdk deployment <slug>` and `bdk logs --prod --slug <slug>`, then act on the reported build or startup error. |
8460
+ | The deployment never becomes running | Run `bdk deployment <slug>`, then act on the reported build or startup error. |
8358
8461
  | A secret or egress change has no effect | Confirm the name with `secrets list`, verify the `hosting` block exists on the pushed ref, and follow the CLI or dashboard prompt to redeploy. |
8359
- | Cursor events stopped after redeploy | Redeploy replaces CLI-supplied event repositories. Pass every `--cursor-events-repo` value again. |
8462
+ | Cursor events stopped after redeploy | Each redeploy replaces the watched repositories. Pass every `--cursor-events-repo` value again; without the flag, the deployment watches only its GitHub source repository. |
8463
+ | `run --prod` prints a `deliveryId` but no `sessionId` | The deployment accepted the turn and is still starting it, which is expected with or without `--dry-run`. Find the session in the deployment's **Sessions** list in the dashboard, then follow [Verify a hosted turn](/docs/deployment.md#verify-a-hosted-turn). |
8464
+ | A high-effort turn runs for several minutes while runs look empty | Turns can take about eight minutes. Rerun `bdk session <sessionId> --prod --slug <slug>`; a growing event count means the turn is still working. Escalate only after about two to three minutes with no new events. |
8465
+ | A dashboard link to a single session returns 404 | Check the session with `bdk session <sessionId> --prod --slug <slug>`. |
8360
8466
  | External HTTP rejects the alias token | Update the caller with the current token. If the token is lost or exposed, run `bdk rotate-token <slug>` and replace it everywhere. |
8361
8467
 
8362
8468
  See [Deployment](/docs/deployment.md) for source, credential, and
@@ -8379,7 +8485,7 @@ direct webhooks.
8379
8485
  | What you see | What to do |
8380
8486
  | --- | --- |
8381
8487
  | Logs say `channel idle ... missing credentials` | Run `bdk slack create --dir <agent>`, then check the generated prefix with `bdk slack doctor`. Use `slack init --manual` only for an app you own. |
8382
- | `slack create` is waiting for workspace approval | Open the approval link printed by the CLI, keep the command running, and retry after an admin approves. |
8488
+ | `slack create` is waiting for workspace approval | Keep the CLI running, open the **Request approval** link it prints, and select **Retry** in the dashboard's **Add Slack** wizard after an admin approves. See [Slack](/docs/guides/slack.md#connect). |
8383
8489
  | The bot ignores ordinary channel posts | Configure `engagement.channelPosts`, create the app with `--channel-posts`, and invite it to every allowed channel. |
8384
8490
  | Approval buttons do nothing | Set `toolApprovals: true`, then recreate the app if its interactivity is not enabled. |
8385
8491