@cursor/bdk 0.2.23 → 0.2.24

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 (283) hide show
  1. package/dist/artifacts.d.ts +1 -1
  2. package/dist/artifacts.js +1 -1
  3. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  4. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +1 -1
  6. package/dist/channels/github/github-channel.js +1 -1
  7. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  8. package/dist/channels/issues/issues-channel.js +1 -1
  9. package/dist/channels/origin/origin-channel.js +1 -1
  10. package/dist/channels/runs/runs-channel.js +1 -1
  11. package/dist/channels/slack/tool-approval-events.js +5 -5
  12. package/dist/channels.d.ts +8 -1
  13. package/dist/channels.d.ts.map +1 -1
  14. package/dist/channels.js +33 -6
  15. package/dist/docs/404.html +3 -3
  16. package/dist/docs/assets/{app.AXQcJZaf.js → app.DTIg0uKK.js} +4 -4
  17. package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +1 -0
  18. package/dist/docs/assets/chunks/{VPLocalSearchBox.hlZ2vmun.js → VPLocalSearchBox.BpJoSaxi.js} +2 -2
  19. package/dist/docs/assets/chunks/{arc.9KNWdH-l.js → arc.ylgNvRNq.js} +1 -1
  20. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.BfGzkBHI.js → architectureDiagram-Q4EWVU46.BMrNJqYk.js} +1 -1
  21. package/dist/docs/assets/chunks/{baseUniq.Btk8-2Rs.js → baseUniq.BBWUEqf9.js} +1 -1
  22. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BmHm9OH5.js → blockDiagram-DXYQGD6D.DFMu-Vza.js} +1 -1
  23. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.9POrbDHJ.js → c4Diagram-AHTNJAMY.8nkAAxWv.js} +1 -1
  24. package/dist/docs/assets/chunks/channel.BOebySCN.js +1 -0
  25. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.YWZVSM6S.js → chunk-4BX2VUAB.sO-z2Bag.js} +1 -1
  26. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.Cxr_SFgw.js → chunk-4TB4RGXK.BMROzTMq.js} +1 -1
  27. package/dist/docs/assets/chunks/{chunk-55IACEB6.DtiJyPlD.js → chunk-55IACEB6.X81urwg7.js} +1 -1
  28. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.b5gNHJPH.js → chunk-EDXVE4YY.eaZVFLZM.js} +1 -1
  29. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DmN9yA_M.js → chunk-FMBD7UC4.CmZhzstR.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Dfm3xgV5.js → chunk-OYMX7WX6.CTezt9Lc.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.sXNxDcJA.js → chunk-QZHKN3VN.s-T8zukB.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DgBnDUV7.js → chunk-YZCP3GAM.DN4Nhy-D.js} +1 -1
  33. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +1 -0
  34. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +1 -0
  35. package/dist/docs/assets/chunks/clone.D06pA7ML.js +1 -0
  36. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.D18MEcoN.js → cose-bilkent-S5V4N54A.Cqyp4BUH.js} +1 -1
  37. package/dist/docs/assets/chunks/{dagre-KV5264BT.CSf3tihh.js → dagre-KV5264BT.BIECOiqR.js} +1 -1
  38. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.cbfzAfoC.js → diagram-5BDNPKRD.1tLyWoTg.js} +1 -1
  39. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.6i6P3uu9.js → diagram-G4DWMVQ6.BVY_6VMO.js} +1 -1
  40. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.B9HAIfN6.js → diagram-MMDJMWI5.BSZ7xiBB.js} +1 -1
  41. package/dist/docs/assets/chunks/{diagram-TYMM5635.B9baAjUv.js → diagram-TYMM5635.Bho6GmLh.js} +1 -1
  42. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DaBmX_GN.js → erDiagram-SMLLAGMA.A0yVIANn.js} +1 -1
  43. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CJqQJjkb.js → flowDiagram-DWJPFMVM.ZMgbllH6.js} +1 -1
  44. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CIXBLQhC.js → ganttDiagram-T4ZO3ILL.BCCPBhXo.js} +1 -1
  45. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CDgentto.js → gitGraphDiagram-UUTBAWPF.BOkL0BbA.js} +1 -1
  46. package/dist/docs/assets/chunks/{graph.BWHn6JBQ.js → graph.DMyZPu86.js} +1 -1
  47. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.d9VU_ts_.js → infoDiagram-42DDH7IO.CjG1IiEw.js} +1 -1
  48. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.BNO79Prj.js → ishikawaDiagram-UXIWVN3A.UCe-kq9g.js} +1 -1
  49. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CPgUTM1R.js → journeyDiagram-VCZTEJTY.3WyOK_eY.js} +1 -1
  50. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.idl0Eoe1.js → kanban-definition-6JOO6SKY.WoRG2qY1.js} +1 -1
  51. package/dist/docs/assets/chunks/{layout.BY7DIMr6.js → layout.DV07xDd5.js} +1 -1
  52. package/dist/docs/assets/chunks/{linear.DYaUDrHd.js → linear.CTO8mN6o.js} +1 -1
  53. package/dist/docs/assets/chunks/{min.V6MWb1UC.js → min.SvTtcKuZ.js} +1 -1
  54. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BRlJXuFS.js → mindmap-definition-QFDTVHPH.DMGgQ-HB.js} +1 -1
  55. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.BIhkDLcB.js → pieDiagram-DEJITSTG.B7851apI.js} +1 -1
  56. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.Bw-_VEL3.js → quadrantDiagram-34T5L4WZ.CEqyypIX.js} +1 -1
  57. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DolEGwxw.js → requirementDiagram-MS252O5E.C3Mwsw-H.js} +1 -1
  58. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.hMM-8BhN.js → sankeyDiagram-XADWPNL6.DyYK0XxY.js} +1 -1
  59. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bg_CRVDy.js → sequenceDiagram-FGHM5R23.SiQPH-XM.js} +1 -1
  60. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DNWdl34_.js → stateDiagram-FHFEXIEX.CTJMsP4p.js} +1 -1
  61. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +1 -0
  62. package/dist/docs/assets/chunks/{theme.CBW1oolh.js → theme.DJo4my9R.js} +2 -2
  63. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Cr1wJ1mB.js → timeline-definition-GMOUNBTQ.CxSNRlQ6.js} +1 -1
  64. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BltDV9j7.js → vennDiagram-DHZGUBPP.BdoJskyD.js} +1 -1
  65. package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +162 -0
  66. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.nsADqCCo.js → wardleyDiagram-NUSXRM2D.IjIbFn_F.js} +1 -1
  67. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CCwbO3dK.js → xychartDiagram-5P7HB3ND.CPUxDZLH.js} +1 -1
  68. package/dist/docs/assets/{deployment.md.CtSJ6sF9.js → deployment.md.3MMWuPeV.js} +5 -5
  69. package/dist/docs/assets/{deployment.md.CtSJ6sF9.lean.js → deployment.md.3MMWuPeV.lean.js} +1 -1
  70. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.js → guides_cloud-agents.md.BzbzcOyj.js} +2 -2
  71. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.lean.js → guides_cloud-agents.md.BzbzcOyj.lean.js} +1 -1
  72. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.js → guides_opentelemetry.md.Ck1o2frw.js} +11 -3
  73. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.lean.js → guides_opentelemetry.md.Ck1o2frw.lean.js} +1 -1
  74. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.js → reference_agent-config.md.IplwL25I.js} +1 -2
  75. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.lean.js → reference_agent-config.md.IplwL25I.lean.js} +1 -1
  76. package/dist/docs/assets/{reference_extensions.md.OUacPetl.js → reference_extensions.md.DKxTuCIw.js} +11 -8
  77. package/dist/docs/assets/{reference_extensions.md.OUacPetl.lean.js → reference_extensions.md.DKxTuCIw.lean.js} +1 -1
  78. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.js → reference_instructions.md.BYMVxAkw.js} +4 -4
  79. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.lean.js → reference_instructions.md.BYMVxAkw.lean.js} +1 -1
  80. package/dist/docs/assets/{reference_schedules.md.BqWnJES4.js → reference_schedules.md.03Ryy9ca.js} +3 -3
  81. package/dist/docs/assets/{style.Dwls12uf.css → style.nMsabY-V.css} +1 -1
  82. package/dist/docs/assets/templates_agentic-owners.md.CTEnR0jp.js +13 -0
  83. package/dist/docs/assets/{templates_agentic-owners.md.CvmABtia.lean.js → templates_agentic-owners.md.CTEnR0jp.lean.js} +1 -1
  84. package/dist/docs/building-with-agents.html +37 -37
  85. package/dist/docs/deployment.html +42 -42
  86. package/dist/docs/deployment.md +9 -4
  87. package/dist/docs/evals.html +37 -37
  88. package/dist/docs/guides/agent-to-agent.html +37 -37
  89. package/dist/docs/guides/bitbucket.html +37 -37
  90. package/dist/docs/guides/cloud-agents.html +38 -38
  91. package/dist/docs/guides/cloud-agents.md +1 -0
  92. package/dist/docs/guides/convert-automation.html +37 -37
  93. package/dist/docs/guides/export-grokbot.html +37 -37
  94. package/dist/docs/guides/github.html +37 -37
  95. package/dist/docs/guides/gitlab.html +37 -37
  96. package/dist/docs/guides/grokbot-agents.html +37 -37
  97. package/dist/docs/guides/hooks.html +37 -37
  98. package/dist/docs/guides/improve.html +37 -37
  99. package/dist/docs/guides/jev.html +37 -37
  100. package/dist/docs/guides/mcp-oauth.html +37 -37
  101. package/dist/docs/guides/migrate.html +37 -37
  102. package/dist/docs/guides/opentelemetry.html +47 -39
  103. package/dist/docs/guides/opentelemetry.md +48 -2
  104. package/dist/docs/guides/slack.html +37 -37
  105. package/dist/docs/guides/webhooks.html +37 -37
  106. package/dist/docs/hashmap.json +1 -1
  107. package/dist/docs/hillclimbing.html +37 -37
  108. package/dist/docs/index.html +37 -37
  109. package/dist/docs/llms-full.txt +133 -40
  110. package/dist/docs/quickstart.html +37 -37
  111. package/dist/docs/reference/agent-config.html +38 -39
  112. package/dist/docs/reference/agent-config.md +0 -1
  113. package/dist/docs/reference/artifacts.html +37 -37
  114. package/dist/docs/reference/channels.html +37 -37
  115. package/dist/docs/reference/cli.html +37 -37
  116. package/dist/docs/reference/connections.html +37 -37
  117. package/dist/docs/reference/evals.html +37 -37
  118. package/dist/docs/reference/extensions.html +47 -44
  119. package/dist/docs/reference/extensions.md +15 -9
  120. package/dist/docs/reference/hooks.html +37 -37
  121. package/dist/docs/reference/http-api.html +37 -37
  122. package/dist/docs/reference/instructions.html +40 -40
  123. package/dist/docs/reference/instructions.md +5 -1
  124. package/dist/docs/reference/memory.html +37 -37
  125. package/dist/docs/reference/playground.html +36 -36
  126. package/dist/docs/reference/project-layout.html +37 -37
  127. package/dist/docs/reference/prompt.html +37 -37
  128. package/dist/docs/reference/schedules.html +40 -40
  129. package/dist/docs/reference/sessions.html +36 -36
  130. package/dist/docs/reference/skills.html +37 -37
  131. package/dist/docs/reference/subagents.html +37 -37
  132. package/dist/docs/reference/tools.html +37 -37
  133. package/dist/docs/templates/agentic-owners.html +42 -43
  134. package/dist/docs/templates/agentic-owners.md +55 -23
  135. package/dist/docs/templates/grokbot-agents.html +37 -37
  136. package/dist/docs/templates/security-reviewer.html +37 -37
  137. package/dist/docs/templates/thermo-quality-review.html +37 -37
  138. package/dist/docs/templates/thermo-review.html +37 -37
  139. package/dist/docs/templates/triage.html +37 -37
  140. package/dist/docs/troubleshooting.html +36 -36
  141. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  142. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  143. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  144. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +1 -0
  145. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  146. package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -1
  147. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  148. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  149. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  150. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  151. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  152. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  153. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  154. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  155. package/dist/extensions/cursor-grokbot-agents/extension.js +1 -1
  156. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  157. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  158. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  159. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  160. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  161. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  162. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  163. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  164. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  165. package/dist/extensions/improve/extension.js +1 -1
  166. package/dist/extensions/jev/extension.js +1 -1
  167. package/dist/extensions/jev/tools/evaluate.js +1 -1
  168. package/dist/extensions/slack-communication/extension.js +1 -1
  169. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  170. package/dist/extensions/slack-communication/tools/edit-message.js +1 -1
  171. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  172. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  173. package/dist/extensions/slack-communication/tools/post-update.js +1 -1
  174. package/dist/extensions/slack-communication/tools/react.js +1 -1
  175. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  176. package/dist/extensions.d.ts +1 -1
  177. package/dist/extensions.js +1 -1
  178. package/dist/internal/builtin-tools/artifacts.js +1 -1
  179. package/dist/internal/builtin-tools/reminders.js +1 -1
  180. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  181. package/dist/internal/convert-grokbot/answers.js +1 -1
  182. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  183. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  184. package/dist/internal/convert-grokbot/recipe.js +1 -1
  185. package/dist/internal/cursor/backend-client.d.ts +1 -1
  186. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  187. package/dist/internal/cursor/backend-client.js +1 -1
  188. package/dist/internal/cursor/credentials.d.ts +1 -1
  189. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  190. package/dist/internal/cursor/credentials.js +1 -1
  191. package/dist/internal/deploy-client.js +1 -1
  192. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  193. package/dist/internal/deploy-manifest.js +2 -1
  194. package/dist/internal/discovery/cursor-plugin.js +1 -1
  195. package/dist/internal/factory-resource-channel.d.ts +1 -1
  196. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  197. package/dist/internal/filesystem/sdk-schemas.d.ts +1 -1
  198. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
  199. package/dist/internal/filesystem/sdk-schemas.js +1 -1
  200. package/dist/internal/filesystem/tools.js +1 -1
  201. package/dist/internal/host-otel.d.ts +2 -1
  202. package/dist/internal/host-otel.d.ts.map +1 -1
  203. package/dist/internal/host-otel.js +20 -6
  204. package/dist/internal/hosted-delivery-protocol.d.ts +4 -0
  205. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  206. package/dist/internal/hosted-delivery.d.ts +7 -0
  207. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  208. package/dist/internal/hosted-delivery.js +19 -17
  209. package/dist/internal/hosting.d.ts +6 -0
  210. package/dist/internal/hosting.d.ts.map +1 -1
  211. package/dist/internal/hosting.js +9 -0
  212. package/dist/internal/init-scaffold.js +1 -1
  213. package/dist/internal/interview/agent-questions.d.ts +1 -1
  214. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  215. package/dist/internal/interview/agent-questions.js +1 -1
  216. package/dist/internal/interview/question.d.ts +1 -1
  217. package/dist/internal/interview/question.d.ts.map +1 -1
  218. package/dist/internal/interview/question.js +1 -1
  219. package/dist/internal/json-schema.d.ts +1 -1
  220. package/dist/internal/json-schema.d.ts.map +1 -1
  221. package/dist/internal/json-schema.js +1 -1
  222. package/dist/internal/mcp-endpoint.js +1 -1
  223. package/dist/internal/otel/collector.d.ts.map +1 -1
  224. package/dist/internal/otel/collector.js +47 -18
  225. package/dist/internal/otel/config.d.ts +4 -0
  226. package/dist/internal/otel/config.d.ts.map +1 -1
  227. package/dist/internal/otel/config.js +20 -9
  228. package/dist/internal/otel/http.d.ts +1 -1
  229. package/dist/internal/otel/http.d.ts.map +1 -1
  230. package/dist/internal/otel/http.js +1 -1
  231. package/dist/internal/otel/runtime.d.ts +17 -14
  232. package/dist/internal/otel/runtime.d.ts.map +1 -1
  233. package/dist/internal/otel/runtime.js +181 -238
  234. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  235. package/dist/internal/package-inline-stdio.js +1 -0
  236. package/dist/internal/process-memory-telemetry.d.ts +1 -1
  237. package/dist/internal/process-memory-telemetry.d.ts.map +1 -1
  238. package/dist/internal/process-memory-telemetry.js +1 -1
  239. package/dist/internal/sdk-runner.d.ts.map +1 -1
  240. package/dist/internal/sdk-runner.js +22 -2
  241. package/dist/internal/server.d.ts.map +1 -1
  242. package/dist/internal/server.js +25 -13
  243. package/dist/internal/session-engine.d.ts +9 -1
  244. package/dist/internal/session-engine.d.ts.map +1 -1
  245. package/dist/internal/session-engine.js +25 -0
  246. package/dist/internal/slack-provision-client.js +1 -1
  247. package/dist/internal/store-api-protocol.d.ts +1 -1
  248. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  249. package/dist/internal/store-api-protocol.js +1 -1
  250. package/dist/internal/update-check.d.ts +1 -1
  251. package/dist/internal/update-check.d.ts.map +1 -1
  252. package/dist/internal/update-check.js +1 -1
  253. package/dist/otel.d.ts +1 -2
  254. package/dist/otel.d.ts.map +1 -1
  255. package/dist/otel.js +0 -1
  256. package/dist/playground/assets/index-DKKdkF29.js +62 -0
  257. package/dist/playground/assets/index-DpKinTMs.css +1 -0
  258. package/dist/playground/index.html +2 -2
  259. package/dist/tools.d.ts +2 -2
  260. package/dist/tools.d.ts.map +1 -1
  261. package/dist/tools.js +1 -1
  262. package/dist/types.d.ts +1 -1
  263. package/dist/types.d.ts.map +1 -1
  264. package/docs/deployment.md +9 -4
  265. package/docs/guides/cloud-agents.md +1 -0
  266. package/docs/guides/opentelemetry.md +48 -2
  267. package/docs/reference/agent-config.md +0 -1
  268. package/docs/reference/extensions.md +15 -9
  269. package/docs/reference/instructions.md +5 -1
  270. package/docs/templates/agentic-owners.md +55 -23
  271. package/package.json +18 -20
  272. package/skills/otel/SKILL.md +17 -4
  273. package/dist/docs/assets/chunks/@localSearchIndexroot.B3j7LFef.js +0 -1
  274. package/dist/docs/assets/chunks/channel.RoCpi7X1.js +0 -1
  275. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.oxdmwwqk.js +0 -1
  276. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.oxdmwwqk.js +0 -1
  277. package/dist/docs/assets/chunks/clone.BkguoIMm.js +0 -1
  278. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.7W-btjJ2.js +0 -1
  279. package/dist/docs/assets/chunks/wardley-RL74JXVD.BWPaUhOs.js +0 -162
  280. package/dist/docs/assets/templates_agentic-owners.md.CvmABtia.js +0 -14
  281. package/dist/playground/assets/index-BtsbIqV9.css +0 -1
  282. package/dist/playground/assets/index-CD8VRa25.js +0 -71
  283. /package/dist/docs/assets/{reference_schedules.md.BqWnJES4.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +0 -0
@@ -9,7 +9,7 @@
9
9
  * `tag_artifact` built-in tool generated from the same kinds registry.
10
10
  *
11
11
  * ```ts
12
- * import { z } from "zod";
12
+ * import { z } from "zod/v3";
13
13
  * import { defineArtifacts } from "@cursor/bdk/artifacts";
14
14
  *
15
15
  * export default defineArtifacts({
package/dist/artifacts.js CHANGED
@@ -9,7 +9,7 @@
9
9
  * `tag_artifact` built-in tool generated from the same kinds registry.
10
10
  *
11
11
  * ```ts
12
- * import { z } from "zod";
12
+ * import { z } from "zod/v3";
13
13
  * import { defineArtifacts } from "@cursor/bdk/artifacts";
14
14
  *
15
15
  * export default defineArtifacts({
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { allowAll, defineChannel, hmacSignatureAuth, localDevStrict, loopbackOnly, POST, } from "../../channels.js";
3
3
  import { withPropagatingBackgroundErrors } from "../../internal/channel-dispatch.js";
4
4
  import { normalizeIdentity } from "../../internal/continuation-identity.js";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { createFactoryResourceChannel } from "../../internal/factory-resource-channel.js";
3
3
  import { CHECKPOINT_CREATED_EVENT_TYPE, } from "./types.js";
4
4
  const checkpointResourceSchema = z
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { defineChannel, localDevStrict, POST } from "../../channels.js";
3
3
  import { skipped, tagOutcome } from "../../internal/channel-dispatch.js";
4
4
  import { deploymentEventMatches, resolveDeploymentSubscriptions, } from "../../internal/cursor-deployment-relay.js";
@@ -1,5 +1,5 @@
1
1
  import { createHmac, timingSafeEqual } from "node:crypto";
2
- import { z } from "zod";
2
+ import { z } from "zod/v3";
3
3
  import { allowAll, defineChannel, hmacSignatureAuth, localDevStrict, loopbackGitHubDev, POST, } from "../../channels.js";
4
4
  import { acknowledgeTask, acknowledgeTurn, isTaskDispatch, scheduleAfterAck, skipped, turnStarted, withPropagatingBackgroundErrors, } from "../../internal/channel-dispatch.js";
5
5
  import { continuationSource, normalizeIdentity } from "../../internal/continuation-identity.js";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { allowAll, defineChannel, localDevStrict, loopbackOnly, POST, sharedSecretAuth, } from "../../channels.js";
3
3
  import { withPropagatingBackgroundErrors } from "../../internal/channel-dispatch.js";
4
4
  import { normalizeIdentity } from "../../internal/continuation-identity.js";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { createFactoryResourceChannel } from "../../internal/factory-resource-channel.js";
3
3
  import { ISSUE_CREATED_EVENT_TYPE, } from "./types.js";
4
4
  const issueResourceSchema = z
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { allowAll, defineChannel, localDevStrict, loopbackOnly, POST } from "../../channels.js";
3
3
  import { acknowledgeTask, isTaskDispatch, skipped, turnStarted, withPropagatingBackgroundErrors, } from "../../internal/channel-dispatch.js";
4
4
  import { continuationSource, normalizeIdentity } from "../../internal/continuation-identity.js";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  import { createFactoryResourceChannel } from "../../internal/factory-resource-channel.js";
3
3
  import { RUN_CREATED_EVENT_TYPE } from "./types.js";
4
4
  const runResourceSchema = z
@@ -76,12 +76,14 @@ export function buildToolApprovalEvents(options = {}) {
76
76
  [event.data.callId]: posted.ts,
77
77
  };
78
78
  if (status) {
79
+ // One entry: Slack cycles `loading_messages`, and filler such as
80
+ // "Thinking…" reads as work while nothing runs until the click.
79
81
  await setThreadStatus({
80
82
  botToken,
81
83
  channelId: state.channelId,
82
84
  threadTs: state.threadTs,
83
85
  status: "Awaiting approval…",
84
- loadingMessages: ["Awaiting approval…", ...SLACK_DEFAULT_LOADING_MESSAGES],
86
+ loadingMessages: ["Awaiting approval…"],
85
87
  });
86
88
  }
87
89
  log.info("approval card posted", {
@@ -156,10 +158,8 @@ export function buildToolApprovalEvents(options = {}) {
156
158
  channelId: state.channelId,
157
159
  threadTs: state.threadTs,
158
160
  status: authThreadStatus(event.data.connection),
159
- loadingMessages: [
160
- authThreadStatus(event.data.connection),
161
- ...SLACK_DEFAULT_LOADING_MESSAGES,
162
- ],
161
+ // One entry, as for an approval card.
162
+ loadingMessages: [authThreadStatus(event.data.connection)],
163
163
  });
164
164
  }
165
165
  log.info("auth card posted", {
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ```ts
10
10
  * import { defineChannel, POST } from "@cursor/bdk/channels";
11
- * import { z } from "zod";
11
+ * import { z } from "zod/v3";
12
12
  *
13
13
  * export default defineChannel({
14
14
  * routes: [
@@ -142,6 +142,7 @@ export type CatchAuthDeclaration = {
142
142
  header: string;
143
143
  secret: string;
144
144
  prefix?: string;
145
+ separator?: string;
145
146
  }
146
147
  /** `publicEndpoint()`: the handler verifies; the control plane only rate limits. */
147
148
  | {
@@ -166,10 +167,16 @@ export declare function sharedSecretAuth(options: {
166
167
  * under the secret named `secret` (optionally behind a literal `prefix`
167
168
  * such as `sha256=`). Same local / hosted / catch semantics as
168
169
  * {@link sharedSecretAuth}.
170
+ *
171
+ * Set `separator` for providers that send several signatures in one header
172
+ * while a secret rotates, e.g. PagerDuty's
173
+ * `X-PagerDuty-Signature: v1=<hex>,v1=<hex>` with `prefix: "v1="` and
174
+ * `separator: ","`. The request is admitted when any entry matches.
169
175
  */
170
176
  export declare function hmacSignatureAuth(options: {
171
177
  header: string;
172
178
  secret: string;
173
179
  prefix?: string;
180
+ separator?: string;
174
181
  }): AuthPolicy;
175
182
  //# sourceMappingURL=channels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
package/dist/channels.js CHANGED
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ```ts
10
10
  * import { defineChannel, POST } from "@cursor/bdk/channels";
11
- * import { z } from "zod";
11
+ * import { z } from "zod/v3";
12
12
  *
13
13
  * export default defineChannel({
14
14
  * routes: [
@@ -368,27 +368,53 @@ export function sharedSecretAuth(options) {
368
368
  secret: options.secret,
369
369
  });
370
370
  }
371
+ const MAX_HMAC_SEPARATOR_LENGTH = 8;
372
+ /**
373
+ * True when any signature in `presented` is `prefix` + the hex `expected`
374
+ * digest. Without a `separator` the whole value is one signature. Every
375
+ * entry is compared, so timing does not reveal which one matched; entries
376
+ * without the prefix never match.
377
+ */
378
+ function presentedHmacMatches(args) {
379
+ const entries = args.separator === undefined ? [args.presented] : args.presented.split(args.separator);
380
+ let matched = false;
381
+ for (const raw of entries) {
382
+ const entry = raw.trim();
383
+ if (entry.startsWith(args.prefix) &&
384
+ constantTimeEquals(entry.slice(args.prefix.length).toLowerCase(), args.expected)) {
385
+ matched = true;
386
+ }
387
+ }
388
+ return matched;
389
+ }
371
390
  /**
372
391
  * Admit requests whose `header` carries the hex HMAC-SHA256 of the raw body
373
392
  * under the secret named `secret` (optionally behind a literal `prefix`
374
393
  * such as `sha256=`). Same local / hosted / catch semantics as
375
394
  * {@link sharedSecretAuth}.
395
+ *
396
+ * Set `separator` for providers that send several signatures in one header
397
+ * while a secret rotates, e.g. PagerDuty's
398
+ * `X-PagerDuty-Signature: v1=<hex>,v1=<hex>` with `prefix: "v1="` and
399
+ * `separator: ","`. The request is admitted when any entry matches.
376
400
  */
377
401
  export function hmacSignatureAuth(options) {
378
402
  const header = options.header.toLowerCase();
379
403
  const prefix = options.prefix ?? "";
404
+ const separator = options.separator;
405
+ if (separator !== undefined &&
406
+ (separator.length === 0 || separator.length > MAX_HMAC_SEPARATOR_LENGTH)) {
407
+ throw new Error(`hmacSignatureAuth separator must be 1-${MAX_HMAC_SEPARATOR_LENGTH} characters.`);
408
+ }
380
409
  const policy = async (request) => {
381
410
  const secret = process.env[options.secret];
382
411
  const presented = request.headers.get(header)?.trim();
383
- if (secret === undefined ||
384
- secret.length === 0 ||
385
- presented === undefined ||
386
- !presented.startsWith(prefix)) {
412
+ if (secret === undefined || secret.length === 0 || presented === undefined) {
387
413
  return null;
388
414
  }
389
415
  const body = Buffer.from(await request.clone().arrayBuffer());
390
416
  const expected = createHmac("sha256", secret).update(body).digest("hex");
391
- if (!constantTimeEquals(presented.slice(prefix.length).toLowerCase(), expected)) {
417
+ if (!presentedHmacMatches({ presented, expected, prefix, separator })) {
392
418
  return null;
393
419
  }
394
420
  return {
@@ -402,5 +428,6 @@ export function hmacSignatureAuth(options) {
402
428
  header,
403
429
  secret: options.secret,
404
430
  prefix: options.prefix,
431
+ separator,
405
432
  });
406
433
  }
@@ -6,10 +6,10 @@
6
6
  <title>404 | Bot Development Kit (BDK)</title>
7
7
  <meta name="description" content="Not Found">
8
8
  <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/docs/assets/style.Dwls12uf.css" as="style">
9
+ <link rel="preload stylesheet" href="/docs/assets/style.nMsabY-V.css" as="style">
10
10
  <link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/docs/assets/app.AXQcJZaf.js"></script>
12
+ <script type="module" src="/docs/assets/app.DTIg0uKK.js"></script>
13
13
  <link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
14
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
15
15
  <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
@@ -18,7 +18,7 @@
18
18
  </head>
19
19
  <body>
20
20
  <div id="app"></div>
21
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"deployment.md\":\"CtSJ6sF9\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"CBK7W0-O\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"Bfj0pK91\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"BM_eFC0L\",\"guides_migrate.md\":\"CQlGaBKX\",\"guides_opentelemetry.md\":\"ByW1Fs7b\",\"guides_slack.md\":\"Bn-WupSE\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"DYA6ge6t\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"DYg0CLud\",\"reference_cli.md\":\"DB7Llw3T\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"OUacPetl\",\"reference_hooks.md\":\"B1jq3oGl\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"DrcHZXig\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"BqWnJES4\",\"reference_sessions.md\":\"C8FXuGwk\",\"reference_skills.md\":\"C2GWh7g8\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"08XR7lIl\",\"templates_agentic-owners.md\":\"CvmABtia\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.23\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
21
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"building-with-agents.md\":\"FZXrY8Nk\",\"deployment.md\":\"3MMWuPeV\",\"evals.md\":\"CHR34K1Y\",\"guides_agent-to-agent.md\":\"CwL5cwuE\",\"guides_bitbucket.md\":\"CKUayYtD\",\"guides_cloud-agents.md\":\"BzbzcOyj\",\"guides_convert-automation.md\":\"DMEX9nF-\",\"guides_export-grokbot.md\":\"qo5bxi4h\",\"guides_github.md\":\"TuNiZAOQ\",\"guides_gitlab.md\":\"CtNI4fSH\",\"guides_grokbot-agents.md\":\"BwAykJ7U\",\"guides_hooks.md\":\"Bfj0pK91\",\"guides_improve.md\":\"CZKVt1cT\",\"guides_jev.md\":\"D7XH4JH3\",\"guides_mcp-oauth.md\":\"BM_eFC0L\",\"guides_migrate.md\":\"CQlGaBKX\",\"guides_opentelemetry.md\":\"Ck1o2frw\",\"guides_slack.md\":\"Bn-WupSE\",\"guides_webhooks.md\":\"Cpdc3BDX\",\"hillclimbing.md\":\"Dxvd-0gT\",\"index.md\":\"CAnsLl8D\",\"quickstart.md\":\"D8JDfkKO\",\"reference_agent-config.md\":\"IplwL25I\",\"reference_artifacts.md\":\"DLV9MZES\",\"reference_channels.md\":\"DYg0CLud\",\"reference_cli.md\":\"DB7Llw3T\",\"reference_connections.md\":\"BJE2Zllp\",\"reference_evals.md\":\"Ccwp4x3o\",\"reference_extensions.md\":\"DKxTuCIw\",\"reference_hooks.md\":\"B1jq3oGl\",\"reference_http-api.md\":\"Dji-DD_Z\",\"reference_instructions.md\":\"BYMVxAkw\",\"reference_memory.md\":\"BwyJXYZe\",\"reference_playground.md\":\"q4MI-0td\",\"reference_project-layout.md\":\"mFcS8yDD\",\"reference_prompt.md\":\"DqPh71XN\",\"reference_schedules.md\":\"03Ryy9ca\",\"reference_sessions.md\":\"C8FXuGwk\",\"reference_skills.md\":\"C2GWh7g8\",\"reference_subagents.md\":\"ChNGh6HK\",\"reference_tools.md\":\"08XR7lIl\",\"templates_agentic-owners.md\":\"CTEnR0jp\",\"templates_grokbot-agents.md\":\"DgpPEs7B\",\"templates_security-reviewer.md\":\"Gh6EF9Us\",\"templates_thermo-quality-review.md\":\"B77UyTrX\",\"templates_thermo-review.md\":\"DRJ7mC5U\",\"templates_triage.md\":\"CNN6b0JZ\",\"troubleshooting.md\":\"DFnoTDlQ\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Bot Development Kit (BDK)\",\"description\":\"Build and serve bots and agents from versioned Markdown and TypeScript.\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"sdkVersion\":\"0.2.24\",\"nav\":[{\"text\":\"Quickstart\",\"link\":\"/quickstart\"},{\"text\":\"Guides\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Integrations\",\"link\":\"/guides/github\"},{\"text\":\"Templates\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Reference\",\"link\":\"/reference/project-layout\"}],\"search\":{\"provider\":\"local\"},\"outline\":{\"level\":[2,3]},\"sidebar\":[{\"text\":\"Getting started\",\"items\":[{\"text\":\"Overview\",\"link\":\"/\"},{\"text\":\"Building your first agent\",\"link\":\"/quickstart\"}]},{\"text\":\"Integrations\",\"collapsed\":false,\"items\":[{\"text\":\"GitHub\",\"link\":\"/guides/github\"},{\"text\":\"Slack\",\"link\":\"/guides/slack\"},{\"text\":\"Webhooks\",\"link\":\"/guides/webhooks\"},{\"text\":\"Cursor Automations\",\"link\":\"/guides/convert-automation\"},{\"text\":\"OpenTelemetry\",\"link\":\"/guides/opentelemetry\"},{\"text\":\"GitLab\",\"link\":\"/guides/gitlab\"},{\"text\":\"Bitbucket\",\"link\":\"/guides/bitbucket\"}]},{\"text\":\"Extensions\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/reference/extensions\"},{\"text\":\"Cloud agents\",\"link\":\"/guides/cloud-agents\"},{\"text\":\"Grok Bot agents\",\"link\":\"/guides/grokbot-agents\"},{\"text\":\"Self-improvement\",\"link\":\"/guides/improve\"},{\"text\":\"Jev\",\"link\":\"/guides/jev\"}]},{\"text\":\"Guides\",\"collapsed\":false,\"items\":[{\"text\":\"MCP\",\"link\":\"/guides/mcp-oauth\"},{\"text\":\"Hooks\",\"link\":\"/guides/hooks\"},{\"text\":\"Peer agents\",\"link\":\"/guides/agent-to-agent\"},{\"text\":\"Deployment\",\"link\":\"/deployment\"},{\"text\":\"Export a Grok Bot\",\"link\":\"/guides/export-grokbot\"},{\"text\":\"Early-alpha migration\",\"link\":\"/guides/migrate\"},{\"text\":\"Evals\",\"link\":\"/evals\"},{\"text\":\"Hillclimbing\",\"link\":\"/hillclimbing\"},{\"text\":\"Build with a coding agent\",\"link\":\"/building-with-agents\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"Templates\",\"collapsed\":false,\"items\":[{\"text\":\"Grok Bot agents\",\"link\":\"/templates/grokbot-agents\"},{\"text\":\"Security reviewer\",\"link\":\"/templates/security-reviewer\"},{\"text\":\"Thermo review\",\"link\":\"/templates/thermo-review\"},{\"text\":\"Thermo quality review\",\"link\":\"/templates/thermo-quality-review\"},{\"text\":\"Agentic Approver\",\"link\":\"/templates/agentic-owners\"},{\"text\":\"Triage agent\",\"link\":\"/templates/triage\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Project layout\",\"link\":\"/reference/project-layout\"},{\"text\":\"Agent config\",\"link\":\"/reference/agent-config\"},{\"text\":\"Instructions\",\"link\":\"/reference/instructions\"},{\"text\":\"Tools\",\"link\":\"/reference/tools\"},{\"text\":\"prompt\",\"link\":\"/reference/prompt\"},{\"text\":\"Skills\",\"link\":\"/reference/skills\"},{\"text\":\"MCP Connections\",\"link\":\"/reference/connections\"},{\"text\":\"Subagents\",\"link\":\"/reference/subagents\"},{\"text\":\"Channels\",\"link\":\"/reference/channels\"},{\"text\":\"Schedules & reminders\",\"link\":\"/reference/schedules\"},{\"text\":\"Hooks\",\"link\":\"/reference/hooks\"},{\"text\":\"Memory\",\"link\":\"/reference/memory\"},{\"text\":\"Evals\",\"link\":\"/reference/evals\"},{\"text\":\"Artifacts\",\"link\":\"/reference/artifacts\"},{\"text\":\"Sessions & streaming\",\"link\":\"/reference/sessions\"},{\"text\":\"Playground\",\"link\":\"/reference/playground\"},{\"text\":\"CLI\",\"link\":\"/reference/cli\"},{\"text\":\"HTTP API\",\"link\":\"/reference/http-api\"}]}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
22
22
 
23
23
  </body>
24
24
  </html>