@cursor/july 0.1.101 → 0.1.103
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/AGENTS.md +34 -32
- package/README.md +28 -3
- package/dist/ab.d.ts +1 -1
- package/dist/ab.js +1 -1
- package/dist/bin/agent-serve.d.ts +12 -12
- package/dist/bin/agent-serve.js +114 -36
- package/dist/channels/bitbucket/api.d.ts +176 -0
- package/dist/channels/bitbucket/api.d.ts.map +1 -0
- package/dist/channels/bitbucket/api.js +419 -0
- package/dist/channels/bitbucket/binding.d.ts +71 -0
- package/dist/channels/bitbucket/binding.d.ts.map +1 -0
- package/dist/channels/bitbucket/binding.js +269 -0
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +33 -0
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -0
- package/dist/channels/bitbucket/bitbucket-channel.js +120 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +61 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -0
- package/dist/channels/bitbucket/bitbucket-webhook.js +394 -0
- package/dist/channels/bitbucket/checks.d.ts +67 -0
- package/dist/channels/bitbucket/checks.d.ts.map +1 -0
- package/dist/channels/bitbucket/checks.js +102 -0
- package/dist/channels/bitbucket/cursor-account.d.ts +37 -0
- package/dist/channels/bitbucket/cursor-account.d.ts.map +1 -0
- package/dist/channels/bitbucket/cursor-account.js +65 -0
- package/dist/channels/bitbucket/defaults.d.ts +26 -0
- package/dist/channels/bitbucket/defaults.d.ts.map +1 -0
- package/dist/channels/bitbucket/defaults.js +73 -0
- package/dist/channels/bitbucket/events.d.ts +22 -0
- package/dist/channels/bitbucket/events.d.ts.map +1 -0
- package/dist/channels/bitbucket/events.js +64 -0
- package/dist/channels/bitbucket/index.d.ts +34 -0
- package/dist/channels/bitbucket/index.d.ts.map +1 -0
- package/dist/channels/bitbucket/index.js +33 -0
- package/dist/channels/bitbucket/replay.d.ts +63 -0
- package/dist/channels/bitbucket/replay.d.ts.map +1 -0
- package/dist/channels/bitbucket/replay.js +304 -0
- package/dist/channels/bitbucket/state.d.ts +35 -0
- package/dist/channels/bitbucket/state.d.ts.map +1 -0
- package/dist/channels/bitbucket/state.js +21 -0
- package/dist/channels/bitbucket/types.d.ts +229 -0
- package/dist/channels/bitbucket/types.d.ts.map +1 -0
- package/dist/channels/bitbucket/types.js +1 -0
- package/dist/channels/deployments/deployments-channel.d.ts +22 -14
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +25 -27
- package/dist/channels/deployments/types.d.ts +12 -6
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/github/binding.d.ts +6 -0
- package/dist/channels/github/binding.d.ts.map +1 -1
- package/dist/channels/github/binding.js +3 -3
- package/dist/channels/github/cursor-account.d.ts +7 -3
- package/dist/channels/github/cursor-account.d.ts.map +1 -1
- package/dist/channels/github/cursor-account.js +10 -6
- package/dist/channels/github/events.d.ts +1 -1
- package/dist/channels/github/events.js +1 -1
- package/dist/channels/github/forward.d.ts +1 -1
- package/dist/channels/github/forward.d.ts.map +1 -1
- package/dist/channels/github/forward.js +3 -2
- package/dist/channels/github/github-channel.d.ts +29 -39
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +68 -101
- package/dist/channels/github/replay.d.ts +1 -1
- package/dist/channels/github/replay.js +1 -1
- package/dist/channels/github/state.d.ts +2 -0
- package/dist/channels/github/state.d.ts.map +1 -1
- package/dist/channels/github/state.js +14 -11
- package/dist/channels/github/types.d.ts +2 -4
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.d.ts +91 -0
- package/dist/channels/gitlab/api.d.ts.map +1 -0
- package/dist/channels/gitlab/api.js +150 -0
- package/dist/channels/gitlab/binding.d.ts +58 -0
- package/dist/channels/gitlab/binding.d.ts.map +1 -0
- package/dist/channels/gitlab/binding.js +139 -0
- package/dist/channels/gitlab/checks.d.ts +110 -0
- package/dist/channels/gitlab/checks.d.ts.map +1 -0
- package/dist/channels/gitlab/checks.js +126 -0
- package/dist/channels/gitlab/cursor-account.d.ts +36 -0
- package/dist/channels/gitlab/cursor-account.d.ts.map +1 -0
- package/dist/channels/gitlab/cursor-account.js +65 -0
- package/dist/channels/gitlab/defaults.d.ts +25 -0
- package/dist/channels/gitlab/defaults.d.ts.map +1 -0
- package/dist/channels/gitlab/defaults.js +60 -0
- package/dist/channels/gitlab/events.d.ts +12 -0
- package/dist/channels/gitlab/events.d.ts.map +1 -0
- package/dist/channels/gitlab/events.js +28 -0
- package/dist/channels/gitlab/gitlab-channel.d.ts +33 -0
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -0
- package/dist/channels/gitlab/gitlab-channel.js +120 -0
- package/dist/channels/gitlab/gitlab-webhook.d.ts +45 -0
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -0
- package/dist/channels/gitlab/gitlab-webhook.js +397 -0
- package/dist/channels/gitlab/index.d.ts +31 -0
- package/dist/channels/gitlab/index.d.ts.map +1 -0
- package/dist/channels/gitlab/index.js +30 -0
- package/dist/channels/gitlab/replay.d.ts +105 -0
- package/dist/channels/gitlab/replay.d.ts.map +1 -0
- package/dist/channels/gitlab/replay.js +206 -0
- package/dist/channels/gitlab/state.d.ts +33 -0
- package/dist/channels/gitlab/state.d.ts.map +1 -0
- package/dist/channels/gitlab/state.js +23 -0
- package/dist/channels/gitlab/types.d.ts +214 -0
- package/dist/channels/gitlab/types.d.ts.map +1 -0
- package/dist/channels/gitlab/types.js +1 -0
- package/dist/channels/origin/api.d.ts.map +1 -1
- package/dist/channels/origin/api.js +4 -2
- package/dist/channels/origin/origin-channel.d.ts +4 -9
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +8 -48
- package/dist/channels/origin/types.d.ts +20 -2
- package/dist/channels/origin/types.d.ts.map +1 -1
- 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/eval-directive.d.ts.map +1 -1
- package/dist/channels/slack/eval-directive.js +1 -7
- 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/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +3 -3
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +2 -1
- package/dist/channels/slack/setup.d.ts +1 -1
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +6 -13
- package/dist/channels/slack/types.d.ts +1 -1
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels.d.ts +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/connections.d.ts +1 -1
- package/dist/connections.js +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.BASO9Kih.js → app.DW9pXkpL.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.nrl1ifBq.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DwkqxoE0.js → VPLocalSearchBox.CdEIUwDg.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CCil_13e.js → theme.YZMHgPgg.js} +2 -2
- package/dist/docs/assets/{concepts.md.lwAgBIMI.js → concepts.md.DgEcZOfT.js} +1 -1
- package/dist/docs/assets/{concepts.md.lwAgBIMI.lean.js → concepts.md.DgEcZOfT.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.CPzDAwoH.js → evals.md.CbMoebP1.js} +1 -1
- package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +9 -0
- package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.lean.js +1 -0
- package/dist/docs/assets/{guides_github.md.BtPr9GaP.js → guides_github.md.DKYiT9do.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.js → guides_opentelemetry.md.COh9jFVg.js} +7 -8
- package/dist/docs/assets/{guides_opentelemetry.md.BVTXDCRg.lean.js → guides_opentelemetry.md.COh9jFVg.lean.js} +1 -1
- package/dist/docs/assets/index.md.D75GWhPl.js +5 -0
- package/dist/docs/assets/{index.md.Bb4k8kUm.lean.js → index.md.D75GWhPl.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.js → reference_agent-config.md.CHNpiyp4.js} +3 -3
- package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.js → reference_channels.md.Dz8Cnudp.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.Cd2f2iyV.lean.js → reference_channels.md.Dz8Cnudp.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.DfoeyvL0.js → reference_cli.md.CJNc_xYK.js} +1 -1
- package/dist/docs/assets/reference_extensions.md.DykHW3qL.js +62 -0
- package/dist/docs/assets/reference_extensions.md.DykHW3qL.lean.js +1 -0
- package/dist/docs/assets/reference_hooks.md.Ddt5DdgJ.js +73 -0
- package/dist/docs/assets/{reference_hooks.md.a8BJxMR5.lean.js → reference_hooks.md.Ddt5DdgJ.lean.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.DnX5nL-B.js → reference_playground.md.4myJPxrf.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.js → reference_project-layout.md.DuBu9a96.js} +2 -2
- package/dist/docs/assets/{reference_project-layout.md.Bv4KOtlB.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +1 -1
- package/dist/docs/assets/reference_result.md.BK5SxDrf.js +19 -0
- package/dist/docs/assets/reference_result.md.BK5SxDrf.lean.js +1 -0
- package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.js → reference_sessions.md.CueyOHSL.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.NxFP_CAC.lean.js → reference_sessions.md.CueyOHSL.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.aGrn99hP.js} +2 -2
- package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.BTi817yv.lean.js → skills_framework-map.md.haibFyoB.lean.js} +1 -1
- package/dist/docs/assets/{skills_otel.md.CgiZryR3.js → skills_otel.md.CqhobH3B.js} +3 -3
- package/dist/docs/assets/{skills_otel.md.CgiZryR3.lean.js → skills_otel.md.CqhobH3B.lean.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.js → templates_pr-autofixer.md.Bds_XWcV.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.x5zl6-GT.lean.js → templates_pr-autofixer.md.Bds_XWcV.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 +5 -7
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/design/runtime-abstraction.md +2 -3
- package/dist/docs/evals.html +6 -6
- package/dist/docs/evals.md +9 -7
- 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 +91 -0
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +6 -6
- package/dist/docs/guides/github.md +0 -1
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +5 -5
- package/dist/docs/guides/opentelemetry.html +11 -12
- package/dist/docs/guides/opentelemetry.md +41 -17
- 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 +7 -3
- package/dist/docs/llms-full.txt +765 -209
- package/dist/docs/llms.txt +3 -1
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +8 -8
- package/dist/docs/reference/agent-config.md +6 -10
- package/dist/docs/reference/artifacts.html +5 -5
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/channels.md +18 -8
- package/dist/docs/reference/cli.html +5 -5
- package/dist/docs/reference/cli.md +3 -4
- package/dist/docs/reference/connections.html +4 -4
- package/dist/docs/reference/extensions.html +88 -0
- package/dist/docs/reference/extensions.md +264 -0
- package/dist/docs/reference/hooks.html +69 -10
- package/dist/docs/reference/hooks.md +215 -46
- package/dist/docs/reference/http-api.html +4 -4
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/playground.md +3 -0
- package/dist/docs/reference/project-layout.html +6 -6
- package/dist/docs/reference/project-layout.md +4 -0
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/result.html +45 -0
- package/dist/docs/reference/result.md +89 -0
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +5 -5
- package/dist/docs/reference/sessions.md +3 -1
- 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 +3 -2
- 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 +3 -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 +7 -7
- package/dist/docs/skills/otel.md +8 -3
- 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 +6 -6
- package/dist/docs/templates/pr-autofixer.md +0 -3
- 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/evals.d.ts +1 -1
- package/dist/evals.d.ts.map +1 -1
- 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 +54 -17
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +83 -15
- 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 +21 -4
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +38 -21
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/internal/ab-snapshot.d.ts.map +1 -1
- package/dist/internal/ab-snapshot.js +0 -1
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +1 -3
- package/dist/internal/authored-alias-hooks.d.ts +4 -13
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +4 -20
- package/dist/internal/authored-loaders.d.ts +2 -3
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +6 -20
- package/dist/internal/channel-dispatch.d.ts +43 -0
- package/dist/internal/channel-dispatch.d.ts.map +1 -0
- package/dist/internal/channel-dispatch.js +77 -0
- package/dist/internal/chat-client.d.ts +1 -1
- package/dist/internal/chat-client.js +1 -1
- package/dist/internal/cli-ax.d.ts +5 -5
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +5 -5
- package/dist/internal/cli-bitbucket.d.ts +33 -0
- package/dist/internal/cli-bitbucket.d.ts.map +1 -0
- package/dist/internal/cli-bitbucket.js +359 -0
- package/dist/internal/cli-convert-automation.d.ts +1 -1
- package/dist/internal/cli-convert-automation.js +2 -2
- package/dist/internal/cli-cursor.d.ts +1 -1
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +2 -4
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +2 -6
- package/dist/internal/cli-github.d.ts +1 -1
- package/dist/internal/cli-github.js +3 -3
- package/dist/internal/cli-gitlab.d.ts +37 -0
- package/dist/internal/cli-gitlab.d.ts.map +1 -0
- package/dist/internal/cli-gitlab.js +380 -0
- package/dist/internal/cli-mcp.d.ts.map +1 -1
- package/dist/internal/cli-mcp.js +2 -6
- 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 +2 -4
- package/dist/internal/continuation-channel.d.ts +14 -0
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +56 -3
- package/dist/internal/continuation-identity.d.ts +14 -15
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +182 -7
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +17 -18
- package/dist/internal/convert-automation/types.d.ts +1 -1
- package/dist/internal/convert-automation/types.js +1 -1
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +1 -3
- package/dist/internal/cursor/backend-client.d.ts +13 -5
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +30 -15
- package/dist/internal/cursor/bound-secret-file.d.ts +56 -0
- package/dist/internal/cursor/bound-secret-file.d.ts.map +1 -0
- package/dist/internal/cursor/bound-secret-file.js +88 -0
- package/dist/internal/cursor/credentials.d.ts +39 -5
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +58 -8
- package/dist/internal/cursor/hosted-bound-secrets.d.ts +41 -0
- package/dist/internal/cursor/hosted-bound-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-bound-secrets.js +54 -0
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts +19 -5
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-deployment-secrets.js +29 -9
- package/dist/internal/cursor/hosted-store-secrets.d.ts +12 -1
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +16 -1
- package/dist/internal/cursor-account-mcp-auth.d.ts.map +1 -1
- package/dist/internal/cursor-account-mcp-auth.js +2 -4
- package/dist/internal/cursor-deployment-relay.d.ts +6 -2
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
- package/dist/internal/cursor-deployment-relay.js +13 -9
- package/dist/internal/deploy-manifest.d.ts +1 -1
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +1 -1
- 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 +113 -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 +16 -0
- package/dist/internal/discovery/agent.d.ts.map +1 -0
- package/dist/internal/discovery/agent.js +255 -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 +13 -0
- package/dist/internal/discovery/connections.d.ts.map +1 -0
- package/dist/internal/discovery/connections.js +422 -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 +568 -0
- package/dist/internal/discovery/extension-overlay.d.ts +32 -0
- package/dist/internal/discovery/extension-overlay.d.ts.map +1 -0
- package/dist/internal/discovery/extension-overlay.js +191 -0
- package/dist/internal/discovery/extensions.d.ts +28 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -0
- package/dist/internal/discovery/extensions.js +375 -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 +61 -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 +147 -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 +107 -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 +37 -0
- package/dist/internal/discovery/project.d.ts +51 -0
- package/dist/internal/discovery/project.d.ts.map +1 -0
- package/dist/internal/discovery/project.js +293 -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 +97 -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 +118 -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 +21 -0
- package/dist/internal/discovery/services.d.ts.map +1 -0
- package/dist/internal/discovery/services.js +134 -0
- package/dist/internal/discovery/skills.d.ts +11 -0
- package/dist/internal/discovery/skills.d.ts.map +1 -0
- package/dist/internal/discovery/skills.js +156 -0
- package/dist/internal/discovery/subagent.d.ts +16 -0
- package/dist/internal/discovery/subagent.d.ts.map +1 -0
- package/dist/internal/discovery/subagent.js +128 -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 -63
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +6 -2504
- package/dist/internal/distribution.d.ts +10 -27
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +25 -73
- package/dist/internal/docs-site.js +1 -1
- package/dist/internal/eval-run-store.d.ts +0 -1
- package/dist/internal/eval-run-store.d.ts.map +1 -1
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.d.ts +8 -0
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +14 -14
- 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/github-fanout.d.ts +1 -1
- package/dist/internal/github-fanout.js +1 -1
- package/dist/internal/guest-network.d.ts +101 -0
- package/dist/internal/guest-network.d.ts.map +1 -0
- package/dist/internal/guest-network.js +304 -0
- package/dist/internal/host-otel.d.ts +3 -3
- package/dist/internal/host-otel.d.ts.map +1 -1
- package/dist/internal/host-otel.js +8 -4
- package/dist/internal/hosted-admission-adapter.d.ts +8 -7
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.d.ts +6 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +18 -5
- package/dist/internal/hosted-delivery.d.ts +18 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +248 -118
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +1 -3
- package/dist/internal/init-interview.d.ts.map +1 -1
- package/dist/internal/init-interview.js +1 -3
- package/dist/internal/init-project.d.ts +2 -2
- package/dist/internal/init-project.js +2 -2
- package/dist/internal/inline-stdio-define-stub.d.ts +1 -1
- package/dist/internal/inline-stdio-define-stub.d.ts.map +1 -1
- package/dist/internal/inline-stdio-define-stub.js +1 -1
- package/dist/internal/is-record.d.ts +2 -0
- package/dist/internal/is-record.d.ts.map +1 -0
- package/dist/internal/is-record.js +3 -0
- package/dist/internal/json-schema.d.ts.map +1 -1
- package/dist/internal/json-schema.js +18 -10
- package/dist/internal/local-control-plane.d.ts +1 -2
- package/dist/internal/local-control-plane.d.ts.map +1 -1
- package/dist/internal/local-control-plane.js +3 -20
- package/dist/internal/mcp-endpoint.d.ts.map +1 -1
- package/dist/internal/mcp-endpoint.js +1 -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 +22 -0
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +145 -126
- package/dist/internal/otel/config.d.ts +0 -2
- package/dist/internal/otel/config.d.ts.map +1 -1
- package/dist/internal/otel/config.js +17 -20
- package/dist/internal/otel/http.d.ts +2 -0
- package/dist/internal/otel/http.d.ts.map +1 -1
- package/dist/internal/otel/http.js +8 -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 +55 -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 +26 -1
- package/dist/internal/otel/runtime.d.ts.map +1 -1
- package/dist/internal/otel/runtime.js +166 -15
- package/dist/internal/package-inline-stdio.d.ts.map +1 -1
- package/dist/internal/package-inline-stdio.js +3 -11
- package/dist/internal/playground/toolchain.d.ts +1 -1
- package/dist/internal/playground/toolchain.d.ts.map +1 -1
- package/dist/internal/playground/toolchain.js +1 -1
- package/dist/internal/request-error-status.d.ts +12 -0
- package/dist/internal/request-error-status.d.ts.map +1 -0
- package/dist/internal/request-error-status.js +52 -0
- package/dist/internal/resolve-prod-target.d.ts +1 -1
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +3 -7
- package/dist/internal/result-output.d.ts +18 -0
- package/dist/internal/result-output.d.ts.map +1 -0
- package/dist/internal/result-output.js +33 -0
- package/dist/internal/run-client.d.ts +2 -2
- package/dist/internal/run-client.js +2 -2
- package/dist/internal/runtime-dispatch-runner.d.ts +1 -11
- package/dist/internal/runtime-dispatch-runner.d.ts.map +1 -1
- package/dist/internal/runtime-dispatch-runner.js +2 -15
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +3 -6
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +110 -35
- package/dist/internal/session-cost.d.ts +3 -3
- package/dist/internal/session-cost.d.ts.map +1 -1
- package/dist/internal/session-cost.js +3 -3
- package/dist/internal/session-engine.d.ts +31 -11
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +208 -102
- 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 +14 -17
- package/dist/internal/skills-sync.d.ts +1 -4
- package/dist/internal/skills-sync.d.ts.map +1 -1
- package/dist/internal/skills-sync.js +10 -50
- package/dist/internal/sleep.d.ts +2 -0
- package/dist/internal/sleep.d.ts.map +1 -0
- package/dist/internal/sleep.js +3 -0
- 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/store-mirror.d.ts +29 -0
- package/dist/internal/store-mirror.d.ts.map +1 -0
- package/dist/internal/store-mirror.js +70 -0
- package/dist/internal/tenant-slack/relay.d.ts +73 -0
- package/dist/internal/tenant-slack/relay.d.ts.map +1 -0
- package/dist/internal/tenant-slack/relay.js +138 -0
- package/dist/internal/testing/scm-continuation-fixtures.d.ts +33 -0
- package/dist/internal/testing/scm-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/scm-continuation-fixtures.js +253 -0
- 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/internal/workspace-sync.d.ts +22 -0
- package/dist/internal/workspace-sync.d.ts.map +1 -0
- package/dist/internal/workspace-sync.js +49 -0
- package/dist/internal/workspace.d.ts +7 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +13 -0
- package/dist/otel.d.ts +39 -1
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +118 -1
- package/dist/playground/assets/index-59KvgREd.js +67 -0
- package/dist/playground/assets/index-MbMxXg-y.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/result.d.ts +24 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +27 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +7 -4
- package/dist/storage-protocol.d.ts +24 -23
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +69 -68
- 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 +126 -23
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +7 -3
- package/docs/concepts.md +5 -7
- package/docs/design/runtime-abstraction.md +2 -3
- package/docs/evals.md +9 -7
- package/docs/guides/cloud-agents.md +96 -0
- package/docs/guides/github.md +0 -1
- package/docs/guides/opentelemetry.md +41 -17
- package/docs/reference/agent-config.md +6 -10
- package/docs/reference/channels.md +18 -8
- package/docs/reference/cli.md +3 -4
- package/docs/reference/extensions.md +269 -0
- package/docs/reference/hooks.md +215 -46
- package/docs/reference/playground.md +3 -0
- package/docs/reference/project-layout.md +4 -0
- package/docs/reference/result.md +94 -0
- package/docs/reference/sessions.md +3 -1
- package/docs/reference/skills.md +2 -0
- package/docs/reference/tools.md +3 -2
- package/docs/templates/pr-autofixer.md +0 -3
- package/package.json +29 -10
- package/skills/framework-map/SKILL.md +3 -0
- package/skills/otel/SKILL.md +8 -3
- package/src/ab.ts +1 -1
- package/src/bin/agent-serve.ts +121 -21
- package/src/channels/bitbucket/api.ts +623 -0
- package/src/channels/bitbucket/binding.ts +414 -0
- package/src/channels/bitbucket/bitbucket-channel.ts +182 -0
- package/src/channels/bitbucket/bitbucket-webhook.ts +576 -0
- package/src/channels/bitbucket/checks.ts +154 -0
- package/src/channels/bitbucket/cursor-account.ts +117 -0
- package/src/channels/bitbucket/defaults.ts +110 -0
- package/src/channels/bitbucket/events.ts +84 -0
- package/src/channels/bitbucket/index.ts +49 -0
- package/src/channels/bitbucket/replay.ts +439 -0
- package/src/channels/bitbucket/state.ts +59 -0
- package/src/channels/bitbucket/types.ts +266 -0
- package/src/channels/deployments/deployments-channel.ts +25 -43
- package/src/channels/deployments/types.ts +12 -6
- package/src/channels/github/binding.ts +8 -1
- package/src/channels/github/cursor-account.ts +17 -6
- package/src/channels/github/events.ts +1 -1
- package/src/channels/github/forward.ts +3 -2
- package/src/channels/github/github-channel.ts +74 -221
- package/src/channels/github/replay.ts +1 -1
- package/src/channels/github/state.ts +6 -0
- package/src/channels/github/types.ts +2 -5
- package/src/channels/gitlab/api.ts +228 -0
- package/src/channels/gitlab/binding.ts +233 -0
- package/src/channels/gitlab/checks.ts +243 -0
- package/src/channels/gitlab/cursor-account.ts +114 -0
- package/src/channels/gitlab/defaults.ts +93 -0
- package/src/channels/gitlab/events.ts +44 -0
- package/src/channels/gitlab/gitlab-channel.ts +176 -0
- package/src/channels/gitlab/gitlab-webhook.ts +555 -0
- package/src/channels/gitlab/index.ts +43 -0
- package/src/channels/gitlab/replay.ts +347 -0
- package/src/channels/gitlab/state.ts +55 -0
- package/src/channels/gitlab/types.ts +263 -0
- package/src/channels/origin/api.ts +4 -2
- package/src/channels/origin/origin-channel.ts +19 -94
- package/src/channels/origin/types.ts +23 -2
- 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/eval-directive.ts +1 -6
- package/src/channels/slack/inbound.ts +37 -0
- package/src/channels/slack/init.ts +6 -3
- package/src/channels/slack/manifest.ts +2 -1
- package/src/channels/slack/setup.ts +7 -6
- package/src/channels/slack/types.ts +1 -1
- package/src/channels.ts +0 -1
- package/src/client.ts +1 -1
- package/src/connections.ts +1 -1
- package/src/evals.ts +1 -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 +100 -15
- package/src/files-backends/cursor-hosted.ts +1 -17
- package/src/files.ts +64 -37
- package/src/index.ts +27 -26
- package/src/internal/ab-snapshot.ts +0 -3
- package/src/internal/advertise-tools.ts +1 -4
- package/src/internal/authored-alias-hooks.ts +4 -21
- package/src/internal/authored-loaders.ts +6 -23
- package/src/internal/channel-dispatch.ts +160 -0
- package/src/internal/chat-client.ts +1 -1
- package/src/internal/cli-ax.ts +5 -5
- package/src/internal/cli-bitbucket.ts +477 -0
- package/src/internal/cli-convert-automation.ts +7 -7
- package/src/internal/cli-cursor.ts +2 -5
- package/src/internal/cli-deploy.ts +2 -8
- package/src/internal/cli-github.ts +3 -3
- package/src/internal/cli-gitlab.ts +485 -0
- package/src/internal/cli-mcp.ts +2 -7
- package/src/internal/cli-slack.ts +2 -5
- package/src/internal/continuation-channel.ts +82 -1
- package/src/internal/continuation-identity.ts +229 -11
- package/src/internal/conversation-mirror.ts +27 -21
- package/src/internal/convert-automation/types.ts +1 -1
- package/src/internal/cursor/account-mcp.ts +1 -4
- package/src/internal/cursor/backend-client.ts +41 -20
- package/src/internal/cursor/bound-secret-file.ts +108 -0
- package/src/internal/cursor/credentials.ts +75 -10
- package/src/internal/cursor/hosted-bound-secrets.ts +75 -0
- package/src/internal/cursor/hosted-deployment-secrets.ts +42 -11
- package/src/internal/cursor/hosted-store-secrets.ts +28 -1
- package/src/internal/cursor-account-mcp-auth.ts +2 -5
- package/src/internal/cursor-deployment-relay.ts +11 -7
- package/src/internal/deploy-manifest.ts +4 -2
- package/src/internal/discovery/ab.ts +131 -0
- package/src/internal/discovery/agent-config.ts +222 -0
- package/src/internal/discovery/agent.ts +319 -0
- package/src/internal/discovery/channels.ts +105 -0
- package/src/internal/discovery/connections.ts +545 -0
- package/src/internal/discovery/context.ts +46 -0
- package/src/internal/discovery/cursor-plugin.ts +705 -0
- package/src/internal/discovery/extension-overlay.ts +274 -0
- package/src/internal/discovery/extensions.ts +573 -0
- package/src/internal/discovery/fs.ts +108 -0
- package/src/internal/discovery/hooks.ts +63 -0
- package/src/internal/discovery/info.ts +186 -0
- package/src/internal/discovery/instructions.ts +113 -0
- package/src/internal/discovery/modules.ts +113 -0
- package/src/internal/discovery/names.ts +45 -0
- package/src/internal/discovery/project.ts +341 -0
- package/src/internal/discovery/runtime.ts +158 -0
- package/src/internal/discovery/schedules.ts +120 -0
- package/src/internal/discovery/seed-files.ts +37 -0
- package/src/internal/discovery/services.ts +160 -0
- package/src/internal/discovery/skills.ts +186 -0
- package/src/internal/discovery/subagent.ts +136 -0
- package/src/internal/discovery/tools.ts +182 -0
- package/src/internal/discovery.ts +18 -3081
- package/src/internal/distribution.ts +35 -83
- package/src/internal/docs-site.ts +1 -1
- package/src/internal/eval-run-store.ts +0 -7
- package/src/internal/eval-runner.ts +0 -1
- package/src/internal/framework-file-storage.ts +14 -14
- package/src/internal/framework-storage-selection.ts +9 -9
- package/src/internal/frontmatter.ts +36 -3
- package/src/internal/github-fanout.ts +1 -1
- package/src/internal/guest-network.ts +383 -0
- package/src/internal/host-otel.ts +8 -4
- package/src/internal/hosted-admission-adapter.ts +8 -8
- package/src/internal/hosted-delivery-protocol.ts +26 -1
- package/src/internal/hosted-delivery.ts +376 -192
- package/src/internal/http-channel.ts +1 -4
- package/src/internal/init-interview.ts +1 -4
- package/src/internal/init-project.ts +2 -2
- package/src/internal/inline-stdio-define-stub.ts +1 -1
- package/src/internal/is-record.ts +3 -0
- package/src/internal/json-schema.ts +19 -10
- package/src/internal/local-control-plane.ts +5 -24
- package/src/internal/mcp-endpoint.ts +1 -4
- package/src/internal/mcp-host.ts +84 -31
- package/src/internal/otel/collector.ts +200 -165
- package/src/internal/otel/config.ts +10 -14
- package/src/internal/otel/http.ts +16 -13
- package/src/internal/otel/mcp.ts +56 -0
- package/src/internal/otel/propagation.ts +17 -0
- package/src/internal/otel/runtime.ts +242 -25
- package/src/internal/package-inline-stdio.ts +3 -12
- package/src/internal/playground/toolchain.ts +1 -1
- package/src/internal/request-error-status.ts +72 -0
- package/src/internal/resolve-prod-target.ts +3 -8
- package/src/internal/result-output.ts +34 -0
- package/src/internal/run-client.ts +2 -2
- package/src/internal/runtime-dispatch-runner.ts +3 -21
- package/src/internal/sdk-runner.ts +3 -7
- package/src/internal/server.ts +153 -44
- package/src/internal/session-cost.ts +3 -3
- package/src/internal/session-engine.ts +274 -81
- package/src/internal/session-run-log.ts +18 -20
- package/src/internal/skills-sync.ts +13 -63
- package/src/internal/sleep.ts +3 -0
- package/src/internal/start-log-store.ts +13 -16
- package/src/internal/storage-coordinator.ts +19 -16
- package/src/internal/store-mirror.ts +86 -0
- package/src/internal/tenant-slack/relay.ts +179 -0
- package/src/internal/testing/scm-continuation-fixtures.ts +286 -0
- 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/internal/workspace-sync.ts +55 -0
- package/src/internal/workspace.ts +14 -0
- package/src/otel.ts +180 -2
- package/src/result.ts +36 -0
- package/src/storage-backends/cursor-hosted.ts +7 -4
- package/src/storage-protocol.ts +102 -95
- package/src/storage.ts +4 -0
- package/src/tools.ts +18 -0
- package/src/types.ts +146 -34
- package/templates/triage/agent/lib/types.ts +0 -2
- package/dist/continuation.d.ts +0 -20
- package/dist/continuation.d.ts.map +0 -1
- package/dist/continuation.js +0 -18
- package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +0 -1
- package/dist/docs/assets/index.md.Bb4k8kUm.js +0 -5
- package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +0 -1
- package/dist/docs/guides/cloud-runtime.html +0 -35
- package/dist/docs/guides/cloud-runtime.md +0 -115
- 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/internal/convert-automation/index.d.ts +0 -3
- package/dist/internal/convert-automation/index.d.ts.map +0 -1
- package/dist/internal/convert-automation/index.js +0 -1
- package/dist/internal/grokbot/runner.d.ts +0 -64
- package/dist/internal/grokbot/runner.d.ts.map +0 -1
- package/dist/internal/grokbot/runner.js +0 -282
- package/dist/internal/managed-delivery.d.ts +0 -80
- package/dist/internal/managed-delivery.d.ts.map +0 -1
- package/dist/internal/managed-delivery.js +0 -86
- package/dist/internal/review-comments.d.ts +0 -370
- package/dist/internal/review-comments.d.ts.map +0 -1
- package/dist/internal/review-comments.js +0 -921
- package/dist/internal/shallow-clone.d.ts +0 -176
- package/dist/internal/shallow-clone.d.ts.map +0 -1
- package/dist/internal/shallow-clone.js +0 -419
- package/dist/playground/assets/index-BnNN1-EK.js +0 -69
- package/dist/playground/assets/index-DBQCwFp0.css +0 -1
- package/docs/guides/cloud-runtime.md +0 -120
- package/src/continuation.ts +0 -49
- 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/src/internal/convert-automation/index.ts +0 -10
- package/src/internal/grokbot/runner.ts +0 -370
- package/src/internal/managed-delivery.ts +0 -125
- package/src/internal/review-comments.ts +0 -1363
- package/src/internal/shallow-clone.ts +0 -609
- /package/dist/docs/assets/{evals.md.CPzDAwoH.lean.js → evals.md.CbMoebP1.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.BtPr9GaP.lean.js → guides_github.md.DKYiT9do.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.BHeYMgme.lean.js → reference_agent-config.md.CHNpiyp4.lean.js} +0 -0
- /package/dist/docs/assets/{reference_cli.md.DfoeyvL0.lean.js → reference_cli.md.CJNc_xYK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_playground.md.DnX5nL-B.lean.js → reference_playground.md.4myJPxrf.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.aGrn99hP.lean.js} +0 -0
|
@@ -27,6 +27,10 @@ export const CONTINUATION_SELECTORS = [
|
|
|
27
27
|
"origin.pr/v1",
|
|
28
28
|
"origin.pr/v2",
|
|
29
29
|
"origin.none/v2",
|
|
30
|
+
"gitlab.mr/v2",
|
|
31
|
+
"gitlab.none/v2",
|
|
32
|
+
"bitbucket.pr/v2",
|
|
33
|
+
"bitbucket.none/v2",
|
|
30
34
|
"deployments.none/v1",
|
|
31
35
|
"deployments.none/v2",
|
|
32
36
|
"deployments.deployment/v2",
|
|
@@ -62,6 +66,9 @@ export const BUILTINS = [
|
|
|
62
66
|
{
|
|
63
67
|
type: "origin-pr",
|
|
64
68
|
kind: "origin",
|
|
69
|
+
// Public webhook deliveries carry `pullRequest.number` + repository
|
|
70
|
+
// (`owner.slug` / `name`); keep in lockstep with the control plane's
|
|
71
|
+
// `conversation/origin.ts`.
|
|
65
72
|
events: [
|
|
66
73
|
"pull_request.created",
|
|
67
74
|
"pull_request.published",
|
|
@@ -71,9 +78,34 @@ export const BUILTINS = [
|
|
|
71
78
|
"pull_request.merged",
|
|
72
79
|
"pull_request.comment.created",
|
|
73
80
|
"pull_request.review.submitted",
|
|
81
|
+
"pull_request.metadata.updated",
|
|
74
82
|
],
|
|
75
83
|
format: "origin-pr:{fullName}#{number}",
|
|
76
84
|
},
|
|
85
|
+
{
|
|
86
|
+
type: "gitlab-mr",
|
|
87
|
+
kind: "gitlab",
|
|
88
|
+
// GitLab `object_kind`s that carry a merge request: `note` only when
|
|
89
|
+
// `noteable_type` is MergeRequest, `pipeline` only with `merge_request`.
|
|
90
|
+
events: ["merge_request", "note", "pipeline"],
|
|
91
|
+
format: "gitlab-mr:{fullName}!{number}",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: "bitbucket-pr",
|
|
95
|
+
kind: "bitbucket",
|
|
96
|
+
// Cloud vocabulary; Data Center keys are normalized before the stamp.
|
|
97
|
+
events: [
|
|
98
|
+
"pullrequest:created",
|
|
99
|
+
"pullrequest:updated",
|
|
100
|
+
"pullrequest:approved",
|
|
101
|
+
"pullrequest:unapproved",
|
|
102
|
+
"pullrequest:changes_request_created",
|
|
103
|
+
"pullrequest:fulfilled",
|
|
104
|
+
"pullrequest:rejected",
|
|
105
|
+
"pullrequest:comment_created",
|
|
106
|
+
],
|
|
107
|
+
format: "bitbucket-pr:{fullName}#{number}",
|
|
108
|
+
},
|
|
77
109
|
{
|
|
78
110
|
type: "deployment",
|
|
79
111
|
kind: "deployments",
|
|
@@ -101,6 +133,10 @@ const SELECTOR_FIELDS = {
|
|
|
101
133
|
"origin.pr/v1": { version: 1, type: "origin-pr", kind: "origin" },
|
|
102
134
|
"origin.pr/v2": { version: 2, type: "origin-pr", kind: "origin" },
|
|
103
135
|
"origin.none/v2": { version: 2, type: "none", kind: "origin" },
|
|
136
|
+
"gitlab.mr/v2": { version: 2, type: "gitlab-mr", kind: "gitlab" },
|
|
137
|
+
"gitlab.none/v2": { version: 2, type: "none", kind: "gitlab" },
|
|
138
|
+
"bitbucket.pr/v2": { version: 2, type: "bitbucket-pr", kind: "bitbucket" },
|
|
139
|
+
"bitbucket.none/v2": { version: 2, type: "none", kind: "bitbucket" },
|
|
104
140
|
"deployments.none/v1": { version: 1, type: "none", kind: "deployments" },
|
|
105
141
|
"deployments.none/v2": { version: 2, type: "none", kind: "deployments" },
|
|
106
142
|
"deployments.deployment/v2": {
|
|
@@ -111,7 +147,7 @@ const SELECTOR_FIELDS = {
|
|
|
111
147
|
"none/v1": { version: 1, type: "none", kind: "http" },
|
|
112
148
|
"none/v2": { version: 2, type: "none", kind: "http" },
|
|
113
149
|
};
|
|
114
|
-
|
|
150
|
+
function isContinuationSelector(value) {
|
|
115
151
|
return Object.hasOwn(SELECTOR_FIELDS, value);
|
|
116
152
|
}
|
|
117
153
|
export function defaultContinuationSelector(kind, version = "v1", eventTypes) {
|
|
@@ -136,12 +172,26 @@ export function defaultContinuationSelector(kind, version = "v1", eventTypes) {
|
|
|
136
172
|
return "slack.thread/v2";
|
|
137
173
|
case "origin":
|
|
138
174
|
return originV2Default(eventTypes);
|
|
175
|
+
case "gitlab":
|
|
176
|
+
return membershipOrNone(eventTypes, "gitlab-mr", "gitlab.mr/v2", "gitlab.none/v2");
|
|
177
|
+
case "bitbucket":
|
|
178
|
+
return membershipOrNone(eventTypes, "bitbucket-pr", "bitbucket.pr/v2", "bitbucket.none/v2");
|
|
139
179
|
case "deployments":
|
|
140
180
|
return deploymentsV2Default(eventTypes);
|
|
141
181
|
default:
|
|
142
182
|
return "none/v2";
|
|
143
183
|
}
|
|
144
184
|
}
|
|
185
|
+
/** Typed selector when every declared event is in the type's membership. */
|
|
186
|
+
function membershipOrNone(eventTypes, type, typed, none) {
|
|
187
|
+
var _a;
|
|
188
|
+
var _b;
|
|
189
|
+
const allowed = new Set((_b = (_a = builtinForType(type)) === null || _a === void 0 ? void 0 : _a.events) !== null && _b !== void 0 ? _b : []);
|
|
190
|
+
if ((eventTypes !== null && eventTypes !== void 0 ? eventTypes : []).some((event) => !allowed.has(event))) {
|
|
191
|
+
return none;
|
|
192
|
+
}
|
|
193
|
+
return typed;
|
|
194
|
+
}
|
|
145
195
|
function githubV2Default(eventTypes) {
|
|
146
196
|
var _a, _b;
|
|
147
197
|
var _c, _d;
|
|
@@ -166,6 +216,38 @@ function originV2Default(eventTypes) {
|
|
|
166
216
|
}
|
|
167
217
|
return "origin.pr/v2";
|
|
168
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Omitted `/v2` default became type `none` because a declared event sits
|
|
221
|
+
* outside the kind's typed membership. Validate warns; handshake stays
|
|
222
|
+
* silent on omitted selectors (type `none` is always admitted).
|
|
223
|
+
*/
|
|
224
|
+
export function omittedV2MembershipDowngrade(kind, eventTypes) {
|
|
225
|
+
const events = eventTypes !== null && eventTypes !== void 0 ? eventTypes : [];
|
|
226
|
+
if (events.length === 0) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
const selector = defaultContinuationSelector(kind, "v2", events);
|
|
230
|
+
const parsed = parseContinuationSelector(selector);
|
|
231
|
+
if (parsed === undefined || parsed.type !== "none") {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
const typed = kind === "github"
|
|
235
|
+
? builtinForType("pr")
|
|
236
|
+
: kind === "origin"
|
|
237
|
+
? builtinForType("origin-pr")
|
|
238
|
+
: kind === "deployments"
|
|
239
|
+
? builtinForType("deployment")
|
|
240
|
+
: undefined;
|
|
241
|
+
if (typed === undefined) {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
const allowed = new Set(typed.events);
|
|
245
|
+
const unexpected = events.filter((event) => !allowed.has(event));
|
|
246
|
+
if (unexpected.length === 0) {
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
return { selector, unexpected };
|
|
250
|
+
}
|
|
169
251
|
function deploymentsV2Default(eventTypes) {
|
|
170
252
|
var _a;
|
|
171
253
|
var _b;
|
|
@@ -182,7 +264,7 @@ export function parseContinuationSelector(selector) {
|
|
|
182
264
|
}
|
|
183
265
|
return Object.assign({ selector }, SELECTOR_FIELDS[selector]);
|
|
184
266
|
}
|
|
185
|
-
|
|
267
|
+
function resolveContinuation(raw, kind) {
|
|
186
268
|
const selector = raw !== null && raw !== void 0 ? raw : defaultContinuationSelector(kind);
|
|
187
269
|
const parsed = parseContinuationSelector(selector);
|
|
188
270
|
if (parsed === undefined) {
|
|
@@ -201,13 +283,13 @@ export function continuationSource(identity, kind) {
|
|
|
201
283
|
export function isV2DurableContinuationKey(key) {
|
|
202
284
|
return key.startsWith("cont:") || key.startsWith("evt:");
|
|
203
285
|
}
|
|
204
|
-
|
|
286
|
+
function newEvtKey() {
|
|
205
287
|
return `evt:${randomBytes(16).toString("hex")}`;
|
|
206
288
|
}
|
|
207
|
-
|
|
289
|
+
function builtinForType(type) {
|
|
208
290
|
return BUILTINS.find((builtin) => builtin.type === type);
|
|
209
291
|
}
|
|
210
|
-
|
|
292
|
+
function formatConversationKey(type, fields) {
|
|
211
293
|
switch (type) {
|
|
212
294
|
case "pr":
|
|
213
295
|
return `github-pr:${fields.fullName}#${fields.number}`;
|
|
@@ -215,6 +297,10 @@ export function formatConversationKey(type, fields) {
|
|
|
215
297
|
return `github-issue:${fields.fullName}#${fields.number}`;
|
|
216
298
|
case "origin-pr":
|
|
217
299
|
return `origin-pr:${fields.fullName}#${fields.number}`;
|
|
300
|
+
case "gitlab-mr":
|
|
301
|
+
return `gitlab-mr:${fields.fullName}!${fields.number}`;
|
|
302
|
+
case "bitbucket-pr":
|
|
303
|
+
return `bitbucket-pr:${fields.fullName}#${fields.number}`;
|
|
218
304
|
case "thread":
|
|
219
305
|
return `${fields.channelId}:${fields.threadTs}`;
|
|
220
306
|
case "deployment":
|
|
@@ -239,7 +325,9 @@ export function mintClaim(claim) {
|
|
|
239
325
|
}
|
|
240
326
|
case "pr":
|
|
241
327
|
case "issue":
|
|
242
|
-
case "origin-pr":
|
|
328
|
+
case "origin-pr":
|
|
329
|
+
case "gitlab-mr":
|
|
330
|
+
case "bitbucket-pr": {
|
|
243
331
|
const resource = claim.resource;
|
|
244
332
|
const fullName = "fullName" in resource
|
|
245
333
|
? resource.fullName
|
|
@@ -250,8 +338,14 @@ export function mintClaim(claim) {
|
|
|
250
338
|
if (fullName === undefined || number === undefined) {
|
|
251
339
|
throw new V2EngineError(`v2: ${claim.type} claim requires repository and number`);
|
|
252
340
|
}
|
|
341
|
+
// GitLab paths and Bitbucket project keys arrive in API-native casing;
|
|
342
|
+
// the webhook extractors lowercase them, so the claim must too or the
|
|
343
|
+
// two mint different keys for the same MR / PR.
|
|
344
|
+
const caseFolded = claim.type === "gitlab-mr" || claim.type === "bitbucket-pr"
|
|
345
|
+
? fullName.toLowerCase()
|
|
346
|
+
: fullName;
|
|
253
347
|
return `cont:${formatConversationKey(claim.type, {
|
|
254
|
-
fullName,
|
|
348
|
+
fullName: caseFolded,
|
|
255
349
|
number,
|
|
256
350
|
})}`;
|
|
257
351
|
}
|
|
@@ -319,6 +413,10 @@ export function extractContinuation(type, eventName, payload) {
|
|
|
319
413
|
return extractSlack(payload);
|
|
320
414
|
case "origin-pr":
|
|
321
415
|
return extractOrigin(payload);
|
|
416
|
+
case "gitlab-mr":
|
|
417
|
+
return extractGitlab(eventName, payload);
|
|
418
|
+
case "bitbucket-pr":
|
|
419
|
+
return extractBitbucket(payload);
|
|
322
420
|
case "deployment":
|
|
323
421
|
return extractDeployment(payload);
|
|
324
422
|
}
|
|
@@ -475,6 +573,83 @@ function originExtractRecord(payload) {
|
|
|
475
573
|
}
|
|
476
574
|
return record;
|
|
477
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* GitLab merge request identity: `project.path_with_namespace` (nested
|
|
578
|
+
* groups keep their slashes; lowercased like the scope key) plus the MR
|
|
579
|
+
* `iid`. `merge_request` reads `object_attributes.iid`; `note` binds only
|
|
580
|
+
* MR notes (`noteable_type: "MergeRequest"`); `pipeline` binds only when
|
|
581
|
+
* the payload carries a `merge_request`.
|
|
582
|
+
*/
|
|
583
|
+
function extractGitlab(eventName, payload) {
|
|
584
|
+
var _a, _b, _c, _d, _e, _f;
|
|
585
|
+
const record = asRecord(payload);
|
|
586
|
+
if (record === undefined) {
|
|
587
|
+
return undefined;
|
|
588
|
+
}
|
|
589
|
+
const fullName = (_b = nonEmpty((_a = asRecord(record.project)) === null || _a === void 0 ? void 0 : _a.path_with_namespace)) === null || _b === void 0 ? void 0 : _b.toLowerCase();
|
|
590
|
+
if (fullName === undefined) {
|
|
591
|
+
return undefined;
|
|
592
|
+
}
|
|
593
|
+
let number;
|
|
594
|
+
switch (eventName) {
|
|
595
|
+
case "merge_request":
|
|
596
|
+
number = positiveInt((_c = asRecord(record.object_attributes)) === null || _c === void 0 ? void 0 : _c.iid);
|
|
597
|
+
break;
|
|
598
|
+
case "note":
|
|
599
|
+
if (((_d = asRecord(record.object_attributes)) === null || _d === void 0 ? void 0 : _d.noteable_type) !== "MergeRequest") {
|
|
600
|
+
return undefined;
|
|
601
|
+
}
|
|
602
|
+
number = positiveInt((_e = asRecord(record.merge_request)) === null || _e === void 0 ? void 0 : _e.iid);
|
|
603
|
+
break;
|
|
604
|
+
case "pipeline":
|
|
605
|
+
number = positiveInt((_f = asRecord(record.merge_request)) === null || _f === void 0 ? void 0 : _f.iid);
|
|
606
|
+
break;
|
|
607
|
+
default:
|
|
608
|
+
return undefined;
|
|
609
|
+
}
|
|
610
|
+
if (number === undefined) {
|
|
611
|
+
return undefined;
|
|
612
|
+
}
|
|
613
|
+
return `cont:${formatConversationKey("gitlab-mr", { fullName, number })}`;
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Bitbucket pull request identity from either dialect. Cloud payloads carry
|
|
617
|
+
* `repository.full_name` + `pullrequest.id`; Data Center payloads carry
|
|
618
|
+
* `pullRequest.id` and the repo under `pullRequest.toRef.repository`
|
|
619
|
+
* (`project.key/slug`). Lowercased so a Cloud/DC pair for one logical PR
|
|
620
|
+
* shares a key.
|
|
621
|
+
*/
|
|
622
|
+
function extractBitbucket(payload) {
|
|
623
|
+
var _a;
|
|
624
|
+
var _b, _c;
|
|
625
|
+
const record = asRecord(payload);
|
|
626
|
+
if (record === undefined) {
|
|
627
|
+
return undefined;
|
|
628
|
+
}
|
|
629
|
+
const pullRequest = (_b = asRecord(record.pullrequest)) !== null && _b !== void 0 ? _b : asRecord(record.pullRequest);
|
|
630
|
+
const number = positiveInt(pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.id);
|
|
631
|
+
const fullName = bitbucketFullName((_c = asRecord(record.repository)) !== null && _c !== void 0 ? _c : asRecord((_a = asRecord(pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.toRef)) === null || _a === void 0 ? void 0 : _a.repository));
|
|
632
|
+
if (number === undefined || fullName === undefined) {
|
|
633
|
+
return undefined;
|
|
634
|
+
}
|
|
635
|
+
return `cont:${formatConversationKey("bitbucket-pr", { fullName, number })}`;
|
|
636
|
+
}
|
|
637
|
+
function bitbucketFullName(repository) {
|
|
638
|
+
var _a;
|
|
639
|
+
if (repository === undefined) {
|
|
640
|
+
return undefined;
|
|
641
|
+
}
|
|
642
|
+
const cloud = nonEmpty(repository.full_name);
|
|
643
|
+
if (cloud !== undefined) {
|
|
644
|
+
return cloud.toLowerCase();
|
|
645
|
+
}
|
|
646
|
+
const projectKey = nonEmpty((_a = asRecord(repository.project)) === null || _a === void 0 ? void 0 : _a.key);
|
|
647
|
+
const slug = nonEmpty(repository.slug);
|
|
648
|
+
if (projectKey === undefined || slug === undefined) {
|
|
649
|
+
return undefined;
|
|
650
|
+
}
|
|
651
|
+
return `${projectKey}/${slug}`.toLowerCase();
|
|
652
|
+
}
|
|
478
653
|
function extractDeployment(payload) {
|
|
479
654
|
const record = asRecord(payload);
|
|
480
655
|
const deploymentId = nonEmpty(record === null || record === void 0 ? void 0 : record.deploymentId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-mirror.d.ts","sourceRoot":"","sources":["../../src/internal/conversation-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"conversation-mirror.d.ts","sourceRoot":"","sources":["../../src/internal/conversation-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAA0B,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMhD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAYD,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,kBAAkB,CA6MpB;AA6ED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,GAAG,kBAAkB,GAAG,SAAS,CAqBjC"}
|
|
@@ -44,12 +44,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
44
44
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
47
|
+
import { agentSdkAgentStoreKeys } from "../files.js";
|
|
48
|
+
import { cursorHostedFiles } from "../files-backends/cursor-hosted.js";
|
|
49
49
|
import { mapBounded } from "./bounded.js";
|
|
50
50
|
import { resolveApiKeySync } from "./cursor/credentials.js";
|
|
51
|
-
import { AGENT_SERVE_GENERATION_ENV_VAR } from "./cursor-relay-core.js";
|
|
52
51
|
import { describeError } from "./describe-error.js";
|
|
52
|
+
import { resolveAgentV2Hosting } from "./v2-hosting.js";
|
|
53
53
|
/** Build a {@link ConversationMirror} over a {@link FileSink}. */
|
|
54
54
|
export function createConversationMirror(options) {
|
|
55
55
|
var _a;
|
|
@@ -139,7 +139,7 @@ export function createConversationMirror(options) {
|
|
|
139
139
|
if (bytes === null) {
|
|
140
140
|
continue;
|
|
141
141
|
}
|
|
142
|
-
yield sink.put(
|
|
142
|
+
yield sink.put(agentSdkAgentStoreKeys.conversationBlob(agentName, sdkAgentId, blobId), bytes);
|
|
143
143
|
// Content-addressed: once in the sink, never re-uploaded.
|
|
144
144
|
uploaded.add(blobId);
|
|
145
145
|
}
|
|
@@ -152,7 +152,7 @@ export function createConversationMirror(options) {
|
|
|
152
152
|
persistedAtMs: Date.now(),
|
|
153
153
|
};
|
|
154
154
|
// Manifest last: it only ever references blobs already uploaded.
|
|
155
|
-
yield sink.put(
|
|
155
|
+
yield sink.put(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId), new TextEncoder().encode(JSON.stringify(manifest)));
|
|
156
156
|
}));
|
|
157
157
|
},
|
|
158
158
|
hydrate(store, sdkAgentId) {
|
|
@@ -186,7 +186,7 @@ export function createConversationMirror(options) {
|
|
|
186
186
|
const bodies = yield mapBounded(manifest.blobIds, HYDRATE_DOWNLOAD_CONCURRENCY, (blobId) => __awaiter(this, void 0, void 0, function* () {
|
|
187
187
|
return ({
|
|
188
188
|
blobId,
|
|
189
|
-
body: yield sink.get(
|
|
189
|
+
body: yield sink.get(agentSdkAgentStoreKeys.conversationBlob(agentName, sdkAgentId, blobId)),
|
|
190
190
|
});
|
|
191
191
|
}));
|
|
192
192
|
const missing = bodies.filter((entry) => entry.body === undefined);
|
|
@@ -236,7 +236,7 @@ const HYDRATE_DOWNLOAD_CONCURRENCY = 8;
|
|
|
236
236
|
*/
|
|
237
237
|
function readManifest(sink, agentName, sdkAgentId) {
|
|
238
238
|
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
-
const body = yield sink.get(
|
|
239
|
+
const body = yield sink.get(agentSdkAgentStoreKeys.conversationManifest(agentName, sdkAgentId));
|
|
240
240
|
if (body === undefined) {
|
|
241
241
|
return { outcome: "miss" };
|
|
242
242
|
}
|
|
@@ -288,21 +288,20 @@ function listCheckpointBlobIds(store, sdkAgentId) {
|
|
|
288
288
|
* operator owns the disk), and v1 keeps today's behavior while it runs.
|
|
289
289
|
*/
|
|
290
290
|
export function selectConversationMirror(input) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
if (env[AGENT_SERVE_GENERATION_ENV_VAR] === undefined) {
|
|
291
|
+
const hosting = resolveAgentV2Hosting({
|
|
292
|
+
architecture: input.project.agent.architecture,
|
|
293
|
+
env: input.env,
|
|
294
|
+
});
|
|
295
|
+
if (hosting.kind !== "cursor-managed") {
|
|
297
296
|
return undefined;
|
|
298
297
|
}
|
|
299
|
-
const envSnapshot = env;
|
|
300
298
|
return createConversationMirror({
|
|
301
299
|
sink: cursorHostedFiles({
|
|
302
|
-
resolveStoreSourceId: () =>
|
|
303
|
-
// Full chain (env → key file → stored login): frozen
|
|
304
|
-
// unsigned and
|
|
305
|
-
// is constructed.
|
|
300
|
+
resolveStoreSourceId: () => hosting.resolveStoreIds().frameworkStoreSourceId,
|
|
301
|
+
// Full chain (env → key file → stored login), resolved lazily: frozen
|
|
302
|
+
// engines listen unsigned and only gain a credential at task time,
|
|
303
|
+
// after this sink is constructed. Hosted deliveries have consumed the
|
|
304
|
+
// bind file into CURSOR_API_KEY by then, so this resolves from env.
|
|
306
305
|
resolveApiKey: () => { var _a; return (_a = resolveApiKeySync()) === null || _a === void 0 ? void 0 : _a.apiKey; },
|
|
307
306
|
}),
|
|
308
307
|
agentName: input.project.name,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Types for `convertWorkflow` — the pure automation → agentsdk project
|
|
3
|
-
* converter behind `agent-
|
|
3
|
+
* converter behind `agent-sdk convert-automation`.
|
|
4
4
|
*
|
|
5
5
|
* The workflow arrives as generic proto3 JSON (lowerCamelCase field names,
|
|
6
6
|
* enum value names as strings) produced by the backend export endpoint
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Types for `convertWorkflow` — the pure automation → agentsdk project
|
|
3
|
-
* converter behind `agent-
|
|
3
|
+
* converter behind `agent-sdk convert-automation`.
|
|
4
4
|
*
|
|
5
5
|
* The workflow arrives as generic proto3 JSON (lowerCamelCase field names,
|
|
6
6
|
* enum value names as strings) produced by the backend export endpoint
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-mcp.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/account-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EAEX,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"account-mcp.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/account-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
28
28
|
import { bearerAuth } from "../../channels.js";
|
|
29
29
|
import { isCursorAccountTransport } from "../../types.js";
|
|
30
30
|
import { probeConnectorAuthUrls } from "../cursor-account-mcp-auth.js";
|
|
31
|
+
import { describeError } from "../describe-error.js";
|
|
31
32
|
import { LOG_PREFIX } from "../distribution.js";
|
|
32
33
|
import { handleStatelessMcpRequest } from "../mcp-endpoint.js";
|
|
33
34
|
import { isLoopbackAddress } from "../net.js";
|
|
@@ -384,9 +385,6 @@ function buildCatalog(servers) {
|
|
|
384
385
|
function trimTrailingSlash(url) {
|
|
385
386
|
return url.endsWith("/") ? url.slice(0, -1) : url;
|
|
386
387
|
}
|
|
387
|
-
function describeError(error) {
|
|
388
|
-
return error instanceof Error ? error.message : String(error);
|
|
389
|
-
}
|
|
390
388
|
const MAX_ERROR_DETAIL_CHARS = 72;
|
|
391
389
|
function truncateDetail(detail) {
|
|
392
390
|
const trimmed = detail.trim();
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Minimal Connect-JSON client for the handful of `aiserver.v1.DashboardService`
|
|
3
3
|
* RPCs agent-serve needs — `GetMe`, `ListSandMcpTools`, `ExecuteSandMcpTool`,
|
|
4
4
|
* and the login-time key lifecycle (`CreateUserApiKey`, `ListUserApiKeys`,
|
|
5
|
-
* `RevokeUserApiKey`).
|
|
5
|
+
* `RevokeUserApiKey`) — plus {@link CursorBackendClient.serviceRpc} for the
|
|
6
|
+
* odd unary call on another `aiserver.v1` service under the same token.
|
|
6
7
|
*
|
|
7
8
|
* Plain `fetch` POSTs with proto-JSON bodies and zod-validated responses:
|
|
8
9
|
* agent-serve is a published package and should not pull the generated
|
|
@@ -88,9 +89,10 @@ export interface CursorBackendClientOptions {
|
|
|
88
89
|
backendUrl: string;
|
|
89
90
|
apiKey: string;
|
|
90
91
|
/**
|
|
91
|
-
* Re-
|
|
92
|
-
* unsigned and
|
|
93
|
-
*
|
|
92
|
+
* Re-resolve the key on each authenticated call. Hosted freeze listens
|
|
93
|
+
* unsigned and only gains a credential at task time (hosted deliveries
|
|
94
|
+
* consume the bind file into `CURSOR_API_KEY` before authored work); a
|
|
95
|
+
* constructor-frozen key would miss that bind.
|
|
94
96
|
*/
|
|
95
97
|
getApiKey?: () => string;
|
|
96
98
|
logger?: (line: string) => void;
|
|
@@ -148,6 +150,12 @@ export declare class CursorBackendClient {
|
|
|
148
150
|
getGithubToken(repos: readonly string[], options?: {
|
|
149
151
|
permissions?: "read" | "pr-write" | "contents-write";
|
|
150
152
|
}): Promise<CursorGithubToken>;
|
|
153
|
+
/**
|
|
154
|
+
* One unary Connect-JSON call on `aiserver.v1.<service>` with the same
|
|
155
|
+
* token exchange and 401 retry as the dashboard RPCs. Callers parse the
|
|
156
|
+
* proto-JSON response themselves.
|
|
157
|
+
*/
|
|
158
|
+
serviceRpc(service: string, method: string, body: unknown, timeoutMs?: number): Promise<unknown>;
|
|
151
159
|
private rpc;
|
|
152
160
|
/**
|
|
153
161
|
* Serve a cached access token for the account, exchanging the API key
|
|
@@ -158,7 +166,7 @@ export declare class CursorBackendClient {
|
|
|
158
166
|
}
|
|
159
167
|
/**
|
|
160
168
|
* Mint a named user API key from a short-lived login session token. Used
|
|
161
|
-
* exactly once per `agent-
|
|
169
|
+
* exactly once per `agent-sdk login`; the session token is then discarded.
|
|
162
170
|
*/
|
|
163
171
|
export declare function createUserApiKeyWithSessionToken(args: {
|
|
164
172
|
backendUrl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-client.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/backend-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"backend-client.d.ts","sourceRoot":"","sources":["../../../src/internal/cursor/backend-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Minimal Connect-JSON client for the handful of `aiserver.v1.DashboardService`
|
|
3
3
|
* RPCs agent-serve needs — `GetMe`, `ListSandMcpTools`, `ExecuteSandMcpTool`,
|
|
4
4
|
* and the login-time key lifecycle (`CreateUserApiKey`, `ListUserApiKeys`,
|
|
5
|
-
* `RevokeUserApiKey`).
|
|
5
|
+
* `RevokeUserApiKey`) — plus {@link CursorBackendClient.serviceRpc} for the
|
|
6
|
+
* odd unary call on another `aiserver.v1` service under the same token.
|
|
6
7
|
*
|
|
7
8
|
* Plain `fetch` POSTs with proto-JSON bodies and zod-validated responses:
|
|
8
9
|
* agent-serve is a published package and should not pull the generated
|
|
@@ -23,10 +24,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
23
24
|
};
|
|
24
25
|
import { randomUUID } from "node:crypto";
|
|
25
26
|
import { z } from "zod";
|
|
27
|
+
import { describeError } from "../describe-error.js";
|
|
28
|
+
import { CLI_COMMAND_NAME as CLI } from "../distribution.js";
|
|
26
29
|
import { boundedToolAnnotations } from "../mcp-host.js";
|
|
27
30
|
import { CURSOR_SESSION_EXCHANGE_PATH, CursorSessionExchangeError, exchangeCursorApiKeyForSession, SESSION_TOKEN_EXPIRY_LEEWAY_MS, } from "./session-token.js";
|
|
28
31
|
const CLIENT_VERSION = "agent-serve-0.1.0";
|
|
29
|
-
const
|
|
32
|
+
const DASHBOARD_SERVICE = "DashboardService";
|
|
30
33
|
const LIST_TIMEOUT_MS = 60000;
|
|
31
34
|
/** Backend-executed tools call out to third-party servers; be generous. */
|
|
32
35
|
const EXECUTE_TIMEOUT_MS = 120000;
|
|
@@ -144,11 +147,11 @@ const executeResponseSchema = z.object({
|
|
|
144
147
|
// Shared request machinery (used by the client and the login-time mint)
|
|
145
148
|
// ============================================================================
|
|
146
149
|
/** One DashboardService Connect-JSON POST; auth is the caller's bearer. */
|
|
147
|
-
function
|
|
150
|
+
function connectRpc(args) {
|
|
148
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
149
152
|
var _a;
|
|
150
153
|
try {
|
|
151
|
-
return yield args.fetchImpl(`${args.backendUrl}
|
|
154
|
+
return yield args.fetchImpl(`${args.backendUrl}/aiserver.v1.${args.service}/${args.method}`, {
|
|
152
155
|
method: "POST",
|
|
153
156
|
headers: Object.assign({ "content-type": "application/json", authorization: `Bearer ${args.bearer}`, "x-ghost-mode": "true", "x-cursor-client-version": CLIENT_VERSION, "x-cursor-client-type": "agent-serve", "x-request-id": randomUUID() }, args.extraHeaders),
|
|
154
157
|
body: JSON.stringify((_a = args.body) !== null && _a !== void 0 ? _a : {}),
|
|
@@ -313,16 +316,27 @@ export class CursorBackendClient {
|
|
|
313
316
|
return githubTokenResponseSchema.parse(parsed);
|
|
314
317
|
});
|
|
315
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* One unary Connect-JSON call on `aiserver.v1.<service>` with the same
|
|
321
|
+
* token exchange and 401 retry as the dashboard RPCs. Callers parse the
|
|
322
|
+
* proto-JSON response themselves.
|
|
323
|
+
*/
|
|
324
|
+
serviceRpc(service, method, body, timeoutMs = LIST_TIMEOUT_MS) {
|
|
325
|
+
return this.rpc(method, body, timeoutMs, { service });
|
|
326
|
+
}
|
|
316
327
|
rpc(method_1, body_1) {
|
|
317
328
|
return __awaiter(this, arguments, void 0, function* (method, body, timeoutMs = LIST_TIMEOUT_MS, options) {
|
|
318
329
|
var _a, _b;
|
|
330
|
+
var _c;
|
|
331
|
+
const service = (_c = options === null || options === void 0 ? void 0 : options.service) !== null && _c !== void 0 ? _c : DASHBOARD_SERVICE;
|
|
319
332
|
const extraHeaders = (options === null || options === void 0 ? void 0 : options.teamId) === undefined
|
|
320
333
|
? undefined
|
|
321
334
|
: { "x-cursor-team-id": String(options.teamId) };
|
|
322
335
|
const bearer = yield this.getAccessToken();
|
|
323
|
-
const first = yield
|
|
336
|
+
const first = yield connectRpc({
|
|
324
337
|
fetchImpl: this.fetchImpl,
|
|
325
338
|
backendUrl: this.backendUrl,
|
|
339
|
+
service,
|
|
326
340
|
method,
|
|
327
341
|
bearer,
|
|
328
342
|
body,
|
|
@@ -340,9 +354,10 @@ export class CursorBackendClient {
|
|
|
340
354
|
this.token = undefined;
|
|
341
355
|
}
|
|
342
356
|
const retryBearer = yield this.getAccessToken();
|
|
343
|
-
const second = yield
|
|
357
|
+
const second = yield connectRpc({
|
|
344
358
|
fetchImpl: this.fetchImpl,
|
|
345
359
|
backendUrl: this.backendUrl,
|
|
360
|
+
service,
|
|
346
361
|
method,
|
|
347
362
|
bearer: retryBearer,
|
|
348
363
|
body,
|
|
@@ -402,7 +417,7 @@ export class CursorBackendClient {
|
|
|
402
417
|
throw new CursorBackendError("Cursor API key exchange returned no access token.");
|
|
403
418
|
}
|
|
404
419
|
throw new CursorBackendError(error.status === 401
|
|
405
|
-
?
|
|
420
|
+
? `The Cursor API key was rejected. Run \`${CLI} login\` again or update CURSOR_API_KEY.`
|
|
406
421
|
: `Cursor API key exchange failed (${error.status}).`, error.status);
|
|
407
422
|
}
|
|
408
423
|
throw error;
|
|
@@ -416,16 +431,17 @@ export class CursorBackendClient {
|
|
|
416
431
|
}
|
|
417
432
|
/**
|
|
418
433
|
* Mint a named user API key from a short-lived login session token. Used
|
|
419
|
-
* exactly once per `agent-
|
|
434
|
+
* exactly once per `agent-sdk login`; the session token is then discarded.
|
|
420
435
|
*/
|
|
421
436
|
export function createUserApiKeyWithSessionToken(args) {
|
|
422
437
|
return __awaiter(this, void 0, void 0, function* () {
|
|
423
438
|
var _a;
|
|
424
|
-
const response = yield
|
|
439
|
+
const response = yield connectRpc({
|
|
425
440
|
fetchImpl: (_a = args.fetchImpl) !== null && _a !== void 0 ? _a : fetch,
|
|
426
441
|
backendUrl: args.backendUrl.endsWith("/")
|
|
427
442
|
? args.backendUrl.slice(0, -1)
|
|
428
443
|
: args.backendUrl,
|
|
444
|
+
service: DASHBOARD_SERVICE,
|
|
429
445
|
method: "CreateUserApiKey",
|
|
430
446
|
bearer: args.sessionToken,
|
|
431
447
|
body: { name: args.keyName },
|
|
@@ -463,9 +479,10 @@ export function revokeMintedUserApiKey(args) {
|
|
|
463
479
|
const backendUrl = args.backendUrl.endsWith("/")
|
|
464
480
|
? args.backendUrl.slice(0, -1)
|
|
465
481
|
: args.backendUrl;
|
|
466
|
-
const listResponse = yield
|
|
482
|
+
const listResponse = yield connectRpc({
|
|
467
483
|
fetchImpl,
|
|
468
484
|
backendUrl,
|
|
485
|
+
service: DASHBOARD_SERVICE,
|
|
469
486
|
method: "ListUserApiKeys",
|
|
470
487
|
bearer: args.sessionToken,
|
|
471
488
|
body: {},
|
|
@@ -479,9 +496,10 @@ export function revokeMintedUserApiKey(args) {
|
|
|
479
496
|
// lagging replica — skip rather than touch any other key.
|
|
480
497
|
return;
|
|
481
498
|
}
|
|
482
|
-
const revokeResponse = yield
|
|
499
|
+
const revokeResponse = yield connectRpc({
|
|
483
500
|
fetchImpl,
|
|
484
501
|
backendUrl,
|
|
502
|
+
service: DASHBOARD_SERVICE,
|
|
485
503
|
method: "RevokeUserApiKey",
|
|
486
504
|
bearer: args.sessionToken,
|
|
487
505
|
body: { id: match.id },
|
|
@@ -608,7 +626,7 @@ const MAX_GITHUB_TOKEN_RETRY_AFTER_MS = 60 * 60000;
|
|
|
608
626
|
function describeGithubTokenHttpFailure(status, bodyText) {
|
|
609
627
|
const detail = githubTokenErrorFromBody(bodyText);
|
|
610
628
|
if (status === 401) {
|
|
611
|
-
return `The Cursor API key was rejected${detail === undefined ? "" : `: ${detail}`}. Run
|
|
629
|
+
return `The Cursor API key was rejected${detail === undefined ? "" : `: ${detail}`}. Run \`${CLI} login\` again or update CURSOR_API_KEY.`;
|
|
612
630
|
}
|
|
613
631
|
if (detail !== undefined) {
|
|
614
632
|
return detail;
|
|
@@ -638,9 +656,6 @@ function retryAfterMsFromResponse(response) {
|
|
|
638
656
|
}
|
|
639
657
|
return Math.min(retryAfter * 1000, MAX_GITHUB_TOKEN_RETRY_AFTER_MS);
|
|
640
658
|
}
|
|
641
|
-
function describeError(error) {
|
|
642
|
-
return error instanceof Error ? error.message : String(error);
|
|
643
|
-
}
|
|
644
659
|
/** Release undici/fetch connection slots on responses we will not parse. */
|
|
645
660
|
function drainResponseBody(response) {
|
|
646
661
|
return __awaiter(this, void 0, void 0, function* () {
|