@cursor/july 0.1.99 → 0.1.101
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 +4 -2
- package/dist/bin/agent-serve.js +3 -2
- package/dist/channels/deployments/deployments-channel.d.ts +41 -5
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +88 -8
- package/dist/channels/deployments/types.d.ts +4 -3
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/github/defaults.d.ts.map +1 -1
- package/dist/channels/github/defaults.js +28 -3
- package/dist/channels/github/progress.d.ts +7 -0
- package/dist/channels/github/progress.d.ts.map +1 -1
- package/dist/channels/origin/defaults.d.ts +43 -0
- package/dist/channels/origin/defaults.d.ts.map +1 -0
- package/dist/channels/origin/defaults.js +111 -0
- package/dist/channels/origin/index.d.ts +2 -0
- package/dist/channels/origin/index.d.ts.map +1 -1
- package/dist/channels/origin/index.js +2 -0
- package/dist/channels/origin/origin-channel.d.ts +2 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +24 -3
- package/dist/channels/origin/state.d.ts +32 -0
- package/dist/channels/origin/state.d.ts.map +1 -0
- package/dist/channels/origin/state.js +23 -0
- package/dist/channels/origin/types.d.ts +23 -1
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/api.d.ts +16 -7
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +31 -14
- package/dist/channels/slack/code-fences.d.ts +17 -0
- package/dist/channels/slack/code-fences.d.ts.map +1 -0
- package/dist/channels/slack/code-fences.js +168 -0
- package/dist/channels/slack/constants.d.ts +6 -0
- package/dist/channels/slack/constants.d.ts.map +1 -1
- package/dist/channels/slack/constants.js +6 -0
- package/dist/channels/slack/defaults.d.ts +9 -4
- package/dist/channels/slack/defaults.d.ts.map +1 -1
- package/dist/channels/slack/defaults.js +154 -76
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +3 -3
- package/dist/channels/slack/inbound.d.ts +9 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +14 -0
- package/dist/channels/slack/index.d.ts +2 -0
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +2 -0
- package/dist/channels/slack/live-delivery.d.ts +5 -0
- package/dist/channels/slack/live-delivery.d.ts.map +1 -1
- package/dist/channels/slack/live-delivery.js +116 -21
- package/dist/channels/slack/reasoning-card.d.ts +38 -0
- package/dist/channels/slack/reasoning-card.d.ts.map +1 -0
- package/dist/channels/slack/reasoning-card.js +104 -0
- package/dist/channels/slack/redact.d.ts +2 -0
- package/dist/channels/slack/redact.d.ts.map +1 -0
- package/dist/channels/slack/redact.js +5 -0
- package/dist/channels/slack/reply-options.d.ts +40 -0
- package/dist/channels/slack/reply-options.d.ts.map +1 -0
- package/dist/channels/slack/reply-options.js +150 -0
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +8 -4
- package/dist/channels/slack/stream.d.ts +22 -10
- package/dist/channels/slack/stream.d.ts.map +1 -1
- package/dist/channels/slack/stream.js +9 -16
- package/dist/channels/slack/tool-cards.d.ts +22 -0
- package/dist/channels/slack/tool-cards.d.ts.map +1 -0
- package/dist/channels/slack/tool-cards.js +178 -0
- package/dist/channels/slack/types.d.ts +145 -6
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/connections.d.ts +18 -2
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +18 -2
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +6 -6
- package/dist/docs/ab.md +1 -1
- package/dist/docs/assets/{ab.md.DJo5r4R-.js → ab.md.mlVgqvSk.js} +1 -1
- package/dist/docs/assets/{app.BplEAZ3S.js → app.BASO9Kih.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.js → building-with-agents.md.CUSWxlP_.js} +2 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.DbFXINq2.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CHXyv4wP.js → VPLocalSearchBox.DwkqxoE0.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BTcsZmjQ.js → theme.CCil_13e.js} +2 -2
- package/dist/docs/assets/{evals.md.lfJoEVc8.js → evals.md.CPzDAwoH.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cnh2mL4a.js → guides_github.md.BtPr9GaP.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.js → guides_mcp-oauth.md.Dp6cDP7f.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.js → guides_opentelemetry.md.BVTXDCRg.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.js → guides_slack.md.9oHPye9o.js} +19 -3
- package/dist/docs/assets/{guides_slack.md.VDXQV3ja.lean.js → guides_slack.md.9oHPye9o.lean.js} +1 -1
- package/dist/docs/assets/hillclimbing.md.CpTGTCle.js +4 -0
- package/dist/docs/assets/{index.md.CVeRUOeZ.js → index.md.Bb4k8kUm.js} +1 -1
- package/dist/docs/assets/{quickstart.md.Nj_LjW_a.js → quickstart.md.DdQOF7Y8.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DxldvyIB.js → reference_connections.md.Di6jJAXF.js} +13 -3
- package/dist/docs/assets/{reference_connections.md.DxldvyIB.lean.js → reference_connections.md.Di6jJAXF.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.js → reference_http-api.md.oySXBO8o.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.em43xlY1.js +1 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.js +26 -0
- package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +1 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.js +8 -0
- package/dist/docs/assets/skills_create-agent.md.BVoWPcan.lean.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.js +1 -0
- package/dist/docs/assets/skills_debug.md.CDbPhHfg.lean.js +1 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.js +25 -0
- package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BTi817yv.lean.js +1 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.js +16 -0
- package/dist/docs/assets/skills_github.md.D0JahM8c.lean.js +1 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.js +7 -0
- package/dist/docs/assets/skills_hillclimb.md.B_zJerxA.lean.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.js +1 -0
- package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +1 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.js +18 -0
- package/dist/docs/assets/skills_mcp-auth.md.DGvFP3HE.lean.js +1 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.js +8 -0
- package/dist/docs/assets/skills_otel.md.CgiZryR3.lean.js +1 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.js +20 -0
- package/dist/docs/assets/skills_setup-slack.md.BBgx8lUz.lean.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.js → troubleshooting.md.Cus_YZga.js} +1 -1
- package/dist/docs/building-with-agents.html +6 -6
- package/dist/docs/building-with-agents.md +14 -11
- package/dist/docs/concepts.html +4 -4
- package/dist/docs/deployment.html +4 -4
- package/dist/docs/evals.html +6 -6
- package/dist/docs/evals.md +1 -1
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/cloud-runtime.html +4 -4
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +5 -5
- package/dist/docs/guides/github.md +1 -1
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/mcp-oauth.html +5 -5
- package/dist/docs/guides/mcp-oauth.md +1 -1
- package/dist/docs/guides/opentelemetry.html +7 -7
- package/dist/docs/guides/opentelemetry.md +2 -2
- package/dist/docs/guides/slack.html +22 -6
- package/dist/docs/guides/slack.md +80 -1
- package/dist/docs/guides/webhooks.html +5 -5
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +5 -5
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +1 -1
- package/dist/docs/llms-full.txt +1073 -31
- package/dist/docs/llms.txt +14 -0
- package/dist/docs/quickstart.html +5 -5
- package/dist/docs/quickstart.md +1 -1
- 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 +4 -4
- package/dist/docs/reference/connections.html +17 -7
- package/dist/docs/reference/connections.md +32 -1
- package/dist/docs/reference/hooks.html +4 -4
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +1 -1
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +4 -4
- package/dist/docs/reference/project-layout.html +4 -4
- 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 +4 -4
- package/dist/docs/reference/tools.html +4 -4
- package/dist/docs/scaffolding-agents.html +5 -5
- package/dist/docs/scaffolding-agents.md +3 -3
- package/dist/docs/skills/ab.html +52 -0
- package/dist/docs/skills/ab.md +50 -0
- package/dist/docs/skills/create-agent.html +34 -0
- package/dist/docs/skills/create-agent.md +160 -0
- package/dist/docs/skills/debug.html +27 -0
- package/dist/docs/skills/debug.md +36 -0
- package/dist/docs/skills/evals.html +51 -0
- package/dist/docs/skills/evals.md +99 -0
- package/dist/docs/skills/framework-map.html +27 -0
- package/dist/docs/skills/framework-map.md +95 -0
- package/dist/docs/skills/github.html +42 -0
- package/dist/docs/skills/github.md +93 -0
- package/dist/docs/skills/hillclimb.html +33 -0
- package/dist/docs/skills/hillclimb.md +55 -0
- package/dist/docs/skills/index.html +27 -0
- package/dist/docs/skills/index.md +21 -0
- package/dist/docs/skills/mcp-auth.html +44 -0
- package/dist/docs/skills/mcp-auth.md +76 -0
- package/dist/docs/skills/otel.html +34 -0
- package/dist/docs/skills/otel.md +48 -0
- package/dist/docs/skills/setup-slack.html +46 -0
- package/dist/docs/skills/setup-slack.md +141 -0
- package/dist/docs/storage.html +4 -4
- package/dist/docs/templates/agentic-owners.html +4 -4
- package/dist/docs/templates/agents-md.html +4 -4
- package/dist/docs/templates/code-wiki.html +4 -4
- package/dist/docs/templates/demo.html +4 -4
- package/dist/docs/templates/pr-autofixer.html +4 -4
- package/dist/docs/templates/security-help.html +4 -4
- package/dist/docs/templates/security-reviewer.html +4 -4
- package/dist/docs/templates/triage.html +4 -4
- package/dist/docs/troubleshooting.html +5 -5
- package/dist/docs/troubleshooting.md +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +55 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/extension.js +64 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts +30 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/cloud.js +45 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts +25 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +85 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts +15 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +55 -0
- package/dist/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/follow_up.js +37 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +83 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/list.js +36 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts +4 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.d.ts.map +1 -0
- package/dist/extensions/cursor-cloud-agents/tools/status.js +41 -0
- package/dist/extensions.d.ts +49 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +75 -0
- package/dist/files-backends/cursor-hosted.d.ts +6 -0
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/files-backends/cursor-hosted.js +6 -9
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/internal/advertise-tools.d.ts +4 -1
- package/dist/internal/advertise-tools.d.ts.map +1 -1
- package/dist/internal/advertise-tools.js +20 -1
- package/dist/internal/as-of.d.ts +18 -0
- package/dist/internal/as-of.d.ts.map +1 -1
- package/dist/internal/as-of.js +131 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +66 -21
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +3 -1
- package/dist/internal/conversation-mirror.d.ts.map +1 -1
- package/dist/internal/conversation-mirror.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts +16 -0
- package/dist/internal/cursor/hosted-deployment-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-deployment-secrets.js +61 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts +15 -0
- package/dist/internal/cursor/hosted-store-secrets.d.ts.map +1 -0
- package/dist/internal/cursor/hosted-store-secrets.js +48 -0
- package/dist/internal/cursor-deployment-relay.d.ts +15 -1
- package/dist/internal/cursor-deployment-relay.d.ts.map +1 -1
- package/dist/internal/cursor-deployment-relay.js +46 -7
- package/dist/internal/deploy-client.d.ts +29 -6
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +61 -19
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +426 -121
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +5 -0
- package/dist/internal/framework-file-storage.d.ts +15 -8
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +70 -10
- package/dist/internal/framework-storage-selection.d.ts +12 -12
- package/dist/internal/framework-storage-selection.d.ts.map +1 -1
- package/dist/internal/framework-storage-selection.js +33 -39
- package/dist/internal/hosted-delivery.d.ts +3 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +19 -32
- package/dist/internal/hosted-execution-diag.d.ts +5 -0
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +5 -0
- package/dist/internal/hosted-execution-flush.d.ts +46 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -0
- package/dist/internal/hosted-execution-flush.js +81 -0
- package/dist/internal/mcp-endpoint.js +1 -0
- package/dist/internal/mcp-host.d.ts +2 -1
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +35 -15
- package/dist/internal/review-comments.d.ts +1 -1
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +4 -4
- package/dist/internal/server.d.ts +3 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +79 -104
- package/dist/internal/session-engine.d.ts +9 -7
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +45 -34
- package/dist/internal/session-run-log.d.ts +5 -4
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +8 -8
- package/dist/internal/start-log-store.d.ts +60 -0
- package/dist/internal/start-log-store.d.ts.map +1 -0
- package/dist/internal/start-log-store.js +151 -0
- package/dist/internal/storage-coordinator.d.ts +0 -6
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +1 -9
- package/dist/internal/tool-policy.d.ts +8 -0
- package/dist/internal/tool-policy.d.ts.map +1 -1
- package/dist/internal/tool-policy.js +19 -7
- package/dist/playground/assets/{index-jzNbJENa.js → index-BnNN1-EK.js} +45 -45
- package/dist/playground/assets/index-DBQCwFp0.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +83 -0
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -0
- package/dist/storage-backends/cursor-hosted-v2.js +164 -0
- package/dist/storage-backends/cursor-hosted.d.ts +6 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +6 -1
- package/dist/storage-protocol.d.ts +24 -0
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +33 -0
- package/dist/storage.d.ts +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/types.d.ts +123 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +29 -1
- package/docs/README.md +1 -1
- package/docs/ab.md +1 -1
- package/docs/building-with-agents.md +14 -11
- package/docs/evals.md +1 -1
- package/docs/guides/github.md +1 -1
- package/docs/guides/mcp-oauth.md +1 -1
- package/docs/guides/opentelemetry.md +2 -2
- package/docs/guides/slack.md +80 -1
- package/docs/hillclimbing.md +5 -5
- package/docs/quickstart.md +1 -1
- package/docs/reference/connections.md +32 -1
- package/docs/reference/http-api.md +1 -1
- package/docs/scaffolding-agents.md +3 -3
- package/docs/skills/index.md +26 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +18 -4
- package/src/bin/agent-serve.ts +11 -2
- package/src/channels/deployments/deployments-channel.ts +117 -8
- package/src/channels/deployments/types.ts +4 -3
- package/src/channels/github/defaults.ts +36 -3
- package/src/channels/github/progress.ts +7 -0
- package/src/channels/origin/defaults.ts +143 -0
- package/src/channels/origin/index.ts +2 -0
- package/src/channels/origin/origin-channel.ts +37 -1
- package/src/channels/origin/state.ts +54 -0
- package/src/channels/origin/types.ts +24 -0
- package/src/channels/slack/api.ts +37 -18
- package/src/channels/slack/code-fences.ts +183 -0
- package/src/channels/slack/constants.ts +6 -0
- package/src/channels/slack/defaults.ts +173 -92
- package/src/channels/slack/dispatch.ts +8 -1
- package/src/channels/slack/inbound.ts +17 -0
- package/src/channels/slack/index.ts +2 -0
- package/src/channels/slack/live-delivery.ts +142 -28
- package/src/channels/slack/reasoning-card.ts +140 -0
- package/src/channels/slack/redact.ts +6 -0
- package/src/channels/slack/reply-options.ts +229 -0
- package/src/channels/slack/slack-channel.ts +7 -2
- package/src/channels/slack/stream.ts +31 -24
- package/src/channels/slack/tool-cards.ts +221 -0
- package/src/channels/slack/types.ts +159 -6
- package/src/connections.ts +18 -1
- package/src/extensions/cursor-cloud-agents/extension.ts +118 -0
- package/src/extensions/cursor-cloud-agents/lib/cloud.ts +79 -0
- package/src/extensions/cursor-cloud-agents/lib/fleet.ts +109 -0
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +81 -0
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +27 -0
- package/src/extensions/cursor-cloud-agents/tools/follow_up.ts +29 -0
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +84 -0
- package/src/extensions/cursor-cloud-agents/tools/list.ts +31 -0
- package/src/extensions/cursor-cloud-agents/tools/status.ts +39 -0
- package/src/extensions.ts +98 -0
- package/src/files-backends/cursor-hosted.ts +15 -5
- package/src/index.ts +2 -0
- package/src/internal/advertise-tools.ts +37 -12
- package/src/internal/as-of.ts +163 -0
- package/src/internal/cli-deploy.ts +88 -25
- package/src/internal/continuation-identity.ts +3 -1
- package/src/internal/conversation-mirror.ts +3 -8
- package/src/internal/cursor/hosted-deployment-secrets.ts +72 -0
- package/src/internal/cursor/hosted-store-secrets.ts +72 -0
- package/src/internal/cursor-deployment-relay.ts +65 -8
- package/src/internal/deploy-client.ts +83 -28
- package/src/internal/discovery.ts +479 -114
- package/src/internal/distribution.ts +5 -0
- package/src/internal/framework-file-storage.ts +80 -10
- package/src/internal/framework-storage-selection.ts +31 -44
- package/src/internal/hosted-delivery.ts +38 -63
- package/src/internal/hosted-execution-diag.ts +6 -0
- package/src/internal/hosted-execution-flush.ts +142 -0
- package/src/internal/mcp-endpoint.ts +1 -0
- package/src/internal/mcp-host.ts +40 -14
- package/src/internal/review-comments.ts +5 -2
- package/src/internal/server.ts +81 -100
- package/src/internal/session-engine.ts +56 -28
- package/src/internal/session-run-log.ts +8 -12
- package/src/internal/start-log-store.ts +177 -0
- package/src/internal/storage-coordinator.ts +1 -11
- package/src/internal/tool-policy.ts +39 -9
- package/src/storage-backends/cursor-hosted-v2.ts +219 -0
- package/src/storage-backends/cursor-hosted.ts +6 -1
- package/src/storage-protocol.ts +37 -0
- package/src/storage.ts +1 -0
- package/src/types.ts +177 -14
- package/dist/docs/assets/chunks/@localSearchIndexroot.DpuI4i7Z.js +0 -1
- package/dist/docs/assets/hillclimbing.md.DhESf3OO.js +0 -4
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +0 -1
- package/dist/internal/null-kv-storage.d.ts +0 -48
- package/dist/internal/null-kv-storage.d.ts.map +0 -1
- package/dist/internal/null-kv-storage.js +0 -58
- package/dist/playground/assets/index-D7rGZNjy.css +0 -1
- package/src/internal/null-kv-storage.ts +0 -74
- /package/dist/docs/assets/{ab.md.DJo5r4R-.lean.js → ab.md.mlVgqvSk.lean.js} +0 -0
- /package/dist/docs/assets/{building-with-agents.md.DI4mEzlt.lean.js → building-with-agents.md.CUSWxlP_.lean.js} +0 -0
- /package/dist/docs/assets/{evals.md.lfJoEVc8.lean.js → evals.md.CPzDAwoH.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.Cnh2mL4a.lean.js → guides_github.md.BtPr9GaP.lean.js} +0 -0
- /package/dist/docs/assets/{guides_mcp-oauth.md.CN-6YmTJ.lean.js → guides_mcp-oauth.md.Dp6cDP7f.lean.js} +0 -0
- /package/dist/docs/assets/{guides_opentelemetry.md.bmPmkvJu.lean.js → guides_opentelemetry.md.BVTXDCRg.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.DhESf3OO.lean.js → hillclimbing.md.CpTGTCle.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.CVeRUOeZ.lean.js → index.md.Bb4k8kUm.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.Nj_LjW_a.lean.js → quickstart.md.DdQOF7Y8.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.BEJx9XVj.lean.js → reference_http-api.md.oySXBO8o.lean.js} +0 -0
- /package/dist/docs/assets/{scaffolding-agents.md.D7UUkWw0.lean.js → scaffolding-agents.md.em43xlY1.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.DCiPBhYs.lean.js → troubleshooting.md.Cus_YZga.lean.js} +0 -0
|
@@ -33,17 +33,33 @@ interface SubscriptionStatus {
|
|
|
33
33
|
detail?: string;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
export type DeploymentSubscriptionSource =
|
|
37
|
+
| readonly ResolvedSubscription[]
|
|
38
|
+
| (() => readonly ResolvedSubscription[]);
|
|
39
|
+
|
|
36
40
|
export interface DeploymentEventRelayOptions {
|
|
37
41
|
baseUrl: string;
|
|
38
42
|
apiKey: string;
|
|
39
43
|
stateDir: string;
|
|
40
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Snapshot or a getter. A getter is re-read on every registration
|
|
46
|
+
* heartbeat so a channel that refreshes `deploySourceUris` after start
|
|
47
|
+
* can add sources without restarting the relay.
|
|
48
|
+
*/
|
|
49
|
+
subscriptions: DeploymentSubscriptionSource;
|
|
41
50
|
dispatch: (event: DeploymentEvent) => Promise<void>;
|
|
42
51
|
logger: (line: string) => void;
|
|
43
52
|
fetchImpl?: typeof fetch;
|
|
44
53
|
pollWaitMs?: number;
|
|
45
54
|
}
|
|
46
55
|
|
|
56
|
+
/** Current subscriptions: a live getter, otherwise the snapshot. */
|
|
57
|
+
export function currentDeploymentSubscriptions(
|
|
58
|
+
subscriptions: DeploymentSubscriptionSource
|
|
59
|
+
): readonly ResolvedSubscription[] {
|
|
60
|
+
return typeof subscriptions === "function" ? subscriptions() : subscriptions;
|
|
61
|
+
}
|
|
62
|
+
|
|
47
63
|
/** Normalize the channel's `deploySourceUris` option into concrete subscriptions. */
|
|
48
64
|
export function resolveDeploymentSubscriptions(options: {
|
|
49
65
|
deploySourceUris: readonly (string | DeploymentSubscription)[];
|
|
@@ -90,10 +106,46 @@ export function resolveDeploymentSubscriptions(options: {
|
|
|
90
106
|
? []
|
|
91
107
|
: [...new Set([...existing.environments, ...environments])];
|
|
92
108
|
}
|
|
93
|
-
// Empty is legal here and means "this channel wants nothing"
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
//
|
|
109
|
+
// Empty is legal here and means "this channel wants nothing". The
|
|
110
|
+
// wire-level empty list means deregister. The host re-resolves on each
|
|
111
|
+
// heartbeat, so a channel that later fills `deploySourceUris` can
|
|
112
|
+
// register without a restart.
|
|
113
|
+
return [...bySource.values()];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Union per-channel subscriptions, widening events and environments when
|
|
118
|
+
* the same deploy source appears more than once. An empty environment
|
|
119
|
+
* list means every environment and absorbs a narrower list.
|
|
120
|
+
*/
|
|
121
|
+
export function mergeResolvedSubscriptions(
|
|
122
|
+
groups: readonly (readonly ResolvedSubscription[])[]
|
|
123
|
+
): ResolvedSubscription[] {
|
|
124
|
+
const bySource = new Map<string, ResolvedSubscription>();
|
|
125
|
+
for (const group of groups) {
|
|
126
|
+
for (const subscription of group) {
|
|
127
|
+
const existing = bySource.get(subscription.deploySourceUri);
|
|
128
|
+
if (existing === undefined) {
|
|
129
|
+
bySource.set(subscription.deploySourceUri, {
|
|
130
|
+
deploySourceUri: subscription.deploySourceUri,
|
|
131
|
+
environments: [...subscription.environments],
|
|
132
|
+
events: new Set(subscription.events),
|
|
133
|
+
});
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
for (const event of subscription.events) existing.events.add(event);
|
|
137
|
+
existing.environments =
|
|
138
|
+
existing.environments.length === 0 ||
|
|
139
|
+
subscription.environments.length === 0
|
|
140
|
+
? []
|
|
141
|
+
: [
|
|
142
|
+
...new Set([
|
|
143
|
+
...existing.environments,
|
|
144
|
+
...subscription.environments,
|
|
145
|
+
]),
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
97
149
|
return [...bySource.values()];
|
|
98
150
|
}
|
|
99
151
|
|
|
@@ -176,7 +228,9 @@ export class DeploymentEventRelay {
|
|
|
176
228
|
pollPath: "/v0/deployment-events",
|
|
177
229
|
buildRegistrationBody: (consumerId) => ({
|
|
178
230
|
consumerId,
|
|
179
|
-
subscriptions:
|
|
231
|
+
subscriptions: currentDeploymentSubscriptions(
|
|
232
|
+
options.subscriptions
|
|
233
|
+
).map((subscription) => ({
|
|
180
234
|
deploySourceUri: subscription.deploySourceUri,
|
|
181
235
|
environments: subscription.environments,
|
|
182
236
|
events: [...subscription.events],
|
|
@@ -190,12 +244,15 @@ export class DeploymentEventRelay {
|
|
|
190
244
|
}),
|
|
191
245
|
applyRegistrationResponse: (json) => {
|
|
192
246
|
const result = json as { deploySourceUris?: SubscriptionStatus[] };
|
|
247
|
+
const wantedSubscriptions = currentDeploymentSubscriptions(
|
|
248
|
+
options.subscriptions
|
|
249
|
+
);
|
|
193
250
|
this.subscribed = new Map();
|
|
194
251
|
this.loggedSkippedSources.clear();
|
|
195
252
|
const lines: string[] = [];
|
|
196
253
|
const confirmed: string[] = [];
|
|
197
254
|
for (const status of result.deploySourceUris ?? []) {
|
|
198
|
-
const wanted =
|
|
255
|
+
const wanted = wantedSubscriptions.find(
|
|
199
256
|
(subscription) =>
|
|
200
257
|
subscription.deploySourceUri === status.deploySourceUri
|
|
201
258
|
);
|
|
@@ -210,7 +267,7 @@ export class DeploymentEventRelay {
|
|
|
210
267
|
}
|
|
211
268
|
if (confirmed.length > 0) {
|
|
212
269
|
const kinds = [
|
|
213
|
-
...new Set(
|
|
270
|
+
...new Set(wantedSubscriptions.flatMap((s) => [...s.events])),
|
|
214
271
|
];
|
|
215
272
|
lines.push(
|
|
216
273
|
`subscribed to ${confirmed.join(", ")} for events: ${kinds.join(", ")}`
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Thin client for the Agent Serve deployment management API
|
|
3
3
|
* (`/internal/agent-serve/deployments` on the Cursor backend) and the v2
|
|
4
|
-
* AgentSDK accept path (`/internal/
|
|
4
|
+
* AgentSDK accept path (`/internal/agentsdk/deployments`). Pure
|
|
5
5
|
* request/response + error mapping — no console I/O, no polling loops;
|
|
6
6
|
* rendering lives in `cli-deploy.ts`.
|
|
7
7
|
*
|
|
@@ -214,7 +214,7 @@ export interface StopAccepted {
|
|
|
214
214
|
export type DeleteAccepted = StopAccepted;
|
|
215
215
|
|
|
216
216
|
/**
|
|
217
|
-
* `POST /internal/
|
|
217
|
+
* `POST /internal/agentsdk/deployments` 202 body. Distinct from v1
|
|
218
218
|
* {@link DeployAccepted}: the v2 control plane returns catalog ids, not
|
|
219
219
|
* an engine alias or one-shot alias token.
|
|
220
220
|
*/
|
|
@@ -234,7 +234,7 @@ export interface AgentkitDeployComponent {
|
|
|
234
234
|
agentPath?: string;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
/** Customer-visible v2 deploy status (`GET /internal/
|
|
237
|
+
/** Customer-visible v2 deploy status (`GET /internal/agentsdk/deployments/:slug`). */
|
|
238
238
|
export type AgentkitCustomerStatus =
|
|
239
239
|
| "pending"
|
|
240
240
|
| "deploying"
|
|
@@ -267,13 +267,15 @@ export interface AgentkitDeployStatus {
|
|
|
267
267
|
* Absent on control planes that predate the field.
|
|
268
268
|
*/
|
|
269
269
|
repositories?: string[];
|
|
270
|
+
/** Names of application-scoped secrets (values are never returned). */
|
|
271
|
+
secretNames?: string[];
|
|
270
272
|
}
|
|
271
273
|
|
|
272
274
|
export const TERMINAL_AGENTKIT_DEPLOY_STATUSES: ReadonlySet<AgentkitCustomerStatus> =
|
|
273
275
|
new Set(["running", "failed", "stopped"]);
|
|
274
276
|
|
|
275
277
|
/**
|
|
276
|
-
* `POST /internal/
|
|
278
|
+
* `POST /internal/agentsdk/deployments/:slug/stop` 202 body. Like v1
|
|
277
279
|
* {@link StopAccepted} but keyed by catalog ids instead of the numeric
|
|
278
280
|
* deployment row id.
|
|
279
281
|
*/
|
|
@@ -359,6 +361,7 @@ const agentkitDeployStatusSchema = z
|
|
|
359
361
|
statusMessage: z.string().nullable(),
|
|
360
362
|
// Optional: backends that predate the v2 bake-failure column omit it.
|
|
361
363
|
lastError: z.string().nullable().optional(),
|
|
364
|
+
secretNames: z.array(z.string()).optional(),
|
|
362
365
|
})
|
|
363
366
|
.passthrough();
|
|
364
367
|
|
|
@@ -594,7 +597,7 @@ export class AgentServeDeployClient {
|
|
|
594
597
|
|
|
595
598
|
/**
|
|
596
599
|
* Create or redeploy onto the v2 control plane
|
|
597
|
-
* (`POST /internal/
|
|
600
|
+
* (`POST /internal/agentsdk/deployments`). 202 means accepted; poll
|
|
598
601
|
* {@link getAgentkitDeploy} until a terminal status. `components` deploys
|
|
599
602
|
* one application with several release components (one per agent
|
|
600
603
|
* directory); it is mutually exclusive with `agentPath`.
|
|
@@ -625,7 +628,7 @@ export class AgentServeDeployClient {
|
|
|
625
628
|
}
|
|
626
629
|
const raw = await this.request({
|
|
627
630
|
method: "POST",
|
|
628
|
-
path: "/internal/
|
|
631
|
+
path: "/internal/agentsdk/deployments",
|
|
629
632
|
body: {
|
|
630
633
|
teamId: args.teamId,
|
|
631
634
|
slug: args.slug,
|
|
@@ -650,14 +653,14 @@ export class AgentServeDeployClient {
|
|
|
650
653
|
}): Promise<AgentkitDeployStatus> {
|
|
651
654
|
const raw = await this.request({
|
|
652
655
|
method: "GET",
|
|
653
|
-
path: `/internal/
|
|
656
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
654
657
|
context: { verb: "get deployment", slug: args.slug },
|
|
655
658
|
});
|
|
656
659
|
return agentkitDeployStatusSchema.parse(raw);
|
|
657
660
|
}
|
|
658
661
|
|
|
659
662
|
/**
|
|
660
|
-
* Stop a v2 deployment (`POST /internal/
|
|
663
|
+
* Stop a v2 deployment (`POST /internal/agentsdk/deployments/:slug/stop`).
|
|
661
664
|
* 202 means accepted; poll {@link getAgentkitDeploy} until `stopped`.
|
|
662
665
|
*/
|
|
663
666
|
async stopAgentkit(args: {
|
|
@@ -666,7 +669,7 @@ export class AgentServeDeployClient {
|
|
|
666
669
|
}): Promise<AgentkitStopAccepted> {
|
|
667
670
|
const raw = await this.request({
|
|
668
671
|
method: "POST",
|
|
669
|
-
path: `/internal/
|
|
672
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
|
|
670
673
|
context: { verb: "stop", slug: args.slug },
|
|
671
674
|
});
|
|
672
675
|
return agentkitStopAcceptedSchema.parse(raw);
|
|
@@ -740,24 +743,7 @@ export class AgentServeDeployClient {
|
|
|
740
743
|
slug: string;
|
|
741
744
|
secrets: Array<{ name: string; value: string }>;
|
|
742
745
|
}): Promise<string[]> {
|
|
743
|
-
|
|
744
|
-
const nameError = validateSettableSecretName(name);
|
|
745
|
-
if (nameError !== undefined) {
|
|
746
|
-
throw new DeployApiError(nameError, 400);
|
|
747
|
-
}
|
|
748
|
-
if (Buffer.byteLength(value, "utf8") > MAX_SECRET_VALUE_BYTES) {
|
|
749
|
-
throw new DeployApiError(
|
|
750
|
-
`The value for ${name} is too large (max ${MAX_SECRET_VALUE_BYTES} bytes).`,
|
|
751
|
-
400
|
|
752
|
-
);
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
if (args.secrets.length > MAX_SECRETS) {
|
|
756
|
-
throw new DeployApiError(
|
|
757
|
-
`Too many secrets in one request (${args.secrets.length}); deployments hold at most ${MAX_SECRETS}.`,
|
|
758
|
-
400
|
|
759
|
-
);
|
|
760
|
-
}
|
|
746
|
+
this.validateSecrets(args.secrets);
|
|
761
747
|
const raw = await this.request({
|
|
762
748
|
method: "PUT",
|
|
763
749
|
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
@@ -767,6 +753,22 @@ export class AgentServeDeployClient {
|
|
|
767
753
|
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
768
754
|
}
|
|
769
755
|
|
|
756
|
+
/** Upsert application-scoped secrets on an AgentSDK v2 deployment. */
|
|
757
|
+
async setAgentkitSecrets(args: {
|
|
758
|
+
teamId: number;
|
|
759
|
+
slug: string;
|
|
760
|
+
secrets: Array<{ name: string; value: string }>;
|
|
761
|
+
}): Promise<string[]> {
|
|
762
|
+
this.validateSecrets(args.secrets);
|
|
763
|
+
const raw = await this.request({
|
|
764
|
+
method: "PUT",
|
|
765
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
766
|
+
body: { teamId: args.teamId, secrets: args.secrets },
|
|
767
|
+
context: { verb: "set secrets", slug: args.slug },
|
|
768
|
+
});
|
|
769
|
+
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
770
|
+
}
|
|
771
|
+
|
|
770
772
|
/** Secret names + creation times; values are never returned. */
|
|
771
773
|
async listSecrets(args: {
|
|
772
774
|
teamId: number;
|
|
@@ -780,6 +782,19 @@ export class AgentServeDeployClient {
|
|
|
780
782
|
return listSecretsResponseSchema.parse(raw).secrets;
|
|
781
783
|
}
|
|
782
784
|
|
|
785
|
+
/** Secret names + creation times for an AgentSDK v2 application. */
|
|
786
|
+
async listAgentkitSecrets(args: {
|
|
787
|
+
teamId: number;
|
|
788
|
+
slug: string;
|
|
789
|
+
}): Promise<SecretInfo[]> {
|
|
790
|
+
const raw = await this.request({
|
|
791
|
+
method: "GET",
|
|
792
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
|
|
793
|
+
context: { verb: "list secrets", slug: args.slug },
|
|
794
|
+
});
|
|
795
|
+
return listSecretsResponseSchema.parse(raw).secrets;
|
|
796
|
+
}
|
|
797
|
+
|
|
783
798
|
/** Remove one secret by name; 404 when it is not set. */
|
|
784
799
|
async deleteSecret(args: {
|
|
785
800
|
teamId: number;
|
|
@@ -797,6 +812,46 @@ export class AgentServeDeployClient {
|
|
|
797
812
|
});
|
|
798
813
|
}
|
|
799
814
|
|
|
815
|
+
/** Remove one application-scoped secret from an AgentSDK v2 deployment. */
|
|
816
|
+
async deleteAgentkitSecret(args: {
|
|
817
|
+
teamId: number;
|
|
818
|
+
slug: string;
|
|
819
|
+
name: string;
|
|
820
|
+
}): Promise<void> {
|
|
821
|
+
const nameError = validateSettableSecretName(args.name);
|
|
822
|
+
if (nameError !== undefined) {
|
|
823
|
+
throw new DeployApiError(nameError, 400);
|
|
824
|
+
}
|
|
825
|
+
await this.request({
|
|
826
|
+
method: "DELETE",
|
|
827
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
828
|
+
context: { verb: "unset secret", slug: args.slug },
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
private validateSecrets(
|
|
833
|
+
secrets: Array<{ name: string; value: string }>
|
|
834
|
+
): void {
|
|
835
|
+
for (const { name, value } of secrets) {
|
|
836
|
+
const nameError = validateSettableSecretName(name);
|
|
837
|
+
if (nameError !== undefined) {
|
|
838
|
+
throw new DeployApiError(nameError, 400);
|
|
839
|
+
}
|
|
840
|
+
if (Buffer.byteLength(value, "utf8") > MAX_SECRET_VALUE_BYTES) {
|
|
841
|
+
throw new DeployApiError(
|
|
842
|
+
`The value for ${name} is too large (max ${MAX_SECRET_VALUE_BYTES} bytes).`,
|
|
843
|
+
400
|
|
844
|
+
);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
if (secrets.length > MAX_SECRETS) {
|
|
848
|
+
throw new DeployApiError(
|
|
849
|
+
`Too many secrets in one request (${secrets.length}); deployments hold at most ${MAX_SECRETS}.`,
|
|
850
|
+
400
|
|
851
|
+
);
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
|
|
800
855
|
/**
|
|
801
856
|
* Rotate the deployment's pod credential. Returns the masked new key —
|
|
802
857
|
* the raw key is injected into the pod on the next deploy, never
|
|
@@ -977,7 +1032,7 @@ function mapErrorResponse(
|
|
|
977
1032
|
// (api2 vs api.cursor.com), not a missing deployment / closed gate.
|
|
978
1033
|
if (/Route \S+ not found/i.test(bodyText)) {
|
|
979
1034
|
return new DeployApiError(
|
|
980
|
-
`Agent Serve deploy API not found on this host — use the default api.cursor.com (unset CURSOR_API_BASE_URL), or point CURSOR_API_BASE_URL at a backend that mounts /internal/agent-serve/* and /internal/
|
|
1035
|
+
`Agent Serve deploy API not found on this host — use the default api.cursor.com (unset CURSOR_API_BASE_URL), or point CURSOR_API_BASE_URL at a backend that mounts /internal/agent-serve/* and /internal/agentsdk/*.`,
|
|
981
1036
|
404
|
|
982
1037
|
);
|
|
983
1038
|
}
|