@cursor/bdk 0.2.14 → 0.2.16

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 (392) hide show
  1. package/AGENTS.md +51 -52
  2. package/README.md +1 -1
  3. package/dist/bin/agent-sdk.js +0 -0
  4. package/dist/bin/agent-serve.js +41 -3
  5. package/dist/channels/github/index.d.ts +1 -1
  6. package/dist/channels/github/index.d.ts.map +1 -1
  7. package/dist/channels/github/index.js +1 -1
  8. package/dist/channels/slack/attachments.d.ts +2 -0
  9. package/dist/channels/slack/attachments.d.ts.map +1 -1
  10. package/dist/channels/slack/attachments.js +17 -5
  11. package/dist/channels/slack/channel-watch.d.ts +4 -2
  12. package/dist/channels/slack/channel-watch.d.ts.map +1 -1
  13. package/dist/channels/slack/channel-watch.js +4 -2
  14. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  15. package/dist/channels/slack/slack-channel.js +4 -2
  16. package/dist/channels/slack/types.d.ts +6 -4
  17. package/dist/channels/slack/types.d.ts.map +1 -1
  18. package/dist/connections.d.ts +29 -0
  19. package/dist/connections.d.ts.map +1 -1
  20. package/dist/connections.js +54 -0
  21. package/dist/docs/404.html +2 -2
  22. package/dist/docs/assets/{app.BN3sgOOo.js → app.BSrZkTHD.js} +4 -4
  23. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.js → building-with-agents.md.Bi9CQ-bR.js} +3 -3
  24. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.lean.js → building-with-agents.md.Bi9CQ-bR.lean.js} +1 -1
  25. package/dist/docs/assets/chunks/@localSearchIndexroot.JUnN1Be1.js +1 -0
  26. package/dist/docs/assets/chunks/{VPLocalSearchBox.CbA00dML.js → VPLocalSearchBox.BxmgcwIX.js} +1 -1
  27. package/dist/docs/assets/chunks/{arc.Byug8CZM.js → arc.CAid9y9R.js} +1 -1
  28. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.D1_qmnQy.js → architectureDiagram-Q4EWVU46.kLxg-1A5.js} +1 -1
  29. package/dist/docs/assets/chunks/{baseUniq.Dj-Nurf-.js → baseUniq.BWvpjFlO.js} +1 -1
  30. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BZwq3EIg.js → blockDiagram-DXYQGD6D.DyjX8R7M.js} +1 -1
  31. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.dx75urO7.js → c4Diagram-AHTNJAMY.DBdWlnqr.js} +1 -1
  32. package/dist/docs/assets/chunks/channel.CWc3NN9g.js +1 -0
  33. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CIoddsDQ.js → chunk-4BX2VUAB.T5enPS2D.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.O3VsVBES.js → chunk-4TB4RGXK.D6zswRAS.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-55IACEB6.WNNWh0Pe.js → chunk-55IACEB6.Bh05N-a3.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BKVQwEME.js → chunk-EDXVE4YY.DZv_O-d9.js} +1 -1
  37. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Cv5iBz7A.js → chunk-FMBD7UC4.BY53CZaL.js} +1 -1
  38. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.wCDCToee.js → chunk-OYMX7WX6.CO5lI2PE.js} +1 -1
  39. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D3IGXhXA.js → chunk-QZHKN3VN.DMfpW0s4.js} +1 -1
  40. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CAPPh-E7.js → chunk-YZCP3GAM.COPT56Nr.js} +1 -1
  41. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D5a745iS.js +1 -0
  42. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D5a745iS.js +1 -0
  43. package/dist/docs/assets/chunks/clone.CCGVqN_B.js +1 -0
  44. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BQCFH3M5.js → cose-bilkent-S5V4N54A.BJSj7zzd.js} +1 -1
  45. package/dist/docs/assets/chunks/{dagre-KV5264BT.lHmdrh7L.js → dagre-KV5264BT.DDv7IQZT.js} +1 -1
  46. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.EtSPnHgD.js → diagram-5BDNPKRD.BUoE9HFH.js} +1 -1
  47. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DCyUnQT8.js → diagram-G4DWMVQ6.BF3JtrnJ.js} +1 -1
  48. package/dist/docs/assets/chunks/{diagram-MMDJMWI5._E0Qqblb.js → diagram-MMDJMWI5.BvuCWc4e.js} +1 -1
  49. package/dist/docs/assets/chunks/{diagram-TYMM5635.BDj4oyy_.js → diagram-TYMM5635._EqUGqFN.js} +1 -1
  50. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.CrvnO6a3.js → erDiagram-SMLLAGMA.DxNvSdzj.js} +1 -1
  51. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DIhYc-2F.js → flowDiagram-DWJPFMVM.DVtRP546.js} +1 -1
  52. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.hFqm_vio.js → ganttDiagram-T4ZO3ILL.Bn9vb7xI.js} +1 -1
  53. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.N3GDaVDD.js → gitGraphDiagram-UUTBAWPF.45r6n737.js} +1 -1
  54. package/dist/docs/assets/chunks/{graph.DK28rMBx.js → graph.BOkX3Ws_.js} +1 -1
  55. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DHmE6W9M.js → infoDiagram-42DDH7IO.DyBCcxOm.js} +1 -1
  56. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ByUJuOYm.js → ishikawaDiagram-UXIWVN3A.kg0ywDlx.js} +1 -1
  57. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BIUChFMh.js → journeyDiagram-VCZTEJTY.BUfrLnXA.js} +1 -1
  58. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CNgFXwo-.js → kanban-definition-6JOO6SKY.Bn7X35b2.js} +1 -1
  59. package/dist/docs/assets/chunks/{layout.BDnwE4ET.js → layout.B0QW6d8M.js} +1 -1
  60. package/dist/docs/assets/chunks/{linear.DmrYLXFs.js → linear.C59eCF0D.js} +1 -1
  61. package/dist/docs/assets/chunks/{min.BbYcWakN.js → min.BnDl0p08.js} +1 -1
  62. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.C9x-klkv.js → mindmap-definition-QFDTVHPH.u2HYLooo.js} +1 -1
  63. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.iufpEbi0.js → pieDiagram-DEJITSTG.CbnIrr9l.js} +1 -1
  64. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DdoXbWL9.js → quadrantDiagram-34T5L4WZ.D2zWIixq.js} +1 -1
  65. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.XL1-_pNk.js → requirementDiagram-MS252O5E.DvOFa3oO.js} +1 -1
  66. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DySXofNs.js → sankeyDiagram-XADWPNL6.BfKCkH3x.js} +1 -1
  67. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cp0GZoOU.js → sequenceDiagram-FGHM5R23.CUPKdYN0.js} +1 -1
  68. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DvK-sXUX.js → stateDiagram-FHFEXIEX.CimDCRiK.js} +1 -1
  69. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.ClNUVSTQ.js +1 -0
  70. package/dist/docs/assets/chunks/{theme.Clup4iIo.js → theme.CKht7z82.js} +2 -2
  71. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.gHI9ZLm6.js → timeline-definition-GMOUNBTQ.BFTd5qKs.js} +1 -1
  72. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.G2N2zXYe.js → vennDiagram-DHZGUBPP.N6t5MmCb.js} +1 -1
  73. package/dist/docs/assets/chunks/wardley-RL74JXVD.D2G6Zyds.js +162 -0
  74. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BgUKEagd.js → wardleyDiagram-NUSXRM2D.BqScALbL.js} +1 -1
  75. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CwH7oege.js → xychartDiagram-5P7HB3ND.Br0WiDkT.js} +1 -1
  76. package/dist/docs/assets/deployment.md.hKKN9I4c.js +31 -0
  77. package/dist/docs/assets/{deployment.md.BYuEcDBv.lean.js → deployment.md.hKKN9I4c.lean.js} +1 -1
  78. package/dist/docs/assets/{evals.md.C851kViu.js → evals.md.CHR34K1Y.js} +3 -7
  79. package/dist/docs/assets/{evals.md.C851kViu.lean.js → evals.md.CHR34K1Y.lean.js} +1 -1
  80. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.js +9 -0
  81. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.lean.js +1 -0
  82. package/dist/docs/assets/guides_grokbot-agents.md.BwAykJ7U.js +15 -0
  83. package/dist/docs/assets/{guides_grokbot-agents.md.tD1smFhU.lean.js → guides_grokbot-agents.md.BwAykJ7U.lean.js} +1 -1
  84. package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.js → guides_hooks.md.B_bKG1oA.js} +1 -1
  85. package/dist/docs/assets/{guides_improve.md.CRrYq22s.js → guides_improve.md.CZKVt1cT.js} +2 -3
  86. package/dist/docs/assets/{guides_improve.md.CRrYq22s.lean.js → guides_improve.md.CZKVt1cT.lean.js} +1 -1
  87. package/dist/docs/assets/{guides_mcp-oauth.md.DR3zhC9r.js → guides_mcp-oauth.md.BM_eFC0L.js} +3 -15
  88. package/dist/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js +1 -0
  89. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.js → guides_webhooks.md.Cpdc3BDX.js} +13 -12
  90. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.lean.js → guides_webhooks.md.Cpdc3BDX.lean.js} +1 -1
  91. package/dist/docs/assets/{index.md.Dxxr7pFa.js → index.md.BIBHIQtU.js} +1 -1
  92. package/dist/docs/assets/{quickstart.md.BK5gjHM2.js → quickstart.md.CduLGBAB.js} +1 -1
  93. package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.js → reference_agent-config.md.DYA6ge6t.js} +7 -4
  94. package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.lean.js → reference_agent-config.md.DYA6ge6t.lean.js} +1 -1
  95. package/dist/docs/assets/reference_channels.md.DYg0CLud.js +22 -0
  96. package/dist/docs/assets/{reference_channels.md.LbNIJBwd.lean.js → reference_channels.md.DYg0CLud.lean.js} +1 -1
  97. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.js → reference_cli.md.2d2Y0O-d.js} +16 -13
  98. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.lean.js → reference_cli.md.2d2Y0O-d.lean.js} +1 -1
  99. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.js → reference_connections.md.CxbLpaaP.js} +4 -5
  100. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.lean.js → reference_connections.md.CxbLpaaP.lean.js} +1 -1
  101. package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.js → reference_evals.md.Ccwp4x3o.js} +4 -4
  102. package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.lean.js → reference_evals.md.Ccwp4x3o.lean.js} +1 -1
  103. package/dist/docs/assets/{reference_hooks.md.B-eGa2km.js → reference_hooks.md.DbJC8mcZ.js} +1 -1
  104. package/dist/docs/assets/reference_http-api.md.CrqhTv6S.js +11 -0
  105. package/dist/docs/assets/{reference_http-api.md.DbFNOubV.lean.js → reference_http-api.md.CrqhTv6S.lean.js} +1 -1
  106. package/dist/docs/assets/reference_playground.md.q4MI-0td.js +1 -0
  107. package/dist/docs/assets/reference_playground.md.q4MI-0td.lean.js +1 -0
  108. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.js → reference_schedules.md.03Ryy9ca.js} +5 -5
  109. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +1 -1
  110. package/dist/docs/assets/reference_sessions.md.C_uzIWuy.js +1 -0
  111. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C2GWh7g8.js} +4 -4
  112. package/dist/docs/assets/{reference_tools.md.DzIY9JzY.js → reference_tools.md.08XR7lIl.js} +3 -14
  113. package/dist/docs/assets/reference_tools.md.08XR7lIl.lean.js +1 -0
  114. package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.js → templates_grokbot-agents.md.DgpPEs7B.js} +1 -1
  115. package/dist/docs/assets/troubleshooting.md.PCafNCb5.js +1 -0
  116. package/dist/docs/assets/{troubleshooting.md.x-GBa7wN.lean.js → troubleshooting.md.PCafNCb5.lean.js} +1 -1
  117. package/dist/docs/building-with-agents.html +37 -37
  118. package/dist/docs/building-with-agents.md +5 -5
  119. package/dist/docs/deployment.html +43 -41
  120. package/dist/docs/deployment.md +70 -33
  121. package/dist/docs/evals.html +38 -42
  122. package/dist/docs/evals.md +1 -16
  123. package/dist/docs/guides/agent-to-agent.html +35 -35
  124. package/dist/docs/guides/bitbucket.html +35 -35
  125. package/dist/docs/guides/cloud-agents.html +38 -39
  126. package/dist/docs/guides/cloud-agents.md +2 -8
  127. package/dist/docs/guides/convert-automation.html +35 -35
  128. package/dist/docs/guides/github.html +35 -35
  129. package/dist/docs/guides/gitlab.html +35 -35
  130. package/dist/docs/guides/grokbot-agents.html +37 -38
  131. package/dist/docs/guides/grokbot-agents.md +9 -13
  132. package/dist/docs/guides/hooks.html +37 -37
  133. package/dist/docs/guides/hooks.md +0 -1
  134. package/dist/docs/guides/improve.html +37 -38
  135. package/dist/docs/guides/improve.md +4 -6
  136. package/dist/docs/guides/jev.html +35 -35
  137. package/dist/docs/guides/mcp-oauth.html +39 -51
  138. package/dist/docs/guides/mcp-oauth.md +17 -40
  139. package/dist/docs/guides/migrate.html +35 -35
  140. package/dist/docs/guides/opentelemetry.html +35 -35
  141. package/dist/docs/guides/slack.html +35 -35
  142. package/dist/docs/guides/webhooks.html +47 -46
  143. package/dist/docs/guides/webhooks.md +35 -18
  144. package/dist/docs/hashmap.json +1 -1
  145. package/dist/docs/hillclimbing.html +35 -35
  146. package/dist/docs/index.html +36 -36
  147. package/dist/docs/index.md +1 -1
  148. package/dist/docs/llms-full.txt +388 -272
  149. package/dist/docs/llms.txt +4 -4
  150. package/dist/docs/quickstart.html +37 -37
  151. package/dist/docs/quickstart.md +2 -2
  152. package/dist/docs/reference/agent-config.html +41 -38
  153. package/dist/docs/reference/agent-config.md +26 -1
  154. package/dist/docs/reference/artifacts.html +35 -35
  155. package/dist/docs/reference/channels.html +42 -43
  156. package/dist/docs/reference/channels.md +29 -13
  157. package/dist/docs/reference/cli.html +50 -47
  158. package/dist/docs/reference/cli.md +115 -42
  159. package/dist/docs/reference/connections.html +39 -40
  160. package/dist/docs/reference/connections.md +6 -5
  161. package/dist/docs/reference/evals.html +38 -38
  162. package/dist/docs/reference/evals.md +15 -4
  163. package/dist/docs/reference/extensions.html +35 -35
  164. package/dist/docs/reference/hooks.html +37 -37
  165. package/dist/docs/reference/hooks.md +0 -1
  166. package/dist/docs/reference/http-api.html +38 -38
  167. package/dist/docs/reference/http-api.md +7 -17
  168. package/dist/docs/reference/instructions.html +35 -35
  169. package/dist/docs/reference/playground.html +37 -37
  170. package/dist/docs/reference/playground.md +1 -4
  171. package/dist/docs/reference/project-layout.html +35 -35
  172. package/dist/docs/reference/prompt.html +35 -35
  173. package/dist/docs/reference/schedules.html +39 -39
  174. package/dist/docs/reference/schedules.md +26 -3
  175. package/dist/docs/reference/sessions.html +36 -36
  176. package/dist/docs/reference/sessions.md +1 -2
  177. package/dist/docs/reference/skills.html +39 -39
  178. package/dist/docs/reference/skills.md +1 -1
  179. package/dist/docs/reference/subagents.html +35 -35
  180. package/dist/docs/reference/tools.html +39 -50
  181. package/dist/docs/reference/tools.md +2 -28
  182. package/dist/docs/templates/agentic-owners.html +35 -35
  183. package/dist/docs/templates/grokbot-agents.html +37 -37
  184. package/dist/docs/templates/grokbot-agents.md +1 -1
  185. package/dist/docs/templates/security-reviewer.html +35 -35
  186. package/dist/docs/templates/thermo-quality-review.html +35 -35
  187. package/dist/docs/templates/thermo-review.html +35 -35
  188. package/dist/docs/templates/triage.html +35 -35
  189. package/dist/docs/troubleshooting.html +36 -36
  190. package/dist/docs/troubleshooting.md +12 -7
  191. package/dist/extensions/cursor-cloud-agents/extension.d.ts +5 -1
  192. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  193. package/dist/extensions/cursor-cloud-agents/extension.js +4 -0
  194. package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -1
  195. package/dist/extensions/cursor-cloud-agents/lib/channels.js +5 -1
  196. package/dist/filesystem.d.ts.map +1 -1
  197. package/dist/filesystem.js +4 -8
  198. package/dist/internal/cli-convert-automation.js +9 -19
  199. package/dist/internal/cli-deploy.d.ts +1 -1
  200. package/dist/internal/cli-deploy.d.ts.map +1 -1
  201. package/dist/internal/cli-deploy.js +18 -3
  202. package/dist/internal/cli-init-grokbot.d.ts +29 -0
  203. package/dist/internal/cli-init-grokbot.d.ts.map +1 -0
  204. package/dist/internal/cli-init-grokbot.js +181 -0
  205. package/dist/internal/cli-slack.js +1 -1
  206. package/dist/internal/comment-safe.d.ts +8 -0
  207. package/dist/internal/comment-safe.d.ts.map +1 -0
  208. package/dist/internal/comment-safe.js +12 -0
  209. package/dist/internal/continuation-identity.js +1 -1
  210. package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
  211. package/dist/internal/convert-automation/convert-workflow.js +2 -14
  212. package/dist/internal/convert-grokbot/answers.d.ts +127 -0
  213. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -0
  214. package/dist/internal/convert-grokbot/answers.js +443 -0
  215. package/dist/internal/convert-grokbot/bot.d.ts +50 -0
  216. package/dist/internal/convert-grokbot/bot.d.ts.map +1 -0
  217. package/dist/internal/convert-grokbot/bot.js +72 -0
  218. package/dist/internal/convert-grokbot/checks.d.ts +26 -0
  219. package/dist/internal/convert-grokbot/checks.d.ts.map +1 -0
  220. package/dist/internal/convert-grokbot/checks.js +170 -0
  221. package/dist/internal/convert-grokbot/convert.d.ts +60 -0
  222. package/dist/internal/convert-grokbot/convert.d.ts.map +1 -0
  223. package/dist/internal/convert-grokbot/convert.js +470 -0
  224. package/dist/internal/convert-grokbot/handoff.d.ts +44 -0
  225. package/dist/internal/convert-grokbot/handoff.d.ts.map +1 -0
  226. package/dist/internal/convert-grokbot/handoff.js +160 -0
  227. package/dist/internal/convert-grokbot/recipe.d.ts +61 -0
  228. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -0
  229. package/dist/internal/convert-grokbot/recipe.js +94 -0
  230. package/dist/internal/convert-grokbot/routine.d.ts +51 -0
  231. package/dist/internal/convert-grokbot/routine.d.ts.map +1 -0
  232. package/dist/internal/convert-grokbot/routine.js +128 -0
  233. package/dist/internal/convert-grokbot/slack.d.ts +28 -0
  234. package/dist/internal/convert-grokbot/slack.d.ts.map +1 -0
  235. package/dist/internal/convert-grokbot/slack.js +50 -0
  236. package/dist/internal/deploy-client.d.ts +0 -2
  237. package/dist/internal/deploy-client.d.ts.map +1 -1
  238. package/dist/internal/deploy-client.js +2 -11
  239. package/dist/internal/discovery/agent-config.d.ts +6 -0
  240. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  241. package/dist/internal/discovery/agent-config.js +19 -0
  242. package/dist/internal/discovery/agent.d.ts.map +1 -1
  243. package/dist/internal/discovery/agent.js +2 -1
  244. package/dist/internal/discovery/names.d.ts +2 -0
  245. package/dist/internal/discovery/names.d.ts.map +1 -1
  246. package/dist/internal/discovery/names.js +2 -0
  247. package/dist/internal/discovery/project.d.ts.map +1 -1
  248. package/dist/internal/discovery/project.js +1 -3
  249. package/dist/internal/eval-judge-model.d.ts +10 -5
  250. package/dist/internal/eval-judge-model.d.ts.map +1 -1
  251. package/dist/internal/eval-judge-model.js +36 -25
  252. package/dist/internal/filesystem/subagent-inherit.d.ts +39 -0
  253. package/dist/internal/filesystem/subagent-inherit.d.ts.map +1 -0
  254. package/dist/internal/filesystem/subagent-inherit.js +96 -0
  255. package/dist/internal/filesystem/tools.d.ts +6 -0
  256. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  257. package/dist/internal/filesystem/tools.js +38 -1
  258. package/dist/internal/hosted-catch-protocol.d.ts +2 -0
  259. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  260. package/dist/internal/hosted-catch-protocol.js +2 -0
  261. package/dist/internal/hosted-catch.d.ts +2 -3
  262. package/dist/internal/hosted-catch.d.ts.map +1 -1
  263. package/dist/internal/hosted-catch.js +2 -3
  264. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  265. package/dist/internal/hosted-delivery.js +46 -13
  266. package/dist/internal/hosted-execution-flush.d.ts +6 -3
  267. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  268. package/dist/internal/hosted-execution-flush.js +28 -31
  269. package/dist/internal/hosting.d.ts +1 -1
  270. package/dist/internal/hosting.d.ts.map +1 -1
  271. package/dist/internal/hosting.js +7 -3
  272. package/dist/internal/init-interview.d.ts +3 -5
  273. package/dist/internal/init-interview.d.ts.map +1 -1
  274. package/dist/internal/init-interview.js +15 -88
  275. package/dist/internal/init-project.d.ts +13 -0
  276. package/dist/internal/init-project.d.ts.map +1 -1
  277. package/dist/internal/init-project.js +30 -37
  278. package/dist/internal/init-scaffold.d.ts +11 -0
  279. package/dist/internal/init-scaffold.d.ts.map +1 -1
  280. package/dist/internal/init-scaffold.js +47 -13
  281. package/dist/internal/interview/agent-questions.d.ts +19 -0
  282. package/dist/internal/interview/agent-questions.d.ts.map +1 -0
  283. package/dist/internal/interview/agent-questions.js +120 -0
  284. package/dist/internal/interview/question.d.ts +82 -0
  285. package/dist/internal/interview/question.d.ts.map +1 -0
  286. package/dist/internal/interview/question.js +198 -0
  287. package/dist/internal/local-control-plane.d.ts.map +1 -1
  288. package/dist/internal/local-control-plane.js +5 -1
  289. package/dist/internal/otel/collector.d.ts +2 -0
  290. package/dist/internal/otel/collector.d.ts.map +1 -1
  291. package/dist/internal/otel/collector.js +4 -0
  292. package/dist/internal/peer-connections.d.ts +6 -2
  293. package/dist/internal/peer-connections.d.ts.map +1 -1
  294. package/dist/internal/peer-connections.js +23 -19
  295. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  296. package/dist/internal/resolve-prod-target.js +2 -1
  297. package/dist/internal/sdk-runner.d.ts.map +1 -1
  298. package/dist/internal/sdk-runner.js +43 -16
  299. package/dist/internal/sdk-subagent-inherit-support.d.ts +9 -0
  300. package/dist/internal/sdk-subagent-inherit-support.d.ts.map +1 -0
  301. package/dist/internal/sdk-subagent-inherit-support.js +89 -0
  302. package/dist/internal/server.d.ts.map +1 -1
  303. package/dist/internal/server.js +6 -5
  304. package/dist/internal/session-engine.d.ts +13 -0
  305. package/dist/internal/session-engine.d.ts.map +1 -1
  306. package/dist/internal/session-engine.js +62 -11
  307. package/dist/internal/session-run-log.d.ts.map +1 -1
  308. package/dist/internal/session-run-log.js +26 -11
  309. package/dist/internal/{convert-automation/slug.d.ts → slug.d.ts} +4 -1
  310. package/dist/internal/slug.d.ts.map +1 -0
  311. package/dist/internal/{convert-automation/slug.js → slug.js} +11 -1
  312. package/dist/playground/assets/index-7fVUOA5l.css +1 -0
  313. package/dist/playground/assets/{index-ClxRl2Cw.js → index-U3TRnwAP.js} +43 -43
  314. package/dist/playground/index.html +2 -2
  315. package/dist/types.d.ts +26 -1
  316. package/dist/types.d.ts.map +1 -1
  317. package/docs/README.md +1 -1
  318. package/docs/building-with-agents.md +5 -5
  319. package/docs/deployment.md +70 -33
  320. package/docs/evals.md +1 -16
  321. package/docs/guides/cloud-agents.md +3 -9
  322. package/docs/guides/grokbot-agents.md +10 -14
  323. package/docs/guides/hooks.md +0 -1
  324. package/docs/guides/improve.md +4 -6
  325. package/docs/guides/mcp-oauth.md +18 -41
  326. package/docs/guides/webhooks.md +35 -18
  327. package/docs/quickstart.md +2 -2
  328. package/docs/reference/agent-config.md +26 -1
  329. package/docs/reference/channels.md +29 -13
  330. package/docs/reference/cli.md +115 -42
  331. package/docs/reference/connections.md +6 -5
  332. package/docs/reference/evals.md +15 -4
  333. package/docs/reference/hooks.md +0 -1
  334. package/docs/reference/http-api.md +7 -17
  335. package/docs/reference/playground.md +2 -5
  336. package/docs/reference/schedules.md +26 -3
  337. package/docs/reference/sessions.md +1 -2
  338. package/docs/reference/skills.md +1 -1
  339. package/docs/reference/tools.md +3 -29
  340. package/docs/templates/grokbot-agents.md +1 -1
  341. package/docs/troubleshooting.md +12 -7
  342. package/package.json +36 -35
  343. package/schemas/grokbot-answers.schema.json +343 -0
  344. package/skills/create-agent/SKILL.md +16 -11
  345. package/skills/debug/SKILL.md +3 -4
  346. package/skills/evals/SKILL.md +2 -2
  347. package/skills/framework-map/SKILL.md +10 -10
  348. package/skills/mcp-auth/SKILL.md +10 -34
  349. package/skills/migrate-v2/SKILL.md +13 -9
  350. package/skills/setup-slack/SKILL.md +0 -13
  351. package/templates/agentic-owners/bot/lib/owners/handles.ts +1 -1
  352. package/templates/agentic-owners/bot/lib/owners/matching.ts +20 -9
  353. package/templates/agents-md/README.md +3 -3
  354. package/templates/agents-md/bot/channels/queue.ts +3 -8
  355. package/templates/agents-md/bot/instructions.md +1 -2
  356. package/templates/agents-md/bot/tools/apply_agents.ts +0 -1
  357. package/templates/agents-md/evals/agents.eval.ts +2 -2
  358. package/templates/demo/bot/channels/queue.ts +5 -15
  359. package/templates/grokbot-agents/.gitignore +4 -0
  360. package/templates/pr-autofixer/bot/channels/drive.ts +3 -16
  361. package/templates/security-help/.gitignore +4 -0
  362. package/templates/triage/bot/channels/queue.ts +11 -22
  363. package/templates/triage/bot/channels/webhook.ts +3 -6
  364. package/templates/triage/bot/lib/parse-queue-event.ts +0 -6
  365. package/dist/docs/assets/chunks/@localSearchIndexroot.CzrtdJ8s.js +0 -1
  366. package/dist/docs/assets/chunks/channel.6ebHhoF9.js +0 -1
  367. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BJ-CwKwu.js +0 -1
  368. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BJ-CwKwu.js +0 -1
  369. package/dist/docs/assets/chunks/clone.DfV2fkWH.js +0 -1
  370. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DNdUCJyd.js +0 -1
  371. package/dist/docs/assets/chunks/wardley-RL74JXVD.C46G0P5a.js +0 -162
  372. package/dist/docs/assets/deployment.md.BYuEcDBv.js +0 -29
  373. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.js +0 -10
  374. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.lean.js +0 -1
  375. package/dist/docs/assets/guides_grokbot-agents.md.tD1smFhU.js +0 -16
  376. package/dist/docs/assets/guides_mcp-oauth.md.DR3zhC9r.lean.js +0 -1
  377. package/dist/docs/assets/reference_channels.md.LbNIJBwd.js +0 -23
  378. package/dist/docs/assets/reference_http-api.md.DbFNOubV.js +0 -11
  379. package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +0 -1
  380. package/dist/docs/assets/reference_playground.md.1hx0gcIu.lean.js +0 -1
  381. package/dist/docs/assets/reference_sessions.md.CyM7ARz1.js +0 -1
  382. package/dist/docs/assets/reference_tools.md.DzIY9JzY.lean.js +0 -1
  383. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +0 -1
  384. package/dist/internal/convert-automation/slug.d.ts.map +0 -1
  385. package/dist/playground/assets/index-BKSsuEMw.css +0 -1
  386. /package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.lean.js → guides_hooks.md.B_bKG1oA.lean.js} +0 -0
  387. /package/dist/docs/assets/{index.md.Dxxr7pFa.lean.js → index.md.BIBHIQtU.lean.js} +0 -0
  388. /package/dist/docs/assets/{quickstart.md.BK5gjHM2.lean.js → quickstart.md.CduLGBAB.lean.js} +0 -0
  389. /package/dist/docs/assets/{reference_hooks.md.B-eGa2km.lean.js → reference_hooks.md.DbJC8mcZ.lean.js} +0 -0
  390. /package/dist/docs/assets/{reference_sessions.md.CyM7ARz1.lean.js → reference_sessions.md.C_uzIWuy.lean.js} +0 -0
  391. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C2GWh7g8.lean.js} +0 -0
  392. /package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.lean.js → templates_grokbot-agents.md.DgpPEs7B.lean.js} +0 -0
@@ -70,12 +70,17 @@ provide their own `help` subcommands.
70
70
  | [`deployments`](#deployments) | List deployments |
71
71
  | [`deployment`](#deployment) | Inspect one deployment |
72
72
  | [`stop`](#stop) | Stop a deployment |
73
+ | [`start`](#start) | Start a stopped deployment |
74
+ | [`kill`](#kill) | Stop a deployment, cancel its runs, and lock deploys |
75
+ | [`unlock-deploys`](#unlock-deploys) | Let a killed deployment deploy again |
73
76
  | [`cancel-runs`](#cancel-runs) | Cancel active runs and reminder wakes |
74
77
  | [`event-repos`](#event-repos) | Replace a deployment's event repositories |
75
78
  | [`upgrade`](#upgrade) | Move a deployment to a release |
79
+ | [`rollback`](#rollback) | Move a deployment to an earlier release |
76
80
  | [`delete`](#delete) | Delete a deployment |
77
81
  | [`rotate-token`](#rotate-token) | Replace a deployment's alias token |
78
82
  | [`secrets`](#secrets) | Set, list, or remove deployment secrets |
83
+ | [`images`](#images) | Push, list, or remove container images for persistent agents |
79
84
 
80
85
  ### Connection and channel commands
81
86
 
@@ -98,7 +103,7 @@ Commands that send requests support these targets:
98
103
  | Ephemeral local server | Omit `--url` and `--prod` | `run`, `call`, `skill`, `eval` |
99
104
  | Running server | Pass `--url <baseUrl>` | `chat`, `resume`, `run`, `call`, `skill`, `eval`, `logs`, `sessions`, `session`, `cost`, `playground`, `mcp` |
100
105
  | Default local server | Omit `--url` and `--prod`; uses `http://127.0.0.1:3000` | `chat`, `resume`, `logs`, `sessions`, `session`, `cost`, `playground` |
101
- | Hosted deployment | Pass `--prod` | `run`, `session`, `playground` |
106
+ | Hosted deployment | Pass `--prod` | `run`, `session`, `logs`, `playground` |
102
107
 
103
108
  An explicit `--url` must include the slug for a multi-agent server, such as
104
109
  `http://127.0.0.1:3000/pr-approver`. `--slug` never changes an explicit URL.
@@ -108,8 +113,8 @@ An explicit `--url` must include the slug for a multi-agent server, such as
108
113
  | --- | --- |
109
114
  | `--dir <path>` | Select the project root. The default is the current directory. |
110
115
  | `--url <baseUrl>` | Use a running agent instead of local project discovery. |
111
- | `--prod` | Use the hosted deployment. Only `run`, `session`, and `playground` accept it. |
112
- | `--slug <slug>` | Select an agent from a multi-agent project or a hosted resource. Under `--prod`, the default is the `--dir` basename. |
116
+ | `--prod` | Use the hosted deployment. Only `run`, `session`, `logs`, and `playground` accept it; `chat`, `resume`, `call`, `skill`, `sessions`, `cost`, and `mcp` report that the deployment doesn't support the command, and `eval` rejects the flag. |
117
+ | `--slug <slug>` | Select an agent from a multi-agent project or a hosted deployment. Under `--prod`, the default is the `--dir` basename. |
113
118
  | `--team <id>` | Select a Cursor team. The signed-in account's team is the default. |
114
119
  | `--api-key <key>` | Override the Cursor credential for commands that authenticate with Cursor. |
115
120
  | `--bearer-token <token>` | Authenticate to a running server with a bearer token. |
@@ -234,28 +239,31 @@ bdk run [--dir <path>] [--message <text>]...
234
239
 
235
240
  | Option | Contract |
236
241
  | --- | --- |
237
- | `--message <text>` | Send a user message. Repeat it for a multi-turn local or `--url` run. `--prod` starts accept one message. |
242
+ | `--message <text>` | Send a user message. Repeat it for a multi-turn local or `--url` run. A `--prod` run takes exactly one message. |
238
243
  | `--messages-file <path>` | Read a JSON array of strings. File messages run before repeated `--message` values. |
239
- | `--session <id>` | Continue a session. With `--prod`, pass a hosted `ses_...` ID. |
240
- | `--continuation-token <token>` | Continue the session selected by `--session` on a running server. `--prod` starts use `--session` instead. |
244
+ | `--session <id>` | Continue a session. With `--prod`, pass a hosted `ses_...` ID from a session that `run --prod` or `session --prod` started; Slack, SCM, and custom-route sessions can't be continued this way. |
245
+ | `--continuation-token <token>` | Continue the session selected by `--session` on a running server. `--prod` doesn't accept it. |
241
246
  | `--events <file>` | Write the raw NDJSON stream to this path. |
242
247
  | `--no-events` | Skip the NDJSON trace. |
243
248
  | `--text` | Print a compact trajectory instead of JSON. |
244
249
  | `--timeout-ms <n>` | Stop waiting after a positive number of milliseconds. There is no default timeout. |
245
250
  | `--no-stream` | Hide live tool and reply progress on stderr. |
246
- | `--dry-run` | Mark a `--prod` turn as non-mutating. |
247
- | `--as-of <instant>` | Freeze a `--prod` session's clock at a timezone-bearing ISO-8601 instant. |
248
- | `--component <key>` | Select a hosted deployment's component instead of its default. |
251
+ | `--dry-run` | Start a `--prod` session that runs read tools and stubs write tools. |
252
+ | `--as-of <instant>` | Freeze a `--prod` session's clock at an ISO-8601 instant with a timezone, such as `2026-08-31T12:00:00Z`. |
253
+ | `--component <key>` | Wake a named component of a `--prod` deployment instead of its default. A continued session must belong to that component. |
249
254
 
250
255
  For local and running-server targets, JSON output contains `ok`, `sessionId`,
251
256
  `continuationToken`, `trace`, `playgroundUrl`, `playgroundHint`, `visualize`,
252
257
  and `trajectory`. The `trace` value gives the saved path when event output is
253
- enabled. With `--prod`, `run` prints a `deliveryId` when the deployment accepts
254
- the turn and returns before the turn finishes. A fresh start has no
255
- `sessionId` yet, even with `--dry-run`; a continuation includes it. `--prod`
256
- starts ignore `--events`, `--no-events`, `--text`, `--timeout-ms`, and
257
- `--no-stream`, and a successful start exits `0` before the turn outcome is
258
- known. See [Verify a hosted turn](../deployment.md#verify-a-hosted-turn).
258
+ enabled.
259
+
260
+ With `--prod`, `run` returns as soon as the deployment accepts the turn and
261
+ exits `0` before the turn outcome is known. It prints `deliveryId`,
262
+ `workflowId`, and `sessionMode`, plus `dryRun` and `asOf` when set. A fresh
263
+ start has no `sessionId` yet; a continuation echoes the `--session` value.
264
+ `--events`, `--no-events`, `--text`, `--timeout-ms`, and `--no-stream` have no
265
+ effect. See [Verify a hosted turn](../deployment.md#verify-a-hosted-turn) for
266
+ finding and following the new session.
259
267
 
260
268
  ### Call a tool {#call}
261
269
 
@@ -301,9 +309,9 @@ Text output shows the session ID, channel, mode, turn count, running status,
301
309
  and update time. `--json` prints `{ sessions }`, including continuation
302
310
  tokens.
303
311
 
304
- Hosted deployments don't support `sessions`. Find a hosted session in the
305
- deployment's **Sessions** list in the dashboard, then check it with
306
- [`session <sessionId> --prod`](#session).
312
+ Hosted deployments don't support `sessions`. Find a hosted session ID in the
313
+ [`logs --prod`](#logs) headers or the deployment's **Sessions** list in the
314
+ dashboard, then check it with [`session <sessionId> --prod`](#session).
307
315
 
308
316
  ### Inspect a session {#session}
309
317
 
@@ -313,7 +321,7 @@ bdk session <sessionId> [--url <baseUrl> | --prod]
313
321
  [--json | --text | --events] [--out <file.ndjson>]
314
322
 
315
323
  bdk session --prod [<sessionId>] --slug <slug> --message <text>
316
- [--dry-run] [--as-of <instant>] [--component <key>]
324
+ [--team <id>] [--dry-run] [--as-of <instant>] [--component <key>]
317
325
  ```
318
326
 
319
327
  | Option | Contract |
@@ -323,28 +331,33 @@ bdk session --prod [<sessionId>] --slug <slug> --message <text>
323
331
  | `--json` | Print the trajectory object. |
324
332
  | `--events` | Print `{ sessionId, events }` with the raw event list. |
325
333
  | `--out <file.ndjson>` | Write the raw NDJSON trace instead of printing it. |
326
- | `--prod --message <text>` | Start a hosted session or continue the supplied hosted session ID. |
334
+ | `--prod --message <text>` | Start a hosted session, or continue the supplied hosted session ID, with the same contract as [`run --prod`](#run). |
327
335
 
328
- `--events` and `--json` are mutually exclusive. With `--prod`, the command
329
- prints the session's runs and logs in text or JSON, and `--events` and `--out`
330
- aren't available. While a hosted turn is running, text output also reports the
331
- event count so far and prints `Turn running; runs may lag behind events.` Use
332
- [`resume`](#resume) to continue a conversational session.
336
+ `--events` and `--json` are mutually exclusive. Use [`resume`](#resume) to
337
+ continue a conversational session on a local or running server.
338
+
339
+ With `--prod`, the command prints the session's hosted executions: one line
340
+ per run with its status, duration, and time, followed by that run's log
341
+ lines. `--json` prints `{ sessionId, executions, startLog, ... }`. `--events`
342
+ and `--out` aren't available. While a turn is running, text output also
343
+ reports the event count and latest event type and prints
344
+ `Turn running; runs may lag behind events.` A run can show `running` with no
345
+ logs until the turn ends, so a growing event count is the progress signal.
333
346
 
334
347
  ### Follow logs {#logs}
335
348
 
336
349
  ```text
337
350
  bdk logs [sessionId] [--url <baseUrl> | --prod]
338
- [--session <sessionId>] [--slug <slug>] [--once] [--json]
351
+ [--session <sessionId>] [--slug <slug>] [--team <id>] [--once] [--json]
339
352
  ```
340
353
 
341
354
  The command follows logs until Ctrl-C. `--once` prints the current buffer and
342
355
  exits; `--json` emits newline-delimited JSON events. With `--prod`, it follows
343
- the output of the hosted deployment's most recent sessions and prints a
344
- `==> <sessionId> (<channel>) <==` header each time the output switches
345
- sessions. Pass a session ID, as an argument or with `--session`, to follow only
346
- that session. Hosted log events carry `sessionId` and `line` rather than
347
- `index` and `at`.
356
+ the output of the hosted deployment's most recent sessions on every channel
357
+ and prints a `==> <sessionId> (<channel>) <==` header each time the output
358
+ switches sessions. Pass a session ID, as an argument or with `--session`, to
359
+ follow only that session; a session ID requires `--prod`. Hosted log events
360
+ carry `sessionId` and `line` rather than `index` and `at`.
348
361
 
349
362
  ### Report costs {#cost}
350
363
 
@@ -368,8 +381,8 @@ bdk playground [--url <baseUrl> | --prod] [--session <id>]
368
381
  The command prints the playground URL and opens it unless `--print` is set.
369
382
  `--session` opens a deep link. A running target with credentials that a
370
383
  browser can't send starts a loopback proxy and stays open until Ctrl-C.
371
- `--session` links for a hosted deployment may not open yet; check that session
372
- with [`session <sessionId> --prod`](#session) instead.
384
+ With `--prod`, the URL opens the deployment's playground under **Deployed
385
+ Agents** in the dashboard.
373
386
 
374
387
  ### Inspect a trajectory {#trajectory}
375
388
 
@@ -599,7 +612,7 @@ automatic warning.
599
612
  ```text
600
613
  bdk deploy [--dir <path>] [--slug <slug> | --all] [--team <id>]
601
614
  [--repo <https-url>] [--ref <git-ref>] [--path <agent-path>]
602
- [--cursor-events-repo <owner/name>]...
615
+ [--cursor-events-repo <repo>]...
603
616
  [--allow-domain <domain>]... [--no-wait] [--json]
604
617
  ```
605
618
 
@@ -614,7 +627,7 @@ service-account API key with agent access can deploy.
614
627
  | `--repo <https-url>` | Set the source repository. The CLI infers it from the current checkout when possible. HTTPS is required. |
615
628
  | `--ref <git-ref>` | Set the source Git ref. The CLI infers the current branch when possible. |
616
629
  | `--path <agent-path>` | Set the project path relative to the repository root. |
617
- | `--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. |
630
+ | `--cursor-events-repo <repo>` | Watch a repository's Cursor events. Write `owner/name` for GitHub and Origin, `gitlab.com/<group>/<project>` for GitLab (subgroups allowed), or `bitbucket.org/<workspace>/<repo>` for Bitbucket. Repeat the flag for each repository; the repositories you pass replace the previous list. Without the flag, the deployment watches its GitHub source repository. |
618
631
  | `--allow-domain <domain>` | Add an egress hostname. Repeat for multiple domains; values are combined with `hosting.egressDomains`. |
619
632
  | `--no-wait` | Return after the deployment request is accepted. |
620
633
  | `--json` | Print one object for one target or an array for multiple targets. |
@@ -659,6 +672,36 @@ The command waits for `stopped` by default. `--no-wait` returns after the
659
672
  request is accepted. `--cancel-runs` also requests cancellation of active
660
673
  runs and reminder wakes.
661
674
 
675
+ ### Start a deployment {#start}
676
+
677
+ ```text
678
+ bdk start <slug> [--team <id>] [--json]
679
+ ```
680
+
681
+ `start` resumes a stopped deployment. It doesn't remove the deploy lock
682
+ that [`kill`](#kill) sets.
683
+
684
+ ### Kill a deployment {#kill}
685
+
686
+ ```text
687
+ bdk kill <slug> [--team <id>] [--json]
688
+ ```
689
+
690
+ Use `kill` in an emergency. It locks deploys of the slug, stops the
691
+ deployment, and requests cancellation of its active runs and reminder
692
+ wakes. To bring the deployment back, run
693
+ [`unlock-deploys`](#unlock-deploys) and then [`start`](#start).
694
+
695
+ ### Unlock deploys {#unlock-deploys}
696
+
697
+ ```text
698
+ bdk unlock-deploys <slug> [--team <id>] [--json]
699
+ ```
700
+
701
+ `unlock-deploys` removes the lock that `kill` sets, so `deploy`,
702
+ `upgrade`, and `rollback` work for the slug again. It doesn't resume
703
+ traffic; run `start` for that.
704
+
662
705
  ### Cancel active runs {#cancel-runs}
663
706
 
664
707
  ```text
@@ -689,6 +732,17 @@ bdk upgrade <slug> [--release <id-or-version>]
689
732
  `--release` accepts a release ID or version. Omit it to select the newest
690
733
  ready release. `--json` prints `{ releaseId }`.
691
734
 
735
+ ### Roll back a deployment {#rollback}
736
+
737
+ ```text
738
+ bdk rollback <slug> [--release <id-or-version>]
739
+ [--team <id>] [--json]
740
+ ```
741
+
742
+ `rollback` moves the deployment to an earlier ready release without
743
+ building a new one. Omit `--release` to select the release before the
744
+ current one. `--json` prints `{ releaseId }`.
745
+
692
746
  ### Delete a deployment {#delete}
693
747
 
694
748
  ```text
@@ -737,6 +791,24 @@ most 4096 bytes, and each deployment holds at most 32 secrets.
737
791
  `{ secretNames }` for `set`, `{ secrets }` for `list`, and `{ removed }` for
738
792
  `unset`. Changes are available to subsequent hosted work.
739
793
 
794
+ ### Manage container images {#images}
795
+
796
+ ```text
797
+ bdk images push <local-image> --name <name> [--team <id>] [--json]
798
+ bdk images list [--team <id>] [--json]
799
+ bdk images rm <name> [--team <id>] [--json]
800
+ ```
801
+
802
+ A persistent agent can run inside a container image that your team pushes
803
+ and names in `hosting.image`. `push` needs Docker on your machine. It
804
+ checks the local image first: the image must be `linux/amd64` and have
805
+ `bash`, `git`, `node` 22.13 or newer, and `npm` on `PATH`. The command
806
+ then compresses the image and uploads it under `--name`.
807
+
808
+ `list` shows the team's images and how many the team can keep, and `rm`
809
+ deletes one image. A deploy pins the image it uses, so after you push a
810
+ new image under the same name, deploy again to pick it up.
811
+
740
812
  ## MCP connections
741
813
 
742
814
  ### Connect an MCP client {#mcp}
@@ -753,10 +825,13 @@ bdk mcp install --url <baseUrl> [--bearer-token <token>]
753
825
  | `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. |
754
826
  | `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. |
755
827
 
828
+ Hosted deployments don't support `mcp` or `mcp install`; both report that the
829
+ deployment doesn't support the command when you pass `--prod`.
830
+
756
831
  ### Authorize MCP OAuth {#mcp-oauth}
757
832
 
758
833
  ```text
759
- bdk mcp oauth <connection> [--dir <path>] [--store]
834
+ bdk mcp oauth <connection> [--dir <path>]
760
835
  [--slug <slug>] [--team <id>]
761
836
  ```
762
837
 
@@ -765,13 +840,11 @@ bdk mcp oauth <connection> [--dir <path>] [--store]
765
840
 
766
841
  | Connection | Result |
767
842
  | --- | --- |
768
- | `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. |
769
- | `defineConnection({ cursorAccount: true })` | Authorize the hosted deployment's service account through Cursor. `--store` isn't needed. |
843
+ | `defineConnection({ url, oauth: true })` | Open a browser PKCE flow and save tokens in `mcp-auth.json` under the CLI config directory. |
844
+ | `defineConnection({ cursorAccount: true })` | Authorize the hosted deployment's service account through Cursor. |
770
845
 
771
- Stored secret names are `MCP_OAUTH_<NAME>_ACCESS_TOKEN`,
772
- `MCP_OAUTH_<NAME>_REFRESH_TOKEN`, and `MCP_OAUTH_<NAME>_CLIENT_ID`. Declare
773
- them in `hosting.secretNames`. URL-connection tokens are bound to the resource
774
- URL; authorize again after changing it.
846
+ URL-connection tokens are bound to the resource URL; authorize again after
847
+ changing it.
775
848
 
776
849
  See [Host MCP OAuth](../guides/mcp-oauth.md) for the full setup flow.
777
850
 
@@ -61,8 +61,9 @@ empty value at connect time, which the server reports as an auth failure.
61
61
 
62
62
  For servers that speak OAuth, set `oauth: true` and authorize with the
63
63
  CLI or mid-run Connect. Tokens live in `mcp-auth.json` under the CLI
64
- config directory. `--store` copies them onto the deployment as
65
- `MCP_OAUTH_<NAME>_*` secrets.
64
+ config directory of the machine that authorized them. A hosted agent
65
+ reaches OAuth servers through a
66
+ [Cursor account connection](#cursor-account-mcp-connection) instead.
66
67
 
67
68
  ```ts
68
69
  export default defineConnection({
@@ -72,8 +73,7 @@ export default defineConnection({
72
73
  ```
73
74
 
74
75
  ```text
75
- bdk mcp oauth inventory # browser PKCE → local mcp-auth.json
76
- bdk mcp oauth inventory --store # also upsert deployment secrets
76
+ bdk mcp oauth inventory # browser PKCE → local mcp-auth.json
77
77
  ```
78
78
 
79
79
  Full walkthrough: [Host MCP OAuth](../guides/mcp-oauth.md). Companion
@@ -294,7 +294,8 @@ connection.
294
294
 
295
295
  ## Related
296
296
 
297
- - [Host MCP OAuth](../guides/mcp-oauth.md): `mcp oauth`, Connect, `--store`
297
+ - [Host MCP OAuth](../guides/mcp-oauth.md): `mcp oauth`, Connect, and
298
+ hosted agents
298
299
  - [Tools](./tools.md): authored tools that wrap MCP connections
299
300
  - [Webhooks](../guides/webhooks.md): calling MCP connections from handlers
300
301
  - [Peer agents](../guides/agent-to-agent.md): when a specialist is its
@@ -88,8 +88,7 @@ file-level metadata; case reporters add to the file's reporters.
88
88
  ## Send turns in a case
89
89
 
90
90
  `await t.send(message, options?)` runs one turn and waits until it
91
- finishes, fails, or parks for approval. Several sends in one test share
92
- the session.
91
+ finishes or fails. Several sends in one test share the session.
93
92
 
94
93
  The returned turn exposes its assistant `message`, `sessionId`,
95
94
  `events`, ordered `toolCalls`, `ok`, and one-based `index`. Assertions
@@ -115,8 +114,7 @@ reports every violated contract.
115
114
 
116
115
  | Assertion | Checks |
117
116
  | --- | --- |
118
- | `t.succeeded()` | Run finished without failure or an unanswered approval |
119
- | `t.parked()` | Run stopped on an unanswered approval |
117
+ | `t.succeeded()` | Run finished without failure |
120
118
  | `t.calledTool(name, matcher?)` | Matching tool request occurred |
121
119
  | `t.notCalledTool(name)` | No request for that tool occurred |
122
120
  | `t.loadedSkill(name)` | Agent opened a named skill |
@@ -209,6 +207,19 @@ call, with the nearest value winning.
209
207
  Treat agent output as untrusted input: wrap it with `fenceUntrusted` and
210
208
  include `EVAL_JUDGE_INJECTION_GUARD` in the judge prompt.
211
209
 
210
+ ## Judge host
211
+
212
+ A judge grades by calling a Cursor model. It needs a Cursor credential
213
+ (`bdk login`, `CURSOR_API_KEY`, or `CURSOR_SERVICE_ACCOUNT_KEY`) and a
214
+ judge model. The grading session offers no tools and turns the local SDK
215
+ sandbox off, including any per-user sandbox config on the machine, so the
216
+ same case grades on macOS, a Linux cloud agent, and a Linux CI runner.
217
+
218
+ Without a credential, or when that credential belongs to a different
219
+ backend than the SDK will call, the case is skipped and the suite
220
+ continues. Without a judge model, the case fails and the assertion names
221
+ where to set one.
222
+
212
223
  ## Datasets and fixtures
213
224
 
214
225
  Load committed JSON, JSONL, or YAML relative to the project root:
@@ -164,7 +164,6 @@ All three consume the same stream, for different jobs:
164
164
  | Add context before the model runs | The channel's `send` message and `workspaceFiles`, `instructions.md`, skills, or `sandbox/workspace/` seed files |
165
165
  | Reply on Slack, comment on a PR, or post any other delivery | The channel's `events` map, or the Slack and GitHub packs |
166
166
  | Show PR progress (merge-box check, sticky banner) | `githubChannel({ progress: { commitStatus, banner } })`; see [GitHub agents](../guides/github.md) |
167
- | Block, approve, or rewrite a tool call | [`needsApproval`](./tools.md#gate-a-tool-on-human-approval) on the tool |
168
167
  | Act on the final assistant text, reject it for a same-turn repair, or fail a bad turn | `defineResult` |
169
168
  | Gate a change on behavior | [Evals](../evals.md) |
170
169
 
@@ -13,8 +13,9 @@ chain, and session-owned resources return `403` to another principal.
13
13
  Unless a section says otherwise, the default auth policy is
14
14
  `localDevStrict()`. `--bearer-token` replaces it with bearer auth, and
15
15
  `--allow-anonymous` replaces it with anonymous access. Built-in JSON
16
- routes use `{ ok: false, error: "<code>", message? }` for errors; MCP
17
- uses JSON-RPC, and custom channel handlers define their own responses.
16
+ routes use `{ ok: false, error: "<code>", message? }` for errors, and MCP
17
+ uses JSON-RPC. Custom channel routes answer hosted callers with an empty
18
+ `202`; see [Call custom channel routes](#call-custom-channel-routes).
18
19
 
19
20
  ## Host routes
20
21
 
@@ -26,7 +27,6 @@ exist only when the playground is enabled.
26
27
  | `GET /` | HTML index of mounted agents; no auth |
27
28
  | `GET /v1/agents` | JSON index of mounted agents; no auth |
28
29
  | `GET /docs`, `GET /docs/*` | Documentation site in either layout; no auth |
29
- | `GET /v1/health` | Host liveness; no auth |
30
30
 
31
31
  `--no-playground` removes the two index routes. `--no-docs` removes the
32
32
  documentation site.
@@ -101,15 +101,6 @@ On loopback under `serve --dev`, the session list includes every
101
101
  principal so webhook and schedule sessions appear in the playground.
102
102
  The cost route returns `404` for an unknown session.
103
103
 
104
- ## Resolve tool approvals
105
-
106
- | Route | Contract |
107
- | --- | --- |
108
- | `GET /v1/session/:sessionId/approvals` | List pending tool approvals |
109
- | `POST /v1/session/:sessionId/approvals/:callId` | Resolve one with `{"decision":"approve"}` or `{"decision":"deny"}` |
110
-
111
- For the lifecycle, see [Gate a tool on human approval](./tools.md#gate-a-tool-on-human-approval).
112
-
113
104
  ## Call a tool without a model turn
114
105
 
115
106
  `POST /v1/tools/:toolName` runs a server tool with no model turn.
@@ -141,8 +132,7 @@ These read-only routes describe the running agent.
141
132
  | --- | --- |
142
133
  | `GET /v1/info` | Return the discovered model, tools, skills, connections, subagents, channels, schedules, hooks, and diagnostics |
143
134
  | `GET /v1/tools` | Return live server tools and advertised MCP tools as `{ name, title?, source? }`; bind session-specific listings with `session` or `continuationToken` |
144
- | `GET /v1/tools/:name` | Return one tool's description, execution mode, approval and effect rules, schemas, and source |
145
- | `GET /v1/health` | Return per-agent liveness; no auth |
135
+ | `GET /v1/tools/:name` | Return one tool's description, execution mode, effect rules, schemas, and source |
146
136
  | `GET /v1/logs?after=N` | Return recent server logs and the next polling cursor |
147
137
 
148
138
  An unknown tool name returns `404` with available names. If an MCP
@@ -162,9 +152,9 @@ The list follows the same ownership rules as `GET /v1/sessions`. See
162
152
  ## Call custom channel routes
163
153
 
164
154
  Authored routes mount under `/v1/channels/<id>` with their declared
165
- methods and paths. The host validates their Zod body and query schemas
166
- before calling the handler, returning `400` on failure. Each channel's
167
- auth chain applies. See [Channels](./channels.md).
155
+ methods and paths, and each channel's auth chain applies. A hosted
156
+ caller receives `202 Accepted` with an empty body, never the handler's
157
+ response. See [Route responses](./channels.md#route-responses).
168
158
 
169
159
  ## MCP endpoint
170
160
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: "Playground"
3
- description: "The built-in web UI: chat with streaming, Try buttons and slash commands, session replay, approvals, and dev-mode dispatch."
3
+ description: "The built-in web UI: chat with streaming, Try buttons and slash commands, session replay, and dev-mode dispatch."
4
4
  ---
5
5
 
6
6
  # Playground
@@ -16,9 +16,8 @@ lists them all.
16
16
  | --- | --- |
17
17
  | Chat | Talk to the agent. Text and reasoning stream live, and tool calls appear inline with their arguments, output, and error state |
18
18
  | Slash commands | Custom channel routes without path parameters become composer commands; GitHub and Slack ingress routes are excluded. A `drive` route becomes `/drive <pr-url>`, with `/help` and autocomplete |
19
- | Try | Invoke a custom channel route from the Agent tab. The modal remembers your last body per endpoint, copies curl, and opens a session when the route creates one |
19
+ | Try | Invoke a custom channel route from the Agent tab. The modal remembers your last body per endpoint and copies curl. Find the session the route starts under Runs |
20
20
  | Runs | Browse the sessions you own and eval runs. Search by title or identifier; open sessions in Chat, Trace, or Raw and eval runs in Evals |
21
- | Approvals | Parked `needsApproval` tool calls render Approve / Deny buttons |
22
21
  | Evals | List and run filesystem evals from the browser |
23
22
  | Agent | Inspect the discovered tools, skills, subagents, MCP connections, channels, and hooks |
24
23
  | Raw | Inspect the selected session's event stream |
@@ -40,5 +39,3 @@ and paste the token into the token field in the navbar.
40
39
 
41
40
  - [HTTP API](./http-api.md): the HTTP surface the playground uses
42
41
  - [Sessions and streaming](./sessions.md): the streams it renders
43
- - [Gate a tool on human approval](./tools.md#gate-a-tool-on-human-approval):
44
- the approval buttons in context
@@ -66,6 +66,7 @@ and `host` (shared services: `host.mcp`, `host.github`, `host.slack`,
66
66
 
67
67
  | Mode | What fires |
68
68
  | --- | --- |
69
+ | Cursor-managed hosting | Cron cadence, from the schedules in the deployed release. See [Schedules on Cursor hosting](#schedules-on-cursor-hosting) |
69
70
  | Production `bdk serve` | Cron cadence. `--no-schedules` disables them. Run them in exactly one process per project |
70
71
  | `serve --dev` | Nothing automatic. Dispatch by hand through the same path production uses |
71
72
 
@@ -77,6 +78,27 @@ curl -X POST http://127.0.0.1:3000/<slug>/v1/dev/schedules/heartbeat
77
78
  The playground can dispatch schedules in dev mode too, and
78
79
  `handle.dispatchSchedule("heartbeat")` does it programmatically.
79
80
 
81
+ ### Schedules on Cursor hosting
82
+
83
+ Each deploy registers the schedules in its release and replaces the
84
+ previous set, so a schedule you delete from `bot/schedules/` stops after
85
+ the next deploy. Hosted schedules need `@cursor/bdk` 0.2.14 or newer in
86
+ the project. A deployment built with an earlier version has no hosted
87
+ schedules until you upgrade the package and deploy again.
88
+
89
+ Every fire starts a new runtime. A Markdown schedule starts a task
90
+ session there, and a `run` handler must finish in 26 minutes, including
91
+ the work it passes to `receive` and `waitUntil`. Nothing in module memory
92
+ carries over to the next fire, so keep state in `ctx.host.kv` or
93
+ `ctx.host.files`. Each scheduled time starts at most one run, and a
94
+ stopped deployment skips its fires.
95
+
96
+ A schedule's name is its path under `bot/schedules/` without the file
97
+ extension. On Cursor hosting, a name has 1 to 100 letters, digits, `.`,
98
+ `_`, `-`, or `/`, and starts with a letter or digit. A release holds at
99
+ most 64 schedules, and `deploy` rejects a release that breaks either
100
+ rule.
101
+
80
102
  ## Reminders
81
103
 
82
104
  A reminder is created at runtime and bound to a channel continuation. A
@@ -126,14 +148,15 @@ await handle.createReminder({
126
148
  });
127
149
  ```
128
150
 
129
- Use an anonymous `run` handler only for legacy projects that can re-arm
130
- it after a restart. New projects should use a named handler.
151
+ Architecture v2, the default, rejects an anonymous `run` handler and a
152
+ function `until`, locally and on Cursor hosting. Use a prompt or a named
153
+ handler.
131
154
 
132
155
  | Form | What it does | After a restart |
133
156
  | --- | --- | --- |
134
157
  | Prompt | Sends `prompt` into the session. `until` is the standing cancellation condition for the model | Stays armed |
135
158
  | Named handler | Runs a discovered handler with serializable `args`; it starts a model turn only if the handler calls `followup` | Stays armed |
136
- | Anonymous `run` | Host handler returns `stop`, `skip`, or `delivered` per tick; it starts a model turn only if it calls `followup` | Must be re-armed |
159
+ | Anonymous `run` | Architecture v1 only. Host handler returns `stop`, `skip`, or `delivered` per tick; it starts a model turn only if it calls `followup` | Must be re-armed |
137
160
 
138
161
  The same API is `host.reminders` on channel handlers, tools, and
139
162
  schedule runs. `builtinTools: { reminders: true }` adds
@@ -32,7 +32,7 @@ inspection are different jobs.
32
32
  | Identifier | Use it for |
33
33
  | --- | --- |
34
34
  | `continuationToken` | Continue a conversation through its channel |
35
- | `sessionId` | Stream events, inspect state, resolve approvals, or run a session-bound tool call |
35
+ | `sessionId` | Stream events, inspect state, or run a session-bound tool call |
36
36
 
37
37
  Channels decide what a continuation token looks like. Slack uses its
38
38
  thread identity. A PR channel can use a key such as `pr:owner/repo#1`.
@@ -88,7 +88,6 @@ within one session. The `at` field is an ISO-8601 timestamp.
88
88
  | Reasoning | `reasoning.appended`, `reasoning.completed` | Streamed reasoning blocks |
89
89
  | Reply | `message.appended`, `message.completed` | Text deltas and finalized assistant messages |
90
90
  | Tools | `actions.requested`, `actions.completed`, `action.result`, `action.tool_retry` | Tool names, validated arguments, outputs, and errors. `action.tool_retry` means a read is running again after a transient failure |
91
- | Approvals | `action.approval_requested`, `action.approval_resolved` | A parked tool call and the human decision |
92
91
  | Subagents | `subagent.called`, `subagent.completed` | Delegated work |
93
92
  | Artifacts | `artifact.tagged` | A durable [artifact](./artifacts.md) was tagged for this session, by host code or `tag_artifact` |
94
93
 
@@ -32,7 +32,7 @@ description: Use when a pull request needs a structured approval checklist.
32
32
 
33
33
  1. Call `inspect_pr` and confirm required checks passed.
34
34
  2. Summarize the PR title, author, and remaining risks.
35
- 3. Call `approve_pr` only after an explicit request; it requires approval.
35
+ 3. Call `approve_pr` only after an explicit request.
36
36
  ```
37
37
 
38
38
  Use TypeScript when the content must be generated or include inline
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: "Tools"
3
- description: "Define typed actions the model can call, gate the sensitive ones on approval, and call any server tool without a model turn."
3
+ description: "Define typed actions the model can call, control their dry-run effects, and call any server tool without a model turn."
4
4
  ---
5
5
 
6
6
  # Tools
@@ -217,32 +217,6 @@ use the same exposed names. See
217
217
  [MCP connections](./connections.md#advertise-tools) for the full
218
218
  contract.
219
219
 
220
- ## Gate a tool on human approval
221
-
222
- A server tool can require a person to sign off before it runs. Set
223
- `needsApproval` to `true`, or to a predicate over the validated input:
224
-
225
- ```ts
226
- export default defineTool({
227
- description: "Promote a verified build to an environment.",
228
- needsApproval: true, // or: (input) => input.environment === "production"
229
- inputSchema: z.object({
230
- service: z.string(),
231
- buildId: z.string(),
232
- environment: z.string(),
233
- }),
234
- async execute({ service, buildId, environment }) {
235
- return { promoted: true, service, buildId, environment };
236
- },
237
- });
238
- ```
239
-
240
- The call parks, the turn stays running, and the stream emits
241
- `action.approval_requested` until someone resolves it from the
242
- playground, `POST /v1/session/:id/approvals/:callId`, or Slack
243
- Approve/Deny cards. Approvals exist for server tools on the local
244
- runtime only, and parked calls don't survive a host restart.
245
-
246
220
  ## Call a tool without a model turn
247
221
 
248
222
  Server tools can be called deterministically. You pick the tool and the
@@ -324,8 +298,8 @@ spoofed payload can't steer it.
324
298
  Test tools with `call` before blaming prompts. If the tool's output is
325
299
  wrong, no instruction change fixes it.
326
300
 
327
- Gate side effects with `needsApproval`. Declare each tool's `effect` so
328
- dry-run sessions can execute reads and stub writes.
301
+ Declare each tool's `effect` so dry-run sessions can execute reads and
302
+ stub writes.
329
303
 
330
304
  ## Related
331
305
 
@@ -51,7 +51,7 @@ checked later, and an active turn can be interrupted when the task
51
51
  changes.
52
52
 
53
53
  See [Grok Bot agents](../guides/grokbot-agents.md) for the extension's
54
- conversation and approval boundaries.
54
+ conversation boundaries.
55
55
 
56
56
  ## What to edit
57
57