@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
package/src/index.ts
CHANGED
|
@@ -182,7 +182,9 @@ export {
|
|
|
182
182
|
isCursorAccountTransport,
|
|
183
183
|
isPeerConnectionTransport,
|
|
184
184
|
isSymbolicConnectionTransport,
|
|
185
|
+
isToolEffect,
|
|
185
186
|
MAX_RUNNING_TURNS_LIMIT,
|
|
187
|
+
normalizeConnectionEffects,
|
|
186
188
|
normalizeCursorAccountServers,
|
|
187
189
|
supportsKvCas,
|
|
188
190
|
} from "./types.js";
|
|
@@ -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
|
|
|
28
32
|
import type {
|
|
@@ -31,9 +35,11 @@ import type {
|
|
|
31
35
|
HostMcpCallResult,
|
|
32
36
|
HostMcpToolInfo,
|
|
33
37
|
JsonSchemaObject,
|
|
38
|
+
McpToolAnnotations,
|
|
34
39
|
ResolvedAgent,
|
|
35
40
|
SessionInfo,
|
|
36
41
|
ToolDefinition,
|
|
42
|
+
ToolEffect,
|
|
37
43
|
} from "../types.js";
|
|
38
44
|
import { brandDefinition } from "./brand.js";
|
|
39
45
|
import type { HostMcpOneOff } from "./mcp-host.js";
|
|
@@ -41,6 +47,7 @@ import {
|
|
|
41
47
|
sanitizeMcpToolName,
|
|
42
48
|
suffixMcpToolName,
|
|
43
49
|
} from "./sanitize-mcp-tool-name.js";
|
|
50
|
+
import { classifyAnnotationsEffect } from "./tool-policy.js";
|
|
44
51
|
|
|
45
52
|
/**
|
|
46
53
|
* What the resolver needs from the host MCP registry: the shared cached
|
|
@@ -88,6 +95,13 @@ export async function resolveAdvertisedTools(args: {
|
|
|
88
95
|
agent: ResolvedAgent;
|
|
89
96
|
session: SessionInfo;
|
|
90
97
|
hostMcp: AdvertiseHostMcp;
|
|
98
|
+
/**
|
|
99
|
+
* When set, a connection whose source or listing fails is reported here
|
|
100
|
+
* and skipped instead of throwing. Turns keep the throwing default (a
|
|
101
|
+
* turn must fail closed); the inspection catalog passes this so one
|
|
102
|
+
* broken connector does not hide every other tool.
|
|
103
|
+
*/
|
|
104
|
+
onConnectionError?: (connection: string, error: unknown) => void;
|
|
91
105
|
/** Test seam; defaults to {@link sourceForConnection}. */
|
|
92
106
|
sourceFor?: (
|
|
93
107
|
connection: DiscoveredConnection,
|
|
@@ -105,17 +119,25 @@ export async function resolveAdvertisedTools(args: {
|
|
|
105
119
|
const claimed = new Set(args.agent.tools.map((tool) => tool.name));
|
|
106
120
|
const resolved: DiscoveredTool[] = [];
|
|
107
121
|
for (const connection of advertising) {
|
|
108
|
-
const source = await sourceFor(connection, args.session, args.hostMcp);
|
|
109
122
|
let listed: HostMcpToolInfo[];
|
|
123
|
+
let source: AdvertisedToolSource;
|
|
110
124
|
try {
|
|
125
|
+
source = await sourceFor(connection, args.session, args.hostMcp);
|
|
111
126
|
listed = await source.listTools();
|
|
112
127
|
} catch (error) {
|
|
128
|
+
if (args.onConnectionError !== undefined) {
|
|
129
|
+
args.onConnectionError(connection.name, error);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
113
132
|
throw new Error(
|
|
114
133
|
`Failed to list tools on advertised connection "${connection.name}": ${describeError(error)}`,
|
|
115
134
|
{ cause: error }
|
|
116
135
|
);
|
|
117
136
|
}
|
|
118
|
-
const
|
|
137
|
+
const intended = listed.filter((info) =>
|
|
138
|
+
matchesIntendedEffects(info.annotations, connection.effects)
|
|
139
|
+
);
|
|
140
|
+
const exposed = exposeListedTools(intended, claimed);
|
|
119
141
|
for (const { info, exposedName } of exposed) {
|
|
120
142
|
resolved.push(toDiscoveredTool(connection, info, exposedName, source));
|
|
121
143
|
claimed.add(exposedName);
|
|
@@ -210,6 +232,17 @@ function exposeListedTools(
|
|
|
210
232
|
}));
|
|
211
233
|
}
|
|
212
234
|
|
|
235
|
+
function matchesIntendedEffects(
|
|
236
|
+
annotations: McpToolAnnotations | undefined,
|
|
237
|
+
effects: readonly ToolEffect[] | undefined
|
|
238
|
+
): boolean {
|
|
239
|
+
if (effects === undefined) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
const effect = classifyAnnotationsEffect(annotations);
|
|
243
|
+
return effect !== undefined && effects.includes(effect);
|
|
244
|
+
}
|
|
245
|
+
|
|
213
246
|
function toDiscoveredTool(
|
|
214
247
|
connection: DiscoveredConnection,
|
|
215
248
|
info: HostMcpToolInfo,
|
|
@@ -222,10 +255,15 @@ function toDiscoveredTool(
|
|
|
222
255
|
: info.description;
|
|
223
256
|
const inputSchema = info.inputSchema ?? ANY_OBJECT_SCHEMA;
|
|
224
257
|
const outputSchema = info.outputSchema;
|
|
258
|
+
const effect =
|
|
259
|
+
connection.effects === undefined
|
|
260
|
+
? undefined
|
|
261
|
+
: classifyAnnotationsEffect(info.annotations);
|
|
225
262
|
const definition: ToolDefinition = brandDefinition("tool", {
|
|
226
263
|
description,
|
|
227
264
|
inputSchema,
|
|
228
|
-
|
|
265
|
+
outputSchema,
|
|
266
|
+
effect,
|
|
229
267
|
execute: async (input: Record<string, unknown>) =>
|
|
230
268
|
formatMcpToolResult(
|
|
231
269
|
connection.name,
|
|
@@ -237,16 +275,16 @@ function toDiscoveredTool(
|
|
|
237
275
|
name: exposedName,
|
|
238
276
|
description,
|
|
239
277
|
inputSchema,
|
|
240
|
-
|
|
278
|
+
outputSchema,
|
|
241
279
|
execution: "server",
|
|
242
280
|
needsApproval: false,
|
|
281
|
+
effect,
|
|
243
282
|
// The server's own annotations ride along (bounded at listing time), so
|
|
244
283
|
// the harness listing carries them and effect classification can read
|
|
245
284
|
// them. Absent stays absent — the fail-closed state.
|
|
246
|
-
|
|
247
|
-
? {}
|
|
248
|
-
: { annotations: info.annotations }),
|
|
285
|
+
annotations: info.annotations,
|
|
249
286
|
advertised: true,
|
|
287
|
+
connection: connection.name,
|
|
250
288
|
definition,
|
|
251
289
|
};
|
|
252
290
|
}
|
|
@@ -27,6 +27,7 @@ import { authorizeCursorAccountConnectors } from "./cursor-account-mcp-auth.js";
|
|
|
27
27
|
import { readDeployTemplate } from "./cursor-agent-template.js";
|
|
28
28
|
import {
|
|
29
29
|
type AgentkitDeployAccepted,
|
|
30
|
+
type AgentkitDeployComponent,
|
|
30
31
|
type AgentkitDeployStatus,
|
|
31
32
|
type AgentkitStopAccepted,
|
|
32
33
|
AgentServeDeployClient,
|
|
@@ -294,10 +295,35 @@ export async function cmdDeploy(options: DeployCliOptions): Promise<number> {
|
|
|
294
295
|
return targets;
|
|
295
296
|
}
|
|
296
297
|
|
|
298
|
+
if (targets.length === 1) {
|
|
299
|
+
return deployOne(ctx, options, targets[0]!);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Multi-agent parent: when every child declares `architecture: "v2"`,
|
|
303
|
+
// the v2 control plane models sibling agents as release components of
|
|
304
|
+
// ONE application, so deploy them together (one app, one component per
|
|
305
|
+
// child) instead of minting a separate application per child. Mixed and
|
|
306
|
+
// v1 parents keep the per-child sequential deploys.
|
|
307
|
+
const manifests: DeployManifest[] = [];
|
|
308
|
+
for (const target of targets) {
|
|
309
|
+
manifests.push(await readDeployManifest(target.dir));
|
|
310
|
+
}
|
|
311
|
+
if (manifests.every((manifest) => manifest.architecture === "v2")) {
|
|
312
|
+
return deployAgentsdkApplication(ctx, options, targets);
|
|
313
|
+
}
|
|
314
|
+
if (
|
|
315
|
+
!ctx.json &&
|
|
316
|
+
manifests.some((manifest) => manifest.architecture === "v2")
|
|
317
|
+
) {
|
|
318
|
+
ctx.err(
|
|
319
|
+
`warning: agents under this parent mix architectures; deploying each separately (v2 children become standalone single-component applications).\n`
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
|
|
297
323
|
// --path is per-agent (relative to the repo root). When deploying several
|
|
298
324
|
// agents, ignore a shared --path so each target can infer its own path.
|
|
299
325
|
let deployOptions = options;
|
|
300
|
-
if (
|
|
326
|
+
if (options.path !== undefined) {
|
|
301
327
|
if (!ctx.json) {
|
|
302
328
|
ctx.err(
|
|
303
329
|
`warning: ignoring --path ${JSON.stringify(options.path)} for a multi-agent deploy; each agent infers its own path from git.\n`
|
|
@@ -306,10 +332,6 @@ export async function cmdDeploy(options: DeployCliOptions): Promise<number> {
|
|
|
306
332
|
deployOptions = { ...options, path: undefined };
|
|
307
333
|
}
|
|
308
334
|
|
|
309
|
-
if (targets.length === 1) {
|
|
310
|
-
return deployOne(ctx, deployOptions, targets[0]!);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
335
|
// Multi-agent batch: deploy sequentially; --json emits an array.
|
|
314
336
|
const jsonResults: unknown[] = [];
|
|
315
337
|
let failures = 0;
|
|
@@ -477,6 +499,19 @@ async function resolveDeployTargets(
|
|
|
477
499
|
return [match];
|
|
478
500
|
}
|
|
479
501
|
|
|
502
|
+
// An all-v2 parent deploys as ONE application (siblings are components
|
|
503
|
+
// of a single app on the v2 control plane), so "deploy the parent" is
|
|
504
|
+
// unambiguous and needs no picker or --all. A child that is v1 — or
|
|
505
|
+
// fails to load — keeps the interactive picker below.
|
|
506
|
+
if (await allChildrenAreV2(children)) {
|
|
507
|
+
if (!ctx.json) {
|
|
508
|
+
ctx.err(
|
|
509
|
+
`Deploying all ${children.length} v2 agents under ${basename(dir)} as one application (pass --slug <name> to deploy a single agent standalone).\n`
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
return [...children];
|
|
513
|
+
}
|
|
514
|
+
|
|
480
515
|
const chooser =
|
|
481
516
|
options.chooseTargets ??
|
|
482
517
|
((agents) =>
|
|
@@ -508,6 +543,27 @@ function formatAgentList(agents: readonly DeployTarget[]): string {
|
|
|
508
543
|
return agents.map((agent, i) => ` ${i + 1}) ${agent.slug}\n`).join("");
|
|
509
544
|
}
|
|
510
545
|
|
|
546
|
+
/**
|
|
547
|
+
* True when every child agent project loads and declares
|
|
548
|
+
* `architecture: "v2"`. Broken projects count as not-v2 so target
|
|
549
|
+
* resolution falls back to the picker instead of failing the whole deploy
|
|
550
|
+
* on a child the user might not even select.
|
|
551
|
+
*/
|
|
552
|
+
async function allChildrenAreV2(
|
|
553
|
+
children: readonly DeployTarget[]
|
|
554
|
+
): Promise<boolean> {
|
|
555
|
+
for (const child of children) {
|
|
556
|
+
try {
|
|
557
|
+
if ((await readDeployManifest(child.dir)).architecture !== "v2") {
|
|
558
|
+
return false;
|
|
559
|
+
}
|
|
560
|
+
} catch {
|
|
561
|
+
return false;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
return true;
|
|
565
|
+
}
|
|
566
|
+
|
|
511
567
|
/**
|
|
512
568
|
* TTY picker for multi-agent parents. Non-interactive callers get `[]`
|
|
513
569
|
* so {@link resolveDeployTargets} can print the --slug/--all hint.
|
|
@@ -777,6 +833,100 @@ async function deployOne(
|
|
|
777
833
|
return 0;
|
|
778
834
|
}
|
|
779
835
|
|
|
836
|
+
/**
|
|
837
|
+
* Multi-agent parent whose children all declare `architecture: "v2"`:
|
|
838
|
+
* deploy ONE application whose release carries a component per child. The
|
|
839
|
+
* application slug derives from the parent directory name; each component
|
|
840
|
+
* key is the child's slug and its path is the child directory relative to
|
|
841
|
+
* the repo root (a shared --path names the parent's directory in the repo).
|
|
842
|
+
*/
|
|
843
|
+
async function deployAgentsdkApplication(
|
|
844
|
+
ctx: DeployCliContext,
|
|
845
|
+
options: DeployCliOptions,
|
|
846
|
+
targets: readonly DeployTarget[]
|
|
847
|
+
): Promise<number> {
|
|
848
|
+
const parentDir = resolve(options.dir ?? ".");
|
|
849
|
+
const slug = slugFromDirectoryName(basename(parentDir));
|
|
850
|
+
if (slug === undefined) {
|
|
851
|
+
ctx.err(
|
|
852
|
+
`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`
|
|
853
|
+
);
|
|
854
|
+
return 1;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
const needsGitInference =
|
|
858
|
+
options.repo === undefined ||
|
|
859
|
+
options.ref === undefined ||
|
|
860
|
+
options.path === undefined;
|
|
861
|
+
const inferred = needsGitInference
|
|
862
|
+
? await inferDeployGitSource(parentDir, {
|
|
863
|
+
...(options.git === undefined ? {} : { git: options.git }),
|
|
864
|
+
})
|
|
865
|
+
: {};
|
|
866
|
+
const gitRepoUrl = options.repo ?? inferred.gitRepoUrl;
|
|
867
|
+
const gitRef = options.ref ?? inferred.gitRef;
|
|
868
|
+
const parentPath = options.path ?? inferred.agentPath;
|
|
869
|
+
|
|
870
|
+
if (gitRepoUrl !== undefined && !gitRepoUrl.startsWith("https://")) {
|
|
871
|
+
ctx.err(
|
|
872
|
+
`Invalid --repo: ${gitRepoUrl} (expected an https:// git repository URL)\n`
|
|
873
|
+
);
|
|
874
|
+
return 1;
|
|
875
|
+
}
|
|
876
|
+
if (gitRepoUrl === undefined) {
|
|
877
|
+
ctx.err(
|
|
878
|
+
`Could not resolve an https:// git repository URL for this deploy.\n` +
|
|
879
|
+
` Pass --repo https://github.com/<owner>/<repo> (inferred from origin when possible).\n`
|
|
880
|
+
);
|
|
881
|
+
return 1;
|
|
882
|
+
}
|
|
883
|
+
for (const repo of options.cursorEventsRepos ?? []) {
|
|
884
|
+
if (!isValidCursorEventRepo(repo)) {
|
|
885
|
+
ctx.err(`Invalid --cursor-events-repo: ${repo} (expected owner/name)\n`);
|
|
886
|
+
return 1;
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
const components: AgentkitDeployComponent[] = targets.map((target) => ({
|
|
891
|
+
componentKey: target.slug,
|
|
892
|
+
agentPath: [parentPath, basename(target.dir)]
|
|
893
|
+
.filter((part): part is string => part !== undefined && part !== "")
|
|
894
|
+
.join("/"),
|
|
895
|
+
}));
|
|
896
|
+
|
|
897
|
+
if (!ctx.json) {
|
|
898
|
+
ctx.err(
|
|
899
|
+
`Deploying "${slug}" as one v2 application with ${targets.length} components (slug from the parent directory name).\n` +
|
|
900
|
+
` architecture: v2\n` +
|
|
901
|
+
` source: ${gitRepoUrl}${gitRef === undefined ? "" : ` @ ${gitRef}`}\n` +
|
|
902
|
+
components
|
|
903
|
+
.map(
|
|
904
|
+
(component) =>
|
|
905
|
+
` component: ${component.componentKey} (${component.agentPath ?? "."})\n`
|
|
906
|
+
)
|
|
907
|
+
.join("")
|
|
908
|
+
);
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
// Components bake sequentially on the control plane, so the default wait
|
|
912
|
+
// budget is per component; otherwise a 2+ component deploy routinely hits
|
|
913
|
+
// the client-side timeout while the server-side deploy is still fine. An
|
|
914
|
+
// explicitly passed timeout always wins.
|
|
915
|
+
const waitCtx =
|
|
916
|
+
options.timeoutMs === undefined
|
|
917
|
+
? { ...ctx, timeoutMs: ctx.timeoutMs * targets.length }
|
|
918
|
+
: ctx;
|
|
919
|
+
|
|
920
|
+
return deployOneAgentsdk(waitCtx, undefined, {
|
|
921
|
+
slug,
|
|
922
|
+
gitRepoUrl,
|
|
923
|
+
gitRef,
|
|
924
|
+
agentPath: undefined,
|
|
925
|
+
components,
|
|
926
|
+
repositories: options.cursorEventsRepos,
|
|
927
|
+
});
|
|
928
|
+
}
|
|
929
|
+
|
|
780
930
|
/**
|
|
781
931
|
* `architecture: "v2"` deploy: POST `/internal/agentkit/deployments` and
|
|
782
932
|
* poll the matching GET. The v2 accept path starts freeze bake; it does
|
|
@@ -790,10 +940,17 @@ async function deployOneAgentsdk(
|
|
|
790
940
|
gitRepoUrl: string;
|
|
791
941
|
gitRef: string | undefined;
|
|
792
942
|
agentPath: string | undefined;
|
|
943
|
+
components?: AgentkitDeployComponent[];
|
|
793
944
|
repositories: string[] | undefined;
|
|
794
945
|
}
|
|
795
946
|
): Promise<number> {
|
|
796
947
|
const { slug } = args;
|
|
948
|
+
const componentsLine =
|
|
949
|
+
args.components === undefined
|
|
950
|
+
? ""
|
|
951
|
+
: ` components: ${args.components
|
|
952
|
+
.map((component) => component.componentKey)
|
|
953
|
+
.join(", ")}\n`;
|
|
797
954
|
let accepted: AgentkitDeployAccepted;
|
|
798
955
|
try {
|
|
799
956
|
accepted = await ctx.client.deployAgentkit({
|
|
@@ -802,6 +959,7 @@ async function deployOneAgentsdk(
|
|
|
802
959
|
gitRepoUrl: args.gitRepoUrl,
|
|
803
960
|
gitRef: args.gitRef,
|
|
804
961
|
agentPath: args.agentPath,
|
|
962
|
+
components: args.components,
|
|
805
963
|
repositories: args.repositories,
|
|
806
964
|
});
|
|
807
965
|
} catch (error) {
|
|
@@ -817,7 +975,8 @@ async function deployOneAgentsdk(
|
|
|
817
975
|
ctx.out(
|
|
818
976
|
`Deploy accepted: ${slug} (team ${ctx.teamId}, v2)\n` +
|
|
819
977
|
` application: ${accepted.applicationId}\n` +
|
|
820
|
-
` release: ${accepted.releaseId}\n`
|
|
978
|
+
` release: ${accepted.releaseId}\n` +
|
|
979
|
+
componentsLine
|
|
821
980
|
);
|
|
822
981
|
}
|
|
823
982
|
return 0;
|
|
@@ -851,7 +1010,12 @@ async function deployOneAgentsdk(
|
|
|
851
1010
|
` status: running\n` +
|
|
852
1011
|
` architecture: v2\n` +
|
|
853
1012
|
` application: ${detail.applicationId}\n` +
|
|
854
|
-
` release: ${detail.releaseId}\n`
|
|
1013
|
+
` release: ${detail.releaseId}\n` +
|
|
1014
|
+
(args.components === undefined
|
|
1015
|
+
? ""
|
|
1016
|
+
: ` components: ${args.components
|
|
1017
|
+
.map((component) => component.componentKey)
|
|
1018
|
+
.join(", ")}\n`)
|
|
855
1019
|
);
|
|
856
1020
|
return 0;
|
|
857
1021
|
}
|
|
@@ -68,13 +68,15 @@ export async function cmdMcpOauth(
|
|
|
68
68
|
const err = options.err ?? ((text) => process.stderr.write(text));
|
|
69
69
|
const out = options.out ?? ((text) => process.stdout.write(text));
|
|
70
70
|
const project = await loadAgentProject(options.dir);
|
|
71
|
-
const
|
|
71
|
+
const authored = [
|
|
72
|
+
...project.agent.connections,
|
|
73
|
+
...(project.agent.hostConnections ?? []),
|
|
74
|
+
];
|
|
75
|
+
const connection = authored.find(
|
|
72
76
|
(entry) => entry.name === options.connection
|
|
73
77
|
);
|
|
74
78
|
if (connection === undefined) {
|
|
75
|
-
const known =
|
|
76
|
-
project.agent.connections.map((entry) => entry.name).join(", ") ||
|
|
77
|
-
"(none)";
|
|
79
|
+
const known = authored.map((entry) => entry.name).join(", ") || "(none)";
|
|
78
80
|
err(
|
|
79
81
|
`${LOG_PREFIX} Unknown MCP connection "${options.connection}". Authored: ${known}.\n`
|
|
80
82
|
);
|