@cursor/july 0.1.107 → 0.1.109
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 +2 -6
- package/README.md +13 -11
- package/dist/bin/agent-serve.js +30 -8
- package/dist/channels/bitbucket/api.d.ts +41 -0
- package/dist/channels/bitbucket/api.d.ts.map +1 -1
- package/dist/channels/bitbucket/api.js +260 -0
- package/dist/channels/bitbucket/binding.d.ts +4 -0
- package/dist/channels/bitbucket/binding.d.ts.map +1 -1
- package/dist/channels/bitbucket/binding.js +16 -0
- package/dist/channels/bitbucket/index.d.ts +1 -1
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +1 -1
- package/dist/channels/github/github-channel.js +8 -5
- package/dist/channels/github/types.d.ts +5 -1
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.d.ts +27 -0
- package/dist/channels/gitlab/api.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +88 -0
- package/dist/channels/gitlab/binding.d.ts +5 -0
- package/dist/channels/gitlab/binding.d.ts.map +1 -1
- package/dist/channels/gitlab/binding.js +10 -0
- package/dist/channels/gitlab/index.d.ts +1 -1
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +1 -1
- package/dist/channels/origin/origin-channel.d.ts.map +1 -1
- package/dist/channels/origin/origin-channel.js +27 -13
- package/dist/channels/origin/types.d.ts +5 -1
- package/dist/channels/origin/types.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.d.ts +10 -0
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +20 -3
- package/dist/channels/slack/slack-channel.d.ts +12 -5
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +59 -8
- package/dist/channels.d.ts +45 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +106 -7
- package/dist/connections.d.ts +2 -1
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +2 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.CtuckIiL.js → app.Cr-wVbnB.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.js → building-with-agents.md.D0KbSkJn.js} +2 -2
- package/dist/docs/assets/{building-with-agents.md.CUSWxlP_.lean.js → building-with-agents.md.D0KbSkJn.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CFVQ4S17.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.Bkkhnu8K.js → VPLocalSearchBox.CVQERt56.js} +1 -1
- package/dist/docs/assets/chunks/{theme.DhpIe0Pa.js → theme.Dnsd3XOn.js} +2 -2
- package/dist/docs/assets/concepts.md.B4o63Gul.js +1 -0
- package/dist/docs/assets/{deployment.md.MFPKqsqI.js → deployment.md.JenwuCCB.js} +4 -4
- package/dist/docs/assets/{deployment.md.MFPKqsqI.lean.js → deployment.md.JenwuCCB.lean.js} +1 -1
- package/dist/docs/assets/evals.md.C7JLjoEP.js +211 -0
- package/dist/docs/assets/evals.md.C7JLjoEP.lean.js +1 -0
- package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.js +10 -0
- package/dist/docs/assets/guides_bitbucket.md.DZPzmUjU.lean.js +1 -0
- package/dist/docs/assets/guides_cloud-agents.md.BsloyHdY.js +9 -0
- package/dist/docs/assets/{guides_cloud-agents.md.DS8RIjwx.lean.js → guides_cloud-agents.md.BsloyHdY.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.c0gdGJ-D.js → guides_github.md.TZaTZlfz.js} +13 -3
- package/dist/docs/assets/{guides_github.md.c0gdGJ-D.lean.js → guides_github.md.TZaTZlfz.lean.js} +1 -1
- package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.js +14 -0
- package/dist/docs/assets/guides_gitlab.md.BmqwQfdG.lean.js +1 -0
- package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.js → guides_grokbot-agents.md.DyV-WArv.js} +1 -1
- package/dist/docs/assets/guides_improve.md.BGVk32bK.js +14 -0
- package/dist/docs/assets/guides_improve.md.BGVk32bK.lean.js +1 -0
- package/dist/docs/assets/{guides_slack.md.9oHPye9o.js → guides_slack.md.D4RVMM4G.js} +3 -3
- package/dist/docs/assets/{guides_slack.md.9oHPye9o.lean.js → guides_slack.md.D4RVMM4G.lean.js} +1 -1
- package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.js → guides_webhooks.md.CJK484ex.js} +2 -2
- package/dist/docs/assets/{hillclimbing.md.CpTGTCle.js → hillclimbing.md.BOiVo1tf.js} +1 -1
- package/dist/docs/assets/index.md.DD9Q2XuJ.js +5 -0
- package/dist/docs/assets/{index.md.BW_6tOgR.lean.js → index.md.DD9Q2XuJ.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.js → reference_agent-config.md.CvoL6pof.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.D-qTqwcq.js → reference_channels.md.CAo-iK4j.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.D-qTqwcq.lean.js → reference_channels.md.CAo-iK4j.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Dm67hd2D.js → reference_cli.md.Deg7849l.js} +7 -7
- package/dist/docs/assets/{reference_cli.md.Dm67hd2D.lean.js → reference_cli.md.Deg7849l.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Di6jJAXF.js → reference_connections.md.BojkC6c5.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CGmMLblt.js → reference_extensions.md.ZAVUyuEX.js} +3 -3
- package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.js → reference_hooks.md.BlM_bOg6.js} +3 -3
- package/dist/docs/assets/{reference_hooks.md.Ddt5DdgJ.lean.js → reference_hooks.md.BlM_bOg6.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.oySXBO8o.js → reference_http-api.md.BwaCo-VO.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.4myJPxrf.js → reference_playground.md.DLnoaczX.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.4myJPxrf.lean.js → reference_playground.md.DLnoaczX.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.js → reference_project-layout.md.BEU8MtQV.js} +3 -3
- package/dist/docs/assets/{reference_project-layout.md.DuBu9a96.lean.js → reference_project-layout.md.BEU8MtQV.lean.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.CyXV1MUw.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.js → scaffolding-agents.md.Kctn3OVb.js} +1 -1
- package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.js → skills_create-agent.md.Q3h6Je-e.js} +1 -1
- package/dist/docs/assets/{skills_debug.md.CDbPhHfg.js → skills_debug.md.CVjCXMFF.js} +1 -1
- package/dist/docs/assets/{skills_debug.md.CDbPhHfg.lean.js → skills_debug.md.CVjCXMFF.lean.js} +1 -1
- package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.js +35 -0
- package/dist/docs/assets/skills_deploy.md.CWqi_ZxW.lean.js +1 -0
- package/dist/docs/assets/skills_evals.md.DFxYPErF.js +25 -0
- package/dist/docs/assets/skills_evals.md.DFxYPErF.lean.js +1 -0
- package/dist/docs/assets/skills_framework-map.md.BxLSOhSY.js +1 -0
- package/dist/docs/assets/{skills_framework-map.md.haibFyoB.lean.js → skills_framework-map.md.BxLSOhSY.lean.js} +1 -1
- package/dist/docs/assets/{skills_github.md.D0JahM8c.js → skills_github.md.hgFX_oKY.js} +1 -1
- package/dist/docs/assets/skills_index.md.DL7EHaQ-.js +1 -0
- package/dist/docs/assets/skills_index.md.DL7EHaQ-.lean.js +1 -0
- package/dist/docs/assets/{storage.md.BOHeqk2M.js → storage.md.BUrhJ-Zz.js} +4 -4
- package/dist/docs/assets/{storage.md.BOHeqk2M.lean.js → storage.md.BUrhJ-Zz.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.CYEAO9bM.js +1 -0
- package/dist/docs/building-with-agents.html +5 -5
- package/dist/docs/building-with-agents.md +3 -2
- package/dist/docs/concepts.html +5 -5
- package/dist/docs/concepts.md +2 -4
- package/dist/docs/deployment.html +7 -7
- package/dist/docs/deployment.md +7 -2
- package/dist/docs/evals.html +161 -35
- package/dist/docs/evals.md +612 -296
- package/dist/docs/guides/agent-to-agent.html +4 -4
- package/dist/docs/guides/bitbucket.html +36 -0
- package/dist/docs/guides/bitbucket.md +84 -0
- package/dist/docs/guides/cloud-agents.html +6 -6
- package/dist/docs/guides/cloud-agents.md +4 -3
- package/dist/docs/guides/convert-automation.html +4 -4
- package/dist/docs/guides/github.html +17 -7
- package/dist/docs/guides/github.md +33 -1
- package/dist/docs/guides/gitlab.html +40 -0
- package/dist/docs/guides/gitlab.md +92 -0
- package/dist/docs/guides/grokbot-agents.html +6 -6
- package/dist/docs/guides/grokbot-agents.md +2 -2
- package/dist/docs/guides/human-in-the-loop.html +4 -4
- package/dist/docs/guides/improve.html +40 -0
- package/dist/docs/guides/improve.md +91 -0
- package/dist/docs/guides/mcp-oauth.html +4 -4
- package/dist/docs/guides/opentelemetry.html +5 -5
- package/dist/docs/guides/slack.html +7 -7
- package/dist/docs/guides/slack.md +2 -1
- package/dist/docs/guides/webhooks.html +6 -6
- package/dist/docs/guides/webhooks.md +4 -2
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +6 -6
- package/dist/docs/hillclimbing.md +2 -2
- package/dist/docs/index.html +6 -6
- package/dist/docs/index.md +14 -6
- package/dist/docs/llms-full.txt +1274 -814
- package/dist/docs/llms.txt +7 -5
- package/dist/docs/quickstart.html +4 -4
- package/dist/docs/reference/agent-config.html +6 -6
- package/dist/docs/reference/agent-config.md +5 -2
- package/dist/docs/reference/artifacts.html +4 -4
- package/dist/docs/reference/channels.html +6 -6
- package/dist/docs/reference/channels.md +16 -3
- package/dist/docs/reference/cli.html +11 -11
- package/dist/docs/reference/cli.md +24 -15
- package/dist/docs/reference/connections.html +6 -6
- package/dist/docs/reference/connections.md +2 -1
- package/dist/docs/reference/extensions.html +8 -8
- package/dist/docs/reference/extensions.md +2 -3
- package/dist/docs/reference/hooks.html +7 -7
- package/dist/docs/reference/hooks.md +9 -12
- package/dist/docs/reference/http-api.html +6 -6
- package/dist/docs/reference/http-api.md +2 -3
- package/dist/docs/reference/instructions.html +4 -4
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/playground.md +0 -4
- package/dist/docs/reference/project-layout.html +7 -7
- package/dist/docs/reference/project-layout.md +1 -8
- package/dist/docs/reference/prompt.html +4 -4
- package/dist/docs/reference/result.html +4 -4
- package/dist/docs/reference/schedules.html +4 -4
- package/dist/docs/reference/sessions.html +5 -5
- package/dist/docs/reference/sessions.md +1 -2
- 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 +2 -1
- package/dist/docs/skills/create-agent.html +6 -6
- package/dist/docs/skills/create-agent.md +1 -1
- package/dist/docs/skills/debug.html +5 -5
- package/dist/docs/skills/debug.md +1 -1
- package/dist/docs/skills/deploy.html +61 -0
- package/dist/docs/skills/deploy.md +161 -0
- package/dist/docs/skills/evals.html +8 -8
- package/dist/docs/skills/evals.md +44 -6
- package/dist/docs/skills/framework-map.html +5 -5
- package/dist/docs/skills/framework-map.md +5 -4
- package/dist/docs/skills/github.html +6 -6
- package/dist/docs/skills/github.md +1 -1
- package/dist/docs/skills/hillclimb.html +4 -4
- package/dist/docs/skills/index.html +6 -6
- package/dist/docs/skills/index.md +1 -1
- package/dist/docs/skills/mcp-auth.html +4 -4
- package/dist/docs/skills/otel.html +4 -4
- package/dist/docs/skills/setup-slack.html +4 -4
- package/dist/docs/storage.html +8 -8
- package/dist/docs/storage.md +15 -24
- 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/grokbot-agents.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/improve/extension.d.ts +46 -0
- package/dist/extensions/improve/extension.d.ts.map +1 -0
- package/dist/extensions/improve/extension.js +41 -0
- package/dist/extensions/improve/skills/yourself.d.ts +4 -0
- package/dist/extensions/improve/skills/yourself.d.ts.map +1 -0
- package/dist/extensions/improve/skills/yourself.js +43 -0
- package/dist/extensions.d.ts +2 -3
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +2 -5
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/internal/authored-alias-hooks.d.ts +5 -0
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +17 -0
- package/dist/internal/authored-loaders.d.ts +4 -0
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +21 -2
- package/dist/internal/builtin-tools/artifacts.d.ts.map +1 -1
- package/dist/internal/builtin-tools/artifacts.js +2 -3
- package/dist/internal/channel-route-dispatch.d.ts +13 -0
- package/dist/internal/channel-route-dispatch.d.ts.map +1 -0
- package/dist/internal/channel-route-dispatch.js +62 -0
- package/dist/internal/channel-state.d.ts +17 -0
- package/dist/internal/channel-state.d.ts.map +1 -0
- package/dist/internal/channel-state.js +78 -0
- package/dist/internal/cli-ax.d.ts +8 -2
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +100 -3
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +2 -0
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +38 -14
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +15 -0
- package/dist/internal/cli-mcp.d.ts.map +1 -1
- package/dist/internal/cli-mcp.js +12 -0
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +8 -2
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +2 -2
- package/dist/internal/continuation-identity.js +8 -3
- package/dist/internal/cursor/credentials.d.ts +8 -2
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +27 -5
- package/dist/internal/deploy-client.d.ts +27 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +32 -0
- package/dist/internal/deploy-manifest.d.ts +23 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +84 -1
- package/dist/internal/describe-error.d.ts +1 -0
- package/dist/internal/describe-error.d.ts.map +1 -1
- package/dist/internal/describe-error.js +25 -0
- package/dist/internal/discovery/agent.d.ts +1 -1
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +0 -5
- package/dist/internal/discovery/extension-overlay.d.ts +1 -2
- package/dist/internal/discovery/extension-overlay.d.ts.map +1 -1
- package/dist/internal/discovery/extension-overlay.js +0 -14
- package/dist/internal/discovery/extensions.d.ts +1 -2
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +4 -22
- package/dist/internal/discovery/info.d.ts.map +1 -1
- package/dist/internal/discovery/info.js +42 -24
- package/dist/internal/discovery/modules.js +0 -1
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +0 -16
- package/dist/internal/eval-runner.js +0 -1
- package/dist/internal/framework-file-storage.d.ts +4 -5
- package/dist/internal/framework-file-storage.d.ts.map +1 -1
- package/dist/internal/framework-file-storage.js +4 -5
- package/dist/internal/framework-storage-selection.d.ts +2 -2
- package/dist/internal/framework-storage-selection.js +2 -2
- package/dist/internal/guest-network.d.ts +4 -10
- package/dist/internal/guest-network.d.ts.map +1 -1
- package/dist/internal/guest-network.js +42 -26
- package/dist/internal/hosted-admission-adapter.d.ts +2 -0
- package/dist/internal/hosted-admission-adapter.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.d.ts +51 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -0
- package/dist/internal/hosted-catch-protocol.js +103 -0
- package/dist/internal/hosted-catch.d.ts +40 -0
- package/dist/internal/hosted-catch.d.ts.map +1 -0
- package/dist/internal/hosted-catch.js +149 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +41 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +249 -0
- package/dist/internal/hosted-delivery.d.ts +10 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +100 -22
- package/dist/internal/hosted-execution-diag.d.ts +4 -1
- package/dist/internal/hosted-execution-diag.d.ts.map +1 -1
- package/dist/internal/hosted-execution-diag.js +13 -4
- package/dist/internal/hosted-execution-flush.d.ts +3 -0
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +2 -4
- package/dist/internal/http-control-plane-session.d.ts +30 -0
- package/dist/internal/http-control-plane-session.d.ts.map +1 -0
- package/dist/internal/http-control-plane-session.js +83 -0
- package/dist/internal/init-scaffold.d.ts.map +1 -1
- package/dist/internal/init-scaffold.js +1 -2
- package/dist/internal/install-cursor-skills.d.ts +5 -2
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +25 -5
- package/dist/internal/legacy-command-guard.d.ts +22 -0
- package/dist/internal/legacy-command-guard.d.ts.map +1 -0
- package/dist/internal/legacy-command-guard.js +51 -0
- package/dist/internal/platform-timers.d.ts +7 -0
- package/dist/internal/platform-timers.d.ts.map +1 -1
- package/dist/internal/platform-timers.js +139 -0
- package/dist/internal/reminder-control-plane-protocol.d.ts +2 -0
- package/dist/internal/reminder-control-plane-protocol.d.ts.map +1 -1
- package/dist/internal/reminder-control-plane-protocol.js +9 -2
- package/dist/internal/reminder-runner.d.ts +8 -0
- package/dist/internal/reminder-runner.d.ts.map +1 -1
- package/dist/internal/reminder-runner.js +36 -9
- package/dist/internal/resolve-prod-target.d.ts +2 -0
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +13 -0
- package/dist/internal/run-client.d.ts +1 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +5 -4
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +57 -70
- package/dist/internal/session-engine.d.ts +7 -41
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +110 -227
- package/dist/internal/storage-coordinator.d.ts +5 -19
- package/dist/internal/storage-coordinator.d.ts.map +1 -1
- package/dist/internal/storage-coordinator.js +3 -62
- package/dist/internal/storage-roles.d.ts +4 -9
- package/dist/internal/storage-roles.d.ts.map +1 -1
- package/dist/internal/storage-roles.js +2 -2
- package/dist/playground/assets/index-Bhxzrcf6.css +1 -0
- package/dist/playground/assets/index-CqLX5uF3.js +67 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted-v2.d.ts +4 -5
- package/dist/storage-backends/cursor-hosted-v2.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted-v2.js +4 -5
- 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 +29 -31
- package/dist/storage-backends/file-kv.d.ts +9 -12
- package/dist/storage-backends/file-kv.d.ts.map +1 -1
- package/dist/storage-backends/file-kv.js +11 -47
- package/dist/storage-protocol.d.ts +3 -11
- package/dist/storage-protocol.d.ts.map +1 -1
- package/dist/storage-protocol.js +3 -11
- package/dist/storage.d.ts +8 -36
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -44
- package/dist/types.d.ts +53 -62
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +14 -6
- package/docs/building-with-agents.md +3 -2
- package/docs/concepts.md +2 -4
- package/docs/deployment.md +7 -2
- package/docs/evals.md +613 -297
- package/docs/guides/bitbucket.md +89 -0
- package/docs/guides/cloud-agents.md +4 -3
- package/docs/guides/github.md +33 -1
- package/docs/guides/gitlab.md +97 -0
- package/docs/guides/grokbot-agents.md +2 -2
- package/docs/guides/improve.md +96 -0
- package/docs/guides/slack.md +2 -1
- package/docs/guides/webhooks.md +4 -2
- package/docs/hillclimbing.md +2 -2
- package/docs/reference/agent-config.md +5 -2
- package/docs/reference/channels.md +16 -3
- package/docs/reference/cli.md +24 -15
- package/docs/reference/connections.md +2 -1
- package/docs/reference/extensions.md +2 -3
- package/docs/reference/hooks.md +9 -12
- package/docs/reference/http-api.md +2 -3
- package/docs/reference/playground.md +0 -4
- package/docs/reference/project-layout.md +1 -8
- package/docs/reference/sessions.md +1 -2
- package/docs/scaffolding-agents.md +2 -1
- package/docs/skills/index.md +2 -2
- package/docs/storage.md +15 -24
- package/docs/troubleshooting.md +1 -1
- package/package.json +8 -7
- package/skills/create-agent/SKILL.md +1 -1
- package/skills/debug/SKILL.md +1 -1
- package/skills/deploy/SKILL.md +169 -0
- package/skills/evals/SKILL.md +45 -8
- package/skills/framework-map/SKILL.md +5 -4
- package/skills/github/SKILL.md +1 -1
- package/src/bin/agent-serve.ts +27 -2
- package/src/channels/bitbucket/api.ts +341 -0
- package/src/channels/bitbucket/binding.ts +25 -0
- package/src/channels/bitbucket/index.ts +2 -0
- package/src/channels/github/github-channel.ts +8 -8
- package/src/channels/github/types.ts +5 -0
- package/src/channels/gitlab/api.ts +123 -0
- package/src/channels/gitlab/binding.ts +12 -0
- package/src/channels/gitlab/index.ts +1 -0
- package/src/channels/origin/origin-channel.ts +29 -13
- package/src/channels/origin/types.ts +5 -0
- package/src/channels/slack/dispatch.ts +30 -0
- package/src/channels/slack/slack-channel.ts +69 -7
- package/src/channels.ts +157 -10
- package/src/connections.ts +2 -1
- package/src/extensions/improve/extension.ts +70 -0
- package/src/extensions/improve/skills/yourself.ts +50 -0
- package/src/extensions.ts +2 -6
- package/src/index.ts +0 -3
- package/src/internal/authored-alias-hooks.ts +32 -0
- package/src/internal/authored-loaders.ts +26 -2
- package/src/internal/builtin-tools/artifacts.ts +2 -3
- package/src/internal/channel-route-dispatch.ts +66 -0
- package/src/internal/channel-state.ts +96 -0
- package/src/internal/cli-ax.ts +111 -3
- package/src/internal/cli-cursor.ts +4 -1
- package/src/internal/cli-deploy.ts +50 -10
- package/src/internal/cli-mcp-oauth.ts +18 -0
- package/src/internal/cli-mcp.ts +11 -0
- package/src/internal/cli-slack.ts +15 -2
- package/src/internal/continuation-channel.ts +2 -1
- package/src/internal/continuation-identity.ts +10 -2
- package/src/internal/cursor/credentials.ts +35 -7
- package/src/internal/deploy-client.ts +54 -0
- package/src/internal/deploy-manifest.ts +115 -1
- package/src/internal/describe-error.ts +28 -0
- package/src/internal/discovery/agent.ts +1 -7
- package/src/internal/discovery/extension-overlay.ts +0 -18
- package/src/internal/discovery/extensions.ts +2 -26
- package/src/internal/discovery/info.ts +3 -13
- package/src/internal/discovery/modules.ts +0 -1
- package/src/internal/discovery/project.ts +0 -16
- package/src/internal/eval-runner.ts +0 -1
- package/src/internal/framework-file-storage.ts +4 -5
- package/src/internal/framework-storage-selection.ts +2 -2
- package/src/internal/guest-network.ts +43 -29
- package/src/internal/hosted-admission-adapter.ts +2 -0
- package/src/internal/hosted-catch-protocol.ts +130 -0
- package/src/internal/hosted-catch.ts +192 -0
- package/src/internal/hosted-delivery-protocol.ts +387 -0
- package/src/internal/hosted-delivery.ts +155 -22
- package/src/internal/hosted-execution-diag.ts +21 -3
- package/src/internal/hosted-execution-flush.ts +6 -3
- package/src/internal/http-control-plane-session.ts +104 -0
- package/src/internal/init-scaffold.ts +1 -2
- package/src/internal/install-cursor-skills.ts +38 -5
- package/src/internal/legacy-command-guard.ts +59 -0
- package/src/internal/platform-timers.ts +191 -0
- package/src/internal/reminder-control-plane-protocol.ts +15 -2
- package/src/internal/reminder-runner.ts +60 -9
- package/src/internal/resolve-prod-target.ts +15 -0
- package/src/internal/run-client.ts +1 -1
- package/src/internal/sdk-runner.ts +3 -2
- package/src/internal/server.ts +89 -95
- package/src/internal/session-engine.ts +155 -285
- package/src/internal/storage-coordinator.ts +5 -76
- package/src/internal/storage-roles.ts +4 -9
- package/src/storage-backends/cursor-hosted-v2.ts +4 -7
- package/src/storage-backends/cursor-hosted.ts +40 -38
- package/src/storage-backends/file-kv.ts +10 -51
- package/src/storage-protocol.ts +3 -17
- package/src/storage.ts +10 -101
- package/src/types.ts +58 -62
- package/templates/demo/README.md +10 -6
- package/templates/demo/agent/channels/github.ts +2 -0
- package/templates/demo/agent/channels/queue.ts +6 -2
- package/templates/demo/agent/lib/repos.ts +5 -0
- package/templates/demo/init.json +25 -0
- package/dist/ab.d.ts +0 -209
- package/dist/ab.d.ts.map +0 -1
- package/dist/ab.js +0 -246
- package/dist/docs/ab.html +0 -80
- package/dist/docs/ab.md +0 -332
- package/dist/docs/assets/ab.md.mlVgqvSk.js +0 -54
- package/dist/docs/assets/ab.md.mlVgqvSk.lean.js +0 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.DXXZxiMv.js +0 -1
- package/dist/docs/assets/concepts.md.DgEcZOfT.js +0 -1
- package/dist/docs/assets/evals.md.CbMoebP1.js +0 -85
- package/dist/docs/assets/evals.md.CbMoebP1.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-agents.md.DS8RIjwx.js +0 -9
- package/dist/docs/assets/index.md.BW_6tOgR.js +0 -5
- package/dist/docs/assets/reference_sessions.md.CueyOHSL.js +0 -1
- package/dist/docs/assets/skills_ab.md.CsFNatVx.js +0 -26
- package/dist/docs/assets/skills_ab.md.CsFNatVx.lean.js +0 -1
- package/dist/docs/assets/skills_evals.md.723kpUmA.js +0 -25
- package/dist/docs/assets/skills_evals.md.723kpUmA.lean.js +0 -1
- package/dist/docs/assets/skills_framework-map.md.haibFyoB.js +0 -1
- package/dist/docs/assets/skills_index.md.DKwIxzGg.js +0 -1
- package/dist/docs/assets/skills_index.md.DKwIxzGg.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Cus_YZga.js +0 -1
- package/dist/docs/skills/ab.html +0 -52
- package/dist/docs/skills/ab.md +0 -50
- package/dist/internal/ab-collector.d.ts +0 -44
- package/dist/internal/ab-collector.d.ts.map +0 -1
- package/dist/internal/ab-collector.js +0 -142
- package/dist/internal/ab-fold.d.ts +0 -36
- package/dist/internal/ab-fold.d.ts.map +0 -1
- package/dist/internal/ab-fold.js +0 -175
- package/dist/internal/ab-snapshot.d.ts +0 -68
- package/dist/internal/ab-snapshot.d.ts.map +0 -1
- package/dist/internal/ab-snapshot.js +0 -208
- package/dist/internal/discovery/ab.d.ts +0 -9
- package/dist/internal/discovery/ab.d.ts.map +0 -1
- package/dist/internal/discovery/ab.js +0 -113
- package/dist/playground/assets/index-Bq2HpEQB.js +0 -67
- package/dist/playground/assets/index-CZKKNlmb.css +0 -1
- package/docs/ab.md +0 -337
- package/skills/ab/SKILL.md +0 -58
- package/src/ab.ts +0 -430
- package/src/internal/ab-collector.ts +0 -200
- package/src/internal/ab-fold.ts +0 -232
- package/src/internal/ab-snapshot.ts +0 -331
- package/src/internal/discovery/ab.ts +0 -131
- /package/dist/docs/assets/{concepts.md.DgEcZOfT.lean.js → concepts.md.B4o63Gul.lean.js} +0 -0
- /package/dist/docs/assets/{guides_grokbot-agents.md.DVqdhBKb.lean.js → guides_grokbot-agents.md.DyV-WArv.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.DKdA43Qm.lean.js → guides_webhooks.md.CJK484ex.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.CpTGTCle.lean.js → hillclimbing.md.BOiVo1tf.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.CHNpiyp4.lean.js → reference_agent-config.md.CvoL6pof.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.Di6jJAXF.lean.js → reference_connections.md.BojkC6c5.lean.js} +0 -0
- /package/dist/docs/assets/{reference_extensions.md.CGmMLblt.lean.js → reference_extensions.md.ZAVUyuEX.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.oySXBO8o.lean.js → reference_http-api.md.BwaCo-VO.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CueyOHSL.lean.js → reference_sessions.md.CyXV1MUw.lean.js} +0 -0
- /package/dist/docs/assets/{scaffolding-agents.md.em43xlY1.lean.js → scaffolding-agents.md.Kctn3OVb.lean.js} +0 -0
- /package/dist/docs/assets/{skills_create-agent.md.BVoWPcan.lean.js → skills_create-agent.md.Q3h6Je-e.lean.js} +0 -0
- /package/dist/docs/assets/{skills_github.md.D0JahM8c.lean.js → skills_github.md.hgFX_oKY.lean.js} +0 -0
- /package/dist/docs/assets/{troubleshooting.md.Cus_YZga.lean.js → troubleshooting.md.CYEAO9bM.lean.js} +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Bitbucket"
|
|
3
|
+
description: "Wake your agent from pull requests, comments, and pushes on Bitbucket Cloud or Bitbucket Data Center."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Bitbucket agents
|
|
7
|
+
|
|
8
|
+
Use `bitbucketChannel()` for Bitbucket Cloud and Bitbucket Data Center. The
|
|
9
|
+
channel detects the source from each signed payload and normalizes Data Center
|
|
10
|
+
events to the Bitbucket Cloud event vocabulary.
|
|
11
|
+
|
|
12
|
+
## Define the channel
|
|
13
|
+
|
|
14
|
+
Author `agent/channels/bitbucket.ts`:
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { bitbucketChannel } from "@cursor/july/channels/bitbucket";
|
|
18
|
+
|
|
19
|
+
export default bitbucketChannel({});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Without `onPullRequest`, new pull requests start turns. Data Center updates
|
|
23
|
+
also start turns when the source branch has new commits. Comments and pushes
|
|
24
|
+
are opt-in through `onPullRequestComment` and `onPush`. Use `onEvent` for
|
|
25
|
+
other event types. Set `webhookEvents` when managed event delivery must
|
|
26
|
+
subscribe to an event that only `onEvent` handles.
|
|
27
|
+
|
|
28
|
+
Filter comment hooks by author before starting a turn. This prevents comments
|
|
29
|
+
posted by the agent from triggering another turn.
|
|
30
|
+
|
|
31
|
+
`ctx.bitbucket.api` can read pull requests, post comments, and create build
|
|
32
|
+
statuses. See the [Channels reference](../reference/channels.md) for hook
|
|
33
|
+
return values and session behavior.
|
|
34
|
+
|
|
35
|
+
## Connect Bitbucket
|
|
36
|
+
|
|
37
|
+
Set a repository hook secret and API token:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
BITBUCKET_WEBHOOK_SECRET=...
|
|
41
|
+
BITBUCKET_TOKEN=...
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Add a repository webhook for
|
|
45
|
+
`https://<your-host>/<slug>/v1/channels/bitbucket`. Use the same secret on
|
|
46
|
+
both sides. The channel verifies the `X-Hub-Signature` HMAC before it parses
|
|
47
|
+
the payload.
|
|
48
|
+
|
|
49
|
+
Bitbucket Cloud uses its 2.0 API by default. Data Center also needs its REST
|
|
50
|
+
API base:
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
export default bitbucketChannel({
|
|
54
|
+
apiBaseUrl: "https://bitbucket.example.com/rest/api/1.0",
|
|
55
|
+
repos: ["PLATFORM/api"],
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
You can set `BITBUCKET_API_BASE_URL` instead.
|
|
60
|
+
|
|
61
|
+
## Test locally
|
|
62
|
+
|
|
63
|
+
Start the agent, then replay a pull request you can read:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
agent-sdk dev
|
|
67
|
+
agent-sdk bitbucket replay \
|
|
68
|
+
https://bitbucket.example.com/projects/PLATFORM/repos/api/pull-requests/42
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Replay supports Bitbucket Cloud and Data Center URLs. `BITBUCKET_TOKEN` needs
|
|
72
|
+
pull request read access. The command reads the pull request, creates a payload
|
|
73
|
+
in the matching dialect, and sends it through the same channel route. Use
|
|
74
|
+
`--events '*'` to replay the supported events declared by the channel. Use
|
|
75
|
+
`--dry-run --out fixtures/bitbucket` to save fixtures.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
agent-sdk bitbucket events --dir .
|
|
79
|
+
agent-sdk bitbucket forward --dir .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`forward` prints the repository-hook and HTTPS tunnel setup for live
|
|
83
|
+
deliveries.
|
|
84
|
+
|
|
85
|
+
## Related
|
|
86
|
+
|
|
87
|
+
- [Channels reference](../reference/channels.md)
|
|
88
|
+
- [Webhooks and custom channels](./webhooks.md)
|
|
89
|
+
- [Evals](../evals.md)
|
|
@@ -34,9 +34,10 @@ export default cursorCloudAgents({
|
|
|
34
34
|
});
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Launches run under the host's signed-in account (`agent-sdk login
|
|
38
|
-
`CURSOR_API_KEY`) and spend its
|
|
39
|
-
repositories the agent may target, and
|
|
37
|
+
Launches run under the host's signed-in account (`agent-sdk login`,
|
|
38
|
+
`CURSOR_API_KEY`, or `CURSOR_SERVICE_ACCOUNT_KEY`) and spend its
|
|
39
|
+
cloud-agent budget. Name the repositories the agent may target, and
|
|
40
|
+
keep approval on when you can't.
|
|
40
41
|
|
|
41
42
|
Mount it on an agent that runs on the local runtime; that is where
|
|
42
43
|
launches park for approval. On the cloud runtime approvals don't
|
package/docs/guides/github.md
CHANGED
|
@@ -18,7 +18,8 @@ The companion skill for coding agents is
|
|
|
18
18
|
Connect GitHub in Cursor for the repositories you care about (Settings or
|
|
19
19
|
[cursor.com/dashboard](https://cursor.com/dashboard)). That gives your
|
|
20
20
|
account access and lets Cursor receive the repo's webhooks. Sign the host
|
|
21
|
-
in (`agent-sdk login
|
|
21
|
+
in (`agent-sdk login`, `CURSOR_API_KEY`, or
|
|
22
|
+
`CURSOR_SERVICE_ACCOUNT_KEY`), then opt the channel into the
|
|
22
23
|
Cursor account connection:
|
|
23
24
|
|
|
24
25
|
```ts
|
|
@@ -78,6 +79,37 @@ snapshot in the wake.
|
|
|
78
79
|
This is the preferred production path: no public URL, no repo admin
|
|
79
80
|
webhook, and no inbound network for GitHub deliveries.
|
|
80
81
|
|
|
82
|
+
## Connect GitHub Enterprise Server
|
|
83
|
+
|
|
84
|
+
GitHub Enterprise Server uses the same `githubChannel()` hooks and normalized
|
|
85
|
+
events. Connect it through the direct webhook route. Set the REST API base and
|
|
86
|
+
credentials for your server:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
export default githubChannel({
|
|
90
|
+
api: {
|
|
91
|
+
apiBaseUrl: "https://github.example.com/api/v3",
|
|
92
|
+
},
|
|
93
|
+
credentials: {
|
|
94
|
+
token: () => process.env.GITHUB_TOKEN,
|
|
95
|
+
webhookSecret: () => process.env.GITHUB_WEBHOOK_SECRET,
|
|
96
|
+
},
|
|
97
|
+
onPullRequest: (ctx, pr) =>
|
|
98
|
+
pr.action === "opened" ? { auth: defaultGitHubAuth(ctx) } : null,
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Add a repository webhook for
|
|
103
|
+
`https://<your-host>/<slug>/v1/channels/github`. Use the same webhook secret
|
|
104
|
+
on the server and in `GITHUB_WEBHOOK_SECRET`. The channel verifies
|
|
105
|
+
`X-Hub-Signature-256` before it parses the payload.
|
|
106
|
+
|
|
107
|
+
Cursor account event pull, `github replay`, and `github forward` target
|
|
108
|
+
GitHub.com. Test Enterprise Server integrations by posting saved webhook
|
|
109
|
+
fixtures to a local `--dev` server. Leave `GITHUB_WEBHOOK_SECRET` unset for
|
|
110
|
+
this local test so the channel admits unsigned loopback deliveries. Use a real
|
|
111
|
+
delivery from your server so the fixture matches its version.
|
|
112
|
+
|
|
81
113
|
## Define the channel
|
|
82
114
|
|
|
83
115
|
Author `agent/channels/github.ts` with `githubChannel()` from
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "GitLab"
|
|
3
|
+
description: "Wake your agent from GitLab merge requests, notes, pipelines, and pushes on GitLab.com or self-managed GitLab."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitLab agents
|
|
7
|
+
|
|
8
|
+
Use `gitlabChannel()` for GitLab.com and self-managed GitLab. The channel
|
|
9
|
+
verifies project hooks, normalizes their payloads, and gives each hook a
|
|
10
|
+
project-bound `ctx.gitlab` API client.
|
|
11
|
+
|
|
12
|
+
## Define the channel
|
|
13
|
+
|
|
14
|
+
Author `agent/channels/gitlab.ts`:
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { gitlabChannel } from "@cursor/july/channels/gitlab";
|
|
18
|
+
|
|
19
|
+
export default gitlabChannel({});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Without `onMergeRequest`, new and reopened merge requests start turns.
|
|
23
|
+
Updates start turns only when they include new commits. Notes, pushes, and
|
|
24
|
+
pipelines are opt-in through `onNote`, `onPush`, and `onPipeline`.
|
|
25
|
+
Use `onEvent` for other GitLab event types. Set `webhookEvents` when managed
|
|
26
|
+
event delivery must subscribe to an event that only `onEvent` handles.
|
|
27
|
+
|
|
28
|
+
Filter note hooks by author before starting a turn. This prevents comments
|
|
29
|
+
posted by the agent from triggering another turn.
|
|
30
|
+
|
|
31
|
+
`ctx.gitlab` can call the project REST API and create commit statuses. See the
|
|
32
|
+
[Channels reference](../reference/channels.md) for hook return values and
|
|
33
|
+
session behavior.
|
|
34
|
+
|
|
35
|
+
## Connect GitLab
|
|
36
|
+
|
|
37
|
+
On Cursor-managed hosting, use the signed-in Cursor account:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
export default gitlabChannel({
|
|
41
|
+
cursorAccount: {
|
|
42
|
+
projects: ["acme/platform"],
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For direct webhooks, set a project hook secret and API token:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
GITLAB_WEBHOOK_SECRET=...
|
|
51
|
+
GITLAB_TOKEN=...
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Add a project webhook for
|
|
55
|
+
`https://<your-host>/<slug>/v1/channels/gitlab`. Use the same value for the
|
|
56
|
+
GitLab secret token and `GITLAB_WEBHOOK_SECRET`. The channel checks
|
|
57
|
+
`X-Gitlab-Token` before it parses the payload.
|
|
58
|
+
|
|
59
|
+
Self-managed GitLab also needs its REST API base:
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
export default gitlabChannel({
|
|
63
|
+
apiBaseUrl: "https://gitlab.example.com/api/v4",
|
|
64
|
+
projects: ["acme/platform"],
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
You can set `GITLAB_API_BASE_URL` instead.
|
|
69
|
+
|
|
70
|
+
## Test locally
|
|
71
|
+
|
|
72
|
+
Start the agent, then replay a merge request you can read:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
agent-sdk dev
|
|
76
|
+
agent-sdk gitlab replay \
|
|
77
|
+
https://gitlab.example.com/acme/platform/-/merge_requests/42
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`GITLAB_TOKEN` needs API read access. Replay reads the merge request,
|
|
81
|
+
creates GitLab-shaped payloads, and sends them through the same channel route.
|
|
82
|
+
Use `--events '*'` to replay the supported events declared by the channel.
|
|
83
|
+
Use `--dry-run --out fixtures/gitlab` to save fixtures.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
agent-sdk gitlab events --dir .
|
|
87
|
+
agent-sdk gitlab forward --dir .
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
GitLab has no local webhook relay. `forward` prints the project-hook and HTTPS
|
|
91
|
+
tunnel setup for live deliveries.
|
|
92
|
+
|
|
93
|
+
## Related
|
|
94
|
+
|
|
95
|
+
- [Channels reference](../reference/channels.md)
|
|
96
|
+
- [Webhooks and custom channels](./webhooks.md)
|
|
97
|
+
- [Evals](../evals.md)
|
|
@@ -32,8 +32,8 @@ export default cursorGrokBotAgents({
|
|
|
32
32
|
|
|
33
33
|
`agents` is the allowlist. List every Grok Bot the model may talk to;
|
|
34
34
|
a name outside the list is refused. Calls run under the host's
|
|
35
|
-
signed-in account (`agent-sdk login
|
|
36
|
-
approval on when you can't.
|
|
35
|
+
signed-in account (`agent-sdk login`, `CURSOR_API_KEY`, or
|
|
36
|
+
`CURSOR_SERVICE_ACCOUNT_KEY`). Keep approval on when you can't.
|
|
37
37
|
|
|
38
38
|
Start from the [Grok Bot agents template](../templates/grokbot-agents.md)
|
|
39
39
|
when you want a project that already mounts this.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Self-improvement"
|
|
3
|
+
description: "Mount improve so an agent can change its own instructions, skills, and tools through a pull request a one-off cloud agent opens."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Self-improvement
|
|
7
|
+
|
|
8
|
+
The `improve` extension lets an agent change how it behaves by changing
|
|
9
|
+
its own source. Someone asks it to answer more briefly, to stop reaching
|
|
10
|
+
for a tool, or to learn a procedure. The agent writes a brief, a one-off
|
|
11
|
+
Cursor cloud agent makes the change on a branch and opens a pull
|
|
12
|
+
request, and the agent reports that pull request. Nothing changes until
|
|
13
|
+
a person reviews it and deploys.
|
|
14
|
+
|
|
15
|
+
The tree the agent runs from is never edited; nothing changed there
|
|
16
|
+
survives a deploy. The pull request is the only path.
|
|
17
|
+
|
|
18
|
+
## Mount it
|
|
19
|
+
|
|
20
|
+
The extension ships with `@cursor/july`. It relies on a
|
|
21
|
+
[`cursor-cloud-agents`](./cloud-agents.md) mount beside it, with the
|
|
22
|
+
agent's own repository among its `cloud.repos`.
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
// agent/extensions/cloud.ts
|
|
26
|
+
import cursorCloudAgents from "@cursor/july/extensions/cursor-cloud-agents";
|
|
27
|
+
|
|
28
|
+
export default cursorCloudAgents({
|
|
29
|
+
cloud: {
|
|
30
|
+
repos: [{ url: "https://github.com/acme/agents", startingRef: "main" }],
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
// agent/extensions/improve.ts
|
|
37
|
+
import improve from "@cursor/july/extensions/improve";
|
|
38
|
+
|
|
39
|
+
export default improve({
|
|
40
|
+
repo: "https://github.com/acme/agents",
|
|
41
|
+
path: "agents/concierge",
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`repo` is the repository that holds the agent's source and `path` is
|
|
46
|
+
the agent's directory in it, the same values `agent-sdk deploy --repo`
|
|
47
|
+
and `--path` take. Mount it as `improve`: the skill then reads
|
|
48
|
+
`improve__yourself`, which is what a person asks for.
|
|
49
|
+
|
|
50
|
+
An agent on the
|
|
51
|
+
[cloud runtime](../reference/agent-config.md#choose-a-runtime) already
|
|
52
|
+
runs each turn on a VM with the repository checked out. It mounts
|
|
53
|
+
`improve` alone, and the skill has it branch in that checkout instead of
|
|
54
|
+
launching a second agent.
|
|
55
|
+
|
|
56
|
+
## What the agent does
|
|
57
|
+
|
|
58
|
+
With the extension mounted, "change how you work" becomes a procedure:
|
|
59
|
+
|
|
60
|
+
- **Locate the change.** The skill maps the ask onto the Agent SDK tree:
|
|
61
|
+
instructions for the always-on prompt, a skill for a procedure, a tool
|
|
62
|
+
for behavior that must be right every time, `agent.ts` for the model.
|
|
63
|
+
- **Brief a cloud agent.** The agent writes a self-contained brief: who
|
|
64
|
+
is asking and why, the repository, ref, and path, the files it expects
|
|
65
|
+
to change, your notes about the tree, and the rules. Follow the
|
|
66
|
+
repository's conventions, keep the diff to the change, run the
|
|
67
|
+
repository's checks, open a pull request against the deployed ref,
|
|
68
|
+
never merge.
|
|
69
|
+
- **Follow up and report.** It gives the person the cloud agent's URL,
|
|
70
|
+
checks on the run, reads the pull request before repeating its claims,
|
|
71
|
+
and reports the pull request, not the delegation. It says the change
|
|
72
|
+
takes effect at the next deploy, never that it has changed already.
|
|
73
|
+
|
|
74
|
+
Ask it directly. "Improve yourself: stop opening with a summary" is
|
|
75
|
+
enough.
|
|
76
|
+
|
|
77
|
+
## Configure it
|
|
78
|
+
|
|
79
|
+
| Option | What it controls |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| `repo` | The repository holding the agent's source. One of the cloud mount's `cloud.repos`. |
|
|
82
|
+
| `path` | The agent's directory in the repository, as `agent-sdk deploy --path` names it. |
|
|
83
|
+
| `ref` | The ref the deployment tracks. Branches start there and pull requests target it. Defaults to `main`. |
|
|
84
|
+
| `notes` | What a coding agent must know about this tree beyond the standard layout: a house skill format, a manifest that forces a reinstall, a pull request convention. Copied into every brief. |
|
|
85
|
+
| `deploy` | Who deploys a merged change and when it is live. Defaults to "It takes effect at the next deploy." |
|
|
86
|
+
|
|
87
|
+
## What's next
|
|
88
|
+
|
|
89
|
+
Continue with these pages:
|
|
90
|
+
|
|
91
|
+
- [Cursor cloud agents](./cloud-agents.md): the mount that does the
|
|
92
|
+
coding, and how to gate its launches
|
|
93
|
+
- [Extensions](../reference/extensions.md): how mounts, namespaces, and
|
|
94
|
+
overrides work
|
|
95
|
+
- [Deployment](../deployment.md): how a merged change reaches the
|
|
96
|
+
running agent
|
package/docs/guides/slack.md
CHANGED
|
@@ -148,7 +148,8 @@ agent-sdk slack create --dir .
|
|
|
148
148
|
agent-sdk slack create --dir . --prod
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
Sign in first (`agent-sdk login` or `CURSOR_API_KEY`).
|
|
151
|
+
Sign in first (`agent-sdk login` or `CURSOR_API_KEY`). A team
|
|
152
|
+
service-account key cannot create Slack apps. Finish **Add
|
|
152
153
|
Slack to this agent** as the same Cursor account. Then run
|
|
153
154
|
`agent-sdk slack doctor --prefix MY_AGENT` and serve:
|
|
154
155
|
|
package/docs/guides/webhooks.md
CHANGED
|
@@ -9,7 +9,8 @@ A custom channel gives the agent its own HTTP surface. You get routes
|
|
|
9
9
|
with validated payloads, sessions keyed to something in your domain (a
|
|
10
10
|
thread, a ticket, a PR), and replies delivered back to the caller. The
|
|
11
11
|
[Slack](./slack.md) and [GitHub](./github.md) packs build on this
|
|
12
|
-
mechanism.
|
|
12
|
+
mechanism. The [GitLab](./gitlab.md) and [Bitbucket](./bitbucket.md) packs
|
|
13
|
+
use it too. This page is the mechanism itself.
|
|
13
14
|
|
|
14
15
|
## What you already have
|
|
15
16
|
|
|
@@ -463,6 +464,7 @@ from any PR you can read. See the [GitHub guide](./github.md).
|
|
|
463
464
|
Continue with these pages:
|
|
464
465
|
|
|
465
466
|
- [Channels reference](../reference/channels.md): the full authoring API
|
|
466
|
-
- [GitHub](./github.md)
|
|
467
|
+
- [GitHub](./github.md), [GitLab](./gitlab.md),
|
|
468
|
+
[Bitbucket](./bitbucket.md), and [Slack](./slack.md): the packaged channels
|
|
467
469
|
- [Sessions and streaming](../reference/sessions.md): events your
|
|
468
470
|
channel can subscribe to
|
package/docs/hillclimbing.md
CHANGED
|
@@ -72,9 +72,9 @@ Pin the input first. A moving fixture is noise. For GitHub agents, use `agent-sd
|
|
|
72
72
|
|
|
73
73
|
## How do I lock a hillclimb improvement with an eval?
|
|
74
74
|
|
|
75
|
-
Every kept change needs an eval that would have failed before the change: a tool-choice gate,
|
|
75
|
+
Every kept change needs an eval that would have failed before the change: a tool-choice gate, a `maxToolCalls` bound, or an output-shape check. Run `agent-sdk eval --dir . --json` between rounds. Never weaken an existing gate to pass the round.
|
|
76
76
|
|
|
77
|
-
Details live in [
|
|
77
|
+
Details live in [Keep improvements with regression evals](./evals.md#keep-improvements-with-regression-evals). The evals skill will author the case with you.
|
|
78
78
|
|
|
79
79
|
## What habits help hillclimbing stay reliable?
|
|
80
80
|
|
|
@@ -240,8 +240,11 @@ console.log(`listening on ${handle.url}`);
|
|
|
240
240
|
Host settings match the documented [CLI](./cli.md) `serve` flags.
|
|
241
241
|
`serve()` also accepts `discovery` (project-loading options) and
|
|
242
242
|
`mode: "single" | "multi"`. The Cursor credential resolves in one order
|
|
243
|
-
everywhere: explicit `apiKey`, then `CURSOR_API_KEY`, then
|
|
244
|
-
|
|
243
|
+
everywhere: explicit `apiKey`, then `CURSOR_API_KEY`, then
|
|
244
|
+
`CURSOR_API_KEY_FILE` (hosted default `/run/cursor/secrets/CURSOR_API_KEY`
|
|
245
|
+
when unset), then `CURSOR_SERVICE_ACCOUNT_KEY`, then the key stored by
|
|
246
|
+
`agent-sdk login`. On a host that has both the service-account key and a
|
|
247
|
+
bind file, the file principal wins.
|
|
245
248
|
|
|
246
249
|
## What's next
|
|
247
250
|
|
|
@@ -8,7 +8,8 @@ description: "The authoring reference for defineChannel, the built-in HTTP chann
|
|
|
8
8
|
A channel is the surface an agent lives on. The built-in HTTP session
|
|
9
9
|
channel is always mounted. Custom channels declare their own routes
|
|
10
10
|
under `/v1/channels/<id>`. The Slack and GitHub packs are prebuilt
|
|
11
|
-
channels with platform transports.
|
|
11
|
+
channels with platform transports. GitLab and Bitbucket packs cover their
|
|
12
|
+
hosted and self-managed products. This page is the authoring reference;
|
|
12
13
|
for the walkthrough, see the [Webhooks guide](../guides/webhooks.md).
|
|
13
14
|
|
|
14
15
|
## Built-in HTTP channel
|
|
@@ -134,7 +135,7 @@ Handlers receive the Fetch `Request` and an args object:
|
|
|
134
135
|
`workspaceFiles`, `workspaceDir`, `cloud` (attach cloud repos for this
|
|
135
136
|
session), `auth` (defaults to the request principal), `state` (starting
|
|
136
137
|
channel state for new sessions), `title` (session display title), and
|
|
137
|
-
`purpose` (`"eval"`
|
|
138
|
+
`purpose` (`"eval"` marks the session as regression traffic).
|
|
138
139
|
|
|
139
140
|
## Events
|
|
140
141
|
|
|
@@ -215,7 +216,19 @@ model turn), `{ task }` (host work), or `null`, and CLI tooling for
|
|
|
215
216
|
replay and live forwarding. Author `agent/channels/github.ts` with
|
|
216
217
|
`githubChannel()`. Opt-in `progress.commitStatus` and `progress.banner`
|
|
217
218
|
converge a merge-box check and sticky PR comment from default stream
|
|
218
|
-
events.
|
|
219
|
+
events. Supports GitHub.com and GitHub Enterprise Server. Guide:
|
|
220
|
+
[GitHub](../guides/github.md).
|
|
221
|
+
|
|
222
|
+
**GitLab** (`@cursor/july/channels/gitlab`): verified project hooks for
|
|
223
|
+
merge requests, notes, pipelines, pushes, and custom event types. Supports
|
|
224
|
+
GitLab.com and self-managed GitLab. Author `agent/channels/gitlab.ts` with
|
|
225
|
+
`gitlabChannel()`. Guide: [GitLab](../guides/gitlab.md).
|
|
226
|
+
|
|
227
|
+
**Bitbucket** (`@cursor/july/channels/bitbucket`): verified repository hooks
|
|
228
|
+
for pull requests, comments, pushes, and custom event types. Supports
|
|
229
|
+
Bitbucket Cloud and Bitbucket Data Center through one normalized hook API.
|
|
230
|
+
Author `agent/channels/bitbucket.ts` with `bitbucketChannel()`. Guide:
|
|
231
|
+
[Bitbucket](../guides/bitbucket.md).
|
|
219
232
|
|
|
220
233
|
**Deployments** (`@cursor/july/channels/deployments`): pull deploy
|
|
221
234
|
events. Declare `events` and handle each one in `onEvent`. Each event
|
package/docs/reference/cli.md
CHANGED
|
@@ -109,7 +109,7 @@ the agent project. Slugged mounts get a subdirectory named for the slug.
|
|
|
109
109
|
| `--host` | Bind this host. The default is loopback-only `127.0.0.1`. |
|
|
110
110
|
| `--dev` | Disable automatic schedule and reminder firing, admit unsigned loopback GitHub deliveries, and widen playground session access on loopback. |
|
|
111
111
|
| `--mode` | Use `multi` for slugged routes and an index, or `single` for one agent at the unslugged `/v1/*`. The default is `multi`. |
|
|
112
|
-
| `--api-key` | Use this Cursor API key.
|
|
112
|
+
| `--api-key` | Use this Cursor API key. Otherwise the command uses `CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE` (hosted default `/run/cursor/secrets/CURSOR_API_KEY` when unset), then `CURSOR_SERVICE_ACCOUNT_KEY`, then the stored login. |
|
|
113
113
|
| `--state-root` | Store sessions, streams, workspaces, and channel state here. Keep durable production state outside the agent repository. |
|
|
114
114
|
| `--bearer-token` | Require this bearer token on routes without authored auth. Mutually exclusive with `--allow-anonymous`. |
|
|
115
115
|
| `--allow-anonymous` | Admit every caller as one `anonymous` principal. Use only behind a trusted network boundary. |
|
|
@@ -366,8 +366,10 @@ agent-sdk eval status <evalId> --prod --slug pr-approver
|
|
|
366
366
|
agent-sdk eval cancel <evalId> --prod --slug pr-approver
|
|
367
367
|
```
|
|
368
368
|
|
|
369
|
-
`eval` runs `evals/**/*.eval.{ts,js}` on an ephemeral server
|
|
370
|
-
`--
|
|
369
|
+
`eval` runs `evals/**/*.eval.{ts,js}` on an ephemeral server. With
|
|
370
|
+
`--prod` or `--url`, the target server runs its own evals as a
|
|
371
|
+
server-side batch. Select one or more exact case IDs, file ID prefixes,
|
|
372
|
+
or tags.
|
|
371
373
|
Omit selectors to run all cases. Repeated `--tag` flags use OR matching.
|
|
372
374
|
|
|
373
375
|
An eval run requires `evals/evals.config.{ts,js}` with `maxConcurrency`
|
|
@@ -378,13 +380,13 @@ between 1 and 200. Timeout priority is the case's `timeoutMs`, the CLI's
|
|
|
378
380
|
| --- | --- |
|
|
379
381
|
| `--list` | Print discovered cases without running. `--list --json` prints them as an array. |
|
|
380
382
|
| `--tag <tag>` | Run cases with this tag. Repeated flags use OR matching. |
|
|
381
|
-
| `--json` | Print `{ ok, passed, failed, results }
|
|
383
|
+
| `--json` | Print `{ ok, passed, failed, scored, skipped, strict, results }`; see [Run evals in CI](../evals.md#run-evals-in-ci) for the result shape. |
|
|
382
384
|
| `--verbose` | Stream `t.log` lines and reply snippets. |
|
|
383
385
|
| `--no-stream` | Hide live progress on stderr. |
|
|
384
386
|
| `--strict` | Exit `1` when a scored case misses a soft threshold. |
|
|
385
387
|
| `--max-concurrency <n>` | Override `maxConcurrency` from `evals.config.ts`. |
|
|
386
388
|
| `--junit <path>` | Write JUnit XML for CI annotations. |
|
|
387
|
-
| `--artifacts <dir>` | Write run artifacts here. The default is a timestamped directory under
|
|
389
|
+
| `--artifacts <dir>` | Write run artifacts here. The default is a timestamped directory under `evals/` in the project state directory (not affected by `--state-root`). |
|
|
388
390
|
| `--no-artifacts` | Skip run artifacts. |
|
|
389
391
|
| `--skip-report` | Ignore reporters from `evals.config.ts` and eval files. |
|
|
390
392
|
| `--out <path>` | Also write the full results JSON to this path (also for `eval status <evalId>`). |
|
|
@@ -557,10 +559,14 @@ runtime, and Cursor account MCP connections. `--key-name` changes the
|
|
|
557
559
|
name of a browser-minted key. `login --api-key` validates and stores a
|
|
558
560
|
key you already created.
|
|
559
561
|
|
|
560
|
-
`whoami` shows which credential is active and why.
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
562
|
+
`whoami` shows which credential is active and why. An explicit key
|
|
563
|
+
wins, then `CURSOR_API_KEY`, then `CURSOR_API_KEY_FILE` (hosted default
|
|
564
|
+
`/run/cursor/secrets/CURSOR_API_KEY` when unset), then
|
|
565
|
+
`CURSOR_SERVICE_ACCOUNT_KEY`, then the stored login. A host that has
|
|
566
|
+
both the service-account key and a bind file authenticates as the file
|
|
567
|
+
principal. `logout` removes the local credential file but doesn't
|
|
568
|
+
revoke the API key. Revoke it in the Cursor dashboard when it should
|
|
569
|
+
stop working.
|
|
564
570
|
|
|
565
571
|
Login and account RPCs honor `CURSOR_API_BASE_URL`. The SDK harness
|
|
566
572
|
honors `CURSOR_BACKEND_URL`. Set both to the same URL, or keys minted
|
|
@@ -598,9 +604,9 @@ agent-sdk deploy [--dir <path>] [--slug <slug> | --all] [--team <id>]
|
|
|
598
604
|
[--no-wait] [--json]
|
|
599
605
|
```
|
|
600
606
|
|
|
601
|
-
Managed hosting requires team
|
|
602
|
-
|
|
603
|
-
team.
|
|
607
|
+
Managed hosting requires team membership and the team's cloud-agent
|
|
608
|
+
entitlement. A team service-account API key with agent access can
|
|
609
|
+
deploy. `--team` defaults to the signed-in account's team.
|
|
604
610
|
|
|
605
611
|
For a single project, the slug defaults to a normalized version of the
|
|
606
612
|
directory name. Deployment slugs contain lowercase letters, digits, `_`,
|
|
@@ -843,8 +849,9 @@ checklist. It doesn't change files.
|
|
|
843
849
|
`slack create` opens the signed-in Cursor dashboard wizard. Finish Slack
|
|
844
850
|
consent and the bot name there. The CLI writes the token pair into
|
|
845
851
|
`<dir>/.env.local` and runs `doctor`. It requires a signed-in host
|
|
846
|
-
(`agent-sdk login` or `CURSOR_API_KEY`).
|
|
847
|
-
|
|
852
|
+
(`agent-sdk login` or `CURSOR_API_KEY`). A team service-account key
|
|
853
|
+
cannot create Slack apps. `--prod` provisions the production app; the
|
|
854
|
+
default is the development app. `--name` / `--icon`
|
|
848
855
|
/ `--channel-posts` prefill the wizard. A second create for the same
|
|
849
856
|
slug and env overwrites the live Slack app. If Slack needs a workspace
|
|
850
857
|
admin's approval, the wizard waits; keep the CLI running, open Slack's
|
|
@@ -957,7 +964,9 @@ These environment variables affect the CLI and its channel packs.
|
|
|
957
964
|
|
|
958
965
|
| Variable | Meaning |
|
|
959
966
|
| --- | --- |
|
|
960
|
-
| `CURSOR_API_KEY` | Cursor credential. It takes precedence over the stored login. |
|
|
967
|
+
| `CURSOR_API_KEY` | Cursor credential. It takes precedence over `CURSOR_API_KEY_FILE`, `CURSOR_SERVICE_ACCOUNT_KEY`, and the stored login. |
|
|
968
|
+
| `CURSOR_API_KEY_FILE` | Path to a Cursor credential file. Used when `CURSOR_API_KEY` is unset. When this variable is unset, the hosted default `/run/cursor/secrets/CURSOR_API_KEY` is tried. A present file takes precedence over `CURSOR_SERVICE_ACCOUNT_KEY` and the stored login. |
|
|
969
|
+
| `CURSOR_SERVICE_ACCOUNT_KEY` | Team service-account credential. Used when `CURSOR_API_KEY` and `CURSOR_API_KEY_FILE` (including the hosted default path) are unset. It takes precedence over the stored login. |
|
|
961
970
|
| `CURSOR_API_BASE_URL` | Backend used by login, account, deployment, and event-relay RPCs. |
|
|
962
971
|
| `CURSOR_BACKEND_URL` | Backend used by the Cursor SDK harness. |
|
|
963
972
|
| `AGENT_SERVE_CONFIG_DIR` | Directory for stored credentials and update-check state. Defaults to the CLI config directory under `~/.config`. |
|
|
@@ -224,7 +224,8 @@ Name the file `account.ts`. `cursor.ts` collides with the IDE `cursor`
|
|
|
224
224
|
MCP namespace. `advertiseTools: true` puts connector tools on local
|
|
225
225
|
turns by name. Without it they sit behind harness meta-tools.
|
|
226
226
|
|
|
227
|
-
The host must be signed in (`agent-sdk login` or
|
|
227
|
+
The host must be signed in (`agent-sdk login`, `CURSOR_API_KEY`, or
|
|
228
|
+
`CURSOR_SERVICE_ACCOUNT_KEY`).
|
|
228
229
|
`serve` fails fast at startup otherwise, and logs each connector's live
|
|
229
230
|
status (`connected`, `needsAuth`, `error`) as it starts.
|
|
230
231
|
|
|
@@ -59,7 +59,6 @@ namespace:
|
|
|
59
59
|
| `subagents/<id>/` | subagent `<ns>__<id>` |
|
|
60
60
|
| `instructions.md` / `.ts` / dir | appended to the agent's system prompt |
|
|
61
61
|
| `sandbox/workspace/**` | seeded into each local session workspace |
|
|
62
|
-
| `ab.ts` / `ab/<name>.ts` | A/B experiment `<ns>__<name>` |
|
|
63
62
|
| `artifacts.ts` | artifact kinds `<ns>__<kind>` |
|
|
64
63
|
|
|
65
64
|
The root agent still needs its own `instructions.md`. Extension
|
|
@@ -76,7 +75,6 @@ or is outside discovery:
|
|
|
76
75
|
| `agent.ts` | One `defineAgent` runtime per agent |
|
|
77
76
|
| `storage.ts` | One `host.kv` / `host.files` backend |
|
|
78
77
|
| `otel.ts` | One OTLP exporter |
|
|
79
|
-
| `ab.config.ts` | One experiment-platform config; `ab.ts` / `ab/` still merge |
|
|
80
78
|
| `playground/` | Custom chips are a Vite glob of the agent tree, not a discovery walk |
|
|
81
79
|
| `extensions/` | Nested mounts are not loaded |
|
|
82
80
|
| `sandbox.ts` | Custom sandbox backends stay on the agent |
|
|
@@ -117,7 +115,6 @@ it alive.
|
|
|
117
115
|
| `schedules/<name>.ts` | `disableSchedule()` |
|
|
118
116
|
| `subagents/<id>.ts` | `disableSubagent()` |
|
|
119
117
|
| `instructions.ts` | `disableInstructions()` |
|
|
120
|
-
| `ab.ts` / `ab/<name>.ts` | `disableAB()` |
|
|
121
118
|
| `artifacts.ts` | `disableArtifacts()` |
|
|
122
119
|
|
|
123
120
|
`disable()` is the same brand as the slot helpers above and works in
|
|
@@ -265,6 +262,8 @@ Continue with these pages:
|
|
|
265
262
|
lets an agent launch and steer cloud agents
|
|
266
263
|
- [Cursor Grok Bot agents](../guides/grokbot-agents.md): the extension
|
|
267
264
|
that lets an agent talk to Grok Bot agents
|
|
265
|
+
- [Self-improvement](../guides/improve.md): the extension that lets an
|
|
266
|
+
agent change its own source through a cloud agent and a pull request
|
|
268
267
|
- [Tools](./tools.md): the tool contract extensions contribute to
|
|
269
268
|
- [Skills](./skills.md): the skill forms an extension can carry
|
|
270
269
|
- [Project layout](./project-layout.md): where `agent/extensions/` sits
|
package/docs/reference/hooks.md
CHANGED
|
@@ -88,7 +88,7 @@ exported from `@cursor/july`.
|
|
|
88
88
|
|
|
89
89
|
| Member | What it is |
|
|
90
90
|
| --- | --- |
|
|
91
|
-
| `ctx.session` | Read-only session info: `id`, `channelId`, `mode` (`chat` or `task`), `purpose` (`live` or `eval`), `auth`, plus `title
|
|
91
|
+
| `ctx.session` | Read-only session info: `id`, `channelId`, `mode` (`chat` or `task`), `purpose` (`live` or `eval`), `auth`, plus `title` and `sdkAgentId` when set |
|
|
92
92
|
| `ctx.agent` | `{ name }` of the agent the event belongs to |
|
|
93
93
|
| `ctx.channel` | `{ id, continuationToken }`. The token is `null` when the session can't take follow-ups |
|
|
94
94
|
| `ctx.host.kv` | Durable JSON, shared by every session of the agent; the [storage backend](../storage.md#author-kv-ctx-host-kv) decides whether it survives a hosted replace. Prefix keys with `ctx.session.id` for per-session state |
|
|
@@ -119,17 +119,17 @@ Each event reaches a hook at most once. A restart doesn't replay the log
|
|
|
119
119
|
into hooks, so a mirror needs no dedupe, and the event log rather than
|
|
120
120
|
the hook's copy is the source of truth.
|
|
121
121
|
|
|
122
|
-
## Hooks, channel events,
|
|
122
|
+
## Hooks, channel events, or evals?
|
|
123
123
|
|
|
124
124
|
All of them consume the same stream, for different jobs:
|
|
125
125
|
|
|
126
|
-
| | Hooks | Channel `events` | Evals |
|
|
127
|
-
| --- | --- | --- | --- |
|
|
128
|
-
| Scope | every session of the agent | sessions the channel owns | one test turn |
|
|
129
|
-
| Job | observe: audit, metrics, mirrors, derived state | deliver: replies back to the channel's surface | assert: gates over the trajectory |
|
|
130
|
-
| Context | `ctx.host`, `ctx.artifacts`, session info | `channel.state`, `setContinuationToken`, `ctx.host`, session info | the `t` assertion helpers |
|
|
131
|
-
| Can affect the run | no | yes, it owns the surface | n/a |
|
|
132
|
-
| Authored at | `agent/hooks/*.ts` | channel config | `evals/**/*.eval.ts` |
|
|
126
|
+
| | Hooks | Channel `events` | Evals |
|
|
127
|
+
| --- | --- | --- | --- |
|
|
128
|
+
| Scope | every session of the agent | sessions the channel owns | one test turn |
|
|
129
|
+
| Job | observe: audit, metrics, mirrors, derived state | deliver: replies back to the channel's surface | assert: gates over the trajectory |
|
|
130
|
+
| Context | `ctx.host`, `ctx.artifacts`, session info | `channel.state`, `setContinuationToken`, `ctx.host`, session info | the `t` assertion helpers |
|
|
131
|
+
| Can affect the run | no | yes, it owns the surface | n/a |
|
|
132
|
+
| Authored at | `agent/hooks/*.ts` | channel config | `evals/**/*.eval.ts` |
|
|
133
133
|
|
|
134
134
|
## When not to use a hook
|
|
135
135
|
|
|
@@ -141,7 +141,6 @@ All of them consume the same stream, for different jobs:
|
|
|
141
141
|
| Block, approve, or rewrite a tool call | [`needsApproval`](./tools.md#gate-a-tool-on-human-approval) on the tool |
|
|
142
142
|
| Act on the final assistant text, or fail a bad turn | [`defineResult`](./result.md) |
|
|
143
143
|
| Gate a change on behavior | [Evals](../evals.md) |
|
|
144
|
-
| Compare two prompts on live traffic | [`defineAB`](../ab.md) |
|
|
145
144
|
|
|
146
145
|
## Patterns
|
|
147
146
|
|
|
@@ -267,5 +266,3 @@ Continue with these pages:
|
|
|
267
266
|
- [Deployment](../deployment.md#observability): runtime logs and export
|
|
268
267
|
paths
|
|
269
268
|
- [Channels](./channels.md#events): the delivery-side counterpart
|
|
270
|
-
- [Live A/B metrics](../ab.md): sticky variants over the same event
|
|
271
|
-
stream
|