@cursor/july 0.1.102 → 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 +10 -12
- 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/eval-directive.d.ts.map +1 -1
- package/dist/channels/slack/eval-directive.js +1 -7
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +3 -3
- 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.CLA03RCz.js → app.DW9pXkpL.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.nrl1ifBq.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.ifxv-cJV.js → VPLocalSearchBox.CdEIUwDg.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DWCwM6p-.js → theme.YZMHgPgg.js} +2 -2
- package/dist/docs/assets/concepts.md.DgEcZOfT.js +1 -0
- package/dist/docs/assets/{concepts.md.rPzW2HZN.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_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.Kiht7ell.js → index.md.D75GWhPl.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.9WQMZe1l.js → reference_extensions.md.DykHW3qL.js} +11 -5
- 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.CA6QP6Lw.js → reference_project-layout.md.DuBu9a96.js} +2 -2
- 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_tools.md.B1up2r9W.js → reference_tools.md.aGrn99hP.js} +1 -1
- package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +1 -0
- 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 +2 -4
- 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 +6 -6
- package/dist/docs/guides/cloud-agents.md +4 -6
- 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 +10 -11
- 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 +2 -2
- package/dist/docs/llms-full.txt +501 -262
- package/dist/docs/llms.txt +2 -2
- 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 +16 -10
- package/dist/docs/reference/extensions.md +86 -22
- 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 +2 -1
- 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 +4 -4
- package/dist/docs/reference/subagents.html +4 -4
- package/dist/docs/reference/tools.html +5 -5
- package/dist/docs/reference/tools.md +1 -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 -1
- 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.d.ts +20 -7
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +36 -5
- package/dist/files.d.ts +16 -3
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +16 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- 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 +4 -3
- 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 +5 -4
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +5 -6
- 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 +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +1 -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 +1 -1
- package/dist/internal/discovery/ab.d.ts.map +1 -1
- package/dist/internal/discovery/ab.js +21 -9
- package/dist/internal/discovery/agent.d.ts +6 -1
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +65 -116
- package/dist/internal/discovery/channels.d.ts +1 -1
- package/dist/internal/discovery/channels.d.ts.map +1 -1
- package/dist/internal/discovery/channels.js +14 -14
- package/dist/internal/discovery/connections.d.ts +1 -5
- package/dist/internal/discovery/connections.d.ts.map +1 -1
- package/dist/internal/discovery/connections.js +30 -44
- package/dist/internal/discovery/cursor-plugin.d.ts.map +1 -1
- package/dist/internal/discovery/cursor-plugin.js +1 -3
- 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 +11 -2
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +211 -74
- package/dist/internal/discovery/hooks.d.ts +1 -1
- package/dist/internal/discovery/hooks.d.ts.map +1 -1
- package/dist/internal/discovery/hooks.js +15 -2
- package/dist/internal/discovery/info.d.ts.map +1 -1
- package/dist/internal/discovery/info.js +7 -1
- package/dist/internal/discovery/modules.d.ts.map +1 -1
- package/dist/internal/discovery/modules.js +8 -2
- package/dist/internal/discovery/names.d.ts +1 -1
- package/dist/internal/discovery/names.d.ts.map +1 -1
- package/dist/internal/discovery/names.js +1 -0
- package/dist/internal/discovery/project.d.ts +0 -2
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +64 -10
- package/dist/internal/discovery/runtime.d.ts.map +1 -1
- package/dist/internal/discovery/runtime.js +1 -2
- package/dist/internal/discovery/schedules.d.ts +1 -1
- package/dist/internal/discovery/schedules.d.ts.map +1 -1
- package/dist/internal/discovery/schedules.js +23 -2
- package/dist/internal/discovery/services.d.ts +6 -2
- package/dist/internal/discovery/services.d.ts.map +1 -1
- package/dist/internal/discovery/services.js +31 -1
- package/dist/internal/discovery/skills.d.ts +1 -6
- package/dist/internal/discovery/skills.d.ts.map +1 -1
- package/dist/internal/discovery/skills.js +8 -3
- package/dist/internal/discovery/subagent.d.ts +3 -0
- package/dist/internal/discovery/subagent.d.ts.map +1 -1
- package/dist/internal/discovery/subagent.js +109 -0
- package/dist/internal/discovery.d.ts +1 -2
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +1 -2
- 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 +8 -8
- 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/otel/collector.d.ts +12 -3
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +77 -125
- 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 +7 -1
- package/dist/internal/otel/mcp.d.ts.map +1 -1
- package/dist/internal/otel/mcp.js +3 -16
- 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 +164 -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 +26 -11
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +146 -76
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +1 -3
- 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/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/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 +23 -1
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +93 -2
- 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.map +1 -1
- package/dist/storage-protocol.js +1 -3
- package/dist/types.d.ts +90 -23
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +2 -2
- package/docs/concepts.md +2 -4
- package/docs/design/runtime-abstraction.md +2 -3
- package/docs/evals.md +9 -7
- package/docs/guides/cloud-agents.md +4 -6
- 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 +87 -23
- package/docs/reference/hooks.md +215 -46
- package/docs/reference/playground.md +3 -0
- package/docs/reference/project-layout.md +2 -1
- package/docs/reference/result.md +94 -0
- package/docs/reference/sessions.md +3 -1
- package/docs/reference/tools.md +1 -2
- package/docs/templates/pr-autofixer.md +0 -3
- package/package.json +29 -10
- package/skills/framework-map/SKILL.md +3 -1
- 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/eval-directive.ts +1 -6
- package/src/channels/slack/init.ts +6 -3
- 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.ts +47 -5
- package/src/files.ts +21 -3
- package/src/index.ts +20 -28
- 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 +4 -3
- 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 +9 -10
- 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 +1 -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 +29 -9
- package/src/internal/discovery/agent.ts +94 -135
- package/src/internal/discovery/channels.ts +15 -13
- package/src/internal/discovery/connections.ts +55 -50
- package/src/internal/discovery/cursor-plugin.ts +1 -4
- package/src/internal/discovery/extension-overlay.ts +274 -0
- package/src/internal/discovery/extensions.ts +330 -105
- package/src/internal/discovery/hooks.ts +20 -2
- package/src/internal/discovery/info.ts +7 -0
- package/src/internal/discovery/modules.ts +8 -2
- package/src/internal/discovery/names.ts +2 -1
- package/src/internal/discovery/project.ts +80 -9
- package/src/internal/discovery/runtime.ts +1 -2
- package/src/internal/discovery/schedules.ts +28 -2
- package/src/internal/discovery/services.ts +37 -1
- package/src/internal/discovery/skills.ts +13 -3
- package/src/internal/discovery/subagent.ts +107 -0
- package/src/internal/discovery.ts +0 -2
- 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 +8 -8
- 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/otel/collector.ts +94 -159
- package/src/internal/otel/config.ts +10 -14
- package/src/internal/otel/http.ts +14 -1
- package/src/internal/otel/mcp.ts +3 -16
- package/src/internal/otel/runtime.ts +240 -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 +182 -74
- package/src/internal/session-run-log.ts +1 -4
- package/src/internal/skills-sync.ts +13 -63
- package/src/internal/sleep.ts +3 -0
- 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/workspace-sync.ts +55 -0
- package/src/internal/workspace.ts +14 -0
- package/src/otel.ts +143 -3
- package/src/result.ts +36 -0
- package/src/storage-backends/cursor-hosted.ts +7 -4
- package/src/storage-protocol.ts +1 -4
- package/src/types.ts +105 -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.FAqdWIXo.js +0 -1
- package/dist/docs/assets/concepts.md.rPzW2HZN.js +0 -1
- package/dist/docs/assets/guides_cloud-agents.md.DumwWXba.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BRirbRAN.lean.js +0 -1
- package/dist/docs/assets/reference_extensions.md.9WQMZe1l.lean.js +0 -1
- package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +0 -14
- package/dist/docs/assets/skills_framework-map.md.DDa4MeEW.js +0 -1
- package/dist/docs/guides/cloud-runtime.html +0 -35
- package/dist/docs/guides/cloud-runtime.md +0 -117
- 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-B6C9S9nG.css +0 -1
- package/dist/playground/assets/index-ZqNoT8Ie.js +0 -69
- package/docs/guides/cloud-runtime.md +0 -122
- package/src/continuation.ts +0 -49
- 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_cloud-agents.md.DumwWXba.lean.js → guides_cloud-agents.md.DS8RIjwx.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/{index.md.Kiht7ell.lean.js → index.md.D75GWhPl.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_project-layout.md.CA6QP6Lw.lean.js → reference_project-layout.md.DuBu9a96.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.B1up2r9W.lean.js → reference_tools.md.aGrn99hP.lean.js} +0 -0
- /package/dist/docs/assets/{skills_framework-map.md.DDa4MeEW.lean.js → skills_framework-map.md.haibFyoB.lean.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relay-backed Slack posting for managed deployments.
|
|
3
|
+
*
|
|
4
|
+
* On AgentSDK v2 managed deployments the fork never receives a Slack token.
|
|
5
|
+
* The delivery envelope carries the matched automation's configured Slack
|
|
6
|
+
* **channel ids** only (`managedAutomation.slackChannels`, absent when the
|
|
7
|
+
* customer toggled "Send to Slack" off); each post goes through the control
|
|
8
|
+
* plane's Slack relay
|
|
9
|
+
* (`/internal/agent-serve/agent-sdk-slack-relay/:automationUuid`),
|
|
10
|
+
* authenticated with the pod's own `CURSOR_API_KEY`. The relay re-checks
|
|
11
|
+
* that the channel is configured on exactly that automation, renders the
|
|
12
|
+
* markdown, and posts as the Cursor Slack app with the customer's stored
|
|
13
|
+
* workspace token.
|
|
14
|
+
*
|
|
15
|
+
* INTERNAL: first-party multi-tenant deployment plumbing. Deliberately
|
|
16
|
+
* excluded from the published `@cursor/july` npm package (see the `files`
|
|
17
|
+
* whitelist); consumed by internal deployments via relative source imports.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Path prefix of the backend relay route. Must match the mount in
|
|
21
|
+
* `backend/server/src/agentServe/agentServeEndpoints.ts`
|
|
22
|
+
* (`agentSdkSlackRelayRoutes`).
|
|
23
|
+
*/
|
|
24
|
+
export declare const AGENT_SDK_SLACK_RELAY_PATH_PREFIX = "/internal/agent-serve/agent-sdk-slack-relay";
|
|
25
|
+
/** Mirrors the relay's body bound; longer summaries are truncated client-side. */
|
|
26
|
+
export declare const AGENT_SDK_SLACK_RELAY_MAX_MESSAGE_CHARS = 12000;
|
|
27
|
+
/**
|
|
28
|
+
* Relay URL scoped to the source managed automation the delivery envelope
|
|
29
|
+
* attributed, so the relay checks the destination against exactly that
|
|
30
|
+
* automation's configured channels.
|
|
31
|
+
*/
|
|
32
|
+
export declare function relaySlackPostUrl(args: {
|
|
33
|
+
baseUrl: string;
|
|
34
|
+
automationUuid: string;
|
|
35
|
+
}): string;
|
|
36
|
+
export type RelaySlackPostResult = {
|
|
37
|
+
ok: true;
|
|
38
|
+
channel: string;
|
|
39
|
+
ts?: string;
|
|
40
|
+
permalink?: string;
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
channel: string;
|
|
44
|
+
/** HTTP status from the relay, or 0 when the request never completed. */
|
|
45
|
+
status: number;
|
|
46
|
+
error: string;
|
|
47
|
+
};
|
|
48
|
+
export interface RelaySlackPostTarget {
|
|
49
|
+
relayBaseUrl: string;
|
|
50
|
+
apiKey: string;
|
|
51
|
+
}
|
|
52
|
+
/** Pod credential + external API base URL, or undefined off-platform. */
|
|
53
|
+
export declare function resolveRelaySlackTarget(): RelaySlackPostTarget | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Post one markdown message to one configured channel through the relay.
|
|
56
|
+
* Never throws: every failure is a `{ ok: false }` result so product code
|
|
57
|
+
* can log and continue (a Slack outage must not fail the review).
|
|
58
|
+
*/
|
|
59
|
+
export declare function postRelaySlackMessage(args: {
|
|
60
|
+
/** Source managed automation uuid from the delivery envelope. */
|
|
61
|
+
automationUuid: string;
|
|
62
|
+
/** Configured channel id (from `managedAutomation.slackChannels`). */
|
|
63
|
+
channel: string;
|
|
64
|
+
/** Markdown body. */
|
|
65
|
+
message: string;
|
|
66
|
+
/** Parent message ts to reply in a thread. */
|
|
67
|
+
threadTs?: string;
|
|
68
|
+
/** Test seam; defaults to the pod credential + external API base URL. */
|
|
69
|
+
resolve?: () => RelaySlackPostTarget | undefined;
|
|
70
|
+
fetchImpl?: typeof fetch;
|
|
71
|
+
timeoutMs?: number;
|
|
72
|
+
}): Promise<RelaySlackPostResult>;
|
|
73
|
+
//# sourceMappingURL=relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../src/internal/tenant-slack/relay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,gDACC,CAAC;AAEhD,kFAAkF;AAClF,eAAO,MAAM,uCAAuC,QAAS,CAAC;AAI9D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAKT;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IACE,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,SAAS,CAM1E;AAmBD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmEhC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Relay-backed Slack posting for managed deployments.
|
|
3
|
+
*
|
|
4
|
+
* On AgentSDK v2 managed deployments the fork never receives a Slack token.
|
|
5
|
+
* The delivery envelope carries the matched automation's configured Slack
|
|
6
|
+
* **channel ids** only (`managedAutomation.slackChannels`, absent when the
|
|
7
|
+
* customer toggled "Send to Slack" off); each post goes through the control
|
|
8
|
+
* plane's Slack relay
|
|
9
|
+
* (`/internal/agent-serve/agent-sdk-slack-relay/:automationUuid`),
|
|
10
|
+
* authenticated with the pod's own `CURSOR_API_KEY`. The relay re-checks
|
|
11
|
+
* that the channel is configured on exactly that automation, renders the
|
|
12
|
+
* markdown, and posts as the Cursor Slack app with the customer's stored
|
|
13
|
+
* workspace token.
|
|
14
|
+
*
|
|
15
|
+
* INTERNAL: first-party multi-tenant deployment plumbing. Deliberately
|
|
16
|
+
* excluded from the published `@cursor/july` npm package (see the `files`
|
|
17
|
+
* whitelist); consumed by internal deployments via relative source imports.
|
|
18
|
+
*/
|
|
19
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
20
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
21
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
22
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
23
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
24
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
25
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
import { cursorExternalApiUrl, resolveApiKeySync, } from "../cursor/credentials.js";
|
|
29
|
+
/**
|
|
30
|
+
* Path prefix of the backend relay route. Must match the mount in
|
|
31
|
+
* `backend/server/src/agentServe/agentServeEndpoints.ts`
|
|
32
|
+
* (`agentSdkSlackRelayRoutes`).
|
|
33
|
+
*/
|
|
34
|
+
export const AGENT_SDK_SLACK_RELAY_PATH_PREFIX = "/internal/agent-serve/agent-sdk-slack-relay";
|
|
35
|
+
/** Mirrors the relay's body bound; longer summaries are truncated client-side. */
|
|
36
|
+
export const AGENT_SDK_SLACK_RELAY_MAX_MESSAGE_CHARS = 12000;
|
|
37
|
+
const DEFAULT_TIMEOUT_MS = 30000;
|
|
38
|
+
/**
|
|
39
|
+
* Relay URL scoped to the source managed automation the delivery envelope
|
|
40
|
+
* attributed, so the relay checks the destination against exactly that
|
|
41
|
+
* automation's configured channels.
|
|
42
|
+
*/
|
|
43
|
+
export function relaySlackPostUrl(args) {
|
|
44
|
+
const trimmed = args.baseUrl.endsWith("/")
|
|
45
|
+
? args.baseUrl.slice(0, -1)
|
|
46
|
+
: args.baseUrl;
|
|
47
|
+
return `${trimmed}${AGENT_SDK_SLACK_RELAY_PATH_PREFIX}/${encodeURIComponent(args.automationUuid)}`;
|
|
48
|
+
}
|
|
49
|
+
/** Pod credential + external API base URL, or undefined off-platform. */
|
|
50
|
+
export function resolveRelaySlackTarget() {
|
|
51
|
+
const resolved = resolveApiKeySync();
|
|
52
|
+
if (resolved === undefined) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return { relayBaseUrl: cursorExternalApiUrl(), apiKey: resolved.apiKey };
|
|
56
|
+
}
|
|
57
|
+
function truncateMessage(message) {
|
|
58
|
+
if (message.length <= AGENT_SDK_SLACK_RELAY_MAX_MESSAGE_CHARS) {
|
|
59
|
+
return message;
|
|
60
|
+
}
|
|
61
|
+
const marker = "\n\n_(truncated)_";
|
|
62
|
+
return `${message.slice(0, AGENT_SDK_SLACK_RELAY_MAX_MESSAGE_CHARS - marker.length)}${marker}`;
|
|
63
|
+
}
|
|
64
|
+
function describeError(error) {
|
|
65
|
+
if (error instanceof Error) {
|
|
66
|
+
return error.name === "TimeoutError" || error.name === "AbortError"
|
|
67
|
+
? "relay request timed out"
|
|
68
|
+
: error.message;
|
|
69
|
+
}
|
|
70
|
+
return String(error);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Post one markdown message to one configured channel through the relay.
|
|
74
|
+
* Never throws: every failure is a `{ ok: false }` result so product code
|
|
75
|
+
* can log and continue (a Slack outage must not fail the review).
|
|
76
|
+
*/
|
|
77
|
+
export function postRelaySlackMessage(args) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
var _a, _b, _c;
|
|
80
|
+
const channel = args.channel.trim();
|
|
81
|
+
if (channel === "") {
|
|
82
|
+
return { ok: false, channel, status: 0, error: "empty channel" };
|
|
83
|
+
}
|
|
84
|
+
const target = ((_a = args.resolve) !== null && _a !== void 0 ? _a : resolveRelaySlackTarget)();
|
|
85
|
+
if (target === undefined) {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
channel,
|
|
89
|
+
status: 0,
|
|
90
|
+
error: "no Cursor credential for the Slack relay",
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const fetchImpl = (_b = args.fetchImpl) !== null && _b !== void 0 ? _b : fetch;
|
|
94
|
+
const url = relaySlackPostUrl({
|
|
95
|
+
baseUrl: target.relayBaseUrl,
|
|
96
|
+
automationUuid: args.automationUuid,
|
|
97
|
+
});
|
|
98
|
+
let response;
|
|
99
|
+
try {
|
|
100
|
+
response = yield fetchImpl(url, {
|
|
101
|
+
method: "POST",
|
|
102
|
+
headers: {
|
|
103
|
+
authorization: `Bearer ${target.apiKey}`,
|
|
104
|
+
"content-type": "application/json",
|
|
105
|
+
accept: "application/json",
|
|
106
|
+
},
|
|
107
|
+
body: JSON.stringify(Object.assign({ channel, message: truncateMessage(args.message) }, (args.threadTs === undefined ? {} : { threadTs: args.threadTs }))),
|
|
108
|
+
signal: AbortSignal.timeout((_c = args.timeoutMs) !== null && _c !== void 0 ? _c : DEFAULT_TIMEOUT_MS),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
return { ok: false, channel, status: 0, error: describeError(error) };
|
|
113
|
+
}
|
|
114
|
+
let body;
|
|
115
|
+
try {
|
|
116
|
+
body = yield response.json();
|
|
117
|
+
}
|
|
118
|
+
catch (_d) {
|
|
119
|
+
body = undefined;
|
|
120
|
+
}
|
|
121
|
+
const record = typeof body === "object" && body !== null && !Array.isArray(body)
|
|
122
|
+
? body
|
|
123
|
+
: {};
|
|
124
|
+
if (!response.ok || record.ok !== true) {
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
channel,
|
|
128
|
+
status: response.status,
|
|
129
|
+
error: typeof record.error === "string" && record.error !== ""
|
|
130
|
+
? record.error
|
|
131
|
+
: `relay responded ${response.status}`,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return Object.assign(Object.assign({ ok: true, channel: typeof record.channel === "string" ? record.channel : channel }, (typeof record.ts === "string" ? { ts: record.ts } : {})), (typeof record.permalink === "string"
|
|
135
|
+
? { permalink: record.permalink }
|
|
136
|
+
: {}));
|
|
137
|
+
});
|
|
138
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitLab / Bitbucket continuation fixtures shared by the two continuation
|
|
3
|
+
* vocabulary copies — `internal/continuation-identity.ts` (July) and the
|
|
4
|
+
* control plane's `agentSdkConversationIdentity.ts` (server-shared). Both
|
|
5
|
+
* suites import this one module, so a payload shape or key format that only
|
|
6
|
+
* one copy understands fails CI on the other side.
|
|
7
|
+
*
|
|
8
|
+
* Pure data: no imports, so the server-shared suite can load it by relative
|
|
9
|
+
* path without pulling `@cursor/july` into the control plane.
|
|
10
|
+
*/
|
|
11
|
+
export interface ScmContinuationFixture {
|
|
12
|
+
name: string;
|
|
13
|
+
kind: "gitlab" | "bitbucket";
|
|
14
|
+
/** Conversation type the channel's `<kind>.<type>/v2` selector names. */
|
|
15
|
+
type: "gitlab-mr" | "bitbucket-pr";
|
|
16
|
+
/**
|
|
17
|
+
* Mailbox event name. Bitbucket Data Center deliveries arrive with their
|
|
18
|
+
* Cloud-normalized key (`pr:opened` → `pullrequest:created`) next to the
|
|
19
|
+
* raw DC payload.
|
|
20
|
+
*/
|
|
21
|
+
eventType: string;
|
|
22
|
+
payload: Record<string, unknown>;
|
|
23
|
+
/** `cont:` key, or `undefined` when the delivery stamps `evt:`. */
|
|
24
|
+
expectedKey: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export interface ScmDefaultSelectorFixture {
|
|
27
|
+
kind: "gitlab" | "bitbucket";
|
|
28
|
+
eventTypes: readonly string[];
|
|
29
|
+
expected: string;
|
|
30
|
+
}
|
|
31
|
+
export declare const SCM_CONTINUATION_FIXTURES: readonly ScmContinuationFixture[];
|
|
32
|
+
export declare const SCM_DEFAULT_SELECTOR_FIXTURES: readonly ScmDefaultSelectorFixture[];
|
|
33
|
+
//# sourceMappingURL=scm-continuation-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scm-continuation-fixtures.d.ts","sourceRoot":"","sources":["../../../src/internal/testing/scm-continuation-fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,yEAAyE;IACzE,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC;IACnC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqCD,eAAO,MAAM,yBAAyB,EAAE,SAAS,sBAAsB,EAgMtE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,yBAAyB,EAuB3E,CAAC"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitLab / Bitbucket continuation fixtures shared by the two continuation
|
|
3
|
+
* vocabulary copies — `internal/continuation-identity.ts` (July) and the
|
|
4
|
+
* control plane's `agentSdkConversationIdentity.ts` (server-shared). Both
|
|
5
|
+
* suites import this one module, so a payload shape or key format that only
|
|
6
|
+
* one copy understands fails CI on the other side.
|
|
7
|
+
*
|
|
8
|
+
* Pure data: no imports, so the server-shared suite can load it by relative
|
|
9
|
+
* path without pulling `@cursor/july` into the control plane.
|
|
10
|
+
*/
|
|
11
|
+
const GITLAB_PROJECT = {
|
|
12
|
+
id: 1234,
|
|
13
|
+
name: "api",
|
|
14
|
+
path_with_namespace: "Acme/platform/api",
|
|
15
|
+
web_url: "https://gitlab.com/Acme/platform/api",
|
|
16
|
+
default_branch: "main",
|
|
17
|
+
};
|
|
18
|
+
const GITLAB_MERGE_REQUEST = {
|
|
19
|
+
id: 9001,
|
|
20
|
+
iid: 42,
|
|
21
|
+
title: "Add widgets",
|
|
22
|
+
state: "opened",
|
|
23
|
+
source_branch: "feature/widgets",
|
|
24
|
+
target_branch: "main",
|
|
25
|
+
url: "https://gitlab.com/Acme/platform/api/-/merge_requests/42",
|
|
26
|
+
last_commit: { id: "0123456789abcdef0123456789abcdef01234567" },
|
|
27
|
+
};
|
|
28
|
+
const BITBUCKET_CLOUD_REPOSITORY = {
|
|
29
|
+
type: "repository",
|
|
30
|
+
full_name: "acme/widgets",
|
|
31
|
+
name: "widgets",
|
|
32
|
+
uuid: "{5f2d1d5e-6d66-4f5b-9d3e-1b6e5b1c2f3a}",
|
|
33
|
+
workspace: { slug: "acme", uuid: "{a4f1c5d0-1111-4a2b-8c3d-9e0f1a2b3c4d}" },
|
|
34
|
+
links: { html: { href: "https://bitbucket.org/acme/widgets" } },
|
|
35
|
+
};
|
|
36
|
+
const BITBUCKET_DC_REPOSITORY = {
|
|
37
|
+
slug: "widgets",
|
|
38
|
+
id: 17,
|
|
39
|
+
name: "widgets",
|
|
40
|
+
project: { key: "ACME", id: 3, name: "Acme" },
|
|
41
|
+
};
|
|
42
|
+
export const SCM_CONTINUATION_FIXTURES = [
|
|
43
|
+
{
|
|
44
|
+
name: "gitlab merge_request open",
|
|
45
|
+
kind: "gitlab",
|
|
46
|
+
type: "gitlab-mr",
|
|
47
|
+
eventType: "merge_request",
|
|
48
|
+
payload: {
|
|
49
|
+
object_kind: "merge_request",
|
|
50
|
+
event_type: "merge_request",
|
|
51
|
+
user: { id: 7, username: "alice", name: "Alice" },
|
|
52
|
+
project: GITLAB_PROJECT,
|
|
53
|
+
object_attributes: Object.assign(Object.assign({}, GITLAB_MERGE_REQUEST), { action: "open" }),
|
|
54
|
+
},
|
|
55
|
+
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "gitlab merge_request update (new commits)",
|
|
59
|
+
kind: "gitlab",
|
|
60
|
+
type: "gitlab-mr",
|
|
61
|
+
eventType: "merge_request",
|
|
62
|
+
payload: {
|
|
63
|
+
object_kind: "merge_request",
|
|
64
|
+
event_type: "merge_request",
|
|
65
|
+
user: { id: 7, username: "alice", name: "Alice" },
|
|
66
|
+
project: GITLAB_PROJECT,
|
|
67
|
+
object_attributes: Object.assign(Object.assign({}, GITLAB_MERGE_REQUEST), { action: "update", oldrev: "fedcba9876543210fedcba9876543210fedcba98" }),
|
|
68
|
+
},
|
|
69
|
+
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "gitlab note on merge request",
|
|
73
|
+
kind: "gitlab",
|
|
74
|
+
type: "gitlab-mr",
|
|
75
|
+
eventType: "note",
|
|
76
|
+
payload: {
|
|
77
|
+
object_kind: "note",
|
|
78
|
+
event_type: "note",
|
|
79
|
+
user: { id: 8, username: "bob", name: "Bob" },
|
|
80
|
+
project: GITLAB_PROJECT,
|
|
81
|
+
object_attributes: {
|
|
82
|
+
id: 501,
|
|
83
|
+
note: "Looks good",
|
|
84
|
+
noteable_type: "MergeRequest",
|
|
85
|
+
noteable_id: 9001,
|
|
86
|
+
},
|
|
87
|
+
merge_request: GITLAB_MERGE_REQUEST,
|
|
88
|
+
},
|
|
89
|
+
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "gitlab note on issue",
|
|
93
|
+
kind: "gitlab",
|
|
94
|
+
type: "gitlab-mr",
|
|
95
|
+
eventType: "note",
|
|
96
|
+
payload: {
|
|
97
|
+
object_kind: "note",
|
|
98
|
+
event_type: "note",
|
|
99
|
+
user: { id: 8, username: "bob", name: "Bob" },
|
|
100
|
+
project: GITLAB_PROJECT,
|
|
101
|
+
object_attributes: {
|
|
102
|
+
id: 502,
|
|
103
|
+
note: "Tracking",
|
|
104
|
+
noteable_type: "Issue",
|
|
105
|
+
noteable_id: 300,
|
|
106
|
+
},
|
|
107
|
+
issue: { id: 300, iid: 9, title: "Bug" },
|
|
108
|
+
},
|
|
109
|
+
expectedKey: undefined,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "gitlab pipeline attached to a merge request",
|
|
113
|
+
kind: "gitlab",
|
|
114
|
+
type: "gitlab-mr",
|
|
115
|
+
eventType: "pipeline",
|
|
116
|
+
payload: {
|
|
117
|
+
object_kind: "pipeline",
|
|
118
|
+
project: GITLAB_PROJECT,
|
|
119
|
+
object_attributes: { id: 77, status: "success", sha: "0123456789ab" },
|
|
120
|
+
merge_request: { iid: 42, id: 9001, title: "Add widgets" },
|
|
121
|
+
},
|
|
122
|
+
expectedKey: "cont:gitlab-mr:acme/platform/api!42",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "gitlab pipeline without a merge request",
|
|
126
|
+
kind: "gitlab",
|
|
127
|
+
type: "gitlab-mr",
|
|
128
|
+
eventType: "pipeline",
|
|
129
|
+
payload: {
|
|
130
|
+
object_kind: "pipeline",
|
|
131
|
+
project: GITLAB_PROJECT,
|
|
132
|
+
object_attributes: { id: 78, status: "success", sha: "0123456789ab" },
|
|
133
|
+
merge_request: null,
|
|
134
|
+
},
|
|
135
|
+
expectedKey: undefined,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "gitlab push",
|
|
139
|
+
kind: "gitlab",
|
|
140
|
+
type: "gitlab-mr",
|
|
141
|
+
eventType: "push",
|
|
142
|
+
payload: {
|
|
143
|
+
object_kind: "push",
|
|
144
|
+
event_name: "push",
|
|
145
|
+
ref: "refs/heads/main",
|
|
146
|
+
project: GITLAB_PROJECT,
|
|
147
|
+
commits: [],
|
|
148
|
+
},
|
|
149
|
+
expectedKey: undefined,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: "bitbucket cloud pullrequest:created",
|
|
153
|
+
kind: "bitbucket",
|
|
154
|
+
type: "bitbucket-pr",
|
|
155
|
+
eventType: "pullrequest:created",
|
|
156
|
+
payload: {
|
|
157
|
+
repository: BITBUCKET_CLOUD_REPOSITORY,
|
|
158
|
+
actor: { display_name: "Alice", uuid: "{u-1}" },
|
|
159
|
+
pullrequest: {
|
|
160
|
+
id: 7,
|
|
161
|
+
title: "Add widgets",
|
|
162
|
+
state: "OPEN",
|
|
163
|
+
source: {
|
|
164
|
+
branch: { name: "feature/widgets" },
|
|
165
|
+
commit: { hash: "0123456789ab" },
|
|
166
|
+
},
|
|
167
|
+
destination: { branch: { name: "main" }, commit: { hash: "fedcba98" } },
|
|
168
|
+
links: {
|
|
169
|
+
html: { href: "https://bitbucket.org/acme/widgets/pull-requests/7" },
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
expectedKey: "cont:bitbucket-pr:acme/widgets#7",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "bitbucket data center pr:opened (normalized to pullrequest:created)",
|
|
177
|
+
kind: "bitbucket",
|
|
178
|
+
type: "bitbucket-pr",
|
|
179
|
+
eventType: "pullrequest:created",
|
|
180
|
+
payload: {
|
|
181
|
+
eventKey: "pr:opened",
|
|
182
|
+
date: "2026-09-01T12:00:00+0000",
|
|
183
|
+
actor: { name: "alice", displayName: "Alice", id: 1 },
|
|
184
|
+
pullRequest: {
|
|
185
|
+
id: 7,
|
|
186
|
+
title: "Add widgets",
|
|
187
|
+
state: "OPEN",
|
|
188
|
+
open: true,
|
|
189
|
+
fromRef: {
|
|
190
|
+
id: "refs/heads/feature/widgets",
|
|
191
|
+
displayId: "feature/widgets",
|
|
192
|
+
latestCommit: "0123456789ab",
|
|
193
|
+
repository: BITBUCKET_DC_REPOSITORY,
|
|
194
|
+
},
|
|
195
|
+
toRef: {
|
|
196
|
+
id: "refs/heads/main",
|
|
197
|
+
displayId: "main",
|
|
198
|
+
latestCommit: "fedcba98",
|
|
199
|
+
repository: BITBUCKET_DC_REPOSITORY,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
expectedKey: "cont:bitbucket-pr:acme/widgets#7",
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: "bitbucket cloud pullrequest:comment_created",
|
|
207
|
+
kind: "bitbucket",
|
|
208
|
+
type: "bitbucket-pr",
|
|
209
|
+
eventType: "pullrequest:comment_created",
|
|
210
|
+
payload: {
|
|
211
|
+
repository: BITBUCKET_CLOUD_REPOSITORY,
|
|
212
|
+
actor: { display_name: "Bob", uuid: "{u-2}" },
|
|
213
|
+
pullrequest: { id: 7, title: "Add widgets", state: "OPEN" },
|
|
214
|
+
comment: { id: 11, content: { raw: "Looks good" } },
|
|
215
|
+
},
|
|
216
|
+
expectedKey: "cont:bitbucket-pr:acme/widgets#7",
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: "bitbucket cloud repo:push",
|
|
220
|
+
kind: "bitbucket",
|
|
221
|
+
type: "bitbucket-pr",
|
|
222
|
+
eventType: "repo:push",
|
|
223
|
+
payload: {
|
|
224
|
+
repository: BITBUCKET_CLOUD_REPOSITORY,
|
|
225
|
+
actor: { display_name: "Alice", uuid: "{u-1}" },
|
|
226
|
+
push: { changes: [] },
|
|
227
|
+
},
|
|
228
|
+
expectedKey: undefined,
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
export const SCM_DEFAULT_SELECTOR_FIXTURES = [
|
|
232
|
+
{ kind: "gitlab", eventTypes: ["merge_request"], expected: "gitlab.mr/v2" },
|
|
233
|
+
{
|
|
234
|
+
kind: "gitlab",
|
|
235
|
+
eventTypes: ["merge_request", "note"],
|
|
236
|
+
expected: "gitlab.mr/v2",
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
kind: "gitlab",
|
|
240
|
+
eventTypes: ["merge_request", "push"],
|
|
241
|
+
expected: "gitlab.none/v2",
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
kind: "bitbucket",
|
|
245
|
+
eventTypes: ["pullrequest:created", "pullrequest:updated"],
|
|
246
|
+
expected: "bitbucket.pr/v2",
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
kind: "bitbucket",
|
|
250
|
+
eventTypes: ["pullrequest:created", "repo:push"],
|
|
251
|
+
expected: "bitbucket.none/v2",
|
|
252
|
+
},
|
|
253
|
+
];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync `agent/sandbox/workspace/**` seed files onto an Agent Store so
|
|
3
|
+
* cloud-runtime turns read them from the store mount (the first cloud prompt
|
|
4
|
+
* names the directory; see `buildCloudWorkspaceSection`). Hosted deployments
|
|
5
|
+
* write store-root `workspace/<path>`. Local `serve`/`run` with
|
|
6
|
+
* `runtime: "cloud"` writes `agent-serve/<agent>/workspace/<path>` on the
|
|
7
|
+
* USER store.
|
|
8
|
+
*/
|
|
9
|
+
import { type FileSink } from "../files.js";
|
|
10
|
+
import type { SeedFile } from "../types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Mirror the seed tree onto the store at its authored relative paths and
|
|
13
|
+
* delete keys no seed claims so redeploys drop removed files. Every seed
|
|
14
|
+
* loads and validates before the store is touched.
|
|
15
|
+
*/
|
|
16
|
+
export declare function syncWorkspaceToStore(args: {
|
|
17
|
+
sink: FileSink;
|
|
18
|
+
seedFiles: readonly SeedFile[];
|
|
19
|
+
/** Store-root directory that holds the seed tree. Defaults to `workspace/`. */
|
|
20
|
+
workspacePrefix?: string;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=workspace-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-sync.d.ts","sourceRoot":"","sources":["../../src/internal/workspace-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync `agent/sandbox/workspace/**` seed files onto an Agent Store so
|
|
3
|
+
* cloud-runtime turns read them from the store mount (the first cloud prompt
|
|
4
|
+
* names the directory; see `buildCloudWorkspaceSection`). Hosted deployments
|
|
5
|
+
* write store-root `workspace/<path>`. Local `serve`/`run` with
|
|
6
|
+
* `runtime: "cloud"` writes `agent-serve/<agent>/workspace/<path>` on the
|
|
7
|
+
* USER store.
|
|
8
|
+
*/
|
|
9
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
import { readFile } from "node:fs/promises";
|
|
19
|
+
import { agentStoreKeys } from "../files.js";
|
|
20
|
+
import { MEMORY_DIR_NAME } from "../memory.js";
|
|
21
|
+
import { mirrorToStore, storeRelPath } from "./store-mirror.js";
|
|
22
|
+
/**
|
|
23
|
+
* Mirror the seed tree onto the store at its authored relative paths and
|
|
24
|
+
* delete keys no seed claims so redeploys drop removed files. Every seed
|
|
25
|
+
* loads and validates before the store is touched.
|
|
26
|
+
*/
|
|
27
|
+
export function syncWorkspaceToStore(args) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
var _a;
|
|
30
|
+
const workspacePrefix = (_a = args.workspacePrefix) !== null && _a !== void 0 ? _a : agentStoreKeys.workspacePrefix();
|
|
31
|
+
const desired = new Map();
|
|
32
|
+
for (const seed of args.seedFiles) {
|
|
33
|
+
desired.set(agentStoreKeys.workspaceFile(seedRelPath(seed.relativePath), workspacePrefix), yield readFile(seed.sourcePath));
|
|
34
|
+
}
|
|
35
|
+
yield mirrorToStore({ sink: args.sink, prefix: workspacePrefix, desired });
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Same reservation as local materialization's `resolveWorkspaceWritePath`:
|
|
40
|
+
* `memory/` is the shared cross-session journal, so a seed under it fails
|
|
41
|
+
* the sync exactly as it fails a local first turn.
|
|
42
|
+
*/
|
|
43
|
+
function seedRelPath(relPath) {
|
|
44
|
+
const rel = storeRelPath(relPath, "workspace file");
|
|
45
|
+
if (rel.split("/", 1)[0] === MEMORY_DIR_NAME) {
|
|
46
|
+
throw new Error(`"${MEMORY_DIR_NAME}" is reserved for shared session memory; refusing to sync ${relPath}`);
|
|
47
|
+
}
|
|
48
|
+
return rel;
|
|
49
|
+
}
|
|
@@ -30,6 +30,13 @@ export interface MaterializeWorkspaceOptions {
|
|
|
30
30
|
* deployments: cloud VMs read the memory journal from the store mount.
|
|
31
31
|
*/
|
|
32
32
|
export declare function buildCloudMemorySection(agentName: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* First-turn preamble section for cloud-runtime sessions with authored
|
|
35
|
+
* `agent/sandbox/workspace/**` seeds. Cloud VMs get no materialized
|
|
36
|
+
* workspace; the seeds are synced onto the store mount instead (see
|
|
37
|
+
* `syncWorkspaceToStore`), so the model has to be told where they are.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildCloudWorkspaceSection(dir: string): string;
|
|
33
40
|
/** Relative path of an agent-side tool script inside the session workspace. */
|
|
34
41
|
export declare function agentToolScriptPath(toolName: string): string;
|
|
35
42
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/internal/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA8B,GAC/D,MAAM,CA8CR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,CA6BR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcrE;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAkCf;AAqGD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAO3D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,CACX,MAAM,EACN,MAAM,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CACjE,GACA,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/internal/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;;OAOG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA8B,GAC/D,MAAM,CA8CR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,CA6BR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcrE;AAED,6DAA6D;AAC7D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpE;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAkCf;AAqGD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAO3D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,CACX,MAAM,EACN,MAAM,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CACjE,GACA,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -37,6 +37,19 @@ export function buildCloudMemorySection(agentName) {
|
|
|
37
37
|
`The cross-session memory journal (the \`memory/\` directory your instructions may reference) lives at \`${dir}\` on this machine — read \`${dir}/journal.jsonl\` with your normal file tools.`,
|
|
38
38
|
].join("\n");
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* First-turn preamble section for cloud-runtime sessions with authored
|
|
42
|
+
* `agent/sandbox/workspace/**` seeds. Cloud VMs get no materialized
|
|
43
|
+
* workspace; the seeds are synced onto the store mount instead (see
|
|
44
|
+
* `syncWorkspaceToStore`), so the model has to be told where they are.
|
|
45
|
+
*/
|
|
46
|
+
export function buildCloudWorkspaceSection(dir) {
|
|
47
|
+
return [
|
|
48
|
+
"## Workspace files",
|
|
49
|
+
"",
|
|
50
|
+
`The agent's authored workspace files live at \`${dir}\` on this machine. Relative paths in your instructions that name these files resolve under that directory rather than your working directory. Read them with your normal file tools. The directory is shared across sessions, so copy a file into your working directory before editing it.`,
|
|
51
|
+
].join("\n");
|
|
52
|
+
}
|
|
40
53
|
/** Relative path of an agent-side tool script inside the session workspace. */
|
|
41
54
|
export function agentToolScriptPath(toolName) {
|
|
42
55
|
return `.agent-serve/tools/${toolName}.sh`;
|