@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
@@ -10,32 +10,35 @@ import { type ResolvedOtelConfig } from "./config.js";
10
10
  * delivery (OTLP BatchSpanProcessor defaults to 30s).
11
11
  */
12
12
  export declare const OTEL_FORCE_FLUSH_TIMEOUT_MS = 1000;
13
- /**
14
- * First hosted OTLP POST may include a cold TLS handshake to Datadog.
15
- * Bound separately from {@link OTEL_FORCE_FLUSH_TIMEOUT_MS} so the
16
- * queued turn/tool batch is not abandoned after 1s.
17
- */
18
- export declare const OTEL_DEFERRED_EXPORT_TIMEOUT_MS = 5000;
19
- /** Drop oldest finished spans when no collector has drained the buffer. */
20
- export declare const OTEL_IN_MEMORY_SPAN_LIMIT = 2048;
21
13
  export interface OtelRuntime {
22
14
  config: ResolvedOtelConfig;
23
15
  tracer: Tracer;
16
+ /** Absent until the first config with an exporter. Then it stays. */
24
17
  meter: Meter | undefined;
25
18
  logger: OtelLogger | undefined;
26
19
  httpDuration: Histogram | undefined;
27
20
  forceFlush: () => Promise<void>;
28
21
  shutdown: () => Promise<void>;
29
22
  }
30
- export interface CreateOtelRuntimeOptions {
23
+ export interface OtelRuntimeHandle {
24
+ runtime: OtelRuntime;
31
25
  /**
32
- * Re-resolve exporters at flush (hosted v2 binds deployment secrets
33
- * after bake). When bake had no OTLP exporters, finished spans sit
34
- * in memory until this returns destinations.
26
+ * Resolve the config again. Local `serve` calls this at start. A hosted v2
27
+ * guest calls it after each secret load, because secrets arrive with the
28
+ * first request.
35
29
  */
36
- resolveExport?: () => ResolvedOtelConfig;
30
+ reload(): void;
37
31
  }
38
- export declare function createOtelRuntime(config: ResolvedOtelConfig, log: (line: string) => void, options?: CreateOtelRuntimeOptions): OtelRuntime | undefined;
32
+ export interface CreateOtelRuntimeOptions {
33
+ /** Hosted egress allowlist. An exporter host outside it logs an error. */
34
+ egressDomains?: readonly string[];
35
+ }
36
+ /**
37
+ * BDK builds the providers from the first config that has an exporter. After
38
+ * that, only the headers change: exporters read them on each export. A change
39
+ * to any other setting logs a warning to redeploy.
40
+ */
41
+ export declare function createOtelRuntime(resolve: () => ResolvedOtelConfig, log: (line: string) => void, options?: CreateOtelRuntimeOptions): OtelRuntimeHandle;
39
42
  export declare function forceFlushOtelRuntime(runtime: OtelRuntime | undefined): Promise<void>;
40
43
  export declare function shutdownOtelRuntime(runtime: OtelRuntime | undefined): Promise<void>;
41
44
  export declare function raceOtelForceFlush(work: Promise<unknown>, log: (line: string) => void, timeoutMs?: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,MAAM,EAKZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,MAAM,IAAI,UAAU,EAAQ,MAAM,yBAAyB,CAAC;AAiC1E,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK1E;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAErD,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,kBAAkB,CAAC;CAC1C;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC3B,OAAO,CAAC,EAAE,wBAAwB,GACjC,WAAW,GAAG,SAAS,CA8BzB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC3B,SAAS,GAAE,MAAoC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAef"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,MAAM,EAMZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,MAAM,IAAI,UAAU,EAAQ,MAAM,yBAAyB,CAAC;AAiC1E,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,aAAa,CAAC;AAKrB;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,kBAAkB,EACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC3B,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAsEnB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3F;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC3B,SAAS,GAAE,MAAoC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Process-level OTel SDK (OTLP HTTP exporters for traces / metrics / logs).
3
3
  */
4
- import { DiagLogLevel, diag, metrics, trace, } from "@opentelemetry/api";
4
+ import { DiagLogLevel, diag, metrics, ProxyTracerProvider, trace, } from "@opentelemetry/api";
5
5
  import { logs } from "@opentelemetry/api-logs";
6
- import { ExportResultCode } from "@opentelemetry/core";
7
6
  import { OTLPLogExporter as OTLPLogExporterHttp } from "@opentelemetry/exporter-logs-otlp-http";
8
7
  import { OTLPLogExporter as OTLPLogExporterProto } from "@opentelemetry/exporter-logs-otlp-proto";
9
8
  import { OTLPMetricExporter as OTLPMetricExporterHttp } from "@opentelemetry/exporter-metrics-otlp-http";
@@ -11,13 +10,13 @@ import { OTLPMetricExporter as OTLPMetricExporterProto } from "@opentelemetry/ex
11
10
  import { OTLPTraceExporter as OTLPTraceExporterHttp } from "@opentelemetry/exporter-trace-otlp-http";
12
11
  import { OTLPTraceExporter as OTLPTraceExporterProto } from "@opentelemetry/exporter-trace-otlp-proto";
13
12
  import { resourceFromAttributes } from "@opentelemetry/resources";
14
- import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
13
+ import { BatchLogRecordProcessor, LoggerProvider, } from "@opentelemetry/sdk-logs";
15
14
  import { AggregationTemporality, MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
16
- import { SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-base";
17
15
  import { BatchSpanProcessor, NodeTracerProvider, ParentBasedSampler, TraceIdRatioBasedSampler, } from "@opentelemetry/sdk-trace-node";
18
16
  import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
19
17
  import { installOutboundFetchInstrumentation, } from "../../otel.js";
20
- import { exportersForSignal } from "./config.js";
18
+ import { egressAllowsHost } from "../hosting.js";
19
+ import { disabledOtelConfig, exportersForSignal, stableJson, } from "./config.js";
21
20
  import { ensureW3cPropagator } from "./propagation.js";
22
21
  const INSTRUMENTATION = "agent_sdk";
23
22
  /**
@@ -27,40 +26,71 @@ const INSTRUMENTATION = "agent_sdk";
27
26
  */
28
27
  export const OTEL_FORCE_FLUSH_TIMEOUT_MS = 1_000;
29
28
  /**
30
- * First hosted OTLP POST may include a cold TLS handshake to Datadog.
31
- * Bound separately from {@link OTEL_FORCE_FLUSH_TIMEOUT_MS} so the
32
- * queued turn/tool batch is not abandoned after 1s.
29
+ * BDK builds the providers from the first config that has an exporter. After
30
+ * that, only the headers change: exporters read them on each export. A change
31
+ * to any other setting logs a warning to redeploy.
33
32
  */
34
- export const OTEL_DEFERRED_EXPORT_TIMEOUT_MS = 5_000;
35
- /** Drop oldest finished spans when no collector has drained the buffer. */
36
- export const OTEL_IN_MEMORY_SPAN_LIMIT = 2_048;
37
- export function createOtelRuntime(config, log, options) {
38
- if (!config.enabled) {
39
- return undefined;
40
- }
41
- if (config.traces !== false) {
42
- installOutboundFetchInstrumentation();
43
- }
44
- const proto = process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim().toLowerCase();
45
- if (proto === "grpc") {
46
- log("[bdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
47
- }
48
- ensureW3cPropagator();
49
- const sdk = startOtelSdk(config, log, options?.resolveExport);
50
- const meter = config.metrics === false ? undefined : (sdk.meter ?? metrics.getMeter(INSTRUMENTATION));
33
+ export function createOtelRuntime(resolve, log, options = {}) {
34
+ let built;
35
+ let latest = disabledOtelConfig();
36
+ let started = false;
37
+ let warnedKey;
38
+ const runtime = {
39
+ config: disabledOtelConfig(),
40
+ tracer: noopTracer(),
41
+ meter: undefined,
42
+ logger: undefined,
43
+ httpDuration: undefined,
44
+ forceFlush: () => raceOtelForceFlush(Promise.allSettled(all(built?.providers).map((p) => p.forceFlush())), log),
45
+ shutdown: async () => {
46
+ await Promise.allSettled(all(built?.providers).map((p) => p.shutdown()));
47
+ },
48
+ };
49
+ // Exporters read headers from the latest config on each export. The rest
50
+ // of `runtime.config` stays as it was when the providers were built.
51
+ const read = () => latest;
52
+ const apply = (config) => {
53
+ if (config.enabled && !started) {
54
+ started = true;
55
+ startSdk(log);
56
+ }
57
+ if (config.traces !== false) {
58
+ installOutboundFetchInstrumentation();
59
+ }
60
+ const key = settingsKey(config);
61
+ if (built !== undefined) {
62
+ // A new URL, protocol, or signal list does not match the exporters
63
+ // already built. Leave `latest` so those exporters still find their headers.
64
+ if (key === built.key) {
65
+ latest = config;
66
+ }
67
+ else if (key !== warnedKey) {
68
+ warnedKey = key;
69
+ log("[bdk:otel] only exporter headers change after the first export; redeploy to apply the new OTel settings");
70
+ }
71
+ return;
72
+ }
73
+ latest = config;
74
+ runtime.config = config;
75
+ if (config.exporters.length > 0) {
76
+ built = { key, providers: buildProviders(config, read, log) };
77
+ warnEgress(config, options.egressDomains, log);
78
+ log(`[bdk] otel enabled service=${config.serviceName} exporters=${config.exporters.length} traces=${config.traces !== false} metrics=${config.metrics !== false} logs=${config.logs !== false}`);
79
+ }
80
+ bindInstruments(runtime, config, built?.providers);
81
+ };
51
82
  return {
52
- config,
53
- tracer: sdk.tracer,
54
- meter,
55
- logger: config.logs === false ? undefined : (sdk.logger ?? logs.getLogger(INSTRUMENTATION)),
56
- httpDuration: meter === undefined
57
- ? undefined
58
- : meter.createHistogram("agent_sdk.http.duration", {
59
- description: "HTTP request duration",
60
- unit: "ms",
61
- }),
62
- forceFlush: sdk.forceFlush,
63
- shutdown: sdk.shutdown,
83
+ runtime,
84
+ // The authored factory runs inside hosted delivery; telemetry must not
85
+ // fail the request.
86
+ reload: () => {
87
+ try {
88
+ apply(resolve());
89
+ }
90
+ catch (error) {
91
+ log(`[bdk:otel] error: OTel config failed: ${error instanceof Error ? error.message : String(error)}`);
92
+ }
93
+ },
64
94
  };
65
95
  }
66
96
  export async function forceFlushOtelRuntime(runtime) {
@@ -85,171 +115,133 @@ export async function raceOtelForceFlush(work, log, timeoutMs = OTEL_FORCE_FLUSH
85
115
  log(`[bdk:otel] forceFlush exceeded ${timeoutMs}ms; continuing`);
86
116
  }
87
117
  }
88
- function startOtelSdk(config, logger, resolveExport) {
118
+ function all(providers) {
119
+ return providers === undefined
120
+ ? []
121
+ : [providers.traces, providers.metrics, providers.logs].filter((provider) => provider !== undefined);
122
+ }
123
+ function startSdk(log) {
89
124
  diag.setLogger({
90
- verbose: (m) => logger(`[bdk:otel] ${m}`),
91
- debug: (m) => logger(`[bdk:otel] ${m}`),
92
- info: (m) => logger(`[bdk:otel] ${m}`),
93
- warn: (m) => logger(`[bdk:otel] warn: ${m}`),
94
- error: (m) => logger(`[bdk:otel] error: ${m}`),
125
+ verbose: (message) => log(`[bdk:otel] ${message}`),
126
+ debug: (message) => log(`[bdk:otel] ${message}`),
127
+ info: (message) => log(`[bdk:otel] ${message}`),
128
+ warn: (message) => log(`[bdk:otel] warn: ${message}`),
129
+ error: (message) => log(`[bdk:otel] error: ${message}`),
95
130
  }, DiagLogLevel.ERROR);
96
- const resource = buildResource(config);
97
- let tracerProvider;
98
- let meterProvider;
99
- let loggerProvider;
100
- let memoryExporter;
101
- const traceOpts = config.traces;
102
- if (traceOpts !== false) {
103
- const exporters = exportersForSignal(config.exporters, "traces");
104
- const globalTracer = hasRealTracerProvider();
105
- const spanProcessors = [];
106
- if (exporters.length > 0) {
107
- for (const exporter of exporters) {
108
- spanProcessors.push(new BatchSpanProcessor(createTraceExporter(exporter, signalUrl(exporter.url, "traces"))));
109
- }
110
- }
111
- else if (!globalTracer) {
112
- memoryExporter = new BoundedMemorySpanExporter(OTEL_IN_MEMORY_SPAN_LIMIT);
113
- spanProcessors.push(new SimpleSpanProcessor(memoryExporter));
114
- }
115
- if (spanProcessors.length > 0) {
116
- tracerProvider = new NodeTracerProvider({
117
- resource,
118
- spanProcessors,
119
- sampler: new ParentBasedSampler({
120
- root: new TraceIdRatioBasedSampler(traceOpts.sampleRatio ?? 1),
121
- }),
122
- });
123
- if (globalTracer) {
124
- logger("[bdk:otel] TracerProvider already registered; BDK traces export on a local provider");
125
- }
126
- else {
127
- tracerProvider.register();
128
- }
129
- }
130
- }
131
- const metricOpts = config.metrics;
132
- if (metricOpts !== false) {
133
- const exporters = exportersForSignal(config.exporters, "metrics");
134
- if (exporters.length > 0) {
135
- const exportIntervalMillis = metricOpts.exportIntervalMillis ?? 10_000;
136
- const provider = new MeterProvider({
137
- resource,
138
- readers: exporters.map((exporter) => new PeriodicExportingMetricReader({
139
- exporter: createMetricExporter(exporter, signalUrl(exporter.url, "metrics")),
140
- exportIntervalMillis,
141
- })),
142
- });
143
- meterProvider = provider;
144
- if (!metrics.setGlobalMeterProvider(provider)) {
145
- logger("[bdk:otel] MeterProvider already registered; BDK metrics export on a local provider");
146
- }
147
- }
148
- }
149
- if (config.logs !== false) {
150
- const exporters = exportersForSignal(config.exporters, "logs");
151
- if (exporters.length > 0) {
152
- const provider = new LoggerProvider({
153
- resource,
154
- processors: exporters.map((exporter) => new BatchLogRecordProcessor(createLogExporter(exporter, signalUrl(exporter.url, "logs")))),
155
- });
156
- loggerProvider = provider;
157
- // api-logs returns the active provider (ours on success, existing otherwise).
158
- if (logs.setGlobalLoggerProvider(provider) !== provider) {
159
- logger("[bdk:otel] LoggerProvider already registered; BDK logs export on a local provider");
160
- }
161
- }
162
- }
163
- if (memoryExporter === undefined) {
164
- logger(`[bdk] otel enabled service=${config.serviceName} exporters=${config.exporters.length} traces=${config.traces !== false} metrics=${config.metrics !== false} logs=${config.logs !== false}`);
131
+ ensureW3cPropagator();
132
+ if (process.env.OTEL_EXPORTER_OTLP_PROTOCOL?.trim().toLowerCase() === "grpc") {
133
+ log("[bdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
165
134
  }
166
- else {
167
- logger(`[bdk] otel recording service=${config.serviceName} (export on flush when OTLP exporters resolve)`);
135
+ }
136
+ function warnEgress(config, egressDomains, log) {
137
+ if (egressDomains === undefined) {
138
+ return;
168
139
  }
169
- let draining;
170
- const flushDeferred = () => {
171
- draining ??= drainDeferred().finally(() => {
172
- draining = undefined;
173
- });
174
- return draining;
175
- };
176
- const drainDeferred = async () => {
177
- if (memoryExporter === undefined) {
178
- return;
140
+ for (const exporter of config.exporters) {
141
+ if (!URL.canParse(exporter.url)) {
142
+ continue;
179
143
  }
180
- const exportConfig = resolveExport?.() ?? config;
181
- const destinations = exportersForSignal(exportConfig.exporters, "traces");
182
- if (destinations.length === 0) {
183
- return;
184
- }
185
- // Spans already carry the bake-time Resource. Hosted v2 binds
186
- // deployment secrets after bake, so env / service extras on
187
- // exportConfig must replace that Resource on the wire.
188
- const resource = buildResource(exportConfig);
189
- for (;;) {
190
- const spans = memoryExporter.getFinishedSpans();
191
- if (spans.length === 0) {
192
- return;
193
- }
194
- const ok = await exportQueuedSpans(spans, destinations, logger, resource);
195
- if (!ok) {
196
- return;
197
- }
198
- memoryExporter.dropExported(spans);
144
+ const host = new URL(exporter.url).hostname;
145
+ if (!egressAllowsHost(egressDomains, host)) {
146
+ log(`[bdk:otel] error: exporter host ${host} is not in hosting.egressDomains; add the host and redeploy`);
199
147
  }
200
- };
148
+ }
149
+ }
150
+ function bindInstruments(runtime, config, providers) {
151
+ runtime.tracer =
152
+ config.traces === false
153
+ ? noopTracer()
154
+ : (providers?.traces?.getTracer(INSTRUMENTATION) ?? trace.getTracer(INSTRUMENTATION));
155
+ const meter = config.metrics === false
156
+ ? undefined
157
+ : (providers?.metrics?.getMeter(INSTRUMENTATION) ?? metrics.getMeter(INSTRUMENTATION));
158
+ runtime.meter = meter;
159
+ runtime.logger =
160
+ config.logs === false
161
+ ? undefined
162
+ : (providers?.logs?.getLogger(INSTRUMENTATION) ?? logs.getLogger(INSTRUMENTATION));
163
+ runtime.httpDuration =
164
+ meter === undefined
165
+ ? undefined
166
+ : meter.createHistogram("agent_sdk.http.duration", {
167
+ description: "HTTP request duration",
168
+ unit: "ms",
169
+ });
170
+ }
171
+ function buildProviders(config, read, log) {
172
+ const resource = buildResource(config);
173
+ const exportersFor = (signal, on, create) => on
174
+ ? exportersForSignal(config.exporters, signal).map((exporter) => create(isProtobuf(exporter), {
175
+ url: signalUrl(exporter.url, signal),
176
+ headers: headersAt(read, config.exporters.indexOf(exporter)),
177
+ }))
178
+ : [];
179
+ const spanExporters = exportersFor("traces", config.traces !== false, (protobuf, options) => protobuf ? new OTLPTraceExporterProto(options) : new OTLPTraceExporterHttp(options));
180
+ const metricExporters = exportersFor("metrics", config.metrics !== false, (protobuf, options) => {
181
+ const opts = { ...options, temporalityPreference: AggregationTemporality.DELTA };
182
+ return protobuf ? new OTLPMetricExporterProto(opts) : new OTLPMetricExporterHttp(opts);
183
+ });
184
+ const logExporters = exportersFor("logs", config.logs !== false, (protobuf, options) => protobuf ? new OTLPLogExporterProto(options) : new OTLPLogExporterHttp(options));
201
185
  return {
202
- tracer: tracerProvider?.getTracer(INSTRUMENTATION) ?? trace.getTracer(INSTRUMENTATION),
203
- meter: meterProvider?.getMeter(INSTRUMENTATION),
204
- logger: loggerProvider?.getLogger(INSTRUMENTATION),
205
- forceFlush: async () => {
206
- await Promise.allSettled([
207
- raceOtelForceFlush(Promise.allSettled([
208
- tracerProvider?.forceFlush(),
209
- meterProvider?.forceFlush(),
210
- loggerProvider?.forceFlush(),
211
- ]), logger),
212
- raceOtelForceFlush(flushDeferred(), logger, OTEL_DEFERRED_EXPORT_TIMEOUT_MS),
213
- ]);
214
- },
215
- shutdown: async () => {
216
- await flushDeferred();
217
- await Promise.allSettled([
218
- tracerProvider?.shutdown(),
219
- meterProvider?.shutdown(),
220
- loggerProvider?.shutdown(),
221
- ]);
222
- },
186
+ traces: spanExporters.length === 0 ? undefined : traceProvider(config, resource, spanExporters, log),
187
+ metrics: metricExporters.length === 0
188
+ ? undefined
189
+ : meterProvider(config, resource, metricExporters, log),
190
+ logs: logExporters.length === 0 ? undefined : loggerProvider(resource, logExporters, log),
223
191
  };
224
192
  }
225
- function withExportResource(span, resource) {
226
- return new Proxy(span, {
227
- get(target, prop, receiver) {
228
- if (prop === "resource") {
229
- return resource;
230
- }
231
- return Reflect.get(target, prop, receiver);
232
- },
193
+ function traceProvider(config, resource, exporters, log) {
194
+ const sampleRatio = config.traces === false ? undefined : config.traces.sampleRatio;
195
+ const provider = new NodeTracerProvider({
196
+ resource,
197
+ spanProcessors: exporters.map((exporter) => new BatchSpanProcessor(exporter)),
198
+ sampler: new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(sampleRatio ?? 1) }),
233
199
  });
234
- }
235
- async function exportQueuedSpans(spans, destinations, logger, resource) {
236
- const payload = spans.map((span) => withExportResource(span, resource));
237
- const exporters = destinations.map((destination) => createTraceExporter(destination, signalUrl(destination.url, "traces")));
238
- try {
239
- const results = await Promise.all(exporters.map((exporter) => new Promise((resolve) => {
240
- exporter.export(payload, (result) => {
241
- resolve(result.code === ExportResultCode.SUCCESS);
242
- });
243
- })));
244
- return results.every((ok) => ok);
200
+ if (hasRealTracerProvider()) {
201
+ log("[bdk:otel] TracerProvider already registered; BDK traces export on a local provider");
245
202
  }
246
- catch (error) {
247
- logger(`[bdk:otel] deferred export failed: ${error instanceof Error ? error.message : String(error)}`);
248
- return false;
203
+ else {
204
+ provider.register();
205
+ }
206
+ return provider;
207
+ }
208
+ function meterProvider(config, resource, exporters, log) {
209
+ const exportIntervalMillis = (config.metrics === false ? undefined : config.metrics.exportIntervalMillis) ?? 10_000;
210
+ const provider = new MeterProvider({
211
+ resource,
212
+ readers: exporters.map((exporter) => new PeriodicExportingMetricReader({ exporter, exportIntervalMillis })),
213
+ });
214
+ if (!metrics.setGlobalMeterProvider(provider)) {
215
+ log("[bdk:otel] MeterProvider already registered; BDK metrics export on a local provider");
249
216
  }
250
- finally {
251
- await Promise.allSettled(exporters.map((exporter) => exporter.shutdown()));
217
+ return provider;
218
+ }
219
+ function loggerProvider(resource, exporters, log) {
220
+ const provider = new LoggerProvider({
221
+ resource,
222
+ processors: exporters.map((exporter) => new BatchLogRecordProcessor(exporter)),
223
+ });
224
+ if (logs.setGlobalLoggerProvider(provider) !== provider) {
225
+ log("[bdk:otel] LoggerProvider already registered; BDK logs export on a local provider");
252
226
  }
227
+ return provider;
228
+ }
229
+ /** Every setting the providers are built from: the config without the headers. */
230
+ function settingsKey(config) {
231
+ return stableJson({ ...config, exporters: config.exporters.map(exporterIdentity) });
232
+ }
233
+ function exporterIdentity(exporter) {
234
+ return [
235
+ exporter.url,
236
+ exporter.protocol ?? "http/protobuf",
237
+ [...(exporter.signals ?? [])].sort().join("+"),
238
+ ].join("|");
239
+ }
240
+ function headersAt(read, index) {
241
+ return async () => read().exporters[index]?.headers ?? {};
242
+ }
243
+ function noopTracer() {
244
+ return new ProxyTracerProvider().getTracer(INSTRUMENTATION);
253
245
  }
254
246
  function buildResource(config) {
255
247
  // Align with Cursor enterprise wire resource attrs where they overlap so
@@ -279,52 +271,3 @@ function hasRealTracerProvider() {
279
271
  function isProtobuf(exporter) {
280
272
  return exporter.protocol !== "http/json";
281
273
  }
282
- function createTraceExporter(exporter, url) {
283
- const opts = { url, headers: exporter.headers };
284
- return isProtobuf(exporter) ? new OTLPTraceExporterProto(opts) : new OTLPTraceExporterHttp(opts);
285
- }
286
- function createMetricExporter(exporter, url) {
287
- const opts = {
288
- url,
289
- headers: exporter.headers,
290
- temporalityPreference: AggregationTemporality.DELTA,
291
- };
292
- return isProtobuf(exporter)
293
- ? new OTLPMetricExporterProto(opts)
294
- : new OTLPMetricExporterHttp(opts);
295
- }
296
- function createLogExporter(exporter, url) {
297
- const opts = { url, headers: exporter.headers };
298
- return isProtobuf(exporter) ? new OTLPLogExporterProto(opts) : new OTLPLogExporterHttp(opts);
299
- }
300
- /** In-memory finished-span queue with a hard cap (oldest dropped). */
301
- class BoundedMemorySpanExporter {
302
- constructor(limit) {
303
- this.limit = limit;
304
- this.spans = [];
305
- }
306
- export(spans, resultCallback) {
307
- this.spans.push(...spans);
308
- if (this.spans.length > this.limit) {
309
- this.spans.splice(0, this.spans.length - this.limit);
310
- }
311
- resultCallback({ code: ExportResultCode.SUCCESS });
312
- }
313
- getFinishedSpans() {
314
- return this.spans.slice();
315
- }
316
- dropExported(exported) {
317
- const exportedSet = new Set(exported);
318
- this.spans = this.spans.filter((span) => !exportedSet.has(span));
319
- }
320
- reset() {
321
- this.spans = [];
322
- }
323
- shutdown() {
324
- this.reset();
325
- return Promise.resolve();
326
- }
327
- forceFlush() {
328
- return Promise.resolve();
329
- }
330
- }
@@ -1 +1 @@
1
- {"version":3,"file":"package-inline-stdio.d.ts","sourceRoot":"","sources":["../../src/internal/package-inline-stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AA2BrB,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmE/B"}
1
+ {"version":3,"file":"package-inline-stdio.d.ts","sourceRoot":"","sources":["../../src/internal/package-inline-stdio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAE5B,MAAM,aAAa,CAAC;AA2BrB,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoE/B"}
@@ -42,6 +42,7 @@ export async function packageInlineStdioConnection(options) {
42
42
  absWorkingDir: options.absWorkingDir,
43
43
  alias: {
44
44
  zod: require.resolve("zod"),
45
+ "zod/v3": require.resolve("zod/v3"),
45
46
  },
46
47
  plugins: [
47
48
  {
@@ -31,7 +31,7 @@ export type ProcessMemoryTelemetryOptions = {
31
31
  agentName: string;
32
32
  getEventLogStats: () => EventLogMemoryStats;
33
33
  logger?: (line: string) => void;
34
- meter?: Meter;
34
+ meter?: () => Meter | undefined;
35
35
  env?: NodeJS.ProcessEnv;
36
36
  intervalMs?: number;
37
37
  now?: () => number;
@@ -1 +1 @@
1
- {"version":3,"file":"process-memory-telemetry.d.ts","sourceRoot":"","sources":["../../src/internal/process-memory-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-memory-telemetry.d.ts","sourceRoot":"","sources":["../../src/internal/process-memory-telemetry.ts"],"names":[],"mappings":"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"}
@@ -141,7 +141,7 @@ export function startProcessMemoryTelemetry(options) {
141
141
  });
142
142
  const eventLog = options.getEventLogStats();
143
143
  logger(formatMemoryLogLine({ agentName: options.agentName, memory, eventLog }));
144
- recordOtel(options.meter, memory, eventLog, attributes);
144
+ recordOtel(options.meter?.(), memory, eventLog, attributes);
145
145
  if (datadog === undefined) {
146
146
  return;
147
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-runner.d.ts","sourceRoot":"","sources":["../../src/internal/sdk-runner.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,24 @@ function retryReason(message, isFirstTurn) {
99
99
  }
100
100
  return undefined;
101
101
  }
102
+ /**
103
+ * Whether an update is output a restarted turn would replay. The harness
104
+ * echoes the user message and opens a step before the first model call, and
105
+ * closes that step when the call throws, so a rejection at that call (a team
106
+ * admin block, capacity) still arrives before any output and the turn can
107
+ * move to the next model. Unknown types count as output.
108
+ */
109
+ function isTurnOutputUpdate(update) {
110
+ switch (update.type) {
111
+ case "user-message-appended":
112
+ case "step-started":
113
+ case "step-completed":
114
+ case "turn-ended":
115
+ return false;
116
+ default:
117
+ return true;
118
+ }
119
+ }
102
120
  /**
103
121
  * The SDK rejects a selection the credential's catalog does not list with
104
122
  * this copy, thrown from `Agent.create` / `Agent.resume` before the turn
@@ -266,8 +284,10 @@ export class CursorSdkRunner {
266
284
  const tracked = {
267
285
  ...request,
268
286
  onUpdate: (update) => {
269
- sawUpdate = true;
270
- onStreamed();
287
+ if (isTurnOutputUpdate(update)) {
288
+ sawUpdate = true;
289
+ onStreamed();
290
+ }
271
291
  return request.onUpdate(update);
272
292
  },
273
293
  onSdkAgentId: async (sdkAgentId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AA6CpF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAQhB,YAAY,EACb,MAAM,aAAa,CAAC;AA6FrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAgDpE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAUpE,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAsB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAW/E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAuCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,yEAAyE;IACzE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CA2nC3B;AAkmDD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,EACnB,MAAM,SAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAkDf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/internal/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAsC,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AA6CpF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAQhB,YAAY,EACb,MAAM,aAAa,CAAC;AA6FrB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAgDpE,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAUpE,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAsB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAW/E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAuCD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,yEAAyE;IACzE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAC5D,wEAAwE;IACxE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,GAAE,YAAY,GAAG,0BAA+B,GACtD,OAAO,CAAC,gBAAgB,CAAC,CAooC3B;AAqmDD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,cAAc,EACnB,MAAM,SAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAkDf"}