@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
package/src/types.ts
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
import type { InteractionUpdate, SDKCustomTool, ToolName } from "@cursor/sdk";
|
|
12
12
|
import type { z } from "zod";
|
|
13
|
-
import type { ABConfigFile } from "./ab.js";
|
|
14
13
|
import type { FileSystem } from "./filesystem.js";
|
|
15
14
|
import type {
|
|
16
15
|
ContinuationClaim,
|
|
@@ -55,7 +54,6 @@ export type DefinitionKind =
|
|
|
55
54
|
| "reminder"
|
|
56
55
|
| "hook"
|
|
57
56
|
| "eval"
|
|
58
|
-
| "ab"
|
|
59
57
|
| "storage"
|
|
60
58
|
| "artifacts"
|
|
61
59
|
| "otel"
|
|
@@ -1202,8 +1200,8 @@ export type DisabledConnectionDefinition =
|
|
|
1202
1200
|
/**
|
|
1203
1201
|
* `export default disable()` / `disableSkill()` / `disableHook()` /
|
|
1204
1202
|
* `disableChannel()` / `disableSchedule()` / `disableSubagent()` /
|
|
1205
|
-
* `disableInstructions()` / `
|
|
1206
|
-
*
|
|
1203
|
+
* `disableInstructions()` / `disableArtifacts()` in a directory mount
|
|
1204
|
+
* removes that contribution from the matching overlay slot.
|
|
1207
1205
|
*/
|
|
1208
1206
|
export type DisabledDefinition = BrandedDefinition<"disabled">;
|
|
1209
1207
|
|
|
@@ -1232,8 +1230,6 @@ export interface DiscoveredExtension {
|
|
|
1232
1230
|
instructions: boolean;
|
|
1233
1231
|
/** Workspace seed paths the mount contributed. */
|
|
1234
1232
|
seedFiles: string[];
|
|
1235
|
-
/** Composed A/B experiment names (`<ns>__<name>`). */
|
|
1236
|
-
abs: string[];
|
|
1237
1233
|
/** Composed artifact kind names (`<ns>__<kind>`). */
|
|
1238
1234
|
artifactKinds: string[];
|
|
1239
1235
|
}
|
|
@@ -1615,15 +1611,6 @@ export interface PendingAuth {
|
|
|
1615
1611
|
|
|
1616
1612
|
export type SessionEventPayload =
|
|
1617
1613
|
| { type: "session.started"; data: { channelId: string; dryRun?: boolean } }
|
|
1618
|
-
| {
|
|
1619
|
-
/**
|
|
1620
|
-
* Sticky A/B enrollment for one experiment (`defineAB` under `agent/ab`).
|
|
1621
|
-
* Appended at session creation (before the first turn). `variant` is a
|
|
1622
|
-
* key of the experiment's `variants`, or `null` for sticky skip.
|
|
1623
|
-
*/
|
|
1624
|
-
type: "ab.assigned";
|
|
1625
|
-
data: { experiment: string; variant: string | null };
|
|
1626
|
-
}
|
|
1627
1614
|
| {
|
|
1628
1615
|
/** Cursor SDK agent id is known (cloud: `bc-…`; local: session id). */
|
|
1629
1616
|
type: "agent.bound";
|
|
@@ -1778,7 +1765,14 @@ export type SessionEventPayload =
|
|
|
1778
1765
|
type: "turn.bound";
|
|
1779
1766
|
data: { requestId: string };
|
|
1780
1767
|
}
|
|
1781
|
-
| {
|
|
1768
|
+
| {
|
|
1769
|
+
type: "turn.failed";
|
|
1770
|
+
data: {
|
|
1771
|
+
message: string;
|
|
1772
|
+
/** Machine-readable terminal status. Omitted on legacy stored events. */
|
|
1773
|
+
status?: "error" | "cancelled";
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1782
1776
|
| {
|
|
1783
1777
|
/**
|
|
1784
1778
|
* A Slack follow-up queued mid-turn reached the running agent: the
|
|
@@ -1806,8 +1800,8 @@ export interface TurnUsage {
|
|
|
1806
1800
|
|
|
1807
1801
|
/**
|
|
1808
1802
|
* Dollar cost of one turn's token usage (one agent loop pass).
|
|
1809
|
-
* Recorded on `turn.completed` events so traces, the playground,
|
|
1810
|
-
*
|
|
1803
|
+
* Recorded on `turn.completed` events so traces, the playground, and the
|
|
1804
|
+
* CLI can aggregate spend. Computed by
|
|
1811
1805
|
* `POST /v1/models/estimate-cost` — billed usage events when available
|
|
1812
1806
|
* (credits, discounts, CTF), otherwise live catalog pricing.
|
|
1813
1807
|
*/
|
|
@@ -1834,8 +1828,7 @@ export type SessionMode = "chat" | "task";
|
|
|
1834
1828
|
|
|
1835
1829
|
/**
|
|
1836
1830
|
* Why the session exists. `"eval"` is regression traffic (`defineEval` /
|
|
1837
|
-
* `agent-sdk eval` / playground Evals)
|
|
1838
|
-
* enrollment. Default `"live"`.
|
|
1831
|
+
* `agent-sdk eval` / playground Evals). Default `"live"`.
|
|
1839
1832
|
*/
|
|
1840
1833
|
export type SessionPurpose = "live" | "eval";
|
|
1841
1834
|
|
|
@@ -1852,12 +1845,6 @@ export interface SessionInfo {
|
|
|
1852
1845
|
asOf?: string;
|
|
1853
1846
|
auth: AuthContext | null;
|
|
1854
1847
|
title?: string;
|
|
1855
|
-
/**
|
|
1856
|
-
* Sticky A/B arms for this session (`defineAB`): experiment name → variant
|
|
1857
|
-
* key, or `null` for sticky skip. Present after enrollment at session
|
|
1858
|
-
* create (live traffic only). Tools/hooks/harness overlays read this.
|
|
1859
|
-
*/
|
|
1860
|
-
abs?: Readonly<Record<string, string | null>>;
|
|
1861
1848
|
/**
|
|
1862
1849
|
* Channel-local continuation key when the session is addressable for
|
|
1863
1850
|
* follow-ups / reminders. Null when the session is not re-keyable.
|
|
@@ -1878,20 +1865,14 @@ export interface SessionRecord {
|
|
|
1878
1865
|
channelId: string;
|
|
1879
1866
|
mode: SessionMode;
|
|
1880
1867
|
/**
|
|
1881
|
-
* `"eval"` for harness sessions
|
|
1882
|
-
*
|
|
1868
|
+
* `"eval"` for harness sessions. Older records omit this (treated as
|
|
1869
|
+
* `"live"`).
|
|
1883
1870
|
*/
|
|
1884
1871
|
purpose?: SessionPurpose;
|
|
1885
1872
|
/** Frozen at create from {@link SendMessageOptions.dryRun}. */
|
|
1886
1873
|
dryRun?: boolean;
|
|
1887
1874
|
/** Frozen at create from {@link SendMessageOptions.asOf}. */
|
|
1888
1875
|
asOf?: string;
|
|
1889
|
-
/**
|
|
1890
|
-
* Denormalized sticky A/B arms (mirrors durable `ab.assigned` events) so
|
|
1891
|
-
* the agent loop / tools can read arms without re-folding the log. Source
|
|
1892
|
-
* of truth for stickiness remains the event stream.
|
|
1893
|
-
*/
|
|
1894
|
-
abs?: Record<string, string | null>;
|
|
1895
1876
|
/** Channel-local continuation key; null when the session is not addressable. */
|
|
1896
1877
|
continuationKey: string | null;
|
|
1897
1878
|
/**
|
|
@@ -1953,6 +1934,10 @@ export interface TurnOutcome {
|
|
|
1953
1934
|
status: "finished" | "error" | "cancelled";
|
|
1954
1935
|
result?: string;
|
|
1955
1936
|
errorMessage?: string;
|
|
1937
|
+
/** Stable machine-readable runner code when the failure supplied one. */
|
|
1938
|
+
errorCode?: string;
|
|
1939
|
+
/** Why a cancelled turn stopped, when the engine observed the boundary. */
|
|
1940
|
+
cancellationReason?: "signal" | "runner";
|
|
1956
1941
|
usage?: TurnUsage;
|
|
1957
1942
|
/** Cost of {@link usage} from the Cloud Agents cost endpoint. */
|
|
1958
1943
|
cost?: TurnCost;
|
|
@@ -2023,7 +2008,10 @@ export interface ChannelSession {
|
|
|
2023
2008
|
getEventStream(options?: {
|
|
2024
2009
|
startIndex?: number;
|
|
2025
2010
|
}): Promise<ReadableStream<Uint8Array>>;
|
|
2026
|
-
/**
|
|
2011
|
+
/**
|
|
2012
|
+
* Resolves after the currently running turn reaches a terminal event and
|
|
2013
|
+
* handlers already queued for that session have settled.
|
|
2014
|
+
*/
|
|
2027
2015
|
waitForCompletion(): Promise<TurnOutcome>;
|
|
2028
2016
|
/** Re-key the session's channel-local continuation token. */
|
|
2029
2017
|
setContinuationToken(token: string | null): Promise<void>;
|
|
@@ -2069,8 +2057,8 @@ export interface SendMessageOptions {
|
|
|
2069
2057
|
/** Session display title (applied when creating a new session). */
|
|
2070
2058
|
title?: string;
|
|
2071
2059
|
/**
|
|
2072
|
-
* Session purpose at create time. `"eval"`
|
|
2073
|
-
*
|
|
2060
|
+
* Session purpose at create time. `"eval"` marks regression traffic so
|
|
2061
|
+
* hooks, `defineResult`, and telemetry can tell it from live sessions.
|
|
2074
2062
|
*/
|
|
2075
2063
|
purpose?: SessionPurpose;
|
|
2076
2064
|
/**
|
|
@@ -2384,7 +2372,14 @@ export interface ReceiveInput {
|
|
|
2384
2372
|
target?: JsonObject;
|
|
2385
2373
|
}
|
|
2386
2374
|
|
|
2387
|
-
/**
|
|
2375
|
+
/**
|
|
2376
|
+
* Per-event channel context. `state` is mutable. Turn events receive the
|
|
2377
|
+
* state snapshot captured for that turn; handler mutations are recursively
|
|
2378
|
+
* merged into the latest persisted state so fields refreshed by overlapping
|
|
2379
|
+
* deliveries survive. At paths changed by the handler, objects merge
|
|
2380
|
+
* recursively, arrays and scalars replace the latest value, and deletion
|
|
2381
|
+
* removes the latest value. Events outside a turn receive current live state.
|
|
2382
|
+
*/
|
|
2388
2383
|
export interface ChannelEventContext<TState = JsonValue> {
|
|
2389
2384
|
channelId: string;
|
|
2390
2385
|
state: TState;
|
|
@@ -2401,6 +2396,11 @@ export interface SessionContext {
|
|
|
2401
2396
|
* relative path cannot read another session's files.
|
|
2402
2397
|
*/
|
|
2403
2398
|
host: HostContext;
|
|
2399
|
+
/**
|
|
2400
|
+
* Durable artifacts bound to this event's session and turn. `tag`
|
|
2401
|
+
* auto-fills both ids and rejects a conflicting explicit `sessionId`.
|
|
2402
|
+
*/
|
|
2403
|
+
artifacts: ArtifactsApi;
|
|
2404
2404
|
}
|
|
2405
2405
|
|
|
2406
2406
|
export type ChannelEventHandler<
|
|
@@ -2548,6 +2548,14 @@ export interface ChannelMeta {
|
|
|
2548
2548
|
* `deploymentEventTypes`.
|
|
2549
2549
|
*/
|
|
2550
2550
|
factoryEventTypes?: readonly string[];
|
|
2551
|
+
/**
|
|
2552
|
+
* For Slack packs: the Events API event types this channel dispatches on
|
|
2553
|
+
* (`app_mention`, `message`), derived from `engagement`. Extracted into
|
|
2554
|
+
* the deploy manifest as `eventTypes` so hosted v2 fanout subscribes to
|
|
2555
|
+
* exactly these. Local Socket Mode ignores it (the socket delivers
|
|
2556
|
+
* whatever the app manifest subscribed to).
|
|
2557
|
+
*/
|
|
2558
|
+
slackEventTypes?: readonly string[];
|
|
2551
2559
|
/**
|
|
2552
2560
|
* For Slack packs with the opt-in channel watch: the allowlisted channels
|
|
2553
2561
|
* (ids or `#names`) this channel dispatches on without a mention. Surfaced
|
|
@@ -2711,6 +2719,8 @@ export type ArtifactsDefinition = ArtifactsConfig &
|
|
|
2711
2719
|
*/
|
|
2712
2720
|
export interface ResultContext {
|
|
2713
2721
|
session: SessionInfo;
|
|
2722
|
+
/** Durable channel state captured for this turn. */
|
|
2723
|
+
channelState: JsonValue;
|
|
2714
2724
|
host: HostContext;
|
|
2715
2725
|
artifacts: ArtifactsApi;
|
|
2716
2726
|
stateRoot: string;
|
|
@@ -3198,15 +3208,6 @@ export interface DiscoveredHook {
|
|
|
3198
3208
|
definition: HookDefinition;
|
|
3199
3209
|
}
|
|
3200
3210
|
|
|
3201
|
-
/** Live A/B metrics experiment (`agent/ab.ts` or `agent/ab/<name>.ts`). */
|
|
3202
|
-
export interface DiscoveredAB {
|
|
3203
|
-
name: string;
|
|
3204
|
-
/** File stem the experiment was loaded from (`ab` or a path under `ab/`). */
|
|
3205
|
-
source?: string;
|
|
3206
|
-
/** Branded `defineAB({ ... })` config (see `@cursor/july/ab`). */
|
|
3207
|
-
definition: BrandedDefinition<"ab">;
|
|
3208
|
-
}
|
|
3209
|
-
|
|
3210
3211
|
export interface SeedFile {
|
|
3211
3212
|
/** Path inside the session workspace. */
|
|
3212
3213
|
relativePath: string;
|
|
@@ -3287,10 +3288,6 @@ export interface AgentProject {
|
|
|
3287
3288
|
/** Named reminder handlers from `agent/reminders/*` (optional / additive). */
|
|
3288
3289
|
reminders?: DiscoveredReminder[];
|
|
3289
3290
|
hooks: DiscoveredHook[];
|
|
3290
|
-
/** Live A/B metric experiments (`defineAB`). */
|
|
3291
|
-
abs: DiscoveredAB[];
|
|
3292
|
-
/** Optional `agent/ab.config.ts` (`defineABConfig`). */
|
|
3293
|
-
abConfig?: ABConfigFile;
|
|
3294
3291
|
/** Optional `agent/storage.ts` (`defineStorage`). */
|
|
3295
3292
|
storage?: StorageDefinition;
|
|
3296
3293
|
/** Optional `agent/artifacts.ts` (`defineArtifacts`). */
|
|
@@ -3387,6 +3384,8 @@ export interface AgentProjectInfo {
|
|
|
3387
3384
|
deploymentEventTypes?: readonly string[];
|
|
3388
3385
|
/** Change Monitor checkpoint or Factory issue event types the channel dispatches on, when declared. */
|
|
3389
3386
|
factoryEventTypes?: readonly string[];
|
|
3387
|
+
/** Slack Events API event types the channel dispatches on, when declared. */
|
|
3388
|
+
slackEventTypes?: readonly string[];
|
|
3390
3389
|
/** Slack channels watched for posts (opt-in channel watch), when declared. */
|
|
3391
3390
|
slackChannelPosts?: readonly string[];
|
|
3392
3391
|
}>;
|
|
@@ -3394,14 +3393,6 @@ export interface AgentProjectInfo {
|
|
|
3394
3393
|
/** Named reminder handlers (`agent/reminders/<name>.ts`) when present. */
|
|
3395
3394
|
reminders?: Array<{ name: string }>;
|
|
3396
3395
|
hooks: string[];
|
|
3397
|
-
/** Live A/B experiment names (`defineAB` under `agent/ab`). */
|
|
3398
|
-
abs: string[];
|
|
3399
|
-
/** Playground fold / durable-sink meta from `agent/ab.config.ts`. */
|
|
3400
|
-
abConfig?: {
|
|
3401
|
-
maxPlaygroundSessions?: number;
|
|
3402
|
-
durableSamples: boolean;
|
|
3403
|
-
durableSnapshots: boolean;
|
|
3404
|
-
};
|
|
3405
3396
|
/** Project storage sink from `agent/storage.ts`, when authored. */
|
|
3406
3397
|
storage?: { name?: string };
|
|
3407
3398
|
otel?: { serviceName?: string; enabled: true };
|
|
@@ -3542,8 +3533,11 @@ export interface ServeOptions {
|
|
|
3542
3533
|
stateRoot?: string;
|
|
3543
3534
|
/**
|
|
3544
3535
|
* Cursor API key for the SDK runner and Cursor account MCP connections.
|
|
3545
|
-
* When omitted, falls back to `CURSOR_API_KEY`, then
|
|
3546
|
-
*
|
|
3536
|
+
* When omitted, falls back to `CURSOR_API_KEY`, then
|
|
3537
|
+
* `CURSOR_API_KEY_FILE` (hosted default `/run/cursor/secrets/CURSOR_API_KEY`
|
|
3538
|
+
* when unset), then `CURSOR_SERVICE_ACCOUNT_KEY`, then the credential
|
|
3539
|
+
* stored by `agent-sdk login`. A bind file wins over
|
|
3540
|
+
* `CURSOR_SERVICE_ACCOUNT_KEY`.
|
|
3547
3541
|
*/
|
|
3548
3542
|
apiKey?: string;
|
|
3549
3543
|
/** Run schedules on their cron cadence. Defaults to `!dev`. */
|
|
@@ -3628,7 +3622,9 @@ export interface ServeOptions {
|
|
|
3628
3622
|
* GitHub and Origin subscriptions are registered independently.
|
|
3629
3623
|
* The stream is read as the host's Cursor user, so this requires a signed-in
|
|
3630
3624
|
* host: `serve` throws when no key resolves from `apiKey` here,
|
|
3631
|
-
* {@link ServeOptions.apiKey}, `CURSOR_API_KEY`,
|
|
3625
|
+
* {@link ServeOptions.apiKey}, `CURSOR_API_KEY`, `CURSOR_API_KEY_FILE`
|
|
3626
|
+
* (hosted default `/run/cursor/secrets/CURSOR_API_KEY` when unset),
|
|
3627
|
+
* `CURSOR_SERVICE_ACCOUNT_KEY`, or `agent-sdk login`.
|
|
3632
3628
|
*/
|
|
3633
3629
|
cursorEvents?: {
|
|
3634
3630
|
repos: string[];
|
package/templates/demo/README.md
CHANGED
|
@@ -7,19 +7,22 @@ walkthrough and comments the result.
|
|
|
7
7
|
npx @cursor/july init ./my-demo --template demo
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
+
`init` asks which repos to watch. Skip the prompt with
|
|
11
|
+
`--var repos=owner/repo`.
|
|
12
|
+
|
|
10
13
|
## Run
|
|
11
14
|
|
|
15
|
+
Connect GitHub in Cursor for those repos. Then sign the host in:
|
|
16
|
+
|
|
12
17
|
```bash
|
|
13
18
|
agent-sdk login
|
|
14
19
|
agent-sdk dev
|
|
15
20
|
```
|
|
16
21
|
|
|
17
|
-
In the playground, run `/queue/pr` with a PR URL or `owner/repo#N
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
webhooks (`GITHUB_WEBHOOK_SECRET`). The host needs `GITHUB_TOKEN` or
|
|
22
|
-
`gh auth` to read the PR and comment.
|
|
22
|
+
In the playground, run `/queue/pr` with a PR URL or `owner/repo#N` from
|
|
23
|
+
a watched repo. On GitHub, label a PR `demo` or comment `/demo`. Events
|
|
24
|
+
and API calls use your Cursor GitHub connection. Turns are sandboxed
|
|
25
|
+
with `read` and `grep` only.
|
|
23
26
|
|
|
24
27
|
```text
|
|
25
28
|
POST /<slug>/v1/channels/queue/pr
|
|
@@ -29,5 +32,6 @@ POST /<slug>/v1/channels/queue/pr
|
|
|
29
32
|
|
|
30
33
|
## Files to edit
|
|
31
34
|
|
|
35
|
+
- `agent/lib/repos.ts`: watched repos
|
|
32
36
|
- `agent/instructions.md`: how to record
|
|
33
37
|
- `evals/demo.eval.ts`: smoke case
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
parseGitHubPrRef,
|
|
7
7
|
} from "@cursor/july/channels/github";
|
|
8
8
|
import { startDemo } from "../lib/collect.js";
|
|
9
|
+
import { REPOS } from "../lib/repos.js";
|
|
9
10
|
|
|
10
11
|
let send: SendMessageFn | undefined;
|
|
11
12
|
|
|
@@ -21,6 +22,7 @@ function wake(url: string, github: GitHubHandle) {
|
|
|
21
22
|
export default githubChannel({
|
|
22
23
|
botName: "demo-agent",
|
|
23
24
|
webhookEvents: ["pull_request", "issue_comment"],
|
|
25
|
+
cursorAccount: { repos: REPOS },
|
|
24
26
|
deliverReplies: false,
|
|
25
27
|
onStart: async (args: ChannelStartArgs) => {
|
|
26
28
|
send = args.send;
|
|
@@ -2,6 +2,7 @@ import { defineChannel, POST } from "@cursor/july/channels";
|
|
|
2
2
|
import { parseGitHubPrRef } from "@cursor/july/channels/github";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { startDemo } from "../lib/collect.js";
|
|
5
|
+
import { REPOS, watches } from "../lib/repos.js";
|
|
5
6
|
|
|
6
7
|
export default defineChannel({
|
|
7
8
|
routes: [
|
|
@@ -12,9 +13,12 @@ export default defineChannel({
|
|
|
12
13
|
}),
|
|
13
14
|
handler: async (_req, { send, host, body }) => {
|
|
14
15
|
const ref = parseGitHubPrRef(body.pr);
|
|
15
|
-
if (ref === undefined) {
|
|
16
|
+
if (ref === undefined || !watches(`${ref.owner}/${ref.repo}`)) {
|
|
16
17
|
return Response.json(
|
|
17
|
-
{
|
|
18
|
+
{
|
|
19
|
+
ok: false,
|
|
20
|
+
error: `need a PR URL or owner/repo#N in ${REPOS.join(", ")}`,
|
|
21
|
+
},
|
|
18
22
|
{ status: 400 }
|
|
19
23
|
);
|
|
20
24
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"questions": [
|
|
3
|
+
{
|
|
4
|
+
"id": "repos",
|
|
5
|
+
"prompt": "Which GitHub repos should this agent record walkthroughs for?",
|
|
6
|
+
"hint": "Comma-separated owner/repo. One GitHub owner.",
|
|
7
|
+
"placeholder": "acme/api, acme/web",
|
|
8
|
+
"parse": "owner-repo-list"
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"replace": [
|
|
12
|
+
{
|
|
13
|
+
"file": "agent/lib/repos.ts",
|
|
14
|
+
"find": "[\"owner/repo\"]",
|
|
15
|
+
"answer": "repos",
|
|
16
|
+
"as": "json-array"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"file": "README.md",
|
|
20
|
+
"find": "owner/repo",
|
|
21
|
+
"answer": "repos",
|
|
22
|
+
"as": "first"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
package/dist/ab.d.ts
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Live A/B metrics plug-in for agent-serve.
|
|
3
|
-
*
|
|
4
|
-
* Author `agent/ab.ts` (or `agent/ab/<name>.ts`) with {@link defineAB}. At
|
|
5
|
-
* session creation the engine runs {@link ABConfig.split} and appends durable
|
|
6
|
-
* `ab.assigned` events; arms are exposed on {@link SessionInfo.abs} for the
|
|
7
|
-
* agent loop (tools / optional per-variant `instructions`). {@link ABCollector}
|
|
8
|
-
* folds the event stream into metrics and calls {@link ABConfig.onSample}.
|
|
9
|
-
* There is no `agent-sdk ab` test runner.
|
|
10
|
-
*
|
|
11
|
-
* Assignments and foldable metrics live in each session's `events.ndjson`
|
|
12
|
-
* (survive serve restart). Optional project defaults in `agent/ab.config.ts`
|
|
13
|
-
* ({@link defineABConfig}) cap the playground fold window; durable
|
|
14
|
-
* sample/snapshot export lives on the `defineStorage` `abs` table.
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { defineAB, splitBySessionHash } from "@cursor/july/ab";
|
|
18
|
-
*
|
|
19
|
-
* export default defineAB({
|
|
20
|
-
* name: "concise-instructions",
|
|
21
|
-
* variants: {
|
|
22
|
-
* control: { label: "Baseline" },
|
|
23
|
-
* treatment: { label: "Shorter" },
|
|
24
|
-
* },
|
|
25
|
-
* split: splitBySessionHash({ holdout: 0.1 }),
|
|
26
|
-
* onSample(sample) {
|
|
27
|
-
* console.log(sample.variant, sample.metrics);
|
|
28
|
-
* },
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
import type { SessionEvent, SessionInfo } from "./types.js";
|
|
33
|
-
export type { ABSnapshot } from "./internal/ab-snapshot.js";
|
|
34
|
-
export interface ABVariantMeta {
|
|
35
|
-
label?: string;
|
|
36
|
-
description?: string;
|
|
37
|
-
/**
|
|
38
|
-
* Optional prompt overlay for this arm. Appended to the agent's
|
|
39
|
-
* instructions for the session (local `AGENTS.md` + cloud first-turn
|
|
40
|
-
* preamble) after sticky enrollment.
|
|
41
|
-
*/
|
|
42
|
-
instructions?: string;
|
|
43
|
-
}
|
|
44
|
-
export interface ABSplitContext {
|
|
45
|
-
agent: {
|
|
46
|
-
name: string;
|
|
47
|
-
};
|
|
48
|
-
channel: {
|
|
49
|
-
id: string;
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Live sessions only — the engine never calls `split` for
|
|
53
|
-
* `purpose: "eval"` harness sessions.
|
|
54
|
-
*/
|
|
55
|
-
session: SessionInfo;
|
|
56
|
-
experiment: string;
|
|
57
|
-
/** Variant keys from {@link ABConfig.variants}, in declaration order. */
|
|
58
|
-
variants: string[];
|
|
59
|
-
}
|
|
60
|
-
export interface ABCollectContext {
|
|
61
|
-
agent: {
|
|
62
|
-
name: string;
|
|
63
|
-
};
|
|
64
|
-
channel: {
|
|
65
|
-
id: string;
|
|
66
|
-
};
|
|
67
|
-
session: SessionInfo;
|
|
68
|
-
experiment: string;
|
|
69
|
-
variant: string;
|
|
70
|
-
}
|
|
71
|
-
/** Cumulative per-session metrics for one experiment arm. */
|
|
72
|
-
export interface ABMetrics {
|
|
73
|
-
turns: number;
|
|
74
|
-
turnFailures: number;
|
|
75
|
-
toolCalls: number;
|
|
76
|
-
toolErrors: number;
|
|
77
|
-
inputTokens: number;
|
|
78
|
-
outputTokens: number;
|
|
79
|
-
cacheReadTokens: number;
|
|
80
|
-
cacheWriteTokens: number;
|
|
81
|
-
/**
|
|
82
|
-
* Sum of estimated turn costs in USD (the `cost.totalUsd` recorded on
|
|
83
|
-
* `turn.completed` events). Turns whose model has no known rates
|
|
84
|
-
* contribute 0.
|
|
85
|
-
*/
|
|
86
|
-
costUsd: number;
|
|
87
|
-
/** Sum of turn wall times (turn.started → turn.completed/failed). */
|
|
88
|
-
wallTimeMs: number;
|
|
89
|
-
/** Custom counters from {@link ABConfig.derive}. */
|
|
90
|
-
custom: Record<string, number>;
|
|
91
|
-
}
|
|
92
|
-
export type ABSampleReason = "turn.completed" | "turn.failed";
|
|
93
|
-
export interface ABMetricSample {
|
|
94
|
-
experiment: string;
|
|
95
|
-
variant: string;
|
|
96
|
-
variantLabel?: string;
|
|
97
|
-
sessionId: string;
|
|
98
|
-
channelId: string;
|
|
99
|
-
metrics: ABMetrics;
|
|
100
|
-
reason: ABSampleReason;
|
|
101
|
-
at: string;
|
|
102
|
-
}
|
|
103
|
-
/** Variant key to enroll, or `null` to leave the session out (sticky). */
|
|
104
|
-
export type ABSplitResult = string | null;
|
|
105
|
-
/**
|
|
106
|
-
* Sticky enrollment decision. Return a variant key, or `null` to skip.
|
|
107
|
-
* Prefer helpers ({@link splitBySessionHash}, {@link splitIf}, …).
|
|
108
|
-
*/
|
|
109
|
-
export type ABSplit = (ctx: ABSplitContext) => ABSplitResult | Promise<ABSplitResult>;
|
|
110
|
-
export interface ABSplitOptions {
|
|
111
|
-
/** Relative weights per variant key (default: equal). */
|
|
112
|
-
weights?: Record<string, number>;
|
|
113
|
-
/** Fraction of sessions left out (`0`–`1`, sticky). */
|
|
114
|
-
holdout?: number;
|
|
115
|
-
/** Salt so a new rollout reshuffles without renaming the experiment. */
|
|
116
|
-
salt?: string;
|
|
117
|
-
}
|
|
118
|
-
/** Sticky hash of session id → arm (recommended default). */
|
|
119
|
-
export declare function splitBySessionHash(options?: ABSplitOptions): ABSplit;
|
|
120
|
-
/** Random draw once per new session (then sticky via persistence). */
|
|
121
|
-
export declare function splitByRandom(options?: Omit<ABSplitOptions, "salt">): ABSplit;
|
|
122
|
-
/** Pin every new session to one arm. */
|
|
123
|
-
export declare function splitAlways(variant: string): ABSplit;
|
|
124
|
-
/** Skip every session (pause without deleting the experiment). */
|
|
125
|
-
export declare function splitNone(): ABSplit;
|
|
126
|
-
/** Run `inner` only when `predicate` is true; otherwise skip. */
|
|
127
|
-
export declare function splitIf(predicate: (ctx: ABSplitContext) => boolean | Promise<boolean>, inner: ABSplit): ABSplit;
|
|
128
|
-
export interface ABConfig {
|
|
129
|
-
/** Experiment id. Defaults to the file stem (`ab/concise.ts` → `concise`). */
|
|
130
|
-
name?: string;
|
|
131
|
-
/**
|
|
132
|
-
* Named arms (at least two). Prefer `control` / `treatment` over `a` / `b`.
|
|
133
|
-
*/
|
|
134
|
-
variants: Record<string, ABVariantMeta>;
|
|
135
|
-
/**
|
|
136
|
-
* Choose an arm at session creation, or return `null` to skip. The engine
|
|
137
|
-
* appends a durable `ab.assigned` event; the collector folds that stream.
|
|
138
|
-
*/
|
|
139
|
-
split: ABSplit;
|
|
140
|
-
/**
|
|
141
|
-
* Optional custom metric extractors. Return a numeric delta, or
|
|
142
|
-
* `null`/`undefined` to skip. Called on **every** session event (including
|
|
143
|
-
* high-frequency `message.appended` deltas) — keep these synchronous and
|
|
144
|
-
* cheap; do not await I/O.
|
|
145
|
-
*/
|
|
146
|
-
derive?: Record<string, (event: SessionEvent, ctx: ABCollectContext) => number | null | undefined | Promise<number | null | undefined>>;
|
|
147
|
-
/**
|
|
148
|
-
* Called on turn complete/fail for enrolled sessions only. Observe-only;
|
|
149
|
-
* errors are logged and never fatal.
|
|
150
|
-
*/
|
|
151
|
-
onSample: (sample: ABMetricSample) => void | Promise<void>;
|
|
152
|
-
}
|
|
153
|
-
export type ABDefinition = ABConfig & {
|
|
154
|
-
readonly __agentServe: "ab";
|
|
155
|
-
};
|
|
156
|
-
/** Author a live A/B metrics experiment under `agent/ab`. */
|
|
157
|
-
export declare function defineAB(config: ABConfig): ABDefinition;
|
|
158
|
-
/** Resolve {@link ABConfig.split} to a variant key or `null`. */
|
|
159
|
-
export declare function resolveABSplit(split: ABSplit, ctx: ABSplitContext): Promise<ABSplitResult>;
|
|
160
|
-
/** FNV-1a → [0, 1). */
|
|
161
|
-
export declare function hashToUnitInterval(input: string): number;
|
|
162
|
-
export declare function pickWeightedVariant(variantKeys: readonly string[], weights: Record<string, number> | undefined, unitInterval: number): string;
|
|
163
|
-
export declare function emptyABMetrics(): ABMetrics;
|
|
164
|
-
export declare function cloneABMetrics(metrics: ABMetrics): ABMetrics;
|
|
165
|
-
/**
|
|
166
|
-
* Append enrolled per-variant `instructions` overlays onto the base agent
|
|
167
|
-
* prompt. Used by the session engine before materializing the harness.
|
|
168
|
-
*/
|
|
169
|
-
export declare function mergeABInstructions(base: string | undefined, abs: Readonly<Record<string, string | null>> | undefined, experiments: ReadonlyArray<{
|
|
170
|
-
name: string;
|
|
171
|
-
definition: ABDefinition;
|
|
172
|
-
}>): string | undefined;
|
|
173
|
-
/** Default sessions folded into `GET /v1/abs` / the A/Bs tab. */
|
|
174
|
-
export declare const AB_DEFAULT_MAX_PLAYGROUND_SESSIONS = 200;
|
|
175
|
-
/** Hard ceiling for {@link ABConfigFile.maxPlaygroundSessions}. */
|
|
176
|
-
export declare const AB_MAX_PLAYGROUND_SESSIONS = 10000;
|
|
177
|
-
/**
|
|
178
|
-
* Project-wide A/B defaults (`agent/ab.config.ts`).
|
|
179
|
-
*
|
|
180
|
-
* **Assignments and foldable metrics** already persist in each session's
|
|
181
|
-
* `events.ndjson` under `--state-root`; durable sample/snapshot export
|
|
182
|
-
* lives on the `defineStorage` `abs` table (`agent/storage.ts`). This
|
|
183
|
-
* config only caps how many sessions the playground / `GET /v1/abs` folds.
|
|
184
|
-
*/
|
|
185
|
-
export interface ABConfigFile {
|
|
186
|
-
/**
|
|
187
|
-
* Optional. Max newest sessions folded into **`GET /v1/abs` / the A/Bs
|
|
188
|
-
* tab**. Does not prune session logs or change assignment.
|
|
189
|
-
*
|
|
190
|
-
* Default {@link AB_DEFAULT_MAX_PLAYGROUND_SESSIONS}; hard-capped at
|
|
191
|
-
* {@link AB_MAX_PLAYGROUND_SESSIONS}.
|
|
192
|
-
*/
|
|
193
|
-
maxPlaygroundSessions?: number;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Defaults for every experiment under `agent/ab*` (`agent/ab.config.ts`).
|
|
197
|
-
*
|
|
198
|
-
* Session event logs remain the assignment/metrics source of truth;
|
|
199
|
-
* durable exports go through the `defineStorage` `abs` table.
|
|
200
|
-
*/
|
|
201
|
-
export declare function defineABConfig(config: ABConfigFile): ABConfigFile;
|
|
202
|
-
/** Validate {@link ABConfigFile.maxPlaygroundSessions}. */
|
|
203
|
-
export declare function normalizeABMaxPlaygroundSessions(value: unknown): number;
|
|
204
|
-
/**
|
|
205
|
-
* Effective `GET /v1/abs` fold window. Invalid values fall back to
|
|
206
|
-
* {@link AB_DEFAULT_MAX_PLAYGROUND_SESSIONS}.
|
|
207
|
-
*/
|
|
208
|
-
export declare function resolveABMaxPlaygroundSessions(value: unknown): number;
|
|
209
|
-
//# sourceMappingURL=ab.d.ts.map
|
package/dist/ab.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ab.d.ts","sourceRoot":"","sources":["../src/ab.ts"],"names":[],"mappings":"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"}
|