@cursor/bdk 0.2.4 → 0.2.6

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 (348) hide show
  1. package/README.md +76 -1154
  2. package/dist/bin/agent-serve.js +17 -11
  3. package/dist/channels/github/github-channel.d.ts +4 -4
  4. package/dist/channels/github/github-channel.js +5 -5
  5. package/dist/channels/slack/eval-directive.js +1 -1
  6. package/dist/docs/404.html +2 -2
  7. package/dist/docs/assets/{app.4kQ8Db_q.js → app.CJLKDVza.js} +4 -4
  8. package/dist/docs/assets/{building-with-agents.md.-fcjCmJU.js → building-with-agents.md.BPjPFxFg.js} +2 -2
  9. package/dist/docs/assets/{building-with-agents.md.-fcjCmJU.lean.js → building-with-agents.md.BPjPFxFg.lean.js} +1 -1
  10. package/dist/docs/assets/chunks/@localSearchIndexroot.Bq-pxRXm.js +1 -0
  11. package/dist/docs/assets/chunks/{VPLocalSearchBox.DY1RwB8Q.js → VPLocalSearchBox.BW9mrQmq.js} +1 -1
  12. package/dist/docs/assets/chunks/{arc.CxE_fSPK.js → arc.D8ZOvM1m.js} +1 -1
  13. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.CPX426ui.js → architectureDiagram-Q4EWVU46.CXEKhLW-.js} +1 -1
  14. package/dist/docs/assets/chunks/{baseUniq.CB52JrKG.js → baseUniq.BJkVKblr.js} +1 -1
  15. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.J0cNaQCL.js → blockDiagram-DXYQGD6D.DQDbHxor.js} +1 -1
  16. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DJn3vEGT.js → c4Diagram-AHTNJAMY.ByMD6LYM.js} +1 -1
  17. package/dist/docs/assets/chunks/channel.DCU8W1RP.js +1 -0
  18. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dao618F6.js → chunk-4BX2VUAB.Dtq1aVI9.js} +1 -1
  19. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.QW8Rhjai.js → chunk-4TB4RGXK.BL_XrkoQ.js} +1 -1
  20. package/dist/docs/assets/chunks/{chunk-55IACEB6.DfRLLKF_.js → chunk-55IACEB6.BDPXu94_.js} +1 -1
  21. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.CIV2ApKQ.js → chunk-EDXVE4YY.DhGOQj4k.js} +1 -1
  22. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.BEheSuxp.js → chunk-FMBD7UC4.DSF5nr8v.js} +1 -1
  23. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CUN88ENB.js → chunk-OYMX7WX6.Day7wayw.js} +1 -1
  24. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CgqCs8b_.js → chunk-QZHKN3VN.CpBEC0zA.js} +1 -1
  25. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.iCH0nnTJ.js → chunk-YZCP3GAM.X_7rY1rx.js} +1 -1
  26. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DwpXsM06.js +1 -0
  27. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DwpXsM06.js +1 -0
  28. package/dist/docs/assets/chunks/clone.DH6Mx2zB.js +1 -0
  29. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BLcUxhWE.js → cose-bilkent-S5V4N54A.BVRmi2ko.js} +1 -1
  30. package/dist/docs/assets/chunks/{dagre-KV5264BT.Ep7LofOm.js → dagre-KV5264BT.Dei9oslB.js} +1 -1
  31. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.Bzf4GSQ4.js → diagram-5BDNPKRD._M-efGt7.js} +1 -1
  32. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DD6Jh-eM.js → diagram-G4DWMVQ6.D1Vmhfsj.js} +1 -1
  33. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.oOIl8bWd.js → diagram-MMDJMWI5.cE1bmvAC.js} +1 -1
  34. package/dist/docs/assets/chunks/{diagram-TYMM5635.DHs85Ade.js → diagram-TYMM5635.DkXAfznP.js} +1 -1
  35. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BIb5ghCk.js → erDiagram-SMLLAGMA.DH_pSwPg.js} +1 -1
  36. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DV4paY9k.js → flowDiagram-DWJPFMVM.kAWVN9j1.js} +1 -1
  37. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.AyEKA6_v.js → ganttDiagram-T4ZO3ILL.8r0w49-p.js} +1 -1
  38. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.BltiCDFo.js → gitGraphDiagram-UUTBAWPF.BDa7Bi1i.js} +1 -1
  39. package/dist/docs/assets/chunks/{graph.DzuEYGdC.js → graph.BMPXHz_B.js} +1 -1
  40. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.BV2l981J.js → infoDiagram-42DDH7IO.BmlcqewS.js} +1 -1
  41. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.BA4Izf-m.js → ishikawaDiagram-UXIWVN3A.CVSEQSul.js} +1 -1
  42. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.DjaFbFS3.js → journeyDiagram-VCZTEJTY.BpeWJ5n-.js} +1 -1
  43. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CfTFieDs.js → kanban-definition-6JOO6SKY.DHbDXuxB.js} +1 -1
  44. package/dist/docs/assets/chunks/{layout.DzfWqTBV.js → layout.CzrCDgkP.js} +1 -1
  45. package/dist/docs/assets/chunks/{linear.BO6mpulV.js → linear.HwBsflwN.js} +1 -1
  46. package/dist/docs/assets/chunks/{min.BGgTadgT.js → min.DqGHolT3.js} +1 -1
  47. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.DPuIXVWY.js → mindmap-definition-QFDTVHPH.ZYGlOawh.js} +1 -1
  48. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.BOnl3bBg.js → pieDiagram-DEJITSTG.C2KRXlNR.js} +1 -1
  49. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DNB6Ckdc.js → quadrantDiagram-34T5L4WZ.CHj3Qefp.js} +1 -1
  50. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.D5-Qo7vb.js → requirementDiagram-MS252O5E.B1L4Tf7k.js} +1 -1
  51. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.8t65cesf.js → sankeyDiagram-XADWPNL6.dNR2yi1B.js} +1 -1
  52. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.CaG07BdS.js → sequenceDiagram-FGHM5R23.BrvQ3C6m.js} +1 -1
  53. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.TKOweTB6.js → stateDiagram-FHFEXIEX.BtehEykA.js} +1 -1
  54. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.kzD0-U89.js +1 -0
  55. package/dist/docs/assets/chunks/{theme.Dx-JhpTB.js → theme.BDHBZUkP.js} +2 -2
  56. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.fE53zQ2s.js → timeline-definition-GMOUNBTQ.Bn7nhqEN.js} +1 -1
  57. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.DJsZZaJg.js → vennDiagram-DHZGUBPP.DKhc38sz.js} +1 -1
  58. package/dist/docs/assets/chunks/wardley-RL74JXVD.DOXQ0w8J.js +162 -0
  59. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js → wardleyDiagram-NUSXRM2D.Bbq5B2Ic.js} +1 -1
  60. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.XXrhBc7a.js → xychartDiagram-5P7HB3ND.B77HE1K8.js} +1 -1
  61. package/dist/docs/assets/{deployment.md.UhnJIMr-.js → deployment.md.BdqTiGdc.js} +4 -4
  62. package/dist/docs/assets/{deployment.md.UhnJIMr-.lean.js → deployment.md.BdqTiGdc.lean.js} +1 -1
  63. package/dist/docs/assets/{evals.md.CCAtNcuL.js → evals.md.C851kViu.js} +3 -3
  64. package/dist/docs/assets/{evals.md.CCAtNcuL.lean.js → evals.md.C851kViu.lean.js} +1 -1
  65. package/dist/docs/assets/{guides_agent-to-agent.md.CGkicXeB.js → guides_agent-to-agent.md.Cps5NiCV.js} +2 -2
  66. package/dist/docs/assets/{guides_agent-to-agent.md.CGkicXeB.lean.js → guides_agent-to-agent.md.Cps5NiCV.lean.js} +1 -1
  67. package/dist/docs/assets/{guides_bitbucket.md.Cb3LPKt3.js → guides_bitbucket.md.BB6fqD-M.js} +2 -2
  68. package/dist/docs/assets/{guides_bitbucket.md.Cb3LPKt3.lean.js → guides_bitbucket.md.BB6fqD-M.lean.js} +1 -1
  69. package/dist/docs/assets/{guides_cloud-agents.md.BuEkDCwo.js → guides_cloud-agents.md.CWJjS9No.js} +2 -2
  70. package/dist/docs/assets/{guides_cloud-agents.md.BuEkDCwo.lean.js → guides_cloud-agents.md.CWJjS9No.lean.js} +1 -1
  71. package/dist/docs/assets/{guides_convert-automation.md.Ci-Y2iD5.js → guides_convert-automation.md.DMEX9nF-.js} +3 -3
  72. package/dist/docs/assets/{guides_convert-automation.md.Ci-Y2iD5.lean.js → guides_convert-automation.md.DMEX9nF-.lean.js} +1 -1
  73. package/dist/docs/assets/{guides_github.md.Bq9kQU9B.js → guides_github.md.Cr1Xlf-m.js} +3 -3
  74. package/dist/docs/assets/{guides_github.md.Bq9kQU9B.lean.js → guides_github.md.Cr1Xlf-m.lean.js} +1 -1
  75. package/dist/docs/assets/{guides_gitlab.md.BM27P43u.js → guides_gitlab.md.CMpmFi4M.js} +2 -2
  76. package/dist/docs/assets/{guides_gitlab.md.BM27P43u.lean.js → guides_gitlab.md.CMpmFi4M.lean.js} +1 -1
  77. package/dist/docs/assets/{guides_grokbot-agents.md.yxVbSlKA.js → guides_grokbot-agents.md.tD1smFhU.js} +2 -2
  78. package/dist/docs/assets/{guides_grokbot-agents.md.yxVbSlKA.lean.js → guides_grokbot-agents.md.tD1smFhU.lean.js} +1 -1
  79. package/dist/docs/assets/{guides_hooks.md.BWoiNaMq.js → guides_hooks.md.5Ce3NXxZ.js} +2 -2
  80. package/dist/docs/assets/{guides_hooks.md.BWoiNaMq.lean.js → guides_hooks.md.5Ce3NXxZ.lean.js} +1 -1
  81. package/dist/docs/assets/{guides_improve.md.COtL-6ft.js → guides_improve.md.CRrYq22s.js} +2 -2
  82. package/dist/docs/assets/{guides_improve.md.COtL-6ft.lean.js → guides_improve.md.CRrYq22s.lean.js} +1 -1
  83. package/dist/docs/assets/{guides_jev.md.CRcgmjDb.js → guides_jev.md.D7XH4JH3.js} +2 -2
  84. package/dist/docs/assets/{guides_jev.md.CRcgmjDb.lean.js → guides_jev.md.D7XH4JH3.lean.js} +1 -1
  85. package/dist/docs/assets/{guides_mcp-oauth.md.Cu6mhZ_3.js → guides_mcp-oauth.md.DR3zhC9r.js} +2 -2
  86. package/dist/docs/assets/{guides_mcp-oauth.md.Cu6mhZ_3.lean.js → guides_mcp-oauth.md.DR3zhC9r.lean.js} +1 -1
  87. package/dist/docs/assets/{guides_opentelemetry.md.DLlIB5rv.js → guides_opentelemetry.md.jcPNrQbH.js} +8 -6
  88. package/dist/docs/assets/{guides_opentelemetry.md.DLlIB5rv.lean.js → guides_opentelemetry.md.jcPNrQbH.lean.js} +1 -1
  89. package/dist/docs/assets/{guides_slack.md.diqqXTTm.js → guides_slack.md.Bn-WupSE.js} +8 -8
  90. package/dist/docs/assets/{guides_slack.md.diqqXTTm.lean.js → guides_slack.md.Bn-WupSE.lean.js} +1 -1
  91. package/dist/docs/assets/{guides_webhooks.md.D0furjw0.js → guides_webhooks.md.BBvAm_VF.js} +2 -2
  92. package/dist/docs/assets/{guides_webhooks.md.D0furjw0.lean.js → guides_webhooks.md.BBvAm_VF.lean.js} +1 -1
  93. package/dist/docs/assets/{hillclimbing.md.Biy0m-Qb.js → hillclimbing.md.Dxvd-0gT.js} +2 -2
  94. package/dist/docs/assets/{hillclimbing.md.Biy0m-Qb.lean.js → hillclimbing.md.Dxvd-0gT.lean.js} +1 -1
  95. package/dist/docs/assets/index.md.Dxxr7pFa.js +27 -0
  96. package/dist/docs/assets/{index.md.CVc_oOA3.lean.js → index.md.Dxxr7pFa.lean.js} +1 -1
  97. package/dist/docs/assets/{quickstart.md.CHpHPBUN.js → quickstart.md.BK5gjHM2.js} +2 -2
  98. package/dist/docs/assets/{quickstart.md.CHpHPBUN.lean.js → quickstart.md.BK5gjHM2.lean.js} +1 -1
  99. package/dist/docs/assets/{reference_agent-config.md.Cj5uBKp4.js → reference_agent-config.md.DrtLxWgR.js} +4 -4
  100. package/dist/docs/assets/{reference_agent-config.md.Cj5uBKp4.lean.js → reference_agent-config.md.DrtLxWgR.lean.js} +1 -1
  101. package/dist/docs/assets/{reference_artifacts.md.CQfKq8F2.js → reference_artifacts.md.DLV9MZES.js} +2 -2
  102. package/dist/docs/assets/{reference_artifacts.md.CQfKq8F2.lean.js → reference_artifacts.md.DLV9MZES.lean.js} +1 -1
  103. package/dist/docs/assets/{reference_channels.md.mbNtKCiR.js → reference_channels.md.LbNIJBwd.js} +2 -2
  104. package/dist/docs/assets/{reference_channels.md.mbNtKCiR.lean.js → reference_channels.md.LbNIJBwd.lean.js} +1 -1
  105. package/dist/docs/assets/{reference_cli.md.DgeLTO18.js → reference_cli.md.BsgDqYPh.js} +4 -4
  106. package/dist/docs/assets/{reference_cli.md.DgeLTO18.lean.js → reference_cli.md.BsgDqYPh.lean.js} +1 -1
  107. package/dist/docs/assets/{reference_connections.md.COq--gAm.js → reference_connections.md.Bljpve-y.js} +4 -4
  108. package/dist/docs/assets/{reference_connections.md.COq--gAm.lean.js → reference_connections.md.Bljpve-y.lean.js} +1 -1
  109. package/dist/docs/assets/{reference_evals.md.CJm3uCUm.js → reference_evals.md.D5i8PuXJ.js} +2 -2
  110. package/dist/docs/assets/{reference_evals.md.CJm3uCUm.lean.js → reference_evals.md.D5i8PuXJ.lean.js} +1 -1
  111. package/dist/docs/assets/{reference_extensions.md.pa2tN-e4.js → reference_extensions.md.OUacPetl.js} +3 -3
  112. package/dist/docs/assets/{reference_extensions.md.pa2tN-e4.lean.js → reference_extensions.md.OUacPetl.lean.js} +1 -1
  113. package/dist/docs/assets/{reference_hooks.md.DbthhtIR.js → reference_hooks.md.C5LCJ1R3.js} +2 -2
  114. package/dist/docs/assets/{reference_hooks.md.DbthhtIR.lean.js → reference_hooks.md.C5LCJ1R3.lean.js} +1 -1
  115. package/dist/docs/assets/{reference_http-api.md.BZOvhCqY.js → reference_http-api.md.DbFNOubV.js} +1 -1
  116. package/dist/docs/assets/{reference_instructions.md.Bdwscs4G.js → reference_instructions.md.DrcHZXig.js} +2 -2
  117. package/dist/docs/assets/{reference_instructions.md.Bdwscs4G.lean.js → reference_instructions.md.DrcHZXig.lean.js} +1 -1
  118. package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +1 -0
  119. package/dist/docs/assets/{reference_playground.md.BdQzRJc2.lean.js → reference_playground.md.1hx0gcIu.lean.js} +1 -1
  120. package/dist/docs/assets/{reference_project-layout.md.CpLQ9j4K.js → reference_project-layout.md.C2JMRh7p.js} +2 -2
  121. package/dist/docs/assets/{reference_prompt.md.BQZB4eaV.js → reference_prompt.md.DqPh71XN.js} +3 -3
  122. package/dist/docs/assets/{reference_prompt.md.BQZB4eaV.lean.js → reference_prompt.md.DqPh71XN.lean.js} +1 -1
  123. package/dist/docs/assets/{reference_schedules.md.BVU5EFbz.js → reference_schedules.md.BuJ8fgMa.js} +2 -2
  124. package/dist/docs/assets/{reference_schedules.md.BVU5EFbz.lean.js → reference_schedules.md.BuJ8fgMa.lean.js} +1 -1
  125. package/dist/docs/assets/reference_sessions.md.CM5zo3w4.js +1 -0
  126. package/dist/docs/assets/{reference_sessions.md.DeRUItHD.lean.js → reference_sessions.md.CM5zo3w4.lean.js} +1 -1
  127. package/dist/docs/assets/{reference_skills.md.Cy00QMKS.js → reference_skills.md.ClkMoQsV.js} +2 -2
  128. package/dist/docs/assets/{reference_skills.md.Cy00QMKS.lean.js → reference_skills.md.ClkMoQsV.lean.js} +1 -1
  129. package/dist/docs/assets/{reference_subagents.md.B8oyeXOI.js → reference_subagents.md.gmPt5J-M.js} +2 -2
  130. package/dist/docs/assets/{reference_subagents.md.B8oyeXOI.lean.js → reference_subagents.md.gmPt5J-M.lean.js} +1 -1
  131. package/dist/docs/assets/{reference_tools.md.hg2Wi5Bq.js → reference_tools.md.v3SXVSs_.js} +2 -2
  132. package/dist/docs/assets/{reference_tools.md.hg2Wi5Bq.lean.js → reference_tools.md.v3SXVSs_.lean.js} +1 -1
  133. package/dist/docs/assets/{templates_agentic-owners.md.BykUiZ8j.js → templates_agentic-owners.md.CvmABtia.js} +2 -2
  134. package/dist/docs/assets/templates_grokbot-agents.md.2sydjFiO.js +5 -0
  135. package/dist/docs/assets/templates_grokbot-agents.md.2sydjFiO.lean.js +1 -0
  136. package/dist/docs/assets/{templates_security-reviewer.md.DXMmKl_o.js → templates_security-reviewer.md.Gh6EF9Us.js} +3 -2
  137. package/dist/docs/assets/{templates_security-reviewer.md.DXMmKl_o.lean.js → templates_security-reviewer.md.Gh6EF9Us.lean.js} +1 -1
  138. package/dist/docs/assets/{templates_thermo-quality-review.md.Dg1p1MsG.js → templates_thermo-quality-review.md.B77UyTrX.js} +2 -2
  139. package/dist/docs/assets/{templates_thermo-quality-review.md.Dg1p1MsG.lean.js → templates_thermo-quality-review.md.B77UyTrX.lean.js} +1 -1
  140. package/dist/docs/assets/{templates_thermo-review.md.Dlylkowj.js → templates_thermo-review.md.DRJ7mC5U.js} +2 -2
  141. package/dist/docs/assets/{templates_thermo-review.md.Dlylkowj.lean.js → templates_thermo-review.md.DRJ7mC5U.lean.js} +1 -1
  142. package/dist/docs/assets/templates_triage.md.CNN6b0JZ.js +9 -0
  143. package/dist/docs/assets/{templates_triage.md.CvJyx81N.lean.js → templates_triage.md.CNN6b0JZ.lean.js} +1 -1
  144. package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +1 -0
  145. package/dist/docs/assets/{troubleshooting.md.Cw5PKa3t.lean.js → troubleshooting.md.Bscj6ODe.lean.js} +1 -1
  146. package/dist/docs/building-with-agents.html +36 -36
  147. package/dist/docs/building-with-agents.md +0 -3
  148. package/dist/docs/deployment.html +38 -38
  149. package/dist/docs/deployment.md +2 -9
  150. package/dist/docs/evals.html +37 -37
  151. package/dist/docs/evals.md +2 -5
  152. package/dist/docs/guides/agent-to-agent.html +36 -36
  153. package/dist/docs/guides/agent-to-agent.md +0 -3
  154. package/dist/docs/guides/bitbucket.html +36 -36
  155. package/dist/docs/guides/bitbucket.md +0 -3
  156. package/dist/docs/guides/cloud-agents.html +36 -36
  157. package/dist/docs/guides/cloud-agents.md +0 -4
  158. package/dist/docs/guides/convert-automation.html +37 -37
  159. package/dist/docs/guides/convert-automation.md +2 -5
  160. package/dist/docs/guides/github.html +37 -37
  161. package/dist/docs/guides/github.md +1 -4
  162. package/dist/docs/guides/gitlab.html +36 -36
  163. package/dist/docs/guides/gitlab.md +0 -3
  164. package/dist/docs/guides/grokbot-agents.html +37 -37
  165. package/dist/docs/guides/grokbot-agents.md +1 -4
  166. package/dist/docs/guides/hooks.html +36 -36
  167. package/dist/docs/guides/hooks.md +0 -3
  168. package/dist/docs/guides/improve.html +36 -36
  169. package/dist/docs/guides/improve.md +0 -3
  170. package/dist/docs/guides/jev.html +36 -36
  171. package/dist/docs/guides/jev.md +0 -3
  172. package/dist/docs/guides/mcp-oauth.html +37 -37
  173. package/dist/docs/guides/mcp-oauth.md +1 -4
  174. package/dist/docs/guides/opentelemetry.html +42 -40
  175. package/dist/docs/guides/opentelemetry.md +4 -5
  176. package/dist/docs/guides/slack.html +43 -43
  177. package/dist/docs/guides/slack.md +14 -24
  178. package/dist/docs/guides/webhooks.html +36 -36
  179. package/dist/docs/guides/webhooks.md +0 -3
  180. package/dist/docs/hashmap.json +1 -1
  181. package/dist/docs/hillclimbing.html +36 -36
  182. package/dist/docs/hillclimbing.md +0 -3
  183. package/dist/docs/index.html +38 -38
  184. package/dist/docs/index.md +9 -16
  185. package/dist/docs/llms-full.txt +153 -234
  186. package/dist/docs/llms.txt +1 -0
  187. package/dist/docs/quickstart.html +36 -36
  188. package/dist/docs/quickstart.md +2 -7
  189. package/dist/docs/reference/agent-config.html +38 -38
  190. package/dist/docs/reference/agent-config.md +4 -7
  191. package/dist/docs/reference/artifacts.html +36 -36
  192. package/dist/docs/reference/artifacts.md +0 -3
  193. package/dist/docs/reference/channels.html +37 -37
  194. package/dist/docs/reference/channels.md +1 -6
  195. package/dist/docs/reference/cli.html +38 -38
  196. package/dist/docs/reference/cli.md +7 -14
  197. package/dist/docs/reference/connections.html +38 -38
  198. package/dist/docs/reference/connections.md +7 -10
  199. package/dist/docs/reference/evals.html +36 -36
  200. package/dist/docs/reference/evals.md +0 -3
  201. package/dist/docs/reference/extensions.html +37 -37
  202. package/dist/docs/reference/extensions.md +2 -5
  203. package/dist/docs/reference/hooks.html +36 -36
  204. package/dist/docs/reference/hooks.md +0 -3
  205. package/dist/docs/reference/http-api.html +37 -37
  206. package/dist/docs/reference/http-api.md +1 -1
  207. package/dist/docs/reference/instructions.html +36 -36
  208. package/dist/docs/reference/instructions.md +0 -3
  209. package/dist/docs/reference/playground.html +36 -36
  210. package/dist/docs/reference/playground.md +0 -3
  211. package/dist/docs/reference/project-layout.html +37 -37
  212. package/dist/docs/reference/project-layout.md +2 -2
  213. package/dist/docs/reference/prompt.html +37 -37
  214. package/dist/docs/reference/prompt.md +0 -3
  215. package/dist/docs/reference/schedules.html +36 -36
  216. package/dist/docs/reference/schedules.md +0 -3
  217. package/dist/docs/reference/sessions.html +36 -36
  218. package/dist/docs/reference/sessions.md +0 -3
  219. package/dist/docs/reference/skills.html +36 -36
  220. package/dist/docs/reference/skills.md +0 -3
  221. package/dist/docs/reference/subagents.html +36 -36
  222. package/dist/docs/reference/subagents.md +0 -3
  223. package/dist/docs/reference/tools.html +36 -36
  224. package/dist/docs/reference/tools.md +1 -5
  225. package/dist/docs/templates/agentic-owners.html +37 -37
  226. package/dist/docs/templates/agentic-owners.md +2 -3
  227. package/dist/docs/templates/grokbot-agents.html +64 -0
  228. package/dist/docs/templates/grokbot-agents.md +55 -0
  229. package/dist/docs/templates/security-reviewer.html +38 -37
  230. package/dist/docs/templates/security-reviewer.md +7 -11
  231. package/dist/docs/templates/thermo-quality-review.html +37 -37
  232. package/dist/docs/templates/thermo-quality-review.md +5 -8
  233. package/dist/docs/templates/thermo-review.html +37 -37
  234. package/dist/docs/templates/thermo-review.md +5 -7
  235. package/dist/docs/templates/triage.html +39 -39
  236. package/dist/docs/templates/triage.md +8 -4
  237. package/dist/docs/troubleshooting.html +36 -36
  238. package/dist/docs/troubleshooting.md +3 -7
  239. package/dist/evals.d.ts +2 -2
  240. package/dist/internal/cli-ax.d.ts.map +1 -1
  241. package/dist/internal/cli-ax.js +14 -7
  242. package/dist/internal/eval-runner.js +7 -4
  243. package/dist/internal/init-interview.d.ts +0 -1
  244. package/dist/internal/init-interview.d.ts.map +1 -1
  245. package/dist/internal/init-interview.js +15 -24
  246. package/dist/internal/legacy-command-guard.d.ts +4 -1
  247. package/dist/internal/legacy-command-guard.d.ts.map +1 -1
  248. package/dist/internal/legacy-command-guard.js +11 -2
  249. package/dist/internal/platform-timers.d.ts +8 -1
  250. package/dist/internal/platform-timers.d.ts.map +1 -1
  251. package/dist/internal/platform-timers.js +10 -2
  252. package/dist/internal/reminder-control-plane-protocol.d.ts +8 -1
  253. package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -1
  254. package/dist/internal/reminder-runner.d.ts +5 -0
  255. package/dist/internal/reminder-runner.d.ts.map +1 -1
  256. package/dist/internal/reminder-runner.js +27 -1
  257. package/dist/internal/resolve-prod-target.d.ts +3 -0
  258. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  259. package/dist/internal/resolve-prod-target.js +2 -1
  260. package/dist/internal/run-client.d.ts +10 -1
  261. package/dist/internal/run-client.d.ts.map +1 -1
  262. package/dist/internal/run-client.js +152 -51
  263. package/dist/internal/server.d.ts +6 -0
  264. package/dist/internal/server.d.ts.map +1 -1
  265. package/dist/internal/server.js +20 -8
  266. package/dist/internal/session-links.d.ts.map +1 -1
  267. package/dist/internal/session-links.js +8 -7
  268. package/dist/internal/sessions-client.d.ts +1 -0
  269. package/dist/internal/sessions-client.d.ts.map +1 -1
  270. package/dist/internal/sessions-client.js +2 -0
  271. package/docs/README.md +9 -16
  272. package/docs/building-with-agents.md +0 -3
  273. package/docs/deployment.md +2 -9
  274. package/docs/evals.md +2 -5
  275. package/docs/guides/agent-to-agent.md +0 -3
  276. package/docs/guides/bitbucket.md +0 -3
  277. package/docs/guides/cloud-agents.md +0 -4
  278. package/docs/guides/convert-automation.md +2 -5
  279. package/docs/guides/github.md +1 -4
  280. package/docs/guides/gitlab.md +0 -3
  281. package/docs/guides/grokbot-agents.md +1 -4
  282. package/docs/guides/hooks.md +0 -3
  283. package/docs/guides/improve.md +0 -3
  284. package/docs/guides/jev.md +0 -3
  285. package/docs/guides/mcp-oauth.md +1 -4
  286. package/docs/guides/opentelemetry.md +4 -5
  287. package/docs/guides/slack.md +14 -24
  288. package/docs/guides/webhooks.md +0 -3
  289. package/docs/hillclimbing.md +0 -3
  290. package/docs/quickstart.md +2 -7
  291. package/docs/reference/agent-config.md +4 -7
  292. package/docs/reference/artifacts.md +0 -3
  293. package/docs/reference/channels.md +1 -6
  294. package/docs/reference/cli.md +7 -14
  295. package/docs/reference/connections.md +7 -10
  296. package/docs/reference/evals.md +0 -3
  297. package/docs/reference/extensions.md +2 -5
  298. package/docs/reference/hooks.md +0 -3
  299. package/docs/reference/http-api.md +1 -1
  300. package/docs/reference/instructions.md +0 -3
  301. package/docs/reference/playground.md +0 -3
  302. package/docs/reference/project-layout.md +2 -2
  303. package/docs/reference/prompt.md +0 -3
  304. package/docs/reference/schedules.md +0 -3
  305. package/docs/reference/sessions.md +0 -3
  306. package/docs/reference/skills.md +0 -3
  307. package/docs/reference/subagents.md +0 -3
  308. package/docs/reference/tools.md +1 -5
  309. package/docs/templates/agentic-owners.md +2 -3
  310. package/docs/templates/grokbot-agents.md +60 -0
  311. package/docs/templates/security-reviewer.md +7 -11
  312. package/docs/templates/thermo-quality-review.md +5 -8
  313. package/docs/templates/thermo-review.md +5 -7
  314. package/docs/templates/triage.md +8 -4
  315. package/docs/troubleshooting.md +3 -7
  316. package/package.json +2 -2
  317. package/templates/agentic-owners/README.md +0 -3
  318. package/templates/agents-md/README.md +4 -3
  319. package/templates/agents-md/evals/agents.eval.ts +1 -0
  320. package/templates/code-wiki/README.md +0 -3
  321. package/templates/code-wiki/bot/instructions.md +4 -4
  322. package/templates/demo/README.md +0 -3
  323. package/templates/grokbot-agents/README.md +4 -6
  324. package/templates/security-help/README.md +12 -6
  325. package/templates/security-reviewer/README.md +5 -6
  326. package/templates/security-reviewer/bot/tools/post_findings.ts +8 -8
  327. package/templates/thermo-quality-review/README.md +0 -3
  328. package/templates/thermo-quality-review/bot/tools/post_findings.ts +8 -8
  329. package/templates/thermo-review/README.md +0 -3
  330. package/templates/thermo-review/bot/tools/post_findings.ts +8 -8
  331. package/templates/triage/README.md +0 -3
  332. package/templates/triage/overlays/jira/README.md +0 -3
  333. package/templates/triage/overlays/linear/README.md +0 -3
  334. package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +0 -1
  335. package/dist/docs/assets/chunks/channel.BoNycAoN.js +0 -1
  336. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +0 -1
  337. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +0 -1
  338. package/dist/docs/assets/chunks/clone.Db22cH_-.js +0 -1
  339. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +0 -1
  340. package/dist/docs/assets/chunks/wardley-RL74JXVD.844kyrjl.js +0 -162
  341. package/dist/docs/assets/index.md.CVc_oOA3.js +0 -27
  342. package/dist/docs/assets/reference_playground.md.BdQzRJc2.js +0 -1
  343. package/dist/docs/assets/reference_sessions.md.DeRUItHD.js +0 -1
  344. package/dist/docs/assets/templates_triage.md.CvJyx81N.js +0 -9
  345. package/dist/docs/assets/troubleshooting.md.Cw5PKa3t.js +0 -1
  346. /package/dist/docs/assets/{reference_http-api.md.BZOvhCqY.lean.js → reference_http-api.md.DbFNOubV.lean.js} +0 -0
  347. /package/dist/docs/assets/{reference_project-layout.md.CpLQ9j4K.lean.js → reference_project-layout.md.C2JMRh7p.lean.js} +0 -0
  348. /package/dist/docs/assets/{templates_agentic-owners.md.BykUiZ8j.lean.js → templates_agentic-owners.md.CvmABtia.lean.js} +0 -0
@@ -1,27 +0,0 @@
1
- import{_ as t,c as a,o as s,a3 as n}from"./chunks/framework.BNw1pucY.js";const o="/docs/architecture.svg",g=JSON.parse(`{"title":"Grok Bot Development Kit (BDK)","description":"Build, test, and deploy BDK bots and agents as code on Cursor's agent harness.","frontmatter":{"title":"Grok Bot Development Kit (BDK)","description":"Build, test, and deploy BDK bots and agents as code on Cursor's agent harness."},"headers":[],"relativePath":"index.md","filePath":"README.md"}`),r={name:"index.md"};function i(p,e,l,d,c,h){return s(),a("div",null,[...e[0]||(e[0]=[n('<h1 id="grok-bot-development-kit-bdk" tabindex="-1">Grok Bot Development Kit (BDK) <a class="header-anchor" href="#grok-bot-development-kit-bdk" aria-label="Permalink to &quot;Grok Bot Development Kit (BDK)&quot;">​</a></h1><p>The Grok Bot Development Kit (BDK) is how Cursor builds agents. It&#39;s the open-source version of the engine behind Bugbot, Security Review, and Approval Bot.</p><p>A BDK project is a folder of Markdown and TypeScript. Combine deterministic code with model judgment, then make the bot or agent available in source control, Slack, issue trackers, and Cursor.</p><h2 id="why-use-it" tabindex="-1">Why use it <a class="header-anchor" href="#why-use-it" aria-label="Permalink to &quot;Why use it&quot;">​</a></h2><ul><li><p><strong>Bots and agents live in your repo.</strong> Instructions, tools, and evals are files you review, version, and ship like the rest of your code.</p></li><li><p><strong>Cursor runs the loop.</strong> You write the instructions and tools. Your agent gets Cursor&#39;s models, tool calling, skills, MCP, and subagents. Each turn runs on your host.</p></li><li><p><strong>Use it where you work.</strong> Trigger a project from source-control events, Slack threads, custom webhooks, or schedules.</p></li><li><p><strong>Test normal TypeScript.</strong> Add evals and unit tests without a separate configuration language.</p></li><li><p><strong>Choose where it runs.</strong> Deploy to Cursor-managed hosting or run the process on your infrastructure.</p></li></ul><h2 id="when-to-use-bdk" tabindex="-1">When to use BDK <a class="header-anchor" href="#when-to-use-bdk" aria-label="Permalink to &quot;When to use BDK&quot;">​</a></h2><table tabindex="0"><thead><tr><th></th><th>Cursor Automations</th><th>Grok Bot</th><th>BDK</th></tr></thead><tbody><tr><td><strong>Use for</strong></td><td>Repeatable jobs driven by a prompt and a trigger</td><td>Interactive agents that work with you in Cursor</td><td>Agents that need custom code, integrations, tests, or deployment choices</td></tr><tr><td><strong>You define</strong></td><td>A prompt, model, and trigger in the dashboard</td><td>Instructions, skills, and connected tools in the app</td><td>A versioned Markdown and TypeScript project</td></tr><tr><td><strong>Where it runs</strong></td><td>Cursor-managed</td><td>Cursor-managed</td><td>Cursor-managed hosting or your infrastructure</td></tr><tr><td><strong>Choose it when</strong></td><td>The job fits a schedule or event trigger</td><td>You want an agent you can configure and talk to without creating a software project</td><td>You want deterministic code around model judgment and a project your team can review and test</td></tr></tbody></table><h2 id="architecture" tabindex="-1">Architecture <a class="header-anchor" href="#architecture" aria-label="Permalink to &quot;Architecture&quot;">​</a></h2><p>Define the project in source control. Run execution, inference, and sandboxing on Cursor infrastructure or on your own host.</p><p><img src="'+o+`" alt="BDK architecture: you bring the agent as code, and the platform provides triggers, runtime, integrations, and operations"></p><h2 id="bdk-package-availability" tabindex="-1">BDK package availability <a class="header-anchor" href="#bdk-package-availability" aria-label="Permalink to &quot;BDK package availability&quot;">​</a></h2><p>BDK uses the <code>@cursor/bdk</code> package and <code>bdk</code> binary. The package isn&#39;t on npm yet, so its install commands won&#39;t run until publication.</p><h2 id="get-started" tabindex="-1">Get started <a class="header-anchor" href="#get-started" aria-label="Permalink to &quot;Get started&quot;">​</a></h2><p>The preferred BDK workflow starts with <code>bdk init</code> and <code>bdk dev</code>.</p><blockquote><p><strong>Docs ahead:</strong> <code>@cursor/bdk</code> is not on npm yet. The package will install the <code>bdk</code> binary; this block will not run until it publishes.</p></blockquote><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>npm install --global @cursor/bdk</span></span>
2
- <span class="line"><span>bdk init ./my-bot</span></span>
3
- <span class="line"><span>cd my-bot</span></span>
4
- <span class="line"><span>bdk dev</span></span></code></pre></div><p>Open the project in Cursor. BDK projects use <code>bot/</code>.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>my-bot/</span></span>
5
- <span class="line"><span>├── package.json</span></span>
6
- <span class="line"><span>├── bot/</span></span>
7
- <span class="line"><span>│ ├── agent.ts # model and local harness config</span></span>
8
- <span class="line"><span>│ ├── instructions.md # the system prompt</span></span>
9
- <span class="line"><span>│ ├── tools/</span></span>
10
- <span class="line"><span>│ │ └── approve_pr.ts # one typed tool per file</span></span>
11
- <span class="line"><span>│ ├── skills/</span></span>
12
- <span class="line"><span>│ │ └── pr-review/</span></span>
13
- <span class="line"><span>│ │ └── SKILL.md # procedures the model loads on demand</span></span>
14
- <span class="line"><span>│ ├── mcp-connections/</span></span>
15
- <span class="line"><span>│ │ └── linear.ts # tools from an MCP server</span></span>
16
- <span class="line"><span>│ ├── host-connections/</span></span>
17
- <span class="line"><span>│ │ └── internal.ts # host-only MCP tools</span></span>
18
- <span class="line"><span>│ ├── subagents/</span></span>
19
- <span class="line"><span>│ │ └── verifier/</span></span>
20
- <span class="line"><span>│ │ ├── agent.ts</span></span>
21
- <span class="line"><span>│ │ └── instructions.md</span></span>
22
- <span class="line"><span>│ ├── channels/</span></span>
23
- <span class="line"><span>│ │ └── github.ts # wake on pull requests, CI, and comments</span></span>
24
- <span class="line"><span>│ └── hooks/</span></span>
25
- <span class="line"><span>│ └── audit.ts # observe session events</span></span>
26
- <span class="line"><span>└── evals/</span></span>
27
- <span class="line"><span> └── readiness.eval.ts # regression checks</span></span></code></pre></div><p>Describe your bot or agent in Cursor, or edit the files yourself.</p><h2 id="next-steps" tabindex="-1">Next steps <a class="header-anchor" href="#next-steps" aria-label="Permalink to &quot;Next steps&quot;">​</a></h2><ul><li><p><a href="./quickstart.html">Build your first PR reviewer</a>: a working GitHub reviewer, one step at a time.</p></li><li><p>Start from a template with the docs-ahead <code>bdk init --template</code> command: <a href="./templates/security-reviewer.html">security reviewer</a>, <a href="./templates/thermo-review.html">thermo reviewer</a>, <a href="./templates/thermo-quality-review.html">thermo quality reviewer</a>, <a href="./templates/agentic-owners.html">owners-policy approver</a>, <a href="./templates/triage.html">issue triager</a>.</p></li><li><p><a href="./guides/convert-automation.html">Convert a Cursor Automation</a>: export an Automation from the dashboard into a project you own.</p></li><li><p><a href="./building-with-agents.html">Build agents with agents</a>: hand the build to a coding agent with the package&#39;s bundled skills.</p></li><li><p><a href="./reference/project-layout.html">Project layout</a> and <a href="./reference/cli.html">CLI</a>: every folder and every command.</p></li></ul>`,21)])])}const m=t(r,[["render",i]]);export{g as __pageData,m as default};
@@ -1 +0,0 @@
1
- import{_ as t,c as a,o,a3 as r}from"./chunks/framework.BNw1pucY.js";const p=JSON.parse('{"title":"Playground","description":"The built-in web UI: chat with streaming, Try buttons and slash commands, session replay, approvals, and dev-mode dispatch.","frontmatter":{"title":"Playground","description":"The built-in web UI: chat with streaming, Try buttons and slash commands, session replay, approvals, and dev-mode dispatch."},"headers":[],"relativePath":"reference/playground.md","filePath":"reference/playground.md"}'),d={name:"reference/playground.md"};function s(n,e,l,c,i,h){return o(),a("div",null,[...e[0]||(e[0]=[r('<h1 id="playground" tabindex="-1">Playground <a class="header-anchor" href="#playground" aria-label="Permalink to &quot;Playground&quot;">​</a></h1><p><code>bdk serve</code> enables a web playground at <code>http://127.0.0.1:3000/&lt;slug&gt;/playground</code> (or <code>/playground</code> in single mode). In multi-agent mode, each agent has its own playground, and <code>/</code> lists them all.</p><p>The <code>bdk</code> commands on this page are docs-ahead until <code>@cursor/bdk</code> is published; see <a href="/docs/#bdk-package-availability">BDK package availability</a>.</p><h2 id="playground-surfaces" tabindex="-1">Playground surfaces <a class="header-anchor" href="#playground-surfaces" aria-label="Permalink to &quot;Playground surfaces&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Surface</th><th>What you can do</th></tr></thead><tbody><tr><td>Chat</td><td>Talk to the agent. Text and reasoning stream live, and tool calls appear inline with their arguments, output, and error state</td></tr><tr><td>Slash commands</td><td>Custom channel routes without path parameters become composer commands; GitHub and Slack ingress routes are excluded. A <code>drive</code> route becomes <code>/drive &lt;pr-url&gt;</code>, with <code>/help</code> and autocomplete</td></tr><tr><td>Try</td><td>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</td></tr><tr><td>Runs</td><td>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</td></tr><tr><td>Approvals</td><td>Parked <code>needsApproval</code> tool calls render Approve / Deny buttons</td></tr><tr><td>Evals</td><td>List and run filesystem evals from the browser</td></tr><tr><td>Agent</td><td>Inspect the discovered tools, skills, subagents, MCP connections, channels, and hooks</td></tr><tr><td>Raw</td><td>Inspect the selected session&#39;s event stream</td></tr><tr><td>Logs</td><td>Recent server log lines, polled from <code>GET /v1/logs</code></td></tr></tbody></table><p>In <code>--dev</code> on loopback, or with <code>--allow-anonymous</code>, the session list includes every principal.</p><h2 id="remote-access" tabindex="-1">Remote access <a class="header-anchor" href="#remote-access" aria-label="Permalink to &quot;Remote access&quot;">​</a></h2><p>The default <code>localDevStrict()</code> auth admits direct loopback calls only and rejects proxy-forwarding headers, so a tunnel or LAN address won&#39;t work until you pass <code>--bearer-token &lt;secret&gt;</code> (or <code>serve(dir, { authToken })</code>). Open the playground on the remote device and paste the token into the token field in the navbar. <code>--allow-anonymous</code> is the demo-only alternative for trusted networks.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./http-api.html">HTTP API</a>: the HTTP surface the playground uses</li><li><a href="./sessions.html">Sessions and streaming</a>: the streams it renders</li><li><a href="./tools.html#gate-a-tool-on-human-approval">Gate a tool on human approval</a>: the approval buttons in context</li></ul>',10)])])}const m=t(d,[["render",s]]);export{p as __pageData,m as default};
@@ -1 +0,0 @@
1
- import{_ as t,c as s,o,a3 as a}from"./chunks/framework.BNw1pucY.js";const u=JSON.parse('{"title":"Sessions, events, and streaming","description":"Understand how conversations continue, how events stream, and where session data lives.","frontmatter":{"title":"Sessions, events, and streaming","description":"Understand how conversations continue, how events stream, and where session data lives."},"headers":[],"relativePath":"reference/sessions.md","filePath":"reference/sessions.md"}'),n={name:"reference/sessions.md"};function d(r,e,i,c,l,h){return o(),s("div",null,[...e[0]||(e[0]=[a('<h1 id="sessions-events-and-streaming" tabindex="-1">Sessions, events, and streaming <a class="header-anchor" href="#sessions-events-and-streaming" aria-label="Permalink to &quot;Sessions, events, and streaming&quot;">​</a></h1><p>A session keeps one conversation, its workspace, and an append-only record of every message and tool call. Continue it with a continuation token, inspect it with a session ID, and follow progress on the NDJSON stream. Chat sessions wait for follow-ups; task sessions run once and stop.</p><p>The <code>bdk</code> commands on this page are docs-ahead until <code>@cursor/bdk</code> is published; see <a href="/docs/#bdk-package-availability">BDK package availability</a>.</p><h2 id="session-contents" tabindex="-1">Session contents <a class="header-anchor" href="#session-contents" aria-label="Permalink to &quot;Session contents&quot;">​</a></h2><p>Each session combines:</p><ul><li>A channel and authenticated caller</li><li>A conversation the caller can continue</li><li>A workspace for local turns</li><li>An NDJSON event stream</li><li>State that lets the conversation resume after a restart</li></ul><p>Sessions belong to the principal that created them. Follow-up, stream, and list routes return <code>403</code> when another caller tries to access one.</p><h2 id="session-identifiers" tabindex="-1">Session identifiers <a class="header-anchor" href="#session-identifiers" aria-label="Permalink to &quot;Session identifiers&quot;">​</a></h2><p>Sessions have two identifiers because conversation routing and inspection are different jobs.</p><table tabindex="0"><thead><tr><th>Identifier</th><th>Use it for</th></tr></thead><tbody><tr><td><code>continuationToken</code></td><td>Continue a conversation through its channel</td></tr><tr><td><code>sessionId</code></td><td>Stream events, inspect state, resolve approvals, or run a session-bound tool call</td></tr></tbody></table><p>Channels decide what a continuation token looks like. Slack uses its thread identity. A PR channel can use a key such as <code>pr:owner/repo#1</code>. The built-in HTTP API returns an opaque token and rotates it after each accepted follow-up. Reusing a stale HTTP token returns <code>409</code>.</p><p>Use the continuation token to keep talking. Use the session ID to observe or manage the stored session.</p><h2 id="session-modes" tabindex="-1">Session modes <a class="header-anchor" href="#session-modes" aria-label="Permalink to &quot;Session modes&quot;">​</a></h2><table tabindex="0"><thead><tr><th>Mode</th><th>Created by</th><th>What happens after a turn</th></tr></thead><tbody><tr><td><code>chat</code></td><td>HTTP sessions, channel <code>send</code>, Slack, or MCP <code>ask</code></td><td>Waits in <code>session.waiting</code> and accepts follow-ups</td></tr><tr><td><code>task</code></td><td>Markdown schedules and fire-and-forget dispatch</td><td>Ends in <code>session.completed</code> or <code>session.failed</code></td></tr></tbody></table><p>Task sessions don&#39;t accept follow-ups. Trying one returns <code>409</code>.</p><h2 id="follow-ups" tabindex="-1">Follow-ups <a class="header-anchor" href="#follow-ups" aria-label="Permalink to &quot;Follow-ups&quot;">​</a></h2><p>A follow-up to an idle chat session starts another turn. Admission when the session is already busy depends on the channel:</p><table tabindex="0"><thead><tr><th>Path</th><th>Busy-session policy</th></tr></thead><tbody><tr><td>HTTP playground / <code>POST /v1/session/:id</code> / MCP <code>ask</code></td><td><strong>Preempt</strong> (default): interrupt the in-flight turn, wait for it to settle, then run the new message</td></tr><tr><td>Slack mentions / DMs / alert-watch</td><td><strong>Coalesce</strong>: leave the active turn running and queue the follow-up. The running turn may receive it at a tool boundary; any asks that remain become one follow-up turn when it finishes</td></tr></tbody></table><p>Pass <code>admission: &quot;coalesce&quot;</code> on <code>send()</code> to opt into the Slack policy from other callers. Omit it (or pass <code>&quot;preempt&quot;</code>) to keep interrupt semantics.</p><p><code>POST /v1/session/:id/stop</code> interrupts a turn without sending a new message. The stream records <code>turn.failed</code> with <code>status: &quot;cancelled&quot;</code>; the session stays a chat session and can take another follow-up. A whole-message Slack <code>stop</code> / <code>@agent stop</code> does the same for that thread and clears pending coalesced follow-ups.</p><p>See <a href="./tools.html#call-a-tool-without-a-model-turn">Tools</a> for direct-call behavior while a session is busy.</p><h2 id="stream-events" tabindex="-1">Stream events <a class="header-anchor" href="#stream-events" aria-label="Permalink to &quot;Stream events&quot;">​</a></h2><p>Each NDJSON line uses this envelope: <code>{ type, index, sessionId, turnId?, at, data }</code>. The <code>index</code> increases within one session. The <code>at</code> field is an ISO-8601 timestamp.</p><table tabindex="0"><thead><tr><th>Phase</th><th>Events</th><th>What they tell you</th></tr></thead><tbody><tr><td>Session</td><td><code>session.started</code>, <code>session.waiting</code>, <code>session.completed</code>, <code>session.failed</code></td><td>Session creation, readiness, and task completion</td></tr><tr><td>Input</td><td><code>message.received</code></td><td>A user message was accepted</td></tr><tr><td>Turn</td><td><code>turn.queued</code>, <code>turn.started</code>, <code>turn.completed</code>, <code>turn.failed</code></td><td>Queue position under a <a href="./agent-config.html#concurrency"><code>maxRunningTurns</code> cap</a>, then turn status, final result, and token usage</td></tr><tr><td>Steps</td><td><code>step.started</code>, <code>step.completed</code></td><td>Model step boundaries and duration</td></tr><tr><td>Reasoning</td><td><code>reasoning.appended</code>, <code>reasoning.completed</code></td><td>Streamed reasoning blocks</td></tr><tr><td>Reply</td><td><code>message.appended</code>, <code>message.completed</code></td><td>Text deltas and finalized assistant messages</td></tr><tr><td>Tools</td><td><code>actions.requested</code>, <code>actions.completed</code>, <code>action.result</code></td><td>Tool names, validated arguments, outputs, and errors</td></tr><tr><td>Approvals</td><td><code>action.approval_requested</code>, <code>action.approval_resolved</code></td><td>A parked tool call and the human decision</td></tr><tr><td>Subagents</td><td><code>subagent.called</code>, <code>subagent.completed</code></td><td>Delegated work</td></tr><tr><td>Artifacts</td><td><code>artifact.tagged</code></td><td>A durable <a href="./artifacts.html">artifact</a> was tagged for this session, by host code or <code>tag_artifact</code></td></tr></tbody></table><p>Pair <code>actions.requested</code> with <code>actions.completed</code> for each model-step batch. <code>action.result</code> is the live per-call envelope. Read <code>turn.completed.data.usage</code> for input, output, and cache token counts. With <code>bot/result.ts</code>, <code>turn.failed</code> is emitted when <code>commit</code> throws, the turn has no assistant text, or <code>ctx.reject(message)</code> doesn&#39;t lead to an accepted revision.</p><h2 id="stream-or-replay-events" tabindex="-1">Stream or replay events <a class="header-anchor" href="#stream-or-replay-events" aria-label="Permalink to &quot;Stream or replay events&quot;">​</a></h2><p>One endpoint handles both live streaming and replay:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -N</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;http://127.0.0.1:3000/&lt;slug&gt;/v1/session/ses_…/stream?startIndex=0&#39;</span></span></code></pre></div><p>Pass <code>startIndex</code> to continue after the last event you received, including after a server restart. Omit it or pass <code>0</code> to replay the full session before following new events. <code>GET /v1/session/:id/events</code> returns a one-time dump without staying connected.</p><h2 id="local-session-workspace" tabindex="-1">Local session workspace <a class="header-anchor" href="#local-session-workspace" aria-label="Permalink to &quot;Local session workspace&quot;">​</a></h2><p>BDK creates a workspace before the first local turn:</p><table tabindex="0"><thead><tr><th>Source path</th><th>Lands as</th></tr></thead><tbody><tr><td><code>skills/*</code></td><td><code>.cursor/skills/&lt;name&gt;/SKILL.md</code></td></tr><tr><td>agent tools (<code>execution: &quot;agent&quot;</code>)</td><td>scripts in the session workspace, with a catalog in <code>AGENTS.md</code></td></tr><tr><td><code>sandbox/workspace/**</code></td><td>copied in as seed files</td></tr><tr><td>per-send <code>workspaceFiles</code></td><td>written before the turn</td></tr></tbody></table><p>Instructions reach the model as its system prompt; they aren&#39;t written into the workspace. See <a href="./instructions.html#delivery">Instructions</a>.</p><p>Local turns use this workspace as their working directory. Parent directories can contribute <code>AGENTS.md</code> and <code>.cursor</code> settings. Set <code>local.cwd</code> when you need a clean parent directory. A channel can also provide a different working directory for one session, such as a PR worktree.</p><p>See <a href="./agent-config.html#local-cwd">Agent config: local cwd</a> for the inheritance rules.</p><h2 id="session-storage" tabindex="-1">Session storage <a class="header-anchor" href="#session-storage" aria-label="Permalink to &quot;Session storage&quot;">​</a></h2><p>Local session state lives under <code>--state-root</code>. A slugged mount stores it in a subdirectory named for the slug.</p><p>Deleting a session directory removes the session from the server: it disappears from listings and can no longer be streamed or continued.</p><h2 id="inspect-a-saved-event-stream" tabindex="-1">Inspect a saved event stream <a class="header-anchor" href="#inspect-a-saved-event-stream" aria-label="Permalink to &quot;Inspect a saved event stream&quot;">​</a></h2><p>Use <code>trajectory</code> with a saved trace:</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk trajectory --events &lt;state-root&gt;/traces/&lt;sessionId&gt;.ndjson</span></span></code></pre></div><p>The command prints tool calls, the reply, and token usage in the same JSON shape as <code>run</code>. Open the session&#39;s <strong>Trace</strong> view in the playground for a visual timeline.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./http-api.html">HTTP API</a></li><li><a href="./hooks.html">Hooks</a></li><li><a href="./tools.html">Tools</a></li></ul>',44)])])}const m=t(n,[["render",d]]);export{u as __pageData,m as default};
@@ -1,9 +0,0 @@
1
- import{_ as a,c as t,o as s,a3 as i}from"./chunks/framework.BNw1pucY.js";const u=JSON.parse('{"title":"Triage Linear or Jira issues in place","description":"Scaffold the agent, point it at an existing ticket, tune the rubric, run evals, and deploy.","frontmatter":{"title":"Triage Linear or Jira issues in place","description":"Scaffold the agent, point it at an existing ticket, tune the rubric, run evals, and deploy."},"headers":[],"relativePath":"templates/triage.md","filePath":"templates/triage.md"}'),n={name:"templates/triage.md"};function o(r,e,l,p,d,c){return s(),t("div",null,[...e[0]||(e[0]=[i(`<h1 id="triage-linear-or-jira-issues-in-place" tabindex="-1">Triage Linear or Jira issues in place <a class="header-anchor" href="#triage-linear-or-jira-issues-in-place" aria-label="Permalink to &quot;Triage Linear or Jira issues in place&quot;">​</a></h1><p>This agent comments on tickets you already filed. It classifies the issue, writes a <code>Triage:</code> comment, sets bug priority, and links a duplicate when titles match.</p><p>File the ticket however you already do. This template starts after the ticket exists.</p><p>The <code>@cursor/bdk</code> imports and <code>bdk</code> commands on this page are docs-ahead until publication; see <a href="/docs/#bdk-package-availability">BDK package availability</a>.</p><h2 id="scaffold" tabindex="-1">Scaffold <a class="header-anchor" href="#scaffold" aria-label="Permalink to &quot;Scaffold&quot;">​</a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk init ./triage-agent --template triage-linear</span></span>
2
- <span class="line"><span>bdk init ./triage-agent --template triage-jira</span></span></code></pre></div><p>Pick the tracker you use. The agent is the same. The overlay is the connection.</p><p><code>init</code> writes the project, installs dependencies, and puts <code>bdk</code> on PATH.</p><h2 id="log-in" tabindex="-1">Log in <a class="header-anchor" href="#log-in" aria-label="Permalink to &quot;Log in&quot;">​</a></h2><p>Model turns and Cursor MCP use your Cursor account.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>cd triage-agent</span></span>
3
- <span class="line"><span>bdk login</span></span></code></pre></div><p>The command opens a browser if you have no stored credential.</p><h2 id="connect-the-tracker" tabindex="-1">Connect the tracker <a class="header-anchor" href="#connect-the-tracker" aria-label="Permalink to &quot;Connect the tracker&quot;">​</a></h2><p>In the Cursor dashboard, open MCP and connect Linear or Jira.</p><p>The connection stays on the host. The model calls <code>record_triage</code>. Linear and Jira tools stay off the model&#39;s tool list.</p><h2 id="first-verdict" tabindex="-1">First verdict <a class="header-anchor" href="#first-verdict" aria-label="Permalink to &quot;First verdict&quot;">​</a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk dev</span></span></code></pre></div><p>Open the playground. Run <code>/queue/issue</code> and paste an existing issue.</p><p>You can also POST:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">curl</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -X</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> POST</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> http://127.0.0.1:3000/triage-agent/v1/channels/queue/issue</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
4
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -H</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;content-type: application/json&#39;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \\</span></span>
5
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -d</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;{</span></span>
6
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;identifier&quot;: &quot;ENG-142&quot;,</span></span>
7
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;title&quot;: &quot;CSV export returns 500&quot;,</span></span>
8
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;description&quot;: &quot;Export has returned 500 since this morning.&quot;</span></span>
9
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> }&#39;</span></span></code></pre></div><p>For create webhooks, set <code>LINEAR_WEBHOOK_SECRET</code> or <code>JIRA_WEBHOOK_SECRET</code>. Point the provider at the deployed alias under <code>/v1/channels/webhook</code>. Signed events start or resume triage for that issue.</p><p><code>record_triage</code> comments on the issue that started the session, not whatever identifier the model copies out of the ticket body.</p><h2 id="rubric" tabindex="-1">Rubric <a class="header-anchor" href="#rubric" aria-label="Permalink to &quot;Rubric&quot;">​</a></h2><p>Edit <code>bot/skills/triage-rubric.md</code> for kinds, tie-breakers, and what <code>urgent</code> means on your team. The next turn reads the file.</p><p><code>bot/instructions.md</code> is the procedure around the rubric: missing details, when to call <code>record_triage</code>, how to reply.</p><h2 id="evals" tabindex="-1">Evals <a class="header-anchor" href="#evals" aria-label="Permalink to &quot;Evals&quot;">​</a></h2><p>Three smoke cases, one per kind. Run them after you change the rubric.</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk eval</span></span></code></pre></div><p>Eval sessions skip tracker writes.</p><h2 id="deploy" tabindex="-1">Deploy <a class="header-anchor" href="#deploy" aria-label="Permalink to &quot;Deploy&quot;">​</a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk deploy</span></span></code></pre></div><p>Run it from the agent&#39;s git checkout. It infers repository, ref, path, and slug, builds on Cursor-managed hosting, and prints the URL. <code>bdk deployments</code> shows status.</p>`,32)])])}const k=a(n,[["render",o]]);export{u as __pageData,k as default};
@@ -1 +0,0 @@
1
- import{_ as t,c as o,o as d,a3 as r}from"./chunks/framework.BNw1pucY.js";const p=JSON.parse('{"title":"Fix common agent problems","description":"Match the symptom to one corrective action, then inspect the session trace when the first fix is not enough.","frontmatter":{"title":"Fix common agent problems","description":"Match the symptom to one corrective action, then inspect the session trace when the first fix is not enough."},"headers":[],"relativePath":"troubleshooting.md","filePath":"troubleshooting.md"}'),a={name:"troubleshooting.md"};function s(n,e,i,c,l,h){return d(),o("div",null,[...e[0]||(e[0]=[r('<h1 id="fix-common-agent-problems" tabindex="-1">Fix common agent problems <a class="header-anchor" href="#fix-common-agent-problems" aria-label="Permalink to &quot;Fix common agent problems&quot;">​</a></h1><p>Start with three checks:</p><ol><li>Run <code>bdk validate --dir .</code>.</li><li>Confirm the expected agent and connections in <code>bdk info --dir . --json</code>.</li><li>Reproduce once, then inspect the serve log or session trace.</li></ol><p>The <code>bdk</code> commands on this page are docs-ahead until <code>@cursor/bdk</code> is published; see <a href="/docs/#bdk-package-availability">BDK package availability</a>.</p><p>Match the visible symptom below. The <code>bdk</code> binary ships with <code>@cursor/bdk</code> when the package publishes.</p><h2 id="serve-or-the-playground-will-not-work" tabindex="-1">Serve or the playground will not work <a class="header-anchor" href="#serve-or-the-playground-will-not-work" aria-label="Permalink to &quot;Serve or the playground will not work&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td><code>serve</code> exits before listening</td><td>Fix the errors from <code>bdk validate --dir .</code>, then start it again.</td></tr><tr><td>Playground is blank or says there are no agents</td><td>Start <code>bdk serve</code>; built playground assets have no agent data without the server.</td></tr><tr><td>Agent-file edits do not appear</td><td>Open the URL printed by <code>serve --dev</code>, then press Enter in its TTY to reload after file changes.</td></tr><tr><td>Sessions exist but the list is empty</td><td>The list is scoped to the authenticated principal. Use the same identity that created the session; a <code>?sessionId=</code> deep link does not bypass authorization.</td></tr><tr><td>The preferred port is busy</td><td>Use the next port printed by the CLI, pass <code>--port &lt;number&gt;</code>, or pass <code>--port 0</code> for any free port.</td></tr></tbody></table><h2 id="a-model-turn-fails" tabindex="-1">A model turn fails <a class="header-anchor" href="#a-model-turn-fails" aria-label="Permalink to &quot;A model turn fails&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>File reads and greps fail repeatedly with <code>NGHTTP2_FRAME_SIZE_ERROR</code></td><td>Run the agent under Node 22.13 or newer, never Bun.</td></tr><tr><td>The turn immediately reports a missing API key</td><td>Set <code>CURSOR_API_KEY</code>, <code>CURSOR_API_KEY_FILE</code>, or <code>CURSOR_SERVICE_ACCOUNT_KEY</code>, or run <code>bdk login</code>.</td></tr><tr><td>Login succeeds but the model host rejects the key</td><td>Point login and model traffic at the same API host; check <code>CURSOR_API_BASE_URL</code> and <code>CURSOR_BACKEND_URL</code>.</td></tr><tr><td>The first turn reports <code>[resource_exhausted]</code></td><td>Treat it as a capacity-shaped error. For a GitHub wake, also check the connected GitHub credential and any GitHub <code>429</code> rate limit before assuming the model quota is exhausted.</td></tr></tbody></table><h2 id="a-turn-behaves-unexpectedly" tabindex="-1">A turn behaves unexpectedly <a class="header-anchor" href="#a-turn-behaves-unexpectedly" aria-label="Permalink to &quot;A turn behaves unexpectedly&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>Replies quote an ancestor <code>AGENTS.md</code> or unrelated repository rules</td><td>Inspect <code>local.cwd</code> in <code>/v1/info</code>. Set <code>defineAgent({ local: { cwd } })</code> or the session workspace explicitly instead of inheriting the parent checkout.</td></tr><tr><td>The model lists IDE meta-tools but never calls named MCP tools</td><td>Set <code>advertiseTools: true</code> on the local model-visible connection and confirm it under <code>connections</code> in <code>/v1/info</code>.</td></tr><tr><td>Server tools, skills, or seed files are absent</td><td>Check the discovered project in <code>/v1/info</code>; follow the capability warning from <code>validate</code>.</td></tr><tr><td><code>validate</code> and <code>run</code> pass but CI type-checking fails</td><td>Run the project type check. Tool results must be JSON-shaped; prefer object literals or <code>type</code> aliases over <code>interface</code> return types.</td></tr></tbody></table><h2 id="http-returns-401-403-or-409" tabindex="-1">HTTP returns 401, 403, or 409 <a class="header-anchor" href="#http-returns-401-403-or-409" aria-label="Permalink to &quot;HTTP returns 401, 403, or 409&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td><code>401</code> outside localhost</td><td>Send the configured bearer token, alias token, or channel credential. Default custom routes admit direct loopback only.</td></tr><tr><td><code>403</code> on a stream or follow-up</td><td>Use the same authenticated principal that created the session.</td></tr><tr><td>A localhost route fails through a tunnel or LAN</td><td>Protect the shared host with <code>--bearer-token</code> or authored channel auth. Use <code>--allow-anonymous</code> only behind a proxy that authenticates every caller.</td></tr><tr><td><code>409</code> on a follow-up</td><td>Refresh the rotating <code>continuationToken</code> and confirm the target is a chat session; task sessions do not accept follow-ups.</td></tr><tr><td><code>409 session_busy</code> from <code>call --session</code></td><td>Wait for the turn, omit <code>--session</code>, or mark a read-only tool with <code>effect: &quot;read&quot;</code> so it can run concurrently.</td></tr><tr><td>A custom route fails schema type-checking</td><td>Add the required Zod <code>querySchema</code> for <code>GET</code>, or <code>bodySchema</code> for <code>POST</code>, <code>PUT</code>, and <code>PATCH</code>. See <a href="./reference/channels.html">Channels</a>.</td></tr></tbody></table><h2 id="a-hosted-deployment-fails-or-looks-stale" tabindex="-1">A hosted deployment fails or looks stale <a class="header-anchor" href="#a-hosted-deployment-fails-or-looks-stale" aria-label="Permalink to &quot;A hosted deployment fails or looks stale&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>Local changes do not appear after deploy</td><td><code>deploy</code> reads a pushed Git ref, not the working tree. Commit and push the intended ref, then deploy it again.</td></tr><tr><td>The deployment never becomes running</td><td>Run <code>bdk deployment &lt;slug&gt;</code>, then act on the reported build or startup error.</td></tr><tr><td>A secret or egress change has no effect</td><td>Confirm the name with <code>secrets list</code>, verify the <code>hosting</code> block exists on the pushed ref, and follow the CLI or dashboard prompt to redeploy.</td></tr><tr><td>Cursor events stopped after redeploy</td><td>Each redeploy replaces the watched repositories. Pass every <code>--cursor-events-repo</code> value again; without the flag, the deployment watches only its GitHub source repository.</td></tr><tr><td><code>run --prod</code> prints a <code>deliveryId</code> but no <code>sessionId</code></td><td>The deployment accepted the turn and is still starting it, which is expected with or without <code>--dry-run</code>. Find the session in the deployment&#39;s <strong>Sessions</strong> list in the dashboard, then follow <a href="./deployment.html#verify-a-hosted-turn">Verify a hosted turn</a>.</td></tr><tr><td>A high-effort turn runs for several minutes while runs look empty</td><td>Turns can take about eight minutes. Rerun <code>bdk session &lt;sessionId&gt; --prod --slug &lt;slug&gt;</code>; a growing event count means the turn is still working. Escalate only after about two to three minutes with no new events.</td></tr><tr><td>A dashboard link to a single session returns 404</td><td>Check the session with <code>bdk session &lt;sessionId&gt; --prod --slug &lt;slug&gt;</code>.</td></tr><tr><td>External HTTP rejects the alias token</td><td>Update the caller with the current token. If the token is lost or exposed, run <code>bdk rotate-token &lt;slug&gt;</code> and replace it everywhere.</td></tr></tbody></table><p>See <a href="./deployment.html">Deployment</a> for source, credential, and redeployment boundaries.</p><h2 id="github-deliveries-fail" tabindex="-1">GitHub deliveries fail <a class="header-anchor" href="#github-deliveries-fail" aria-label="Permalink to &quot;GitHub deliveries fail&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td><code>github forward</code> returns 401 on every delivery after creating the hook</td><td>Clear <code>GITHUB_TOKEN</code> and <code>GH_TOKEN</code> for that command so the forwarder uses the <code>gh</code> CLI login: <code>GITHUB_TOKEN= GH_TOKEN= bdk github forward ...</code>.</td></tr><tr><td><code>Hook already exists</code></td><td>Run one forwarder for the repository and stop the stale process.</td></tr><tr><td>Direct webhook deliveries are rejected outside <code>--dev</code></td><td>Configure the same <code>GITHUB_WEBHOOK_SECRET</code> on the signer and server. Cursor event pull needs no public webhook or webhook secret.</td></tr><tr><td>You cannot create a forwarder</td><td>Use <code>bdk github replay &lt;pr-url&gt;</code>; it needs pull access instead of repository administration.</td></tr></tbody></table><p>The <a href="./guides/github.html">GitHub guide</a> covers event pull, replay, and direct webhooks.</p><h2 id="slack-does-not-respond" tabindex="-1">Slack does not respond <a class="header-anchor" href="#slack-does-not-respond" aria-label="Permalink to &quot;Slack does not respond&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>Logs say <code>channel idle ... missing credentials</code></td><td>Run <code>bdk slack create --dir &lt;agent&gt;</code>, then check the generated prefix with <code>bdk slack doctor</code>. Use <code>slack init --manual</code> only for an app you own.</td></tr><tr><td><code>slack create</code> is waiting for workspace approval</td><td>Keep the CLI running, open the <strong>Request approval</strong> link it prints, and select <strong>Retry</strong> in the dashboard&#39;s <strong>Add Slack</strong> wizard after an admin approves. See <a href="./guides/slack.html#connect">Slack</a>.</td></tr><tr><td>The bot ignores ordinary channel posts</td><td>Configure <code>engagement.channelPosts</code>, create the app with <code>--channel-posts</code>, and invite it to every allowed channel.</td></tr><tr><td>Approval buttons do nothing</td><td>Set <code>toolApprovals: true</code>, then recreate the app if its interactivity is not enabled.</td></tr></tbody></table><p>See the <a href="./guides/slack.html">Slack guide</a> for app setup and engagement choices.</p><h2 id="mcp-authorization-fails" tabindex="-1">MCP authorization fails <a class="header-anchor" href="#mcp-authorization-fails" aria-label="Permalink to &quot;MCP authorization fails&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td><code>must be defineConnection({ url, oauth: true })</code></td><td>Add <code>oauth: true</code> to the named URL connection or correct the connection filename passed to <code>mcp oauth</code>.</td></tr><tr><td>Local auth works but hosted calls return unauthorized</td><td>Complete Connect for the running process, or run <code>mcp oauth &lt;name&gt; --store</code> and redeploy for future replacements.</td></tr><tr><td>The model invents <code>mcp_auth</code> instead of calling the server</td><td>Set <code>advertiseTools: true</code> for named local tools, or expose a host-side wrapper through <code>ctx.host.mcp</code>.</td></tr></tbody></table><p>See <a href="./guides/mcp-oauth.html">Host MCP OAuth</a> for the credential lifecycle.</p><h2 id="schedules-reminders-or-approvals-stall" tabindex="-1">Schedules, reminders, or approvals stall <a class="header-anchor" href="#schedules-reminders-or-approvals-stall" aria-label="Permalink to &quot;Schedules, reminders, or approvals stall&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>A schedule or reminder never fires under <code>--dev</code></td><td>Trigger it through the matching <code>/v1/dev/schedules/&lt;id&gt;</code> or <code>/v1/dev/reminders/&lt;id&gt;</code> route; development mode does not auto-fire.</td></tr><tr><td>A pending approval disappears after restart</td><td>Parked approvals do not survive restart. Run the turn again.</td></tr><tr><td>A reminder is disarmed with <code>handler_lost_on_restart</code></td><td>Recreate handler-form reminders after restart, or use a prompt-form reminder.</td></tr><tr><td>The same schedule fires on several self-hosted processes</td><td>Enable schedules on one serving process per project and pass <code>--no-schedules</code> to the others.</td></tr></tbody></table><h2 id="a-credential-was-exposed" tabindex="-1">A credential was exposed <a class="header-anchor" href="#a-credential-was-exposed" aria-label="Permalink to &quot;A credential was exposed&quot;">​</a></h2><table tabindex="0"><thead><tr><th>What you see</th><th>What to do</th></tr></thead><tbody><tr><td>A secret value appears in a command, transcript, or shell history</td><td>Rotate it at the provider, set it again through hidden input or stdin, and test the feature.</td></tr><tr><td>An alias token appears outside its secure destination</td><td>Run <code>bdk rotate-token &lt;slug&gt;</code>, store the new value outside transcripts, and update every caller.</td></tr><tr><td>Someone printed a secret to verify it</td><td>Rotate it. Confirm only the name with <code>bdk secrets list &lt;slug&gt;</code>, then redeploy and exercise the feature.</td></tr></tbody></table><h2 id="read-the-session-trace" tabindex="-1">Read the session trace <a class="header-anchor" href="#read-the-session-trace" aria-label="Permalink to &quot;Read the session trace&quot;">​</a></h2><p>Start with <code>actions.requested</code> and <code>action.result</code>. Count calls by tool name, pair every request with its result, and separate host preparation from tools chosen by the model.</p><p><code>turn.failed</code> with <code>turn interrupted</code> usually means a follow-up or stop ended the turn deliberately. Other failures should have an error event near the tool or model boundary that produced them.</p><p>Use the trace path printed by <code>bdk run</code>:</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>bdk trajectory --events &lt;trace-path&gt;</span></span></code></pre></div><p>The playground&#39;s <strong>Open trace</strong> control renders the same trajectory. When the agent runs but makes poor decisions, move from diagnosis to a measured <a href="./hillclimbing.html">hillclimb</a>.</p><h2 id="related" tabindex="-1">Related <a class="header-anchor" href="#related" aria-label="Permalink to &quot;Related&quot;">​</a></h2><ul><li><a href="./deployment.html">Deployment</a>: hosted and self-hosted boundaries</li><li><a href="./reference/sessions.html">Sessions</a>: session ownership and event vocabulary</li><li><a href="./reference/cli.html">CLI reference</a>: command flags and exit behavior</li></ul>',37)])])}const b=t(a,[["render",s]]);export{p as __pageData,b as default};