@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
|
@@ -31,7 +31,7 @@ import { pathToFileURL } from "node:url";
|
|
|
31
31
|
import { resolveABMaxPlaygroundSessions } from "../ab.js";
|
|
32
32
|
import { resolveArtifactsMax } from "../artifacts.js";
|
|
33
33
|
import { httpChannel } from "../channels.js";
|
|
34
|
-
import { cursorAccountServersHasMixedWildcard, DEFAULT_MODEL, isInlineStdioConnection, MAX_RUNNING_TURNS_LIMIT, normalizeCursorAccountServers, toPublicCloudInfo, } from "../types.js";
|
|
34
|
+
import { cursorAccountServersHasMixedWildcard, DEFAULT_MODEL, isInlineStdioConnection, isToolEffect, MAX_RUNNING_TURNS_LIMIT, normalizeConnectionEffects, normalizeCursorAccountServers, toPublicCloudInfo, } from "../types.js";
|
|
35
35
|
import { registerAuthoredModuleLoaders } from "./authored-loaders.js";
|
|
36
36
|
import { normalizePositiveInt } from "./bounded-int.js";
|
|
37
37
|
import { getDefinitionKind } from "./brand.js";
|
|
@@ -212,7 +212,7 @@ export function loadAgentProject(dir_1) {
|
|
|
212
212
|
const hooks = yield loadHooks(ctx, join(agentDir, "hooks"));
|
|
213
213
|
const abs = yield loadABs(ctx, agentDir);
|
|
214
214
|
const abConfig = yield loadABConfig(ctx, agentDir);
|
|
215
|
-
const storage = yield loadStorage(ctx, agentDir);
|
|
215
|
+
const storage = yield loadStorage(ctx, agentDir, agent.architecture);
|
|
216
216
|
const artifacts = yield loadArtifacts(ctx, agentDir);
|
|
217
217
|
const otel = yield loadOtel(ctx, agentDir);
|
|
218
218
|
yield appendArtifactTool(ctx, agentDir, agent, artifacts);
|
|
@@ -306,11 +306,12 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
306
306
|
}
|
|
307
307
|
return Object.assign(Object.assign(Object.assign(Object.assign({ name }, ((config === null || config === void 0 ? void 0 : config.description) === undefined
|
|
308
308
|
? {}
|
|
309
|
-
: { description: config.description })), ((config === null || config === void 0 ? void 0 : config.model) === undefined ? {} : { model: config.model })), (instructions === undefined ? {} : { instructions })), { runtime: "local", tools: [], skills: [], connections: [], subagents: [], seedFiles: [] });
|
|
309
|
+
: { description: config.description })), ((config === null || config === void 0 ? void 0 : config.model) === undefined ? {} : { model: config.model })), (instructions === undefined ? {} : { instructions })), { runtime: "local", tools: [], skills: [], connections: [], hostConnections: [], subagents: [], seedFiles: [] });
|
|
310
310
|
}
|
|
311
311
|
const tools = yield loadTools(ctx, join(agentDir, "tools"));
|
|
312
312
|
const skills = yield loadSkills(ctx, join(agentDir, "skills"));
|
|
313
313
|
const connections = yield loadConnections(ctx, yield resolveMcpConnectionsDir(ctx, agentDir));
|
|
314
|
+
const hostConnections = yield loadHostConnections(ctx, agentDir, connections);
|
|
314
315
|
const seedFiles = yield loadSeedFiles(ctx, agentDir);
|
|
315
316
|
const subagents = yield loadSubagents(ctx, join(agentDir, "subagents"));
|
|
316
317
|
const runtime = resolveRuntime(ctx, agentDir, config === null || config === void 0 ? void 0 : config.runtime);
|
|
@@ -415,7 +416,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
415
416
|
agentTools: tools.filter((tool) => tool.execution === "agent").length,
|
|
416
417
|
skills: skills.length,
|
|
417
418
|
seedFiles: seedFiles.length,
|
|
418
|
-
connections: connections.length,
|
|
419
|
+
connections: connections.length + hostConnections.length,
|
|
419
420
|
subagents: subagents.length,
|
|
420
421
|
hasCloudOptions: cloud !== undefined,
|
|
421
422
|
hasLocalSandbox: localSandbox,
|
|
@@ -430,6 +431,7 @@ function loadAgent(ctx, agentDir, options) {
|
|
|
430
431
|
concurrency }), (architecture === undefined ? {} : { architecture })), { tools,
|
|
431
432
|
skills,
|
|
432
433
|
connections,
|
|
434
|
+
hostConnections,
|
|
433
435
|
subagents,
|
|
434
436
|
seedFiles });
|
|
435
437
|
});
|
|
@@ -904,6 +906,23 @@ function hasAuthorizationHeader(headers) {
|
|
|
904
906
|
}
|
|
905
907
|
return Object.keys(headers).some((key) => key.toLowerCase() === "authorization");
|
|
906
908
|
}
|
|
909
|
+
function parseConnectionEffects(effects) {
|
|
910
|
+
if (effects === undefined) {
|
|
911
|
+
return { ok: true, value: undefined };
|
|
912
|
+
}
|
|
913
|
+
const raw = typeof effects === "string" ? [effects] : effects;
|
|
914
|
+
if (!Array.isArray(raw) || raw.length === 0) {
|
|
915
|
+
return { ok: false };
|
|
916
|
+
}
|
|
917
|
+
const parsed = [];
|
|
918
|
+
for (const value of raw) {
|
|
919
|
+
if (!isToolEffect(value)) {
|
|
920
|
+
return { ok: false };
|
|
921
|
+
}
|
|
922
|
+
parsed.push(value);
|
|
923
|
+
}
|
|
924
|
+
return { ok: true, value: normalizeConnectionEffects(parsed) };
|
|
925
|
+
}
|
|
907
926
|
function connectionHasSpawnOrRemote(connection) {
|
|
908
927
|
if ("cursorAccount" in connection && connection.cursorAccount === true) {
|
|
909
928
|
return true;
|
|
@@ -1002,6 +1021,42 @@ function resolveMcpConnectionsDir(ctx, agentDir) {
|
|
|
1002
1021
|
return preferred;
|
|
1003
1022
|
});
|
|
1004
1023
|
}
|
|
1024
|
+
function loadHostConnections(ctx, agentDir, modelConnections) {
|
|
1025
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1026
|
+
const hostDir = join(agentDir, "host-connections");
|
|
1027
|
+
const loaded = yield loadConnections(ctx, hostDir);
|
|
1028
|
+
const modelNames = new Set(modelConnections.map((connection) => connection.name));
|
|
1029
|
+
const hostConnections = [];
|
|
1030
|
+
for (const connection of loaded) {
|
|
1031
|
+
if (modelNames.has(connection.name)) {
|
|
1032
|
+
ctx.diagnostics.push({
|
|
1033
|
+
severity: "error",
|
|
1034
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1035
|
+
message: `Host connection "${connection.name}" collides with agent/mcp-connections/${connection.name}. Rename one of them.`,
|
|
1036
|
+
});
|
|
1037
|
+
continue;
|
|
1038
|
+
}
|
|
1039
|
+
if (connection.advertiseTools === true) {
|
|
1040
|
+
ctx.diagnostics.push({
|
|
1041
|
+
severity: "error",
|
|
1042
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1043
|
+
message: "Host connections are off the model. `advertiseTools` cannot apply. Drop it.",
|
|
1044
|
+
});
|
|
1045
|
+
continue;
|
|
1046
|
+
}
|
|
1047
|
+
if (connection.auth !== undefined) {
|
|
1048
|
+
ctx.diagnostics.push({
|
|
1049
|
+
severity: "error",
|
|
1050
|
+
path: displayPath(ctx, join(hostDir, `${connection.name}.ts`)),
|
|
1051
|
+
message: "Host connections are off the model. `auth` cannot apply. Use static headers or `oauth: true`.",
|
|
1052
|
+
});
|
|
1053
|
+
continue;
|
|
1054
|
+
}
|
|
1055
|
+
hostConnections.push(connection);
|
|
1056
|
+
}
|
|
1057
|
+
return hostConnections;
|
|
1058
|
+
});
|
|
1059
|
+
}
|
|
1005
1060
|
function loadConnections(ctx, connectionsDir) {
|
|
1006
1061
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1007
1062
|
if (!(yield isDirectory(connectionsDir))) {
|
|
@@ -1027,6 +1082,14 @@ function loadConnections(ctx, connectionsDir) {
|
|
|
1027
1082
|
continue;
|
|
1028
1083
|
}
|
|
1029
1084
|
const connection = definition;
|
|
1085
|
+
if (Object.hasOwn(connection, "hostOnly")) {
|
|
1086
|
+
ctx.diagnostics.push({
|
|
1087
|
+
severity: "error",
|
|
1088
|
+
path: displayPath(ctx, entryPath),
|
|
1089
|
+
message: "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.",
|
|
1090
|
+
});
|
|
1091
|
+
continue;
|
|
1092
|
+
}
|
|
1030
1093
|
if (isInlineStdioConnection(connection) &&
|
|
1031
1094
|
connectionHasSpawnOrRemote(connection)) {
|
|
1032
1095
|
ctx.diagnostics.push({
|
|
@@ -1062,20 +1125,30 @@ function loadConnections(ctx, connectionsDir) {
|
|
|
1062
1125
|
});
|
|
1063
1126
|
continue;
|
|
1064
1127
|
}
|
|
1065
|
-
|
|
1066
|
-
|
|
1128
|
+
const parsedEffects = parseConnectionEffects(connection.effects);
|
|
1129
|
+
if (!parsedEffects.ok) {
|
|
1067
1130
|
ctx.diagnostics.push({
|
|
1068
1131
|
severity: "error",
|
|
1069
1132
|
path: displayPath(ctx, entryPath),
|
|
1070
|
-
message:
|
|
1133
|
+
message: 'MCP connection `effects` must be "read", "write", or a non-empty array of those.',
|
|
1071
1134
|
});
|
|
1072
1135
|
continue;
|
|
1073
1136
|
}
|
|
1074
|
-
if (
|
|
1137
|
+
if (parsedEffects.value !== undefined &&
|
|
1138
|
+
connection.advertiseTools !== true) {
|
|
1075
1139
|
ctx.diagnostics.push({
|
|
1076
1140
|
severity: "error",
|
|
1077
1141
|
path: displayPath(ctx, entryPath),
|
|
1078
|
-
message: "MCP connection `
|
|
1142
|
+
message: "MCP connection `effects` filters advertised tools; set `advertiseTools: true` or drop `effects`.",
|
|
1143
|
+
});
|
|
1144
|
+
continue;
|
|
1145
|
+
}
|
|
1146
|
+
if (connection.advertiseTools === true &&
|
|
1147
|
+
isInlineStdioConnection(connection)) {
|
|
1148
|
+
ctx.diagnostics.push({
|
|
1149
|
+
severity: "error",
|
|
1150
|
+
path: displayPath(ctx, entryPath),
|
|
1151
|
+
message: "MCP connection `advertiseTools` is not supported on inline `tools` connections — author those as agent/tools/ server tools instead.",
|
|
1079
1152
|
});
|
|
1080
1153
|
continue;
|
|
1081
1154
|
}
|
|
@@ -1149,9 +1222,9 @@ function loadConnections(ctx, connectionsDir) {
|
|
|
1149
1222
|
name,
|
|
1150
1223
|
transport,
|
|
1151
1224
|
description: connection.description,
|
|
1152
|
-
hostOnly: connection.hostOnly,
|
|
1153
1225
|
auth: connection.auth,
|
|
1154
1226
|
advertiseTools: connection.advertiseTools,
|
|
1227
|
+
effects: parsedEffects.value,
|
|
1155
1228
|
});
|
|
1156
1229
|
}
|
|
1157
1230
|
return connections;
|
|
@@ -1207,7 +1280,6 @@ function loadInlineStdioConnection(ctx, name, entryPath, connection) {
|
|
|
1207
1280
|
name,
|
|
1208
1281
|
transport,
|
|
1209
1282
|
description: connection.description,
|
|
1210
|
-
hostOnly: connection.hostOnly,
|
|
1211
1283
|
};
|
|
1212
1284
|
}
|
|
1213
1285
|
catch (error) {
|
|
@@ -1253,6 +1325,7 @@ function warnUnsupportedSubagentSlots(ctx, subagentDir) {
|
|
|
1253
1325
|
["tools", "tools"],
|
|
1254
1326
|
["skills", "skills"],
|
|
1255
1327
|
["mcp-connections", "MCP connections"],
|
|
1328
|
+
["host-connections", "host MCP connections"],
|
|
1256
1329
|
["connections", "MCP connections"],
|
|
1257
1330
|
["subagents", "nested subagents"],
|
|
1258
1331
|
["channels", "channels"],
|
|
@@ -1331,7 +1404,7 @@ function checkGrokBotRuntimeLimitations(ctx, agentDir, counts) {
|
|
|
1331
1404
|
error(displayPath(ctx, join(agentDir, "tools")), 'Server tools (execution: "server", including opted-in builtinTools) are not reachable from grokbot turns yet. Remove them or run the agent on the local runtime.');
|
|
1332
1405
|
}
|
|
1333
1406
|
if (counts.connections > 0) {
|
|
1334
|
-
error(displayPath(ctx,
|
|
1407
|
+
error(displayPath(ctx, agentDir), "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.");
|
|
1335
1408
|
}
|
|
1336
1409
|
if (counts.subagents > 0) {
|
|
1337
1410
|
error(displayPath(ctx, join(agentDir, "subagents")), "Authored subagents are not available on grokbot turns (the Grok Bot harness runs its own subagent set). Remove them or run the agent on the local runtime.");
|
|
@@ -1655,12 +1728,32 @@ function loadABConfig(ctx, agentDir) {
|
|
|
1655
1728
|
// ============================================================================
|
|
1656
1729
|
// Storage (agent/storage.ts)
|
|
1657
1730
|
// ============================================================================
|
|
1658
|
-
function loadStorage(ctx, agentDir) {
|
|
1731
|
+
function loadStorage(ctx, agentDir, architecture) {
|
|
1659
1732
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1660
1733
|
const path = yield findModuleFile(agentDir, "storage");
|
|
1661
1734
|
if (path === undefined) {
|
|
1662
1735
|
return undefined;
|
|
1663
1736
|
}
|
|
1737
|
+
if (architecture === "v2") {
|
|
1738
|
+
// Storage is a hosting-mode decision on v2, made by
|
|
1739
|
+
// framework-storage-selection.ts: the state root when self-hosted,
|
|
1740
|
+
// Cursor-managed storage on Cursor hosting. Fail early (error
|
|
1741
|
+
// diagnostics refuse serve and deploy) rather than silently running
|
|
1742
|
+
// with storage the author believes they configured. Not imported.
|
|
1743
|
+
ctx.diagnostics.push({
|
|
1744
|
+
severity: "error",
|
|
1745
|
+
path: displayPath(ctx, path),
|
|
1746
|
+
message: 'agent/storage.ts is not supported on architecture "v2": the platform selects storage (the local state root when self-hosted; Cursor-managed storage on Cursor hosting). Delete the file.',
|
|
1747
|
+
});
|
|
1748
|
+
return undefined;
|
|
1749
|
+
}
|
|
1750
|
+
// v1 keeps loading the authored sink, with notice: defineStorage is going
|
|
1751
|
+
// away with the v1 control plane.
|
|
1752
|
+
ctx.diagnostics.push({
|
|
1753
|
+
severity: "warning",
|
|
1754
|
+
path: displayPath(ctx, path),
|
|
1755
|
+
message: 'agent/storage.ts (defineStorage) is deprecated and going away: architecture "v2" selects storage automatically (the local state root when self-hosted; Cursor-managed storage on Cursor hosting). Still honored on v1.',
|
|
1756
|
+
});
|
|
1664
1757
|
const definition = yield importDefault(ctx, path, "storage");
|
|
1665
1758
|
return definition;
|
|
1666
1759
|
});
|
|
@@ -1814,6 +1907,7 @@ export function projectInfo(project) {
|
|
|
1814
1907
|
description: tool.description,
|
|
1815
1908
|
execution: tool.execution,
|
|
1816
1909
|
needsApproval: tool.needsApproval,
|
|
1910
|
+
effect: tool.effect,
|
|
1817
1911
|
inputSchema: tool.inputSchema,
|
|
1818
1912
|
})), skills: agent.skills.map((skill) => ({
|
|
1819
1913
|
name: skill.name,
|
|
@@ -1821,8 +1915,8 @@ export function projectInfo(project) {
|
|
|
1821
1915
|
})), connections: agent.connections.map((connection) => { var _a; return ({
|
|
1822
1916
|
name: connection.name,
|
|
1823
1917
|
transport: connectionTransportLabel(connection.transport),
|
|
1824
|
-
hostOnly: connection.hostOnly,
|
|
1825
1918
|
advertiseTools: connection.advertiseTools,
|
|
1919
|
+
effects: connection.effects,
|
|
1826
1920
|
cursorAccountServers: "cursorAccount" in connection.transport
|
|
1827
1921
|
? ((_a = connection.transport.servers) !== null && _a !== void 0 ? _a : "*")
|
|
1828
1922
|
: undefined,
|
|
@@ -1954,6 +2048,7 @@ function warnUnknownSlots(ctx, agentDir) {
|
|
|
1954
2048
|
"tools",
|
|
1955
2049
|
"skills",
|
|
1956
2050
|
"mcp-connections",
|
|
2051
|
+
"host-connections",
|
|
1957
2052
|
// Legacy slot name; resolveMcpConnectionsDir warns and still loads it.
|
|
1958
2053
|
"connections",
|
|
1959
2054
|
"subagents",
|
|
@@ -1963,7 +2058,7 @@ function warnUnknownSlots(ctx, agentDir) {
|
|
|
1963
2058
|
"ab",
|
|
1964
2059
|
"sandbox",
|
|
1965
2060
|
"lib",
|
|
1966
|
-
// Vite playground custom tool chips (
|
|
2061
|
+
// Vite playground custom tool chips (agent/playground/tools).
|
|
1967
2062
|
"playground",
|
|
1968
2063
|
]);
|
|
1969
2064
|
for (const entry of yield sortedEntries(agentDir)) {
|
|
@@ -2,36 +2,52 @@
|
|
|
2
2
|
* Which backend framework session state is mirrored to.
|
|
3
3
|
*
|
|
4
4
|
* Framework state — session records, event chunks, the continuation index —
|
|
5
|
-
* is how a session outlives the process that served it.
|
|
6
|
-
* exists only when the agent author wrote `agent/storage.ts`,
|
|
7
|
-
* platform durability an agent-level decision: of the
|
|
8
|
-
* some choose `cursorHostedStorage()` and some choose
|
|
9
|
-
* disk, lost on pod replacement), and one selects
|
|
10
|
-
* reading the deployment-id environment variable
|
|
5
|
+
* is how a session outlives the process that served it. On architecture v1
|
|
6
|
+
* that mirror exists only when the agent author wrote `agent/storage.ts`,
|
|
7
|
+
* which makes platform durability an agent-level decision: of the
|
|
8
|
+
* first-party agents, some choose `cursorHostedStorage()` and some choose
|
|
9
|
+
* `fileKv()` (pod-local disk, lost on pod replacement), and one selects
|
|
10
|
+
* between them at runtime by reading the deployment-id environment variable
|
|
11
|
+
* itself.
|
|
11
12
|
*
|
|
12
|
-
* That selection is a hosting-mode question, not an authoring question
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* That selection is a hosting-mode question, not an authoring question.
|
|
14
|
+
* Architecture v2 moves it here: `agent/storage.ts` is rejected at
|
|
15
|
+
* discovery (error diagnostic, so serve and deploy fail early), and the
|
|
16
|
+
* platform picks the default —
|
|
17
|
+
*
|
|
18
|
+
* - **Cursor-managed hosting** (the deployment-generation environment
|
|
19
|
+
* variable is set, same signal that registers `GET /v1/manifest`):
|
|
20
|
+
* the Cursor-hosted backend, so session records, event chunks, `host.kv`,
|
|
21
|
+
* eval runs, and A/B samples land in the control plane and survive pod
|
|
22
|
+
* replacement. The API key resolves through the full credential chain on
|
|
23
|
+
* every call because hosted freeze snapshots listen unsigned and the
|
|
24
|
+
* binder drops the key file after restore.
|
|
25
|
+
* - **Self-hosted**: no mirror. `--state-root` is the durable copy, which
|
|
26
|
+
* is correct when the operator owns the disk.
|
|
27
|
+
*
|
|
28
|
+
* v1 keeps the authored definition (or nothing) so existing deployments are
|
|
29
|
+
* untouched while they run.
|
|
18
30
|
*
|
|
19
31
|
* Local disk is not part of this decision. `<stateRoot>/sessions/<id>/`
|
|
20
32
|
* already holds `session.json` and `events.ndjson` unconditionally, through
|
|
21
33
|
* the session store; what this selects is the durable mirror *beyond* the
|
|
22
34
|
* pod's filesystem.
|
|
23
35
|
*/
|
|
24
|
-
import type
|
|
36
|
+
import { type StorageDefinition } from "../storage.js";
|
|
37
|
+
import type { AgentArchitecture } from "../types.js";
|
|
25
38
|
export interface FrameworkStorageSelectionInput {
|
|
26
|
-
/** `agent/storage.ts`, when the author wrote one. */
|
|
39
|
+
/** `agent/storage.ts`, when the author wrote one (v1 only: discovery rejects it on v2). */
|
|
27
40
|
readonly authored: StorageDefinition | undefined;
|
|
41
|
+
/** {@link AgentConfig.architecture}; omitted means v1. */
|
|
42
|
+
readonly architecture?: AgentArchitecture | undefined;
|
|
43
|
+
/** Environment override for tests; defaults to `process.env`. */
|
|
44
|
+
readonly env?: Record<string, string | undefined>;
|
|
28
45
|
}
|
|
29
46
|
/**
|
|
30
47
|
* Pick the backend for framework session state.
|
|
31
48
|
*
|
|
32
49
|
* Returns `undefined` when there is no mirror, in which case the pod's local
|
|
33
|
-
* disk is the only copy
|
|
34
|
-
* deployments.
|
|
50
|
+
* disk is the only copy.
|
|
35
51
|
*/
|
|
36
52
|
export declare function selectFrameworkStorageDefinition(input: FrameworkStorageSelectionInput): StorageDefinition | undefined;
|
|
37
53
|
//# sourceMappingURL=framework-storage-selection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"framework-storage-selection.d.ts","sourceRoot":"","sources":["../../src/internal/framework-storage-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,MAAM,WAAW,8BAA8B;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,8BAA8B,GACpC,iBAAiB,GAAG,SAAS,CA2B/B"}
|
|
@@ -2,34 +2,68 @@
|
|
|
2
2
|
* Which backend framework session state is mirrored to.
|
|
3
3
|
*
|
|
4
4
|
* Framework state — session records, event chunks, the continuation index —
|
|
5
|
-
* is how a session outlives the process that served it.
|
|
6
|
-
* exists only when the agent author wrote `agent/storage.ts`,
|
|
7
|
-
* platform durability an agent-level decision: of the
|
|
8
|
-
* some choose `cursorHostedStorage()` and some choose
|
|
9
|
-
* disk, lost on pod replacement), and one selects
|
|
10
|
-
* reading the deployment-id environment variable
|
|
5
|
+
* is how a session outlives the process that served it. On architecture v1
|
|
6
|
+
* that mirror exists only when the agent author wrote `agent/storage.ts`,
|
|
7
|
+
* which makes platform durability an agent-level decision: of the
|
|
8
|
+
* first-party agents, some choose `cursorHostedStorage()` and some choose
|
|
9
|
+
* `fileKv()` (pod-local disk, lost on pod replacement), and one selects
|
|
10
|
+
* between them at runtime by reading the deployment-id environment variable
|
|
11
|
+
* itself.
|
|
11
12
|
*
|
|
12
|
-
* That selection is a hosting-mode question, not an authoring question
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* That selection is a hosting-mode question, not an authoring question.
|
|
14
|
+
* Architecture v2 moves it here: `agent/storage.ts` is rejected at
|
|
15
|
+
* discovery (error diagnostic, so serve and deploy fail early), and the
|
|
16
|
+
* platform picks the default —
|
|
17
|
+
*
|
|
18
|
+
* - **Cursor-managed hosting** (the deployment-generation environment
|
|
19
|
+
* variable is set, same signal that registers `GET /v1/manifest`):
|
|
20
|
+
* the Cursor-hosted backend, so session records, event chunks, `host.kv`,
|
|
21
|
+
* eval runs, and A/B samples land in the control plane and survive pod
|
|
22
|
+
* replacement. The API key resolves through the full credential chain on
|
|
23
|
+
* every call because hosted freeze snapshots listen unsigned and the
|
|
24
|
+
* binder drops the key file after restore.
|
|
25
|
+
* - **Self-hosted**: no mirror. `--state-root` is the durable copy, which
|
|
26
|
+
* is correct when the operator owns the disk.
|
|
27
|
+
*
|
|
28
|
+
* v1 keeps the authored definition (or nothing) so existing deployments are
|
|
29
|
+
* untouched while they run.
|
|
18
30
|
*
|
|
19
31
|
* Local disk is not part of this decision. `<stateRoot>/sessions/<id>/`
|
|
20
32
|
* already holds `session.json` and `events.ndjson` unconditionally, through
|
|
21
33
|
* the session store; what this selects is the durable mirror *beyond* the
|
|
22
34
|
* pod's filesystem.
|
|
23
35
|
*/
|
|
36
|
+
import { defineStorage } from "../storage.js";
|
|
37
|
+
import { cursorHostedStorage } from "../storage-backends/cursor-hosted.js";
|
|
38
|
+
import { resolveApiKeySync } from "./cursor/credentials.js";
|
|
39
|
+
import { AGENT_SERVE_GENERATION_ENV_VAR } from "./cursor-relay-core.js";
|
|
24
40
|
/**
|
|
25
41
|
* Pick the backend for framework session state.
|
|
26
42
|
*
|
|
27
43
|
* Returns `undefined` when there is no mirror, in which case the pod's local
|
|
28
|
-
* disk is the only copy
|
|
29
|
-
* deployments.
|
|
44
|
+
* disk is the only copy.
|
|
30
45
|
*/
|
|
31
46
|
export function selectFrameworkStorageDefinition(input) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
var _a;
|
|
48
|
+
if (input.architecture !== "v2") {
|
|
49
|
+
// v1: the author decides, or there is no mirror.
|
|
50
|
+
return input.authored;
|
|
51
|
+
}
|
|
52
|
+
if (input.authored !== undefined) {
|
|
53
|
+
// Discovery rejects agent/storage.ts on v2 before an engine is built;
|
|
54
|
+
// an authored definition reaching this point is a wiring bug. Raise
|
|
55
|
+
// rather than silently discard what the author believes is configured.
|
|
56
|
+
throw new Error('defineStorage (agent/storage.ts) is not supported on architecture "v2": storage is platform-selected. Delete the file.');
|
|
57
|
+
}
|
|
58
|
+
const env = (_a = input.env) !== null && _a !== void 0 ? _a : process.env;
|
|
59
|
+
if (env[AGENT_SERVE_GENERATION_ENV_VAR] === undefined) {
|
|
60
|
+
// Self-hosted v2: the state root is the durable copy.
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
return defineStorage(Object.assign({ name: "cursor-hosted" }, cursorHostedStorage({
|
|
64
|
+
// Full chain (env → key file → stored login): frozen engines listen
|
|
65
|
+
// unsigned and bind CURSOR_API_KEY_FILE at task time, after this
|
|
66
|
+
// definition is constructed.
|
|
67
|
+
apiKey: () => { var _a; return (_a = resolveApiKeySync()) === null || _a === void 0 ? void 0 : _a.apiKey; },
|
|
68
|
+
})));
|
|
35
69
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `send()` captured outside the delivery (typically at channel `onStart`,
|
|
3
|
+
* which binds directly to the engine) reached the engine during a hosted
|
|
4
|
+
* admission window. Running it would start a local July session on a
|
|
5
|
+
* sessionless pod — invisible to the control plane, destroyed with the pod —
|
|
6
|
+
* so it fails loudly instead. This is a deterministic authored bug and is
|
|
7
|
+
* surfaced as a non-retryable 422 by the admission route.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HostedAdmissionLocalSendError extends Error {
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Run `work` inside the hosted admission window. The context follows the
|
|
14
|
+
* async graph, including `waitUntil` task bodies scheduled during dispatch,
|
|
15
|
+
* so the engine can refuse local sends that bypass the capture stub.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runDuringHostedAdmission<T>(work: () => T): T;
|
|
18
|
+
/** True while executing inside a hosted admission window. */
|
|
19
|
+
export declare function isDuringHostedAdmission(): boolean;
|
|
20
|
+
//# sourceMappingURL=hosted-admission-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-admission-context.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-admission-context.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,cAQC;CACF;AAID;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5D;AAED,6DAA6D;AAC7D,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
/**
|
|
3
|
+
* A `send()` captured outside the delivery (typically at channel `onStart`,
|
|
4
|
+
* which binds directly to the engine) reached the engine during a hosted
|
|
5
|
+
* admission window. Running it would start a local July session on a
|
|
6
|
+
* sessionless pod — invisible to the control plane, destroyed with the pod —
|
|
7
|
+
* so it fails loudly instead. This is a deterministic authored bug and is
|
|
8
|
+
* surfaced as a non-retryable 422 by the admission route.
|
|
9
|
+
*/
|
|
10
|
+
export class HostedAdmissionLocalSendError extends Error {
|
|
11
|
+
constructor() {
|
|
12
|
+
super("send() reached the local engine during hosted admission. A send " +
|
|
13
|
+
"captured at channel startup (onStart) bypasses hosted capture and " +
|
|
14
|
+
"would run an invisible local session on a sessionless pod. Use the " +
|
|
15
|
+
"per-delivery send passed to the task callback " +
|
|
16
|
+
"(task: (args) => args.send(…)) instead.");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const admissionWindow = new AsyncLocalStorage();
|
|
20
|
+
/**
|
|
21
|
+
* Run `work` inside the hosted admission window. The context follows the
|
|
22
|
+
* async graph, including `waitUntil` task bodies scheduled during dispatch,
|
|
23
|
+
* so the engine can refuse local sends that bypass the capture stub.
|
|
24
|
+
*/
|
|
25
|
+
export function runDuringHostedAdmission(work) {
|
|
26
|
+
return admissionWindow.run(true, work);
|
|
27
|
+
}
|
|
28
|
+
/** True while executing inside a hosted admission window. */
|
|
29
|
+
export function isDuringHostedAdmission() {
|
|
30
|
+
return admissionWindow.getStore() === true;
|
|
31
|
+
}
|
|
@@ -2,6 +2,10 @@ export declare const HOSTED_DELIVERY_PROTOCOL_VERSION = 2;
|
|
|
2
2
|
export declare const HOSTED_DELIVERY_HEADER = "x-agent-sdk-hosted-delivery";
|
|
3
3
|
export declare const HOSTED_ADMISSION_PATH = "/v1/internal/hosted-admission";
|
|
4
4
|
export declare const HOSTED_EXECUTION_PATH = "/v1/internal/hosted-execution";
|
|
5
|
+
export type HostedAdmissionManagedAutomation = {
|
|
6
|
+
automationUuid: string;
|
|
7
|
+
mcpServerNames: string[];
|
|
8
|
+
};
|
|
5
9
|
export type HostedAdmission = {
|
|
6
10
|
v: 2;
|
|
7
11
|
channelId: string;
|
|
@@ -11,6 +15,7 @@ export type HostedAdmission = {
|
|
|
11
15
|
sessionMode: "event" | "continuation";
|
|
12
16
|
mailboxContinuationKey: string;
|
|
13
17
|
payload: unknown;
|
|
18
|
+
managedAutomation?: HostedAdmissionManagedAutomation;
|
|
14
19
|
};
|
|
15
20
|
export type HostedAdmissionOutcome = {
|
|
16
21
|
ok: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,cAAc,CAAC;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"hosted-delivery-protocol.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery-protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,sBAAsB,gCAAgC,CAAC;AACpE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAErE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,GAAG,cAAc,CAAC;IACtC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,CAAC,EAAE,CAAC,CAAC;IACL,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAsDF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAuB7B;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAe7B;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,sBAAsB,GAAG,SAAS,CAkBpC"}
|
|
@@ -11,11 +11,42 @@ const DELIVERY_KEYS = new Set([
|
|
|
11
11
|
"sessionMode",
|
|
12
12
|
"mailboxContinuationKey",
|
|
13
13
|
"payload",
|
|
14
|
+
"managedAutomation",
|
|
14
15
|
]);
|
|
16
|
+
const MANAGED_AUTOMATION_KEYS = new Set(["automationUuid", "mcpServerNames"]);
|
|
17
|
+
/** More names than any real automation configures is a malformed envelope. */
|
|
18
|
+
const MANAGED_AUTOMATION_MAX_SERVERS = 64;
|
|
15
19
|
const EXECUTION_KEYS = new Set(["v", "admissionToken", "sessionPublicId"]);
|
|
16
20
|
function boundedString(value, max) {
|
|
17
21
|
return typeof value === "string" && value.length > 0 && value.length <= max;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse the optional managed-automation slice. Absent → valid (undefined);
|
|
25
|
+
* present-but-malformed → invalid (the whole admission fails closed, the
|
|
26
|
+
* strict posture the rest of the envelope already takes).
|
|
27
|
+
*/
|
|
28
|
+
function parseManagedAutomation(value) {
|
|
29
|
+
if (value === undefined) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
const body = value;
|
|
36
|
+
if (Object.keys(body).some((key) => !MANAGED_AUTOMATION_KEYS.has(key)) ||
|
|
37
|
+
!boundedString(body.automationUuid, 128) ||
|
|
38
|
+
!Array.isArray(body.mcpServerNames) ||
|
|
39
|
+
body.mcpServerNames.length > MANAGED_AUTOMATION_MAX_SERVERS ||
|
|
40
|
+
!body.mcpServerNames.every((name) => boundedString(name, 256))) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
managedAutomation: {
|
|
45
|
+
automationUuid: body.automationUuid,
|
|
46
|
+
mcpServerNames: body.mcpServerNames,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
19
50
|
export function parseHostedAdmission(value) {
|
|
20
51
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
21
52
|
return undefined;
|
|
@@ -29,7 +60,8 @@ export function parseHostedAdmission(value) {
|
|
|
29
60
|
!boundedString(body.eventType, 128) ||
|
|
30
61
|
!boundedString(body.deliveryId, 256) ||
|
|
31
62
|
(body.sessionMode !== "event" && body.sessionMode !== "continuation") ||
|
|
32
|
-
!boundedString(body.mailboxContinuationKey, 512)
|
|
63
|
+
!boundedString(body.mailboxContinuationKey, 512) ||
|
|
64
|
+
parseManagedAutomation(body.managedAutomation) === undefined) {
|
|
33
65
|
return undefined;
|
|
34
66
|
}
|
|
35
67
|
const prefix = body.sessionMode === "event" ? "evt:" : "cont:";
|
|
@@ -18,8 +18,10 @@ type AdmissionDispatch = {
|
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
20
|
* Run authored admission without creating a framework session. V1 GitHub
|
|
21
|
-
* `task` callbacks execute as sessionless work; `send` is captured
|
|
22
|
-
*
|
|
21
|
+
* `task` callbacks execute as sessionless work; the first `send` is captured
|
|
22
|
+
* and executed only after the control plane allocates `ses_…`. Capturing
|
|
23
|
+
* does not terminate the caller — `send` returns an inert deferred handle so
|
|
24
|
+
* a task body runs to completion before the admission response is computed.
|
|
23
25
|
*/
|
|
24
26
|
export declare function dispatchHostedAdmission(input: DispatchInput): Promise<AdmissionDispatch>;
|
|
25
27
|
export declare function registerHostedDeliveryRoute(input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"hosted-delivery.d.ts","sourceRoot":"","sources":["../../src/internal/hosted-delivery.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AASrB,OAAO,EAKL,KAAK,eAAe,EAGrB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AA6DF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AA2GD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACvB,kBAAkB,CAAC;CACvB,GAAG,IAAI,CAsKP"}
|