@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.
- package/dist/artifacts.d.ts +1 -1
- package/dist/artifacts.js +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
- package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
- package/dist/channels/deployments/deployments-channel.js +1 -1
- package/dist/channels/github/github-channel.js +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +1 -1
- package/dist/channels/issues/issues-channel.js +1 -1
- package/dist/channels/origin/origin-channel.js +1 -1
- package/dist/channels/runs/runs-channel.js +1 -1
- package/dist/channels/slack/tool-approval-events.js +5 -5
- package/dist/channels.d.ts +8 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +33 -6
- package/dist/docs/404.html +3 -3
- package/dist/docs/assets/{app.AXQcJZaf.js → app.DTIg0uKK.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.hlZ2vmun.js → VPLocalSearchBox.BpJoSaxi.js} +2 -2
- package/dist/docs/assets/chunks/{arc.9KNWdH-l.js → arc.ylgNvRNq.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.BfGzkBHI.js → architectureDiagram-Q4EWVU46.BMrNJqYk.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.Btk8-2Rs.js → baseUniq.BBWUEqf9.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BmHm9OH5.js → blockDiagram-DXYQGD6D.DFMu-Vza.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.9POrbDHJ.js → c4Diagram-AHTNJAMY.8nkAAxWv.js} +1 -1
- package/dist/docs/assets/chunks/channel.BOebySCN.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.YWZVSM6S.js → chunk-4BX2VUAB.sO-z2Bag.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.Cxr_SFgw.js → chunk-4TB4RGXK.BMROzTMq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.DtiJyPlD.js → chunk-55IACEB6.X81urwg7.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.b5gNHJPH.js → chunk-EDXVE4YY.eaZVFLZM.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DmN9yA_M.js → chunk-FMBD7UC4.CmZhzstR.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.Dfm3xgV5.js → chunk-OYMX7WX6.CTezt9Lc.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.sXNxDcJA.js → chunk-QZHKN3VN.s-T8zukB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DgBnDUV7.js → chunk-YZCP3GAM.DN4Nhy-D.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +1 -0
- package/dist/docs/assets/chunks/clone.D06pA7ML.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.D18MEcoN.js → cose-bilkent-S5V4N54A.Cqyp4BUH.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CSf3tihh.js → dagre-KV5264BT.BIECOiqR.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.cbfzAfoC.js → diagram-5BDNPKRD.1tLyWoTg.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.6i6P3uu9.js → diagram-G4DWMVQ6.BVY_6VMO.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.B9HAIfN6.js → diagram-MMDJMWI5.BSZ7xiBB.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.B9baAjUv.js → diagram-TYMM5635.Bho6GmLh.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DaBmX_GN.js → erDiagram-SMLLAGMA.A0yVIANn.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.CJqQJjkb.js → flowDiagram-DWJPFMVM.ZMgbllH6.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CIXBLQhC.js → ganttDiagram-T4ZO3ILL.BCCPBhXo.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.CDgentto.js → gitGraphDiagram-UUTBAWPF.BOkL0BbA.js} +1 -1
- package/dist/docs/assets/chunks/{graph.BWHn6JBQ.js → graph.DMyZPu86.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.d9VU_ts_.js → infoDiagram-42DDH7IO.CjG1IiEw.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.BNO79Prj.js → ishikawaDiagram-UXIWVN3A.UCe-kq9g.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CPgUTM1R.js → journeyDiagram-VCZTEJTY.3WyOK_eY.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.idl0Eoe1.js → kanban-definition-6JOO6SKY.WoRG2qY1.js} +1 -1
- package/dist/docs/assets/chunks/{layout.BY7DIMr6.js → layout.DV07xDd5.js} +1 -1
- package/dist/docs/assets/chunks/{linear.DYaUDrHd.js → linear.CTO8mN6o.js} +1 -1
- package/dist/docs/assets/chunks/{min.V6MWb1UC.js → min.SvTtcKuZ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BRlJXuFS.js → mindmap-definition-QFDTVHPH.DMGgQ-HB.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.BIhkDLcB.js → pieDiagram-DEJITSTG.B7851apI.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.Bw-_VEL3.js → quadrantDiagram-34T5L4WZ.CEqyypIX.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DolEGwxw.js → requirementDiagram-MS252O5E.C3Mwsw-H.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.hMM-8BhN.js → sankeyDiagram-XADWPNL6.DyYK0XxY.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bg_CRVDy.js → sequenceDiagram-FGHM5R23.SiQPH-XM.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DNWdl34_.js → stateDiagram-FHFEXIEX.CTJMsP4p.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +1 -0
- package/dist/docs/assets/chunks/{theme.CBW1oolh.js → theme.DJo4my9R.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Cr1wJ1mB.js → timeline-definition-GMOUNBTQ.CxSNRlQ6.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BltDV9j7.js → vennDiagram-DHZGUBPP.BdoJskyD.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.nsADqCCo.js → wardleyDiagram-NUSXRM2D.IjIbFn_F.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CCwbO3dK.js → xychartDiagram-5P7HB3ND.CPUxDZLH.js} +1 -1
- package/dist/docs/assets/{deployment.md.CtSJ6sF9.js → deployment.md.3MMWuPeV.js} +5 -5
- package/dist/docs/assets/{deployment.md.CtSJ6sF9.lean.js → deployment.md.3MMWuPeV.lean.js} +1 -1
- package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.js → guides_cloud-agents.md.BzbzcOyj.js} +2 -2
- package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.lean.js → guides_cloud-agents.md.BzbzcOyj.lean.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.js → guides_opentelemetry.md.Ck1o2frw.js} +11 -3
- package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.lean.js → guides_opentelemetry.md.Ck1o2frw.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.js → reference_agent-config.md.IplwL25I.js} +1 -2
- package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.lean.js → reference_agent-config.md.IplwL25I.lean.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.OUacPetl.js → reference_extensions.md.DKxTuCIw.js} +11 -8
- package/dist/docs/assets/{reference_extensions.md.OUacPetl.lean.js → reference_extensions.md.DKxTuCIw.lean.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.DrcHZXig.js → reference_instructions.md.BYMVxAkw.js} +4 -4
- package/dist/docs/assets/{reference_instructions.md.DrcHZXig.lean.js → reference_instructions.md.BYMVxAkw.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.BqWnJES4.js → reference_schedules.md.03Ryy9ca.js} +3 -3
- package/dist/docs/assets/{style.Dwls12uf.css → style.nMsabY-V.css} +1 -1
- package/dist/docs/assets/templates_agentic-owners.md.CTEnR0jp.js +13 -0
- package/dist/docs/assets/{templates_agentic-owners.md.CvmABtia.lean.js → templates_agentic-owners.md.CTEnR0jp.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/deployment.html +42 -42
- package/dist/docs/deployment.md +9 -4
- package/dist/docs/evals.html +37 -37
- package/dist/docs/guides/agent-to-agent.html +37 -37
- package/dist/docs/guides/bitbucket.html +37 -37
- package/dist/docs/guides/cloud-agents.html +38 -38
- package/dist/docs/guides/cloud-agents.md +1 -0
- package/dist/docs/guides/convert-automation.html +37 -37
- package/dist/docs/guides/export-grokbot.html +37 -37
- package/dist/docs/guides/github.html +37 -37
- package/dist/docs/guides/gitlab.html +37 -37
- package/dist/docs/guides/grokbot-agents.html +37 -37
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/improve.html +37 -37
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/mcp-oauth.html +37 -37
- package/dist/docs/guides/migrate.html +37 -37
- package/dist/docs/guides/opentelemetry.html +47 -39
- package/dist/docs/guides/opentelemetry.md +48 -2
- package/dist/docs/guides/slack.html +37 -37
- package/dist/docs/guides/webhooks.html +37 -37
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +37 -37
- package/dist/docs/index.html +37 -37
- package/dist/docs/llms-full.txt +133 -40
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +38 -39
- package/dist/docs/reference/agent-config.md +0 -1
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +37 -37
- package/dist/docs/reference/connections.html +37 -37
- package/dist/docs/reference/evals.html +37 -37
- package/dist/docs/reference/extensions.html +47 -44
- package/dist/docs/reference/extensions.md +15 -9
- package/dist/docs/reference/hooks.html +37 -37
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +40 -40
- package/dist/docs/reference/instructions.md +5 -1
- package/dist/docs/reference/memory.html +37 -37
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +40 -40
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/subagents.html +37 -37
- package/dist/docs/reference/tools.html +37 -37
- package/dist/docs/templates/agentic-owners.html +42 -43
- package/dist/docs/templates/agentic-owners.md +55 -23
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/security-reviewer.html +37 -37
- package/dist/docs/templates/thermo-quality-review.html +37 -37
- package/dist/docs/templates/thermo-review.html +37 -37
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/extension.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
- package/dist/extensions/improve/extension.js +1 -1
- package/dist/extensions/jev/extension.js +1 -1
- package/dist/extensions/jev/tools/evaluate.js +1 -1
- package/dist/extensions/slack-communication/extension.js +1 -1
- package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
- package/dist/extensions/slack-communication/tools/edit-message.js +1 -1
- package/dist/extensions/slack-communication/tools/post-card.js +1 -1
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions/slack-communication/tools/post-update.js +1 -1
- package/dist/extensions/slack-communication/tools/react.js +1 -1
- package/dist/extensions/slack-communication/tools/set-status.js +1 -1
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/internal/builtin-tools/artifacts.js +1 -1
- package/dist/internal/builtin-tools/reminders.js +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +1 -1
- package/dist/internal/convert-grokbot/answers.js +1 -1
- package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
- package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
- package/dist/internal/convert-grokbot/recipe.js +1 -1
- package/dist/internal/cursor/backend-client.d.ts +1 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/credentials.d.ts +1 -1
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +1 -1
- package/dist/internal/deploy-client.js +1 -1
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +2 -1
- package/dist/internal/discovery/cursor-plugin.js +1 -1
- package/dist/internal/factory-resource-channel.d.ts +1 -1
- package/dist/internal/factory-resource-channel.d.ts.map +1 -1
- package/dist/internal/filesystem/sdk-schemas.d.ts +1 -1
- package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
- package/dist/internal/filesystem/sdk-schemas.js +1 -1
- package/dist/internal/filesystem/tools.js +1 -1
- package/dist/internal/host-otel.d.ts +2 -1
- package/dist/internal/host-otel.d.ts.map +1 -1
- package/dist/internal/host-otel.js +20 -6
- package/dist/internal/hosted-delivery-protocol.d.ts +4 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.d.ts +7 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +19 -17
- package/dist/internal/hosting.d.ts +6 -0
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +9 -0
- package/dist/internal/init-scaffold.js +1 -1
- package/dist/internal/interview/agent-questions.d.ts +1 -1
- package/dist/internal/interview/agent-questions.d.ts.map +1 -1
- package/dist/internal/interview/agent-questions.js +1 -1
- package/dist/internal/interview/question.d.ts +1 -1
- package/dist/internal/interview/question.d.ts.map +1 -1
- package/dist/internal/interview/question.js +1 -1
- package/dist/internal/json-schema.d.ts +1 -1
- package/dist/internal/json-schema.d.ts.map +1 -1
- package/dist/internal/json-schema.js +1 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +47 -18
- package/dist/internal/otel/config.d.ts +4 -0
- package/dist/internal/otel/config.d.ts.map +1 -1
- package/dist/internal/otel/config.js +20 -9
- package/dist/internal/otel/http.d.ts +1 -1
- package/dist/internal/otel/http.d.ts.map +1 -1
- package/dist/internal/otel/http.js +1 -1
- package/dist/internal/otel/runtime.d.ts +17 -14
- package/dist/internal/otel/runtime.d.ts.map +1 -1
- package/dist/internal/otel/runtime.js +181 -238
- package/dist/internal/package-inline-stdio.d.ts.map +1 -1
- package/dist/internal/package-inline-stdio.js +1 -0
- package/dist/internal/process-memory-telemetry.d.ts +1 -1
- package/dist/internal/process-memory-telemetry.d.ts.map +1 -1
- package/dist/internal/process-memory-telemetry.js +1 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +22 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +25 -13
- package/dist/internal/session-engine.d.ts +9 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +25 -0
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/internal/store-api-protocol.d.ts +1 -1
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +1 -1
- package/dist/internal/update-check.d.ts +1 -1
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +1 -1
- package/dist/otel.d.ts +1 -2
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +0 -1
- package/dist/playground/assets/index-DKKdkF29.js +62 -0
- package/dist/playground/assets/index-DpKinTMs.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/tools.d.ts +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +9 -4
- package/docs/guides/cloud-agents.md +1 -0
- package/docs/guides/opentelemetry.md +48 -2
- package/docs/reference/agent-config.md +0 -1
- package/docs/reference/extensions.md +15 -9
- package/docs/reference/instructions.md +5 -1
- package/docs/templates/agentic-owners.md +55 -23
- package/package.json +18 -20
- package/skills/otel/SKILL.md +17 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.B3j7LFef.js +0 -1
- package/dist/docs/assets/chunks/channel.RoCpi7X1.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.oxdmwwqk.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.oxdmwwqk.js +0 -1
- package/dist/docs/assets/chunks/clone.BkguoIMm.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.7W-btjJ2.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.BWPaUhOs.js +0 -162
- package/dist/docs/assets/templates_agentic-owners.md.CvmABtia.js +0 -14
- package/dist/playground/assets/index-BtsbIqV9.css +0 -1
- package/dist/playground/assets/index-CD8VRa25.js +0 -71
- /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
|
|
23
|
+
export interface OtelRuntimeHandle {
|
|
24
|
+
runtime: OtelRuntime;
|
|
31
25
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
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
|
-
|
|
30
|
+
reload(): void;
|
|
37
31
|
}
|
|
38
|
-
export
|
|
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,
|
|
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 {
|
|
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
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
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
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
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
|
|
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: (
|
|
91
|
-
debug: (
|
|
92
|
-
info: (
|
|
93
|
-
warn: (
|
|
94
|
-
error: (
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
167
|
-
|
|
135
|
+
}
|
|
136
|
+
function warnEgress(config, egressDomains, log) {
|
|
137
|
+
if (egressDomains === undefined) {
|
|
138
|
+
return;
|
|
168
139
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
251
|
-
|
|
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,
|
|
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"}
|
|
@@ -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":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAO1D,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;
|
|
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":"AAAA;;;;;;GAMG;AAGH,OAAO,EAQL,KAAK,eAAe,EAEpB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,
|
|
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
|
-
|
|
270
|
-
|
|
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,
|
|
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"}
|