@cursor/bdk 0.2.25 → 0.2.26

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 (433) hide show
  1. package/AGENTS.md +3 -18
  2. package/CHANGELOG.md +3 -0
  3. package/dist/artifacts.d.ts +1 -1
  4. package/dist/artifacts.js +1 -1
  5. package/dist/bin/agent-serve.js +25 -21
  6. package/dist/channels/bitbucket/api.d.ts +2 -2
  7. package/dist/channels/bitbucket/api.d.ts.map +1 -1
  8. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  9. package/dist/channels/bitbucket/bitbucket-webhook.d.ts +2 -2
  10. package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
  11. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  12. package/dist/channels/deployments/deployments-channel.js +1 -1
  13. package/dist/channels/github/cursor-account.d.ts +7 -0
  14. package/dist/channels/github/cursor-account.d.ts.map +1 -1
  15. package/dist/channels/github/cursor-account.js +22 -5
  16. package/dist/channels/github/github-channel.js +1 -1
  17. package/dist/channels/github/replay.d.ts +1 -1
  18. package/dist/channels/github/replay.d.ts.map +1 -1
  19. package/dist/channels/gitlab/api.d.ts +2 -2
  20. package/dist/channels/gitlab/api.d.ts.map +1 -1
  21. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  22. package/dist/channels/issues/issues-channel.js +1 -1
  23. package/dist/channels/origin/api.d.ts +4 -4
  24. package/dist/channels/origin/api.d.ts.map +1 -1
  25. package/dist/channels/origin/origin-channel.js +1 -1
  26. package/dist/channels/origin/origin-webhook.d.ts +3 -3
  27. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  28. package/dist/channels/pagerduty/pagerduty-webhook.d.ts +2 -2
  29. package/dist/channels/pagerduty/pagerduty-webhook.d.ts.map +1 -1
  30. package/dist/channels/runs/runs-channel.js +1 -1
  31. package/dist/channels/slack/agentic-delivery.d.ts +2 -1
  32. package/dist/channels/slack/agentic-delivery.d.ts.map +1 -1
  33. package/dist/channels/slack/agentic-delivery.js +6 -10
  34. package/dist/channels/slack/agentic-signals.d.ts +2 -7
  35. package/dist/channels/slack/agentic-signals.d.ts.map +1 -1
  36. package/dist/channels/slack/agentic-signals.js +4 -3
  37. package/dist/channels/slack/api.d.ts +1 -0
  38. package/dist/channels/slack/api.d.ts.map +1 -1
  39. package/dist/channels/slack/api.js +3 -0
  40. package/dist/channels/slack/constants.d.ts +2 -0
  41. package/dist/channels/slack/constants.d.ts.map +1 -1
  42. package/dist/channels/slack/constants.js +2 -0
  43. package/dist/channels/slack/defaults.d.ts.map +1 -1
  44. package/dist/channels/slack/defaults.js +3 -2
  45. package/dist/channels/slack/dispatch.d.ts +9 -0
  46. package/dist/channels/slack/dispatch.d.ts.map +1 -1
  47. package/dist/channels/slack/dispatch.js +3 -0
  48. package/dist/channels/slack/inbound.d.ts.map +1 -1
  49. package/dist/channels/slack/inbound.js +24 -20
  50. package/dist/channels/slack/interactive.d.ts +2 -0
  51. package/dist/channels/slack/interactive.d.ts.map +1 -1
  52. package/dist/channels/slack/interactive.js +1 -0
  53. package/dist/channels/slack/live-delivery.d.ts +3 -0
  54. package/dist/channels/slack/live-delivery.d.ts.map +1 -1
  55. package/dist/channels/slack/live-delivery.js +5 -0
  56. package/dist/channels/slack/reply-options.d.ts +9 -0
  57. package/dist/channels/slack/reply-options.d.ts.map +1 -1
  58. package/dist/channels/slack/reply-options.js +31 -1
  59. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  60. package/dist/channels/slack/slack-channel.js +7 -0
  61. package/dist/channels/slack/stream.d.ts +5 -1
  62. package/dist/channels/slack/stream.d.ts.map +1 -1
  63. package/dist/channels/slack/types.d.ts +29 -0
  64. package/dist/channels/slack/types.d.ts.map +1 -1
  65. package/dist/channels.d.ts +1 -1
  66. package/dist/channels.js +1 -1
  67. package/dist/docs/404.html +3 -3
  68. package/dist/docs/assets/{app.BjS1QEI4.js → app.BITbgXMP.js} +4 -4
  69. package/dist/docs/assets/changelog.md.sdD6ctqK.js +1 -0
  70. package/dist/docs/assets/changelog.md.sdD6ctqK.lean.js +1 -0
  71. package/dist/docs/assets/chunks/@localSearchIndexroot.B45uCZp9.js +1 -0
  72. package/dist/docs/assets/chunks/{VPLocalSearchBox.BOuvjb5Y.js → VPLocalSearchBox.3qo4-bX9.js} +2 -2
  73. package/dist/docs/assets/chunks/{arc.3WR6Jf-y.js → arc.CTrZocKU.js} +1 -1
  74. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.Dtb6Dqh6.js → architectureDiagram-Q4EWVU46.BkgIqxrv.js} +1 -1
  75. package/dist/docs/assets/chunks/{baseUniq.BUyrgrZE.js → baseUniq.5w0JfVgo.js} +1 -1
  76. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BVLV_voZ.js → blockDiagram-DXYQGD6D.BVLtPjQc.js} +1 -1
  77. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.jXJ1q70M.js → c4Diagram-AHTNJAMY.CQ7neZTW.js} +1 -1
  78. package/dist/docs/assets/chunks/channel.Cv2w64wj.js +1 -0
  79. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.zz1SMBvK.js → chunk-4BX2VUAB.D-hJ7uKM.js} +1 -1
  80. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.CzYKuv3I.js → chunk-4TB4RGXK.RBYX5ywX.js} +1 -1
  81. package/dist/docs/assets/chunks/{chunk-55IACEB6.C7_tcJZD.js → chunk-55IACEB6.Br05HoEb.js} +1 -1
  82. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.DeTwQPVO.js → chunk-EDXVE4YY.BD_7QS60.js} +1 -1
  83. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DhMTl7ut.js → chunk-FMBD7UC4.BOPnMabX.js} +1 -1
  84. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Me7f5hEp.js → chunk-OYMX7WX6.DmGIdP8i.js} +1 -1
  85. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D0E0Bb6g.js → chunk-QZHKN3VN.CGHmolCB.js} +1 -1
  86. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CdOOBFYL.js → chunk-YZCP3GAM.C_Uhs25v.js} +1 -1
  87. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CtO2atCr.js +1 -0
  88. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CtO2atCr.js +1 -0
  89. package/dist/docs/assets/chunks/clone.hfsCtgP4.js +1 -0
  90. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BNbGESzN.js → cose-bilkent-S5V4N54A.DsU6xpcZ.js} +1 -1
  91. package/dist/docs/assets/chunks/{dagre-KV5264BT.zU7Lu_xJ.js → dagre-KV5264BT.BqQLDcoU.js} +1 -1
  92. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.B9qOdE5h.js → diagram-5BDNPKRD.Cgv8uUNF.js} +1 -1
  93. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.D8X-sf77.js → diagram-G4DWMVQ6.BXHPSXh_.js} +1 -1
  94. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.CW7MvMlE.js → diagram-MMDJMWI5.CgJzo8f_.js} +1 -1
  95. package/dist/docs/assets/chunks/{diagram-TYMM5635.J489G0Nd.js → diagram-TYMM5635.CfiN6lgT.js} +1 -1
  96. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.BkW7tGfs.js → erDiagram-SMLLAGMA.8n_hHzAd.js} +1 -1
  97. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.jc9iWORD.js → flowDiagram-DWJPFMVM.B2pb1Dv_.js} +1 -1
  98. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.B-UQfd9E.js → ganttDiagram-T4ZO3ILL.BFih4ucI.js} +1 -1
  99. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DFzrTSlJ.js → gitGraphDiagram-UUTBAWPF.CqZ8PTl8.js} +1 -1
  100. package/dist/docs/assets/chunks/{graph.C5IB6_e_.js → graph.0ufsI9gu.js} +1 -1
  101. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DwF0-c8L.js → infoDiagram-42DDH7IO.BkPRFww4.js} +1 -1
  102. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.fBaTqzE7.js → ishikawaDiagram-UXIWVN3A.DCRK-cVX.js} +1 -1
  103. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CM8gDVJy.js → journeyDiagram-VCZTEJTY.BFyAJo33.js} +1 -1
  104. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.YiD1p0LB.js → kanban-definition-6JOO6SKY.CmA2SoGc.js} +1 -1
  105. package/dist/docs/assets/chunks/{layout.6Um-DVJT.js → layout.CYY-CbMr.js} +1 -1
  106. package/dist/docs/assets/chunks/{linear.DcTeg4Hn.js → linear.DeeDV4Oq.js} +1 -1
  107. package/dist/docs/assets/chunks/{min.CIxkY8Fe.js → min.BL3XTBN2.js} +1 -1
  108. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.D4QM_voR.js → mindmap-definition-QFDTVHPH.BcbY-G6H.js} +1 -1
  109. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.nmB309G1.js → pieDiagram-DEJITSTG.dzDcQnPE.js} +1 -1
  110. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D1HtZR3C.js → quadrantDiagram-34T5L4WZ.RxR0m5iK.js} +1 -1
  111. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CZgQWob-.js → requirementDiagram-MS252O5E.DflaXb6Q.js} +1 -1
  112. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DtiBfU-P.js → sankeyDiagram-XADWPNL6.BteLKQAe.js} +1 -1
  113. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cld4gDSt.js → sequenceDiagram-FGHM5R23.BD8jM8oz.js} +1 -1
  114. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DatP823_.js → stateDiagram-FHFEXIEX.C8SBkbPH.js} +1 -1
  115. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BLz7Qyo3.js +1 -0
  116. package/dist/docs/assets/chunks/{theme.D5jbBys7.js → theme.DiViIOLe.js} +2 -2
  117. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.DwQLI2be.js → timeline-definition-GMOUNBTQ.D64XF5dV.js} +1 -1
  118. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.a5yMfnsa.js → vennDiagram-DHZGUBPP.CwmeYan-.js} +1 -1
  119. package/dist/docs/assets/chunks/{wardley-RL74JXVD.B-FXivgT.js → wardley-RL74JXVD.DmAlXlpu.js} +1 -1
  120. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.Dz--Opy3.js → wardleyDiagram-NUSXRM2D.5VJ2-5K0.js} +1 -1
  121. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Dl8w8TeT.js → xychartDiagram-5P7HB3ND.Cl6_fZVC.js} +1 -1
  122. package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.js → guides_hooks.md.B2XfGX50.js} +7 -3
  123. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.js → guides_mcp-oauth.md.Cxq2TxBB.js} +3 -3
  124. package/dist/docs/assets/{guides_mcp-oauth.md.BM_eFC0L.lean.js → guides_mcp-oauth.md.Cxq2TxBB.lean.js} +1 -1
  125. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.js +37 -0
  126. package/dist/docs/assets/guides_opentelemetry.md.D4wO7_8v.lean.js +1 -0
  127. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.js → guides_slack.md.ClIyi7FI.js} +8 -3
  128. package/dist/docs/assets/{guides_slack.md.Bn-WupSE.lean.js → guides_slack.md.ClIyi7FI.lean.js} +1 -1
  129. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.js → reference_agent-config.md.CGSx8COP.js} +6 -2
  130. package/dist/docs/assets/{reference_agent-config.md.IplwL25I.lean.js → reference_agent-config.md.CGSx8COP.lean.js} +1 -1
  131. package/dist/docs/assets/{reference_channels.md.Bxaa020x.js → reference_channels.md.CNNIS6K7.js} +1 -1
  132. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.js → reference_hooks.md.CROr0QgC.js} +13 -7
  133. package/dist/docs/assets/{reference_hooks.md.B1jq3oGl.lean.js → reference_hooks.md.CROr0QgC.lean.js} +1 -1
  134. package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.js → reference_schedules.md.BqWnJES4.js} +3 -3
  135. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.js +22 -0
  136. package/dist/docs/assets/reference_sessions.md.Bi6lHttM.lean.js +1 -0
  137. package/dist/docs/assets/{reference_skills.md.C2GWh7g8.js → reference_skills.md.Ckddg6KX.js} +3 -3
  138. package/dist/docs/assets/{reference_tools.md.-6pypsWt.js → reference_tools.md.Bo0UfT0a.js} +1 -1
  139. package/dist/docs/assets/{style.nMsabY-V.css → style.B9o0luvp.css} +1 -1
  140. package/dist/docs/building-with-agents.html +37 -37
  141. package/dist/docs/changelog.html +60 -0
  142. package/dist/docs/changelog.md +86 -0
  143. package/dist/docs/deployment.html +37 -37
  144. package/dist/docs/evals.html +37 -37
  145. package/dist/docs/guides/agent-to-agent.html +37 -37
  146. package/dist/docs/guides/bitbucket.html +37 -37
  147. package/dist/docs/guides/cloud-agents.html +37 -37
  148. package/dist/docs/guides/convert-automation.html +37 -37
  149. package/dist/docs/guides/export-grokbot.html +37 -37
  150. package/dist/docs/guides/github.html +37 -37
  151. package/dist/docs/guides/gitlab.html +37 -37
  152. package/dist/docs/guides/grokbot-agents.html +37 -37
  153. package/dist/docs/guides/hooks.html +45 -41
  154. package/dist/docs/guides/hooks.md +7 -3
  155. package/dist/docs/guides/improve.html +37 -37
  156. package/dist/docs/guides/jev.html +37 -37
  157. package/dist/docs/guides/mcp-oauth.html +39 -39
  158. package/dist/docs/guides/mcp-oauth.md +12 -0
  159. package/dist/docs/guides/migrate.html +37 -37
  160. package/dist/docs/guides/opentelemetry.html +62 -70
  161. package/dist/docs/guides/opentelemetry.md +149 -179
  162. package/dist/docs/guides/pagerduty.html +37 -37
  163. package/dist/docs/guides/slack.html +44 -39
  164. package/dist/docs/guides/slack.md +41 -0
  165. package/dist/docs/guides/webhooks.html +37 -37
  166. package/dist/docs/hashmap.json +1 -1
  167. package/dist/docs/hillclimbing.html +37 -37
  168. package/dist/docs/index.html +37 -37
  169. package/dist/docs/llms-full.txt +385 -193
  170. package/dist/docs/llms.txt +2 -1
  171. package/dist/docs/quickstart.html +37 -37
  172. package/dist/docs/reference/agent-config.html +42 -38
  173. package/dist/docs/reference/agent-config.md +21 -1
  174. package/dist/docs/reference/artifacts.html +37 -37
  175. package/dist/docs/reference/channels.html +38 -38
  176. package/dist/docs/reference/channels.md +5 -1
  177. package/dist/docs/reference/cli.html +37 -37
  178. package/dist/docs/reference/connections.html +37 -37
  179. package/dist/docs/reference/evals.html +37 -37
  180. package/dist/docs/reference/extensions.html +37 -37
  181. package/dist/docs/reference/hooks.html +49 -43
  182. package/dist/docs/reference/hooks.md +10 -5
  183. package/dist/docs/reference/http-api.html +37 -37
  184. package/dist/docs/reference/instructions.html +37 -37
  185. package/dist/docs/reference/memory.html +37 -37
  186. package/dist/docs/reference/playground.html +36 -36
  187. package/dist/docs/reference/project-layout.html +37 -37
  188. package/dist/docs/reference/prompt.html +37 -37
  189. package/dist/docs/reference/schedules.html +40 -40
  190. package/dist/docs/reference/sessions.html +58 -37
  191. package/dist/docs/reference/sessions.md +46 -1
  192. package/dist/docs/reference/skills.html +40 -40
  193. package/dist/docs/reference/subagents.html +37 -37
  194. package/dist/docs/reference/tools.html +39 -39
  195. package/dist/docs/reference/tools.md +3 -3
  196. package/dist/docs/templates/agentic-owners.html +37 -37
  197. package/dist/docs/templates/grokbot-agents.html +37 -37
  198. package/dist/docs/templates/security-reviewer.html +37 -37
  199. package/dist/docs/templates/thermo-quality-review.html +37 -37
  200. package/dist/docs/templates/thermo-review.html +37 -37
  201. package/dist/docs/templates/triage.html +37 -37
  202. package/dist/docs/troubleshooting.html +36 -36
  203. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  204. package/dist/extensions/cursor-cloud-agents/extension.js +15 -15
  205. package/dist/extensions/cursor-cloud-agents/lib/backend.js +1 -1
  206. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  207. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  208. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  209. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  210. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  211. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  212. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  213. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  214. package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -1
  215. package/dist/extensions/cursor-grokbot-agents/extension.js +7 -3
  216. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  217. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  218. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  219. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  220. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  221. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  222. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  223. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  224. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  225. package/dist/extensions/improve/extension.js +1 -1
  226. package/dist/extensions/jev/extension.js +2 -2
  227. package/dist/extensions/jev/tools/evaluate.js +3 -3
  228. package/dist/extensions/slack-communication/extension.js +1 -1
  229. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  230. package/dist/extensions/slack-communication/tools/edit-message.d.ts.map +1 -1
  231. package/dist/extensions/slack-communication/tools/edit-message.js +3 -6
  232. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  233. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  234. package/dist/extensions/slack-communication/tools/post-update.d.ts.map +1 -1
  235. package/dist/extensions/slack-communication/tools/post-update.js +3 -6
  236. package/dist/extensions/slack-communication/tools/react.js +1 -1
  237. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  238. package/dist/extensions.d.ts +1 -1
  239. package/dist/extensions.js +1 -1
  240. package/dist/index.d.ts +14 -11
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +8 -4
  243. package/dist/internal/as-of.d.ts +2 -0
  244. package/dist/internal/as-of.d.ts.map +1 -1
  245. package/dist/internal/as-of.js +2 -0
  246. package/dist/internal/builtin-tools/reminders.js +1 -1
  247. package/dist/internal/cli-deploy.d.ts.map +1 -1
  248. package/dist/internal/cli-deploy.js +18 -10
  249. package/dist/internal/continuation.d.ts +3 -0
  250. package/dist/internal/continuation.d.ts.map +1 -0
  251. package/dist/internal/continuation.js +1 -0
  252. package/dist/internal/conversation-mirror.d.ts +5 -0
  253. package/dist/internal/conversation-mirror.d.ts.map +1 -1
  254. package/dist/internal/conversation-mirror.js +12 -1
  255. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  256. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -1
  257. package/dist/internal/convert-grokbot/answers.js +10 -8
  258. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  259. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  260. package/dist/internal/convert-grokbot/recipe.js +1 -1
  261. package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
  262. package/dist/internal/cursor/account-mcp.js +2 -0
  263. package/dist/internal/cursor/backend-client.d.ts +8 -3
  264. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  265. package/dist/internal/cursor/backend-client.js +8 -3
  266. package/dist/internal/cursor/credentials.d.ts +2 -2
  267. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  268. package/dist/internal/cursor/credentials.js +1 -1
  269. package/dist/internal/cursor-account-mcp-auth.d.ts +6 -2
  270. package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
  271. package/dist/internal/cursor-account-mcp-auth.js +15 -6
  272. package/dist/internal/deferred-channel-session.d.ts +5 -4
  273. package/dist/internal/deferred-channel-session.d.ts.map +1 -1
  274. package/dist/internal/deferred-channel-session.js +6 -4
  275. package/dist/internal/deploy-client.d.ts +5 -0
  276. package/dist/internal/deploy-client.d.ts.map +1 -1
  277. package/dist/internal/deploy-client.js +3 -3
  278. package/dist/internal/deploy-manifest.js +2 -2
  279. package/dist/internal/describe-error.d.ts +2 -0
  280. package/dist/internal/describe-error.d.ts.map +1 -1
  281. package/dist/internal/describe-error.js +2 -0
  282. package/dist/internal/discovery/context.d.ts.map +1 -1
  283. package/dist/internal/discovery/context.js +1 -2
  284. package/dist/internal/discovery/cursor-plugin.js +8 -8
  285. package/dist/internal/discovery/extensions.js +15 -8
  286. package/dist/internal/discovery/info.d.ts +2 -2
  287. package/dist/internal/discovery/info.d.ts.map +1 -1
  288. package/dist/internal/discovery/info.js +6 -9
  289. package/dist/internal/discovery/instrumentation.d.ts +10 -0
  290. package/dist/internal/discovery/instrumentation.d.ts.map +1 -0
  291. package/dist/internal/discovery/instrumentation.js +29 -0
  292. package/dist/internal/discovery/modules.d.ts.map +1 -1
  293. package/dist/internal/discovery/modules.js +4 -4
  294. package/dist/internal/discovery/project-public.d.ts +16 -0
  295. package/dist/internal/discovery/project-public.d.ts.map +1 -0
  296. package/dist/internal/discovery/project-public.js +54 -0
  297. package/dist/internal/discovery/project.d.ts.map +1 -1
  298. package/dist/internal/discovery/project.js +13 -3
  299. package/dist/internal/discovery/services.d.ts +5 -4
  300. package/dist/internal/discovery/services.d.ts.map +1 -1
  301. package/dist/internal/discovery/services.js +12 -6
  302. package/dist/internal/event-mapper.d.ts.map +1 -1
  303. package/dist/internal/event-mapper.js +1 -0
  304. package/dist/internal/factory-resource-channel.d.ts +1 -1
  305. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  306. package/dist/internal/filesystem/nearest.d.ts +1 -0
  307. package/dist/internal/filesystem/nearest.d.ts.map +1 -1
  308. package/dist/internal/filesystem/nearest.js +1 -0
  309. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  310. package/dist/internal/filesystem/tools.js +1 -1
  311. package/dist/internal/handleAgentServeTrigger.d.ts +10 -0
  312. package/dist/internal/handleAgentServeTrigger.d.ts.map +1 -1
  313. package/dist/internal/handleAgentServeTrigger.js +3 -0
  314. package/dist/internal/hmac-secret-values.d.ts +1 -1
  315. package/dist/internal/hmac-secret-values.d.ts.map +1 -1
  316. package/dist/internal/host-otel.d.ts +1 -1
  317. package/dist/internal/host-otel.d.ts.map +1 -1
  318. package/dist/internal/host-otel.js +5 -0
  319. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  320. package/dist/internal/hosted-delivery.js +6 -2
  321. package/dist/internal/http-channel.d.ts.map +1 -1
  322. package/dist/internal/http-channel.js +1 -0
  323. package/dist/internal/ids.d.ts +8 -0
  324. package/dist/internal/ids.d.ts.map +1 -1
  325. package/dist/internal/ids.js +20 -0
  326. package/dist/internal/init-scaffold.js +1 -1
  327. package/dist/internal/interview/agent-questions.d.ts +1 -1
  328. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  329. package/dist/internal/interview/agent-questions.js +1 -1
  330. package/dist/internal/interview/question.d.ts +2 -2
  331. package/dist/internal/interview/question.d.ts.map +1 -1
  332. package/dist/internal/interview/question.js +2 -2
  333. package/dist/internal/json-schema.d.ts.map +1 -1
  334. package/dist/internal/json-schema.js +3 -7
  335. package/dist/internal/mcp-endpoint.d.ts +16 -4
  336. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  337. package/dist/internal/mcp-endpoint.js +18 -6
  338. package/dist/internal/mcp-host.d.ts +9 -0
  339. package/dist/internal/mcp-host.d.ts.map +1 -1
  340. package/dist/internal/mcp-host.js +15 -0
  341. package/dist/internal/otel/collector.d.ts +5 -0
  342. package/dist/internal/otel/collector.d.ts.map +1 -1
  343. package/dist/internal/otel/collector.js +24 -5
  344. package/dist/internal/otel/config.d.ts +31 -21
  345. package/dist/internal/otel/config.d.ts.map +1 -1
  346. package/dist/internal/otel/config.js +121 -140
  347. package/dist/internal/otel/conversation-span-processor.d.ts +9 -0
  348. package/dist/internal/otel/conversation-span-processor.d.ts.map +1 -0
  349. package/dist/internal/otel/conversation-span-processor.js +34 -0
  350. package/dist/internal/otel/customer.d.ts +52 -0
  351. package/dist/internal/otel/customer.d.ts.map +1 -0
  352. package/dist/internal/otel/customer.js +727 -0
  353. package/dist/internal/otel/runtime.d.ts +12 -16
  354. package/dist/internal/otel/runtime.d.ts.map +1 -1
  355. package/dist/internal/otel/runtime.js +30 -234
  356. package/dist/internal/otel-env.d.ts +6 -0
  357. package/dist/internal/otel-env.d.ts.map +1 -0
  358. package/dist/internal/otel-env.js +5 -0
  359. package/dist/internal/reminder-runner.d.ts +9 -4
  360. package/dist/internal/reminder-runner.d.ts.map +1 -1
  361. package/dist/internal/reminder-runner.js +12 -10
  362. package/dist/internal/reminder-schedule.d.ts +1 -0
  363. package/dist/internal/reminder-schedule.d.ts.map +1 -1
  364. package/dist/internal/reminder-schedule.js +1 -0
  365. package/dist/internal/sdk-runner.d.ts +2 -0
  366. package/dist/internal/sdk-runner.d.ts.map +1 -1
  367. package/dist/internal/sdk-runner.js +149 -13
  368. package/dist/internal/server.d.ts +4 -1
  369. package/dist/internal/server.d.ts.map +1 -1
  370. package/dist/internal/server.js +25 -24
  371. package/dist/internal/session-engine.d.ts +27 -0
  372. package/dist/internal/session-engine.d.ts.map +1 -1
  373. package/dist/internal/session-engine.js +149 -21
  374. package/dist/internal/slack-provision-client.js +1 -1
  375. package/dist/internal/store-api-protocol.d.ts +1 -1
  376. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  377. package/dist/internal/store-api-protocol.js +1 -1
  378. package/dist/internal/update-check.d.ts +2 -2
  379. package/dist/internal/update-check.d.ts.map +1 -1
  380. package/dist/internal/update-check.js +3 -3
  381. package/dist/internal/zod3-datetime.d.ts +12 -0
  382. package/dist/internal/zod3-datetime.d.ts.map +1 -0
  383. package/dist/internal/zod3-datetime.js +17 -0
  384. package/dist/otel-public.d.ts +2 -3
  385. package/dist/otel-public.d.ts.map +1 -1
  386. package/dist/otel-public.js +2 -2
  387. package/dist/otel.d.ts +3 -102
  388. package/dist/otel.d.ts.map +1 -1
  389. package/dist/otel.js +61 -97
  390. package/dist/playground/assets/index-CyPkf2y7.css +1 -0
  391. package/dist/playground/assets/{index-CHk6O92d.js → index-DpbzbqFY.js} +38 -38
  392. package/dist/playground/index.html +2 -2
  393. package/dist/public-deprecated.d.ts +36 -0
  394. package/dist/public-deprecated.d.ts.map +1 -0
  395. package/dist/public-deprecated.js +39 -0
  396. package/dist/tools.d.ts +3 -3
  397. package/dist/tools.d.ts.map +1 -1
  398. package/dist/tools.js +1 -1
  399. package/dist/types.d.ts +221 -90
  400. package/dist/types.d.ts.map +1 -1
  401. package/docs/changelog.md +91 -0
  402. package/docs/guides/hooks.md +7 -3
  403. package/docs/guides/mcp-oauth.md +12 -0
  404. package/docs/guides/opentelemetry.md +149 -184
  405. package/docs/guides/slack.md +41 -0
  406. package/docs/reference/agent-config.md +21 -1
  407. package/docs/reference/channels.md +5 -1
  408. package/docs/reference/hooks.md +10 -5
  409. package/docs/reference/sessions.md +46 -1
  410. package/docs/reference/tools.md +3 -3
  411. package/package.json +31 -7
  412. package/schemas/grokbot-answers.schema.json +11 -0
  413. package/skills/framework-map/SKILL.md +2 -1
  414. package/skills/otel/SKILL.md +28 -48
  415. package/templates/code-wiki/evals/wiki.eval.ts +2 -2
  416. package/dist/docs/assets/chunks/@localSearchIndexroot.oGqZumnJ.js +0 -1
  417. package/dist/docs/assets/chunks/channel.Dt4aweTm.js +0 -1
  418. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.DGUHZs6j.js +0 -1
  419. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.DGUHZs6j.js +0 -1
  420. package/dist/docs/assets/chunks/clone.DWf3k0Z0.js +0 -1
  421. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.C0571l4D.js +0 -1
  422. package/dist/docs/assets/guides_opentelemetry.md.DBQtp7_V.js +0 -45
  423. package/dist/docs/assets/guides_opentelemetry.md.DBQtp7_V.lean.js +0 -1
  424. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.js +0 -1
  425. package/dist/docs/assets/reference_sessions.md.C8FXuGwk.lean.js +0 -1
  426. package/dist/playground/assets/index-BdMwybMt.css +0 -1
  427. package/templates/grokbot-agents/.gitignore +0 -4
  428. package/templates/security-help/.gitignore +0 -4
  429. /package/dist/docs/assets/{guides_hooks.md.Bfj0pK91.lean.js → guides_hooks.md.B2XfGX50.lean.js} +0 -0
  430. /package/dist/docs/assets/{reference_channels.md.Bxaa020x.lean.js → reference_channels.md.CNNIS6K7.lean.js} +0 -0
  431. /package/dist/docs/assets/{reference_schedules.md.03Ryy9ca.lean.js → reference_schedules.md.BqWnJES4.lean.js} +0 -0
  432. /package/dist/docs/assets/{reference_skills.md.C2GWh7g8.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
  433. /package/dist/docs/assets/{reference_tools.md.-6pypsWt.lean.js → reference_tools.md.Bo0UfT0a.lean.js} +0 -0
@@ -1,18 +1,11 @@
1
- # Observe an agent with OpenTelemetry
1
+ # OpenTelemetry
2
2
 
3
- OpenTelemetry connects an agent turn to the observability system your
4
- team already uses. Once you configure an OTLP collector, each request,
5
- model turn, tool call, and subagent appears alongside token, tool, and
6
- cost metrics from the serve process.
7
-
8
- Export is opt-in. Nothing leaves the process until you configure a
9
- destination.
10
-
11
- ## Connect an OTLP collector
12
-
13
- Set the collector endpoint, start the agent, and send it a message. You
14
- should see an `agent_sdk.http` request span and an `agent_sdk.turn`
15
- trace, with any tool or subagent work nested under the turn.
3
+ BDK exports traces, metrics, and logs to an OTLP collector. You
4
+ configure that with standard `OTEL_*` environment variables. There is
5
+ no `defineOtel` or `register()` hook. `ctx.host.otel` is deprecated.
6
+ It still runs for this release and logs one warning per process. Set
7
+ `OTEL_*` variables and record with `metrics.getMeter` and
8
+ `trace.getTracer` from `@opentelemetry/api`.
16
9
 
17
10
  ```bash
18
11
  export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.example.com
@@ -22,214 +15,191 @@ export OTEL_SERVICE_NAME=incident-agent
22
15
  bdk serve --dir . --dev
23
16
  ```
24
17
 
25
- Metrics use delta temporality by default. For Grafana Cloud, set
18
+ The default protocol is OTLP/HTTP protobuf. Set
19
+ `OTEL_EXPORTER_OTLP_PROTOCOL=http/json` when the collector only accepts
20
+ JSON. `grpc` is not supported. BDK logs a warning and uses
21
+ `http/protobuf`.
22
+
23
+ Metrics use delta temporality by default. BDK logs that default when
24
+ export starts. For Grafana Cloud or Prometheus, set
26
25
  `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` to `cumulative`.
27
26
  Grafana Cloud rejects delta metrics.
28
27
 
29
- The default protocol is OTLP/HTTP protobuf. If you already call
30
- `serve()` from TypeScript, you can configure the same destination in
31
- code:
32
-
33
- ```ts
34
- import { serve } from "@cursor/bdk";
35
-
36
- await serve(".", {
37
- otel: {
38
- serviceName: "incident-agent",
39
- exporters: [
40
- {
41
- url: "https://otel.example.com",
42
- headers: {
43
- Authorization: `Bearer ${process.env.OTEL_TOKEN ?? ""}`,
44
- },
45
- },
46
- ],
47
- },
48
- });
49
- ```
28
+ BDK installs trace, metric, and log providers before it imports
29
+ `bot/agent.ts`. A meter, tracer, or logger created at module scope
30
+ binds to those providers. Exporters attach when the process has the
31
+ `OTEL_*` variables. On a hosted agent that is the first request, after
32
+ secrets are in the environment.
50
33
 
51
- Use environment variables when you start the agent with
52
- `bdk serve`. Use `serve({ otel })` when your TypeScript
53
- application starts the server itself. When that application
54
- already uses OpenTelemetry, BDK sends its traces, metrics, and
55
- logs to the collector configured here.
34
+ With no OTLP endpoint, BDK adds no exporters. Outbound `fetch` does
35
+ not gain a `traceparent` header. The session collector stays disabled.
56
36
 
57
- ## Export from a hosted agent
37
+ ## Variables
58
38
 
59
- Set the collector endpoint and headers as secrets, and add the
39
+ | Variable | Effect |
40
+ | --- | --- |
41
+ | `OTEL_EXPORTER_OTLP_ENDPOINT` | Base URL. BDK appends `/v1/traces`, `/v1/metrics`, and `/v1/logs`. |
42
+ | `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | Traces URL, used as written. It wins over the base URL. |
43
+ | `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Metrics URL, used as written. It wins over the base URL. |
44
+ | `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Logs URL, used as written. It wins over the base URL. |
45
+ | `OTEL_EXPORTER_OTLP_HEADERS` | Headers on every export. Values are URL-encoded. Read again on each export. |
46
+ | `OTEL_EXPORTER_OTLP_PROTOCOL` | `http/protobuf` (default) or `http/json`. gRPC is not supported. |
47
+ | `OTEL_SERVICE_NAME` | `service.name`. Default is the agent name, then `unknown_service:node`. |
48
+ | `OTEL_RESOURCE_ATTRIBUTES` | Resource attributes, including `service.namespace`, `service.version`, and `deployment.environment.name`. |
49
+ | `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | `delta` (default), `cumulative`, or `lowmemory`. Use `cumulative` for Grafana Cloud. |
50
+ | `OTEL_LOGS_EXPORTER` | `otlp` turns logs on. Unset, `none`, and `console` leave OTLP logs off. |
51
+ | `OTEL_SDK_DISABLED` | `true` turns export off. |
52
+ | `OTEL_TRACES_EXPORTER` | `none` turns traces off. |
53
+ | `OTEL_METRICS_EXPORTER` | `none` turns metrics off. |
54
+ | `OTEL_LOG_USER_PROMPTS` | `1` puts prompt text on log records. |
55
+ | `OTEL_LOG_TOOL_CONTENT` | `1` puts tool payloads on log records. |
56
+
57
+ ## Hosted agents
58
+
59
+ Set the endpoint, headers, and service name as secrets. Add the
60
60
  collector host to `hosting.egressDomains`. The host is a hostname
61
- with no scheme and no path. The first request loads the secrets,
62
- and export starts with those headers.
61
+ with no scheme and no path.
63
62
 
64
63
  ```ts
65
- // bot/agent.ts
66
- import { defineAgent } from "@cursor/bdk";
67
-
68
64
  export default defineAgent({
69
65
  hosting: {
70
66
  egressDomains: ["otlp-gateway-prod-us-east-0.grafana.net"],
71
- secretNames: ["OTEL_EXPORTER_OTLP_ENDPOINT", "OTEL_EXPORTER_OTLP_HEADERS"],
67
+ secretNames: [
68
+ "OTEL_EXPORTER_OTLP_ENDPOINT",
69
+ "OTEL_EXPORTER_OTLP_HEADERS",
70
+ "OTEL_SERVICE_NAME",
71
+ ],
72
72
  },
73
73
  });
74
74
  ```
75
75
 
76
- ```bash
77
- bdk secrets set my-agent OTEL_EXPORTER_OTLP_ENDPOINT OTEL_EXPORTER_OTLP_HEADERS
78
- ```
76
+ Secrets arrive with the first request that has an endpoint. That
77
+ request's export uses those headers and `service.name`. A later
78
+ `bdk secrets set` updates headers on the next export, including a
79
+ rotated key. BDK also replaces the exporter when the URL, protocol,
80
+ or signal list changes. `service.name` is fixed on the first export
81
+ that attaches. Redeploy to change the service name.
79
82
 
80
- `OTEL_EXPORTER_OTLP_HEADERS` is a comma-separated list of
81
- `name=value` pairs. Each value is URL-encoded, so a space is
82
- `%20` (`Authorization=Basic%20...`).
83
+ ## What you can record
83
84
 
84
- A later `bdk secrets set` changes the headers on the next export.
85
- You do not redeploy to rotate a token. The URL, service name,
86
- resource attributes, signals, sample ratio, metric export interval,
87
- and metrics temporality stay as they were on the first export.
88
- Redeploy to change one of those. BDK logs a warning when one of them
89
- changes on a running agent.
85
+ Create the tracer, meter, and logger at module scope.
90
86
 
91
- When an exporter host is missing from `hosting.egressDomains`, BDK
92
- logs an error that names the host. Add the host and redeploy.
87
+ ```ts
88
+ import { metrics, trace } from "@opentelemetry/api";
89
+ import { logs } from "@opentelemetry/api-logs";
93
90
 
94
- Spans and metrics from before the first request are not exported,
95
- including spans from channel `onStart`. If the OpenTelemetry config
96
- fails, BDK logs the error and the request still completes.
91
+ const tracer = trace.getTracer("incident-agent");
92
+ const lookups = metrics.getMeter("incident-agent").createCounter("incident.lookups");
93
+ const logger = logs.getLogger("incident-agent");
94
+ ```
97
95
 
98
- Logs stay off until `serve({ otel })` sets `logs`, or until
99
- `OTEL_LOGS_EXPORTER` is `otlp`. Prompt text and tool payloads stay
100
- off until you set `OTEL_LOG_USER_PROMPTS` or
101
- `OTEL_LOG_TOOL_CONTENT`.
96
+ Record during a request, after secrets have loaded. A span or a log
97
+ record that ends before the exporters attach is still exported. BDK
98
+ holds up to 2048 spans and 2048 log records until the exporters
99
+ attach, then sends them. BDK drops each record past that limit. A
100
+ metric recorded before the first collect is included in that collect.
102
101
 
103
- ## Follow one conversation
102
+ BDK also records HTTP spans, token counts, and tool calls on the
103
+ session. Those spans carry `cursor.conversation.id`. A span you start
104
+ with `trace.getTracer` during a turn or a tool call gets the same
105
+ attribute from the active context. A value you set on the span stays.
106
+ BDK does not overwrite it. The id stays in this process. It is not
107
+ propagated.
104
108
 
105
- Copy the complete session ID from the playground or session API, then
106
- filter your observability system on either `agent_sdk.session_id` or
107
- `cursor.conversation.id`. Every turn in that conversation carries the
108
- same value, including follow-ups and tool work.
109
+ A metric does not get `cursor.conversation.id`. Read the id and set
110
+ the attribute yourself.
109
111
 
110
- The trace shape stays small:
112
+ ```ts
113
+ import { metrics } from "@opentelemetry/api";
114
+ import { currentConversationId } from "@cursor/bdk/otel";
111
115
 
112
- ```text
113
- request: agent_sdk.http
116
+ const lookups = metrics.getMeter("incident-agent").createCounter("incident.lookups");
114
117
 
115
- turn: agent_sdk.turn
116
- |- agent_sdk.tool
117
- `- agent_sdk.subagent
118
- `- agent_sdk.tool
118
+ lookups.add(1, { "cursor.conversation.id": currentConversationId() });
119
119
  ```
120
120
 
121
- A conversation can produce several turn traces, so use the session ID
122
- as the join key instead of expecting one long-lived session span.
123
-
124
- ### Subagents
121
+ Prompt text and tool payloads stay off log records unless logs are on
122
+ (`OTEL_LOGS_EXPORTER=otlp`) and you set `OTEL_LOG_USER_PROMPTS` or
123
+ `OTEL_LOG_TOOL_CONTENT`.
125
124
 
126
- A subagent's tool calls are `agent_sdk.tool` spans under its
127
- `agent_sdk.subagent` span. Its `reasoning.completed` and
128
- `message.completed` events sit on that span too, so the subagent span
129
- shows where its time went. Time between two tool spans is the model
130
- choosing the next step. A subagent that fails or is cancelled ends its
131
- span with ERROR status when it stops.
125
+ ## Limits
132
126
 
133
- ### Computer use
127
+ These are not supported yet.
134
128
 
135
- Each computer use action is an `agent_sdk.tool` span with
136
- `cursor.tool.name` set to `computerUse`, under the computer use
137
- subagent's span. A failed action has ERROR status. These attributes
138
- describe the action without typed text, coordinates, or screenshots:
129
+ - Custom span processors, samplers, and views.
130
+ - Bringing your own OpenTelemetry SDK.
131
+ - Library auto-instrumentation.
132
+ - A `register()` hook. There is no ticket for it yet.
133
+ - `OTEL_TRACES_SAMPLER` and `OTEL_METRIC_EXPORT_INTERVAL` that arrive
134
+ only with hosted secrets. BDK reads them when it builds the provider,
135
+ which is before that secret load. Set them on the process, then
136
+ restart. BDK logs a warning when a later value differs.
139
137
 
140
- | Attribute | Value |
141
- | --- | --- |
142
- | `agent_sdk.computer.actions` | The action type, such as `click`, `type`, or `screenshot` |
143
- | `agent_sdk.computer.executor_duration_ms` | Time the desktop took to run the action and capture the screen |
144
- | `agent_sdk.computer.settle_ms` | Part of that time spent waiting for the screen to settle |
138
+ Do not import your own SDK providers next to BDK's. BDK logs a warning
139
+ when a module replaces a provider BDK registered. The global API then
140
+ uses that module's provider. BDK shuts down a provider it created
141
+ only when that provider is not the one it registered.
145
142
 
146
- The two durations appear only on actions that succeed.
143
+ ## Migrating from serve({ otel })
147
144
 
148
- To export the full actions, turn on tool content as shown in
149
- [Control what leaves the process](#control-what-leaves-the-process).
150
- Tool content includes the text the agent typed, which can contain
151
- passwords.
145
+ `serve({ otel })` is removed. Delete the option. Set the same
146
+ values with `OTEL_*` variables. Delete `bot/otel.ts`,
147
+ `agent/otel.ts`, and `bot/instrumentation.ts`. Do not call
148
+ `defineOtel`.
152
149
 
153
- ## Add domain telemetry
150
+ BDK sends each signal to one URL. A second exporter for the same
151
+ signal has no variable.
154
152
 
155
- Use `ctx.host.otel` when your dashboard should answer questions the
156
- built-in telemetry cannot, such as which incident a turn handled or how
157
- long approval took. Attributes appear on the active turn and tool
158
- spans, while counters and histograms give you metrics to graph and
159
- alert on.
153
+ | Old option | Set this instead |
154
+ | --- | --- |
155
+ | `serviceName` | `OTEL_SERVICE_NAME` |
156
+ | `serviceVersion` | `service.version` in `OTEL_RESOURCE_ATTRIBUTES` |
157
+ | `resourceAttributes` | `OTEL_RESOURCE_ATTRIBUTES`. Separate pairs with commas. URL-encode each value. |
158
+ | `exporters[].url` | `OTEL_EXPORTER_OTLP_ENDPOINT`. BDK appends `/v1/traces`, `/v1/metrics`, and `/v1/logs`. |
159
+ | `exporters[].url` with `signals` | `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, or `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`. BDK uses that URL as written. |
160
+ | `exporters[].headers` | `OTEL_EXPORTER_OTLP_HEADERS`. Separate pairs with commas. URL-encode each value. |
161
+ | `exporters[].protocol` | `OTEL_EXPORTER_OTLP_PROTOCOL`. Use `http/protobuf` or `http/json`. For one signal, use `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL`, `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL`, or `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL`. |
162
+ | `exporters[].signals` | Set the signal URL above. Set `OTEL_TRACES_EXPORTER`, `OTEL_METRICS_EXPORTER`, or `OTEL_LOGS_EXPORTER` to `none` to stop that signal. |
163
+ | `traces: false` | `OTEL_TRACES_EXPORTER=none` |
164
+ | `traces: true` | Leave `OTEL_TRACES_EXPORTER` unset. Traces start when an endpoint is set. |
165
+ | `traces.sampleRatio` | `OTEL_TRACES_SAMPLER=parentbased_traceidratio` and `OTEL_TRACES_SAMPLER_ARG` set to the ratio. Set both before the process starts. |
166
+ | `metrics: false` | `OTEL_METRICS_EXPORTER=none` |
167
+ | `metrics: true` | Leave `OTEL_METRICS_EXPORTER` unset. Metrics start when a metrics URL is set. |
168
+ | `metrics.exportIntervalMillis` | `OTEL_METRIC_EXPORT_INTERVAL`, in milliseconds. Set it before the process starts. |
169
+ | `logs: false` | Leave `OTEL_LOGS_EXPORTER` unset, or set it to `none`. |
170
+ | `logs: true` | `OTEL_LOGS_EXPORTER=otlp` |
171
+ | `logs.userPrompts` | `OTEL_LOGS_EXPORTER=otlp` and `OTEL_LOG_USER_PROMPTS=1` |
172
+ | `logs.toolContent` | `OTEL_LOGS_EXPORTER=otlp` and `OTEL_LOG_TOOL_CONTENT=1` |
173
+ | `otel: false` | Set no endpoint, or set `OTEL_SDK_DISABLED=true`. |
174
+
175
+ Before:
160
176
 
161
177
  ```ts
162
- ctx.host.otel.setAttributes({
163
- "support.ticket_id": "INC-123",
164
- "support.queue": "p1",
165
- });
166
-
167
- ctx.host.otel.increment("support.ticket.resolved", {
168
- outcome: "fixed",
169
- });
170
-
171
- ctx.host.otel.record("support.approval.duration_ms", 1420, {
172
- outcome: "approved",
178
+ await serve(".", {
179
+ otel: {
180
+ serviceName: "incident-agent",
181
+ exporters: [
182
+ {
183
+ url: "https://otel.example.com",
184
+ headers: { Authorization: `Bearer ${process.env.OTEL_TOKEN ?? ""}` },
185
+ },
186
+ ],
187
+ },
173
188
  });
174
189
  ```
175
190
 
176
- This API is available in tools, hooks, and channel handlers. A
177
- session-bound context adds `cursor.conversation.id` and
178
- `agent_sdk.agent` automatically, so custom measurements join the
179
- first-party telemetry without extra plumbing.
180
-
181
- Prefix custom names with your team or agent. First-party metric names
182
- and join keys are reserved, and this surface does not create custom
183
- spans.
184
-
185
- ## Choose signals
186
-
187
- Once export has a destination, traces and metrics are on by default;
188
- logs remain off until you opt in.
189
-
190
- | Signal | What appears |
191
- | --- | --- |
192
- | Traces | HTTP requests, turns, tools, and subagents |
193
- | Metrics | Token usage, tool calls, cost, and BDK session or turn counts |
194
- | Logs | Session events, after you enable log export |
195
-
196
- The first metrics to look for are `cursor.token.usage`,
197
- `cursor.tool.calls`, and `cursor.cost.usage`. Configure
198
- `traces: false`, `metrics: false`, or `logs: true` under
199
- `serve({ otel })` when you need a different signal mix.
200
-
201
- ## Control what leaves the process
202
-
203
- Traces include structure, tool names, usage metrics, and span
204
- status. A failed tool's span status and its `action.result` log
205
- include a short failure reason.
206
- A tool or subagent that is still open when the turn ends gets
207
- ERROR status with the reason `no result`. User prompts, tool
208
- arguments, and full tool results stay off the wire until you opt in.
209
-
210
- Turn on logs first, then opt into prompt or tool content separately:
191
+ After:
211
192
 
212
193
  ```bash
213
- export OTEL_LOGS_EXPORTER=otlp
214
- export OTEL_LOG_USER_PROMPTS=1
215
- export OTEL_LOG_TOOL_CONTENT=1
194
+ export OTEL_SERVICE_NAME=incident-agent
195
+ export OTEL_EXPORTER_OTLP_ENDPOINT=https://otel.example.com
196
+ export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer%20$OTEL_TOKEN"
197
+ bdk serve --dir . --dev
216
198
  ```
217
199
 
218
- `OTEL_LOG_USER_PROMPTS` exports user text. `OTEL_LOG_TOOL_CONTENT`
219
- exports tool inputs, outputs, and failure details. Enable either only
220
- when the collector's access and retention policies are appropriate for
221
- that data.
222
-
223
- The same controls are available as
224
- `logs: { userPrompts, toolContent }` under `serve({ otel })`.
200
+ On a hosted agent, put the same names in `hosting.secretNames`. Add
201
+ the collector host to `hosting.egressDomains`. Then run:
225
202
 
226
- ## Related
227
-
228
- - [`skills/otel/SKILL.md`](https://github.com/cursor/cursor/blob/main/packages/agent-serve/skills/otel/SKILL.md): compact
229
- configuration and custom-metric reference for coding agents
230
- - [Hooks](/docs/reference/hooks.md): emit domain telemetry from session
231
- events
232
- - [Deployment](/docs/deployment.md): declare `hosting.egressDomains`
233
- and set collector secrets on a hosted agent
234
- - [Cursor enterprise OpenTelemetry Export](https://cursor.com/docs/enterprise/opentelemetry-export):
235
- send organization-wide Cursor telemetry to the same collector
203
+ ```bash
204
+ bdk secrets set my-agent OTEL_SERVICE_NAME OTEL_EXPORTER_OTLP_ENDPOINT OTEL_EXPORTER_OTLP_HEADERS
205
+ ```