@cursor/july 0.1.89 → 0.1.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +8 -0
- package/README.md +98 -96
- package/dist/ab.d.ts +1 -1
- package/dist/ab.js +1 -1
- package/dist/artifacts.d.ts +1 -1
- package/dist/artifacts.js +1 -1
- package/dist/bin/agent-serve.js +20 -7
- package/dist/channels/slack/channel-watch.d.ts +1 -1
- package/dist/channels/slack/channel-watch.js +1 -1
- package/dist/channels/slack/slack-channel.js +1 -1
- package/dist/channels/slack/types.d.ts +2 -4
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels.d.ts +1 -1
- package/dist/channels.js +1 -1
- package/dist/connections.d.ts +1 -1
- package/dist/connections.js +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/ab.html +7 -7
- package/dist/docs/assets/{ab.md.DYjwREAP.js → ab.md.CVzWxLoB.js} +1 -1
- package/dist/docs/assets/{ab.md.DYjwREAP.lean.js → ab.md.CVzWxLoB.lean.js} +1 -1
- package/dist/docs/assets/{app.DUOPbN18.js → app.Bci6CM9E.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.js → building-with-agents.md.DH8A_cHA.js} +1 -1
- package/dist/docs/assets/{building-with-agents.md.PeZaZA1P.lean.js → building-with-agents.md.DH8A_cHA.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CmWbGcGk.js → VPLocalSearchBox.BCPT6xA-.js} +1 -1
- package/dist/docs/assets/chunks/{framework.CAZyNGu9.js → framework.BCISBCiQ.js} +1 -1
- package/dist/docs/assets/chunks/theme.BEA8BF3c.js +2 -0
- package/dist/docs/assets/{concepts.md.BXAm6G-C.js → concepts.md.CRfU3bVg.js} +1 -1
- package/dist/docs/assets/{concepts.md.BXAm6G-C.lean.js → concepts.md.CRfU3bVg.lean.js} +1 -1
- package/dist/docs/assets/{deployment.md.B8kW-h7P.js → deployment.md.DX_hc3ze.js} +6 -5
- package/dist/docs/assets/{deployment.md.B8kW-h7P.lean.js → deployment.md.DX_hc3ze.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.CVe_O75-.js → evals.md.a0SMN6r9.js} +3 -3
- package/dist/docs/assets/{evals.md.CVe_O75-.lean.js → evals.md.a0SMN6r9.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.js → example-agents_approval-buddy.md.DNL83puR.js} +1 -1
- package/dist/docs/assets/{example-agents_approval-buddy.md.CIiZ9coo.lean.js → example-agents_approval-buddy.md.DNL83puR.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.js → example-agents_benny.md.C40vHRLc.js} +1 -1
- package/dist/docs/assets/{example-agents_benny.md.B-LIDGja.lean.js → example-agents_benny.md.C40vHRLc.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.js → example-agents_bugbot.md.BRGMi9O2.js} +1 -1
- package/dist/docs/assets/{example-agents_bugbot.md.Dp5JqHSQ.lean.js → example-agents_bugbot.md.BRGMi9O2.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.js → example-agents_codebase-wiki.md.Dftj_tPp.js} +1 -1
- package/dist/docs/assets/{example-agents_codebase-wiki.md.D-lteFf0.lean.js → example-agents_codebase-wiki.md.Dftj_tPp.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.js → example-agents_codeowners-review.md.Bfta-lBU.js} +1 -1
- package/dist/docs/assets/{example-agents_codeowners-review.md.BU2ZXLf-.lean.js → example-agents_codeowners-review.md.Bfta-lBU.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.js → example-agents_concierge.md.MrKpQndp.js} +1 -1
- package/dist/docs/assets/{example-agents_concierge.md.DA2al_NK.lean.js → example-agents_concierge.md.MrKpQndp.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.js → example-agents_fsd.md.ZWHWWZPE.js} +1 -1
- package/dist/docs/assets/{example-agents_fsd.md.ZeGEpAw_.lean.js → example-agents_fsd.md.ZWHWWZPE.lean.js} +1 -1
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +2 -0
- package/dist/docs/assets/{example-agents_index.md.xmJ87d_3.lean.js → example-agents_index.md.QZ8mhr6n.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.js → example-agents_knowledge-base.md.DqKqHQ9u.js} +1 -1
- package/dist/docs/assets/{example-agents_knowledge-base.md.IneynQSR.lean.js → example-agents_knowledge-base.md.DqKqHQ9u.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.js → example-agents_oncall.md.DK4XkYTd.js} +1 -1
- package/dist/docs/assets/{example-agents_oncall.md.CBmyuAKc.lean.js → example-agents_oncall.md.DK4XkYTd.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.js → example-agents_security-reviewer.md.Bai6D0Ee.js} +4 -4
- package/dist/docs/assets/{example-agents_security-reviewer.md.DBL1TwtP.lean.js → example-agents_security-reviewer.md.Bai6D0Ee.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.js → example-agents_slack-agent.md.D7Kdj5BV.js} +1 -1
- package/dist/docs/assets/{example-agents_slack-agent.md.06jQXTAI.lean.js → example-agents_slack-agent.md.D7Kdj5BV.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_weather-agent.md.DC3lINjo.js → example-agents_weather-agent.md.lVEAbWFf.js} +5 -5
- package/dist/docs/assets/example-agents_weather-agent.md.lVEAbWFf.lean.js +1 -0
- package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.js → guides_agent-to-agent.md.BCeVdJRJ.js} +1 -1
- package/dist/docs/assets/{guides_agent-to-agent.md.Bmbxy-FA.lean.js → guides_agent-to-agent.md.BCeVdJRJ.lean.js} +1 -1
- package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.js → guides_cloud-runtime.md.BSMLIBHr.js} +1 -1
- package/dist/docs/assets/{guides_cloud-runtime.md.CbklWfzh.lean.js → guides_cloud-runtime.md.BSMLIBHr.lean.js} +1 -1
- package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.js → guides_convert-automation.md.D06eIzea.js} +1 -1
- package/dist/docs/assets/{guides_convert-automation.md.BhMzTkE5.lean.js → guides_convert-automation.md.D06eIzea.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.CLLQJKRB.js → guides_github.md.Cdt1s2QC.js} +4 -4
- package/dist/docs/assets/{guides_github.md.CLLQJKRB.lean.js → guides_github.md.Cdt1s2QC.lean.js} +1 -1
- package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.js → guides_human-in-the-loop.md.By1G2T3_.js} +1 -1
- package/dist/docs/assets/{guides_human-in-the-loop.md.Cf8kIIqC.lean.js → guides_human-in-the-loop.md.By1G2T3_.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.js → guides_mcp-oauth.md.Du0f7pGU.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.CzEB6RaG.lean.js → guides_mcp-oauth.md.Du0f7pGU.lean.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.js → guides_opentelemetry.md.bmPmkvJu.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.Csn7ZI25.lean.js → guides_opentelemetry.md.bmPmkvJu.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.DP4H75WP.js → guides_slack.md.DiUmk_Oi.js} +5 -5
- package/dist/docs/assets/{guides_slack.md.DP4H75WP.lean.js → guides_slack.md.DiUmk_Oi.lean.js} +1 -1
- package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.js → guides_webhooks.md.BpnIdO0i.js} +5 -6
- package/dist/docs/assets/{guides_webhooks.md.DB-r_er9.lean.js → guides_webhooks.md.BpnIdO0i.lean.js} +1 -1
- package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.js → hillclimbing.md.ywF3yDAd.js} +1 -1
- package/dist/docs/assets/{hillclimbing.md.yXqdlv2R.lean.js → hillclimbing.md.ywF3yDAd.lean.js} +1 -1
- package/dist/docs/assets/index.md.BAaMXLFd.js +5 -0
- package/dist/docs/assets/{index.md.DhRHS_-L.lean.js → index.md.BAaMXLFd.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.DZxBu44y.js → quickstart.md.DsrarzEg.js} +1 -1
- package/dist/docs/assets/{quickstart.md.DZxBu44y.lean.js → quickstart.md.DsrarzEg.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.js → reference_agent-config.md.Bqylgw50.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.CTWp4DnU.lean.js → reference_agent-config.md.Bqylgw50.lean.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.js → reference_artifacts.md.Dior32Qw.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.BGG4bZo-.lean.js → reference_artifacts.md.Dior32Qw.lean.js} +1 -1
- package/dist/docs/assets/{reference_channels.md.CboFd5IH.js → reference_channels.md.DQZjCnyh.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.CboFd5IH.lean.js → reference_channels.md.DQZjCnyh.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.TAaYU8br.js → reference_cli.md.B7GkAJRC.js} +8 -7
- package/dist/docs/assets/{reference_cli.md.TAaYU8br.lean.js → reference_cli.md.B7GkAJRC.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.js → reference_connections.md.DYidrb-j.js} +5 -5
- package/dist/docs/assets/{reference_connections.md.Cu3N-S3Q.lean.js → reference_connections.md.DYidrb-j.lean.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.js → reference_hooks.md.B9FSgdDe.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.DJE5DXcT.lean.js → reference_hooks.md.B9FSgdDe.lean.js} +1 -1
- package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.js → reference_http-api.md.CSHVobzG.js} +4 -4
- package/dist/docs/assets/{reference_http-api.md.DMbdFGVQ.lean.js → reference_http-api.md.CSHVobzG.lean.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.js → reference_instructions.md.DhNCOl7r.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.CgoV-YEb.lean.js → reference_instructions.md.DhNCOl7r.lean.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.CPZhfYaO.js → reference_playground.md.Dfb92yQf.js} +1 -1
- package/dist/docs/assets/{reference_playground.md.CPZhfYaO.lean.js → reference_playground.md.Dfb92yQf.lean.js} +1 -1
- package/dist/docs/assets/{reference_project-layout.md.D3MdHM2z.js → reference_project-layout.md.CwkSbEWT.js} +5 -20
- package/dist/docs/assets/reference_project-layout.md.CwkSbEWT.lean.js +1 -0
- package/dist/docs/assets/{reference_prompt.md.BaiweQxE.js → reference_prompt.md.DZUMtLPD.js} +1 -1
- package/dist/docs/assets/{reference_prompt.md.BaiweQxE.lean.js → reference_prompt.md.DZUMtLPD.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.js → reference_schedules.md.DNipebiG.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.gmfYzf_I.lean.js → reference_schedules.md.DNipebiG.lean.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.js → reference_sessions.md.tUFzz98S.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.B0DdlM-K.lean.js → reference_sessions.md.tUFzz98S.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.BRF2nDv9.js → reference_skills.md.B5ZEuHfG.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.BRF2nDv9.lean.js → reference_skills.md.B5ZEuHfG.lean.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.js → reference_subagents.md.Xoav0AII.js} +1 -1
- package/dist/docs/assets/{reference_subagents.md.DSrGLIuB.lean.js → reference_subagents.md.Xoav0AII.lean.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DTg_kEsx.js → reference_tools.md.wpaJtHn6.js} +23 -3
- package/dist/docs/assets/{reference_tools.md.DTg_kEsx.lean.js → reference_tools.md.wpaJtHn6.lean.js} +1 -1
- package/dist/docs/assets/{scaffolding-agents.md.CiGsJ1aw.js → scaffolding-agents.md.CRDDUtYJ.js} +1 -1
- package/dist/docs/assets/{scaffolding-agents.md.CiGsJ1aw.lean.js → scaffolding-agents.md.CRDDUtYJ.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.ks1u64_R.js → storage.md.JbjlHWZ6.js} +1 -1
- package/dist/docs/assets/{storage.md.ks1u64_R.lean.js → storage.md.JbjlHWZ6.lean.js} +1 -1
- package/dist/docs/assets/{style.kTsvp4pE.css → style.BRuM8477.css} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.js → templates_agentic-owners.md.DSJSIpWU.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.BkTLORaU.lean.js → templates_agentic-owners.md.DSJSIpWU.lean.js} +1 -1
- package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.js → templates_demo.md.DhFcWN6j.js} +1 -1
- package/dist/docs/assets/{templates_demo.md.Bgd6MBaZ.lean.js → templates_demo.md.DhFcWN6j.lean.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.js → templates_pr-autofixer.md.1HAR3RXE.js} +1 -1
- package/dist/docs/assets/{templates_pr-autofixer.md.DcmoeUNZ.lean.js → templates_pr-autofixer.md.1HAR3RXE.lean.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.js → templates_security-reviewer.md.ByFyRta2.js} +1 -1
- package/dist/docs/assets/{templates_security-reviewer.md.C0yIUaYs.lean.js → templates_security-reviewer.md.ByFyRta2.lean.js} +1 -1
- package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.js → templates_triage.md.CVlpctKS.js} +2 -2
- package/dist/docs/assets/{templates_triage.md.DWuQ1bZz.lean.js → templates_triage.md.CVlpctKS.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.KgmmaCgw.lean.js → troubleshooting.md.DYECCZiJ.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +7 -7
- package/dist/docs/concepts.html +7 -7
- package/dist/docs/deployment.html +11 -10
- package/dist/docs/evals.html +8 -8
- package/dist/docs/example-agents/approval-buddy.html +7 -7
- package/dist/docs/example-agents/benny.html +7 -7
- package/dist/docs/example-agents/bugbot.html +7 -7
- package/dist/docs/example-agents/codebase-wiki.html +7 -7
- package/dist/docs/example-agents/codeowners-review.html +7 -7
- package/dist/docs/example-agents/concierge.html +7 -7
- package/dist/docs/example-agents/fsd.html +7 -7
- package/dist/docs/example-agents/index.html +7 -7
- package/dist/docs/example-agents/knowledge-base.html +7 -7
- package/dist/docs/example-agents/oncall.html +7 -7
- package/dist/docs/example-agents/security-reviewer.html +10 -10
- package/dist/docs/example-agents/slack-agent.html +7 -7
- package/dist/docs/example-agents/weather-agent.html +12 -12
- package/dist/docs/guides/agent-to-agent.html +7 -7
- package/dist/docs/guides/cloud-runtime.html +7 -7
- package/dist/docs/guides/convert-automation.html +7 -7
- package/dist/docs/guides/github.html +9 -9
- package/dist/docs/guides/human-in-the-loop.html +7 -7
- package/dist/docs/guides/mcp-oauth.html +7 -7
- package/dist/docs/guides/opentelemetry.html +7 -7
- package/dist/docs/guides/slack.html +10 -10
- package/dist/docs/guides/webhooks.html +10 -11
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +7 -7
- package/dist/docs/index.html +8 -8
- package/dist/docs/quickstart.html +7 -7
- package/dist/docs/reference/agent-config.html +7 -7
- package/dist/docs/reference/artifacts.html +7 -7
- package/dist/docs/reference/channels.html +8 -8
- package/dist/docs/reference/cli.html +13 -12
- package/dist/docs/reference/connections.html +10 -10
- package/dist/docs/reference/hooks.html +7 -7
- package/dist/docs/reference/http-api.html +10 -10
- package/dist/docs/reference/instructions.html +7 -7
- package/dist/docs/reference/playground.html +7 -7
- package/dist/docs/reference/project-layout.html +10 -25
- package/dist/docs/reference/prompt.html +7 -7
- package/dist/docs/reference/schedules.html +7 -7
- package/dist/docs/reference/sessions.html +7 -7
- package/dist/docs/reference/skills.html +7 -7
- package/dist/docs/reference/subagents.html +7 -7
- package/dist/docs/reference/tools.html +29 -9
- package/dist/docs/scaffolding-agents.html +7 -7
- package/dist/docs/storage.html +7 -7
- package/dist/docs/templates/agentic-owners.html +7 -7
- package/dist/docs/templates/demo.html +7 -7
- package/dist/docs/templates/pr-autofixer.html +7 -7
- package/dist/docs/templates/security-reviewer.html +7 -7
- package/dist/docs/templates/triage.html +8 -8
- package/dist/docs/troubleshooting.html +7 -7
- package/dist/evals.d.ts +1 -1
- package/dist/evals.js +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/internal/cli-convert-automation.d.ts +1 -1
- package/dist/internal/cli-convert-automation.js +1 -1
- package/dist/internal/cli-cursor.d.ts +12 -4
- package/dist/internal/cli-cursor.d.ts.map +1 -1
- package/dist/internal/cli-cursor.js +11 -4
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +21 -3
- package/dist/internal/convert-automation/convert-workflow.d.ts +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +9 -9
- package/dist/internal/convert-automation/types.d.ts +1 -1
- package/dist/internal/convert-automation/types.js +1 -1
- package/dist/internal/cursor/backend-client.d.ts +9 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +19 -6
- package/dist/internal/cursor/credentials.d.ts +35 -9
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +92 -39
- package/dist/internal/cursor-agent-template.d.ts +1 -1
- package/dist/internal/cursor-agent-template.d.ts.map +1 -1
- package/dist/internal/cursor-agent-template.js +1 -0
- package/dist/internal/deploy-client.d.ts +18 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +25 -1
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +5 -1
- package/dist/internal/discovery.d.ts +5 -1
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +17 -1
- package/dist/internal/distribution.d.ts +18 -0
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +19 -0
- package/dist/internal/eval-runner.js +1 -1
- package/dist/internal/grokbot/runner.d.ts +5 -2
- package/dist/internal/grokbot/runner.d.ts.map +1 -1
- package/dist/internal/grokbot/runner.js +10 -6
- package/dist/internal/http-channel.d.ts +2 -2
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +11 -31
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +10 -1
- package/dist/internal/sdk-runner.d.ts +5 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +10 -5
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +80 -36
- package/dist/internal/session-engine.d.ts +8 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +47 -5
- package/dist/playground/assets/index-D9N7-q97.css +1 -0
- package/dist/playground/assets/{index-BmiIjFlM.js → index-DDvyC2z6.js} +49 -49
- package/dist/playground/index.html +2 -2
- package/dist/reminders.d.ts +1 -1
- package/dist/reminders.js +1 -1
- package/dist/schedules.d.ts +1 -1
- package/dist/schedules.js +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +1 -1
- package/dist/types.d.ts +10 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/docs/README.md +3 -1
- package/docs/concepts.md +2 -1
- package/docs/deployment.md +9 -6
- package/docs/evals.md +1 -5
- package/docs/example-agents/codebase-wiki.md +2 -3
- package/docs/example-agents/fsd.md +1 -1
- package/docs/example-agents/index.md +2 -2
- package/docs/example-agents/knowledge-base.md +3 -3
- package/docs/example-agents/security-reviewer.md +17 -48
- package/docs/example-agents/weather-agent.md +14 -45
- package/docs/guides/github.md +7 -4
- package/docs/guides/slack.md +7 -2
- package/docs/guides/webhooks.md +12 -15
- package/docs/reference/channels.md +4 -0
- package/docs/reference/cli.md +21 -7
- package/docs/reference/connections.md +13 -32
- package/docs/reference/http-api.md +14 -9
- package/docs/reference/project-layout.md +5 -20
- package/docs/reference/tools.md +51 -3
- package/docs/scaffolding-agents.md +2 -0
- package/docs/templates/triage.md +3 -5
- package/docs/troubleshooting.md +1 -1
- package/package.json +2 -1
- package/skills/create-agent/SKILL.md +6 -7
- package/skills/framework-map/SKILL.md +6 -6
- package/skills/setup-slack/SKILL.md +1 -1
- package/src/ab.ts +1 -1
- package/src/artifacts.ts +1 -1
- package/src/bin/agent-serve.ts +20 -6
- package/src/channels/slack/channel-watch.ts +1 -1
- package/src/channels/slack/slack-channel.ts +1 -1
- package/src/channels/slack/types.ts +2 -4
- package/src/channels.ts +1 -1
- package/src/connections.ts +1 -1
- package/src/evals.ts +1 -1
- package/src/hooks.ts +1 -1
- package/src/index.ts +2 -2
- package/src/internal/cli-convert-automation.ts +1 -1
- package/src/internal/cli-cursor.ts +18 -5
- package/src/internal/cli-deploy.ts +27 -7
- package/src/internal/convert-automation/convert-workflow.ts +9 -9
- package/src/internal/convert-automation/types.ts +1 -1
- package/src/internal/cursor/backend-client.ts +29 -4
- package/src/internal/cursor/credentials.ts +87 -24
- package/src/internal/cursor-agent-template.ts +1 -0
- package/src/internal/deploy-client.ts +40 -1
- package/src/internal/deploy-manifest.ts +10 -1
- package/src/internal/discovery.ts +21 -1
- package/src/internal/distribution.ts +31 -0
- package/src/internal/eval-runner.ts +1 -1
- package/src/internal/grokbot/runner.ts +15 -6
- package/src/internal/http-channel.ts +14 -41
- package/src/internal/init-project.ts +13 -1
- package/src/internal/sdk-runner.ts +10 -4
- package/src/internal/server.ts +95 -33
- package/src/internal/session-engine.ts +58 -8
- package/src/reminders.ts +1 -1
- package/src/schedules.ts +1 -1
- package/src/skills.ts +1 -1
- package/src/storage.ts +1 -1
- package/src/tools.ts +1 -1
- package/src/types.ts +10 -7
- package/templates/security-help/README.md +37 -0
- package/templates/security-help/agent/agent.ts +18 -0
- package/templates/security-help/agent/channels/github.ts +13 -0
- package/templates/security-help/agent/channels/slack.ts +89 -0
- package/templates/security-help/agent/instructions.md +20 -0
- package/templates/security-help/agent/knowledge/faq/approvals.md +5 -0
- package/templates/security-help/agent/knowledge/faq/channels.md +6 -0
- package/templates/security-help/agent/knowledge/faq/phishing.md +10 -0
- package/templates/security-help/agent/lib/pr-first-pass.ts +42 -0
- package/templates/security-help/agent/lib/repos.ts +5 -0
- package/templates/security-help/agent/skills/access-request.md +10 -0
- package/templates/security-help/agent/skills/security-first-pass.md +15 -0
- package/templates/security-help/agent/skills/security-playbooks.md +12 -0
- package/templates/security-help/agent/skills/security-pr-first-pass.md +12 -0
- package/templates/security-help/evals/evals.config.ts +5 -0
- package/templates/security-help/evals/security-help.eval.ts +53 -0
- package/templates/security-help/init.json +31 -0
- package/templates/security-help/package.json +18 -0
- package/templates/security-help/tsconfig.json +12 -0
- package/templates/triage/agent/channels/webhook.ts +2 -2
- package/dist/docs/assets/chunks/@localSearchIndexroot.CxCtxfDE.js +0 -1
- package/dist/docs/assets/chunks/theme.S57OeOLA.js +0 -2
- package/dist/docs/assets/example-agents_index.md.xmJ87d_3.js +0 -2
- package/dist/docs/assets/example-agents_weather-agent.md.DC3lINjo.lean.js +0 -1
- package/dist/docs/assets/index.md.DhRHS_-L.js +0 -5
- package/dist/docs/assets/reference_project-layout.md.D3MdHM2z.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.KgmmaCgw.js +0 -1
- package/dist/playground/assets/index-DQGZnAI0.css +0 -1
package/AGENTS.md
CHANGED
|
@@ -9,6 +9,14 @@ User-facing documentation lives in [`docs/`](./docs/README.md)
|
|
|
9
9
|
troubleshooting, reference). This file is the terse loop reference;
|
|
10
10
|
point humans at the docs.
|
|
11
11
|
|
|
12
|
+
Before committing or reviewing any Agent SDK documentation change, read
|
|
13
|
+
`docs/.cursor/skills/writing/SKILL.md` and
|
|
14
|
+
`docs/.cursor/skills/docs-lint/SKILL.md`. Run `/docs-lint` on every change.
|
|
15
|
+
|
|
16
|
+
Before writing or editing a template, read
|
|
17
|
+
[`docs/.cursor/skills/template-lint/SKILL.md`](./docs/.cursor/skills/template-lint/SKILL.md).
|
|
18
|
+
Run `/template-lint` before every commit or review that changes `templates/`.
|
|
19
|
+
|
|
12
20
|
Run the CLI under **Node, never Bun** — use the installed `agent-serve`
|
|
13
21
|
(or `agent-sdk`) bin; from a source checkout of this package,
|
|
14
22
|
`pnpm exec tsx src/bin/agent-serve.ts <command> …` is equivalent. Bun's
|
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ as the execution engine.
|
|
|
15
15
|
|
|
16
16
|
**User-facing documentation lives in [`docs/`](./docs/README.md)** —
|
|
17
17
|
open it with `npx @cursor/july docs`, or at `/docs` on every running
|
|
18
|
-
`agent-
|
|
18
|
+
`agent-sdk serve` host. It covers getting started, concepts, guides (Slack,
|
|
19
19
|
GitHub webhooks, approvals, agent-to-agent, cloud runtime), evals, live
|
|
20
20
|
A/B metrics, hillclimbing, deployment, troubleshooting, and reference
|
|
21
21
|
pages for each folder. This README is the compact package reference.
|
|
@@ -44,6 +44,10 @@ my-agent/
|
|
|
44
44
|
│ └── webhook.ts # HTTP surfaces beyond the built-in session API
|
|
45
45
|
├── hooks/
|
|
46
46
|
│ └── audit.ts # observe the runtime event stream
|
|
47
|
+
├── storage.ts # optional durable storage
|
|
48
|
+
├── artifacts.ts # optional artifact kinds and retention
|
|
49
|
+
├── otel.ts # optional OpenTelemetry export
|
|
50
|
+
├── playground/ # optional custom playground tool chips
|
|
47
51
|
├── ab.ts # optional live A/B experiment
|
|
48
52
|
├── ab/ # optional: more experiments
|
|
49
53
|
├── schedules/
|
|
@@ -52,20 +56,21 @@ my-agent/
|
|
|
52
56
|
└── lib/ # shared code (import-only, never discovered)
|
|
53
57
|
```
|
|
54
58
|
|
|
55
|
-
Scaffold a starter project with `agent-
|
|
56
|
-
|
|
57
|
-
`agent/instructions.md`,
|
|
58
|
-
immediately and type-checks with `npm run check`. From
|
|
59
|
-
|
|
59
|
+
Scaffold a starter project with `agent-sdk init ./my-agent`. It writes
|
|
60
|
+
`AGENTS.md`, `.gitignore`, `package.json`, `tsconfig.json`, `agent/agent.ts`,
|
|
61
|
+
`agent/instructions.md`, `agent/tools/echo.ts`, and `agent/hooks/memory.ts`.
|
|
62
|
+
The project serves immediately and type-checks with `npm run check`. From
|
|
63
|
+
there, grow it folder by folder. The
|
|
64
|
+
[docs](./docs/README.md) walk a weather agent from a single
|
|
60
65
|
`get_weather` tool through skills, channels, evals, and deployment.
|
|
61
66
|
|
|
62
|
-
Serve one project with `agent-
|
|
67
|
+
Serve one project with `agent-sdk serve --dir ./my-agent --dev`, or point
|
|
63
68
|
`serve` at a folder of agent projects to mount every child under its
|
|
64
69
|
directory name.
|
|
65
70
|
|
|
66
71
|
## Node only — do not run under Bun
|
|
67
72
|
|
|
68
|
-
Run
|
|
73
|
+
Run the Agent SDK with **Node 22.13+** (from source: `pnpm exec tsx
|
|
69
74
|
src/bin/agent-serve.ts …`, or the built `dist/bin/agent-serve.js`). Do not
|
|
70
75
|
run it under Bun: Bun's HTTP/2 client corrupts the Cursor SDK's local
|
|
71
76
|
harness tool-result streams (`NGHTTP2_FRAME_SIZE_ERROR`), so every built-in
|
|
@@ -79,7 +84,7 @@ Point `serve` at a **folder of agent projects** and it hosts all of them on
|
|
|
79
84
|
one port, each under its own slug (its directory name):
|
|
80
85
|
|
|
81
86
|
```bash
|
|
82
|
-
agent-
|
|
87
|
+
agent-sdk serve --dir ./agents --dev
|
|
83
88
|
# 2 agents listening
|
|
84
89
|
# playground http://127.0.0.1:5273
|
|
85
90
|
```
|
|
@@ -101,7 +106,7 @@ In multi-agent mode:
|
|
|
101
106
|
- sessions are isolated per agent (`<stateRoot>/<slug>/`), and the playground
|
|
102
107
|
gains a "← all agents" link back to the index.
|
|
103
108
|
- point the terminal client at a slug:
|
|
104
|
-
`agent-
|
|
109
|
+
`agent-sdk chat --url http://127.0.0.1:3000/weather-agent`.
|
|
105
110
|
|
|
106
111
|
Slugs come from directory names and must match `[A-Za-z0-9][A-Za-z0-9_-]*`
|
|
107
112
|
and not collide with the reserved `v1` / `playground` / `docs` path
|
|
@@ -163,8 +168,8 @@ instructions narrowly (the concierge above delegates *weather questions* to
|
|
|
163
168
|
`weather-agent`, not everything).
|
|
164
169
|
|
|
165
170
|
```bash
|
|
166
|
-
agent-
|
|
167
|
-
agent-
|
|
171
|
+
agent-sdk serve --dir ./agents --dev
|
|
172
|
+
agent-sdk chat --url http://127.0.0.1:3000/concierge \
|
|
168
173
|
--message "What's the weather in Paris right now?"
|
|
169
174
|
# concierge → weather.ask → weather-agent's own session/tools → reply
|
|
170
175
|
```
|
|
@@ -198,9 +203,9 @@ Serve it (turns run on the Cursor harness, so the host needs a Cursor
|
|
|
198
203
|
credential — sign in once, or export an API key):
|
|
199
204
|
|
|
200
205
|
```bash
|
|
201
|
-
agent-
|
|
206
|
+
agent-sdk login # browser sign-in; mints + stores a revocable API key
|
|
202
207
|
# or: export CURSOR_API_KEY=key_...
|
|
203
|
-
agent-
|
|
208
|
+
agent-sdk serve --dir . --port 3000
|
|
204
209
|
# e.g. playground at http://127.0.0.1:3000/<dirname>/playground
|
|
205
210
|
```
|
|
206
211
|
|
|
@@ -233,28 +238,28 @@ curl -X POST http://127.0.0.1:3000/<slug>/v1/session/ses_... \
|
|
|
233
238
|
Inspect the discovered surface at any time:
|
|
234
239
|
|
|
235
240
|
```bash
|
|
236
|
-
agent-
|
|
237
|
-
agent-
|
|
241
|
+
agent-sdk info --dir . # or GET /<slug>/v1/info on a running server
|
|
242
|
+
agent-sdk validate --dir . # exit non-zero on error diagnostics
|
|
238
243
|
```
|
|
239
244
|
|
|
240
245
|
## Terminal client
|
|
241
246
|
|
|
242
|
-
`agent-
|
|
247
|
+
`agent-sdk chat` talks to a running server over the same public API and
|
|
243
248
|
renders the reply live — streamed text, tool calls, and a per-turn usage
|
|
244
249
|
footer. Pass `--json` for a compact trajectory (same shape as `run`).
|
|
245
250
|
|
|
246
251
|
```bash
|
|
247
252
|
# interactive REPL against a local server
|
|
248
|
-
agent-
|
|
253
|
+
agent-sdk chat --url http://127.0.0.1:3000
|
|
249
254
|
|
|
250
255
|
# one-shot (good for piping / scripts)
|
|
251
|
-
agent-
|
|
256
|
+
agent-sdk chat --url http://127.0.0.1:3000 --message "Weather in Paris?"
|
|
252
257
|
|
|
253
258
|
# JSON trajectory (for coding agents / scripts)
|
|
254
|
-
agent-
|
|
259
|
+
agent-sdk chat --url http://127.0.0.1:3000 --message "hello" --json
|
|
255
260
|
|
|
256
261
|
# against an authed server
|
|
257
|
-
agent-
|
|
262
|
+
agent-sdk chat --url https://my-agent.example.com --bearer-token "$TOKEN"
|
|
258
263
|
```
|
|
259
264
|
|
|
260
265
|
## Agent loop
|
|
@@ -263,19 +268,19 @@ Coding agents should prefer the JSON-first commands: edit files → inspect
|
|
|
263
268
|
→ run a turn → assert with filesystem evals.
|
|
264
269
|
|
|
265
270
|
```bash
|
|
266
|
-
agent-
|
|
267
|
-
agent-
|
|
271
|
+
agent-sdk validate --dir .
|
|
272
|
+
agent-sdk info --dir . --json
|
|
268
273
|
|
|
269
274
|
# Ephemeral server + one (or more) turns; JSON trajectory on stdout
|
|
270
|
-
agent-
|
|
275
|
+
agent-sdk run --dir . --message "What's the temperature in NYC?"
|
|
271
276
|
|
|
272
277
|
# Optional event log for later summarization
|
|
273
|
-
agent-
|
|
274
|
-
agent-
|
|
278
|
+
agent-sdk run --dir . --message "..." --events /tmp/run.ndjson
|
|
279
|
+
agent-sdk trajectory --events /tmp/run.ndjson
|
|
275
280
|
|
|
276
281
|
# Scaffold (or print the setup guide with no directory)
|
|
277
|
-
agent-
|
|
278
|
-
agent-
|
|
282
|
+
agent-sdk init ./my-agent
|
|
283
|
+
agent-sdk init
|
|
279
284
|
```
|
|
280
285
|
|
|
281
286
|
`run` / `eval` boot a temporary server on port `0` with a temp `stateRoot`
|
|
@@ -306,6 +311,9 @@ export default defineEval({
|
|
|
306
311
|
Case id is the path under `evals/` for a single-`test` file, or
|
|
307
312
|
`<fileId>/<case.id>` when using `cases` in one file.
|
|
308
313
|
|
|
314
|
+
Use `t.judge` when wording needs an LLM grader. The built-in JUnit and
|
|
315
|
+
Artifacts reporters write CI results and per-case evidence.
|
|
316
|
+
|
|
309
317
|
Every project with evals needs `evals/evals.config.ts` with a required
|
|
310
318
|
`maxConcurrency` (hard-capped at 200 due to model provider request limits).
|
|
311
319
|
Playground batches are in-memory by default; declare an `evals` table in
|
|
@@ -324,12 +332,12 @@ export default defineEvalConfig({
|
|
|
324
332
|
```
|
|
325
333
|
|
|
326
334
|
```bash
|
|
327
|
-
agent-
|
|
328
|
-
agent-
|
|
329
|
-
agent-
|
|
330
|
-
agent-
|
|
331
|
-
agent-
|
|
332
|
-
agent-
|
|
335
|
+
agent-sdk eval --dir . --list
|
|
336
|
+
agent-sdk eval --dir . --json
|
|
337
|
+
agent-sdk eval --dir . weather/nyc # one datapoint
|
|
338
|
+
agent-sdk eval --dir . weather # whole file
|
|
339
|
+
agent-sdk eval --dir . weather forecast # multiple files
|
|
340
|
+
agent-sdk eval --dir . --tag smoke
|
|
333
341
|
```
|
|
334
342
|
|
|
335
343
|
See [`docs/`](./docs/README.md) for the full documentation set,
|
|
@@ -339,10 +347,10 @@ evals, hillclimb, GitHub webhooks, Slack setup, debugging).
|
|
|
339
347
|
|
|
340
348
|
## Web playground
|
|
341
349
|
|
|
342
|
-
Every served agent ships with a built-in playground
|
|
343
|
-
`http://127.0.0.1:3000
|
|
344
|
-
|
|
345
|
-
manual testing and demo recordings:
|
|
350
|
+
Every served agent ships with a built-in playground. The default multi-agent
|
|
351
|
+
mode serves it at `http://127.0.0.1:3000/<slug>/playground`.
|
|
352
|
+
`--mode single` uses `http://127.0.0.1:3000/playground`. The Vite and React
|
|
353
|
+
app uses the same public HTTP API for manual testing and demo recordings:
|
|
346
354
|
|
|
347
355
|
- chat with the agent and watch text/reasoning stream live, rendered as
|
|
348
356
|
markdown (headings, lists, tables, blockquotes, links) with syntax
|
|
@@ -361,7 +369,7 @@ manual testing and demo recordings:
|
|
|
361
369
|
connections, channels, hooks),
|
|
362
370
|
- flip on the raw NDJSON pane to see the exact wire events.
|
|
363
371
|
|
|
364
|
-
The SPA is a static bundle. `agent-
|
|
372
|
+
The SPA is a static bundle. `agent-sdk serve` auto-builds `dist/playground/`
|
|
365
373
|
when it is missing and the local vite toolchain is present (`pnpm run build`
|
|
366
374
|
also emits it for publish). The server serves the bundle and every call it
|
|
367
375
|
makes runs the normal route auth chain (there's a bearer-token field for
|
|
@@ -461,7 +469,7 @@ export default defineAgent({
|
|
|
461
469
|
```
|
|
462
470
|
|
|
463
471
|
`model` accepts a Cursor model id string or `{ id, params }`. When omitted
|
|
464
|
-
on the root agent,
|
|
472
|
+
on the root agent, the Agent SDK defaults to `grok-4.5` with `effort=high`
|
|
465
473
|
and `fast=true`.
|
|
466
474
|
|
|
467
475
|
`runtime` selects where turns execute:
|
|
@@ -469,9 +477,10 @@ and `fast=true`.
|
|
|
469
477
|
| Value | Behavior |
|
|
470
478
|
| --------- | ------- |
|
|
471
479
|
| `"local"` | Cursor SDK local harness on this machine. Session id doubles as the SDK agent id. Authored tools, skills, and sandbox seeds apply. |
|
|
472
|
-
| `"cloud"` | Cursor cloud agents. Pass a `cloud` block
|
|
480
|
+
| `"cloud"` | Cursor cloud agents. Pass a `cloud` block with the repositories and environment the agent needs. Server tools work on managed hosting. Self-hosted cloud turns need `--public-url`. |
|
|
473
481
|
|
|
474
|
-
Discovery warns when
|
|
482
|
+
Discovery warns when cloud turns ignore a local-only capability. Authored
|
|
483
|
+
skills remain available automatically.
|
|
475
484
|
|
|
476
485
|
### Instructions
|
|
477
486
|
|
|
@@ -489,7 +498,7 @@ One file per tool; the filename is the tool name the model sees.
|
|
|
489
498
|
|
|
490
499
|
| Value | Behavior |
|
|
491
500
|
| ----- | -------- |
|
|
492
|
-
| `"server"` (default) |
|
|
501
|
+
| `"server"` (default) | Runs on the serve host. Available to local turns and managed cloud deployments. Self-hosted cloud turns need `--public-url`. Requires `execute`. |
|
|
493
502
|
| `"agent"` | Materialized into the agent environment as a shell script. Requires `script` (JSON on stdin, result on stdout). Works with local and cloud agent runtimes. |
|
|
494
503
|
|
|
495
504
|
Server tool (default):
|
|
@@ -603,10 +612,12 @@ printf '%s\\n' "$message"
|
|
|
603
612
|
});
|
|
604
613
|
```
|
|
605
614
|
|
|
606
|
-
`inputSchema` is a
|
|
607
|
-
plain JSON Schema object (forwarded as-is).
|
|
608
|
-
|
|
609
|
-
|
|
615
|
+
`inputSchema` is a Zod schema (validated and typed for server tools) or a
|
|
616
|
+
plain JSON Schema object (forwarded as-is). `outputSchema` advertises a
|
|
617
|
+
structured result schema. The host doesn't validate results against it.
|
|
618
|
+
Plain objects fill `structuredContent` automatically. Envelope results set
|
|
619
|
+
it explicitly next to `content` and `isError`. For server tools, `ctx` carries
|
|
620
|
+
`{ toolCallId, session, workspaceDir }`.
|
|
610
621
|
|
|
611
622
|
#### Deterministic tool calls
|
|
612
623
|
|
|
@@ -629,8 +640,8 @@ From the CLI (boots an ephemeral server unless `--url` targets a running
|
|
|
629
640
|
one):
|
|
630
641
|
|
|
631
642
|
```bash
|
|
632
|
-
agent-
|
|
633
|
-
agent-
|
|
643
|
+
agent-sdk call get_weather --dir . --input '{"city":"NYC"}'
|
|
644
|
+
agent-sdk call get_weather --url http://127.0.0.1:3000/<slug> --input '{"city":"NYC"}'
|
|
634
645
|
```
|
|
635
646
|
|
|
636
647
|
Programmatically, `callTool(toolName, input, options?)` is available on the
|
|
@@ -725,7 +736,7 @@ name.
|
|
|
725
736
|
|
|
726
737
|
Requirements and behavior:
|
|
727
738
|
|
|
728
|
-
- The host must be signed in (`agent-
|
|
739
|
+
- The host must be signed in (`agent-sdk login` or `CURSOR_API_KEY`);
|
|
729
740
|
`serve` fails fast at startup otherwise, and logs each connector's live
|
|
730
741
|
status (`connected` / `needsAuth` / `error`) as it starts.
|
|
731
742
|
- Local turns and host-side calls go through a loopback bridge route guarded
|
|
@@ -743,7 +754,7 @@ Requirements and behavior:
|
|
|
743
754
|
Every MCP connection is always available in three places:
|
|
744
755
|
|
|
745
756
|
1. the Cursor agent (local or cloud), via SDK `mcpServers`
|
|
746
|
-
2. the
|
|
757
|
+
2. the serve host, for in-process tools via `ctx.host.mcp`
|
|
747
758
|
3. channel / schedule handlers, via `args.host.mcp` (deterministic — no agent loop)
|
|
748
759
|
|
|
749
760
|
```ts
|
|
@@ -788,7 +799,7 @@ default multi-agent layout; at the server root with `mode: "single"`):
|
|
|
788
799
|
`sessionId` + `continuationToken`)
|
|
789
800
|
- `POST /v1/session/:sessionId` — follow-up (`{"message", "continuationToken"}`;
|
|
790
801
|
rotates the token; works for any chat session including custom channels like
|
|
791
|
-
`drive`; `409` on stale tokens
|
|
802
|
+
`drive`; `409` on stale tokens or task sessions;
|
|
792
803
|
`403` if the caller is not the session owner)
|
|
793
804
|
- `GET /v1/session/:sessionId/stream?startIndex=N` — replay + live NDJSON
|
|
794
805
|
(same owner check)
|
|
@@ -928,7 +939,7 @@ Watched posts dispatch with the same thread-scoped principal as mentions
|
|
|
928
939
|
left to the `app_mention` path; bot-authored posts never dispatch; deleting
|
|
929
940
|
a post inside the debounce window cancels its dispatch. The Slack app must
|
|
930
941
|
subscribe to `message.channels` / `message.groups`
|
|
931
|
-
(`agent-
|
|
942
|
+
(`agent-sdk slack create --channel-posts`) and be a member of each watched channel. Watched channels surface in
|
|
932
943
|
`info` via `meta.slackChannelPosts`.
|
|
933
944
|
|
|
934
945
|
**HITL compose:** park/resume is independent (`needsApproval` on tools). Opt in
|
|
@@ -966,19 +977,19 @@ from the mention and run the same host path as their HTTP channels.
|
|
|
966
977
|
agent-to-agent only (no Slack channel).
|
|
967
978
|
|
|
968
979
|
For Socket Mode apps (channel watch / approvals), run
|
|
969
|
-
`agent-
|
|
980
|
+
`agent-sdk slack create`. It opens the dashboard wizard, creates and
|
|
970
981
|
installs the app, and writes the token pair to `.env.local`. To own the
|
|
971
|
-
Slack app yourself, run `agent-
|
|
982
|
+
Slack app yourself, run `agent-sdk slack init --manual` and paste the
|
|
972
983
|
manifests at api.slack.com.
|
|
973
984
|
|
|
974
|
-
CLI (`agent-
|
|
985
|
+
CLI (`agent-sdk slack …`; guided setup in `skills/setup-slack/SKILL.md`):
|
|
975
986
|
|
|
976
987
|
```bash
|
|
977
|
-
agent-
|
|
978
|
-
agent-
|
|
979
|
-
agent-
|
|
980
|
-
agent-
|
|
981
|
-
agent-
|
|
988
|
+
agent-sdk slack create --dir ./my-agent # dashboard wizard (dev app)
|
|
989
|
+
agent-sdk slack create --dir ./my-agent --prod # prod app
|
|
990
|
+
agent-sdk slack init --manual --dir ./my-agent # manifests for api.slack.com
|
|
991
|
+
agent-sdk slack setup
|
|
992
|
+
agent-sdk slack doctor --prefix MY_AGENT
|
|
982
993
|
```
|
|
983
994
|
|
|
984
995
|
**GitHub** (`@cursor/july/channels/github`): a webhook channel pack
|
|
@@ -1009,7 +1020,7 @@ under `serve --dev`, which admits unsigned loopback deliveries so
|
|
|
1009
1020
|
`{ auth }` to start a model turn as the actor, `{ task }` for host-side work
|
|
1010
1021
|
(202 ACK, runs past GitHub's ~10s timeout), or `null` to skip.
|
|
1011
1022
|
|
|
1012
|
-
**Testing GitHub agents locally.** `cursorAccount` reuses `agent-
|
|
1023
|
+
**Testing GitHub agents locally.** `cursorAccount` reuses `agent-sdk login`
|
|
1013
1024
|
for both Cursor SCM events and a refreshing repo-scoped GitHub credential used
|
|
1014
1025
|
by `ctx.github`, `ctx.host.github`, and child `gh` commands. Default
|
|
1015
1026
|
`permissions: "pr-write"` covers comments without `contents:write`; opt up to
|
|
@@ -1020,27 +1031,27 @@ auth prefers GitHub App installation tokens when `GITHUB_APP_ID` /
|
|
|
1020
1031
|
`GITHUB_APP_PRIVATE_KEY` (and an installation id) are set, then falls back to
|
|
1021
1032
|
`GITHUB_TOKEN` / `GH_TOKEN` or `gh auth login`. The channel publishes the
|
|
1022
1033
|
webhook events it dispatches on (derived from the declared hooks, or pinned
|
|
1023
|
-
via `webhookEvents`), so `agent-
|
|
1034
|
+
via `webhookEvents`), so `agent-sdk github …` can forward live
|
|
1024
1035
|
deliveries with zero hand-listing — it wraps [`gh webhook
|
|
1025
1036
|
forward`](https://docs.github.com/en/webhooks/testing-and-troubleshooting-webhooks/using-the-github-cli-to-forward-webhooks-for-testing):
|
|
1026
1037
|
|
|
1027
1038
|
```bash
|
|
1028
1039
|
# One-time: gh + the cli/gh-webhook extension
|
|
1029
|
-
agent-
|
|
1040
|
+
agent-sdk github doctor --install
|
|
1030
1041
|
|
|
1031
1042
|
# Terminal A: serve the agent (dev accepts unsigned loopback deliveries)
|
|
1032
|
-
agent-
|
|
1043
|
+
agent-sdk serve --dir ./my-agent --dev
|
|
1033
1044
|
|
|
1034
1045
|
# Terminal B: forward this repo's deliveries to the discovered github channel
|
|
1035
1046
|
# (URL + events auto-derived; repo inferred from the git remote). No secret
|
|
1036
1047
|
# needed against a --dev server; set GITHUB_WEBHOOK_SECRET to verify signatures.
|
|
1037
|
-
agent-
|
|
1048
|
+
agent-sdk github forward --dir ./my-agent
|
|
1038
1049
|
|
|
1039
1050
|
# Inspect what would be forwarded (URL + events per agent)
|
|
1040
|
-
agent-
|
|
1051
|
+
agent-sdk github events --dir ./agents --json
|
|
1041
1052
|
|
|
1042
1053
|
# Forward to EVERY discovered github channel at once
|
|
1043
|
-
agent-
|
|
1054
|
+
agent-sdk github forward --dir ./agents
|
|
1044
1055
|
```
|
|
1045
1056
|
|
|
1046
1057
|
When several channels match (e.g. a folder of agent projects with more than
|
|
@@ -1054,8 +1065,8 @@ URL, so N processes would collide with `Hook already exists`.
|
|
|
1054
1065
|
it registers a real webhook — and authenticates its relay with the GitHub CLI's
|
|
1055
1066
|
own login. If `GITHUB_TOKEN` / `GH_TOKEN` is set in your env, deliveries fail
|
|
1056
1067
|
with **HTTP 401** (the relay rejects env tokens); blank it for the command
|
|
1057
|
-
(`GITHUB_TOKEN= GH_TOKEN= agent-
|
|
1058
|
-
`agent-
|
|
1068
|
+
(`GITHUB_TOKEN= GH_TOKEN= agent-sdk github forward …`) or `unset` it.
|
|
1069
|
+
`agent-sdk github doctor` / `forward` warn when they detect this.
|
|
1059
1070
|
|
|
1060
1071
|
Pass `--repo owner/repo` / `--org ORG` to override the inferred target,
|
|
1061
1072
|
`--events a,b,c` to narrow the set, `--url` for a custom endpoint (e.g. a
|
|
@@ -1067,19 +1078,19 @@ still works too — `POST` a saved payload with an `x-github-event` header (no
|
|
|
1067
1078
|
signature needed in `--dev`).
|
|
1068
1079
|
|
|
1069
1080
|
**No admin? Hillclimbing? Use `github replay`.** `gh webhook forward` needs repo
|
|
1070
|
-
admin and a live event. `agent-
|
|
1081
|
+
admin and a live event. `agent-sdk github replay <pr_url>` instead **reads**
|
|
1071
1082
|
the PR (pull access is enough — no admin, no relay, and `GITHUB_TOKEN` is fine)
|
|
1072
1083
|
and synthesizes GitHub-shaped payloads it POSTs straight at the channel:
|
|
1073
1084
|
|
|
1074
1085
|
```bash
|
|
1075
1086
|
# Replay a pull_request delivery for a PR to the discovered channel
|
|
1076
|
-
agent-
|
|
1087
|
+
agent-sdk github replay https://github.com/owner/repo/pull/123 --dir ./my-agent
|
|
1077
1088
|
|
|
1078
1089
|
# Replay everything the channel listens for (its declared events), CI failing
|
|
1079
|
-
agent-
|
|
1090
|
+
agent-sdk github replay owner/repo#123 --dir ./my-agent --events '*' --conclusion failure
|
|
1080
1091
|
|
|
1081
1092
|
# Inspect payloads without POSTing (and snapshot them as reusable fixtures)
|
|
1082
|
-
agent-
|
|
1093
|
+
agent-sdk github replay owner/repo#123 --dir ./my-agent --events '*' --dry-run --out fixtures/github
|
|
1083
1094
|
```
|
|
1084
1095
|
|
|
1085
1096
|
`--events` defaults to `pull_request` (`*` = the channel's declared events);
|
|
@@ -1094,8 +1105,9 @@ Cursor GitHub App is on the repo, `serve --cursor-events --repo owner/repo`
|
|
|
1094
1105
|
long-polls `/v0/scm-events` with the host's Cursor account (no public URL /
|
|
1095
1106
|
repo admin). Offset + consumer id live under `<state-root>/cursor-events/`.
|
|
1096
1107
|
The stream is read as your Cursor user, so the flag **requires a signed-in
|
|
1097
|
-
host** (`agent-
|
|
1098
|
-
fails fast rather than starting with a relay that can never receive
|
|
1108
|
+
host** (`agent-sdk login`, `CURSOR_API_KEY`, or `serve({ apiKey })`).
|
|
1109
|
+
Serve fails fast rather than starting with a relay that can never receive
|
|
1110
|
+
events.
|
|
1099
1111
|
|
|
1100
1112
|
### Hooks (`agent/hooks/*.ts`)
|
|
1101
1113
|
Observe-only subscribers that run after each event is recorded — audit
|
|
@@ -1135,7 +1147,7 @@ export default defineSchedule({
|
|
|
1135
1147
|
```
|
|
1136
1148
|
|
|
1137
1149
|
Cron expressions are standard 5-field, evaluated in UTC with minute
|
|
1138
|
-
granularity. In production mode (`agent-
|
|
1150
|
+
granularity. In production mode (`agent-sdk serve`) schedules fire on
|
|
1139
1151
|
cadence; in dev mode (`--dev`) they never fire automatically — dispatch one
|
|
1140
1152
|
by hand, exactly once, through the same path production uses:
|
|
1141
1153
|
|
|
@@ -1215,7 +1227,7 @@ console.log(`listening on ${handle.url}`);
|
|
|
1215
1227
|
|
|
1216
1228
|
The Cursor credential resolves in one order everywhere (SDK turns, cloud
|
|
1217
1229
|
runtime, Cursor account MCP connections): explicit `apiKey` option / `--api-key`
|
|
1218
|
-
→ `CURSOR_API_KEY` → the key stored by `agent-
|
|
1230
|
+
→ `CURSOR_API_KEY` → the key stored by `agent-sdk login`. `whoami` shows
|
|
1219
1231
|
which one is active; `logout` removes the stored key (revoke it in the
|
|
1220
1232
|
Cursor dashboard to kill it outright).
|
|
1221
1233
|
|
|
@@ -1225,7 +1237,7 @@ non-production backend, set **both** to the same URL — a key minted on one
|
|
|
1225
1237
|
backend is rejected by the other.
|
|
1226
1238
|
|
|
1227
1239
|
`serve` refuses to start when discovery produced error diagnostics; run
|
|
1228
|
-
`agent-
|
|
1240
|
+
`agent-sdk validate` (or read `project.diagnostics`) to see why.
|
|
1229
1241
|
|
|
1230
1242
|
State lives under `<project>/.agent-serve/` (override with `stateRoot` /
|
|
1231
1243
|
`--state-root`): `sessions/<id>/{session.json,events.ndjson,workspace/}`
|
|
@@ -1240,20 +1252,10 @@ when the agent should inherit that tree.
|
|
|
1240
1252
|
|
|
1241
1253
|
## Not supported (yet)
|
|
1242
1254
|
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
authorized in Cursor), custom sandbox backends (`sandbox.ts`),
|
|
1251
|
-
instrumentation modules, dynamic per-caller capabilities, structured
|
|
1252
|
-
output schemas, and file uploads. Human-in-the-loop tool approvals
|
|
1253
|
-
(`needsApproval` on `execution: "server"` tools) are supported; exact
|
|
1254
|
-
resume of a parked tool call after host restart is not. Filesystem
|
|
1255
|
-
evals (`defineEval` under `evals/`), live A/B metrics (`defineAB` under
|
|
1256
|
-
`agent/ab`), and the `run` / `trajectory` commands are supported;
|
|
1257
|
-
LLM-as-judge scoring and external reporters are not yet. Context
|
|
1258
|
-
compaction is handled by the Cursor harness rather than
|
|
1259
|
-
configured here.
|
|
1255
|
+
The Agent SDK does not load per-subagent tools, skills, or MCP connections.
|
|
1256
|
+
It also rejects nested subagents, WebSocket channel routes, and custom
|
|
1257
|
+
sandbox backends. Discord and Teams do not have channel packs. Use an
|
|
1258
|
+
authored `defineChannel` integration for those platforms.
|
|
1259
|
+
|
|
1260
|
+
Parked approval calls do not resume after a host restart. Context compaction
|
|
1261
|
+
is owned by the Cursor harness.
|
package/dist/ab.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* sample/snapshot export lives on the `defineStorage` `abs` table.
|
|
15
15
|
*
|
|
16
16
|
* ```ts
|
|
17
|
-
* import { defineAB, splitBySessionHash } from "@
|
|
17
|
+
* import { defineAB, splitBySessionHash } from "@cursor/july/ab";
|
|
18
18
|
*
|
|
19
19
|
* export default defineAB({
|
|
20
20
|
* name: "concise-instructions",
|
package/dist/ab.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* sample/snapshot export lives on the `defineStorage` `abs` table.
|
|
15
15
|
*
|
|
16
16
|
* ```ts
|
|
17
|
-
* import { defineAB, splitBySessionHash } from "@
|
|
17
|
+
* import { defineAB, splitBySessionHash } from "@cursor/july/ab";
|
|
18
18
|
*
|
|
19
19
|
* export default defineAB({
|
|
20
20
|
* name: "concise-instructions",
|
package/dist/artifacts.d.ts
CHANGED
package/dist/artifacts.js
CHANGED
package/dist/bin/agent-serve.js
CHANGED
|
@@ -34,7 +34,7 @@ import { cmdCall, cmdChat, cmdCost, cmdEval, cmdEvalCancel, cmdEvalStatus, cmdIn
|
|
|
34
34
|
import { ensureCursorLogin } from "../internal/cli-cursor.js";
|
|
35
35
|
import { cmdDelete, cmdDeploy, cmdDeploymentStatus, cmdDeployments, cmdRotatePodCredential, cmdRotateToken, cmdSecretsList, cmdSecretsSet, cmdSecretsUnset, cmdStop, } from "../internal/cli-deploy.js";
|
|
36
36
|
import { cmdManifest } from "../internal/cli-manifest.js";
|
|
37
|
-
import { CLI_COMMAND_NAME as CLI, PACKAGE_NAME, packageVersion, } from "../internal/distribution.js";
|
|
37
|
+
import { CLI_COMMAND_NAME as CLI, formatCliVersion, PACKAGE_NAME, packageVersion, } from "../internal/distribution.js";
|
|
38
38
|
import { loadAgentLocalEnv } from "../internal/local-env.js";
|
|
39
39
|
import { ENTER_RESTART_EXIT_CODE, isServeRestartWorker, runEnterRestartSupervisor, } from "../internal/serve-restart.js";
|
|
40
40
|
import { clearTerminal, stdoutPalette } from "../internal/terminal-style.js";
|
|
@@ -100,7 +100,7 @@ Usage:
|
|
|
100
100
|
${CLI} logout
|
|
101
101
|
${CLI} whoami [--json]
|
|
102
102
|
${CLI} update
|
|
103
|
-
${CLI} version
|
|
103
|
+
${CLI} version [--json]
|
|
104
104
|
${CLI} deploy [--dir <path>] [--slug <slug> | --all] [--team <id>] [--json]
|
|
105
105
|
[--no-wait] [--repo <url>] [--ref <ref>]
|
|
106
106
|
[--path <agentPath>] [--cursor-events-repo <owner/name>]...
|
|
@@ -170,7 +170,7 @@ Commands:
|
|
|
170
170
|
prompt. --json is machine-readable and never blocks on
|
|
171
171
|
login. No directory: print the setup guide.
|
|
172
172
|
convert-automation
|
|
173
|
-
Export a Cursor Automation into an
|
|
173
|
+
Export a Cursor Automation into an agentsdk project. <url> is
|
|
174
174
|
the dashboard URL (…/automations/<uuid> or
|
|
175
175
|
…/custom-agents/<uuid>) or a bare uuid. Fetches the definition
|
|
176
176
|
with your Cursor credentials, writes the converted files into
|
|
@@ -223,7 +223,9 @@ Commands:
|
|
|
223
223
|
whoami Show which Cursor account powers this host (and why).
|
|
224
224
|
update Upgrade this install to the latest published version (detects
|
|
225
225
|
global npm/pnpm/yarn/bun installs and project dependencies).
|
|
226
|
-
version Print the
|
|
226
|
+
version Print the ${PACKAGE_NAME} version this CLI will use and exit
|
|
227
|
+
(also --version / -V). Text is the version number; --json
|
|
228
|
+
prints { name, version, cli }.
|
|
227
229
|
deploy Deploy onto Cursor's managed agent-serve hosting, then wait for
|
|
228
230
|
the engine to come up. --repo/--ref/--path stay available;
|
|
229
231
|
inside an agent git checkout they are inferred when omitted
|
|
@@ -257,7 +259,7 @@ Agent loop:
|
|
|
257
259
|
${CLI} dev .
|
|
258
260
|
|
|
259
261
|
Options:
|
|
260
|
-
--version, -V Print the
|
|
262
|
+
--version, -V Print the version number and exit.
|
|
261
263
|
--dir Project root (defaults to the current directory).
|
|
262
264
|
--port Port to listen on (default 3000). When the default is
|
|
263
265
|
taken, serve tries the next free port and prints a notice.
|
|
@@ -365,7 +367,7 @@ Options:
|
|
|
365
367
|
--skip-report eval: ignore reporters from evals.config.ts / eval files.
|
|
366
368
|
--no-stream run/eval: silence live progress on stderr (JSON still prints).
|
|
367
369
|
--json JSON output (init/convert-automation/install-skills/
|
|
368
|
-
info/chat/eval/logs/
|
|
370
|
+
info/chat/eval/logs/version/
|
|
369
371
|
sessions/session/github; run defaults to JSON). logs:
|
|
370
372
|
NDJSON progress/log events. session: trajectory JSON
|
|
371
373
|
(not raw events).
|
|
@@ -438,7 +440,7 @@ function main(argv) {
|
|
|
438
440
|
return command === undefined ? 1 : 0;
|
|
439
441
|
}
|
|
440
442
|
if (command === "version" || command === "--version" || command === "-V") {
|
|
441
|
-
yield writeStdout(
|
|
443
|
+
yield writeStdout(formatCliVersion({ json: restIn.includes("--json") }));
|
|
442
444
|
return 0;
|
|
443
445
|
}
|
|
444
446
|
// `session --events` means "dump raw events" (boolean). Rewrite so it does
|
|
@@ -535,9 +537,14 @@ function main(argv) {
|
|
|
535
537
|
"no-artifacts": { type: "boolean", default: false },
|
|
536
538
|
"skip-report": { type: "boolean", default: false },
|
|
537
539
|
"max-concurrency": { type: "string" },
|
|
540
|
+
version: { type: "boolean", short: "V", default: false },
|
|
538
541
|
},
|
|
539
542
|
});
|
|
540
543
|
const dir = (_j = values.dir) !== null && _j !== void 0 ? _j : ".";
|
|
544
|
+
if (values.version === true) {
|
|
545
|
+
yield writeStdout(formatCliVersion({ json: values.json === true }));
|
|
546
|
+
return 0;
|
|
547
|
+
}
|
|
541
548
|
// Best-effort, cached, and silent on failure. `update` does its own fresh
|
|
542
549
|
// lookup, --json runs stay quiet for machine consumers, and `mcp` skips it
|
|
543
550
|
// so MCP client spawns stay fast (stdout there is the protocol wire).
|
|
@@ -1090,8 +1097,14 @@ function main(argv) {
|
|
|
1090
1097
|
loadLocalEnv();
|
|
1091
1098
|
// Model turns need a Cursor credential. Prompt login before listen
|
|
1092
1099
|
// so the first playground turn does not fail with a late auth error.
|
|
1100
|
+
// `--allow-anonymous` is the hosted trust boundary (alias token /
|
|
1101
|
+
// freeze bake): skip the login gate so health can bind without a
|
|
1102
|
+
// key. v1 hosted injects CURSOR_API_KEY at exec; freeze bind drops
|
|
1103
|
+
// CURSOR_API_KEY / CURSOR_API_KEY_FILE onto the listening process.
|
|
1104
|
+
// Self-hosted omit the flag and still fail-fast unsigned on a TTY-less host.
|
|
1093
1105
|
const loginExit = yield ensureCursorLogin({
|
|
1094
1106
|
apiKey: values["api-key"],
|
|
1107
|
+
allowAnonymous: values["allow-anonymous"] === true,
|
|
1095
1108
|
});
|
|
1096
1109
|
if (loginExit !== 0) {
|
|
1097
1110
|
return { kind: "login-failed", exitCode: loginExit };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Opt-in channel watch: dispatch on posts in allowlisted channels.
|
|
3
3
|
*
|
|
4
4
|
* Filtering rules (the anti-slop guarantees):
|
|
5
|
-
* - Only
|
|
5
|
+
* - Only configured channels are watched; `"*"` opts into every channel.
|
|
6
6
|
* - Top-level posts only by default; thread replies never dispatch unless
|
|
7
7
|
* `posts: "all"` is configured.
|
|
8
8
|
* - Posts that @mention the bot are skipped here (the `app_mention` path
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Opt-in channel watch: dispatch on posts in allowlisted channels.
|
|
3
3
|
*
|
|
4
4
|
* Filtering rules (the anti-slop guarantees):
|
|
5
|
-
* - Only
|
|
5
|
+
* - Only configured channels are watched; `"*"` opts into every channel.
|
|
6
6
|
* - Top-level posts only by default; thread replies never dispatch unless
|
|
7
7
|
* `posts: "all"` is configured.
|
|
8
8
|
* - Posts that @mention the bot are skipped here (the `app_mention` path
|
|
@@ -149,7 +149,7 @@ export function slackChannel(authored = {}) {
|
|
|
149
149
|
if (channelPosts !== undefined) {
|
|
150
150
|
const entries = channelPosts.allow.filter((entry) => entry.trim() !== "");
|
|
151
151
|
if (entries.length === 0) {
|
|
152
|
-
throw new Error(
|
|
152
|
+
throw new Error('slackChannel engagement.channelPosts.allow must list at least one channel (id, #name, or "*").');
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
const botMentions = engagement.botMentions;
|