@cursor/july 0.1.93 → 0.1.95
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 +8 -20
- package/README.md +4 -26
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +14 -2
- package/dist/channels/github/types.d.ts +18 -3
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +11 -3
- package/dist/channels/origin/origin-webhook.d.ts +11 -1
- package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
- package/dist/channels/origin/origin-webhook.js +23 -3
- package/dist/channels/origin/types.d.ts +8 -0
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +2 -2
- package/dist/channels/slack/dispatch.d.ts +0 -7
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +4 -7
- package/dist/channels/slack/eval-directive.d.ts +5 -12
- package/dist/channels/slack/eval-directive.d.ts.map +1 -1
- package/dist/channels/slack/eval-directive.js +8 -19
- package/dist/channels/slack/index.d.ts +0 -6
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +0 -6
- package/dist/channels/slack/pr-ref.d.ts +7 -1
- package/dist/channels/slack/pr-ref.d.ts.map +1 -1
- package/dist/channels/slack/pr-ref.js +42 -23
- package/dist/channels/slack/setup.d.ts +4 -4
- package/dist/channels/slack/setup.d.ts.map +1 -1
- package/dist/channels/slack/setup.js +8 -15
- package/dist/channels/slack/slack-channel.d.ts +6 -13
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +15 -101
- package/dist/channels/slack/types.d.ts +12 -79
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/types.js +1 -15
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +12 -0
- package/dist/connections.d.ts +18 -9
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +17 -8
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +4 -4
- package/dist/docs/assets/{app.CjWU-x0z.js → app.BBj0klBO.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.oqPawjiD.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.Cxy8ySFQ.js → VPLocalSearchBox.CUEXpL78.js} +1 -1
- package/dist/docs/assets/chunks/{theme.Dvq1Bktu.js → theme.DabmQnia.js} +2 -2
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
- package/dist/docs/assets/{deployment.md.DoLFAzfm.js → deployment.md.D9msOFOW.js} +3 -8
- package/dist/docs/assets/{deployment.md.DoLFAzfm.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
- package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.js → guides_agent-to-agent.md.BDb0t1QV.js} +1 -1
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.js +9 -0
- package/dist/docs/assets/guides_cloud-runtime.md.CkYbjnAX.lean.js +1 -0
- package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.js → guides_convert-automation.md.B4sjlodG.js} +1 -1
- package/dist/docs/assets/{guides_github.md.DqJhuaN1.js → guides_github.md.Cnh2mL4a.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
- package/dist/docs/assets/{guides_mcp-oauth.md.CJvrXtkN.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.mqeNKs84.js → guides_slack.md.C32HsdKk.js} +5 -11
- package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
- package/dist/docs/assets/index.md.BoHaMdeZ.js +5 -0
- package/dist/docs/assets/{index.md.B-lVR4wT.lean.js → index.md.BoHaMdeZ.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.BrmfrrIr.js → quickstart.md.Nj_LjW_a.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.D9KESDsD.js → reference_cli.md.BsMOxDvh.js} +4 -3
- package/dist/docs/assets/{reference_cli.md.D9KESDsD.lean.js → reference_cli.md.BsMOxDvh.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DB6SsN6U.js → reference_connections.md.BH8Oc0D0.js} +5 -5
- package/dist/docs/assets/{reference_connections.md.DB6SsN6U.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.BxN87gCw.js → reference_hooks.md.a8BJxMR5.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.js +11 -0
- package/dist/docs/assets/reference_http-api.md.D89k1mdm.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
- package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DuKvkYWG.js → reference_tools.md.BHeXn2id.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.DuKvkYWG.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.js → templates_agentic-owners.md.BZSH4N9z.js} +1 -1
- package/dist/docs/assets/{templates_demo.md.DhFcWN6j.js → templates_demo.md.BeQX9V3H.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.js → templates_pr-autofixer.md.x5zl6-GT.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.R4K_qytS.lean.js → templates_pr-autofixer.md.x5zl6-GT.lean.js} +1 -1
- package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.js +4 -0
- package/dist/docs/assets/templates_security-help.md.C3Ny_Qr2.lean.js +1 -0
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.lshxbCLK.js} +2 -2
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.lshxbCLK.lean.js} +1 -1
- package/dist/docs/assets/{templates_triage.md.CVlpctKS.js → templates_triage.md.Co4UNzkZ.js} +3 -3
- package/dist/docs/assets/{templates_triage.md.CVlpctKS.lean.js → templates_triage.md.Co4UNzkZ.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
- package/dist/docs/building-with-agents.html +4 -4
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +1 -0
- package/dist/docs/deployment.html +7 -12
- package/dist/docs/deployment.md +1 -20
- package/dist/docs/design/agsh.md +406 -0
- package/dist/docs/evals.html +4 -4
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/agent-to-agent.md +2 -2
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +1 -0
- package/dist/docs/guides/convert-automation.html +6 -6
- package/dist/docs/guides/convert-automation.md +1 -1
- package/dist/docs/guides/github.html +6 -6
- package/dist/docs/guides/github.md +4 -4
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +11 -13
- package/dist/docs/guides/mcp-oauth.md +10 -18
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +9 -15
- package/dist/docs/guides/slack.md +9 -46
- 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 +3 -29
- package/dist/docs/llms-full.txt +756 -2810
- package/dist/docs/llms.txt +3 -16
- package/dist/docs/quickstart.html +6 -6
- package/dist/docs/quickstart.md +2 -3
- package/dist/docs/reference/agent-config.html +4 -4
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +4 -4
- package/dist/docs/reference/cli.html +8 -7
- package/dist/docs/reference/cli.md +5 -2
- package/dist/docs/reference/connections.html +9 -9
- package/dist/docs/reference/connections.md +15 -11
- package/dist/docs/reference/hooks.html +6 -6
- package/dist/docs/reference/hooks.md +2 -3
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +8 -0
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +8 -6
- package/dist/docs/reference/project-layout.md +5 -1
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +4 -4
- package/dist/docs/reference/skills.html +4 -4
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/subagents.md +2 -2
- package/dist/docs/reference/tools.html +7 -7
- package/dist/docs/reference/tools.md +19 -3
- package/dist/docs/scaffolding-agents.html +4 -4
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +7 -7
- package/dist/docs/templates/agentic-owners.md +1 -1
- package/dist/docs/templates/demo.html +6 -6
- package/dist/docs/templates/demo.md +3 -2
- package/dist/docs/templates/pr-autofixer.html +6 -6
- package/dist/docs/templates/pr-autofixer.md +8 -13
- package/dist/docs/templates/security-help.html +30 -0
- package/dist/docs/templates/security-help.md +65 -0
- package/dist/docs/templates/security-reviewer.html +6 -6
- package/dist/docs/templates/security-reviewer.md +1 -3
- package/dist/docs/templates/triage.html +7 -7
- package/dist/docs/templates/triage.md +2 -6
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +2 -2
- package/dist/files-backends/cursor-hosted.d.ts +6 -2
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +2 -2
- package/dist/files.d.ts +2 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +5 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/advertise-tools.d.ts +11 -0
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +47 -9
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +135 -6
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +7 -4
- package/dist/internal/conversation-mirror.d.ts +82 -0
- package/dist/internal/conversation-mirror.d.ts.map +1 -0
- package/dist/internal/conversation-mirror.js +251 -0
- package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +26 -15
- package/dist/internal/convert-automation/slug.d.ts +0 -2
- package/dist/internal/convert-automation/slug.d.ts.map +1 -1
- package/dist/internal/convert-automation/slug.js +0 -8
- package/dist/internal/cursor/account-mcp.d.ts.map +1 -1
- package/dist/internal/cursor/account-mcp.js +5 -1
- package/dist/internal/deferred-channel-session.d.ts +20 -0
- package/dist/internal/deferred-channel-session.d.ts.map +1 -0
- package/dist/internal/deferred-channel-session.js +62 -0
- package/dist/internal/deploy-client.d.ts +13 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +11 -1
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +11 -5
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +110 -15
- package/dist/internal/framework-storage-selection.d.ts +32 -16
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +51 -17
- package/dist/internal/hosted-admission-context.d.ts +20 -0
- package/dist/internal/hosted-admission-context.d.ts.map +1 -0
- package/dist/internal/hosted-admission-context.js +31 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +5 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +33 -1
- package/dist/internal/hosted-delivery.d.ts +4 -2
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +97 -44
- package/dist/internal/hosted-managed-automation.d.ts +30 -0
- package/dist/internal/hosted-managed-automation.d.ts.map +1 -0
- package/dist/internal/hosted-managed-automation.js +58 -0
- package/dist/internal/mcp-endpoint.js +3 -3
- package/dist/internal/mcp-host.d.ts +8 -7
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +8 -7
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +5 -1
- package/dist/internal/playground/static.d.ts +0 -3
- package/dist/internal/playground/static.d.ts.map +1 -1
- package/dist/internal/resolved-connections.d.ts.map +1 -1
- package/dist/internal/resolved-connections.js +5 -7
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +10 -98
- package/dist/internal/scm/pr-url.d.ts +14 -0
- package/dist/internal/scm/pr-url.d.ts.map +1 -0
- package/dist/internal/scm/pr-url.js +65 -0
- package/dist/internal/sdk-runner.d.ts +14 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +41 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +123 -174
- package/dist/internal/session-engine.d.ts +45 -10
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +217 -65
- package/dist/internal/tool-catalog.d.ts +31 -0
- package/dist/internal/tool-catalog.d.ts.map +1 -0
- package/dist/internal/tool-catalog.js +67 -0
- package/dist/playground/assets/index-CF7hUDnQ.css +1 -0
- package/dist/playground/assets/{index-D9MFzhNE.js → index-CZA1uEWA.js} +48 -48
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +7 -2
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +2 -2
- package/dist/types.d.ts +72 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/docs/README.md +3 -29
- package/docs/concepts.md +1 -0
- package/docs/deployment.md +1 -20
- package/docs/design/agsh.md +406 -0
- package/docs/guides/agent-to-agent.md +2 -2
- package/docs/guides/cloud-runtime.md +1 -0
- package/docs/guides/convert-automation.md +1 -1
- package/docs/guides/github.md +4 -4
- package/docs/guides/mcp-oauth.md +10 -18
- package/docs/guides/slack.md +10 -47
- package/docs/quickstart.md +2 -3
- package/docs/reference/cli.md +5 -2
- package/docs/reference/connections.md +15 -11
- package/docs/reference/hooks.md +2 -3
- package/docs/reference/http-api.md +8 -0
- package/docs/reference/project-layout.md +5 -1
- package/docs/reference/subagents.md +2 -2
- package/docs/reference/tools.md +19 -3
- package/docs/templates/agentic-owners.md +1 -1
- package/docs/templates/demo.md +3 -2
- package/docs/templates/pr-autofixer.md +8 -13
- package/docs/templates/security-help.md +70 -0
- package/docs/templates/security-reviewer.md +1 -3
- package/docs/templates/triage.md +2 -6
- package/docs/troubleshooting.md +2 -2
- package/package.json +9 -2
- package/skills/create-agent/SKILL.md +6 -13
- package/skills/debug/SKILL.md +2 -4
- package/skills/evals/SKILL.md +1 -1
- package/skills/framework-map/SKILL.md +3 -2
- package/skills/mcp-auth/SKILL.md +10 -13
- package/skills/setup-slack/SKILL.md +21 -137
- package/src/channels/github/github-channel.ts +23 -8
- package/src/channels/github/types.ts +19 -2
- package/src/channels/origin/origin-channel.ts +13 -1
- package/src/channels/origin/origin-webhook.ts +27 -3
- package/src/channels/origin/types.ts +8 -0
- package/src/channels/slack/attachments.ts +2 -2
- package/src/channels/slack/dispatch.ts +2 -16
- package/src/channels/slack/eval-directive.ts +8 -27
- package/src/channels/slack/index.ts +0 -6
- package/src/channels/slack/pr-ref.ts +56 -25
- package/src/channels/slack/setup.ts +8 -15
- package/src/channels/slack/slack-channel.ts +14 -125
- package/src/channels/slack/types.ts +12 -96
- package/src/client.ts +23 -0
- package/src/connections.ts +20 -7
- package/src/files-backends/cursor-hosted.ts +9 -3
- package/src/files.ts +11 -0
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +45 -7
- package/src/internal/cli-deploy.ts +171 -7
- package/src/internal/cli-mcp-oauth.ts +6 -4
- package/src/internal/conversation-mirror.ts +330 -0
- package/src/internal/convert-automation/convert-workflow.ts +29 -17
- package/src/internal/convert-automation/slug.ts +0 -9
- package/src/internal/cursor/account-mcp.ts +4 -1
- package/src/internal/deferred-channel-session.ts +61 -0
- package/src/internal/deploy-client.ts +24 -1
- package/src/internal/deploy-manifest.ts +10 -5
- package/src/internal/discovery.ts +129 -15
- package/src/internal/fixtures/units-server.ts +52 -0
- package/src/internal/framework-storage-selection.ts +61 -19
- package/src/internal/hosted-admission-context.ts +37 -0
- package/src/internal/hosted-delivery-protocol.ts +44 -1
- package/src/internal/hosted-delivery.ts +155 -68
- package/src/internal/hosted-managed-automation.ts +72 -0
- package/src/internal/mcp-endpoint.ts +3 -3
- package/src/internal/mcp-host.ts +8 -7
- package/src/internal/peer-connections.ts +4 -1
- package/src/internal/playground/static.ts +1 -3
- package/src/internal/resolved-connections.ts +8 -10
- package/src/internal/review-comments.ts +10 -113
- package/src/internal/scm/pr-url.ts +95 -0
- package/src/internal/sdk-runner.ts +57 -2
- package/src/internal/server.ts +161 -251
- package/src/internal/session-engine.ts +266 -69
- package/src/internal/tool-catalog.ts +106 -0
- package/src/storage-backends/cursor-hosted.ts +10 -3
- package/src/types.ts +90 -23
- package/templates/agentic-owners/README.md +1 -1
- package/templates/agentic-owners/agent/agent.ts +0 -10
- package/templates/agentic-owners/agent/channels/github.ts +5 -14
- package/templates/agentic-owners/agent/lib/config.ts +0 -8
- package/templates/agentic-owners/agent/lib/review.ts +2 -15
- package/templates/agentic-owners/agent/tools/record_review.ts +2 -4
- package/templates/demo/agent/agent.ts +0 -10
- package/templates/pr-autofixer/README.md +0 -2
- package/templates/pr-autofixer/agent/agent.ts +0 -11
- package/templates/pr-autofixer/agent/channels/slack.ts +1 -2
- package/templates/pr-autofixer/agent/lib/pr-state.ts +5 -17
- package/templates/pr-autofixer/agent/lib/repos.ts +0 -1
- package/templates/security-help/README.md +2 -2
- package/templates/security-help/agent/agent.ts +1 -2
- package/templates/security-help/agent/channels/slack.ts +0 -3
- package/templates/security-help/agent/instructions.md +9 -10
- package/templates/security-help/agent/skills/access-request.md +1 -1
- package/templates/security-help/agent/skills/faq.md +31 -0
- package/templates/security-help/agent/skills/security-playbooks.md +1 -1
- package/templates/security-help/package.json +1 -2
- package/templates/security-reviewer/agent/agent.ts +0 -10
- package/templates/triage/README.md +2 -1
- package/templates/triage/agent/agent.ts +0 -10
- package/templates/triage/agent/channels/queue.ts +1 -1
- package/templates/triage/agent/channels/webhook.ts +1 -3
- package/templates/triage/overlays/jira/agent/mcp-connections/tracker.ts +0 -1
- package/templates/triage/overlays/linear/agent/mcp-connections/tracker.ts +0 -1
- package/dist/channels/slack/cursor-account.d.ts +0 -87
- package/dist/channels/slack/cursor-account.d.ts.map +0 -1
- package/dist/channels/slack/cursor-account.js +0 -100
- package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +0 -1
- package/dist/docs/assets/concepts.md.F6AiPorA.js +0 -1
- package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.js +0 -10
- package/dist/docs/assets/example-agents_approval-buddy.md.DmezILPg.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.js +0 -5
- package/dist/docs/assets/example-agents_benny.md.B0kwY7D_.lean.js +0 -1
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.js +0 -11
- package/dist/docs/assets/example-agents_bugbot.md.BRGMi9O2.lean.js +0 -1
- package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.js +0 -8
- package/dist/docs/assets/example-agents_codebase-wiki.md.BBNw9Ekr.lean.js +0 -1
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.js +0 -8
- package/dist/docs/assets/example-agents_codeowners-review.md.Bfta-lBU.lean.js +0 -1
- package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.js +0 -22
- package/dist/docs/assets/example-agents_concierge.md.BzB2b20R.lean.js +0 -1
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +0 -2
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +0 -1
- package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.js +0 -11
- package/dist/docs/assets/example-agents_knowledge-base.md.CrA85ig-.lean.js +0 -1
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.js +0 -10
- package/dist/docs/assets/example-agents_oncall.md.DK4XkYTd.lean.js +0 -1
- package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.js +0 -19
- package/dist/docs/assets/example-agents_security-reviewer.md.74pPpWYj.lean.js +0 -1
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.js +0 -5
- package/dist/docs/assets/example-agents_slack-agent.md.D7Kdj5BV.lean.js +0 -1
- package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.js +0 -25
- package/dist/docs/assets/example-agents_weather-agent.md.CaGpmw3Y.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BnvjPiia.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.mqeNKs84.lean.js +0 -1
- package/dist/docs/assets/index.md.B-lVR4wT.js +0 -5
- package/dist/docs/assets/reference_http-api.md.C68BERYr.js +0 -11
- package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +0 -1
- package/dist/docs/assets/reference_project-layout.md.WN9nwJht.js +0 -17
- package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +0 -1
- package/dist/docs/example-agents/approval-buddy.html +0 -36
- package/dist/docs/example-agents/approval-buddy.md +0 -266
- package/dist/docs/example-agents/benny.html +0 -31
- package/dist/docs/example-agents/benny.md +0 -173
- package/dist/docs/example-agents/bugbot.html +0 -37
- package/dist/docs/example-agents/bugbot.md +0 -229
- package/dist/docs/example-agents/codebase-wiki.html +0 -34
- package/dist/docs/example-agents/codebase-wiki.md +0 -167
- package/dist/docs/example-agents/codeowners-review.html +0 -34
- package/dist/docs/example-agents/codeowners-review.md +0 -192
- package/dist/docs/example-agents/concierge.html +0 -48
- package/dist/docs/example-agents/concierge.md +0 -200
- package/dist/docs/example-agents/index.html +0 -28
- package/dist/docs/example-agents/index.md +0 -99
- package/dist/docs/example-agents/knowledge-base.html +0 -37
- package/dist/docs/example-agents/knowledge-base.md +0 -168
- package/dist/docs/example-agents/oncall.html +0 -36
- package/dist/docs/example-agents/oncall.md +0 -212
- package/dist/docs/example-agents/security-reviewer.html +0 -45
- package/dist/docs/example-agents/security-reviewer.md +0 -265
- package/dist/docs/example-agents/slack-agent.html +0 -31
- package/dist/docs/example-agents/slack-agent.md +0 -142
- package/dist/docs/example-agents/weather-agent.html +0 -51
- package/dist/docs/example-agents/weather-agent.md +0 -297
- package/dist/internal/cursor-slack-relay.d.ts +0 -96
- package/dist/internal/cursor-slack-relay.d.ts.map +0 -1
- package/dist/internal/cursor-slack-relay.js +0 -176
- package/dist/playground/assets/index-D9N7-q97.css +0 -1
- package/docs/example-agents/approval-buddy.md +0 -271
- package/docs/example-agents/benny.md +0 -178
- package/docs/example-agents/bugbot.md +0 -234
- package/docs/example-agents/codebase-wiki.md +0 -172
- package/docs/example-agents/codeowners-review.md +0 -197
- package/docs/example-agents/concierge.md +0 -205
- package/docs/example-agents/index.md +0 -104
- package/docs/example-agents/knowledge-base.md +0 -173
- package/docs/example-agents/oncall.md +0 -217
- package/docs/example-agents/security-reviewer.md +0 -270
- package/docs/example-agents/slack-agent.md +0 -147
- package/docs/example-agents/weather-agent.md +0 -302
- package/src/channels/slack/cursor-account.ts +0 -202
- package/src/internal/cursor-slack-relay.ts +0 -249
- package/templates/security-help/agent/knowledge/faq/approvals.md +0 -5
- package/templates/security-help/agent/knowledge/faq/channels.md +0 -6
- package/templates/security-help/agent/knowledge/faq/phishing.md +0 -10
- package/templates/security-help/agent/skills/security-first-pass.md +0 -15
- /package/dist/docs/assets/{concepts.md.F6AiPorA.lean.js → concepts.md.lwAgBIMI.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.B3JIaAqz.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
- /package/dist/docs/assets/{guides_convert-automation.md.Bboisykk.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.DqJhuaN1.lean.js → guides_github.md.Cnh2mL4a.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BrmfrrIr.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
- /package/dist/docs/assets/{reference_hooks.md.BxN87gCw.lean.js → reference_hooks.md.a8BJxMR5.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.WN9nwJht.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_subagents.md.Xoav0AII.lean.js → reference_subagents.md.CfsIloPm.lean.js} +0 -0
- /package/dist/docs/assets/{templates_agentic-owners.md.DqtPdm6f.lean.js → templates_agentic-owners.md.BZSH4N9z.lean.js} +0 -0
- /package/dist/docs/assets/{templates_demo.md.DhFcWN6j.lean.js → templates_demo.md.BeQX9V3H.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.vCWwvqcJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +0 -0
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
* `normalizeMcpToolName` uses for IDE/Sand MCP tools. A listing failure
|
|
24
24
|
* still fails the turn rather than running it with a silently shrunken
|
|
25
25
|
* toolset.
|
|
26
|
+
*
|
|
27
|
+
* `defineConnection({ effects })` filters the listing before names are
|
|
28
|
+
* assigned: only tools whose MCP annotations classify as an intended
|
|
29
|
+
* effect are advertised. Unclassified tools are omitted, not guessed.
|
|
26
30
|
*/
|
|
27
31
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
32
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -35,6 +39,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
35
39
|
};
|
|
36
40
|
import { brandDefinition } from "./brand.js";
|
|
37
41
|
import { sanitizeMcpToolName, suffixMcpToolName, } from "./sanitize-mcp-tool-name.js";
|
|
42
|
+
import { classifyAnnotationsEffect } from "./tool-policy.js";
|
|
38
43
|
/**
|
|
39
44
|
* Model-facing advertised names after {@link sanitizeMcpToolName} — the
|
|
40
45
|
* same MCP-client shape the Cursor-account bridge documents
|
|
@@ -62,15 +67,21 @@ export function resolveAdvertisedTools(args) {
|
|
|
62
67
|
const claimed = new Set(args.agent.tools.map((tool) => tool.name));
|
|
63
68
|
const resolved = [];
|
|
64
69
|
for (const connection of advertising) {
|
|
65
|
-
const source = yield sourceFor(connection, args.session, args.hostMcp);
|
|
66
70
|
let listed;
|
|
71
|
+
let source;
|
|
67
72
|
try {
|
|
73
|
+
source = yield sourceFor(connection, args.session, args.hostMcp);
|
|
68
74
|
listed = yield source.listTools();
|
|
69
75
|
}
|
|
70
76
|
catch (error) {
|
|
77
|
+
if (args.onConnectionError !== undefined) {
|
|
78
|
+
args.onConnectionError(connection.name, error);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
71
81
|
throw new Error(`Failed to list tools on advertised connection "${connection.name}": ${describeError(error)}`, { cause: error });
|
|
72
82
|
}
|
|
73
|
-
const
|
|
83
|
+
const intended = listed.filter((info) => matchesIntendedEffects(info.annotations, connection.effects));
|
|
84
|
+
const exposed = exposeListedTools(intended, claimed);
|
|
74
85
|
for (const { info, exposedName } of exposed) {
|
|
75
86
|
resolved.push(toDiscoveredTool(connection, info, exposedName, source));
|
|
76
87
|
claimed.add(exposedName);
|
|
@@ -146,6 +157,13 @@ function exposeListedTools(listed, claimed) {
|
|
|
146
157
|
exposedName: exposedNameByInfo.get(info),
|
|
147
158
|
}));
|
|
148
159
|
}
|
|
160
|
+
function matchesIntendedEffects(annotations, effects) {
|
|
161
|
+
if (effects === undefined) {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
const effect = classifyAnnotationsEffect(annotations);
|
|
165
|
+
return effect !== undefined && effects.includes(effect);
|
|
166
|
+
}
|
|
149
167
|
function toDiscoveredTool(connection, info, exposedName, source) {
|
|
150
168
|
var _a;
|
|
151
169
|
const description = info.description === undefined || info.description.trim() === ""
|
|
@@ -153,14 +171,34 @@ function toDiscoveredTool(connection, info, exposedName, source) {
|
|
|
153
171
|
: info.description;
|
|
154
172
|
const inputSchema = (_a = info.inputSchema) !== null && _a !== void 0 ? _a : ANY_OBJECT_SCHEMA;
|
|
155
173
|
const outputSchema = info.outputSchema;
|
|
156
|
-
const
|
|
157
|
-
|
|
174
|
+
const effect = connection.effects === undefined
|
|
175
|
+
? undefined
|
|
176
|
+
: classifyAnnotationsEffect(info.annotations);
|
|
177
|
+
const definition = brandDefinition("tool", {
|
|
178
|
+
description,
|
|
179
|
+
inputSchema,
|
|
180
|
+
outputSchema,
|
|
181
|
+
effect,
|
|
182
|
+
execute: (input) => __awaiter(this, void 0, void 0, function* () {
|
|
158
183
|
return formatMcpToolResult(connection.name, info.name, yield source.callTool(info.name, input !== null && input !== void 0 ? input : {}));
|
|
159
|
-
})
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
184
|
+
}),
|
|
185
|
+
});
|
|
186
|
+
return {
|
|
187
|
+
name: exposedName,
|
|
188
|
+
description,
|
|
189
|
+
inputSchema,
|
|
190
|
+
outputSchema,
|
|
191
|
+
execution: "server",
|
|
192
|
+
needsApproval: false,
|
|
193
|
+
effect,
|
|
194
|
+
// The server's own annotations ride along (bounded at listing time), so
|
|
195
|
+
// the harness listing carries them and effect classification can read
|
|
196
|
+
// them. Absent stays absent — the fail-closed state.
|
|
197
|
+
annotations: info.annotations,
|
|
198
|
+
advertised: true,
|
|
199
|
+
connection: connection.name,
|
|
200
|
+
definition,
|
|
201
|
+
};
|
|
164
202
|
}
|
|
165
203
|
/**
|
|
166
204
|
* Render an MCP call result for the model: text parts joined, non-text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,
|
|
1
|
+
{"version":3,"file":"cli-deploy.d.ts","sourceRoot":"","sources":["../../src/internal/cli-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -139,18 +139,34 @@ export function cmdDeploy(options) {
|
|
|
139
139
|
if (typeof targets === "number") {
|
|
140
140
|
return targets;
|
|
141
141
|
}
|
|
142
|
+
if (targets.length === 1) {
|
|
143
|
+
return deployOne(ctx, options, targets[0]);
|
|
144
|
+
}
|
|
145
|
+
// Multi-agent parent: when every child declares `architecture: "v2"`,
|
|
146
|
+
// the v2 control plane models sibling agents as release components of
|
|
147
|
+
// ONE application, so deploy them together (one app, one component per
|
|
148
|
+
// child) instead of minting a separate application per child. Mixed and
|
|
149
|
+
// v1 parents keep the per-child sequential deploys.
|
|
150
|
+
const manifests = [];
|
|
151
|
+
for (const target of targets) {
|
|
152
|
+
manifests.push(yield readDeployManifest(target.dir));
|
|
153
|
+
}
|
|
154
|
+
if (manifests.every((manifest) => manifest.architecture === "v2")) {
|
|
155
|
+
return deployAgentsdkApplication(ctx, options, targets);
|
|
156
|
+
}
|
|
157
|
+
if (!ctx.json &&
|
|
158
|
+
manifests.some((manifest) => manifest.architecture === "v2")) {
|
|
159
|
+
ctx.err(`warning: agents under this parent mix architectures; deploying each separately (v2 children become standalone single-component applications).\n`);
|
|
160
|
+
}
|
|
142
161
|
// --path is per-agent (relative to the repo root). When deploying several
|
|
143
162
|
// agents, ignore a shared --path so each target can infer its own path.
|
|
144
163
|
let deployOptions = options;
|
|
145
|
-
if (
|
|
164
|
+
if (options.path !== undefined) {
|
|
146
165
|
if (!ctx.json) {
|
|
147
166
|
ctx.err(`warning: ignoring --path ${JSON.stringify(options.path)} for a multi-agent deploy; each agent infers its own path from git.\n`);
|
|
148
167
|
}
|
|
149
168
|
deployOptions = Object.assign(Object.assign({}, options), { path: undefined });
|
|
150
169
|
}
|
|
151
|
-
if (targets.length === 1) {
|
|
152
|
-
return deployOne(ctx, deployOptions, targets[0]);
|
|
153
|
-
}
|
|
154
170
|
// Multi-agent batch: deploy sequentially; --json emits an array.
|
|
155
171
|
const jsonResults = [];
|
|
156
172
|
let failures = 0;
|
|
@@ -295,6 +311,16 @@ function resolveDeployTargets(options, ctx) {
|
|
|
295
311
|
}
|
|
296
312
|
return [match];
|
|
297
313
|
}
|
|
314
|
+
// An all-v2 parent deploys as ONE application (siblings are components
|
|
315
|
+
// of a single app on the v2 control plane), so "deploy the parent" is
|
|
316
|
+
// unambiguous and needs no picker or --all. A child that is v1 — or
|
|
317
|
+
// fails to load — keeps the interactive picker below.
|
|
318
|
+
if (yield allChildrenAreV2(children)) {
|
|
319
|
+
if (!ctx.json) {
|
|
320
|
+
ctx.err(`Deploying all ${children.length} v2 agents under ${basename(dir)} as one application (pass --slug <name> to deploy a single agent standalone).\n`);
|
|
321
|
+
}
|
|
322
|
+
return [...children];
|
|
323
|
+
}
|
|
298
324
|
const chooser = (_b = options.chooseTargets) !== null && _b !== void 0 ? _b : ((agents) => { var _a, _b; return promptChooseDeployTargets(agents, {
|
|
299
325
|
err: ctx.err,
|
|
300
326
|
stdin: (_a = options.stdin) !== null && _a !== void 0 ? _a : process.stdin,
|
|
@@ -319,6 +345,27 @@ function resolveDeployTargets(options, ctx) {
|
|
|
319
345
|
function formatAgentList(agents) {
|
|
320
346
|
return agents.map((agent, i) => ` ${i + 1}) ${agent.slug}\n`).join("");
|
|
321
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* True when every child agent project loads and declares
|
|
350
|
+
* `architecture: "v2"`. Broken projects count as not-v2 so target
|
|
351
|
+
* resolution falls back to the picker instead of failing the whole deploy
|
|
352
|
+
* on a child the user might not even select.
|
|
353
|
+
*/
|
|
354
|
+
function allChildrenAreV2(children) {
|
|
355
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
356
|
+
for (const child of children) {
|
|
357
|
+
try {
|
|
358
|
+
if ((yield readDeployManifest(child.dir)).architecture !== "v2") {
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
catch (_a) {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return true;
|
|
367
|
+
});
|
|
368
|
+
}
|
|
322
369
|
/**
|
|
323
370
|
* TTY picker for multi-agent parents. Non-interactive callers get `[]`
|
|
324
371
|
* so {@link resolveDeployTargets} can print the --slug/--all hint.
|
|
@@ -526,6 +573,76 @@ function deployOne(ctx, options, target, extras) {
|
|
|
526
573
|
return 0;
|
|
527
574
|
});
|
|
528
575
|
}
|
|
576
|
+
/**
|
|
577
|
+
* Multi-agent parent whose children all declare `architecture: "v2"`:
|
|
578
|
+
* deploy ONE application whose release carries a component per child. The
|
|
579
|
+
* application slug derives from the parent directory name; each component
|
|
580
|
+
* key is the child's slug and its path is the child directory relative to
|
|
581
|
+
* the repo root (a shared --path names the parent's directory in the repo).
|
|
582
|
+
*/
|
|
583
|
+
function deployAgentsdkApplication(ctx, options, targets) {
|
|
584
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
585
|
+
var _a, _b, _c, _d, _e;
|
|
586
|
+
const parentDir = resolve((_a = options.dir) !== null && _a !== void 0 ? _a : ".");
|
|
587
|
+
const slug = slugFromDirectoryName(basename(parentDir));
|
|
588
|
+
if (slug === undefined) {
|
|
589
|
+
ctx.err(`Could not derive an application slug from the parent directory name ${JSON.stringify(basename(parentDir))} — rename it (deploy slugs use lowercase letters, digits, '-' or '_').\n`);
|
|
590
|
+
return 1;
|
|
591
|
+
}
|
|
592
|
+
const needsGitInference = options.repo === undefined ||
|
|
593
|
+
options.ref === undefined ||
|
|
594
|
+
options.path === undefined;
|
|
595
|
+
const inferred = needsGitInference
|
|
596
|
+
? yield inferDeployGitSource(parentDir, Object.assign({}, (options.git === undefined ? {} : { git: options.git })))
|
|
597
|
+
: {};
|
|
598
|
+
const gitRepoUrl = (_b = options.repo) !== null && _b !== void 0 ? _b : inferred.gitRepoUrl;
|
|
599
|
+
const gitRef = (_c = options.ref) !== null && _c !== void 0 ? _c : inferred.gitRef;
|
|
600
|
+
const parentPath = (_d = options.path) !== null && _d !== void 0 ? _d : inferred.agentPath;
|
|
601
|
+
if (gitRepoUrl !== undefined && !gitRepoUrl.startsWith("https://")) {
|
|
602
|
+
ctx.err(`Invalid --repo: ${gitRepoUrl} (expected an https:// git repository URL)\n`);
|
|
603
|
+
return 1;
|
|
604
|
+
}
|
|
605
|
+
if (gitRepoUrl === undefined) {
|
|
606
|
+
ctx.err(`Could not resolve an https:// git repository URL for this deploy.\n` +
|
|
607
|
+
` Pass --repo https://github.com/<owner>/<repo> (inferred from origin when possible).\n`);
|
|
608
|
+
return 1;
|
|
609
|
+
}
|
|
610
|
+
for (const repo of (_e = options.cursorEventsRepos) !== null && _e !== void 0 ? _e : []) {
|
|
611
|
+
if (!isValidCursorEventRepo(repo)) {
|
|
612
|
+
ctx.err(`Invalid --cursor-events-repo: ${repo} (expected owner/name)\n`);
|
|
613
|
+
return 1;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
const components = targets.map((target) => ({
|
|
617
|
+
componentKey: target.slug,
|
|
618
|
+
agentPath: [parentPath, basename(target.dir)]
|
|
619
|
+
.filter((part) => part !== undefined && part !== "")
|
|
620
|
+
.join("/"),
|
|
621
|
+
}));
|
|
622
|
+
if (!ctx.json) {
|
|
623
|
+
ctx.err(`Deploying "${slug}" as one v2 application with ${targets.length} components (slug from the parent directory name).\n` +
|
|
624
|
+
` architecture: v2\n` +
|
|
625
|
+
` source: ${gitRepoUrl}${gitRef === undefined ? "" : ` @ ${gitRef}`}\n` +
|
|
626
|
+
components
|
|
627
|
+
.map((component) => { var _a; return ` component: ${component.componentKey} (${(_a = component.agentPath) !== null && _a !== void 0 ? _a : "."})\n`; })
|
|
628
|
+
.join(""));
|
|
629
|
+
}
|
|
630
|
+
// Components bake sequentially on the control plane, so the default wait
|
|
631
|
+
// budget is per component; otherwise a 2+ component deploy routinely hits
|
|
632
|
+
// the client-side timeout while the server-side deploy is still fine. An
|
|
633
|
+
// explicitly passed timeout always wins.
|
|
634
|
+
const waitCtx = options.timeoutMs === undefined
|
|
635
|
+
? Object.assign(Object.assign({}, ctx), { timeoutMs: ctx.timeoutMs * targets.length }) : ctx;
|
|
636
|
+
return deployOneAgentsdk(waitCtx, undefined, {
|
|
637
|
+
slug,
|
|
638
|
+
gitRepoUrl,
|
|
639
|
+
gitRef,
|
|
640
|
+
agentPath: undefined,
|
|
641
|
+
components,
|
|
642
|
+
repositories: options.cursorEventsRepos,
|
|
643
|
+
});
|
|
644
|
+
});
|
|
645
|
+
}
|
|
529
646
|
/**
|
|
530
647
|
* `architecture: "v2"` deploy: POST `/internal/agentkit/deployments` and
|
|
531
648
|
* poll the matching GET. The v2 accept path starts freeze bake; it does
|
|
@@ -534,6 +651,11 @@ function deployOne(ctx, options, target, extras) {
|
|
|
534
651
|
function deployOneAgentsdk(ctx, extras, args) {
|
|
535
652
|
return __awaiter(this, void 0, void 0, function* () {
|
|
536
653
|
const { slug } = args;
|
|
654
|
+
const componentsLine = args.components === undefined
|
|
655
|
+
? ""
|
|
656
|
+
: ` components: ${args.components
|
|
657
|
+
.map((component) => component.componentKey)
|
|
658
|
+
.join(", ")}\n`;
|
|
537
659
|
let accepted;
|
|
538
660
|
try {
|
|
539
661
|
accepted = yield ctx.client.deployAgentkit({
|
|
@@ -542,6 +664,7 @@ function deployOneAgentsdk(ctx, extras, args) {
|
|
|
542
664
|
gitRepoUrl: args.gitRepoUrl,
|
|
543
665
|
gitRef: args.gitRef,
|
|
544
666
|
agentPath: args.agentPath,
|
|
667
|
+
components: args.components,
|
|
545
668
|
repositories: args.repositories,
|
|
546
669
|
});
|
|
547
670
|
}
|
|
@@ -558,7 +681,8 @@ function deployOneAgentsdk(ctx, extras, args) {
|
|
|
558
681
|
else {
|
|
559
682
|
ctx.out(`Deploy accepted: ${slug} (team ${ctx.teamId}, v2)\n` +
|
|
560
683
|
` application: ${accepted.applicationId}\n` +
|
|
561
|
-
` release: ${accepted.releaseId}\n`
|
|
684
|
+
` release: ${accepted.releaseId}\n` +
|
|
685
|
+
componentsLine);
|
|
562
686
|
}
|
|
563
687
|
return 0;
|
|
564
688
|
}
|
|
@@ -585,7 +709,12 @@ function deployOneAgentsdk(ctx, extras, args) {
|
|
|
585
709
|
` status: running\n` +
|
|
586
710
|
` architecture: v2\n` +
|
|
587
711
|
` application: ${detail.applicationId}\n` +
|
|
588
|
-
` release: ${detail.releaseId}\n`
|
|
712
|
+
` release: ${detail.releaseId}\n` +
|
|
713
|
+
(args.components === undefined
|
|
714
|
+
? ""
|
|
715
|
+
: ` components: ${args.components
|
|
716
|
+
.map((component) => component.componentKey)
|
|
717
|
+
.join(", ")}\n`));
|
|
589
718
|
return 0;
|
|
590
719
|
});
|
|
591
720
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-mcp-oauth.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAiB5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiBF,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli-mcp-oauth.d.ts","sourceRoot":"","sources":["../../src/internal/cli-mcp-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAiB5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiBF,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA4DjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC3E;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAElB;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAoG7B"}
|
|
@@ -43,14 +43,17 @@ function describe(error) {
|
|
|
43
43
|
}
|
|
44
44
|
export function cmdMcpOauth(options) {
|
|
45
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
var _a, _b;
|
|
46
|
+
var _a, _b, _c;
|
|
47
47
|
const err = (_a = options.err) !== null && _a !== void 0 ? _a : ((text) => process.stderr.write(text));
|
|
48
48
|
const out = (_b = options.out) !== null && _b !== void 0 ? _b : ((text) => process.stdout.write(text));
|
|
49
49
|
const project = yield loadAgentProject(options.dir);
|
|
50
|
-
const
|
|
50
|
+
const authored = [
|
|
51
|
+
...project.agent.connections,
|
|
52
|
+
...((_c = project.agent.hostConnections) !== null && _c !== void 0 ? _c : []),
|
|
53
|
+
];
|
|
54
|
+
const connection = authored.find((entry) => entry.name === options.connection);
|
|
51
55
|
if (connection === undefined) {
|
|
52
|
-
const known =
|
|
53
|
-
"(none)";
|
|
56
|
+
const known = authored.map((entry) => entry.name).join(", ") || "(none)";
|
|
54
57
|
err(`${LOG_PREFIX} Unknown MCP connection "${options.connection}". Authored: ${known}.\n`);
|
|
55
58
|
return 1;
|
|
56
59
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable mirror for the SDK runner's conversation store.
|
|
3
|
+
*
|
|
4
|
+
* The Cursor SDK keeps each local conversation in SQLite under the engine's
|
|
5
|
+
* state root (`runner/index.db` + `runner/agents/agent-<hash>/store.db`).
|
|
6
|
+
* That disk dies with the pod: on architecture v2, session **records** and
|
|
7
|
+
* event chunks survive replacement through the control-plane storage mirror
|
|
8
|
+
* (framework-storage-selection.ts), but the conversation itself was never
|
|
9
|
+
* hydrated anywhere — a replacement pod resumed every thread as a fresh
|
|
10
|
+
* conversation.
|
|
11
|
+
*
|
|
12
|
+
* This module mirrors the conversation through the SDK's own store APIs —
|
|
13
|
+
* the agent document (which carries `sdkMetadata.blobEncryptionKey`, without
|
|
14
|
+
* which the checkpoint blobs cannot be decrypted) plus its content-addressed
|
|
15
|
+
* checkpoint blobs — into the deployment's shared file storage. On
|
|
16
|
+
* Cursor-managed hosting that is the Agent Store reached over
|
|
17
|
+
* `/v0/agent-serve-files` presigned URLs: the store is **not mounted** as a
|
|
18
|
+
* filesystem in the engine VM (the FUSE mount at
|
|
19
|
+
* {@link DEPLOYMENT_STORE_MOUNT_PATH} exists only on cloud-runtime VMs), so
|
|
20
|
+
* the mirror moves bytes through the {@link FileSink} contract instead.
|
|
21
|
+
*
|
|
22
|
+
* Going through the store APIs rather than copying `store.db` files sidesteps
|
|
23
|
+
* WAL consistency and the shared `index.db` (per-session raw copies would
|
|
24
|
+
* clobber other sessions' rows); checkpoint blobs are content-addressed, so
|
|
25
|
+
* repeat persists upload only what is new.
|
|
26
|
+
*
|
|
27
|
+
* Timing: the runner hydrates before `Agent.resume` (so a follow-up landing
|
|
28
|
+
* on a fresh pod — including a v2 hosted-execution delivery — finds the
|
|
29
|
+
* conversation before the turn runs) and persists after each local turn
|
|
30
|
+
* settles, **awaited**, because a hosted pod can be parked immediately after
|
|
31
|
+
* the execution reply.
|
|
32
|
+
*
|
|
33
|
+
* Run rows and run events are deliberately not mirrored: they are per-pod
|
|
34
|
+
* bookkeeping (turn numbers, stream offsets), and the durable session event
|
|
35
|
+
* stream already lives in the control-plane storage mirror.
|
|
36
|
+
*/
|
|
37
|
+
import type { LocalAgentStore } from "@cursor/sdk";
|
|
38
|
+
import { type FileSink } from "../files.js";
|
|
39
|
+
import type { AgentProject } from "../types.js";
|
|
40
|
+
/**
|
|
41
|
+
* Persist/restore one SDK conversation between a {@link LocalAgentStore} and
|
|
42
|
+
* durable file storage. Implemented by {@link createConversationMirror};
|
|
43
|
+
* consumed by the SDK runner.
|
|
44
|
+
*/
|
|
45
|
+
export interface ConversationMirror {
|
|
46
|
+
/**
|
|
47
|
+
* Restore `sdkAgentId`'s conversation into `store` when the store does not
|
|
48
|
+
* already hold it. Resolves `true` when a conversation was restored,
|
|
49
|
+
* `false` on a definitive miss (never persisted, or already local — the
|
|
50
|
+
* caller falls through to its fresh-conversation path). A sink **failure**
|
|
51
|
+
* propagates: an outage must fail the turn (retryable) rather than
|
|
52
|
+
* silently fork the thread onto a fresh conversation.
|
|
53
|
+
*/
|
|
54
|
+
hydrate(store: LocalAgentStore, sdkAgentId: string): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Mirror `sdkAgentId`'s conversation from `store` to the sink
|
|
57
|
+
* (last write wins). No-op until the conversation has a checkpoint.
|
|
58
|
+
*/
|
|
59
|
+
persist(store: LocalAgentStore, sdkAgentId: string): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
export interface CreateConversationMirrorOptions {
|
|
62
|
+
sink: FileSink;
|
|
63
|
+
/** Agent name baked into every minted key. */
|
|
64
|
+
agentName: string;
|
|
65
|
+
logger?: (line: string) => void;
|
|
66
|
+
}
|
|
67
|
+
/** Build a {@link ConversationMirror} over a {@link FileSink}. */
|
|
68
|
+
export declare function createConversationMirror(options: CreateConversationMirrorOptions): ConversationMirror;
|
|
69
|
+
/**
|
|
70
|
+
* Whether (and over which sink) this serve process mirrors conversations.
|
|
71
|
+
*
|
|
72
|
+
* Selected for architecture-v2 agents on Cursor-managed hosting — the same
|
|
73
|
+
* generation signal as framework-storage-selection.ts, plus a provisioned
|
|
74
|
+
* deployment file store. Self-hosted v2 keeps everything on the state root
|
|
75
|
+
* (the operator owns the disk), and v1 keeps today's behavior while it runs.
|
|
76
|
+
*/
|
|
77
|
+
export declare function selectConversationMirror(input: {
|
|
78
|
+
project: AgentProject;
|
|
79
|
+
logger?: (line: string) => void;
|
|
80
|
+
env?: Record<string, string | undefined>;
|
|
81
|
+
}): ConversationMirror | undefined;
|
|
82
|
+
//# sourceMappingURL=conversation-mirror.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-mirror.d.ts","sourceRoot":"","sources":["../../src/internal/conversation-mirror.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;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,CAwJpB;AAsDD;;;;;;;GAOG;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"}
|