@cursor/bdk 0.2.9 → 0.2.10
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.js +3 -5
- package/dist/bin/agent-serve.js +803 -812
- package/dist/channels/bitbucket/api.js +305 -321
- package/dist/channels/bitbucket/binding.js +97 -61
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
- package/dist/channels/bitbucket/checks.js +9 -21
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/defaults.js +14 -4
- package/dist/channels/bitbucket/events.js +1 -2
- package/dist/channels/bitbucket/index.d.ts +6 -2
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +6 -2
- package/dist/channels/bitbucket/replay.js +80 -56
- package/dist/channels/bitbucket/state.js +16 -7
- package/dist/channels/bitbucket/types.d.ts +11 -2
- package/dist/channels/bitbucket/types.d.ts.map +1 -1
- package/dist/channels/checks.js +18 -28
- package/dist/channels/deployments/deployments-channel.js +26 -34
- package/dist/channels/github/api.js +216 -210
- package/dist/channels/github/auth.d.ts +5 -1
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +157 -174
- package/dist/channels/github/binding.js +48 -39
- package/dist/channels/github/checks.js +9 -14
- package/dist/channels/github/cursor-account.js +6 -11
- package/dist/channels/github/defaults.js +105 -130
- package/dist/channels/github/forward.js +13 -17
- package/dist/channels/github/github-channel.d.ts +43 -2
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +1228 -958
- package/dist/channels/github/progress.js +145 -146
- package/dist/channels/github/replay.js +30 -39
- package/dist/channels/github/state.js +40 -16
- package/dist/channels/github/types.d.ts +30 -6
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +100 -114
- package/dist/channels/gitlab/binding.js +52 -33
- package/dist/channels/gitlab/checks.js +28 -29
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/defaults.js +9 -3
- package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +95 -42
- package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +282 -249
- package/dist/channels/gitlab/index.d.ts +6 -2
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +6 -2
- package/dist/channels/gitlab/replay.js +50 -27
- package/dist/channels/gitlab/state.js +14 -6
- package/dist/channels/gitlab/types.d.ts +13 -2
- package/dist/channels/gitlab/types.d.ts.map +1 -1
- package/dist/channels/origin/api.js +100 -116
- package/dist/channels/origin/binding.js +15 -16
- package/dist/channels/origin/checks.js +30 -28
- package/dist/channels/origin/defaults.js +50 -65
- package/dist/channels/origin/origin-channel.js +266 -272
- package/dist/channels/origin/origin-webhook.js +70 -88
- package/dist/channels/origin/reactions.js +9 -21
- package/dist/channels/origin/state.js +13 -5
- package/dist/channels/slack/agentic-delivery.js +426 -478
- package/dist/channels/slack/agentic-posted.js +9 -10
- package/dist/channels/slack/agentic-signals.js +2 -3
- package/dist/channels/slack/api.js +417 -427
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/assistant.js +37 -47
- package/dist/channels/slack/attachments.js +188 -206
- package/dist/channels/slack/auth.js +8 -6
- package/dist/channels/slack/bot-mentions.js +31 -45
- package/dist/channels/slack/channel-watch.js +42 -48
- package/dist/channels/slack/cli-project.js +112 -137
- package/dist/channels/slack/code-fences.js +3 -5
- package/dist/channels/slack/constants.js +2 -2
- package/dist/channels/slack/credentials.js +23 -38
- package/dist/channels/slack/defaults.js +292 -331
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +533 -460
- package/dist/channels/slack/doctor.js +200 -214
- package/dist/channels/slack/eval-directive.js +79 -96
- package/dist/channels/slack/event-id-dedupe.js +1 -1
- package/dist/channels/slack/external-policy.js +26 -39
- package/dist/channels/slack/footer.js +28 -41
- package/dist/channels/slack/inbound.d.ts +1 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +50 -31
- package/dist/channels/slack/init.d.ts +1 -5
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +42 -59
- package/dist/channels/slack/interactive.d.ts +9 -3
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +160 -162
- package/dist/channels/slack/links.js +1 -2
- package/dist/channels/slack/live-delivery.js +172 -190
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +44 -23
- package/dist/channels/slack/message-body.js +2 -2
- package/dist/channels/slack/nudge-carrier.js +30 -42
- package/dist/channels/slack/nudge-store.js +164 -191
- package/dist/channels/slack/paint-start.js +66 -81
- package/dist/channels/slack/placeholder.js +123 -152
- package/dist/channels/slack/pr-ref.js +1 -1
- package/dist/channels/slack/progress-delivery.js +65 -78
- package/dist/channels/slack/reasoning-card.js +36 -49
- package/dist/channels/slack/recording-sink.js +12 -24
- package/dist/channels/slack/reply-options.js +7 -12
- package/dist/channels/slack/self-identity.js +27 -35
- package/dist/channels/slack/sender-name.d.ts +12 -3
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +57 -61
- package/dist/channels/slack/setup.js +2 -4
- package/dist/channels/slack/slack-channel.d.ts +6 -4
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +441 -308
- package/dist/channels/slack/socket-mode.js +38 -52
- package/dist/channels/slack/thread-context.js +143 -160
- package/dist/channels/slack/tool-approval-events.js +149 -166
- package/dist/channels/slack/tool-cards.js +6 -11
- package/dist/channels/slack/tool-chip.js +1 -2
- package/dist/channels/slack/types.d.ts +15 -17
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/upload.js +84 -97
- package/dist/channels/slack/user-info.js +27 -41
- package/dist/channels.js +9 -20
- package/dist/dashboard-session-url.js +3 -4
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
- package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
- package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
- package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
- package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +2 -0
- package/dist/docs/deployment.html +38 -38
- package/dist/docs/deployment.md +7 -0
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +38 -38
- package/dist/docs/guides/bitbucket.md +9 -1
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +39 -39
- package/dist/docs/guides/github.md +20 -4
- package/dist/docs/guides/gitlab.html +38 -38
- package/dist/docs/guides/gitlab.md +9 -1
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/migrate.html +66 -0
- package/dist/docs/guides/migrate.md +122 -0
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +214 -6
- package/dist/docs/llms.txt +1 -0
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -38
- package/dist/docs/reference/cli.md +39 -0
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +35 -35
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/docs/troubleshooting.md +1 -0
- package/dist/evals/assertions.js +20 -34
- package/dist/evals/expect.js +3 -6
- package/dist/evals/judge.js +5 -8
- package/dist/evals/loaders.js +45 -62
- package/dist/evals/matchers.js +2 -3
- package/dist/evals/reporters.js +43 -67
- package/dist/evals/results.js +1 -1
- package/dist/evals/run-facts.js +5 -6
- package/dist/evals.js +27 -15
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
- package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
- package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
- package/dist/extensions/jev/extension.js +3 -3
- package/dist/extensions/jev/lib/evaluate.js +43 -60
- package/dist/extensions/jev/tools/evaluate.js +6 -17
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions.js +3 -5
- package/dist/files-backends/cursor-hosted.js +504 -523
- package/dist/files-backends/local-fs.js +72 -134
- package/dist/files.js +3 -3
- package/dist/filesystem.js +562 -861
- package/dist/index.js +16 -35
- package/dist/internal/advertise-tools.js +74 -86
- package/dist/internal/artifacts-store.js +298 -361
- package/dist/internal/as-of.js +2 -4
- package/dist/internal/authored-alias-hooks.js +6 -4
- package/dist/internal/authored-loaders.js +37 -52
- package/dist/internal/bounded-int.js +1 -2
- package/dist/internal/bounded.js +13 -24
- package/dist/internal/brand.js +1 -1
- package/dist/internal/browser-origin-guard.js +4 -4
- package/dist/internal/builtin-tools/artifacts.js +15 -27
- package/dist/internal/builtin-tools/index.js +2 -3
- package/dist/internal/builtin-tools/reminders.js +33 -52
- package/dist/internal/channel-architecture.d.ts +21 -0
- package/dist/internal/channel-architecture.d.ts.map +1 -0
- package/dist/internal/channel-architecture.js +41 -0
- package/dist/internal/channel-dispatch.js +3 -4
- package/dist/internal/channel-route-dispatch.js +40 -51
- package/dist/internal/channel-state.js +1 -1
- package/dist/internal/chat-client.js +319 -340
- package/dist/internal/cli-ax.js +1262 -1294
- package/dist/internal/cli-bitbucket.js +244 -272
- package/dist/internal/cli-convert-automation.js +137 -151
- package/dist/internal/cli-cursor.js +126 -147
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +1457 -1507
- package/dist/internal/cli-docs.js +130 -147
- package/dist/internal/cli-github.js +437 -476
- package/dist/internal/cli-gitlab.js +259 -288
- package/dist/internal/cli-images.js +266 -334
- package/dist/internal/cli-manifest.js +25 -37
- package/dist/internal/cli-mcp-oauth.js +228 -247
- package/dist/internal/cli-mcp.js +358 -383
- package/dist/internal/cli-migrate.js +73 -90
- package/dist/internal/cli-skills.js +35 -47
- package/dist/internal/cli-slack-manual.d.ts +0 -1
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +175 -204
- package/dist/internal/cli-slack.d.ts +1 -1
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +416 -456
- package/dist/internal/cloud-merge.js +7 -3
- package/dist/internal/cloud-turn-cost.js +8 -1
- package/dist/internal/connection-env.js +5 -6
- package/dist/internal/continuation-channel.js +10 -7
- package/dist/internal/continuation-identity.js +85 -67
- package/dist/internal/conversation-mirror.js +112 -131
- package/dist/internal/convert-automation/convert-workflow.js +21 -31
- package/dist/internal/cron.js +3 -3
- package/dist/internal/cursor/account-mcp.js +147 -146
- package/dist/internal/cursor/backend-client.js +290 -320
- package/dist/internal/cursor/bound-secret-file.js +3 -3
- package/dist/internal/cursor/credentials.js +127 -142
- package/dist/internal/cursor/cursor-api-transport.js +4 -8
- package/dist/internal/cursor/github-credentials.js +91 -108
- package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +5 -9
- package/dist/internal/cursor/session-token.js +36 -48
- package/dist/internal/cursor/store-api-client.js +77 -92
- package/dist/internal/cursor-account-mcp-auth.js +132 -149
- package/dist/internal/cursor-agent-template.js +1 -1
- package/dist/internal/cursor-deployment-relay.js +33 -54
- package/dist/internal/cursor-event-relay.js +65 -59
- package/dist/internal/cursor-relay-core.js +258 -286
- package/dist/internal/deferred-channel-session.js +3 -12
- package/dist/internal/deploy-client.js +410 -475
- package/dist/internal/deploy-manifest.d.ts +17 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +71 -21
- package/dist/internal/deploy-source.js +31 -43
- package/dist/internal/discovery/agent-config.js +45 -59
- package/dist/internal/discovery/agent.js +276 -280
- package/dist/internal/discovery/channels.js +67 -80
- package/dist/internal/discovery/connections.js +286 -296
- package/dist/internal/discovery/context.js +2 -13
- package/dist/internal/discovery/cursor-plugin.js +223 -259
- package/dist/internal/discovery/extension-overlay.js +104 -131
- package/dist/internal/discovery/extensions.js +276 -281
- package/dist/internal/discovery/fs.js +56 -79
- package/dist/internal/discovery/hooks.js +39 -50
- package/dist/internal/discovery/info.js +17 -19
- package/dist/internal/discovery/instructions.js +58 -71
- package/dist/internal/discovery/modules.js +45 -58
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +192 -215
- package/dist/internal/discovery/reminders.js +41 -52
- package/dist/internal/discovery/runtime.js +1 -1
- package/dist/internal/discovery/schedules.js +71 -82
- package/dist/internal/discovery/seed-files.js +21 -32
- package/dist/internal/discovery/services.js +74 -96
- package/dist/internal/discovery/skills.js +77 -94
- package/dist/internal/discovery/subagent.js +79 -95
- package/dist/internal/discovery/tools.js +12 -23
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +30 -45
- package/dist/internal/duration.js +1 -1
- package/dist/internal/env-file.js +48 -64
- package/dist/internal/eval-judge-model.js +17 -28
- package/dist/internal/eval-run-store.js +265 -254
- package/dist/internal/eval-runner.d.ts +8 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +406 -408
- package/dist/internal/eval-transport.d.ts +24 -0
- package/dist/internal/eval-transport.d.ts.map +1 -0
- package/dist/internal/eval-transport.js +22 -0
- package/dist/internal/evals-client.js +242 -246
- package/dist/internal/event-log.js +72 -120
- package/dist/internal/event-mapper.js +30 -31
- package/dist/internal/factory-resource-channel.js +16 -30
- package/dist/internal/filesystem/errors.js +6 -6
- package/dist/internal/filesystem/format.js +10 -13
- package/dist/internal/filesystem/merge.js +52 -94
- package/dist/internal/filesystem/nearest.js +15 -27
- package/dist/internal/filesystem/scratch.js +65 -85
- package/dist/internal/filesystem/tools.js +221 -241
- package/dist/internal/filesystem/walk.js +76 -143
- package/dist/internal/framework-file-storage.js +118 -139
- package/dist/internal/framework-storage-selection.js +21 -13
- package/dist/internal/frontmatter.js +4 -6
- package/dist/internal/github-fanout.js +50 -64
- package/dist/internal/guest-network.js +96 -109
- package/dist/internal/handleAgentServeTrigger.js +121 -126
- package/dist/internal/host-files.js +73 -88
- package/dist/internal/host-kv.js +21 -36
- package/dist/internal/host-otel.js +22 -19
- package/dist/internal/host-platforms.js +49 -63
- package/dist/internal/hosted-catch-protocol.d.ts +1 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +1 -0
- package/dist/internal/hosted-catch.d.ts +5 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +84 -93
- package/dist/internal/hosted-delivery-protocol.js +32 -8
- package/dist/internal/hosted-delivery.d.ts +13 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +614 -584
- package/dist/internal/hosted-eval-cases.d.ts +21 -0
- package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
- package/dist/internal/hosted-eval-cases.js +162 -0
- package/dist/internal/hosted-execution-diag.js +38 -30
- package/dist/internal/hosted-execution-flush.js +75 -66
- package/dist/internal/hosted-execution-latency.js +16 -8
- package/dist/internal/hosted-managed-automation.js +2 -2
- package/dist/internal/hosting.js +2 -3
- package/dist/internal/http-channel-define.js +4 -1
- package/dist/internal/http-channel.js +101 -112
- package/dist/internal/http-control-plane-session.d.ts +18 -1
- package/dist/internal/http-control-plane-session.d.ts.map +1 -1
- package/dist/internal/http-control-plane-session.js +66 -32
- package/dist/internal/incoming-headers-to-fetch.js +1 -2
- package/dist/internal/init-interview.js +73 -93
- package/dist/internal/init-project.js +182 -214
- package/dist/internal/init-scaffold.js +10 -21
- package/dist/internal/inline-stdio-mcp.js +80 -86
- package/dist/internal/install-cursor-skills.js +231 -273
- package/dist/internal/legacy-command-guard.js +18 -31
- package/dist/internal/listen-port.js +34 -45
- package/dist/internal/local-control-plane.js +293 -307
- package/dist/internal/local-env.js +1 -1
- package/dist/internal/local-ingress.js +15 -9
- package/dist/internal/log-ring.js +1 -2
- package/dist/internal/logs-client.js +207 -227
- package/dist/internal/map-pool.js +24 -38
- package/dist/internal/mcp-endpoint.js +204 -180
- package/dist/internal/mcp-host.js +165 -168
- package/dist/internal/mcp-oauth-on-demand.js +170 -207
- package/dist/internal/mcp-oauth-persist.js +15 -29
- package/dist/internal/mcp-oauth.js +209 -266
- package/dist/internal/named-webhook-secret.d.ts +39 -0
- package/dist/internal/named-webhook-secret.d.ts.map +1 -0
- package/dist/internal/named-webhook-secret.js +47 -0
- package/dist/internal/open-browser.js +2 -3
- package/dist/internal/otel/collector.js +104 -68
- package/dist/internal/otel/config.js +24 -37
- package/dist/internal/otel/http.js +5 -7
- package/dist/internal/otel/mcp.js +3 -12
- package/dist/internal/otel/runtime.js +69 -83
- package/dist/internal/package-inline-stdio.js +57 -65
- package/dist/internal/peer-connections.js +9 -5
- package/dist/internal/platform-schedule-sync.js +39 -54
- package/dist/internal/platform-timers.js +176 -210
- package/dist/internal/playground/static.js +1 -2
- package/dist/internal/playground/toolchain.js +37 -53
- package/dist/internal/playground-proxy.js +230 -270
- package/dist/internal/process-memory-telemetry.js +33 -51
- package/dist/internal/prompt-context.js +3 -6
- package/dist/internal/reminder-control-plane-protocol.js +46 -13
- package/dist/internal/reminder-runner.js +770 -785
- package/dist/internal/reminder-schedule.js +1 -1
- package/dist/internal/reminder-store.js +57 -78
- package/dist/internal/request-error-status.js +1 -3
- package/dist/internal/request-headers.js +2 -2
- package/dist/internal/resolve-prod-target.js +119 -135
- package/dist/internal/resolved-connections.js +16 -6
- package/dist/internal/run-client.js +221 -229
- package/dist/internal/runtime-dispatch-runner.js +18 -43
- package/dist/internal/schedule-runner.js +49 -58
- package/dist/internal/scm/pr-url.js +7 -6
- package/dist/internal/sdk-runner.js +388 -363
- package/dist/internal/serve-restart.js +26 -39
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1283 -1244
- package/dist/internal/session-cost.js +7 -9
- package/dist/internal/session-engine.d.ts +3 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +2801 -2777
- package/dist/internal/session-links.js +12 -16
- package/dist/internal/session-run-log.js +134 -82
- package/dist/internal/session-store.js +133 -164
- package/dist/internal/sessions-client.js +97 -118
- package/dist/internal/skill-catalog.js +18 -23
- package/dist/internal/skills-sync.js +16 -30
- package/dist/internal/slack-provision-client.js +90 -116
- package/dist/internal/start-log-store.js +48 -67
- package/dist/internal/steering.js +1 -2
- package/dist/internal/storage-coordinator.js +160 -196
- package/dist/internal/store-mirror.js +16 -30
- package/dist/internal/stream-progress.js +6 -8
- package/dist/internal/terminal-style.js +3 -4
- package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
- package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
- package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
- package/dist/internal/tool-catalog.js +11 -5
- package/dist/internal/tool-result.js +1 -1
- package/dist/internal/trajectory.js +19 -22
- package/dist/internal/turn-cost.js +52 -62
- package/dist/internal/turn-governor.js +5 -8
- package/dist/internal/turn-lease-store.js +85 -105
- package/dist/internal/turn-outbox.js +28 -43
- package/dist/internal/update-check.js +231 -259
- package/dist/internal/v2-hosting.js +1 -2
- package/dist/internal/workspace-sync.js +25 -41
- package/dist/internal/workspace.js +111 -139
- package/dist/kv/memory-kv.js +27 -51
- package/dist/memory.js +106 -148
- package/dist/otel.js +5 -8
- package/dist/playground/assets/index-DXm_VXAQ.css +1 -0
- package/dist/playground/assets/{index-Co4CUVTQ.js → index-JekUQERK.js} +45 -45
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +2 -4
- package/dist/storage-backends/cursor-hosted-v2.js +53 -83
- package/dist/storage-backends/cursor-hosted.js +105 -145
- package/dist/storage-backends/file-kv.js +100 -128
- package/dist/storage-protocol.js +3 -5
- package/dist/storage.js +17 -26
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -18
- package/docs/building-with-agents.md +2 -0
- package/docs/deployment.md +7 -0
- package/docs/guides/bitbucket.md +9 -1
- package/docs/guides/github.md +20 -4
- package/docs/guides/gitlab.md +9 -1
- package/docs/guides/migrate.md +127 -0
- package/docs/reference/cli.md +39 -0
- package/docs/troubleshooting.md +1 -0
- package/package.json +1 -1
- package/skills/debug/SKILL.md +1 -0
- package/skills/github/SKILL.md +23 -0
- package/skills/migrate-v2/SKILL.md +51 -10
- package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
- package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
- package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { isSecretRef } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The omitted-`webhookSecret` fallback: a {@link SecretRef} naming `envName`,
|
|
4
|
+
* present only while that env var is non-empty at channel construction.
|
|
5
|
+
* Named rather than read so the fallback keeps the same route policy (and
|
|
6
|
+
* the same control-plane catch declaration) as an authored
|
|
7
|
+
* `{ secretName: envName }`.
|
|
8
|
+
*/
|
|
9
|
+
export function envSecretRef(envName) {
|
|
10
|
+
const value = process.env[envName]?.trim();
|
|
11
|
+
return value === undefined || value === "" ? undefined : { secretName: envName };
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The secret's value for the handler's own check. A named secret resolves
|
|
15
|
+
* from the environment: locally the shell's, hosted the bound deployment
|
|
16
|
+
* secrets. Empty and whitespace-only values count as unset.
|
|
17
|
+
*/
|
|
18
|
+
export function resolveWebhookSecretValue(value) {
|
|
19
|
+
if (value === undefined) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const resolved = typeof value === "function"
|
|
23
|
+
? value()
|
|
24
|
+
: isSecretRef(value)
|
|
25
|
+
? process.env[value.secretName]
|
|
26
|
+
: value;
|
|
27
|
+
const trimmed = resolved?.trim();
|
|
28
|
+
return trimmed === undefined || trimmed === "" ? undefined : trimmed;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Why an SCM channel cannot deploy onto architecture v2 as authored, or
|
|
32
|
+
* `undefined` when it can. v2 terminates the provider's webhook check on
|
|
33
|
+
* the control plane, which can only do that for a secret it can name: a
|
|
34
|
+
* literal or getter value never reaches the manifest, so the check would
|
|
35
|
+
* run inside the guest only — after compute was spent and after the SCM
|
|
36
|
+
* already got its 202. Omitting the field (the env fallback) is allowed.
|
|
37
|
+
*/
|
|
38
|
+
export function namedWebhookSecretArchitectureError(args) {
|
|
39
|
+
if (args.webhookSecret === undefined || isSecretRef(args.webhookSecret)) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const authored = typeof args.webhookSecret === "function" ? "a function" : "a literal value";
|
|
43
|
+
return (`${args.option} is ${authored}; architecture "v2" requires a named secret: ` +
|
|
44
|
+
`{ secretName: "${args.envName}" }. The control plane verifies ${args.verifies} with ` +
|
|
45
|
+
`the deployment secret of that name before any compute starts; a literal or function value is ` +
|
|
46
|
+
`only checkable inside the guest. Set the value with \`secrets set <slug> ${args.envName}\`.`);
|
|
47
|
+
}
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { join } from "node:path";
|
|
6
6
|
export function openBrowser(url) {
|
|
7
|
-
var _a;
|
|
8
7
|
const command = process.platform === "darwin"
|
|
9
8
|
? { cmd: "open", args: [url] }
|
|
10
9
|
: process.platform === "win32"
|
|
11
10
|
? {
|
|
12
|
-
cmd: join(
|
|
11
|
+
cmd: join(process.env.SYSTEMROOT ?? "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe"),
|
|
13
12
|
args: [
|
|
14
13
|
"-NoProfile",
|
|
15
14
|
"-NonInteractive",
|
|
@@ -28,7 +27,7 @@ export function openBrowser(url) {
|
|
|
28
27
|
child.on("error", () => { });
|
|
29
28
|
child.unref();
|
|
30
29
|
}
|
|
31
|
-
catch
|
|
30
|
+
catch {
|
|
32
31
|
// Printed URL is the fallback.
|
|
33
32
|
}
|
|
34
33
|
}
|
|
@@ -10,7 +10,7 @@ import { context, ROOT_CONTEXT, SpanKind, SpanStatusCode, trace, } from "@opente
|
|
|
10
10
|
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
11
11
|
import { classifyExpectedDeliveryFailure } from "../expected-delivery-failure.js";
|
|
12
12
|
import { attrs } from "./attrs.js";
|
|
13
|
-
const CONTENT_MAX =
|
|
13
|
+
const CONTENT_MAX = 2_048;
|
|
14
14
|
export function createOtelCollector(runtime, agentName, log) {
|
|
15
15
|
const sessions = new Map();
|
|
16
16
|
const extraBySession = new Map();
|
|
@@ -37,15 +37,14 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
37
37
|
extraBySession.clear();
|
|
38
38
|
},
|
|
39
39
|
setSessionAttributes(sessionId, attributes) {
|
|
40
|
-
|
|
41
|
-
const bag = (_a = extraBySession.get(sessionId)) !== null && _a !== void 0 ? _a : {};
|
|
40
|
+
const bag = extraBySession.get(sessionId) ?? {};
|
|
42
41
|
Object.assign(bag, attributes);
|
|
43
42
|
extraBySession.set(sessionId, bag);
|
|
44
43
|
paintOpenSpans(sessionId, attributes);
|
|
45
44
|
},
|
|
46
45
|
getSessionAttributes(sessionId) {
|
|
47
46
|
const bag = extraBySession.get(sessionId);
|
|
48
|
-
return bag === undefined ? undefined :
|
|
47
|
+
return bag === undefined ? undefined : { ...bag };
|
|
49
48
|
},
|
|
50
49
|
runInTurn(args, fn) {
|
|
51
50
|
const span = ensureTurnSpan(args);
|
|
@@ -57,8 +56,6 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
57
56
|
},
|
|
58
57
|
};
|
|
59
58
|
function handle(event, session) {
|
|
60
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
61
|
-
var _q, _r, _s, _t;
|
|
62
59
|
const at = Date.parse(event.at);
|
|
63
60
|
const startTime = Number.isFinite(at) ? at : undefined;
|
|
64
61
|
switch (event.type) {
|
|
@@ -67,7 +64,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
67
64
|
return;
|
|
68
65
|
}
|
|
69
66
|
sessionState(event.sessionId);
|
|
70
|
-
metrics
|
|
67
|
+
metrics?.sessions.add(1, join(event.sessionId, {
|
|
71
68
|
"agent_sdk.agent": agentName,
|
|
72
69
|
"agent_sdk.channel": event.data.channelId,
|
|
73
70
|
}));
|
|
@@ -76,19 +73,22 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
76
73
|
case "agent.bound": {
|
|
77
74
|
const painted = attrs({
|
|
78
75
|
"agent_sdk.sdk_agent_id": event.data.sdkAgentId,
|
|
79
|
-
"agent_sdk.sdk_agent_url":
|
|
76
|
+
"agent_sdk.sdk_agent_url": logOpts?.toolContent === true ? event.data.url : undefined,
|
|
80
77
|
});
|
|
81
78
|
if (Object.keys(painted).length === 0) {
|
|
82
79
|
return;
|
|
83
80
|
}
|
|
84
|
-
const bag =
|
|
81
|
+
const bag = extraBySession.get(event.sessionId) ?? {};
|
|
85
82
|
Object.assign(bag, painted);
|
|
86
83
|
extraBySession.set(event.sessionId, bag);
|
|
87
84
|
paintOpenSpans(event.sessionId, painted);
|
|
88
85
|
return;
|
|
89
86
|
}
|
|
90
87
|
case "message.received": {
|
|
91
|
-
emitLog("message.received", SeverityNumber.INFO, attrs(
|
|
88
|
+
emitLog("message.received", SeverityNumber.INFO, attrs({
|
|
89
|
+
...baseLog(event, session),
|
|
90
|
+
"agent_sdk.user_prompt": logOpts?.userPrompts === true ? truncate(event.data.text) : undefined,
|
|
91
|
+
}));
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
case "turn.started": {
|
|
@@ -117,21 +117,21 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
117
117
|
}
|
|
118
118
|
case "step.started":
|
|
119
119
|
case "step.completed": {
|
|
120
|
-
|
|
120
|
+
ensureTurn(event, session, startTime)?.span.addEvent(event.type, attrs({
|
|
121
121
|
"agent_sdk.step_id": event.data.stepId,
|
|
122
122
|
"agent_sdk.duration_ms": event.type === "step.completed" ? event.data.durationMs : undefined,
|
|
123
123
|
}), startTime);
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
126
|
case "reasoning.completed": {
|
|
127
|
-
|
|
127
|
+
ensureTurn(event, session, startTime)?.span.addEvent("reasoning.completed", attrs({
|
|
128
128
|
"agent_sdk.duration_ms": event.data.durationMs,
|
|
129
129
|
"agent_sdk.parent_call_id": event.data.parentCallId,
|
|
130
130
|
}), startTime);
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
133
|
case "message.completed": {
|
|
134
|
-
|
|
134
|
+
ensureTurn(event, session, startTime)?.span.addEvent("message.completed", attrs({
|
|
135
135
|
"agent_sdk.finish_reason": event.data.finishReason,
|
|
136
136
|
"agent_sdk.parent_call_id": event.data.parentCallId,
|
|
137
137
|
}), startTime);
|
|
@@ -148,31 +148,48 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
148
148
|
sessionId: event.sessionId,
|
|
149
149
|
turnId: event.turnId,
|
|
150
150
|
call,
|
|
151
|
-
parentCallId:
|
|
151
|
+
parentCallId: event.data.parentCallId ?? call.parentCallId,
|
|
152
152
|
startTime,
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
case "action.approval_requested": {
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
ensureTurn(event, session, startTime)
|
|
159
|
+
?.tools.get(event.data.callId)
|
|
160
|
+
?.addEvent("approval_requested", undefined, startTime);
|
|
161
|
+
emitLog("action.approval_requested", SeverityNumber.INFO, attrs({
|
|
162
|
+
...baseLog(event, session),
|
|
163
|
+
"cursor.tool.name": event.data.toolName,
|
|
164
|
+
"agent_sdk.call_id": event.data.callId,
|
|
165
|
+
}));
|
|
160
166
|
return;
|
|
161
167
|
}
|
|
162
168
|
case "action.approval_resolved": {
|
|
163
|
-
|
|
169
|
+
ensureTurn(event, session, startTime)
|
|
170
|
+
?.tools.get(event.data.callId)
|
|
171
|
+
?.addEvent("approval_resolved", attrs({
|
|
164
172
|
"agent_sdk.decision": event.data.decision,
|
|
165
173
|
"agent_sdk.decision_by": event.data.by,
|
|
166
174
|
}), startTime);
|
|
167
175
|
return;
|
|
168
176
|
}
|
|
169
177
|
case "action.auth_requested": {
|
|
170
|
-
|
|
171
|
-
|
|
178
|
+
ensureTurn(event, session, startTime)
|
|
179
|
+
?.tools.get(event.data.callId)
|
|
180
|
+
?.addEvent("auth_requested", undefined, startTime);
|
|
181
|
+
emitLog("action.auth_requested", SeverityNumber.INFO, attrs({
|
|
182
|
+
...baseLog(event, session),
|
|
183
|
+
"cursor.tool.name": event.data.toolName,
|
|
184
|
+
"agent_sdk.call_id": event.data.callId,
|
|
185
|
+
"agent_sdk.mcp_connection": event.data.connection,
|
|
186
|
+
}));
|
|
172
187
|
return;
|
|
173
188
|
}
|
|
174
189
|
case "action.auth_resolved": {
|
|
175
|
-
|
|
190
|
+
ensureTurn(event, session, startTime)
|
|
191
|
+
?.tools.get(event.data.callId)
|
|
192
|
+
?.addEvent("auth_resolved", attrs({
|
|
176
193
|
"agent_sdk.decision": event.data.decision,
|
|
177
194
|
"agent_sdk.decision_by": event.data.by,
|
|
178
195
|
"agent_sdk.mcp_connection": event.data.connection,
|
|
@@ -181,11 +198,11 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
181
198
|
}
|
|
182
199
|
case "action.result": {
|
|
183
200
|
const turn = ensureTurn(event, session, startTime);
|
|
184
|
-
const span = turn
|
|
201
|
+
const span = turn?.tools.get(event.data.callId);
|
|
185
202
|
const status = event.data.isError ? "failure" : "success";
|
|
186
203
|
if (span !== undefined) {
|
|
187
204
|
span.setAttribute("cursor.tool.status", status);
|
|
188
|
-
if (
|
|
205
|
+
if (logOpts?.toolContent === true && event.data.output !== undefined) {
|
|
189
206
|
span.setAttribute("agent_sdk.tool_output", truncate(json(event.data.output)));
|
|
190
207
|
}
|
|
191
208
|
if (event.data.isError) {
|
|
@@ -195,15 +212,20 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
195
212
|
});
|
|
196
213
|
}
|
|
197
214
|
span.end(startTime);
|
|
198
|
-
turn
|
|
215
|
+
turn?.tools.delete(event.data.callId);
|
|
199
216
|
}
|
|
200
|
-
metrics
|
|
217
|
+
metrics?.toolCalls.add(1, join(event.sessionId, {
|
|
201
218
|
"cursor.tool.name": event.data.toolName,
|
|
202
219
|
"cursor.tool.kind": "builtin",
|
|
203
220
|
"cursor.tool.status": status,
|
|
204
221
|
"agent_sdk.agent": agentName,
|
|
205
222
|
}));
|
|
206
|
-
emitLog("action.result", event.data.isError ? SeverityNumber.ERROR : SeverityNumber.INFO, attrs(
|
|
223
|
+
emitLog("action.result", event.data.isError ? SeverityNumber.ERROR : SeverityNumber.INFO, attrs({
|
|
224
|
+
...baseLog(event, session),
|
|
225
|
+
"cursor.tool.name": event.data.toolName,
|
|
226
|
+
"cursor.tool.status": status,
|
|
227
|
+
"agent_sdk.call_id": event.data.callId,
|
|
228
|
+
}));
|
|
207
229
|
// Direct callTool never emits turn.completed — close when idle.
|
|
208
230
|
if (turn !== undefined &&
|
|
209
231
|
turn.synthetic &&
|
|
@@ -212,7 +234,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
212
234
|
event.turnId !== undefined) {
|
|
213
235
|
turn.span.setStatus({ code: SpanStatusCode.OK });
|
|
214
236
|
turn.span.end(startTime);
|
|
215
|
-
|
|
237
|
+
sessions.get(event.sessionId)?.turns.delete(event.turnId);
|
|
216
238
|
}
|
|
217
239
|
return;
|
|
218
240
|
}
|
|
@@ -230,24 +252,24 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
230
252
|
"agent_sdk.turn_id": event.turnId,
|
|
231
253
|
"agent_sdk.call_id": event.data.callId,
|
|
232
254
|
"agent_sdk.subagent_name": event.data.name,
|
|
233
|
-
"agent_sdk.subagent_description":
|
|
255
|
+
"agent_sdk.subagent_description": logOpts?.toolContent === true && event.data.description !== undefined
|
|
234
256
|
? truncate(event.data.description)
|
|
235
257
|
: undefined,
|
|
236
258
|
}),
|
|
237
259
|
}, trace.setSpan(context.active(), turn.span));
|
|
238
260
|
turn.subagents.set(event.data.callId, span);
|
|
239
|
-
metrics
|
|
261
|
+
metrics?.subagents.add(1, join(event.sessionId, {
|
|
240
262
|
"agent_sdk.agent": agentName,
|
|
241
|
-
"agent_sdk.subagent_name":
|
|
263
|
+
"agent_sdk.subagent_name": event.data.name ?? "unknown",
|
|
242
264
|
}));
|
|
243
265
|
return;
|
|
244
266
|
}
|
|
245
267
|
case "subagent.completed": {
|
|
246
268
|
const turn = ensureTurn(event, session, startTime);
|
|
247
|
-
const span = turn
|
|
269
|
+
const span = turn?.subagents.get(event.data.callId);
|
|
248
270
|
if (span !== undefined) {
|
|
249
271
|
span.end(startTime);
|
|
250
|
-
turn
|
|
272
|
+
turn?.subagents.delete(event.data.callId);
|
|
251
273
|
}
|
|
252
274
|
return;
|
|
253
275
|
}
|
|
@@ -291,19 +313,25 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
291
313
|
"agent_sdk.cost_usd": cost.totalUsd,
|
|
292
314
|
"agent_sdk.cost_source": cost.source,
|
|
293
315
|
}));
|
|
294
|
-
metrics
|
|
316
|
+
metrics?.cost.add(cost.totalUsd, join(event.sessionId, {
|
|
295
317
|
"cursor.model.name": cost.model,
|
|
296
318
|
"agent_sdk.agent": agentName,
|
|
297
319
|
}));
|
|
298
320
|
}
|
|
299
321
|
turn.span.setStatus({ code: SpanStatusCode.OK });
|
|
300
322
|
turn.span.end(startTime);
|
|
301
|
-
|
|
302
|
-
metrics
|
|
323
|
+
sessions.get(event.sessionId)?.turns.delete(event.turnId);
|
|
324
|
+
metrics?.turns.add(1, join(event.sessionId, {
|
|
303
325
|
"agent_sdk.agent": agentName,
|
|
304
326
|
"agent_sdk.turn_status": "completed",
|
|
305
327
|
}));
|
|
306
|
-
emitLog("turn.completed", SeverityNumber.INFO, attrs(
|
|
328
|
+
emitLog("turn.completed", SeverityNumber.INFO, attrs({
|
|
329
|
+
...baseLog(event, session),
|
|
330
|
+
"agent_sdk.usage.input_tokens": usage?.inputTokens,
|
|
331
|
+
"agent_sdk.usage.output_tokens": usage?.outputTokens,
|
|
332
|
+
"agent_sdk.cost_usd": cost?.totalUsd,
|
|
333
|
+
"cursor.model.name": cost?.model,
|
|
334
|
+
}));
|
|
307
335
|
return;
|
|
308
336
|
}
|
|
309
337
|
case "turn.failed": {
|
|
@@ -326,19 +354,23 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
326
354
|
else {
|
|
327
355
|
turn.span.setStatus({
|
|
328
356
|
code: SpanStatusCode.ERROR,
|
|
329
|
-
message: failureText
|
|
357
|
+
message: failureText ?? "turn failed",
|
|
330
358
|
});
|
|
331
359
|
if (failureText !== undefined) {
|
|
332
360
|
turn.span.recordException(new Error(failureText));
|
|
333
361
|
}
|
|
334
362
|
}
|
|
335
363
|
turn.span.end(startTime);
|
|
336
|
-
|
|
337
|
-
metrics
|
|
364
|
+
sessions.get(event.sessionId)?.turns.delete(event.turnId);
|
|
365
|
+
metrics?.turns.add(1, join(event.sessionId, {
|
|
338
366
|
"agent_sdk.agent": agentName,
|
|
339
|
-
"agent_sdk.turn_status": expected
|
|
367
|
+
"agent_sdk.turn_status": expected ?? "failed",
|
|
368
|
+
}));
|
|
369
|
+
emitLog("turn.failed", expected === undefined ? SeverityNumber.ERROR : SeverityNumber.WARN, attrs({
|
|
370
|
+
...baseLog(event, session),
|
|
371
|
+
"agent_sdk.error_message": failureText,
|
|
372
|
+
"agent_sdk.expected_error": expected,
|
|
340
373
|
}));
|
|
341
|
-
emitLog("turn.failed", expected === undefined ? SeverityNumber.ERROR : SeverityNumber.WARN, attrs(Object.assign(Object.assign({}, baseLog(event, session)), { "agent_sdk.error_message": failureText, "agent_sdk.expected_error": expected })));
|
|
342
374
|
return;
|
|
343
375
|
}
|
|
344
376
|
case "session.completed": {
|
|
@@ -355,17 +387,21 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
355
387
|
const failureText = gatedContent(event.data.message);
|
|
356
388
|
if (expected !== undefined) {
|
|
357
389
|
const state = sessions.get(event.sessionId);
|
|
358
|
-
for (const turn of
|
|
390
|
+
for (const turn of state?.turns.values() ?? []) {
|
|
359
391
|
turn.span.setAttribute("agent_sdk.expected_error", expected);
|
|
360
392
|
}
|
|
361
393
|
}
|
|
362
394
|
endSession({
|
|
363
395
|
sessionId: event.sessionId,
|
|
364
396
|
code: expected === undefined ? SpanStatusCode.ERROR : SpanStatusCode.OK,
|
|
365
|
-
message: expected === undefined ? (failureText
|
|
397
|
+
message: expected === undefined ? (failureText ?? "session failed") : undefined,
|
|
366
398
|
endTime: startTime,
|
|
367
399
|
});
|
|
368
|
-
emitLog("session.failed", expected === undefined ? SeverityNumber.ERROR : SeverityNumber.WARN, attrs(
|
|
400
|
+
emitLog("session.failed", expected === undefined ? SeverityNumber.ERROR : SeverityNumber.WARN, attrs({
|
|
401
|
+
...baseLog(event, session),
|
|
402
|
+
"agent_sdk.error_message": failureText,
|
|
403
|
+
"agent_sdk.expected_error": expected,
|
|
404
|
+
}));
|
|
369
405
|
return;
|
|
370
406
|
}
|
|
371
407
|
default:
|
|
@@ -404,7 +440,6 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
404
440
|
});
|
|
405
441
|
}
|
|
406
442
|
function openTurn(args) {
|
|
407
|
-
var _a;
|
|
408
443
|
const span = runtime.tracer.startSpan("agent_sdk.turn", {
|
|
409
444
|
kind: SpanKind.INTERNAL,
|
|
410
445
|
startTime: args.startTime,
|
|
@@ -414,7 +449,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
414
449
|
"agent_sdk.turn_id": args.turnId,
|
|
415
450
|
"agent_sdk.channel": args.session.channelId,
|
|
416
451
|
"agent_sdk.session_mode": args.session.mode,
|
|
417
|
-
"agent_sdk.session_purpose":
|
|
452
|
+
"agent_sdk.session_purpose": args.session.purpose ?? "live",
|
|
418
453
|
"agent_sdk.turn_synthetic": args.synthetic ? true : undefined,
|
|
419
454
|
}),
|
|
420
455
|
}, ROOT_CONTEXT);
|
|
@@ -437,7 +472,6 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
437
472
|
return trace.setSpan(context.active(), turn.span);
|
|
438
473
|
}
|
|
439
474
|
function openToolSpan(args) {
|
|
440
|
-
var _a, _b;
|
|
441
475
|
const existing = args.turn.tools.get(args.call.callId);
|
|
442
476
|
if (existing !== undefined) {
|
|
443
477
|
// Early `runInCall` opens with callId/toolName only. Fill in
|
|
@@ -445,8 +479,8 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
445
479
|
// The OTel parent is fixed at start; `parent_call_id` still records
|
|
446
480
|
// the event-stream hierarchy for nested/subagent calls.
|
|
447
481
|
existing.setAttributes(join(args.sessionId, {
|
|
448
|
-
"agent_sdk.parent_call_id":
|
|
449
|
-
"agent_sdk.tool_args":
|
|
482
|
+
"agent_sdk.parent_call_id": args.parentCallId ?? args.call.parentCallId,
|
|
483
|
+
"agent_sdk.tool_args": logOpts?.toolContent === true && args.call.args !== undefined
|
|
450
484
|
? truncate(json(args.call.args))
|
|
451
485
|
: undefined,
|
|
452
486
|
}));
|
|
@@ -463,26 +497,26 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
463
497
|
"agent_sdk.turn_id": args.turnId,
|
|
464
498
|
"agent_sdk.call_id": args.call.callId,
|
|
465
499
|
"agent_sdk.parent_call_id": args.call.parentCallId,
|
|
466
|
-
"agent_sdk.tool_args":
|
|
500
|
+
"agent_sdk.tool_args": logOpts?.toolContent === true && args.call.args !== undefined
|
|
467
501
|
? truncate(json(args.call.args))
|
|
468
502
|
: undefined,
|
|
469
503
|
}),
|
|
470
|
-
}, parentCtxFor(args.turn,
|
|
504
|
+
}, parentCtxFor(args.turn, args.parentCallId ?? args.call.parentCallId));
|
|
471
505
|
args.turn.tools.set(args.call.callId, span);
|
|
472
506
|
return span;
|
|
473
507
|
}
|
|
474
508
|
function ensureTurnState(args) {
|
|
475
|
-
var _a;
|
|
476
509
|
const startTime = Date.now();
|
|
477
510
|
const state = sessionState(args.sessionId);
|
|
478
|
-
return (
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
511
|
+
return (state.turns.get(args.turnId) ??
|
|
512
|
+
openTurn({
|
|
513
|
+
state,
|
|
514
|
+
sessionId: args.sessionId,
|
|
515
|
+
turnId: args.turnId,
|
|
516
|
+
session: args.session,
|
|
517
|
+
startTime,
|
|
518
|
+
synthetic: true,
|
|
519
|
+
}));
|
|
486
520
|
}
|
|
487
521
|
function ensureTurnSpan(args) {
|
|
488
522
|
return ensureTurnState(args).span;
|
|
@@ -527,11 +561,15 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
527
561
|
extraBySession.delete(args.sessionId);
|
|
528
562
|
}
|
|
529
563
|
function extra(sessionId) {
|
|
530
|
-
|
|
531
|
-
return (_a = extraBySession.get(sessionId)) !== null && _a !== void 0 ? _a : {};
|
|
564
|
+
return extraBySession.get(sessionId) ?? {};
|
|
532
565
|
}
|
|
533
566
|
function join(sessionId, rest) {
|
|
534
|
-
return attrs(
|
|
567
|
+
return attrs({
|
|
568
|
+
...extra(sessionId),
|
|
569
|
+
"cursor.conversation.id": sessionId,
|
|
570
|
+
"agent_sdk.session_id": sessionId,
|
|
571
|
+
...rest,
|
|
572
|
+
});
|
|
535
573
|
}
|
|
536
574
|
function paintOpenSpans(sessionId, incoming) {
|
|
537
575
|
const state = sessions.get(sessionId);
|
|
@@ -581,7 +619,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
581
619
|
}
|
|
582
620
|
/** Content opt-in for failure text (same gate as tool payloads). */
|
|
583
621
|
function gatedContent(value) {
|
|
584
|
-
if (
|
|
622
|
+
if (logOpts?.toolContent !== true) {
|
|
585
623
|
return undefined;
|
|
586
624
|
}
|
|
587
625
|
return truncate(value);
|
|
@@ -596,8 +634,7 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
596
634
|
};
|
|
597
635
|
}
|
|
598
636
|
function emitLog(eventName, severity, attributes) {
|
|
599
|
-
|
|
600
|
-
(_a = runtime.logger) === null || _a === void 0 ? void 0 : _a.emit({
|
|
637
|
+
runtime.logger?.emit({
|
|
601
638
|
body: eventName,
|
|
602
639
|
severityNumber: severity,
|
|
603
640
|
attributes,
|
|
@@ -640,11 +677,10 @@ function truncate(value) {
|
|
|
640
677
|
return `${value.slice(0, CONTENT_MAX)}…`;
|
|
641
678
|
}
|
|
642
679
|
function json(value) {
|
|
643
|
-
var _a;
|
|
644
680
|
try {
|
|
645
|
-
return
|
|
681
|
+
return JSON.stringify(value) ?? String(value);
|
|
646
682
|
}
|
|
647
|
-
catch
|
|
683
|
+
catch {
|
|
648
684
|
return String(value);
|
|
649
685
|
}
|
|
650
686
|
}
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Merge authored `defineOtel`, `serve({ otel })`, and standard OTel env.
|
|
3
3
|
*/
|
|
4
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
5
|
-
var t = {};
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
9
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
10
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
11
|
-
t[p[i]] = s[p[i]];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
4
|
import { resolveOtelDefinition } from "../../otel.js";
|
|
16
5
|
/**
|
|
17
6
|
* Process-global authored config. OTel SDK is one per serve process — if
|
|
@@ -40,21 +29,23 @@ export function pickAuthoredOtel(mounts) {
|
|
|
40
29
|
* `serve({ otel })` over `defineOtel` over env defaults.
|
|
41
30
|
*/
|
|
42
31
|
export function resolveOtelConfig(input) {
|
|
43
|
-
|
|
44
|
-
const env = (_a = input.env) !== null && _a !== void 0 ? _a : process.env;
|
|
32
|
+
const env = input.env ?? process.env;
|
|
45
33
|
if (input.serve === false) {
|
|
46
34
|
return disabled();
|
|
47
35
|
}
|
|
48
36
|
const authored = input.authored === undefined ? {} : resolveOtelDefinition(input.authored);
|
|
49
37
|
const serve = input.serve === undefined ? {} : input.serve;
|
|
50
38
|
const merged = {
|
|
51
|
-
serviceName:
|
|
52
|
-
serviceVersion:
|
|
53
|
-
resourceAttributes:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
39
|
+
serviceName: serve.serviceName ?? authored.serviceName,
|
|
40
|
+
serviceVersion: serve.serviceVersion ?? authored.serviceVersion,
|
|
41
|
+
resourceAttributes: {
|
|
42
|
+
...authored.resourceAttributes,
|
|
43
|
+
...serve.resourceAttributes,
|
|
44
|
+
},
|
|
45
|
+
exporters: serve.exporters ?? authored.exporters,
|
|
46
|
+
traces: serve.traces ?? authored.traces,
|
|
47
|
+
metrics: serve.metrics ?? authored.metrics,
|
|
48
|
+
logs: serve.logs ?? authored.logs,
|
|
58
49
|
};
|
|
59
50
|
const envExporters = exportersFromEnv(env);
|
|
60
51
|
const exporters = merged.exporters !== undefined && merged.exporters.length > 0
|
|
@@ -72,9 +63,9 @@ export function resolveOtelConfig(input) {
|
|
|
72
63
|
}
|
|
73
64
|
return {
|
|
74
65
|
enabled: traces !== false || metrics !== false || logs !== false,
|
|
75
|
-
serviceName:
|
|
66
|
+
serviceName: merged.serviceName ?? env.OTEL_SERVICE_NAME ?? "cursor",
|
|
76
67
|
serviceVersion: merged.serviceVersion,
|
|
77
|
-
resourceAttributes:
|
|
68
|
+
resourceAttributes: merged.resourceAttributes ?? {},
|
|
78
69
|
exporters,
|
|
79
70
|
traces,
|
|
80
71
|
metrics,
|
|
@@ -126,11 +117,10 @@ function disabled() {
|
|
|
126
117
|
* signal (OTel env spec).
|
|
127
118
|
*/
|
|
128
119
|
function exportersFromEnv(env) {
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
const logs = (_d = env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) === null || _d === void 0 ? void 0 : _d.trim();
|
|
120
|
+
const base = env.OTEL_EXPORTER_OTLP_ENDPOINT?.trim();
|
|
121
|
+
const traces = env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT?.trim();
|
|
122
|
+
const metrics = env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT?.trim();
|
|
123
|
+
const logs = env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT?.trim();
|
|
134
124
|
const protocol = protocolFromEnv(env.OTEL_EXPORTER_OTLP_PROTOCOL);
|
|
135
125
|
const headers = parseOtelHeaders(env.OTEL_EXPORTER_OTLP_HEADERS);
|
|
136
126
|
if (nonEmpty(base)) {
|
|
@@ -154,17 +144,16 @@ function pushSignalExporter(out, raw, signal, headers, protocol) {
|
|
|
154
144
|
});
|
|
155
145
|
}
|
|
156
146
|
function withEnvHeaders(exporter, env) {
|
|
157
|
-
var _a;
|
|
158
147
|
const envHeaders = parseOtelHeaders(env.OTEL_EXPORTER_OTLP_HEADERS);
|
|
159
148
|
return {
|
|
160
149
|
url: stripSignalPath(exporter.url),
|
|
161
|
-
headers:
|
|
162
|
-
protocol:
|
|
150
|
+
headers: { ...envHeaders, ...exporter.headers },
|
|
151
|
+
protocol: exporter.protocol ?? protocolFromEnv(env.OTEL_EXPORTER_OTLP_PROTOCOL),
|
|
163
152
|
signals: exporter.signals,
|
|
164
153
|
};
|
|
165
154
|
}
|
|
166
155
|
function protocolFromEnv(raw) {
|
|
167
|
-
const v = raw
|
|
156
|
+
const v = raw?.trim().toLowerCase();
|
|
168
157
|
if (v === "http/json" || v === "json") {
|
|
169
158
|
return "http/json";
|
|
170
159
|
}
|
|
@@ -181,7 +170,6 @@ function resolveSignal(value) {
|
|
|
181
170
|
return value;
|
|
182
171
|
}
|
|
183
172
|
function resolveLogs(value, env) {
|
|
184
|
-
var _a, _b;
|
|
185
173
|
if (value === false) {
|
|
186
174
|
return false;
|
|
187
175
|
}
|
|
@@ -199,18 +187,17 @@ function resolveLogs(value, env) {
|
|
|
199
187
|
return { userPrompts: envPrompts, toolContent: envTools };
|
|
200
188
|
}
|
|
201
189
|
return {
|
|
202
|
-
userPrompts:
|
|
203
|
-
toolContent:
|
|
190
|
+
userPrompts: value.userPrompts ?? envPrompts,
|
|
191
|
+
toolContent: value.toolContent ?? envTools,
|
|
204
192
|
};
|
|
205
193
|
}
|
|
206
194
|
/** `OTEL_LOGS_EXPORTER=none` (or unset) must not enable log export. */
|
|
207
195
|
function logsExporterOptIn(env) {
|
|
208
|
-
|
|
209
|
-
const raw = (_a = env.OTEL_LOGS_EXPORTER) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();
|
|
196
|
+
const raw = env.OTEL_LOGS_EXPORTER?.trim().toLowerCase();
|
|
210
197
|
return raw !== undefined && raw.length > 0 && raw !== "none";
|
|
211
198
|
}
|
|
212
199
|
function stableConfigKey(def) {
|
|
213
|
-
const { __agentServe: _brand
|
|
200
|
+
const { __agentServe: _brand, ...rest } = def;
|
|
214
201
|
return stable(rest);
|
|
215
202
|
}
|
|
216
203
|
function stable(value) {
|