@cursor/july 0.1.92 → 0.1.94
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 +115 -182
- package/dist/channels/deployments/deployments-channel.d.ts +7 -0
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +26 -2
- package/dist/channels/deployments/types.d.ts +8 -0
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/github/github-channel.d.ts +3 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +28 -56
- 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/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/continuation.d.ts +1 -1
- package/dist/continuation.js +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +8 -8
- package/dist/docs/ab.md +7 -13
- package/dist/docs/assets/{ab.md.CVzWxLoB.js → ab.md.DJo5r4R-.js} +4 -4
- package/dist/docs/assets/{ab.md.CVzWxLoB.lean.js → ab.md.DJo5r4R-.lean.js} +1 -1
- package/dist/docs/assets/{app.Bci6CM9E.js → app.CFDEas4I.js} +1 -1
- package/dist/docs/assets/building-with-agents.md.DI4mEzlt.js +13 -0
- package/dist/docs/assets/{building-with-agents.md.DH8A_cHA.lean.js → building-with-agents.md.DI4mEzlt.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DU3U2Ij2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BCPT6xA-.js → VPLocalSearchBox.B1IIYpYS.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BEA8BF3c.js → theme.Ct4NSiLm.js} +2 -2
- package/dist/docs/assets/concepts.md.lwAgBIMI.js +1 -0
- package/dist/docs/assets/{concepts.md.CRfU3bVg.lean.js → concepts.md.lwAgBIMI.lean.js} +1 -1
- package/dist/docs/assets/{deployment.md.DX_hc3ze.js → deployment.md.D9msOFOW.js} +9 -14
- package/dist/docs/assets/{deployment.md.DX_hc3ze.lean.js → deployment.md.D9msOFOW.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.a0SMN6r9.js → evals.md.lfJoEVc8.js} +6 -6
- package/dist/docs/assets/{evals.md.a0SMN6r9.lean.js → evals.md.lfJoEVc8.lean.js} +1 -1
- package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.js → guides_agent-to-agent.md.BDb0t1QV.js} +2 -2
- 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.D06eIzea.js → guides_convert-automation.md.B4sjlodG.js} +2 -2
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.js → guides_github.md.Cnh2mL4a.js} +5 -5
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.lean.js → guides_github.md.Cnh2mL4a.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.js → guides_mcp-oauth.md.DPYmBCbV.js} +7 -9
- package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.lean.js → guides_mcp-oauth.md.DPYmBCbV.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.js → guides_slack.md.C32HsdKk.js} +7 -13
- package/dist/docs/assets/guides_slack.md.C32HsdKk.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.js → guides_webhooks.md.DKdA43Qm.js} +2 -2
- package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.js → hillclimbing.md.DhESf3OO.js} +1 -1
- package/dist/docs/assets/index.md.DRakGHFe.js +5 -0
- package/dist/docs/assets/{index.md.BAaMXLFd.lean.js → index.md.DRakGHFe.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.DsrarzEg.js → quickstart.md.Nj_LjW_a.js} +2 -2
- package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.js → reference_agent-config.md.Cp_x38Nl.js} +3 -3
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.js → reference_channels.md.Cd2f2iyV.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.lean.js → reference_channels.md.Cd2f2iyV.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.js → reference_cli.md.Cw6_ICYG.js} +10 -11
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.lean.js → reference_cli.md.Cw6_ICYG.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DYidrb-j.js → reference_connections.md.BH8Oc0D0.js} +7 -7
- package/dist/docs/assets/{reference_connections.md.DYidrb-j.lean.js → reference_connections.md.BH8Oc0D0.lean.js} +1 -1
- package/dist/docs/assets/reference_hooks.md.a8BJxMR5.js +14 -0
- package/dist/docs/assets/{reference_hooks.md.B9FSgdDe.lean.js → reference_hooks.md.a8BJxMR5.lean.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_instructions.md.DhNCOl7r.js → reference_instructions.md.CR7XSsGk.js} +3 -3
- package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.lean.js → reference_instructions.md.CR7XSsGk.lean.js} +1 -1
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.js +1 -0
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.lean.js +1 -0
- package/dist/docs/assets/reference_project-layout.md.Bv4KOtlB.js +19 -0
- package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.js → reference_prompt.md.DnaD5dNK.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.DNipebiG.js → reference_schedules.md.DI_JrHgq.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +1 -0
- package/dist/docs/assets/{reference_sessions.md.tUFzz98S.lean.js → reference_sessions.md.D0mIh4KK.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.js → reference_skills.md.8son6Hjm.js} +4 -4
- package/dist/docs/assets/{reference_subagents.md.Xoav0AII.js → reference_subagents.md.CfsIloPm.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.js → reference_tools.md.BHeXn2id.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.lean.js → reference_tools.md.BHeXn2id.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.CRDDUtYJ.lean.js → scaffolding-agents.md.D7UUkWw0.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.JbjlHWZ6.js → storage.md.BOHeqk2M.js} +5 -5
- package/dist/docs/assets/{storage.md.JbjlHWZ6.lean.js → storage.md.BOHeqk2M.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.js → templates_agentic-owners.md.DqtPdm6f.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.js → templates_pr-autofixer.md.DU7dQpor.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.lean.js → templates_pr-autofixer.md.DU7dQpor.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.js → templates_security-reviewer.md.CTa7u_l1.js} +2 -2
- package/dist/docs/assets/{templates_security-reviewer.md.ByFyRta2.lean.js → templates_security-reviewer.md.CTa7u_l1.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.Ctv3T8C2.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DYECCZiJ.lean.js → troubleshooting.md.Ctv3T8C2.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +7 -7
- package/dist/docs/building-with-agents.md +5 -11
- package/dist/docs/concepts.html +5 -8
- package/dist/docs/concepts.md +13 -17
- package/dist/docs/deployment.html +13 -18
- package/dist/docs/deployment.md +9 -30
- package/dist/docs/design/agsh.md +406 -0
- package/dist/docs/evals.html +10 -10
- package/dist/docs/evals.md +16 -37
- package/dist/docs/guides/agent-to-agent.html +6 -6
- package/dist/docs/guides/agent-to-agent.md +3 -3
- package/dist/docs/guides/cloud-runtime.html +6 -6
- package/dist/docs/guides/cloud-runtime.md +9 -25
- package/dist/docs/guides/convert-automation.html +7 -7
- package/dist/docs/guides/convert-automation.md +4 -4
- package/dist/docs/guides/github.html +9 -9
- package/dist/docs/guides/github.md +16 -28
- 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 +14 -22
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +11 -17
- package/dist/docs/guides/slack.md +13 -50
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/guides/webhooks.md +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +1 -1
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +0 -36
- package/dist/docs/llms-full.txt +965 -3633
- package/dist/docs/llms.txt +3 -18
- package/dist/docs/quickstart.html +6 -6
- package/dist/docs/quickstart.md +3 -4
- package/dist/docs/reference/agent-config.html +8 -8
- package/dist/docs/reference/agent-config.md +10 -15
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/channels.md +20 -31
- package/dist/docs/reference/cli.html +14 -15
- package/dist/docs/reference/cli.md +29 -38
- package/dist/docs/reference/connections.html +11 -11
- package/dist/docs/reference/connections.md +24 -25
- package/dist/docs/reference/hooks.html +6 -6
- package/dist/docs/reference/hooks.md +12 -17
- package/dist/docs/reference/http-api.html +7 -7
- package/dist/docs/reference/http-api.md +25 -37
- package/dist/docs/reference/instructions.html +6 -6
- package/dist/docs/reference/instructions.md +1 -1
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/playground.md +14 -19
- package/dist/docs/reference/project-layout.html +9 -7
- package/dist/docs/reference/project-layout.md +7 -3
- package/dist/docs/reference/prompt.html +6 -6
- package/dist/docs/reference/prompt.md +1 -1
- package/dist/docs/reference/schedules.html +6 -6
- package/dist/docs/reference/schedules.md +1 -2
- package/dist/docs/reference/sessions.html +5 -12
- package/dist/docs/reference/sessions.md +8 -19
- package/dist/docs/reference/skills.html +8 -8
- package/dist/docs/reference/skills.md +3 -3
- package/dist/docs/reference/subagents.html +6 -6
- package/dist/docs/reference/subagents.md +2 -2
- package/dist/docs/reference/tools.html +8 -8
- package/dist/docs/reference/tools.md +30 -19
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/scaffolding-agents.md +4 -5
- package/dist/docs/storage.html +9 -9
- package/dist/docs/storage.md +37 -80
- package/dist/docs/templates/agentic-owners.html +7 -7
- package/dist/docs/templates/agentic-owners.md +2 -2
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +6 -6
- package/dist/docs/templates/pr-autofixer.md +7 -9
- package/dist/docs/templates/security-reviewer.html +5 -5
- package/dist/docs/templates/security-reviewer.md +2 -3
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +8 -8
- 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/authored-alias-hooks.d.ts +14 -11
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +14 -11
- package/dist/internal/authored-loaders.d.ts +7 -6
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +14 -10
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.js +5 -5
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +7 -4
- package/dist/internal/continuation-channel.d.ts +6 -3
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +44 -40
- package/dist/internal/continuation-identity.d.ts +17 -16
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +109 -36
- 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/deploy-manifest.d.ts +2 -2
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +4 -9
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +91 -13
- package/dist/internal/distribution.d.ts +4 -3
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +4 -3
- package/dist/internal/hosted-delivery-protocol.d.ts +38 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -0
- package/dist/internal/hosted-delivery-protocol.js +70 -0
- package/dist/internal/hosted-delivery.d.ts +35 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -0
- package/dist/internal/hosted-delivery.js +239 -0
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +1 -1
- 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 +186 -63
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +350 -168
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +134 -175
- package/dist/internal/session-engine.d.ts +50 -10
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +221 -68
- package/dist/internal/shallow-clone.d.ts +8 -2
- package/dist/internal/shallow-clone.d.ts.map +1 -1
- package/dist/internal/shallow-clone.js +17 -10
- 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-DDvyC2z6.js → index-B3JCyigB.js} +2 -2
- package/dist/playground/index.html +1 -1
- package/dist/types.d.ts +81 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +19 -0
- package/docs/README.md +0 -36
- package/docs/ab.md +7 -13
- package/docs/building-with-agents.md +5 -11
- package/docs/concepts.md +13 -17
- package/docs/deployment.md +9 -30
- package/docs/design/agsh.md +406 -0
- package/docs/evals.md +16 -37
- package/docs/guides/agent-to-agent.md +3 -3
- package/docs/guides/cloud-runtime.md +9 -25
- package/docs/guides/convert-automation.md +4 -4
- package/docs/guides/github.md +16 -28
- package/docs/guides/mcp-oauth.md +14 -22
- package/docs/guides/slack.md +14 -51
- package/docs/guides/webhooks.md +3 -3
- package/docs/hillclimbing.md +1 -1
- package/docs/quickstart.md +3 -4
- package/docs/reference/agent-config.md +10 -15
- package/docs/reference/channels.md +20 -31
- package/docs/reference/cli.md +29 -38
- package/docs/reference/connections.md +24 -25
- package/docs/reference/hooks.md +12 -17
- package/docs/reference/http-api.md +26 -38
- package/docs/reference/instructions.md +1 -1
- package/docs/reference/playground.md +14 -19
- package/docs/reference/project-layout.md +7 -3
- package/docs/reference/prompt.md +1 -1
- package/docs/reference/schedules.md +1 -2
- package/docs/reference/sessions.md +8 -19
- package/docs/reference/skills.md +3 -3
- package/docs/reference/subagents.md +2 -2
- package/docs/reference/tools.md +30 -19
- package/docs/scaffolding-agents.md +4 -5
- package/docs/storage.md +37 -80
- package/docs/templates/agentic-owners.md +2 -2
- package/docs/templates/pr-autofixer.md +7 -9
- package/docs/templates/security-reviewer.md +2 -3
- package/docs/troubleshooting.md +8 -8
- package/package.json +16 -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/deployments/deployments-channel.ts +32 -2
- package/src/channels/deployments/types.ts +8 -0
- package/src/channels/github/github-channel.ts +71 -21
- 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/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/continuation.ts +1 -1
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +45 -7
- package/src/internal/authored-alias-hooks.ts +14 -11
- package/src/internal/authored-loaders.ts +14 -10
- package/src/internal/cli-deploy.ts +5 -5
- package/src/internal/cli-mcp-oauth.ts +6 -4
- package/src/internal/continuation-channel.ts +62 -45
- package/src/internal/continuation-identity.ts +123 -38
- 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/deploy-manifest.ts +5 -9
- package/src/internal/discovery.ts +107 -13
- package/src/internal/distribution.ts +4 -3
- package/src/internal/fixtures/units-server.ts +52 -0
- package/src/internal/hosted-delivery-protocol.ts +114 -0
- package/src/internal/hosted-delivery.ts +359 -0
- package/src/internal/http-channel.ts +0 -2
- 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 +542 -229
- package/src/internal/server.ts +180 -253
- package/src/internal/session-engine.ts +279 -70
- package/src/internal/shallow-clone.ts +30 -16
- package/src/internal/tool-catalog.ts +106 -0
- package/src/types.ts +99 -40
- package/templates/pr-autofixer/agent/channels/slack.ts +8 -2
- package/templates/triage/README.md +2 -1
- 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/building-with-agents.md.DH8A_cHA.js +0 -13
- package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +0 -1
- package/dist/docs/assets/concepts.md.CRfU3bVg.js +0 -4
- package/dist/docs/assets/example-agents_approval-buddy.md.DNL83puR.js +0 -10
- package/dist/docs/assets/example-agents_approval-buddy.md.DNL83puR.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.C40vHRLc.js +0 -7
- package/dist/docs/assets/example-agents_benny.md.C40vHRLc.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.Dftj_tPp.js +0 -8
- package/dist/docs/assets/example-agents_codebase-wiki.md.Dftj_tPp.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.MrKpQndp.js +0 -23
- package/dist/docs/assets/example-agents_concierge.md.MrKpQndp.lean.js +0 -1
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.js +0 -15
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.lean.js +0 -1
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +0 -2
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.lean.js +0 -1
- package/dist/docs/assets/example-agents_knowledge-base.md.DqKqHQ9u.js +0 -11
- package/dist/docs/assets/example-agents_knowledge-base.md.DqKqHQ9u.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.Bai6D0Ee.js +0 -19
- package/dist/docs/assets/example-agents_security-reviewer.md.Bai6D0Ee.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.lVEAbWFf.js +0 -25
- package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.BSMLIBHr.js +0 -9
- package/dist/docs/assets/guides_cloud-runtime.md.BSMLIBHr.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.DiUmk_Oi.lean.js +0 -1
- package/dist/docs/assets/index.md.BAaMXLFd.js +0 -5
- package/dist/docs/assets/reference_hooks.md.B9FSgdDe.js +0 -14
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.js +0 -11
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.lean.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.lean.js +0 -1
- package/dist/docs/assets/reference_project-layout.md.CwkSbEWT.js +0 -17
- package/dist/docs/assets/reference_sessions.md.tUFzz98S.js +0 -8
- package/dist/docs/assets/scaffolding-agents.md.CRDDUtYJ.js +0 -1
- package/dist/docs/assets/troubleshooting.md.DYECCZiJ.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 -33
- package/dist/docs/example-agents/benny.md +0 -182
- 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 -170
- 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 -49
- package/dist/docs/example-agents/concierge.md +0 -201
- package/dist/docs/example-agents/fsd.html +0 -41
- package/dist/docs/example-agents/fsd.md +0 -329
- package/dist/docs/example-agents/index.html +0 -28
- package/dist/docs/example-agents/index.md +0 -102
- 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 -296
- 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/docs/example-agents/approval-buddy.md +0 -271
- package/docs/example-agents/benny.md +0 -187
- package/docs/example-agents/bugbot.md +0 -234
- package/docs/example-agents/codebase-wiki.md +0 -175
- package/docs/example-agents/codeowners-review.md +0 -197
- package/docs/example-agents/concierge.md +0 -206
- package/docs/example-agents/fsd.md +0 -334
- package/docs/example-agents/index.md +0 -107
- 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 -301
- package/src/channels/slack/cursor-account.ts +0 -202
- package/src/internal/cursor-slack-relay.ts +0 -249
- /package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.lean.js → guides_agent-to-agent.md.BDb0t1QV.lean.js} +0 -0
- /package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.lean.js → guides_convert-automation.md.B4sjlodG.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.lean.js → guides_webhooks.md.DKdA43Qm.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.lean.js → hillclimbing.md.DhESf3OO.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.DsrarzEg.lean.js → quickstart.md.Nj_LjW_a.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.lean.js → reference_agent-config.md.Cp_x38Nl.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.lean.js → reference_project-layout.md.Bv4KOtlB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.lean.js → reference_prompt.md.DnaD5dNK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.DNipebiG.lean.js → reference_schedules.md.DI_JrHgq.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.lean.js → reference_skills.md.8son6Hjm.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.DSJSIpWU.lean.js → templates_agentic-owners.md.DqtPdm6f.lean.js} +0 -0
|
@@ -37,6 +37,7 @@ import type { AgentProject, AgentProjectInfo } from "../types.js";
|
|
|
37
37
|
import {
|
|
38
38
|
applyAgentContinuationDefaults,
|
|
39
39
|
channelContinuationIdentity,
|
|
40
|
+
channelDeclaredEventTypes,
|
|
40
41
|
handshakeChannelContinuation,
|
|
41
42
|
} from "./continuation-channel.js";
|
|
42
43
|
import { CONTINUATION_SELECTORS } from "./continuation-identity.js";
|
|
@@ -95,8 +96,8 @@ export interface AgentDeployManifestDeclarations {
|
|
|
95
96
|
* Scope keys are installation config and are never extracted here.
|
|
96
97
|
* Omitted channel `continuation` is `/v1` (engine minting) unless the
|
|
97
98
|
* agent set `architecture: "v2"`, which stamps kind `/v2` defaults
|
|
98
|
-
* (`github.pr/v2`, `slack.thread/v2`, `origin.pr/v2
|
|
99
|
-
* selectors still override type.
|
|
99
|
+
* (`github.pr/v2`, `slack.thread/v2`, `origin.pr/v2`,
|
|
100
|
+
* `deployments.deployment/v2`). Per-channel selectors still override type.
|
|
100
101
|
*/
|
|
101
102
|
channels: Array<{
|
|
102
103
|
id: string;
|
|
@@ -141,14 +142,9 @@ export function buildAgentDeployManifest(
|
|
|
141
142
|
throw new Error(handshake.error);
|
|
142
143
|
}
|
|
143
144
|
const kind = channel.definition.meta?.kind;
|
|
144
|
-
const
|
|
145
|
-
const originEvents = channel.definition.meta?.originWebhookEvents;
|
|
145
|
+
const declaredEvents = channelDeclaredEventTypes(channel.definition.meta);
|
|
146
146
|
const eventTypes =
|
|
147
|
-
|
|
148
|
-
? [...githubEvents].sort()
|
|
149
|
-
: originEvents !== undefined
|
|
150
|
-
? [...originEvents].sort()
|
|
151
|
-
: undefined;
|
|
147
|
+
declaredEvents === undefined ? undefined : [...declaredEvents].sort();
|
|
152
148
|
return {
|
|
153
149
|
id: channel.id,
|
|
154
150
|
kind,
|
|
@@ -50,8 +50,10 @@ import {
|
|
|
50
50
|
type InlineStdioConnectionConfig,
|
|
51
51
|
type InstructionsDefinition,
|
|
52
52
|
isInlineStdioConnection,
|
|
53
|
+
isToolEffect,
|
|
53
54
|
MAX_RUNNING_TURNS_LIMIT,
|
|
54
55
|
type ModelSetting,
|
|
56
|
+
normalizeConnectionEffects,
|
|
55
57
|
normalizeCursorAccountServers,
|
|
56
58
|
type ResolvedAgent,
|
|
57
59
|
type ScheduleDefinition,
|
|
@@ -423,6 +425,7 @@ async function loadAgent(
|
|
|
423
425
|
tools: [],
|
|
424
426
|
skills: [],
|
|
425
427
|
connections: [],
|
|
428
|
+
hostConnections: [],
|
|
426
429
|
subagents: [],
|
|
427
430
|
seedFiles: [],
|
|
428
431
|
};
|
|
@@ -434,6 +437,7 @@ async function loadAgent(
|
|
|
434
437
|
ctx,
|
|
435
438
|
await resolveMcpConnectionsDir(ctx, agentDir)
|
|
436
439
|
);
|
|
440
|
+
const hostConnections = await loadHostConnections(ctx, agentDir, connections);
|
|
437
441
|
const seedFiles = await loadSeedFiles(ctx, agentDir);
|
|
438
442
|
const subagents = await loadSubagents(ctx, join(agentDir, "subagents"));
|
|
439
443
|
const runtime = resolveRuntime(ctx, agentDir, config?.runtime);
|
|
@@ -553,7 +557,7 @@ async function loadAgent(
|
|
|
553
557
|
agentTools: tools.filter((tool) => tool.execution === "agent").length,
|
|
554
558
|
skills: skills.length,
|
|
555
559
|
seedFiles: seedFiles.length,
|
|
556
|
-
connections: connections.length,
|
|
560
|
+
connections: connections.length + hostConnections.length,
|
|
557
561
|
subagents: subagents.length,
|
|
558
562
|
hasCloudOptions: cloud !== undefined,
|
|
559
563
|
hasLocalSandbox: localSandbox,
|
|
@@ -576,6 +580,7 @@ async function loadAgent(
|
|
|
576
580
|
tools,
|
|
577
581
|
skills,
|
|
578
582
|
connections,
|
|
583
|
+
hostConnections,
|
|
579
584
|
subagents,
|
|
580
585
|
seedFiles,
|
|
581
586
|
};
|
|
@@ -1143,6 +1148,26 @@ function hasAuthorizationHeader(
|
|
|
1143
1148
|
);
|
|
1144
1149
|
}
|
|
1145
1150
|
|
|
1151
|
+
function parseConnectionEffects(
|
|
1152
|
+
effects: unknown
|
|
1153
|
+
): { ok: true; value: ToolEffect[] | undefined } | { ok: false } {
|
|
1154
|
+
if (effects === undefined) {
|
|
1155
|
+
return { ok: true, value: undefined };
|
|
1156
|
+
}
|
|
1157
|
+
const raw = typeof effects === "string" ? [effects] : effects;
|
|
1158
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
1159
|
+
return { ok: false };
|
|
1160
|
+
}
|
|
1161
|
+
const parsed: ToolEffect[] = [];
|
|
1162
|
+
for (const value of raw) {
|
|
1163
|
+
if (!isToolEffect(value)) {
|
|
1164
|
+
return { ok: false };
|
|
1165
|
+
}
|
|
1166
|
+
parsed.push(value);
|
|
1167
|
+
}
|
|
1168
|
+
return { ok: true, value: normalizeConnectionEffects(parsed) };
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1146
1171
|
function connectionHasSpawnOrRemote(connection: ConnectionDefinition): boolean {
|
|
1147
1172
|
if ("cursorAccount" in connection && connection.cursorAccount === true) {
|
|
1148
1173
|
return true;
|
|
@@ -1265,6 +1290,49 @@ async function resolveMcpConnectionsDir(
|
|
|
1265
1290
|
return preferred;
|
|
1266
1291
|
}
|
|
1267
1292
|
|
|
1293
|
+
async function loadHostConnections(
|
|
1294
|
+
ctx: DiscoveryContext,
|
|
1295
|
+
agentDir: string,
|
|
1296
|
+
modelConnections: readonly DiscoveredConnection[]
|
|
1297
|
+
): Promise<DiscoveredConnection[]> {
|
|
1298
|
+
const hostDir = join(agentDir, "host-connections");
|
|
1299
|
+
const loaded = await loadConnections(ctx, hostDir);
|
|
1300
|
+
const modelNames = new Set(
|
|
1301
|
+
modelConnections.map((connection) => connection.name)
|
|
1302
|
+
);
|
|
1303
|
+
const hostConnections: DiscoveredConnection[] = [];
|
|
1304
|
+
for (const connection of loaded) {
|
|
1305
|
+
if (modelNames.has(connection.name)) {
|
|
1306
|
+
ctx.diagnostics.push({
|
|
1307
|
+
severity: "error",
|
|
1308
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1309
|
+
message: `Host connection "${connection.name}" collides with agent/mcp-connections/${connection.name}. Rename one of them.`,
|
|
1310
|
+
});
|
|
1311
|
+
continue;
|
|
1312
|
+
}
|
|
1313
|
+
if (connection.advertiseTools === true) {
|
|
1314
|
+
ctx.diagnostics.push({
|
|
1315
|
+
severity: "error",
|
|
1316
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1317
|
+
message:
|
|
1318
|
+
"Host connections are off the model. `advertiseTools` cannot apply. Drop it.",
|
|
1319
|
+
});
|
|
1320
|
+
continue;
|
|
1321
|
+
}
|
|
1322
|
+
if (connection.auth !== undefined) {
|
|
1323
|
+
ctx.diagnostics.push({
|
|
1324
|
+
severity: "error",
|
|
1325
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1326
|
+
message:
|
|
1327
|
+
"Host connections are off the model. `auth` cannot apply. Use static headers or `oauth: true`.",
|
|
1328
|
+
});
|
|
1329
|
+
continue;
|
|
1330
|
+
}
|
|
1331
|
+
hostConnections.push(connection);
|
|
1332
|
+
}
|
|
1333
|
+
return hostConnections;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1268
1336
|
async function loadConnections(
|
|
1269
1337
|
ctx: DiscoveryContext,
|
|
1270
1338
|
connectionsDir: string
|
|
@@ -1292,6 +1360,15 @@ async function loadConnections(
|
|
|
1292
1360
|
continue;
|
|
1293
1361
|
}
|
|
1294
1362
|
const connection = definition as ConnectionDefinition;
|
|
1363
|
+
if (Object.hasOwn(connection, "hostOnly")) {
|
|
1364
|
+
ctx.diagnostics.push({
|
|
1365
|
+
severity: "error",
|
|
1366
|
+
path: displayPath(ctx, entryPath),
|
|
1367
|
+
message:
|
|
1368
|
+
"MCP connection `hostOnly` was removed. Files under `agent/mcp-connections/` are always visible to the model. Put privileged servers in `agent/host-connections/` so only host tools can call them.",
|
|
1369
|
+
});
|
|
1370
|
+
continue;
|
|
1371
|
+
}
|
|
1295
1372
|
if (
|
|
1296
1373
|
isInlineStdioConnection(connection) &&
|
|
1297
1374
|
connectionHasSpawnOrRemote(connection)
|
|
@@ -1336,24 +1413,37 @@ async function loadConnections(
|
|
|
1336
1413
|
});
|
|
1337
1414
|
continue;
|
|
1338
1415
|
}
|
|
1416
|
+
const parsedEffects = parseConnectionEffects(connection.effects);
|
|
1417
|
+
if (!parsedEffects.ok) {
|
|
1418
|
+
ctx.diagnostics.push({
|
|
1419
|
+
severity: "error",
|
|
1420
|
+
path: displayPath(ctx, entryPath),
|
|
1421
|
+
message:
|
|
1422
|
+
'MCP connection `effects` must be "read", "write", or a non-empty array of those.',
|
|
1423
|
+
});
|
|
1424
|
+
continue;
|
|
1425
|
+
}
|
|
1339
1426
|
if (
|
|
1340
|
-
|
|
1341
|
-
|
|
1427
|
+
parsedEffects.value !== undefined &&
|
|
1428
|
+
connection.advertiseTools !== true
|
|
1342
1429
|
) {
|
|
1343
1430
|
ctx.diagnostics.push({
|
|
1344
1431
|
severity: "error",
|
|
1345
1432
|
path: displayPath(ctx, entryPath),
|
|
1346
1433
|
message:
|
|
1347
|
-
"MCP connection `
|
|
1434
|
+
"MCP connection `effects` filters advertised tools; set `advertiseTools: true` or drop `effects`.",
|
|
1348
1435
|
});
|
|
1349
1436
|
continue;
|
|
1350
1437
|
}
|
|
1351
|
-
if (
|
|
1438
|
+
if (
|
|
1439
|
+
connection.advertiseTools === true &&
|
|
1440
|
+
isInlineStdioConnection(connection)
|
|
1441
|
+
) {
|
|
1352
1442
|
ctx.diagnostics.push({
|
|
1353
1443
|
severity: "error",
|
|
1354
1444
|
path: displayPath(ctx, entryPath),
|
|
1355
1445
|
message:
|
|
1356
|
-
"MCP connection `advertiseTools`
|
|
1446
|
+
"MCP connection `advertiseTools` is not supported on inline `tools` connections — author those as agent/tools/ server tools instead.",
|
|
1357
1447
|
});
|
|
1358
1448
|
continue;
|
|
1359
1449
|
}
|
|
@@ -1445,9 +1535,9 @@ async function loadConnections(
|
|
|
1445
1535
|
name,
|
|
1446
1536
|
transport,
|
|
1447
1537
|
description: connection.description,
|
|
1448
|
-
hostOnly: connection.hostOnly,
|
|
1449
1538
|
auth: connection.auth,
|
|
1450
1539
|
advertiseTools: connection.advertiseTools,
|
|
1540
|
+
effects: parsedEffects.value,
|
|
1451
1541
|
});
|
|
1452
1542
|
}
|
|
1453
1543
|
return connections;
|
|
@@ -1459,7 +1549,6 @@ async function loadInlineStdioConnection(
|
|
|
1459
1549
|
entryPath: string,
|
|
1460
1550
|
connection: InlineStdioConnectionConfig & {
|
|
1461
1551
|
description?: string;
|
|
1462
|
-
hostOnly?: boolean;
|
|
1463
1552
|
}
|
|
1464
1553
|
): Promise<DiscoveredConnection | undefined> {
|
|
1465
1554
|
const tools = connection.tools;
|
|
@@ -1510,7 +1599,6 @@ async function loadInlineStdioConnection(
|
|
|
1510
1599
|
name,
|
|
1511
1600
|
transport,
|
|
1512
1601
|
description: connection.description,
|
|
1513
|
-
hostOnly: connection.hostOnly,
|
|
1514
1602
|
};
|
|
1515
1603
|
} catch (error) {
|
|
1516
1604
|
ctx.diagnostics.push({
|
|
@@ -1562,6 +1650,7 @@ async function warnUnsupportedSubagentSlots(
|
|
|
1562
1650
|
["tools", "tools"],
|
|
1563
1651
|
["skills", "skills"],
|
|
1564
1652
|
["mcp-connections", "MCP connections"],
|
|
1653
|
+
["host-connections", "host MCP connections"],
|
|
1565
1654
|
["connections", "MCP connections"],
|
|
1566
1655
|
["subagents", "nested subagents"],
|
|
1567
1656
|
["channels", "channels"],
|
|
@@ -1670,8 +1759,8 @@ function checkGrokBotRuntimeLimitations(
|
|
|
1670
1759
|
}
|
|
1671
1760
|
if (counts.connections > 0) {
|
|
1672
1761
|
error(
|
|
1673
|
-
displayPath(ctx,
|
|
1674
|
-
"MCP connections are not wired into grokbot turns yet. Remove them or run the agent on the local runtime."
|
|
1762
|
+
displayPath(ctx, agentDir),
|
|
1763
|
+
"MCP connections (agent/mcp-connections/ or agent/host-connections/) are not wired into grokbot turns yet. Remove them or run the agent on the local runtime."
|
|
1675
1764
|
);
|
|
1676
1765
|
}
|
|
1677
1766
|
if (counts.subagents > 0) {
|
|
@@ -2256,6 +2345,7 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
|
|
|
2256
2345
|
description: tool.description,
|
|
2257
2346
|
execution: tool.execution,
|
|
2258
2347
|
needsApproval: tool.needsApproval,
|
|
2348
|
+
effect: tool.effect,
|
|
2259
2349
|
inputSchema: tool.inputSchema,
|
|
2260
2350
|
})),
|
|
2261
2351
|
skills: agent.skills.map((skill) => ({
|
|
@@ -2265,8 +2355,8 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
|
|
|
2265
2355
|
connections: agent.connections.map((connection) => ({
|
|
2266
2356
|
name: connection.name,
|
|
2267
2357
|
transport: connectionTransportLabel(connection.transport),
|
|
2268
|
-
hostOnly: connection.hostOnly,
|
|
2269
2358
|
advertiseTools: connection.advertiseTools,
|
|
2359
|
+
effects: connection.effects,
|
|
2270
2360
|
cursorAccountServers:
|
|
2271
2361
|
"cursorAccount" in connection.transport
|
|
2272
2362
|
? (connection.transport.servers ?? "*")
|
|
@@ -2311,6 +2401,9 @@ export function projectInfo(project: AgentProject): AgentProjectInfo {
|
|
|
2311
2401
|
if (meta?.originWebhookEvents !== undefined) {
|
|
2312
2402
|
info.originWebhookEvents = meta.originWebhookEvents;
|
|
2313
2403
|
}
|
|
2404
|
+
if (meta?.deploymentEventTypes !== undefined) {
|
|
2405
|
+
info.deploymentEventTypes = meta.deploymentEventTypes;
|
|
2406
|
+
}
|
|
2314
2407
|
if (meta?.slackChannelPosts !== undefined) {
|
|
2315
2408
|
info.slackChannelPosts = meta.slackChannelPosts;
|
|
2316
2409
|
}
|
|
@@ -2445,6 +2538,7 @@ async function warnUnknownSlots(
|
|
|
2445
2538
|
"tools",
|
|
2446
2539
|
"skills",
|
|
2447
2540
|
"mcp-connections",
|
|
2541
|
+
"host-connections",
|
|
2448
2542
|
// Legacy slot name; resolveMcpConnectionsDir warns and still loads it.
|
|
2449
2543
|
"connections",
|
|
2450
2544
|
"subagents",
|
|
@@ -2454,7 +2548,7 @@ async function warnUnknownSlots(
|
|
|
2454
2548
|
"ab",
|
|
2455
2549
|
"sandbox",
|
|
2456
2550
|
"lib",
|
|
2457
|
-
// Vite playground custom tool chips (
|
|
2551
|
+
// Vite playground custom tool chips (agent/playground/tools).
|
|
2458
2552
|
"playground",
|
|
2459
2553
|
]);
|
|
2460
2554
|
for (const entry of await sortedEntries(agentDir)) {
|
|
@@ -21,8 +21,9 @@ export const PACKAGE_NAME = "@cursor/july";
|
|
|
21
21
|
export const LEGACY_PACKAGE_NAME = "@anysphere/agent-serve";
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* Future public package name; aliased with the same
|
|
25
|
-
* as PACKAGE_NAME so the eventual rename keeps authored imports
|
|
24
|
+
* Future public package name; aliased with the same direct-to-running-dist
|
|
25
|
+
* semantics as PACKAGE_NAME so the eventual rename keeps authored imports
|
|
26
|
+
* on the CLI's module identity.
|
|
26
27
|
*/
|
|
27
28
|
export const AGENTKIT_PACKAGE_NAME = "@cursor/agentkit";
|
|
28
29
|
|
|
@@ -117,7 +118,7 @@ export function formatCliVersion(options?: { json?: boolean }): string {
|
|
|
117
118
|
* runtime mirror of the package `exports` map (the source of truth;
|
|
118
119
|
* `authored-loaders.test.ts` asserts they stay identical). The alias hooks
|
|
119
120
|
* derive `@anysphere/agent-serve[/x]`, `@cursor/july[/x]`, and
|
|
120
|
-
* `@cursor/agentkit[/x]` targets from this list.
|
|
121
|
+
* `@cursor/agentkit[/x]` direct targets from this list.
|
|
121
122
|
*/
|
|
122
123
|
export const AUTHORING_ENTRY_FILES: ReadonlyArray<
|
|
123
124
|
readonly [subpath: string, file: string]
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny stdio MCP server used by mcp-host tests.
|
|
3
|
+
*
|
|
4
|
+
* Exposed as the `units` connection so the host can list and call tools
|
|
5
|
+
* over a real stdio transport.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
|
|
12
|
+
const server = new McpServer({
|
|
13
|
+
name: "weather-units",
|
|
14
|
+
version: "0.1.0",
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
server.tool(
|
|
18
|
+
"celsius_to_fahrenheit",
|
|
19
|
+
"Convert a temperature from Celsius to Fahrenheit.",
|
|
20
|
+
{ value: z.number().describe("Temperature in °C") },
|
|
21
|
+
async ({ value }) => {
|
|
22
|
+
const fahrenheit = Math.round((value * 9) / 5 + 32);
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: "text",
|
|
27
|
+
text: JSON.stringify({ celsius: value, fahrenheit }),
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
server.tool(
|
|
35
|
+
"fahrenheit_to_celsius",
|
|
36
|
+
"Convert a temperature from Fahrenheit to Celsius.",
|
|
37
|
+
{ value: z.number().describe("Temperature in Fahrenheit") },
|
|
38
|
+
async ({ value }) => {
|
|
39
|
+
const celsius = Math.round(((value - 32) * 5) / 9);
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: "text",
|
|
44
|
+
text: JSON.stringify({ fahrenheit: value, celsius }),
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const transport = new StdioServerTransport();
|
|
52
|
+
await server.connect(transport);
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export const HOSTED_DELIVERY_PROTOCOL_VERSION = 2;
|
|
2
|
+
export const HOSTED_DELIVERY_HEADER = "x-agent-sdk-hosted-delivery";
|
|
3
|
+
export const HOSTED_ADMISSION_PATH = "/v1/internal/hosted-admission";
|
|
4
|
+
export const HOSTED_EXECUTION_PATH = "/v1/internal/hosted-execution";
|
|
5
|
+
|
|
6
|
+
export type HostedAdmission = {
|
|
7
|
+
v: 2;
|
|
8
|
+
channelId: string;
|
|
9
|
+
channelKind: "github";
|
|
10
|
+
eventType: string;
|
|
11
|
+
deliveryId: string;
|
|
12
|
+
sessionMode: "event" | "continuation";
|
|
13
|
+
mailboxContinuationKey: string;
|
|
14
|
+
payload: unknown;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type HostedAdmissionOutcome =
|
|
18
|
+
| { ok: true; v: 2; outcome: "skip" | "task" }
|
|
19
|
+
| { ok: true; v: 2; outcome: "send"; admissionToken: string };
|
|
20
|
+
|
|
21
|
+
export type HostedExecution = {
|
|
22
|
+
v: 2;
|
|
23
|
+
admissionToken: string;
|
|
24
|
+
sessionPublicId: string;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export type HostedExecutionOutcome = {
|
|
28
|
+
ok: true;
|
|
29
|
+
v: 2;
|
|
30
|
+
outcome: "send";
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const DELIVERY_KEYS = new Set([
|
|
34
|
+
"v",
|
|
35
|
+
"channelId",
|
|
36
|
+
"channelKind",
|
|
37
|
+
"eventType",
|
|
38
|
+
"deliveryId",
|
|
39
|
+
"sessionMode",
|
|
40
|
+
"mailboxContinuationKey",
|
|
41
|
+
"payload",
|
|
42
|
+
]);
|
|
43
|
+
const EXECUTION_KEYS = new Set(["v", "admissionToken", "sessionPublicId"]);
|
|
44
|
+
|
|
45
|
+
function boundedString(value: unknown, max: number): value is string {
|
|
46
|
+
return typeof value === "string" && value.length > 0 && value.length <= max;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function parseHostedAdmission(
|
|
50
|
+
value: unknown
|
|
51
|
+
): HostedAdmission | undefined {
|
|
52
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const body = value as Record<string, unknown>;
|
|
56
|
+
if (
|
|
57
|
+
Object.keys(body).some((key) => !DELIVERY_KEYS.has(key)) ||
|
|
58
|
+
!Object.hasOwn(body, "payload") ||
|
|
59
|
+
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
60
|
+
!boundedString(body.channelId, 128) ||
|
|
61
|
+
body.channelKind !== "github" ||
|
|
62
|
+
!boundedString(body.eventType, 128) ||
|
|
63
|
+
!boundedString(body.deliveryId, 256) ||
|
|
64
|
+
(body.sessionMode !== "event" && body.sessionMode !== "continuation") ||
|
|
65
|
+
!boundedString(body.mailboxContinuationKey, 512)
|
|
66
|
+
) {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
const prefix = body.sessionMode === "event" ? "evt:" : "cont:";
|
|
70
|
+
return body.mailboxContinuationKey.startsWith(prefix)
|
|
71
|
+
? (body as HostedAdmission)
|
|
72
|
+
: undefined;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function parseHostedExecution(
|
|
76
|
+
value: unknown
|
|
77
|
+
): HostedExecution | undefined {
|
|
78
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const body = value as Record<string, unknown>;
|
|
82
|
+
if (
|
|
83
|
+
Object.keys(body).some((key) => !EXECUTION_KEYS.has(key)) ||
|
|
84
|
+
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
85
|
+
!boundedString(body.admissionToken, 128) ||
|
|
86
|
+
typeof body.sessionPublicId !== "string" ||
|
|
87
|
+
!/^ses_[a-f0-9]{24}$/.test(body.sessionPublicId)
|
|
88
|
+
) {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
return body as HostedExecution;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function parseHostedAdmissionOutcome(
|
|
95
|
+
value: unknown
|
|
96
|
+
): HostedAdmissionOutcome | undefined {
|
|
97
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const body = value as Record<string, unknown>;
|
|
101
|
+
if (
|
|
102
|
+
body.ok !== true ||
|
|
103
|
+
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
104
|
+
(body.outcome !== "skip" &&
|
|
105
|
+
body.outcome !== "send" &&
|
|
106
|
+
body.outcome !== "task")
|
|
107
|
+
) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
if (body.outcome === "send" && !boundedString(body.admissionToken, 128)) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
return body as HostedAdmissionOutcome;
|
|
114
|
+
}
|