@cursor/july 0.1.91 → 0.1.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -0
- package/README.md +117 -162
- package/dist/channels/deployments/deployments-channel.d.ts +7 -0
- package/dist/channels/deployments/deployments-channel.d.ts.map +1 -1
- package/dist/channels/deployments/deployments-channel.js +26 -2
- package/dist/channels/deployments/types.d.ts +8 -0
- package/dist/channels/deployments/types.d.ts.map +1 -1
- package/dist/channels/github/github-channel.d.ts +3 -0
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +28 -56
- package/dist/continuation.d.ts +1 -1
- package/dist/continuation.js +1 -1
- package/dist/docs/404.html +4 -2
- package/dist/docs/ab.html +10 -8
- package/dist/docs/ab.md +332 -0
- package/dist/docs/assets/{ab.md.CVzWxLoB.js → ab.md.DJo5r4R-.js} +4 -4
- package/dist/docs/assets/{ab.md.CVzWxLoB.lean.js → ab.md.DJo5r4R-.lean.js} +1 -1
- package/dist/docs/assets/{app.Bci6CM9E.js → app.CjWU-x0z.js} +1 -1
- package/dist/docs/assets/building-with-agents.md.DI4mEzlt.js +13 -0
- package/dist/docs/assets/{building-with-agents.md.DH8A_cHA.lean.js → building-with-agents.md.DI4mEzlt.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.ChpIC3Zy.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.BCPT6xA-.js → VPLocalSearchBox.Cxy8ySFQ.js} +1 -1
- package/dist/docs/assets/chunks/{theme.BEA8BF3c.js → theme.Dvq1Bktu.js} +2 -2
- package/dist/docs/assets/concepts.md.F6AiPorA.js +1 -0
- package/dist/docs/assets/{concepts.md.CRfU3bVg.lean.js → concepts.md.F6AiPorA.lean.js} +1 -1
- package/dist/docs/assets/{deployment.md.DX_hc3ze.js → deployment.md.DoLFAzfm.js} +6 -6
- package/dist/docs/assets/{evals.md.a0SMN6r9.js → evals.md.lfJoEVc8.js} +6 -6
- package/dist/docs/assets/{evals.md.a0SMN6r9.lean.js → evals.md.lfJoEVc8.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_approval-buddy.md.DNL83puR.js → example-agents_approval-buddy.md.DmezILPg.js} +1 -1
- package/dist/docs/assets/{example-agents_benny.md.C40vHRLc.js → example-agents_benny.md.B0kwY7D_.js} +2 -4
- package/dist/docs/assets/{example-agents_benny.md.C40vHRLc.lean.js → example-agents_benny.md.B0kwY7D_.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_codebase-wiki.md.Dftj_tPp.js → example-agents_codebase-wiki.md.BBNw9Ekr.js} +3 -3
- package/dist/docs/assets/{example-agents_codebase-wiki.md.Dftj_tPp.lean.js → example-agents_codebase-wiki.md.BBNw9Ekr.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_concierge.md.MrKpQndp.js → example-agents_concierge.md.BzB2b20R.js} +2 -3
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.js +2 -0
- package/dist/docs/assets/example-agents_index.md.ChBp0AX6.lean.js +1 -0
- package/dist/docs/assets/{example-agents_knowledge-base.md.DqKqHQ9u.js → example-agents_knowledge-base.md.CrA85ig-.js} +1 -1
- package/dist/docs/assets/{example-agents_security-reviewer.md.Bai6D0Ee.js → example-agents_security-reviewer.md.74pPpWYj.js} +1 -1
- package/dist/docs/assets/{example-agents_weather-agent.md.lVEAbWFf.js → example-agents_weather-agent.md.CaGpmw3Y.js} +2 -2
- package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.js → guides_agent-to-agent.md.B3JIaAqz.js} +1 -1
- package/dist/docs/assets/{guides_cloud-runtime.md.BSMLIBHr.js → guides_cloud-runtime.md.BnvjPiia.js} +2 -2
- package/dist/docs/assets/{guides_cloud-runtime.md.BSMLIBHr.lean.js → guides_cloud-runtime.md.BnvjPiia.lean.js} +1 -1
- package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.js → guides_convert-automation.md.Bboisykk.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.js → guides_github.md.DqJhuaN1.js} +5 -5
- package/dist/docs/assets/{guides_github.md.Cdt1s2QC.lean.js → guides_github.md.DqJhuaN1.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.js → guides_mcp-oauth.md.CJvrXtkN.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.js → guides_slack.md.mqeNKs84.js} +2 -2
- package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.js → guides_webhooks.md.DKdA43Qm.js} +2 -2
- package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.js → hillclimbing.md.DhESf3OO.js} +1 -1
- package/dist/docs/assets/{index.md.BAaMXLFd.js → index.md.B-lVR4wT.js} +3 -3
- package/dist/docs/assets/{index.md.BAaMXLFd.lean.js → index.md.B-lVR4wT.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.DsrarzEg.js → quickstart.md.BrmfrrIr.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.js → reference_agent-config.md.Cp_x38Nl.js} +3 -3
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.js → reference_channels.md.Cd2f2iyV.js} +2 -2
- package/dist/docs/assets/{reference_channels.md.DQZjCnyh.lean.js → reference_channels.md.Cd2f2iyV.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.js → reference_cli.md.D9KESDsD.js} +10 -11
- package/dist/docs/assets/{reference_cli.md.B7GkAJRC.lean.js → reference_cli.md.D9KESDsD.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DYidrb-j.js → reference_connections.md.DB6SsN6U.js} +3 -3
- package/dist/docs/assets/reference_hooks.md.BxN87gCw.js +14 -0
- package/dist/docs/assets/{reference_hooks.md.B9FSgdDe.lean.js → reference_hooks.md.BxN87gCw.lean.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.C68BERYr.js +11 -0
- package/dist/docs/assets/reference_http-api.md.C68BERYr.lean.js +1 -0
- package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.js → reference_instructions.md.CR7XSsGk.js} +3 -3
- package/dist/docs/assets/{reference_instructions.md.DhNCOl7r.lean.js → reference_instructions.md.CR7XSsGk.lean.js} +1 -1
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.js +1 -0
- package/dist/docs/assets/reference_playground.md.DnX5nL-B.lean.js +1 -0
- package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.js → reference_project-layout.md.WN9nwJht.js} +2 -2
- package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.js → reference_prompt.md.DnaD5dNK.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.DNipebiG.js → reference_schedules.md.DI_JrHgq.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.D0mIh4KK.js +1 -0
- package/dist/docs/assets/{reference_sessions.md.tUFzz98S.lean.js → reference_sessions.md.D0mIh4KK.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.js → reference_skills.md.BFW9retM.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.js → reference_tools.md.DuKvkYWG.js} +4 -4
- package/dist/docs/assets/{reference_tools.md.wpaJtHn6.lean.js → reference_tools.md.DuKvkYWG.lean.js} +1 -1
- package/dist/docs/assets/scaffolding-agents.md.D7UUkWw0.js +1 -0
- package/dist/docs/assets/{scaffolding-agents.md.CRDDUtYJ.lean.js → scaffolding-agents.md.D7UUkWw0.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.JbjlHWZ6.js → storage.md.BOHeqk2M.js} +5 -5
- package/dist/docs/assets/{storage.md.JbjlHWZ6.lean.js → storage.md.BOHeqk2M.lean.js} +1 -1
- package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.js → templates_agentic-owners.md.DqtPdm6f.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.js → templates_pr-autofixer.md.R4K_qytS.js} +2 -2
- package/dist/docs/assets/{templates_pr-autofixer.md.1HAR3RXE.lean.js → templates_pr-autofixer.md.R4K_qytS.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.vCWwvqcJ.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.DYECCZiJ.lean.js → troubleshooting.md.vCWwvqcJ.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +9 -7
- package/dist/docs/building-with-agents.md +118 -0
- package/dist/docs/concepts.html +7 -8
- package/dist/docs/concepts.md +169 -0
- package/dist/docs/deployment.html +13 -11
- package/dist/docs/deployment.md +462 -0
- package/dist/docs/evals.html +12 -10
- package/dist/docs/evals.md +460 -0
- package/dist/docs/example-agents/approval-buddy.html +7 -5
- package/dist/docs/example-agents/approval-buddy.md +266 -0
- package/dist/docs/example-agents/benny.html +7 -7
- package/dist/docs/example-agents/benny.md +173 -0
- package/dist/docs/example-agents/bugbot.html +6 -4
- package/dist/docs/example-agents/bugbot.md +229 -0
- package/dist/docs/example-agents/codebase-wiki.html +8 -6
- package/dist/docs/example-agents/codebase-wiki.md +167 -0
- package/dist/docs/example-agents/codeowners-review.html +6 -4
- package/dist/docs/example-agents/codeowners-review.md +192 -0
- package/dist/docs/example-agents/concierge.html +9 -8
- package/dist/docs/example-agents/concierge.md +200 -0
- package/dist/docs/example-agents/index.html +8 -6
- package/dist/docs/example-agents/index.md +99 -0
- package/dist/docs/example-agents/knowledge-base.html +8 -6
- package/dist/docs/example-agents/knowledge-base.md +168 -0
- package/dist/docs/example-agents/oncall.html +6 -4
- package/dist/docs/example-agents/oncall.md +212 -0
- package/dist/docs/example-agents/security-reviewer.html +9 -7
- package/dist/docs/example-agents/security-reviewer.md +265 -0
- package/dist/docs/example-agents/slack-agent.html +6 -4
- package/dist/docs/example-agents/slack-agent.md +142 -0
- package/dist/docs/example-agents/weather-agent.html +9 -7
- package/dist/docs/example-agents/weather-agent.md +297 -0
- package/dist/docs/guides/agent-to-agent.html +7 -5
- package/dist/docs/guides/agent-to-agent.md +113 -0
- package/dist/docs/guides/cloud-runtime.html +8 -6
- package/dist/docs/guides/cloud-runtime.md +114 -0
- package/dist/docs/guides/convert-automation.html +8 -6
- package/dist/docs/guides/convert-automation.md +171 -0
- package/dist/docs/guides/github.html +11 -9
- package/dist/docs/guides/github.md +275 -0
- package/dist/docs/guides/human-in-the-loop.html +6 -4
- package/dist/docs/guides/human-in-the-loop.md +126 -0
- package/dist/docs/guides/mcp-oauth.html +8 -6
- package/dist/docs/guides/mcp-oauth.md +159 -0
- package/dist/docs/guides/opentelemetry.html +6 -4
- package/dist/docs/guides/opentelemetry.md +209 -0
- package/dist/docs/guides/slack.html +9 -7
- package/dist/docs/guides/slack.md +337 -0
- package/dist/docs/guides/webhooks.html +8 -6
- package/dist/docs/guides/webhooks.md +463 -0
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +8 -6
- package/dist/docs/hillclimbing.md +88 -0
- package/dist/docs/index.html +8 -6
- package/dist/docs/index.md +171 -0
- package/dist/docs/llms-full.txt +10968 -0
- package/dist/docs/llms.txt +74 -0
- package/dist/docs/quickstart.html +7 -5
- package/dist/docs/quickstart.md +364 -0
- package/dist/docs/reference/agent-config.html +10 -8
- package/dist/docs/reference/agent-config.md +251 -0
- package/dist/docs/reference/artifacts.html +6 -4
- package/dist/docs/reference/artifacts.md +112 -0
- package/dist/docs/reference/channels.html +8 -6
- package/dist/docs/reference/channels.md +244 -0
- package/dist/docs/reference/cli.html +16 -15
- package/dist/docs/reference/cli.md +947 -0
- package/dist/docs/reference/connections.html +10 -8
- package/dist/docs/reference/connections.md +263 -0
- package/dist/docs/reference/hooks.html +8 -6
- package/dist/docs/reference/hooks.md +98 -0
- package/dist/docs/reference/http-api.html +9 -7
- package/dist/docs/reference/http-api.md +247 -0
- package/dist/docs/reference/instructions.html +8 -6
- package/dist/docs/reference/instructions.md +74 -0
- package/dist/docs/reference/playground.html +7 -5
- package/dist/docs/reference/playground.md +57 -0
- package/dist/docs/reference/project-layout.html +9 -7
- package/dist/docs/reference/project-layout.md +107 -0
- package/dist/docs/reference/prompt.html +8 -6
- package/dist/docs/reference/prompt.md +42 -0
- package/dist/docs/reference/schedules.html +8 -6
- package/dist/docs/reference/schedules.md +214 -0
- package/dist/docs/reference/sessions.html +7 -12
- package/dist/docs/reference/sessions.md +159 -0
- package/dist/docs/reference/skills.html +8 -6
- package/dist/docs/reference/skills.md +83 -0
- package/dist/docs/reference/subagents.html +6 -4
- package/dist/docs/reference/subagents.md +71 -0
- package/dist/docs/reference/tools.html +10 -8
- package/dist/docs/reference/tools.md +293 -0
- package/dist/docs/scaffolding-agents.html +7 -5
- package/dist/docs/scaffolding-agents.md +129 -0
- package/dist/docs/storage.html +11 -9
- package/dist/docs/storage.md +176 -0
- package/dist/docs/templates/agentic-owners.html +9 -7
- package/dist/docs/templates/agentic-owners.md +92 -0
- package/dist/docs/templates/demo.html +6 -4
- package/dist/docs/templates/demo.md +79 -0
- package/dist/docs/templates/pr-autofixer.html +8 -6
- package/dist/docs/templates/pr-autofixer.md +128 -0
- package/dist/docs/templates/security-reviewer.html +6 -4
- package/dist/docs/templates/security-reviewer.md +84 -0
- package/dist/docs/templates/triage.html +6 -4
- package/dist/docs/templates/triage.md +98 -0
- package/dist/docs/troubleshooting.html +7 -5
- package/dist/docs/troubleshooting.md +111 -0
- package/dist/internal/authored-alias-hooks.d.ts +14 -11
- package/dist/internal/authored-alias-hooks.d.ts.map +1 -1
- package/dist/internal/authored-alias-hooks.js +14 -11
- package/dist/internal/authored-loaders.d.ts +7 -6
- package/dist/internal/authored-loaders.d.ts.map +1 -1
- package/dist/internal/authored-loaders.js +14 -10
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.js +5 -5
- package/dist/internal/continuation-channel.d.ts +6 -3
- package/dist/internal/continuation-channel.d.ts.map +1 -1
- package/dist/internal/continuation-channel.js +44 -40
- package/dist/internal/continuation-identity.d.ts +17 -16
- package/dist/internal/continuation-identity.d.ts.map +1 -1
- package/dist/internal/continuation-identity.js +109 -36
- package/dist/internal/deploy-manifest.d.ts +2 -2
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +4 -9
- package/dist/internal/discovery.d.ts.map +1 -1
- package/dist/internal/discovery.js +3 -0
- package/dist/internal/distribution.d.ts +4 -3
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +4 -3
- package/dist/internal/hosted-delivery-protocol.d.ts +38 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -0
- package/dist/internal/hosted-delivery-protocol.js +70 -0
- package/dist/internal/hosted-delivery.d.ts +35 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -0
- package/dist/internal/hosted-delivery.js +226 -0
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +1 -1
- package/dist/internal/init-scaffold.d.ts.map +1 -1
- package/dist/internal/init-scaffold.js +1 -0
- package/dist/internal/playground/static.d.ts.map +1 -1
- package/dist/internal/playground/static.js +2 -0
- package/dist/internal/review-comments.d.ts +186 -63
- package/dist/internal/review-comments.d.ts.map +1 -1
- package/dist/internal/review-comments.js +350 -168
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +21 -3
- package/dist/internal/session-engine.d.ts +5 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +16 -4
- package/dist/internal/shallow-clone.d.ts +8 -2
- package/dist/internal/shallow-clone.d.ts.map +1 -1
- package/dist/internal/shallow-clone.js +17 -10
- package/dist/playground/assets/{index-DDvyC2z6.js → index-D9MFzhNE.js} +1 -1
- package/dist/playground/index.html +1 -1
- package/dist/types.d.ts +9 -17
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +2 -10
- package/docs/ab.md +7 -13
- package/docs/building-with-agents.md +5 -11
- package/docs/concepts.md +12 -17
- package/docs/deployment.md +8 -10
- package/docs/evals.md +16 -37
- package/docs/example-agents/approval-buddy.md +1 -1
- package/docs/example-agents/benny.md +4 -13
- package/docs/example-agents/codebase-wiki.md +5 -8
- package/docs/example-agents/concierge.md +2 -3
- package/docs/example-agents/index.md +6 -9
- package/docs/example-agents/knowledge-base.md +2 -2
- package/docs/example-agents/security-reviewer.md +5 -5
- package/docs/example-agents/weather-agent.md +4 -3
- package/docs/guides/agent-to-agent.md +1 -1
- package/docs/guides/cloud-runtime.md +8 -25
- package/docs/guides/convert-automation.md +3 -3
- package/docs/guides/github.md +11 -23
- package/docs/guides/mcp-oauth.md +4 -4
- package/docs/guides/slack.md +4 -4
- package/docs/guides/webhooks.md +3 -3
- package/docs/hillclimbing.md +1 -1
- package/docs/quickstart.md +1 -1
- package/docs/reference/agent-config.md +10 -15
- package/docs/reference/channels.md +20 -31
- package/docs/reference/cli.md +27 -37
- package/docs/reference/connections.md +9 -14
- package/docs/reference/hooks.md +10 -14
- package/docs/reference/http-api.md +18 -38
- package/docs/reference/instructions.md +1 -1
- package/docs/reference/playground.md +14 -19
- package/docs/reference/project-layout.md +2 -2
- package/docs/reference/prompt.md +1 -1
- package/docs/reference/schedules.md +1 -2
- package/docs/reference/sessions.md +8 -19
- package/docs/reference/skills.md +3 -3
- package/docs/reference/tools.md +12 -17
- package/docs/scaffolding-agents.md +4 -5
- package/docs/storage.md +37 -80
- package/docs/templates/agentic-owners.md +2 -2
- package/docs/templates/pr-autofixer.md +3 -6
- package/docs/troubleshooting.md +6 -6
- package/package.json +9 -2
- package/skills/ab/SKILL.md +3 -0
- package/skills/create-agent/SKILL.md +3 -0
- package/skills/debug/SKILL.md +3 -0
- package/skills/evals/SKILL.md +3 -0
- package/skills/framework-map/SKILL.md +3 -0
- package/skills/github/SKILL.md +3 -0
- package/skills/hillclimb/SKILL.md +3 -0
- package/skills/mcp-auth/SKILL.md +3 -0
- package/skills/otel/SKILL.md +3 -0
- package/skills/setup-slack/SKILL.md +3 -0
- package/src/channels/deployments/deployments-channel.ts +32 -2
- package/src/channels/deployments/types.ts +8 -0
- package/src/channels/github/github-channel.ts +71 -21
- package/src/continuation.ts +1 -1
- package/src/internal/authored-alias-hooks.ts +14 -11
- package/src/internal/authored-loaders.ts +14 -10
- package/src/internal/cli-deploy.ts +5 -5
- package/src/internal/continuation-channel.ts +62 -45
- package/src/internal/continuation-identity.ts +123 -38
- package/src/internal/deploy-manifest.ts +5 -9
- package/src/internal/discovery.ts +3 -0
- package/src/internal/distribution.ts +4 -3
- package/src/internal/hosted-delivery-protocol.ts +114 -0
- package/src/internal/hosted-delivery.ts +327 -0
- package/src/internal/http-channel.ts +0 -2
- package/src/internal/init-scaffold.ts +1 -0
- package/src/internal/playground/static.ts +2 -0
- package/src/internal/review-comments.ts +542 -229
- package/src/internal/server.ts +29 -2
- package/src/internal/session-engine.ts +29 -7
- package/src/internal/shallow-clone.ts +30 -16
- package/src/types.ts +9 -17
- package/dist/docs/assets/building-with-agents.md.DH8A_cHA.js +0 -13
- package/dist/docs/assets/chunks/@localSearchIndexroot.Dv-Q0XtU.js +0 -1
- package/dist/docs/assets/concepts.md.CRfU3bVg.js +0 -4
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.js +0 -15
- package/dist/docs/assets/example-agents_fsd.md.ZWHWWZPE.lean.js +0 -1
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.js +0 -2
- package/dist/docs/assets/example-agents_index.md.QZ8mhr6n.lean.js +0 -1
- package/dist/docs/assets/reference_hooks.md.B9FSgdDe.js +0 -14
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.js +0 -11
- package/dist/docs/assets/reference_http-api.md.CSHVobzG.lean.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.js +0 -1
- package/dist/docs/assets/reference_playground.md.Dfb92yQf.lean.js +0 -1
- package/dist/docs/assets/reference_sessions.md.tUFzz98S.js +0 -8
- package/dist/docs/assets/scaffolding-agents.md.CRDDUtYJ.js +0 -1
- package/dist/docs/assets/troubleshooting.md.DYECCZiJ.js +0 -1
- package/dist/docs/example-agents/fsd.html +0 -39
- package/docs/example-agents/fsd.md +0 -334
- /package/dist/docs/assets/{deployment.md.DX_hc3ze.lean.js → deployment.md.DoLFAzfm.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_approval-buddy.md.DNL83puR.lean.js → example-agents_approval-buddy.md.DmezILPg.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_concierge.md.MrKpQndp.lean.js → example-agents_concierge.md.BzB2b20R.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_knowledge-base.md.DqKqHQ9u.lean.js → example-agents_knowledge-base.md.CrA85ig-.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_security-reviewer.md.Bai6D0Ee.lean.js → example-agents_security-reviewer.md.74pPpWYj.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_weather-agent.md.lVEAbWFf.lean.js → example-agents_weather-agent.md.CaGpmw3Y.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.BCeVdJRJ.lean.js → guides_agent-to-agent.md.B3JIaAqz.lean.js} +0 -0
- /package/dist/docs/assets/{guides_convert-automation.md.D06eIzea.lean.js → guides_convert-automation.md.Bboisykk.lean.js} +0 -0
- /package/dist/docs/assets/{guides_mcp-oauth.md.Du0f7pGU.lean.js → guides_mcp-oauth.md.CJvrXtkN.lean.js} +0 -0
- /package/dist/docs/assets/{guides_slack.md.DiUmk_Oi.lean.js → guides_slack.md.mqeNKs84.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.BpnIdO0i.lean.js → guides_webhooks.md.DKdA43Qm.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.ywF3yDAd.lean.js → hillclimbing.md.DhESf3OO.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.DsrarzEg.lean.js → quickstart.md.BrmfrrIr.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.Bqylgw50.lean.js → reference_agent-config.md.Cp_x38Nl.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.DYidrb-j.lean.js → reference_connections.md.DB6SsN6U.lean.js} +0 -0
- /package/dist/docs/assets/{reference_project-layout.md.CwkSbEWT.lean.js → reference_project-layout.md.WN9nwJht.lean.js} +0 -0
- /package/dist/docs/assets/{reference_prompt.md.DZUMtLPD.lean.js → reference_prompt.md.DnaD5dNK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.DNipebiG.lean.js → reference_schedules.md.DI_JrHgq.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.B5ZEuHfG.lean.js → reference_skills.md.BFW9retM.lean.js} +0 -0
- /package/dist/docs/assets/{templates_agentic-owners.md.DSJSIpWU.lean.js → templates_agentic-owners.md.DqtPdm6f.lean.js} +0 -0
package/docs/evals.md
CHANGED
|
@@ -16,12 +16,6 @@ targets) a real agent server, drives sessions over the public API, and
|
|
|
16
16
|
grades what comes back. A passing eval means the agent started,
|
|
17
17
|
accepted a message, and did what you asserted.
|
|
18
18
|
|
|
19
|
-
> [!NOTE]
|
|
20
|
-
> Import paths here use `@cursor/july/evals`. On projects still
|
|
21
|
-
> using `@anysphere/agent-serve`, swap the import and run
|
|
22
|
-
> `agent-serve eval`. See
|
|
23
|
-
> [Run the CLI](/#run-the-cli) for the full rename table.
|
|
24
|
-
|
|
25
19
|
## Define evals with `defineEval`
|
|
26
20
|
|
|
27
21
|
The Agent SDK discovers evals under the project-root `evals/` directory,
|
|
@@ -125,7 +119,7 @@ export default defineEvalConfig({
|
|
|
125
119
|
// timeoutMs: 180_000, // optional project-wide default
|
|
126
120
|
// judge: { model: "..." }, // default judge model for t.judge.*
|
|
127
121
|
// reporters: [], // destinations that observe every case
|
|
128
|
-
// maxPlaygroundRuns: 50, // playground
|
|
122
|
+
// maxPlaygroundRuns: 50, // playground history only (default 20)
|
|
129
123
|
});
|
|
130
124
|
```
|
|
131
125
|
|
|
@@ -139,7 +133,7 @@ The optional fields:
|
|
|
139
133
|
| `timeoutMs` | `180_000` | Project-wide per-case timeout |
|
|
140
134
|
| `judge` | unset | Default judge model for `t.judge.*`; see [Judge free-form output](#judge-free-form-output) |
|
|
141
135
|
| `reporters` | unset | Destinations that observe every case; `--skip-report` suppresses them |
|
|
142
|
-
| `maxPlaygroundRuns` | `20` | Max batches in the playground / `/v1/dev/evals*` history (not CLI `eval`) |
|
|
136
|
+
| `maxPlaygroundRuns` | `20` | Max batches in the playground / `/v1/dev/evals*` history (not CLI `eval`). Hard-capped at 500. |
|
|
143
137
|
|
|
144
138
|
Reporters come from `@cursor/july/evals/reporters`: `JUnit` writes a
|
|
145
139
|
JUnit XML file for CI, `Artifacts` writes per-case files, and
|
|
@@ -151,7 +145,7 @@ Playground batches survive restarts whenever `agent/storage.ts` exists
|
|
|
151
145
|
with an `evals` table or a KV core providing `delete` and `list` (the
|
|
152
146
|
table is derived over the core); see
|
|
153
147
|
[Storage](./storage.md#eval-and-a-b-tables). Without storage they live
|
|
154
|
-
in process memory and disappear when `serve` exits
|
|
148
|
+
in process memory and disappear when `serve` exits. Navigating away
|
|
155
149
|
and back still works while the process is up.
|
|
156
150
|
|
|
157
151
|
## Drive and assert with `t`
|
|
@@ -171,9 +165,9 @@ intermediate turn before the next send overwrites `t.reply`.
|
|
|
171
165
|
depend on it.
|
|
172
166
|
|
|
173
167
|
Read the full case state with `t.reply` (the last assistant text),
|
|
174
|
-
`t.events` (
|
|
175
|
-
|
|
176
|
-
|
|
168
|
+
`t.events` (session events captured so far), `t.turns` (settled
|
|
169
|
+
turns, oldest first), and `t.sessionId`. `t.signal` aborts when the
|
|
170
|
+
case hits its timeout; pass it to your own async work.
|
|
177
171
|
|
|
178
172
|
Assert with the gates:
|
|
179
173
|
|
|
@@ -229,10 +223,10 @@ the CLI and playground result.
|
|
|
229
223
|
|
|
230
224
|
Three `t.send` options apply on session create (first `t.send` only):
|
|
231
225
|
|
|
232
|
-
- `workspaceFiles
|
|
226
|
+
- `workspaceFiles`: `{ path: contents }`, seeded into the local session
|
|
233
227
|
workspace. Prefer this over machine-local paths.
|
|
234
|
-
- `workspaceDir
|
|
235
|
-
- `cloud
|
|
228
|
+
- `workspaceDir`: absolute harness cwd (local runtime).
|
|
229
|
+
- `cloud`: per-session cloud options merged over the agent's static
|
|
236
230
|
`cloud` config (repos / env / …). Use a pinned `repos` override to
|
|
237
231
|
attach a fixture repo for cloud evals without putting it on the
|
|
238
232
|
agent's default `cloud.repos`. Cloud ignores `workspaceFiles` seeds.
|
|
@@ -294,7 +288,7 @@ match both groups.
|
|
|
294
288
|
|
|
295
289
|
`eval` boots an ephemeral server on port 0 with a temp state root
|
|
296
290
|
outside the project, so cases don't inherit ambient monorepo rules and
|
|
297
|
-
don't
|
|
291
|
+
don't write into the project state directory. Point `--url` at a running server to eval
|
|
298
292
|
a live agent instead:
|
|
299
293
|
|
|
300
294
|
```bash
|
|
@@ -348,29 +342,18 @@ failed assertion without parsing terminal text.
|
|
|
348
342
|
|
|
349
343
|
## Run evals in the playground
|
|
350
344
|
|
|
351
|
-
Start the server
|
|
352
|
-
|
|
353
|
-
|
|
345
|
+
Start the server, open the playground, and choose **Evals**. You can run
|
|
346
|
+
every case or one case, watch progress, and open the resulting session
|
|
347
|
+
trace. The Evals tab works on a normal `serve`.
|
|
354
348
|
|
|
355
349
|
```bash
|
|
356
|
-
agent-sdk serve --dir .
|
|
350
|
+
agent-sdk serve --dir .
|
|
357
351
|
```
|
|
358
352
|
|
|
359
353
|
Playground runs target the live server instead of an ephemeral one.
|
|
360
354
|
Their sessions appear in the session list. One eval batch can run at a
|
|
361
|
-
time.
|
|
362
|
-
|
|
363
|
-
table is derived over the core); without storage they are **in-memory
|
|
364
|
-
only** (capped by `maxPlaygroundRuns`) — see
|
|
365
|
-
[Storage](./storage.md#eval-and-a-b-tables).
|
|
366
|
-
|
|
367
|
-
The UI uses the playground eval routes (available without `--dev`):
|
|
368
|
-
`GET /v1/dev/evals` lists datapoints and config (includes `maxPlaygroundRuns` /
|
|
369
|
-
`durableRuns`),
|
|
370
|
-
`GET /v1/dev/evals/runs` rehydrates recent batches after navigation,
|
|
371
|
-
`POST /v1/dev/evals/runs` starts a batch (returns an **Eval ID** / `runId`),
|
|
372
|
-
`GET /v1/dev/evals/runs/:runId` polls it, and
|
|
373
|
-
`POST /v1/dev/evals/runs/:runId/cancel` cancels a running batch. See
|
|
355
|
+
time. Persistence follows the rule under
|
|
356
|
+
[Configure eval runs](#configure-eval-runs). See
|
|
374
357
|
[Playground eval routes](./reference/http-api.md#playground-eval-routes).
|
|
375
358
|
The start request returns `202` while cases run in the background.
|
|
376
359
|
Poll until the snapshot status becomes `completed`, `failed`, or `cancelled`.
|
|
@@ -389,10 +372,6 @@ agent-sdk eval cancel evalrun_… --prod --slug vulnerability-scanner
|
|
|
389
372
|
agent-sdk eval status evalrun_… --prod --slug vulnerability-scanner
|
|
390
373
|
```
|
|
391
374
|
|
|
392
|
-
The Evals tab prefers the server’s in-flight batch (`activeRunId`) over a
|
|
393
|
-
stale tab-local remembered id, so CLI / Slack kicks show up without an
|
|
394
|
-
incognito window.
|
|
395
|
-
|
|
396
375
|
## What good cases assert
|
|
397
376
|
|
|
398
377
|
Gate decisions and shape, not prose. Model wording varies run to run.
|
|
@@ -69,7 +69,7 @@ approving the PR.
|
|
|
69
69
|
| Server tools | [`agent/tools/`](../../examples/approval-buddy/agent/tools/) | Prepare evidence, approve, list buddies, and search GIFs. |
|
|
70
70
|
| Deterministic policy | [`agent/lib/approve.ts`](../../examples/approval-buddy/agent/lib/approve.ts), [`agent/lib/buddies.ts`](../../examples/approval-buddy/agent/lib/buddies.ts) | Own the roster and live eligibility checks. |
|
|
71
71
|
| Review subagents | [`agent/subagents/`](../../examples/approval-buddy/agent/subagents/) | Run deep audit and code-quality passes over the same evidence. |
|
|
72
|
-
| Storage | [`agent/storage.ts`](../../examples/approval-buddy/agent/storage.ts) | Persist sessions and events with `cursorHostedStorage
|
|
72
|
+
| Storage | [`agent/storage.ts`](../../examples/approval-buddy/agent/storage.ts) | Persist sessions and events with `cursorHostedStorage`. See [Storage](../storage.md). |
|
|
73
73
|
| Live A/B experiment | [`agent/ab.ts`](../../examples/approval-buddy/agent/ab.ts) | Compare baseline responses with a concise, presentation-only treatment (`concise-results`). |
|
|
74
74
|
| Evals and unit tests | [`evals/`](../../examples/approval-buddy/evals/), [`agent/lib/`](../../examples/approval-buddy/agent/lib/) | Protect routing, output contracts, policy, and GitHub behavior. |
|
|
75
75
|
|
|
@@ -48,7 +48,7 @@ need the watched-channel path.
|
|
|
48
48
|
|
|
49
49
|
| File | Purpose |
|
|
50
50
|
| --- | --- |
|
|
51
|
-
| [`agent/agent.ts`](../../examples/benny/agent/agent.ts) | Names the agent, selects its model, and
|
|
51
|
+
| [`agent/agent.ts`](../../examples/benny/agent/agent.ts) | Names the agent, selects its model, and points the harness at a project-local cwd so inherited playbooks load. |
|
|
52
52
|
| [`agent/instructions.md`](../../examples/benny/agent/instructions.md) | Defines engagement rules, evidence policy, and the playbook routing map. |
|
|
53
53
|
| [`agent/channels/slack.ts`](../../examples/benny/agent/channels/slack.ts) | Handles account-linked mentions and direct messages. |
|
|
54
54
|
| [`agent/channels/slack-app.ts`](../../examples/benny/agent/channels/slack-app.ts) | Runs the dedicated app and watches one allowlisted channel. |
|
|
@@ -66,18 +66,9 @@ large monorepo. This prevents ancestor instruction and repository-rule files
|
|
|
66
66
|
from leaking into an unrelated agent.
|
|
67
67
|
|
|
68
68
|
The playbook router needs the opposite. Its procedures live at the repository
|
|
69
|
-
root, so
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
```ts
|
|
73
|
-
local: {
|
|
74
|
-
cwd: ".agent-serve/harness",
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Each harness workspace lands under
|
|
79
|
-
`examples/benny/.agent-serve/harness/<sessionId>`. Walking up the directory
|
|
80
|
-
tree reaches the host repository and its inherited playbook directory.
|
|
69
|
+
root, so `agent.ts` points `local.cwd` at a harness directory under the
|
|
70
|
+
project. Each harness workspace is a child of that directory. Walking up
|
|
71
|
+
reaches the host repository and its inherited playbook directory.
|
|
81
72
|
|
|
82
73
|
Those playbooks are inherited context. `agent-sdk info` reports zero authored
|
|
83
74
|
skills for the agent. Copying this project into another repository removes
|
|
@@ -32,9 +32,9 @@ The wiki refuses to become a merge log:
|
|
|
32
32
|
- Every touched page gets a dated changelog entry citing the PR
|
|
33
33
|
number, so each fact traces back to a merge.
|
|
34
34
|
|
|
35
|
-
The wiki itself is markdown on the serve host, in
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
The wiki itself is markdown on the serve host, in a wiki directory by
|
|
36
|
+
default with a `CODEBASE_WIKI_DIR` override. Sessions are disposable;
|
|
37
|
+
the wiki is the durable state.
|
|
38
38
|
|
|
39
39
|
## Follow a merged PR
|
|
40
40
|
|
|
@@ -108,11 +108,8 @@ agent-sdk github replay https://github.com/owner/repo/pull/123 \
|
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
The reply is a 202 acknowledgement; the ingest continues in the task.
|
|
111
|
-
Watch the session in the playground, then
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
ls examples/codebase-wiki/.agent-serve/wiki/features/
|
|
115
|
-
```
|
|
111
|
+
Watch the session in the playground, then open the wiki directory on
|
|
112
|
+
the serve host. Feature pages land under `features/`.
|
|
116
113
|
|
|
117
114
|
Each ingested feature page carries an overview, a "How it works"
|
|
118
115
|
section, and a changelog line citing the PR. Deterministic digest
|
|
@@ -85,7 +85,7 @@ A peer can only resolve within a multi-agent serve host. Validating Concierge
|
|
|
85
85
|
alone checks its files, but serving it alone fails because `weather-agent`
|
|
86
86
|
isn't mounted.
|
|
87
87
|
|
|
88
|
-
From
|
|
88
|
+
From this package, validate both projects:
|
|
89
89
|
|
|
90
90
|
```bash
|
|
91
91
|
agent-sdk validate --dir examples/concierge
|
|
@@ -98,8 +98,7 @@ two-project mount instead. Copy only the authored files needed for this proof,
|
|
|
98
98
|
leaving Weather's Slack channels out:
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
|
-
|
|
102
|
-
PAIR_DIR=$(mktemp -d "$PWD/.agent-serve/concierge-weather.XXXXXX")
|
|
101
|
+
PAIR_DIR=$(mktemp -d "${TMPDIR:-/tmp}/concierge-weather.XXXXXX")
|
|
103
102
|
mkdir -p "$PAIR_DIR/concierge" "$PAIR_DIR/weather-agent/agent"
|
|
104
103
|
cp -R examples/concierge/agent "$PAIR_DIR/concierge/"
|
|
105
104
|
cp examples/concierge/package.json "$PAIR_DIR/concierge/"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Choose the right Agent SDK example"
|
|
3
|
-
description: "Compare
|
|
3
|
+
description: "Compare the example agents by runtime, channels, tools, state, and the framework pattern each one teaches."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Choose the right Agent SDK example
|
|
@@ -12,7 +12,7 @@ design.
|
|
|
12
12
|
|
|
13
13
|
The source projects live under
|
|
14
14
|
[`examples/`](../../examples/). Run the commands below from
|
|
15
|
-
|
|
15
|
+
this package. See [Run the CLI](/#run-the-cli) if the
|
|
16
16
|
`agent-sdk` command isn't installed.
|
|
17
17
|
|
|
18
18
|
## Compare the examples
|
|
@@ -26,8 +26,7 @@ The source projects live under
|
|
|
26
26
|
| [Alert investigator](./oncall.md) | Local | Watched Slack alerts channel | Bot-post channel watching, per-thread debounce, reminder tools, and host Slack calls | Every alert gets a thread-pinned investigation that schedules its own re-checks. |
|
|
27
27
|
| [PR evidence reviewer](./bugbot.md) | Local | Custom HTTP and Slack | Host tool, skill, seeded workspaces, and an eval | The model receives a prepared diff-first evidence tree instead of a checkout. |
|
|
28
28
|
| [Approval Buddy](./approval-buddy.md) | Local | GitHub and Slack | Policy tools, two subagents, durable storage, and evals | Code decides whether a PR may be approved. Reviews stay informational. |
|
|
29
|
-
| [Security Reviewer](./security-reviewer.md) | Local host pipeline | GitHub and chat | Staged tools, parallel SDK agents, progress UI, durable storage, A/B, and evals |
|
|
30
|
-
| [Remote PR coordinator](./fsd.md) | Local coordinator and remote PR sessions | HTTP, GitHub, and Slack | Remote handoff, hooks, affinity, buffering, reminders, and workflow MCP | One remote conversation follows a PR across chat, webhooks, and timed wakes. |
|
|
29
|
+
| [Security Reviewer](./security-reviewer.md) | Local host pipeline | GitHub and chat | Staged tools, parallel SDK agents, progress UI, durable storage, A/B, and evals | Reviewers and triage overlap while the playground shows every stage. |
|
|
31
30
|
| [Knowledge base](./knowledge-base.md) | Local | Built-in HTTP chat | Durable host-side state, a conventions skill, a schedule, unit tests, and evals | People curate shared facts in chat, and fresh sessions retrieve them from markdown. |
|
|
32
31
|
| [Codebase wiki](./codebase-wiki.md) | Local | GitHub and chat | Task-dispatch webhooks, seeded digests, a mapping skill, a schedule, and evals | Merged PRs accumulate into per-feature wiki pages with a daily digest. |
|
|
33
32
|
| [Codeowners review](./codeowners-review.md) | Local | GitHub, chat, and fixtures | Ownership routing in code, playbook data files, parallel subagents, and evals | Each product area reviews with its own playbook, and verdicts aggregate mechanically. |
|
|
@@ -48,8 +47,8 @@ Use this order when you want to learn the Agent SDK one capability at a time:
|
|
|
48
47
|
6. Study [PR evidence reviewer](./bugbot.md) before giving a model repository
|
|
49
48
|
evidence.
|
|
50
49
|
7. Move policy into code with [Approval Buddy](./approval-buddy.md).
|
|
51
|
-
8.
|
|
52
|
-
|
|
50
|
+
8. Study [Security Reviewer](./security-reviewer.md) for host-side PR
|
|
51
|
+
work.
|
|
53
52
|
9. See parallel subagent delegation carry team judgment in
|
|
54
53
|
[Codeowners review](./codeowners-review.md).
|
|
55
54
|
10. Curate team context through conversation with
|
|
@@ -72,9 +71,7 @@ Several examples need more:
|
|
|
72
71
|
- GitHub examples require access to the target repository. Codebase wiki and
|
|
73
72
|
Codeowners review call the host `gh` CLI for PR data; the codeowners
|
|
74
73
|
fixtures run without network.
|
|
75
|
-
- Example agents use `cursorHostedStorage`
|
|
76
|
-
- Remote PR coordinator starts remote agent sessions and needs access to its
|
|
77
|
-
workflow backend.
|
|
74
|
+
- Example agents use `cursorHostedStorage` in `agent/storage.ts` for hosted session storage. See [Storage](../storage.md).
|
|
78
75
|
|
|
79
76
|
Each guide lists its own credentials, services, and side effects.
|
|
80
77
|
|
|
@@ -19,8 +19,8 @@ feature documentation instead.
|
|
|
19
19
|
|
|
20
20
|
## Keep shared knowledge on the filesystem
|
|
21
21
|
|
|
22
|
-
The knowledge base lives outside any session workspace, in
|
|
23
|
-
|
|
22
|
+
The knowledge base lives outside any session workspace, in a wiki
|
|
23
|
+
directory on the serve host by default. `KNOWLEDGE_BASE_DIR` overrides the location,
|
|
24
24
|
and the tools resolve it on every call, so tests and evals can point the same
|
|
25
25
|
code at a temp directory.
|
|
26
26
|
|
|
@@ -175,10 +175,10 @@ findings, accounting, and audit events.
|
|
|
175
175
|
|
|
176
176
|
## Separate session storage from review artifacts
|
|
177
177
|
|
|
178
|
-
`
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
`cursorHostedStorage` keeps Agent SDK session and event records on
|
|
179
|
+
Cursor-managed hosting. Security Reviewer sets `restore: "off"` so startup
|
|
180
|
+
doesn't load old review sessions in bulk. A continuation lookup can still
|
|
181
|
+
fetch a needed session. See [Storage](../storage.md).
|
|
182
182
|
|
|
183
183
|
The staged review files are separate from session storage. Session-store
|
|
184
184
|
durability doesn't preserve those files. All stages for one `runId` must see
|
|
@@ -200,7 +200,7 @@ instruction overlay asking chat and playground summaries to lead with high
|
|
|
200
200
|
and critical findings. Full artifacts, `finalResponse`, and finding counts
|
|
201
201
|
still include every finding. Stage-tool counters appear in the
|
|
202
202
|
playground A/B view. Local sample and snapshot files persist under
|
|
203
|
-
|
|
203
|
+
the project state directory.
|
|
204
204
|
|
|
205
205
|
When a treatment session has only low or medium findings, the filtered review
|
|
206
206
|
body currently says no vulnerabilities were found even though artifacts and
|
|
@@ -147,8 +147,8 @@ A real call writes `vm-tool-observations/<id>.json` in the agent cwd and
|
|
|
147
147
|
returns hostname, cwd, and pid. Stream events show `probe:probe_cloud_tool`,
|
|
148
148
|
not `shell`.
|
|
149
149
|
|
|
150
|
-
A local
|
|
151
|
-
|
|
150
|
+
A local tool script or a marker under `probes/` means the model
|
|
151
|
+
invented a substitute.
|
|
152
152
|
|
|
153
153
|
```bash
|
|
154
154
|
agent-sdk run --dir examples/weather-agent \
|
|
@@ -263,7 +263,8 @@ hash:
|
|
|
263
263
|
- `treatment` adds a brief Celsius instruction and changes `get_weather` to
|
|
264
264
|
return Celsius fields.
|
|
265
265
|
|
|
266
|
-
Samples and aggregate snapshots persist under
|
|
266
|
+
Samples and aggregate snapshots persist under the project state
|
|
267
|
+
directory. The treatment
|
|
267
268
|
only changes current conditions; `get_forecast` still returns Fahrenheit.
|
|
268
269
|
Treat the branch as an example of `ctx.session.abs`, not a complete unit
|
|
269
270
|
policy.
|
|
@@ -14,7 +14,7 @@ same. A peer MCP connection makes the wiring one line.
|
|
|
14
14
|
This guide wires a `concierge` agent that delegates weather questions
|
|
15
15
|
to a `weather-agent` peer mounted on the same host.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## MCP endpoint
|
|
18
18
|
|
|
19
19
|
Each agent serves the Model Context Protocol over streamable HTTP at
|
|
20
20
|
`/<slug>/v1/mcp` (or `/v1/mcp` in single mode). The surface is stateless
|
|
@@ -64,34 +64,21 @@ mapping shifts:
|
|
|
64
64
|
| `instructions.*` | `AGENTS.md` in the session workspace | prepended to the first prompt |
|
|
65
65
|
| Server tools (`execution: "server"`) | in-process SDK custom tools | authenticated HTTP MCP back to the AgentSDK host, when `--public-url` or `--cloud-tools-url` is set |
|
|
66
66
|
| Agent tools (`execution: "agent"`) | scripts in the session workspace | catalog + script bodies on the first prompt |
|
|
67
|
-
| `skills/*` | `.cursor/skills/` in the workspace | native discovery
|
|
67
|
+
| `skills/*` | `.cursor/skills/` in the workspace | native discovery after the first turn, from the hosted store or the signed-in account |
|
|
68
68
|
| `mcp-connections/*.ts` | SDK `mcpServers` | SDK `mcpServers` (peers need `--public-url`) |
|
|
69
69
|
| `sandbox/workspace/**` | seeded into the session workspace | ignored |
|
|
70
70
|
| Tool approvals (`needsApproval`) | supported | not supported; keep approval-gated tools on local turns |
|
|
71
71
|
|
|
72
|
-
Authored skills
|
|
73
|
-
|
|
74
|
-
store's `skills/` directory; local `serve`/`run` with a personal API
|
|
75
|
-
key writes `agent-serve/<agent>/skills/` on the USER store.
|
|
76
|
-
|
|
77
|
-
Hosted deployments configure the server-tool MCP URL automatically
|
|
78
|
-
(`cloudToolsUrl`, authenticated with the resolved Cursor API key). A
|
|
79
|
-
self-hosted public server needs `--public-url` (and `--bearer-token` when the
|
|
80
|
-
host is not behind another trusted authentication boundary) so cloud turns
|
|
81
|
-
can reach those tools. Without either, the server warns at startup and
|
|
82
|
-
cloud turns omit the server tools.
|
|
72
|
+
Authored skills are discovered natively after the first cloud turn,
|
|
73
|
+
using the hosted store or the signed-in account.
|
|
83
74
|
|
|
84
75
|
Approvals are a local-runtime contract. On cloud, a `needsApproval` tool
|
|
85
76
|
call rides one HTTP MCP request from the VM, and a parked call would
|
|
86
77
|
hold that request open until it times out; there is no durable approval
|
|
87
78
|
flow for cloud turns.
|
|
88
79
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
the cloud conversation. Cloud ids are minted during the first send. And
|
|
92
|
-
peer MCP connections resolve to `--public-url` for cloud turns, because a VM
|
|
93
|
-
cannot reach the host's loopback; without one, peers are omitted from
|
|
94
|
-
cloud turns and the server warns at startup.
|
|
80
|
+
Peer MCP connections need `--public-url` for cloud turns. Without one,
|
|
81
|
+
peers are omitted and the server warns at startup.
|
|
95
82
|
|
|
96
83
|
## Hybrid: local agent, cloud sessions
|
|
97
84
|
|
|
@@ -106,12 +93,8 @@ base that per-session options merge over.
|
|
|
106
93
|
|
|
107
94
|
These come from running a PR driver against real PR traffic:
|
|
108
95
|
|
|
109
|
-
- One cloud
|
|
110
|
-
|
|
111
|
-
`agent.bound` hook) so webhook wakes resume the same conversation
|
|
112
|
-
instead of booting a fresh VM per event.
|
|
113
|
-
- Stable continuation keys (`pr:owner/repo#N`) so every wake lands on
|
|
114
|
-
the same session within a channel.
|
|
96
|
+
- One cloud session per unit of work, keyed with a stable continuation
|
|
97
|
+
token (`pr:owner/repo#N`) so every wake lands on the same conversation.
|
|
115
98
|
- Keep the host deterministic: fetch briefs and metadata on the host,
|
|
116
99
|
send the VM a compact prompt, and let the VM re-read source of truth
|
|
117
100
|
with its own `gh` and `git` instead of trusting payload snapshots.
|
|
@@ -131,6 +114,6 @@ driving channels directly.
|
|
|
131
114
|
Continue with these pages:
|
|
132
115
|
|
|
133
116
|
- [Agent config](../reference/agent-config.md): the `runtime` and
|
|
134
|
-
`cloud` fields
|
|
117
|
+
`cloud` fields
|
|
135
118
|
- [GitHub guide](./github.md): the webhook patterns that pair with
|
|
136
119
|
cloud triage
|
|
@@ -42,9 +42,9 @@ cd nightly-triage
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
The command fetches the Automation before writing files. A 404 means it
|
|
45
|
-
was not found, you do not have access, or
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
was not found, you do not have access, or convert is not enabled for
|
|
46
|
+
your team. A 422 means it is Cursor-managed. The command writes nothing
|
|
47
|
+
after either error.
|
|
48
48
|
|
|
49
49
|
The command runs `npm install` after writing the project. If the install
|
|
50
50
|
fails, the files remain. Run `npm install` in the output directory
|
package/docs/guides/github.md
CHANGED
|
@@ -49,8 +49,9 @@ Choose `permissions` by what the agent needs:
|
|
|
49
49
|
`contents-write` is an explicit opt-up. `progress.commitStatus` posts a
|
|
50
50
|
GitHub check run (`checks:write`). Hosted `cursorAccount` mints that
|
|
51
51
|
permission on `"contents-write"` tokens. Enabling `commitStatus` opts a
|
|
52
|
-
`"pr-write"` channel up to that tier
|
|
53
|
-
`"pr-write"` without `commitStatus` is enough for comments
|
|
52
|
+
`"pr-write"` channel up to that tier because it needs check-write
|
|
53
|
+
permission. `"pr-write"` without `commitStatus` is enough for comments
|
|
54
|
+
and banners.
|
|
54
55
|
Prefer `"pr-write"` unless the agent must push or post a merge-box check.
|
|
55
56
|
|
|
56
57
|
Set `checks: true` when channel code posts its own Checks API runs through
|
|
@@ -70,10 +71,9 @@ Repeat `--repo` for each repository. The stream and credential are
|
|
|
70
71
|
resolved as the signed-in Cursor principal. `serve` refuses to start
|
|
71
72
|
signed out.
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
or checks from GitHub instead of trusting a snapshot in the wake.
|
|
74
|
+
The stream carries event metadata, not full webhook bodies, so your
|
|
75
|
+
agent should re-read the PR or checks from GitHub instead of trusting a
|
|
76
|
+
snapshot in the wake.
|
|
77
77
|
|
|
78
78
|
This is the preferred production path: no public URL, no repo admin
|
|
79
79
|
webhook, and no inbound network for GitHub deliveries.
|
|
@@ -111,7 +111,7 @@ things:
|
|
|
111
111
|
| `{ task }` | Host-side work. The delivery is 202-ACKed immediately and the task runs past GitHub's ~10-second timeout. No chat session. |
|
|
112
112
|
| `null` | Skip this delivery. |
|
|
113
113
|
|
|
114
|
-
`{ auth }` may also carry `workspaceFiles
|
|
114
|
+
`{ auth }` may also carry `workspaceFiles`, the same session seed Slack
|
|
115
115
|
and `send()` use. Pass a function to fetch after a 202 so I/O can miss
|
|
116
116
|
GitHub's ~10s window.
|
|
117
117
|
|
|
@@ -198,9 +198,7 @@ These patterns come from running a PR agent against real traffic:
|
|
|
198
198
|
- Persist the buffer in `host.kv` before you acknowledge a wake, and
|
|
199
199
|
restore it on channel start. A restart must not drop buffered wakes.
|
|
200
200
|
- Key sessions with a stable continuation token (`pr:owner/repo#N`) so
|
|
201
|
-
every wake resumes the PR's conversation.
|
|
202
|
-
an affinity store mapping PR → SDK agent id; write it from an
|
|
203
|
-
`agent.bound` hook with `ctx.host.kv`.
|
|
201
|
+
every wake resumes the PR's conversation.
|
|
204
202
|
- Keep payload details out of wake prompts. Send a generic "re-check
|
|
205
203
|
the PR" and let the agent re-read source of truth instead of trusting a
|
|
206
204
|
stale snapshot.
|
|
@@ -262,19 +260,9 @@ behavior. Reactions still default on; set `reactions: false` when the
|
|
|
262
260
|
eyes emoji is noise. Descriptions are optional; defaults derive from
|
|
263
261
|
`botName` or the check `context`.
|
|
264
262
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
a PR/CI wake stores one; the banner still posts. Review-comment wakes
|
|
269
|
-
carry `pull_request.head.sha` when GitHub includes it.
|
|
270
|
-
|
|
271
|
-
The sticky comment id and latest check-run id live on durable
|
|
272
|
-
`GitHubChannelState` (session record). Each wake also passes `refreshState`
|
|
273
|
-
so `headSha` / refs update on continuation without wiping those ids. A later
|
|
274
|
-
turn on the same SHA creates a new check run — GitHub cannot reopen a
|
|
275
|
-
completed run. Persist other derived state
|
|
276
|
-
with `ctx.host.kv` or `ctx.host.files`. `stateRoot` resets on hosted
|
|
277
|
-
replace.
|
|
263
|
+
A comment-only first wake has no head SHA, so the check waits for a
|
|
264
|
+
PR or CI event. The banner still posts. A later turn on the same SHA
|
|
265
|
+
creates a new check run; GitHub cannot reopen a completed run.
|
|
278
266
|
|
|
279
267
|
Override `events` when the mapping is custom. [Approval Buddy](../example-agents/approval-buddy.md)
|
|
280
268
|
posts commit status from `turn.started` / `action.result` / `turn.failed`
|
package/docs/guides/mcp-oauth.md
CHANGED
|
@@ -18,8 +18,8 @@ The companion skill is
|
|
|
18
18
|
|
|
19
19
|
- Authorize `defineConnection({ url, oauth: true })` with a browser PKCE
|
|
20
20
|
flow (`agent-sdk mcp oauth <connection>`)
|
|
21
|
-
- Keep tokens in
|
|
22
|
-
connection's resource URL
|
|
21
|
+
- Keep tokens in `mcp-auth.json` under the CLI config directory, bound
|
|
22
|
+
to that connection's resource URL
|
|
23
23
|
- Upsert deployment secrets with `--store` so hosted engines seed the
|
|
24
24
|
same tokens from env
|
|
25
25
|
- Keep privileged servers off the model with `hostOnly: true` while
|
|
@@ -97,8 +97,8 @@ What happens:
|
|
|
97
97
|
`oauth: true`
|
|
98
98
|
2. It opens the authorization URL in your browser
|
|
99
99
|
3. The callback lands on `http://localhost:8787/callback`
|
|
100
|
-
4. Tokens land in
|
|
101
|
-
|
|
100
|
+
4. Tokens land in `mcp-auth.json` under the CLI config directory
|
|
101
|
+
(override with `AGENT_SERVE_CONFIG_DIR`)
|
|
102
102
|
|
|
103
103
|
If you're already authorized, the command prints that and exits. Re-run
|
|
104
104
|
it after rotating tokens on the MCP server, or after you change the
|
package/docs/guides/slack.md
CHANGED
|
@@ -127,7 +127,7 @@ writes `<PREFIX>_SLACK_BOT_TOKEN` and `<PREFIX>_SLACK_APP_TOKEN` into
|
|
|
127
127
|
[below](#wire-the-env-and-verify).
|
|
128
128
|
|
|
129
129
|
If Slack needs a workspace admin to approve the app, keep the CLI
|
|
130
|
-
running. Managed install does not file the request
|
|
130
|
+
running. Managed install does not file the request. Open Slack's
|
|
131
131
|
**Request approval** page (the CLI prints the link; the same URL is
|
|
132
132
|
**Send a reminder** after you submit). After an admin approves, click
|
|
133
133
|
**Retry** in the wizard.
|
|
@@ -190,9 +190,9 @@ option.
|
|
|
190
190
|
agent-sdk slack init --manual --dir . --name "My Agent"
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
That writes `agent/channels/slack.ts`,
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
That writes `agent/channels/slack.ts`, Slack manifests under the
|
|
194
|
+
project state directory, `env.example`, and `setup-status.json`.
|
|
195
|
+
`--no-prefix` uses shared `SLACK_*` variables on
|
|
196
196
|
a single-agent host. `--prefix CUSTOM` overrides the directory-derived
|
|
197
197
|
prefix. `--channel-posts` subscribes the manifests to channel-post
|
|
198
198
|
events.
|
package/docs/guides/webhooks.md
CHANGED
|
@@ -16,8 +16,8 @@ mechanism. This page is the mechanism itself.
|
|
|
16
16
|
The built-in HTTP channel is always mounted (under `/<slug>` in the
|
|
17
17
|
default multi-agent layout). `POST /v1/session` starts a conversation,
|
|
18
18
|
`POST /v1/session/:id` follows up, and `GET /v1/session/:id/stream`
|
|
19
|
-
streams NDJSON events, plus sessions, approvals, and tool routes.
|
|
20
|
-
|
|
19
|
+
streams NDJSON events, plus sessions, approvals, and tool routes. See
|
|
20
|
+
the [HTTP API reference](../reference/http-api.md).
|
|
21
21
|
|
|
22
22
|
Write a custom channel when that shape doesn't fit: a webhook with its
|
|
23
23
|
own payload contract, a surface that keys sessions by a domain id, or a
|
|
@@ -451,7 +451,7 @@ Start with curl and saved payloads under `fixtures/`. The playground's
|
|
|
451
451
|
endpoint, has Copy curl, and opens the created session on a successful
|
|
452
452
|
Try. For regression coverage, drive the same behavior through an eval,
|
|
453
453
|
or keep channel logic deterministic in `agent/lib/` and unit-test it
|
|
454
|
-
there. When something looks wrong,
|
|
454
|
+
there. When something looks wrong, inspect the session event stream.
|
|
455
455
|
The stream is the record of what happened.
|
|
456
456
|
|
|
457
457
|
For GitHub specifically, don't hand-roll fixtures.
|
package/docs/hillclimbing.md
CHANGED
|
@@ -56,7 +56,7 @@ Pin the input first. A moving fixture is noise. For GitHub agents, use `agent-sd
|
|
|
56
56
|
|
|
57
57
|
## How do I run one hillclimb round?
|
|
58
58
|
|
|
59
|
-
**Measure.** Hit the agent the way a user would: playground, channel HTTP, or Slack in `--dev`. Or ask the hillclimb skill to do it. `agent-sdk run` returns a JSON trajectory and writes a trace under
|
|
59
|
+
**Measure.** Hit the agent the way a user would: playground, channel HTTP, or Slack in `--dev`. Or ask the hillclimb skill to do it. `agent-sdk run` returns a JSON trajectory and writes a trace under the project state directory.
|
|
60
60
|
|
|
61
61
|
**Reflect.** Score the trajectory, not impressions. Was the answer right? Did the model thrash (too many tools, fat evidence, grep loops)? Did it invent work the host should have prepared? Name the single dominant problem for this round in one sentence. Example: "Full-file dumps trigger grep loops."
|
|
62
62
|
|
package/docs/quickstart.md
CHANGED
|
@@ -21,7 +21,7 @@ review. Add GitHub event handling so pull requests can trigger reviews.
|
|
|
21
21
|
- Node 22.13 or newer. Bun isn't supported.
|
|
22
22
|
- Run commands as `agent-sdk <command>`, or use
|
|
23
23
|
`npx @cursor/july <command>` when the CLI isn't on `PATH`. See
|
|
24
|
-
[Run the CLI](/#run-the-cli)
|
|
24
|
+
[Run the CLI](/#run-the-cli) if `agent-sdk` is not on `PATH`.
|
|
25
25
|
- A Cursor credential for model turns. Sign in once:
|
|
26
26
|
|
|
27
27
|
```bash
|
|
@@ -70,8 +70,8 @@ model: "composer-2.5",
|
|
|
70
70
|
## Choose a runtime
|
|
71
71
|
|
|
72
72
|
`runtime: "local"` (the default) runs turns on the Cursor SDK harness on
|
|
73
|
-
this machine.
|
|
74
|
-
|
|
73
|
+
this machine. Server tools, skills, sandbox seeds, and tool approvals
|
|
74
|
+
all apply.
|
|
75
75
|
|
|
76
76
|
`runtime: "cloud"` runs turns on Cursor cloud agents (`bc-…` ids). Pass
|
|
77
77
|
a `cloud` block with the repos the VM carries. Server tools stay
|
|
@@ -115,8 +115,8 @@ it.
|
|
|
115
115
|
|
|
116
116
|
Session workspaces are real Cursor project directories. The harness loads
|
|
117
117
|
`AGENTS.md` and `.cursor` config from ancestor directories. An agent nested
|
|
118
|
-
in another git repo (a monorepo package) defaults to
|
|
119
|
-
`~/.cache
|
|
118
|
+
in another git repo (a monorepo package) defaults to a per-project
|
|
119
|
+
cache directory under `~/.cache` when you omit `cwd`, so the enclosing checkout
|
|
120
120
|
does not leak rules, skills, or MCP servers into the turn. A standalone git
|
|
121
121
|
root keeps the in-project session workspace. Point `cwd` at a checkout only
|
|
122
122
|
when the agent should inherit that tree.
|
|
@@ -138,7 +138,7 @@ export default defineAgent({
|
|
|
138
138
|
});
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
Agent
|
|
141
|
+
The Agent SDK always adds `"mcp"` to a configured allowlist. Authored
|
|
142
142
|
server tools in `agent/tools/` use MCP to reach the model. MCP can also
|
|
143
143
|
expose declared connections and servers from the harness directory's
|
|
144
144
|
ambient `.cursor` config. To exclude a checkout's MCP servers, point
|
|
@@ -159,7 +159,7 @@ Two names have broader effects:
|
|
|
159
159
|
|
|
160
160
|
Tool allowlists work only with the local runtime. A
|
|
161
161
|
`runtime: "cloud"` agent that sets `tools` fails at serve startup.
|
|
162
|
-
Agent
|
|
162
|
+
The Agent SDK also refuses per-send cloud sessions from a hybrid agent
|
|
163
163
|
with an allowlist. It won't run those sessions with unrestricted tool
|
|
164
164
|
access.
|
|
165
165
|
|
|
@@ -167,7 +167,7 @@ The allowlist controls which tools the model can call. It does not
|
|
|
167
167
|
isolate the serve host. For agents that process untrusted input, also
|
|
168
168
|
set `local: { sandbox: true }`.
|
|
169
169
|
|
|
170
|
-
##
|
|
170
|
+
## Cloud options
|
|
171
171
|
|
|
172
172
|
Cloud agent defaults forwarded to the Cursor SDK: `repos` (each
|
|
173
173
|
`{ url, startingRef? }`), environment selection, `envVars`, and the
|
|
@@ -239,13 +239,8 @@ console.log(`listening on ${handle.url}`);
|
|
|
239
239
|
// handle.createReminder(...), handle.project, await handle.close()
|
|
240
240
|
```
|
|
241
241
|
|
|
242
|
-
|
|
243
|
-
`
|
|
244
|
-
`playground`, `docs`, `authToken` (the `--bearer-token` equivalent),
|
|
245
|
-
`allowAnonymous`, `allowAnonymousCursorGithub`,
|
|
246
|
-
`allowAnonymousCursorAccountMcp`, `cursorGithubProxy`, `publicUrl`,
|
|
247
|
-
`cloudToolsUrl`, `cursorEvents`, and `logger`. `serve()` additionally
|
|
248
|
-
accepts `discovery` (project-loading options) and
|
|
242
|
+
Host settings match the documented [CLI](./cli.md) `serve` flags.
|
|
243
|
+
`serve()` also accepts `discovery` (project-loading options) and
|
|
249
244
|
`mode: "single" | "multi"`. The Cursor credential resolves in one order
|
|
250
245
|
everywhere: explicit `apiKey`, then `CURSOR_API_KEY`, then the key
|
|
251
246
|
stored by `agent-sdk login`.
|
|
@@ -258,4 +253,4 @@ Continue with these pages:
|
|
|
258
253
|
agent
|
|
259
254
|
- [Cloud runtime](../guides/cloud-runtime.md): when and how to leave
|
|
260
255
|
the host
|
|
261
|
-
- [CLI](./cli.md): the flags `
|
|
256
|
+
- [CLI](./cli.md): the `serve` flags `serve()` accepts
|