@cursor/july 0.1.101 → 0.1.102
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/README.md +27 -0
- package/dist/channels/slack/api.d.ts +1 -1
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +3 -1
- package/dist/channels/slack/assistant.d.ts +1 -1
- package/dist/channels/slack/assistant.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.d.ts +3 -2
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +28 -8
- package/dist/channels/slack/inbound.d.ts +8 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +28 -0
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +2 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.BASO9Kih.js → app.CLA03RCz.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.FAqdWIXo.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.ifxv-cJV.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.DWCwM6p-.js} +2 -2
- package/dist/docs/assets/concepts.md.rPzW2HZN.js +1 -0
- package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +9 -0
- package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.lean.js +1 -0
- package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.js → guides_cloud-runtime.md.BRirbRAN.js} +1 -1
- package/dist/docs/assets/index.md.Kiht7ell.js +5 -0
- package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.Kiht7ell.lean.js} +1 -1
- package/dist/docs/assets/reference_extensions.md.9WQMZe1l.js +56 -0
- package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +1 -0
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.CA6QP6Lw.js} +2 -2
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.CA6QP6Lw.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.BFW9retM.js → reference_skills.md.l2ezAcaN.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.CvAHsdSp.js → reference_tools.md.B1up2r9W.js} +1 -1
- package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.DDa4MeEW.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +3 -3
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-agents.html +35 -0
- package/dist/docs/guides/cloud-agents.md +93 -0
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +2 -0
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +4 -4
- package/dist/docs/guides/webhooks.html +4 -4
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +4 -4
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +5 -1
- package/dist/docs/llms-full.txt +321 -4
- package/dist/docs/llms.txt +2 -0
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +4 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/extensions.html +82 -0
- package/dist/docs/reference/extensions.md +200 -0
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +6 -6
- package/dist/docs/reference/project-layout.md +3 -0
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +6 -6
- package/dist/docs/reference/skills.md +2 -0
- package/dist/docs/reference/subagents.html +5 -5
- package/dist/docs/reference/tools.html +6 -6
- package/dist/docs/reference/tools.md +2 -0
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/skills/ab.html +4 -4
- package/dist/docs/skills/create-agent.html +4 -4
- package/dist/docs/skills/debug.html +4 -4
- package/dist/docs/skills/evals.html +4 -4
- package/dist/docs/skills/framework-map.html +5 -5
- package/dist/docs/skills/framework-map.md +1 -0
- package/dist/docs/skills/github.html +4 -4
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +4 -4
- package/dist/docs/skills/mcp-auth.html +4 -4
- package/dist/docs/skills/otel.html +4 -4
- package/dist/docs/skills/setup-slack.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +4 -4
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +9 -7
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +9 -7
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +78 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +286 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +5 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/inputs.js +4 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts +8 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +15 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/cancel.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +26 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +54 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/get.js +25 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +14 -38
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/reply.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/{follow_up.js → reply.js} +12 -14
- package/dist/extensions.d.ts +38 -14
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +49 -12
- package/dist/files-backends/cursor-hosted.d.ts +0 -8
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +1 -11
- package/dist/files.d.ts +5 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +22 -18
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +13 -15
- package/dist/internal/cursor/backend-client.d.ts +8 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +25 -9
- package/dist/internal/cursor/hosted-store-secrets.d.ts +11 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +15 -0
- package/dist/internal/discovery/ab.d.ts +9 -0
- package/dist/internal/discovery/ab.d.ts.map +1 -0
- package/dist/internal/discovery/ab.js +101 -0
- package/dist/internal/discovery/agent-config.d.ts +35 -0
- package/dist/internal/discovery/agent-config.d.ts.map +1 -0
- package/dist/internal/discovery/agent-config.js +173 -0
- package/dist/internal/discovery/agent.d.ts +11 -0
- package/dist/internal/discovery/agent.d.ts.map +1 -0
- package/dist/internal/discovery/agent.js +306 -0
- package/dist/internal/discovery/channels.d.ts +10 -0
- package/dist/internal/discovery/channels.d.ts.map +1 -0
- package/dist/internal/discovery/channels.js +97 -0
- package/dist/internal/discovery/connections.d.ts +17 -0
- package/dist/internal/discovery/connections.d.ts.map +1 -0
- package/dist/internal/discovery/connections.js +436 -0
- package/dist/internal/discovery/context.d.ts +20 -0
- package/dist/internal/discovery/context.d.ts.map +1 -0
- package/dist/internal/discovery/context.js +30 -0
- package/dist/internal/discovery/cursor-plugin.d.ts +25 -0
- package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -0
- package/dist/internal/discovery/cursor-plugin.js +570 -0
- package/dist/internal/discovery/extensions.d.ts +19 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -0
- package/dist/internal/discovery/extensions.js +238 -0
- package/dist/internal/discovery/fs.d.ts +15 -0
- package/dist/internal/discovery/fs.d.ts.map +1 -0
- package/dist/internal/discovery/fs.js +115 -0
- package/dist/internal/discovery/hooks.d.ts +7 -0
- package/dist/internal/discovery/hooks.d.ts.map +1 -0
- package/dist/internal/discovery/hooks.js +48 -0
- package/dist/internal/discovery/info.d.ts +6 -0
- package/dist/internal/discovery/info.d.ts.map +1 -0
- package/dist/internal/discovery/info.js +141 -0
- package/dist/internal/discovery/instructions.d.ts +7 -0
- package/dist/internal/discovery/instructions.d.ts.map +1 -0
- package/dist/internal/discovery/instructions.js +95 -0
- package/dist/internal/discovery/modules.d.ts +20 -0
- package/dist/internal/discovery/modules.d.ts.map +1 -0
- package/dist/internal/discovery/modules.js +101 -0
- package/dist/internal/discovery/names.d.ts +12 -0
- package/dist/internal/discovery/names.d.ts.map +1 -0
- package/dist/internal/discovery/names.js +36 -0
- package/dist/internal/discovery/project.d.ts +53 -0
- package/dist/internal/discovery/project.d.ts.map +1 -0
- package/dist/internal/discovery/project.js +239 -0
- package/dist/internal/discovery/runtime.d.ts +34 -0
- package/dist/internal/discovery/runtime.d.ts.map +1 -0
- package/dist/internal/discovery/runtime.js +98 -0
- package/dist/internal/discovery/schedules.d.ts +7 -0
- package/dist/internal/discovery/schedules.d.ts.map +1 -0
- package/dist/internal/discovery/schedules.js +97 -0
- package/dist/internal/discovery/seed-files.d.ts +7 -0
- package/dist/internal/discovery/seed-files.d.ts.map +1 -0
- package/dist/internal/discovery/seed-files.js +41 -0
- package/dist/internal/discovery/services.d.ts +17 -0
- package/dist/internal/discovery/services.d.ts.map +1 -0
- package/dist/internal/discovery/services.js +104 -0
- package/dist/internal/discovery/skills.d.ts +16 -0
- package/dist/internal/discovery/skills.d.ts.map +1 -0
- package/dist/internal/discovery/skills.js +151 -0
- package/dist/internal/discovery/subagent.d.ts +13 -0
- package/dist/internal/discovery/subagent.d.ts.map +1 -0
- package/dist/internal/discovery/subagent.js +19 -0
- package/dist/internal/discovery/tools.d.ts +18 -0
- package/dist/internal/discovery/tools.d.ts.map +1 -0
- package/dist/internal/discovery/tools.js +159 -0
- package/dist/internal/discovery.d.ts +8 -62
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +8 -2505
- package/dist/internal/framework-file-storage.js +6 -6
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +8 -7
- package/dist/internal/frontmatter.d.ts +11 -3
- package/dist/internal/frontmatter.d.ts.map +1 -1
- package/dist/internal/frontmatter.js +29 -3
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +37 -20
- package/dist/internal/otel/collector.d.ts +13 -0
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +84 -17
- package/dist/internal/otel/http.d.ts.map +1 -1
- package/dist/internal/otel/http.js +2 -10
- package/dist/internal/otel/mcp.d.ts +16 -0
- package/dist/internal/otel/mcp.d.ts.map +1 -0
- package/dist/internal/otel/mcp.js +68 -0
- package/dist/internal/otel/propagation.d.ts +6 -0
- package/dist/internal/otel/propagation.d.ts.map +1 -0
- package/dist/internal/otel/propagation.js +14 -0
- package/dist/internal/otel/runtime.d.ts.map +1 -1
- package/dist/internal/otel/runtime.js +2 -0
- package/dist/internal/session-engine.d.ts +5 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +68 -32
- package/dist/internal/session-run-log.d.ts +2 -1
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +13 -14
- package/dist/internal/start-log-store.d.ts +1 -1
- package/dist/internal/start-log-store.d.ts.map +1 -1
- package/dist/internal/start-log-store.js +12 -14
- package/dist/internal/storage-coordinator.d.ts +4 -1
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +15 -13
- package/dist/internal/tool-catalog.d.ts.map +1 -1
- package/dist/internal/tool-catalog.js +9 -6
- package/dist/internal/turn-cost.d.ts +14 -0
- package/dist/internal/turn-cost.d.ts.map +1 -1
- package/dist/internal/turn-cost.js +41 -9
- package/dist/internal/v2-hosting.d.ts +22 -0
- package/dist/internal/v2-hosting.d.ts.map +1 -0
- package/dist/internal/v2-hosting.js +23 -0
- package/dist/otel.d.ts +16 -0
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +26 -0
- package/dist/playground/assets/index-B6C9S9nG.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-protocol.d.ts +24 -23
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +68 -65
- package/dist/storage.d.ts +2 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/tools.d.ts +9 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +9 -0
- package/dist/types.d.ts +39 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +5 -1
- package/docs/concepts.md +3 -3
- package/docs/guides/cloud-agents.md +98 -0
- package/docs/guides/cloud-runtime.md +2 -0
- package/docs/reference/extensions.md +205 -0
- package/docs/reference/project-layout.md +3 -0
- package/docs/reference/skills.md +2 -0
- package/docs/reference/tools.md +2 -0
- package/package.json +1 -1
- package/skills/framework-map/SKILL.md +1 -0
- package/src/channels/slack/api.ts +4 -2
- package/src/channels/slack/assistant.ts +1 -1
- package/src/channels/slack/dispatch.ts +27 -2
- package/src/channels/slack/inbound.ts +37 -0
- package/src/channels/slack/manifest.ts +2 -1
- package/src/extensions/cursor-cloud-agents/extension.ts +9 -7
- package/src/extensions/cursor-cloud-agents/lib/backend.ts +395 -0
- package/src/extensions/cursor-cloud-agents/lib/inputs.ts +5 -0
- package/src/extensions/cursor-cloud-agents/lib/transcript.ts +23 -0
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +21 -7
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +19 -0
- package/src/extensions/cursor-cloud-agents/tools/dump.ts +51 -0
- package/src/extensions/cursor-cloud-agents/tools/get.ts +18 -0
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +22 -42
- package/src/extensions/cursor-cloud-agents/tools/list.ts +1 -1
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +34 -0
- package/src/extensions.ts +55 -12
- package/src/files-backends/cursor-hosted.ts +1 -17
- package/src/files.ts +43 -34
- package/src/index.ts +10 -1
- package/src/internal/conversation-mirror.ts +23 -18
- package/src/internal/cursor/backend-client.ts +32 -10
- package/src/internal/cursor/hosted-store-secrets.ts +27 -0
- package/src/internal/discovery/ab.ts +111 -0
- package/src/internal/discovery/agent-config.ts +222 -0
- package/src/internal/discovery/agent.ts +360 -0
- package/src/internal/discovery/channels.ts +103 -0
- package/src/internal/discovery/connections.ts +540 -0
- package/src/internal/discovery/context.ts +46 -0
- package/src/internal/discovery/cursor-plugin.ts +708 -0
- package/src/internal/discovery/extensions.ts +348 -0
- package/src/internal/discovery/fs.ts +108 -0
- package/src/internal/discovery/hooks.ts +45 -0
- package/src/internal/discovery/info.ts +179 -0
- package/src/internal/discovery/instructions.ts +113 -0
- package/src/internal/discovery/modules.ts +107 -0
- package/src/internal/discovery/names.ts +44 -0
- package/src/internal/discovery/project.ts +270 -0
- package/src/internal/discovery/runtime.ts +159 -0
- package/src/internal/discovery/schedules.ts +94 -0
- package/src/internal/discovery/seed-files.ts +37 -0
- package/src/internal/discovery/services.ts +124 -0
- package/src/internal/discovery/skills.ts +176 -0
- package/src/internal/discovery/subagent.ts +29 -0
- package/src/internal/discovery/tools.ts +182 -0
- package/src/internal/discovery.ts +20 -3081
- package/src/internal/framework-file-storage.ts +6 -6
- package/src/internal/framework-storage-selection.ts +9 -9
- package/src/internal/frontmatter.ts +36 -3
- package/src/internal/mcp-host.ts +84 -31
- package/src/internal/otel/collector.ts +125 -25
- package/src/internal/otel/http.ts +2 -12
- package/src/internal/otel/mcp.ts +69 -0
- package/src/internal/otel/propagation.ts +17 -0
- package/src/internal/otel/runtime.ts +2 -0
- package/src/internal/session-engine.ts +96 -11
- package/src/internal/session-run-log.ts +17 -16
- package/src/internal/start-log-store.ts +13 -16
- package/src/internal/storage-coordinator.ts +19 -16
- package/src/internal/tool-catalog.ts +9 -6
- package/src/internal/turn-cost.ts +47 -4
- package/src/internal/v2-hosting.ts +38 -0
- package/src/otel.ts +38 -0
- package/src/storage-protocol.ts +101 -91
- package/src/storage.ts +4 -0
- package/src/tools.ts +18 -0
- package/src/types.ts +43 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +0 -1
- package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +0 -30
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/cloud.js +0 -45
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +0 -4
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +0 -4
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +0 -1
- package/dist/extensions/cursor-cloud-agents/tools/status.js +0 -41
- package/dist/playground/assets/index-DBQCwFp0.css +0 -1
- package/src/extensions/cursor-cloud-agents/lib/cloud.ts +0 -79
- package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +0 -29
- package/src/extensions/cursor-cloud-agents/tools/status.ts +0 -39
- /package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.rPzW2HZN.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.CkYbjnAX.lean.js → guides_cloud-runtime.md.BRirbRAN.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.BFW9retM.lean.js → reference_skills.md.l2ezAcaN.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.CvAHsdSp.lean.js → reference_tools.md.B1up2r9W.lean.js} +0 -0
- /package/dist/playground/assets/{index-BnNN1-EK.js → index-ZqNoT8Ie.js} +0 -0
|
@@ -36,10 +36,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
36
36
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
|
-
import {
|
|
39
|
+
import { AGENTSDK_STORAGE_KEY_ROOT } from "../storage-protocol.js";
|
|
40
40
|
import { mapBounded } from "./bounded.js";
|
|
41
41
|
/**
|
|
42
|
-
* Key kinds (`
|
|
42
|
+
* Key kinds (`agentsdk/v1/{agent}/{kind}/…`) that live on the framework
|
|
43
43
|
* file store. Everything else stays on the KV sink.
|
|
44
44
|
*/
|
|
45
45
|
const FRAMEWORK_FILE_KINDS = new Set([
|
|
@@ -55,10 +55,10 @@ const FRAMEWORK_FILE_KINDS = new Set([
|
|
|
55
55
|
* kind-scoped (`…/{agent}/session/`), so a prefix routes wholly to one side.
|
|
56
56
|
*/
|
|
57
57
|
export function isFrameworkFileKey(key) {
|
|
58
|
-
if (!key.startsWith(`${
|
|
58
|
+
if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
|
|
59
59
|
return false;
|
|
60
60
|
}
|
|
61
|
-
const rest = key.slice(
|
|
61
|
+
const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
|
|
62
62
|
const agentEnd = rest.indexOf("/");
|
|
63
63
|
if (agentEnd === -1) {
|
|
64
64
|
return false;
|
|
@@ -148,10 +148,10 @@ export function fileSinkStorageCore(sink) {
|
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
150
|
function frameworkFileKind(key) {
|
|
151
|
-
if (!key.startsWith(`${
|
|
151
|
+
if (!key.startsWith(`${AGENTSDK_STORAGE_KEY_ROOT}/`)) {
|
|
152
152
|
return undefined;
|
|
153
153
|
}
|
|
154
|
-
const rest = key.slice(
|
|
154
|
+
const rest = key.slice(AGENTSDK_STORAGE_KEY_ROOT.length + 1);
|
|
155
155
|
const agentEnd = rest.indexOf("/");
|
|
156
156
|
if (agentEnd === -1) {
|
|
157
157
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;
|
|
1
|
+
{"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAGH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,MAAM,WAAW,8BAA8B;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,8BAA8B,GACpC,iBAAiB,GAAG,SAAS,CAwD/B"}
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
* the session store; what this selects is the durable mirror *beyond* the
|
|
42
42
|
* pod's filesystem.
|
|
43
43
|
*/
|
|
44
|
-
import {
|
|
44
|
+
import { cursorHostedFiles } from "../files-backends/cursor-hosted.js";
|
|
45
45
|
import { defineStorage } from "../storage.js";
|
|
46
46
|
import { cursorHostedStorageV2 } from "../storage-backends/cursor-hosted-v2.js";
|
|
47
47
|
import { resolveApiKeySync } from "./cursor/credentials.js";
|
|
48
|
-
import { AGENT_SERVE_GENERATION_ENV_VAR } from "./cursor-relay-core.js";
|
|
49
48
|
import { composeFrameworkStorage, fileSinkStorageCore, frameworkGuardedCas, } from "./framework-file-storage.js";
|
|
49
|
+
import { resolveAgentV2Hosting } from "./v2-hosting.js";
|
|
50
50
|
/**
|
|
51
51
|
* Pick the backend for framework session state.
|
|
52
52
|
*
|
|
@@ -54,7 +54,6 @@ import { composeFrameworkStorage, fileSinkStorageCore, frameworkGuardedCas, } fr
|
|
|
54
54
|
* disk is the only copy.
|
|
55
55
|
*/
|
|
56
56
|
export function selectFrameworkStorageDefinition(input) {
|
|
57
|
-
var _a;
|
|
58
57
|
if (input.architecture !== "v2") {
|
|
59
58
|
// v1: the author decides, or there is no mirror.
|
|
60
59
|
return input.authored;
|
|
@@ -65,8 +64,11 @@ export function selectFrameworkStorageDefinition(input) {
|
|
|
65
64
|
// rather than silently discard what the author believes is configured.
|
|
66
65
|
throw new Error('defineStorage (agent/storage.ts) is not supported on architecture "v2": storage is platform-selected. Delete the file.');
|
|
67
66
|
}
|
|
68
|
-
const
|
|
69
|
-
|
|
67
|
+
const hosting = resolveAgentV2Hosting({
|
|
68
|
+
architecture: input.architecture,
|
|
69
|
+
env: input.env,
|
|
70
|
+
});
|
|
71
|
+
if (hosting.kind !== "cursor-managed") {
|
|
70
72
|
// Self-hosted v2: the state root is the durable copy.
|
|
71
73
|
return undefined;
|
|
72
74
|
}
|
|
@@ -76,7 +78,6 @@ export function selectFrameworkStorageDefinition(input) {
|
|
|
76
78
|
// comes up). Follow-ups restore lazily by continuation or session id;
|
|
77
79
|
// GET /v1/sessions lists from the sink either way.
|
|
78
80
|
const policy = { restore: "off" };
|
|
79
|
-
const envSnapshot = env;
|
|
80
81
|
// Full chain (env → bind file → stored login): frozen engines listen
|
|
81
82
|
// unsigned and bind store ids + CURSOR_API_KEY at task time, after this
|
|
82
83
|
// definition is constructed.
|
|
@@ -91,7 +92,7 @@ export function selectFrameworkStorageDefinition(input) {
|
|
|
91
92
|
return defineStorage(Object.assign(Object.assign(Object.assign({ name: "cursor-hosted (framework files)", policy }, kv), composeFrameworkStorage({
|
|
92
93
|
kv,
|
|
93
94
|
files: fileSinkStorageCore(cursorHostedFiles({
|
|
94
|
-
resolveStoreSourceId: () =>
|
|
95
|
+
resolveStoreSourceId: () => hosting.resolveStoreIds().frameworkStoreSourceId,
|
|
95
96
|
resolveApiKey,
|
|
96
97
|
})),
|
|
97
98
|
})), {
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Frontmatter parsers. Authored markdown (skill descriptions, schedule cron
|
|
3
|
+
* expressions) uses the flat `key: value` scalar subset; Cursor plugin
|
|
4
|
+
* markdown is full YAML (folded descriptions, lists).
|
|
5
5
|
*/
|
|
6
6
|
export interface ParsedFrontmatter {
|
|
7
7
|
data: Record<string, string>;
|
|
8
8
|
body: string;
|
|
9
9
|
}
|
|
10
|
+
export interface ParsedYamlFrontmatter {
|
|
11
|
+
data: Record<string, unknown>;
|
|
12
|
+
body: string;
|
|
13
|
+
/** Why the block did not parse as a YAML mapping; `data` is then empty. */
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
/** YAML frontmatter with the JSON schema (no custom tags). */
|
|
17
|
+
export declare function parseYamlFrontmatter(source: string): ParsedYamlFrontmatter;
|
|
10
18
|
export declare function parseFrontmatter(source: string): ParsedFrontmatter;
|
|
11
19
|
export declare function serializeFrontmatter(data: Record<string, string>): string;
|
|
12
20
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/internal/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAoB1E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAsClE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAKzE"}
|
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Frontmatter parsers. Authored markdown (skill descriptions, schedule cron
|
|
3
|
+
* expressions) uses the flat `key: value` scalar subset; Cursor plugin
|
|
4
|
+
* markdown is full YAML (folded descriptions, lists).
|
|
5
5
|
*/
|
|
6
|
+
import { JSON_SCHEMA, load as parseYaml } from "js-yaml";
|
|
6
7
|
const FRONTMATTER_OPEN = /^---\s*$/;
|
|
8
|
+
const YAML_FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/;
|
|
9
|
+
/** YAML frontmatter with the JSON schema (no custom tags). */
|
|
10
|
+
export function parseYamlFrontmatter(source) {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const match = YAML_FRONTMATTER.exec(source);
|
|
13
|
+
if (match === null) {
|
|
14
|
+
return { data: {}, body: source };
|
|
15
|
+
}
|
|
16
|
+
const body = (_a = match[2]) !== null && _a !== void 0 ? _a : "";
|
|
17
|
+
let data;
|
|
18
|
+
try {
|
|
19
|
+
data = parseYaml((_b = match[1]) !== null && _b !== void 0 ? _b : "", { schema: JSON_SCHEMA });
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
23
|
+
return { data: {}, body, error: message };
|
|
24
|
+
}
|
|
25
|
+
if (data === undefined || data === null) {
|
|
26
|
+
return { data: {}, body };
|
|
27
|
+
}
|
|
28
|
+
if (typeof data !== "object" || Array.isArray(data)) {
|
|
29
|
+
return { data: {}, body, error: "frontmatter is not a mapping" };
|
|
30
|
+
}
|
|
31
|
+
return { data: data, body };
|
|
32
|
+
}
|
|
7
33
|
export function parseFrontmatter(source) {
|
|
8
34
|
var _a, _b;
|
|
9
35
|
const lines = source.split(/\r?\n/);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-host.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-host.d.ts","sourceRoot":"","sources":["../../src/internal/mcp-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AASrB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,YAAY,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAS9C;CACF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,iBAAiB,CAE5B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAQvE;AAiBD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,qBAAa,OAAQ,YAAW,eAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YAAY,WAAW,EAAE,oBAAoB,EAAE,EAI9C;IAED,gFAAgF;IAChF,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAErC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAEpD;IAED,KAAK,IAAI,MAAM,EAAE,CAEhB;IAEK,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAYlE;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,EAAE,oBAAoB,GAAG,aAAa,CA+CtD;IAEK,QAAQ,CACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;IAED;;;;;;;;OAQG;YACW,UAAU;IAiBxB,OAAO,CAAC,SAAS;YAYH,gBAAgB;IAiB9B,OAAO,CAAC,iBAAiB;YAWX,OAAO;CAGtB;AAcD,+BAA+B;AAC/B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAU9D;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,OAAO,GACnB,kBAAkB,GAAG,SAAS,CAyBhC"}
|
|
@@ -26,6 +26,7 @@ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/
|
|
|
26
26
|
import { connectionAllowsTool, } from "../types.js";
|
|
27
27
|
import { CLI_COMMAND_NAME as CLI } from "./distribution.js";
|
|
28
28
|
import { createHostMcpOAuthProvider } from "./mcp-oauth.js";
|
|
29
|
+
import { instrumentedMcpFetch, mcpTraceMeta, runMcpClientSpan, } from "./otel/mcp.js";
|
|
29
30
|
export class McpNeedsAuthError extends Error {
|
|
30
31
|
constructor(connection, cause) {
|
|
31
32
|
super(`MCP connection "${connection}" needs authorization. Run \`${CLI} mcp oauth ${connection}\`.`);
|
|
@@ -79,12 +80,12 @@ export class McpHost {
|
|
|
79
80
|
listTools(connectionName) {
|
|
80
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
82
|
const connection = this.requireConnection(connectionName);
|
|
82
|
-
return this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
const listed = yield client.listTools();
|
|
83
|
+
return runMcpClientSpan({ method: "tools/list", connection: connectionName }, () => this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
const listed = yield client.listTools(mcpListParams());
|
|
84
85
|
return listed.tools
|
|
85
86
|
.map(toToolInfo)
|
|
86
87
|
.filter((tool) => connectionAllowsTool(connection, tool.name));
|
|
87
|
-
}));
|
|
88
|
+
})));
|
|
88
89
|
});
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
@@ -108,21 +109,22 @@ export class McpHost {
|
|
|
108
109
|
}
|
|
109
110
|
});
|
|
110
111
|
return {
|
|
111
|
-
listTools: () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const listed = yield client.listTools();
|
|
112
|
+
listTools: () => runMcpClientSpan({ method: "tools/list", connection: connection.name }, () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
const listed = yield client.listTools(mcpListParams());
|
|
113
114
|
return listed.tools
|
|
114
115
|
.map(toToolInfo)
|
|
115
116
|
.filter((tool) => connectionAllowsTool(connection, tool.name));
|
|
116
|
-
})),
|
|
117
|
+
}))),
|
|
117
118
|
callTool: (toolName, args = {}) => {
|
|
118
119
|
assertConnectionAllowsTool(connection, toolName);
|
|
119
|
-
return
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
return runMcpClientSpan({
|
|
121
|
+
method: "tools/call",
|
|
122
|
+
connection: connection.name,
|
|
123
|
+
toolName,
|
|
124
|
+
}, () => withFreshClient((client) => __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
const result = yield client.callTool(Object.assign({ name: toolName, arguments: args }, mcpCallMeta()));
|
|
124
126
|
return throwIfCallNeedsAuth(connection.name, normalizeCallResult(result));
|
|
125
|
-
}));
|
|
127
|
+
})));
|
|
126
128
|
},
|
|
127
129
|
};
|
|
128
130
|
}
|
|
@@ -130,13 +132,10 @@ export class McpHost {
|
|
|
130
132
|
return __awaiter(this, arguments, void 0, function* (connectionName, toolName, args = {}) {
|
|
131
133
|
const connection = this.requireConnection(connectionName);
|
|
132
134
|
assertConnectionAllowsTool(connection, toolName);
|
|
133
|
-
return this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
|
|
134
|
-
const result = yield client.callTool({
|
|
135
|
-
name: toolName,
|
|
136
|
-
arguments: args,
|
|
137
|
-
});
|
|
135
|
+
return runMcpClientSpan({ method: "tools/call", connection: connectionName, toolName }, () => this.withClient(connectionName, (client) => __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
const result = yield client.callTool(Object.assign({ name: toolName, arguments: args }, mcpCallMeta()));
|
|
138
137
|
return throwIfCallNeedsAuth(connectionName, normalizeCallResult(result));
|
|
139
|
-
}));
|
|
138
|
+
})));
|
|
140
139
|
});
|
|
141
140
|
}
|
|
142
141
|
dropClient(name) {
|
|
@@ -363,12 +362,30 @@ function createTransport(connection, oauthRedirectUrl) {
|
|
|
363
362
|
redirectUrl: oauthRedirectUrl,
|
|
364
363
|
})
|
|
365
364
|
: undefined;
|
|
365
|
+
const fetchImpl = instrumentedMcpFetch();
|
|
366
|
+
const fetchLike = (url, init) => fetchImpl(url, init);
|
|
366
367
|
if (transport.type === "sse") {
|
|
367
|
-
return new SSEClientTransport(url, {
|
|
368
|
+
return new SSEClientTransport(url, {
|
|
369
|
+
requestInit,
|
|
370
|
+
authProvider,
|
|
371
|
+
fetch: fetchLike,
|
|
372
|
+
});
|
|
368
373
|
}
|
|
369
|
-
return new StreamableHTTPClientTransport(url, {
|
|
374
|
+
return new StreamableHTTPClientTransport(url, {
|
|
375
|
+
requestInit,
|
|
376
|
+
authProvider,
|
|
377
|
+
fetch: fetchLike,
|
|
378
|
+
});
|
|
370
379
|
});
|
|
371
380
|
}
|
|
381
|
+
function mcpListParams() {
|
|
382
|
+
const meta = mcpTraceMeta();
|
|
383
|
+
return meta === undefined ? undefined : { _meta: meta };
|
|
384
|
+
}
|
|
385
|
+
function mcpCallMeta() {
|
|
386
|
+
const meta = mcpTraceMeta();
|
|
387
|
+
return meta === undefined ? {} : { _meta: meta };
|
|
388
|
+
}
|
|
372
389
|
function isOauthHttpTransport(transport) {
|
|
373
390
|
return "url" in transport && transport.oauth === true;
|
|
374
391
|
}
|
|
@@ -9,9 +9,22 @@
|
|
|
9
9
|
import type { SessionEvent, SessionInfo } from "../../types.js";
|
|
10
10
|
import { type AttrValue } from "./attrs.js";
|
|
11
11
|
import type { OtelRuntime } from "./runtime.js";
|
|
12
|
+
export interface OtelCallContext {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
session: SessionInfo;
|
|
15
|
+
turnId: string;
|
|
16
|
+
callId: string;
|
|
17
|
+
toolName: string;
|
|
18
|
+
}
|
|
12
19
|
export interface OtelCollector {
|
|
13
20
|
onEvent(event: SessionEvent, session: SessionInfo): void;
|
|
14
21
|
close(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Run `fn` under the tool span so outbound inject sees that context.
|
|
24
|
+
* Opens the session / turn / tool span if the event stream has not
|
|
25
|
+
* reached `actions.requested` yet (dispatch is async).
|
|
26
|
+
*/
|
|
27
|
+
runInCall<T>(args: OtelCallContext, fn: () => T | Promise<T>): Promise<T>;
|
|
15
28
|
/** Merge author tags onto the session; paints open spans immediately. */
|
|
16
29
|
setSessionAttributes(sessionId: string, attributes: Record<string, AttrValue>): void;
|
|
17
30
|
/** Session tags previously set by {@link setSessionAttributes}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;IACd,yEAAyE;IACzE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC;IACR,mEAAmE;IACnE,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAS,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1E,yEAAyE;IACzE,oBAAoB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,IAAI,CAAC;IACR,mEAAmE;IACnE,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;CAC1C;AAgBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,aAAa,CAo3Bf"}
|
|
@@ -43,6 +43,10 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
43
43
|
const bag = extraBySession.get(sessionId);
|
|
44
44
|
return bag === undefined ? undefined : Object.assign({}, bag);
|
|
45
45
|
},
|
|
46
|
+
runInCall(args, fn) {
|
|
47
|
+
const span = ensureCallSpan(args);
|
|
48
|
+
return context.with(trace.setSpan(context.active(), span), () => Promise.resolve(fn()));
|
|
49
|
+
},
|
|
46
50
|
};
|
|
47
51
|
function handle(event, session) {
|
|
48
52
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
@@ -51,6 +55,9 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
51
55
|
const startTime = Number.isFinite(at) ? at : undefined;
|
|
52
56
|
switch (event.type) {
|
|
53
57
|
case "session.started": {
|
|
58
|
+
if (sessions.get(event.sessionId) !== undefined) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
54
61
|
openSession({
|
|
55
62
|
sessionId: event.sessionId,
|
|
56
63
|
session,
|
|
@@ -104,6 +111,15 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
104
111
|
if (state === undefined) {
|
|
105
112
|
return;
|
|
106
113
|
}
|
|
114
|
+
// `runInCall` can open a synthetic turn before this event is
|
|
115
|
+
// applied. Keep that entry (and its in-flight tool spans) and
|
|
116
|
+
// just mark it real so `action.result` will not auto-close it.
|
|
117
|
+
const existing = state.turns.get(event.turnId);
|
|
118
|
+
if (existing !== undefined) {
|
|
119
|
+
existing.synthetic = false;
|
|
120
|
+
existing.span.setAttribute("agent_sdk.turn_synthetic", false);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
107
123
|
openTurn({
|
|
108
124
|
state,
|
|
109
125
|
sessionId: event.sessionId,
|
|
@@ -144,24 +160,14 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
144
160
|
return;
|
|
145
161
|
}
|
|
146
162
|
for (const call of event.data.calls) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
163
|
+
openToolSpan({
|
|
164
|
+
turn,
|
|
165
|
+
sessionId: event.sessionId,
|
|
166
|
+
turnId: event.turnId,
|
|
167
|
+
call,
|
|
168
|
+
parentCallId: (_t = event.data.parentCallId) !== null && _t !== void 0 ? _t : call.parentCallId,
|
|
150
169
|
startTime,
|
|
151
|
-
|
|
152
|
-
"cursor.conversation.id": event.sessionId,
|
|
153
|
-
"cursor.tool.name": call.toolName,
|
|
154
|
-
"cursor.tool.kind": "builtin",
|
|
155
|
-
"agent_sdk.agent": agentName,
|
|
156
|
-
"agent_sdk.turn_id": event.turnId,
|
|
157
|
-
"agent_sdk.call_id": call.callId,
|
|
158
|
-
"agent_sdk.parent_call_id": call.parentCallId,
|
|
159
|
-
"agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && call.args !== undefined
|
|
160
|
-
? truncate(json(call.args))
|
|
161
|
-
: undefined,
|
|
162
|
-
}),
|
|
163
|
-
}, parentCtx);
|
|
164
|
-
turn.tools.set(call.callId, span);
|
|
170
|
+
});
|
|
165
171
|
}
|
|
166
172
|
return;
|
|
167
173
|
}
|
|
@@ -466,6 +472,67 @@ export function createOtelCollector(runtime, agentName, log) {
|
|
|
466
472
|
}
|
|
467
473
|
return trace.setSpan(context.active(), turn.span);
|
|
468
474
|
}
|
|
475
|
+
function openToolSpan(args) {
|
|
476
|
+
var _a, _b;
|
|
477
|
+
const existing = args.turn.tools.get(args.call.callId);
|
|
478
|
+
if (existing !== undefined) {
|
|
479
|
+
// Early `runInCall` opens with callId/toolName only. Fill in
|
|
480
|
+
// parent linkage and opt-in args when `actions.requested` arrives.
|
|
481
|
+
// The OTel parent is fixed at start; `parent_call_id` still records
|
|
482
|
+
// the event-stream hierarchy for nested/subagent calls.
|
|
483
|
+
existing.setAttributes(join(args.sessionId, {
|
|
484
|
+
"agent_sdk.parent_call_id": (_a = args.parentCallId) !== null && _a !== void 0 ? _a : args.call.parentCallId,
|
|
485
|
+
"agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && args.call.args !== undefined
|
|
486
|
+
? truncate(json(args.call.args))
|
|
487
|
+
: undefined,
|
|
488
|
+
}));
|
|
489
|
+
return existing;
|
|
490
|
+
}
|
|
491
|
+
const span = runtime.tracer.startSpan("agent_sdk.tool", {
|
|
492
|
+
kind: SpanKind.INTERNAL,
|
|
493
|
+
startTime: args.startTime,
|
|
494
|
+
attributes: join(args.sessionId, {
|
|
495
|
+
"cursor.conversation.id": args.sessionId,
|
|
496
|
+
"cursor.tool.name": args.call.toolName,
|
|
497
|
+
"cursor.tool.kind": "builtin",
|
|
498
|
+
"agent_sdk.agent": agentName,
|
|
499
|
+
"agent_sdk.turn_id": args.turnId,
|
|
500
|
+
"agent_sdk.call_id": args.call.callId,
|
|
501
|
+
"agent_sdk.parent_call_id": args.call.parentCallId,
|
|
502
|
+
"agent_sdk.tool_args": (logOpts === null || logOpts === void 0 ? void 0 : logOpts.toolContent) === true && args.call.args !== undefined
|
|
503
|
+
? truncate(json(args.call.args))
|
|
504
|
+
: undefined,
|
|
505
|
+
}),
|
|
506
|
+
}, parentCtxFor(args.turn, (_b = args.parentCallId) !== null && _b !== void 0 ? _b : args.call.parentCallId));
|
|
507
|
+
args.turn.tools.set(args.call.callId, span);
|
|
508
|
+
return span;
|
|
509
|
+
}
|
|
510
|
+
function ensureCallSpan(args) {
|
|
511
|
+
var _a, _b;
|
|
512
|
+
const startTime = Date.now();
|
|
513
|
+
const state = (_a = sessions.get(args.sessionId)) !== null && _a !== void 0 ? _a : openSession({
|
|
514
|
+
sessionId: args.sessionId,
|
|
515
|
+
session: args.session,
|
|
516
|
+
channelId: args.session.channelId,
|
|
517
|
+
startTime,
|
|
518
|
+
restored: true,
|
|
519
|
+
});
|
|
520
|
+
const turn = (_b = state.turns.get(args.turnId)) !== null && _b !== void 0 ? _b : openTurn({
|
|
521
|
+
state,
|
|
522
|
+
sessionId: args.sessionId,
|
|
523
|
+
turnId: args.turnId,
|
|
524
|
+
session: args.session,
|
|
525
|
+
startTime,
|
|
526
|
+
synthetic: true,
|
|
527
|
+
});
|
|
528
|
+
return openToolSpan({
|
|
529
|
+
turn,
|
|
530
|
+
sessionId: args.sessionId,
|
|
531
|
+
turnId: args.turnId,
|
|
532
|
+
call: { callId: args.callId, toolName: args.toolName },
|
|
533
|
+
startTime,
|
|
534
|
+
});
|
|
535
|
+
}
|
|
469
536
|
function endOpenChildren(turn, endTime) {
|
|
470
537
|
for (const span of turn.tools.values()) {
|
|
471
538
|
span.end(endTime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ"}
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
* HTTP SERVER spans + W3C `traceparent` extraction for inbound requests.
|
|
3
3
|
*/
|
|
4
4
|
import { context, propagation, SpanKind, SpanStatusCode, trace, } from "@opentelemetry/api";
|
|
5
|
-
import {
|
|
6
|
-
let propagatorInstalled = false;
|
|
7
|
-
function ensurePropagator() {
|
|
8
|
-
if (propagatorInstalled) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
propagation.setGlobalPropagator(new W3CTraceContextPropagator());
|
|
12
|
-
propagatorInstalled = true;
|
|
13
|
-
}
|
|
5
|
+
import { ensureW3cPropagator } from "./propagation.js";
|
|
14
6
|
/**
|
|
15
7
|
* Instrument one inbound Node request: SERVER span, W3C extract, auto-end
|
|
16
8
|
* on response finish/close, run `fn` under the span context.
|
|
@@ -35,7 +27,7 @@ function startHttpSpan(runtime, req) {
|
|
|
35
27
|
if (runtime === undefined || runtime.config.traces === false) {
|
|
36
28
|
return undefined;
|
|
37
29
|
}
|
|
38
|
-
|
|
30
|
+
ensureW3cPropagator();
|
|
39
31
|
const headers = {};
|
|
40
32
|
for (const [key, value] of Object.entries(req.headers)) {
|
|
41
33
|
if (typeof value === "string") {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side MCP instrumentation: W3C / Cursor HTTP inject on Streamable
|
|
3
|
+
* HTTP + SSE fetches, SEP-414 `_meta.traceparent` on JSON-RPC params, and
|
|
4
|
+
* CLIENT spans for `tools/list` / `tools/call`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function instrumentedMcpFetch(base?: typeof fetch): typeof fetch;
|
|
7
|
+
/** SEP-414 / OTel MCP carrier for `params._meta`. */
|
|
8
|
+
export declare function mcpTraceMeta(): {
|
|
9
|
+
traceparent: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
export declare function runMcpClientSpan<T>(args: {
|
|
12
|
+
method: string;
|
|
13
|
+
connection: string;
|
|
14
|
+
toolName?: string;
|
|
15
|
+
}, fn: () => Promise<T>): Promise<T>;
|
|
16
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,OAAO,KAAa,GAAG,OAAO,KAAK,CAW7E;AAED,qDAAqD;AACrD,wBAAgB,YAAY,IAAI;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUlE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE;IACJ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAuBZ"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side MCP instrumentation: W3C / Cursor HTTP inject on Streamable
|
|
3
|
+
* HTTP + SSE fetches, SEP-414 `_meta.traceparent` on JSON-RPC params, and
|
|
4
|
+
* CLIENT spans for `tools/list` / `tools/call`.
|
|
5
|
+
*/
|
|
6
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
7
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
8
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
9
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
10
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
11
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
12
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
import { context, SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
|
|
16
|
+
import { formatTraceparent, injectActiveTraceContext } from "../../otel.js";
|
|
17
|
+
import { attrs } from "./attrs.js";
|
|
18
|
+
const TRACER = "agent_sdk";
|
|
19
|
+
export function instrumentedMcpFetch(base = fetch) {
|
|
20
|
+
return (input, init) => {
|
|
21
|
+
if (input instanceof Request && init === undefined) {
|
|
22
|
+
const headers = new Headers(input.headers);
|
|
23
|
+
injectActiveTraceContext(headers);
|
|
24
|
+
return base(new Request(input, { headers }));
|
|
25
|
+
}
|
|
26
|
+
const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
|
|
27
|
+
injectActiveTraceContext(headers);
|
|
28
|
+
return base(input, Object.assign(Object.assign({}, init), { headers }));
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** SEP-414 / OTel MCP carrier for `params._meta`. */
|
|
32
|
+
export function mcpTraceMeta() {
|
|
33
|
+
const span = trace.getSpan(context.active());
|
|
34
|
+
if (span === undefined) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const traceparent = formatTraceparent(span.spanContext());
|
|
38
|
+
if (traceparent === undefined) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return { traceparent };
|
|
42
|
+
}
|
|
43
|
+
export function runMcpClientSpan(args, fn) {
|
|
44
|
+
const span = trace.getTracer(TRACER).startSpan(args.method, {
|
|
45
|
+
kind: SpanKind.CLIENT,
|
|
46
|
+
attributes: attrs({
|
|
47
|
+
"rpc.system": "mcp",
|
|
48
|
+
"mcp.method.name": args.method,
|
|
49
|
+
"mcp.tool.name": args.toolName,
|
|
50
|
+
"agent_sdk.mcp.connection": args.connection,
|
|
51
|
+
}),
|
|
52
|
+
});
|
|
53
|
+
return context.with(trace.setSpan(context.active(), span), () => __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
try {
|
|
55
|
+
return yield fn();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
span.setStatus({
|
|
59
|
+
code: SpanStatusCode.ERROR,
|
|
60
|
+
message: error instanceof Error ? error.message : String(error),
|
|
61
|
+
});
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
span.end();
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/propagation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-global W3C `traceparent` propagator. Inbound HTTP extracts;
|
|
3
|
+
* outbound Factory / Cursor API calls inject.
|
|
4
|
+
*/
|
|
5
|
+
import { propagation } from "@opentelemetry/api";
|
|
6
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
7
|
+
let installed = false;
|
|
8
|
+
export function ensureW3cPropagator() {
|
|
9
|
+
if (installed) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
propagation.setGlobalPropagator(new W3CTraceContextPropagator());
|
|
13
|
+
installed = true;
|
|
14
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgCpE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/internal/otel/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgCpE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK1E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,WAAW,GAAG,SAAS,CA8BzB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -28,6 +28,7 @@ import { AggregationTemporality, MeterProvider, PeriodicExportingMetricReader, }
|
|
|
28
28
|
import { BatchSpanProcessor, NodeTracerProvider, ParentBasedSampler, TraceIdRatioBasedSampler, } from "@opentelemetry/sdk-trace-node";
|
|
29
29
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, } from "@opentelemetry/semantic-conventions";
|
|
30
30
|
import { exportersForSignal } from "./config.js";
|
|
31
|
+
import { ensureW3cPropagator } from "./propagation.js";
|
|
31
32
|
const INSTRUMENTATION = "agent_sdk";
|
|
32
33
|
export function createOtelRuntime(config, log) {
|
|
33
34
|
var _a;
|
|
@@ -38,6 +39,7 @@ export function createOtelRuntime(config, log) {
|
|
|
38
39
|
if (proto === "grpc") {
|
|
39
40
|
log("[agent-sdk:otel] OTEL_EXPORTER_OTLP_PROTOCOL=grpc is unsupported; using http/protobuf");
|
|
40
41
|
}
|
|
42
|
+
ensureW3cPropagator();
|
|
41
43
|
const sdk = startOtelSdk(config, log);
|
|
42
44
|
const meter = config.metrics === false
|
|
43
45
|
? undefined
|
|
@@ -523,6 +523,11 @@ export declare class SessionEngine {
|
|
|
523
523
|
hasActiveTurn(sessionId: string): boolean;
|
|
524
524
|
callActiveServerTool(sessionId: string, toolName: string, input: unknown): Promise<SDKCustomToolResult>;
|
|
525
525
|
private executeServerTool;
|
|
526
|
+
/**
|
|
527
|
+
* Bind outbound inject (Factory / Cursor API `traceparent`) to the
|
|
528
|
+
* tool span. No-op when OTel is off.
|
|
529
|
+
*/
|
|
530
|
+
private runToolExecute;
|
|
526
531
|
/**
|
|
527
532
|
* Park a server-tool call until a human approves or denies. Emits
|
|
528
533
|
* `action.approval_requested` / `action.approval_resolved` on the
|