@cursor/july 0.1.30 → 0.1.32
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 +1 -1
- package/README.md +10 -5
- package/dist/bin/agent-serve.js +4 -4
- package/dist/channels/github/index.d.ts +1 -1
- package/dist/channels/github/index.js +1 -1
- package/dist/channels/slack/bot-mentions.d.ts +1 -1
- package/dist/channels/slack/bot-mentions.d.ts.map +1 -1
- package/dist/channels/slack/bot-mentions.js +1 -1
- package/dist/channels/slack/eval-directive.js +1 -1
- package/dist/channels/slack/external-policy.d.ts +1 -1
- package/dist/channels/slack/external-policy.js +1 -1
- package/dist/channels/slack/log.d.ts +1 -1
- package/dist/channels/slack/log.js +1 -1
- package/dist/channels/slack/post-update-delivery.d.ts +85 -0
- package/dist/channels/slack/post-update-delivery.d.ts.map +1 -0
- package/dist/channels/slack/setup.js +1 -1
- package/dist/channels/slack/socket-mode.js +1 -1
- package/dist/docs/404.html +3 -3
- package/dist/docs/ab.html +11 -11
- package/dist/docs/assets/{ab.md.BMCZ6Hd7.js → ab.md.DAQoJ-up.js} +6 -6
- package/dist/docs/assets/{ab.md.BMCZ6Hd7.lean.js → ab.md.DAQoJ-up.lean.js} +1 -1
- package/dist/docs/assets/{app.Cm4lsMc4.js → app.C2aVczmo.js} +1 -1
- package/dist/docs/assets/building-with-agents.md.CnHqvYDd.js +13 -0
- package/dist/docs/assets/{building-with-agents.md.CJCtZCyi.lean.js → building-with-agents.md.CnHqvYDd.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.xgMnlUSO.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CYUFXspH.js → VPLocalSearchBox.DLEzetbD.js} +1 -1
- package/dist/docs/assets/chunks/{theme.CTjkX9vc.js → theme.BkOH1oMp.js} +2 -2
- package/dist/docs/assets/concepts.md.DFaQEFkA.js +4 -0
- package/dist/docs/assets/concepts.md.DFaQEFkA.lean.js +1 -0
- package/dist/docs/assets/deployment.md.9MYBuKM1.js +55 -0
- package/dist/docs/assets/deployment.md.9MYBuKM1.lean.js +1 -0
- package/dist/docs/assets/{evals.md.DYOjkRCX.js → evals.md.BIUoVZ6X.js} +13 -13
- package/dist/docs/assets/evals.md.BIUoVZ6X.lean.js +1 -0
- package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.js → example-agents_approval-buddy.md.BhEfleVx.js} +4 -4
- package/dist/docs/assets/{example-agents_approval-buddy.md.DFGBYLcc.lean.js → example-agents_approval-buddy.md.BhEfleVx.lean.js} +1 -1
- package/dist/docs/assets/example-agents_benny.md.2Et1qa8f.js +7 -0
- package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.js → example-agents_bugbot.md.ByUexi5i.js} +5 -5
- package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.js → example-agents_codebase-wiki.md.B4y-7ZVW.js} +6 -6
- package/dist/docs/assets/{example-agents_codebase-wiki.md.DC6sgwn0.lean.js → example-agents_codebase-wiki.md.B4y-7ZVW.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.js → example-agents_codeowners-review.md.D6ay4nvf.js} +6 -6
- package/dist/docs/assets/{example-agents_codeowners-review.md.Ku_tG2RY.lean.js → example-agents_codeowners-review.md.D6ay4nvf.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.js → example-agents_concierge.md.lL8rhYlj.js} +7 -7
- package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.js → example-agents_fsd.md.DfNKQTHz.js} +5 -5
- package/dist/docs/assets/example-agents_index.md.DgGBwckv.js +2 -0
- package/dist/docs/assets/example-agents_index.md.DgGBwckv.lean.js +1 -0
- package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.js → example-agents_knowledge-base.md.CzyZ2DCr.js} +5 -5
- package/dist/docs/assets/{example-agents_knowledge-base.md.BPJiVueF.lean.js → example-agents_knowledge-base.md.CzyZ2DCr.lean.js} +1 -1
- package/dist/docs/assets/example-agents_oncall.md.wFFXXEyW.js +10 -0
- package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.js → example-agents_security-reviewer.md.Dkf1gyo6.js} +8 -8
- package/dist/docs/assets/example-agents_slack-agent.md.DvgvT4nn.js +5 -0
- package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.js +24 -0
- package/dist/docs/assets/example-agents_weather-agent.md.Dmrcphhl.lean.js +1 -0
- package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.js → guides_agent-to-agent.md.Bmbxy-FA.js} +4 -4
- package/dist/docs/assets/guides_cloud-runtime.md.BZ2GA7Es.js +9 -0
- package/dist/docs/assets/{guides_github.md.DOOCpqsW.js → guides_github.md.R2QlpR75.js} +5 -5
- package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.js → guides_human-in-the-loop.md.BWvT7UqY.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.Dd8EgSem.js → guides_mcp-oauth.md.C7G7IykG.js} +5 -5
- package/dist/docs/assets/guides_mcp-oauth.md.C7G7IykG.lean.js +1 -0
- package/dist/docs/assets/guides_slack.md.zriQpU_9.js +47 -0
- package/dist/docs/assets/guides_slack.md.zriQpU_9.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.js → guides_webhooks.md.DiAwSR42.js} +1 -1
- package/dist/docs/assets/{hillclimbing.md.DHNast08.js → hillclimbing.md.D9Y1_bYh.js} +1 -1
- package/dist/docs/assets/index.md.CZqbBJPB.js +20 -0
- package/dist/docs/assets/index.md.CZqbBJPB.lean.js +1 -0
- package/dist/docs/assets/{quickstart.md.BU6Iwi_9.js → quickstart.md.TnEXYgYW.js} +12 -12
- package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.js → reference_agent-config.md.kuN6-OxK.js} +1 -1
- package/dist/docs/assets/reference_cli.md.sD-IUWjg.js +73 -0
- package/dist/docs/assets/{reference_cli.md.ccoKOoXt.lean.js → reference_cli.md.sD-IUWjg.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.B9Q3TOve.js → reference_connections.md.DGqAsFXb.js} +3 -3
- package/dist/docs/assets/reference_http-api.md.CfVM_ICa.js +11 -0
- package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.js → reference_project-layout.md.D8E6ZmHJ.js} +4 -4
- package/dist/docs/assets/{reference_project-layout.md.Bd_CKtNS.lean.js → reference_project-layout.md.D8E6ZmHJ.lean.js} +1 -1
- package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.js → reference_schedules.md.gmfYzf_I.js} +1 -1
- package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.js → reference_sessions.md.C_ouF_uf.js} +3 -3
- package/dist/docs/assets/{reference_tools.md.BRSDnTbN.js → reference_tools.md.BswAQM41.js} +3 -3
- package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.js → scaffolding-agents.md.Bsr9Pwzu.js} +1 -1
- package/dist/docs/assets/{scaffolding-agents.md.C3pTrmoE.lean.js → scaffolding-agents.md.Bsr9Pwzu.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.DRTdnFvd.js → storage.md.xZoiGM58.js} +3 -3
- package/dist/docs/assets/storage.md.xZoiGM58.lean.js +1 -0
- package/dist/docs/assets/troubleshooting.md.B5RVX_tL.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.CmQkmnzC.lean.js → troubleshooting.md.B5RVX_tL.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +12 -12
- package/dist/docs/concepts.html +6 -6
- package/dist/docs/deployment.html +32 -32
- package/dist/docs/evals.html +19 -19
- package/dist/docs/example-agents/approval-buddy.html +9 -9
- package/dist/docs/example-agents/benny.html +11 -11
- package/dist/docs/example-agents/bugbot.html +10 -10
- package/dist/docs/example-agents/codebase-wiki.html +11 -11
- package/dist/docs/example-agents/codeowners-review.html +11 -11
- package/dist/docs/example-agents/concierge.html +12 -12
- package/dist/docs/example-agents/fsd.html +10 -10
- package/dist/docs/example-agents/index.html +7 -7
- package/dist/docs/example-agents/knowledge-base.html +10 -10
- package/dist/docs/example-agents/oncall.html +10 -10
- package/dist/docs/example-agents/security-reviewer.html +13 -13
- package/dist/docs/example-agents/slack-agent.html +10 -10
- package/dist/docs/example-agents/weather-agent.html +16 -16
- package/dist/docs/guides/agent-to-agent.html +9 -9
- package/dist/docs/guides/cloud-runtime.html +7 -7
- package/dist/docs/guides/github.html +10 -10
- package/dist/docs/guides/human-in-the-loop.html +7 -7
- package/dist/docs/guides/mcp-oauth.html +11 -11
- package/dist/docs/guides/slack.html +22 -17
- package/dist/docs/guides/webhooks.html +7 -7
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +7 -7
- package/dist/docs/index.html +9 -9
- package/dist/docs/quickstart.html +17 -17
- package/dist/docs/reference/agent-config.html +7 -7
- package/dist/docs/reference/channels.html +5 -5
- package/dist/docs/reference/cli.html +56 -48
- package/dist/docs/reference/connections.html +9 -9
- package/dist/docs/reference/hooks.html +5 -5
- package/dist/docs/reference/http-api.html +7 -7
- package/dist/docs/reference/instructions.html +5 -5
- package/dist/docs/reference/playground.html +5 -5
- package/dist/docs/reference/project-layout.html +9 -9
- package/dist/docs/reference/prompt.html +5 -5
- package/dist/docs/reference/schedules.html +7 -7
- package/dist/docs/reference/sessions.html +8 -8
- package/dist/docs/reference/skills.html +5 -5
- package/dist/docs/reference/subagents.html +5 -5
- package/dist/docs/reference/tools.html +9 -9
- package/dist/docs/scaffolding-agents.html +6 -6
- package/dist/docs/storage.html +9 -9
- package/dist/docs/troubleshooting.html +6 -6
- package/dist/evals/reporters.d.ts +1 -1
- package/dist/evals/reporters.js +1 -1
- package/dist/evals.d.ts +2 -2
- package/dist/files-backends/agent-store-presigned-url.d.ts +3 -0
- package/dist/files-backends/agent-store-presigned-url.d.ts.map +1 -0
- package/dist/files-backends/agent-store-presigned-url.js +1023 -0
- package/dist/files-backends/cursor-hosted.d.ts +87 -0
- package/dist/files-backends/cursor-hosted.d.ts.map +1 -0
- package/dist/files-backends/cursor-hosted.js +563 -0
- package/dist/files-backends/local-fs.d.ts +33 -0
- package/dist/files-backends/local-fs.d.ts.map +1 -0
- package/dist/files-backends/local-fs.js +199 -0
- package/dist/files.d.ts +139 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +89 -0
- package/dist/internal/ab-collector.js +2 -2
- package/dist/internal/ab-fold.js +1 -1
- package/dist/internal/cli-ax.d.ts +2 -2
- package/dist/internal/cli-ax.js +2 -2
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +7 -2
- package/dist/internal/cli-docs.d.ts +1 -1
- package/dist/internal/cli-docs.js +1 -1
- package/dist/internal/cli-github.js +13 -13
- package/dist/internal/cli-mcp-oauth.d.ts +1 -1
- package/dist/internal/cli-mcp-oauth.js +2 -2
- package/dist/internal/cli-mcp.d.ts +3 -3
- package/dist/internal/cli-mcp.js +4 -4
- package/dist/internal/cli-skills.js +1 -1
- package/dist/internal/cloud-turn-cost.d.ts +9 -1
- package/dist/internal/cloud-turn-cost.d.ts.map +1 -1
- package/dist/internal/cloud-turn-cost.js +14 -4
- package/dist/internal/cursor/account-mcp.js +5 -5
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/github-credentials.js +3 -3
- package/dist/internal/cursor-account-mcp-auth.d.ts +1 -1
- package/dist/internal/cursor-account-mcp-auth.js +1 -1
- package/dist/internal/cursor-event-relay.js +1 -1
- package/dist/internal/cursor-relay-core.d.ts +1 -1
- package/dist/internal/cursor-relay-core.d.ts.map +1 -1
- package/dist/internal/cursor-slack-relay.js +1 -1
- package/dist/internal/deploy-client.d.ts +6 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +3 -2
- package/dist/internal/deploy-source.d.ts +2 -2
- package/dist/internal/deploy-source.js +2 -2
- package/dist/internal/discovery.js +2 -2
- package/dist/internal/distribution.d.ts +5 -5
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +6 -6
- package/dist/internal/docs-site.js +5 -5
- package/dist/internal/eval-run-store.js +8 -8
- package/dist/internal/evals-client.d.ts +1 -1
- package/dist/internal/evals-client.js +1 -1
- package/dist/internal/github-fanout.js +2 -2
- package/dist/internal/host-files.d.ts +29 -0
- package/dist/internal/host-files.d.ts.map +1 -0
- package/dist/internal/host-files.js +283 -0
- package/dist/internal/host-platforms.js +5 -5
- package/dist/internal/hosting.d.ts +1 -1
- package/dist/internal/hosting.js +1 -1
- package/dist/internal/http-channel.d.ts.map +1 -1
- package/dist/internal/http-channel.js +26 -0
- package/dist/internal/install-cursor-skills.d.ts +1 -1
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +33 -4
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/local-control-plane.js +2 -2
- package/dist/internal/logs-client.d.ts +2 -2
- package/dist/internal/logs-client.js +2 -2
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/mcp-oauth.js +2 -2
- package/dist/internal/persistence-coordinator.d.ts +127 -0
- package/dist/internal/persistence-coordinator.d.ts.map +1 -0
- package/dist/internal/platform-schedule-sync.js +2 -2
- package/dist/internal/playground/toolchain.js +6 -6
- package/dist/internal/reminder-runner.js +13 -13
- package/dist/internal/resolved-connections.js +6 -6
- package/dist/internal/schedule-runner.js +1 -1
- package/dist/internal/sdk-runner.js +5 -5
- package/dist/internal/server.js +16 -16
- package/dist/internal/session-cost.d.ts +3 -2
- package/dist/internal/session-cost.d.ts.map +1 -1
- package/dist/internal/session-cost.js +7 -6
- package/dist/internal/session-engine.d.ts +31 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +119 -31
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/internal/storage-coordinator.js +7 -7
- package/dist/internal/trajectory.js +2 -2
- package/dist/internal/turn-cost.d.ts +27 -0
- package/dist/internal/turn-cost.d.ts.map +1 -0
- package/dist/internal/turn-cost.js +83 -0
- package/dist/internal/update-check.d.ts +3 -3
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +5 -5
- package/dist/memory.d.ts +1 -1
- package/dist/memory.js +1 -1
- package/dist/multi-tenant.d.ts +80 -0
- package/dist/multi-tenant.d.ts.map +1 -0
- package/dist/multi-tenant.js +69 -0
- package/dist/persistence.d.ts +184 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/playground/assets/index-50PKeJlG.css +1 -0
- package/dist/playground/assets/index-C0f2Wl1q.js +85 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +1 -1
- package/dist/types.d.ts +120 -16
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +23 -23
- package/docs/ab.md +12 -12
- package/docs/building-with-agents.md +9 -9
- package/docs/concepts.md +11 -11
- package/docs/deployment.md +55 -43
- package/docs/evals.md +20 -20
- package/docs/example-agents/approval-buddy.md +9 -9
- package/docs/example-agents/benny.md +13 -13
- package/docs/example-agents/bugbot.md +6 -6
- package/docs/example-agents/codebase-wiki.md +8 -8
- package/docs/example-agents/codeowners-review.md +8 -8
- package/docs/example-agents/concierge.md +10 -10
- package/docs/example-agents/fsd.md +7 -7
- package/docs/example-agents/index.md +8 -8
- package/docs/example-agents/knowledge-base.md +9 -9
- package/docs/example-agents/oncall.md +7 -7
- package/docs/example-agents/security-reviewer.md +12 -12
- package/docs/example-agents/slack-agent.md +10 -10
- package/docs/example-agents/weather-agent.md +30 -26
- package/docs/guides/agent-to-agent.md +4 -4
- package/docs/guides/cloud-runtime.md +3 -3
- package/docs/guides/github.md +6 -6
- package/docs/guides/human-in-the-loop.md +1 -1
- package/docs/guides/mcp-oauth.md +9 -9
- package/docs/guides/slack.md +94 -21
- package/docs/guides/webhooks.md +1 -1
- package/docs/hillclimbing.md +3 -3
- package/docs/quickstart.md +18 -18
- package/docs/reference/agent-config.md +1 -1
- package/docs/reference/cli.md +110 -79
- package/docs/reference/connections.md +3 -3
- package/docs/reference/http-api.md +2 -2
- package/docs/reference/project-layout.md +7 -7
- package/docs/reference/schedules.md +1 -1
- package/docs/reference/sessions.md +7 -7
- package/docs/reference/tools.md +3 -3
- package/docs/scaffolding-agents.md +2 -2
- package/docs/storage.md +5 -5
- package/docs/troubleshooting.md +11 -10
- package/package.json +5 -2
- package/skills/ab/SKILL.md +5 -5
- package/skills/create-agent/SKILL.md +17 -17
- package/skills/debug/SKILL.md +10 -10
- package/skills/evals/SKILL.md +13 -13
- package/skills/framework-map/SKILL.md +3 -3
- package/skills/github/SKILL.md +11 -11
- package/skills/hillclimb/SKILL.md +9 -9
- package/skills/mcp-auth/SKILL.md +11 -11
- package/skills/setup-slack/SKILL.md +28 -28
- package/src/bin/agent-serve.ts +4 -4
- package/src/channels/github/index.ts +1 -1
- package/src/channels/slack/bot-mentions.ts +1 -1
- package/src/channels/slack/eval-directive.ts +1 -1
- package/src/channels/slack/external-policy.ts +1 -1
- package/src/channels/slack/log.ts +1 -1
- package/src/channels/slack/setup.ts +1 -1
- package/src/channels/slack/socket-mode.ts +1 -1
- package/src/evals/reporters.ts +1 -1
- package/src/evals.ts +2 -2
- package/src/files-backends/agent-store-presigned-url.ts +8 -0
- package/src/files-backends/cursor-hosted.ts +724 -0
- package/src/files-backends/local-fs.ts +178 -0
- package/src/files.ts +195 -0
- package/src/internal/ab-collector.ts +2 -2
- package/src/internal/ab-fold.ts +1 -1
- package/src/internal/cli-ax.ts +2 -2
- package/src/internal/cli-deploy.ts +7 -2
- package/src/internal/cli-docs.ts +1 -1
- package/src/internal/cli-github.ts +13 -13
- package/src/internal/cli-mcp-oauth.ts +2 -2
- package/src/internal/cli-mcp.ts +4 -4
- package/src/internal/cli-skills.ts +1 -1
- package/src/internal/cloud-turn-cost.ts +20 -4
- package/src/internal/cursor/account-mcp.ts +5 -5
- package/src/internal/cursor/backend-client.ts +1 -1
- package/src/internal/cursor/github-credentials.ts +3 -3
- package/src/internal/cursor-account-mcp-auth.ts +1 -1
- package/src/internal/cursor-event-relay.ts +1 -1
- package/src/internal/cursor-relay-core.ts +1 -1
- package/src/internal/cursor-slack-relay.ts +1 -1
- package/src/internal/deploy-client.ts +8 -2
- package/src/internal/deploy-source.ts +2 -2
- package/src/internal/discovery.ts +2 -2
- package/src/internal/distribution.ts +6 -6
- package/src/internal/docs-site.ts +5 -5
- package/src/internal/eval-run-store.ts +8 -8
- package/src/internal/evals-client.ts +1 -1
- package/src/internal/github-fanout.ts +2 -2
- package/src/internal/host-files.ts +372 -0
- package/src/internal/host-platforms.ts +5 -5
- package/src/internal/hosting.ts +1 -1
- package/src/internal/http-channel.ts +30 -0
- package/src/internal/install-cursor-skills.ts +31 -3
- package/src/internal/local-control-plane.ts +2 -2
- package/src/internal/logs-client.ts +2 -2
- package/src/internal/mcp-endpoint.ts +1 -1
- package/src/internal/mcp-oauth.ts +2 -2
- package/src/internal/platform-schedule-sync.ts +2 -2
- package/src/internal/playground/toolchain.ts +6 -6
- package/src/internal/reminder-runner.ts +13 -13
- package/src/internal/resolved-connections.ts +6 -6
- package/src/internal/schedule-runner.ts +1 -1
- package/src/internal/sdk-runner.ts +5 -5
- package/src/internal/server.ts +16 -16
- package/src/internal/session-cost.ts +7 -6
- package/src/internal/session-engine.ts +141 -28
- package/src/internal/slack-provision-client.ts +1 -1
- package/src/internal/storage-coordinator.ts +7 -7
- package/src/internal/trajectory.ts +2 -2
- package/src/internal/turn-cost.ts +110 -0
- package/src/internal/update-check.ts +6 -6
- package/src/memory.ts +1 -1
- package/src/storage.ts +1 -1
- package/src/types.ts +148 -16
- package/dist/docs/assets/building-with-agents.md.CJCtZCyi.js +0 -13
- package/dist/docs/assets/chunks/@localSearchIndexroot.CbQshWFK.js +0 -1
- package/dist/docs/assets/concepts.md.Cfb9b-k1.js +0 -4
- package/dist/docs/assets/concepts.md.Cfb9b-k1.lean.js +0 -1
- package/dist/docs/assets/deployment.md.TecHo0_2.js +0 -55
- package/dist/docs/assets/deployment.md.TecHo0_2.lean.js +0 -1
- package/dist/docs/assets/evals.md.DYOjkRCX.lean.js +0 -1
- package/dist/docs/assets/example-agents_benny.md.B0gjhI-p.js +0 -7
- package/dist/docs/assets/example-agents_index.md.D2PEVSXl.js +0 -2
- package/dist/docs/assets/example-agents_index.md.D2PEVSXl.lean.js +0 -1
- package/dist/docs/assets/example-agents_oncall.md.BG_sUMly.js +0 -10
- package/dist/docs/assets/example-agents_slack-agent.md.buLbgvBf.js +0 -5
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.js +0 -24
- package/dist/docs/assets/example-agents_weather-agent.md.C9Qv-W0o.lean.js +0 -1
- package/dist/docs/assets/guides_cloud-runtime.md.gVzabdQL.js +0 -9
- package/dist/docs/assets/guides_mcp-oauth.md.Dd8EgSem.lean.js +0 -1
- package/dist/docs/assets/guides_slack.md.CjmJSvZS.js +0 -42
- package/dist/docs/assets/guides_slack.md.CjmJSvZS.lean.js +0 -1
- package/dist/docs/assets/index.md.CH_s5uZe.js +0 -20
- package/dist/docs/assets/index.md.CH_s5uZe.lean.js +0 -1
- package/dist/docs/assets/reference_cli.md.ccoKOoXt.js +0 -65
- package/dist/docs/assets/reference_http-api.md.BncLd3PZ.js +0 -11
- package/dist/docs/assets/storage.md.DRTdnFvd.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.CmQkmnzC.js +0 -1
- package/dist/internal/model-pricing.d.ts +0 -49
- package/dist/internal/model-pricing.d.ts.map +0 -1
- package/dist/internal/model-pricing.js +0 -377
- package/dist/playground/assets/index-CquRB-l0.js +0 -85
- package/dist/playground/assets/index-Dj0bWpkn.css +0 -1
- package/src/internal/model-pricing.ts +0 -426
- /package/dist/docs/assets/{example-agents_benny.md.B0gjhI-p.lean.js → example-agents_benny.md.2Et1qa8f.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_bugbot.md.DelIdhxB.lean.js → example-agents_bugbot.md.ByUexi5i.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_concierge.md.4rQTSMXt.lean.js → example-agents_concierge.md.lL8rhYlj.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_fsd.md.CzgUrDfi.lean.js → example-agents_fsd.md.DfNKQTHz.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_oncall.md.BG_sUMly.lean.js → example-agents_oncall.md.wFFXXEyW.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_security-reviewer.md.Dhj_m7_B.lean.js → example-agents_security-reviewer.md.Dkf1gyo6.lean.js} +0 -0
- /package/dist/docs/assets/{example-agents_slack-agent.md.buLbgvBf.lean.js → example-agents_slack-agent.md.DvgvT4nn.lean.js} +0 -0
- /package/dist/docs/assets/{guides_agent-to-agent.md.Bpzgq2Pq.lean.js → guides_agent-to-agent.md.Bmbxy-FA.lean.js} +0 -0
- /package/dist/docs/assets/{guides_cloud-runtime.md.gVzabdQL.lean.js → guides_cloud-runtime.md.BZ2GA7Es.lean.js} +0 -0
- /package/dist/docs/assets/{guides_github.md.DOOCpqsW.lean.js → guides_github.md.R2QlpR75.lean.js} +0 -0
- /package/dist/docs/assets/{guides_human-in-the-loop.md.DlUqsp1S.lean.js → guides_human-in-the-loop.md.BWvT7UqY.lean.js} +0 -0
- /package/dist/docs/assets/{guides_webhooks.md.wSOYas3X.lean.js → guides_webhooks.md.DiAwSR42.lean.js} +0 -0
- /package/dist/docs/assets/{hillclimbing.md.DHNast08.lean.js → hillclimbing.md.D9Y1_bYh.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BU6Iwi_9.lean.js → quickstart.md.TnEXYgYW.lean.js} +0 -0
- /package/dist/docs/assets/{reference_agent-config.md.DrW2JUM8.lean.js → reference_agent-config.md.kuN6-OxK.lean.js} +0 -0
- /package/dist/docs/assets/{reference_connections.md.B9Q3TOve.lean.js → reference_connections.md.DGqAsFXb.lean.js} +0 -0
- /package/dist/docs/assets/{reference_http-api.md.BncLd3PZ.lean.js → reference_http-api.md.CfVM_ICa.lean.js} +0 -0
- /package/dist/docs/assets/{reference_schedules.md.w_F2mXB6.lean.js → reference_schedules.md.gmfYzf_I.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.DLd6mvbv.lean.js → reference_sessions.md.C_ouF_uf.lean.js} +0 -0
- /package/dist/docs/assets/{reference_tools.md.BRSDnTbN.lean.js → reference_tools.md.BswAQM41.lean.js} +0 -0
|
@@ -111,13 +111,13 @@ state resumes from the Cursor SDK store.
|
|
|
111
111
|
|
|
112
112
|
## What goes into a local session workspace?
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
The Agent SDK creates a workspace before the first local turn:
|
|
115
115
|
|
|
116
116
|
| Source path | Lands as |
|
|
117
117
|
| ---------------------------------- | ----------------------------------------------------------------------- |
|
|
118
118
|
| `instructions.*` | `AGENTS.md` |
|
|
119
119
|
| `skills/*` | `.cursor/skills/<name>/SKILL.md` |
|
|
120
|
-
| agent tools (`execution: "agent"`) | scripts under `.
|
|
120
|
+
| agent tools (`execution: "agent"`) | scripts under `.agent-sdk/tools/`, with a catalog in `AGENTS.md` |
|
|
121
121
|
| `sandbox/workspace/**` | copied in as seed files |
|
|
122
122
|
| per-send `workspaceFiles` | written before the turn |
|
|
123
123
|
|
|
@@ -130,12 +130,12 @@ worktree.
|
|
|
130
130
|
See [Agent config: local cwd](./agent-config.md#local-cwd) for the
|
|
131
131
|
inheritance rules.
|
|
132
132
|
|
|
133
|
-
## Where does
|
|
133
|
+
## Where does the Agent SDK store session data?
|
|
134
134
|
|
|
135
135
|
Local state uses one directory tree:
|
|
136
136
|
|
|
137
137
|
```text
|
|
138
|
-
<project>/.
|
|
138
|
+
<project>/.agent-sdk/ # or <stateRoot>/<slug>/ under serve
|
|
139
139
|
sessions/<id>/session.json # metadata: channel, mode, principal, tokens
|
|
140
140
|
sessions/<id>/events.ndjson # the durable stream
|
|
141
141
|
sessions/<id>/workspace/ # the harness cwd
|
|
@@ -158,8 +158,8 @@ repositories whose parent rules shouldn't reach the agent. See
|
|
|
158
158
|
Use `trajectory` with a trace or session event file:
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
agent-sdk trajectory --events .agent-sdk/traces/<sessionId>.ndjson
|
|
162
|
+
agent-sdk trajectory --events <stateRoot>/<slug>/sessions/<id>/events.ndjson
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
The command prints tool calls, the reply, and token usage in the same
|
|
@@ -171,4 +171,4 @@ view.
|
|
|
171
171
|
- [HTTP API](./http-api.md)
|
|
172
172
|
- [Hooks](./hooks.md)
|
|
173
173
|
- [Live A/B metrics](../ab.md)
|
|
174
|
-
- [How
|
|
174
|
+
- [How the Agent SDK works](../concepts.md)
|
package/docs/reference/tools.md
CHANGED
|
@@ -108,7 +108,7 @@ printf '%s\\n' "$message"
|
|
|
108
108
|
});
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
On the local runtime, scripts land under `.
|
|
111
|
+
On the local runtime, scripts land under `.agent-sdk/tools/` in the
|
|
112
112
|
session workspace with a catalog in `AGENTS.md`. On cloud, the catalog
|
|
113
113
|
and script bodies travel on the first prompt.
|
|
114
114
|
|
|
@@ -159,9 +159,9 @@ From the CLI, which starts an ephemeral server unless `--url` targets
|
|
|
159
159
|
a running one:
|
|
160
160
|
|
|
161
161
|
```bash
|
|
162
|
-
|
|
162
|
+
agent-sdk call inspect_pr --dir . \
|
|
163
163
|
--input '{"prUrl":"https://github.com/acme/checkout/pull/42"}'
|
|
164
|
-
|
|
164
|
+
agent-sdk call inspect_pr \
|
|
165
165
|
--url http://127.0.0.1:3000/<slug> \
|
|
166
166
|
--input '{"prUrl":"https://github.com/acme/checkout/pull/42"}'
|
|
167
167
|
```
|
|
@@ -84,7 +84,7 @@ folder.
|
|
|
84
84
|
|
|
85
85
|
Cursor checks the project in this order:
|
|
86
86
|
|
|
87
|
-
1. Run `
|
|
87
|
+
1. Run `agent-sdk validate` and fix every error
|
|
88
88
|
2. Inspect the discovered surface with `info --json`
|
|
89
89
|
3. Call each server tool directly with validated sample input
|
|
90
90
|
4. Run one end-to-end model turn
|
|
@@ -93,7 +93,7 @@ Cursor checks the project in this order:
|
|
|
93
93
|
|
|
94
94
|
Validation, discovery, direct server-tool calls, and server startup work
|
|
95
95
|
without a Cursor credential. Model turns and evals need
|
|
96
|
-
`CURSOR_API_KEY` or a saved `
|
|
96
|
+
`CURSOR_API_KEY` or a saved `agent-sdk login`.
|
|
97
97
|
|
|
98
98
|
## What happens after the first agent works?
|
|
99
99
|
|
package/docs/storage.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Storage"
|
|
3
|
-
description: "Point
|
|
3
|
+
description: "Point the Agent SDK's durable storage at a backend you own with defineStorage."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Storage
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
The Agent SDK owns durable storage for sessions, continuation tokens,
|
|
9
9
|
reminders, playground eval history, and live A/B samples. It chooses the
|
|
10
10
|
keys (under `agentkit/v1/`), when to read and write, and how to restore
|
|
11
11
|
after restart.
|
|
@@ -22,7 +22,7 @@ for one machine; it does not survive replacing the host.
|
|
|
22
22
|
|
|
23
23
|
To keep the same framework storage across hosts, plug in a key-value
|
|
24
24
|
backend with `agent/storage.ts`. You provide `put` / `get` / `delete` /
|
|
25
|
-
`list`.
|
|
25
|
+
`list`. The Agent SDK does the rest.
|
|
26
26
|
|
|
27
27
|
```ts
|
|
28
28
|
// agent/storage.ts
|
|
@@ -86,7 +86,7 @@ follow-up arrives instead of at startup.
|
|
|
86
86
|
|
|
87
87
|
With `get` and `list`, serve can rebuild local state from your store:
|
|
88
88
|
|
|
89
|
-
- At startup,
|
|
89
|
+
- At startup, the Agent SDK loads recent sessions up to the restore caps.
|
|
90
90
|
Local disk wins when both sides have the same session. Reminders
|
|
91
91
|
hydrate the same way into `--state-root/reminders`.
|
|
92
92
|
- On demand, a missing continuation token resolves through the store
|
|
@@ -107,7 +107,7 @@ await ctx.host.kv.put("alert-memory/abc", { updated: "…" });
|
|
|
107
107
|
const prior = await ctx.host.kv.get("alert-memory/abc");
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
The Agent SDK prefixes author keys as `agentkit/v1/{agent}/kv/{key}` (same
|
|
111
111
|
bounded encoding as continuation tokens). Writes **await** the sink and
|
|
112
112
|
propagate errors — unlike session mirrors, which are at-most-once.
|
|
113
113
|
|
package/docs/troubleshooting.md
CHANGED
|
@@ -7,19 +7,19 @@ description: "Match what you see to a cause, then read a session trace when you
|
|
|
7
7
|
|
|
8
8
|
Start with four checks, in order:
|
|
9
9
|
|
|
10
|
-
1. Project discovery: `
|
|
10
|
+
1. Project discovery: `agent-sdk validate --dir .`
|
|
11
11
|
2. Whether the serve process is running
|
|
12
12
|
3. What the playground or HTTP API shows
|
|
13
13
|
4. The session event stream (trace)
|
|
14
14
|
|
|
15
|
-
Match your symptom below. Keep the commands as `
|
|
15
|
+
Match your symptom below. Keep the commands as `agent-sdk`; see
|
|
16
16
|
[Run the CLI](./README.md#run-the-cli) if you still need an alias.
|
|
17
17
|
|
|
18
18
|
## What if serve or the playground looks wrong?
|
|
19
19
|
|
|
20
20
|
| What you see | What to do |
|
|
21
21
|
| --- | --- |
|
|
22
|
-
| `serve` won't start | Run `
|
|
22
|
+
| `serve` won't start | Run `agent-sdk validate --dir .` and fix the reported errors. |
|
|
23
23
|
| Playground is blank or says there are no agents | The UI needs a running `serve` process. Building the playground assets alone is not enough. |
|
|
24
24
|
| Edits to the playground don't show up | Use `serve --dev` and open the printed playground HMR URL (often port `5273`), not only the static `:3000` URL. |
|
|
25
25
|
| Sessions exist on disk but the playground list is empty | The list shows sessions for the authenticated caller. In `--dev` on loopback the list is wider. Otherwise open `/<slug>/playground?sessionId=ses_…` or inspect `sessions/` under your state root. |
|
|
@@ -30,7 +30,7 @@ Match your symptom below. Keep the commands as `agentkit`; see
|
|
|
30
30
|
| What you see | What to do |
|
|
31
31
|
| --- | --- |
|
|
32
32
|
| Built-in file reads and greps fail; the turn retries for a long time | Run under Node 22.13+ (or `tsx`), never Bun. Look for `NGHTTP2_FRAME_SIZE_ERROR` in logs. |
|
|
33
|
-
| The turn fails immediately with an API-key error | Sign in with `
|
|
33
|
+
| The turn fails immediately with an API-key error | Sign in with `agent-sdk login`, or set `CURSOR_API_KEY`. Discovery, `info`, `call`, and serve bring-up work without a key; model turns need one. |
|
|
34
34
|
| Replies quote rules or `AGENTS.md` from outside your agent project | The session workspace inherited parent-folder config. Point `defineAgent({ local: { cwd } })` outside that tree, or set `--state-root` to a clean directory (for example under `/tmp`). |
|
|
35
35
|
| Server tools, skills, or workspace seed files never appear | The agent runtime is `cloud`. Those features apply on the local runtime. `validate` warns when this combination is present. |
|
|
36
36
|
| `validate` and `run` succeed, but typecheck fails in CI | The CLI runs TypeScript with type-stripping only. Keep tool `execute` return types as object literals or `type` aliases, not `interface` types. |
|
|
@@ -50,16 +50,17 @@ Match your symptom below. Keep the commands as `agentkit`; see
|
|
|
50
50
|
|
|
51
51
|
| What you see | What to do |
|
|
52
52
|
| --- | --- |
|
|
53
|
-
| `github forward` returns 401 on every delivery, but the hook was created | Clear `GITHUB_TOKEN` and `GH_TOKEN` for that command. The forwarder uses your `gh` CLI login: `GITHUB_TOKEN= GH_TOKEN=
|
|
53
|
+
| `github forward` returns 401 on every delivery, but the hook was created | Clear `GITHUB_TOKEN` and `GH_TOKEN` for that command. The forwarder uses your `gh` CLI login: `GITHUB_TOKEN= GH_TOKEN= agent-sdk github forward …` |
|
|
54
54
|
| `Hook already exists` when starting a forwarder | GitHub allows one forwarder per repo. Run a single `github forward --dir <parent>` and stop stale forwarders. |
|
|
55
55
|
| Deliveries rejected outside `--dev` | Set `GITHUB_WEBHOOK_SECRET` on the server and on the signer. Without a secret, the channel stays loopback-only. |
|
|
56
|
-
| You lack repo admin and can't forward | Use `
|
|
56
|
+
| You lack repo admin and can't forward | Use `agent-sdk github replay <pr-url>`. It needs pull access only and posts signed test payloads. |
|
|
57
57
|
|
|
58
58
|
## What if Slack stays quiet?
|
|
59
59
|
|
|
60
60
|
| What you see | What to do |
|
|
61
61
|
| --- | --- |
|
|
62
|
-
| Logs show `channel idle … missing credentials` | Expected when tokens are missing.
|
|
62
|
+
| Logs show `channel idle … missing credentials` | Expected when tokens are missing. Run `agent-sdk slack create --dir <agent>` to provision the app and write the tokens, or set `<PREFIX>_SLACK_BOT_TOKEN` and `<PREFIX>_SLACK_APP_TOKEN` per agent yourself, then run `agent-sdk slack doctor --prefix <PREFIX>`. |
|
|
63
|
+
| `slack create` reports the app needs admin approval | The workspace requires admin approval for new apps. A Slack workspace admin approves it at the printed link (in the dashboard: **Approve in Slack**), then re-run `agent-sdk slack create` (or **Retry** in the dashboard). |
|
|
63
64
|
| The bot ignores ordinary channel posts | Default engagement is mentions and DMs only. Enable `engagement.channelPosts` with an allowlist, and subscribe the app to `message.channels` / `message.groups`. |
|
|
64
65
|
| Approve / Deny buttons do nothing | Re-import a Slack app manifest with interactivity enabled. Channels that post approval cards need `toolApprovals: true` (and `interactivity: true` when you compose events by hand). |
|
|
65
66
|
|
|
@@ -67,8 +68,8 @@ Match your symptom below. Keep the commands as `agentkit`; see
|
|
|
67
68
|
|
|
68
69
|
| What you see | What to do |
|
|
69
70
|
| --- | --- |
|
|
70
|
-
| `must be defineConnection({ url, oauth: true })` | The connection file needs `oauth: true`, or you passed the wrong connection name to `
|
|
71
|
-
| Local auth works; hosted calls unauthorized | Run `
|
|
71
|
+
| `must be defineConnection({ url, oauth: true })` | The connection file needs `oauth: true`, or you passed the wrong connection name to `agent-sdk mcp oauth`. |
|
|
72
|
+
| Local auth works; hosted calls unauthorized | Run `agent-sdk mcp oauth <name> --store`, confirm names with `agent-sdk secrets list <slug>`, then redeploy. |
|
|
72
73
|
| Model asks for `mcp_auth` or IDE MCP for a privileged server | That connection is likely `hostOnly`. Call it from a host tool via `ctx.host.mcp`, and update instructions. |
|
|
73
74
|
|
|
74
75
|
See [Host MCP OAuth](./guides/mcp-oauth.md) and
|
|
@@ -96,7 +97,7 @@ If the model reads outside the session workspace, the prepared files
|
|
|
96
97
|
don't match what the instructions expect. Fix the layout. See
|
|
97
98
|
[Hillclimbing](./hillclimbing.md).
|
|
98
99
|
|
|
99
|
-
`
|
|
100
|
+
`agent-sdk trajectory --events <file>` summarizes any saved NDJSON
|
|
100
101
|
stream. The playground **Open trace** control does the same visually.
|
|
101
102
|
|
|
102
103
|
## What's next
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cursor/july",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32",
|
|
4
4
|
"description": "(early alpha) Filesystem-first framework for defining Cursor agents as markdown and TypeScript and serving them over channels with the Cursor SDK.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"repository": {
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
"types": "./dist/index.d.ts",
|
|
15
15
|
"bin": {
|
|
16
16
|
"july": "./dist/bin/agent-serve.js",
|
|
17
|
+
"agent-sdk": "./dist/bin/agent-serve.js",
|
|
18
|
+
"agentsdk": "./dist/bin/agent-serve.js",
|
|
17
19
|
"agentkit": "./dist/bin/agent-serve.js",
|
|
18
20
|
"agent-serve": "./dist/bin/agent-serve.js"
|
|
19
21
|
},
|
|
@@ -191,7 +193,7 @@
|
|
|
191
193
|
}
|
|
192
194
|
},
|
|
193
195
|
"scripts": {
|
|
194
|
-
"build": "tsgo -p tsconfig.build.json && pnpm run build:playground && pnpm run docs:build",
|
|
196
|
+
"build": "tsgo -p tsconfig.build.json && node scripts/bundle-publish-shims.mjs && pnpm run build:playground && pnpm run docs:build",
|
|
195
197
|
"build:playground": "vite build --config playground/vite.config.ts",
|
|
196
198
|
"build:playground:central": "vite build --mode central --config playground/vite.config.ts",
|
|
197
199
|
"dev:playground": "vite --config playground/vite.config.ts",
|
|
@@ -227,6 +229,7 @@
|
|
|
227
229
|
"zod-to-json-schema": "^3.24.5"
|
|
228
230
|
},
|
|
229
231
|
"devDependencies": {
|
|
232
|
+
"@anysphere/agent-store-sync": "workspace:*",
|
|
230
233
|
"@anysphere/ui": "workspace:*",
|
|
231
234
|
"@base-ui/react": "1.6.0",
|
|
232
235
|
"@stylexjs/stylex": "0.18.3",
|
package/skills/ab/SKILL.md
CHANGED
|
@@ -7,11 +7,11 @@ description: >-
|
|
|
7
7
|
comparison; use defineEval for regression gates.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# Agent SDK A/B metrics (`defineAB`)
|
|
11
11
|
|
|
12
12
|
`defineAB` is a **live metrics plug-in**. At session creation the engine runs
|
|
13
13
|
`split` and appends durable `ab.assigned` events; the collector folds the
|
|
14
|
-
session event stream and calls `onSample`. There is **no** `
|
|
14
|
+
session event stream and calls `onSample`. There is **no** `agent-sdk ab`
|
|
15
15
|
CLI and **no** assertion API.
|
|
16
16
|
|
|
17
17
|
Human-facing reference: [`docs/ab.md`](../../docs/ab.md).
|
|
@@ -20,7 +20,7 @@ Human-facing reference: [`docs/ab.md`](../../docs/ab.md).
|
|
|
20
20
|
| --- | --- | --- |
|
|
21
21
|
| Job | Regression gates on frozen fixtures | Collect metrics on live runs |
|
|
22
22
|
| Location | `evals/**/*.eval.ts` | `agent/ab.ts` or `agent/ab/<name>.ts` |
|
|
23
|
-
| How it runs | `
|
|
23
|
+
| How it runs | `agent-sdk eval` | Automatically under `serve` / `run` |
|
|
24
24
|
| Driver | `t.send` + gates | `split` → `ab.assigned` + `onSample` |
|
|
25
25
|
|
|
26
26
|
## Authoring
|
|
@@ -101,9 +101,9 @@ mirror, not a metrics store. After park/restart it replays `events.ndjson` to
|
|
|
101
101
|
rebuild counters without re-firing `onSample`.
|
|
102
102
|
|
|
103
103
|
**Evals are separate:** the eval harness creates sessions with
|
|
104
|
-
`purpose: "eval"` (playground Evals / `
|
|
104
|
+
`purpose: "eval"` (playground Evals / `agent-sdk eval`). Those skip
|
|
105
105
|
enrollment entirely — no `ab.assigned`, no `onSample`, omitted from
|
|
106
|
-
`GET /v1/abs`. Ordinary chat / `
|
|
106
|
+
`GET /v1/abs`. Ordinary chat / `agent-sdk run` / Slack stay `"live"`.
|
|
107
107
|
Do not use `splitIf` to filter evals; the framework already does.
|
|
108
108
|
|
|
109
109
|
After enrollment, arms are on `session.abs` (experiment → variant | `null`)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentkit-create-agent
|
|
3
3
|
description: >-
|
|
4
|
-
Scaffold a new
|
|
4
|
+
Scaffold a new Agent SDK agent through a guided AskQuestion interview —
|
|
5
5
|
purpose, name, runtime, model, channels, MCP connections, capabilities —
|
|
6
6
|
then verify it serves and hand off to hillclimbing. Read this skill when
|
|
7
7
|
creating a new agent.
|
|
@@ -9,7 +9,7 @@ paths:
|
|
|
9
9
|
- packages/agent-serve/**/*
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
# Create an
|
|
12
|
+
# Create an Agent SDK agent
|
|
13
13
|
|
|
14
14
|
Stand up one new agent project via a short interview, scaffold it, get
|
|
15
15
|
channels working
|
|
@@ -22,9 +22,9 @@ for iteration once the agent runs.
|
|
|
22
22
|
Read `framework-map/SKILL.md` first if you haven't; treat the package
|
|
23
23
|
`AGENTS.md` and `README.md` as ground truth for
|
|
24
24
|
framework behavior. Run the CLI with Node, never Bun (Bun corrupts harness
|
|
25
|
-
tool-result streams): use the installed `
|
|
25
|
+
tool-result streams): use the installed `agent-sdk` bin, or from a source
|
|
26
26
|
checkout `pnpm exec tsx src/bin/agent-serve.ts <command> …` — written as
|
|
27
|
-
`
|
|
27
|
+
`agent-sdk …` below.
|
|
28
28
|
|
|
29
29
|
## Interview
|
|
30
30
|
|
|
@@ -97,7 +97,7 @@ Defaults that make first cuts good:
|
|
|
97
97
|
`prompt\`…\`` / `prompt.lines\`…\`` from `@cursor/july` (dedents indented
|
|
98
98
|
multi-line strings).
|
|
99
99
|
- **Env prefix** for Slack tokens = upper-snake slug (`my-agent` →
|
|
100
|
-
`MY_AGENT_SLACK_*`); `
|
|
100
|
+
`MY_AGENT_SLACK_*`); `agent-sdk slack init` derives it for you.
|
|
101
101
|
Dedicated-app path only — the Cursor-hosted connection has no tokens.
|
|
102
102
|
- **Host prep beats model wandering — for evidence, not judgment.** When the
|
|
103
103
|
purpose has a deterministic setup step (fetch a PR, seed files), do it in
|
|
@@ -135,7 +135,7 @@ Two smells to check before scaffolding and again before hand-off:
|
|
|
135
135
|
## Scaffold
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
|
|
138
|
+
agent-sdk init ./<slug>
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
`init` writes `package.json` (with `typescript` dev deps and a
|
|
@@ -159,7 +159,7 @@ plan:
|
|
|
159
159
|
short hand-written `agent/channels/slack.ts`
|
|
160
160
|
(`slackChannel({ cursorAccount: true, agentName: "<Name>" })` — no
|
|
161
161
|
tokens, no manifests); for a dedicated Socket Mode app do not hand-write
|
|
162
|
-
the channel — `
|
|
162
|
+
the channel — `agent-sdk slack init --dir ./<slug> --name "<Name>"`
|
|
163
163
|
generates `agent/channels/slack.ts` (with the env prefix) plus manifests
|
|
164
164
|
and `env.example`; customize the generated file (e.g. `suggestedPrompts`)
|
|
165
165
|
afterwards.
|
|
@@ -172,7 +172,7 @@ plan:
|
|
|
172
172
|
(case id = file path, or `<fileId>/<case.id>`). Full assertion API and
|
|
173
173
|
fixture strategy: `evals/SKILL.md` (sibling skill).
|
|
174
174
|
|
|
175
|
-
Stick to deps
|
|
175
|
+
Stick to deps the Agent SDK already
|
|
176
176
|
ships (`zod`, `@modelcontextprotocol/sdk`, `tsx`); a new npm dep needs its own
|
|
177
177
|
install story and is a smell for a first cut.
|
|
178
178
|
|
|
@@ -182,10 +182,10 @@ No API key needed for the structural half — run these first and fix every
|
|
|
182
182
|
error diagnostic:
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
agent-sdk validate --dir ./<slug> # zero errors (warnings explain runtime mismatches)
|
|
186
|
+
agent-sdk info --dir ./<slug> --json # surface matches the plan
|
|
187
|
+
agent-sdk call <tool> --dir ./<slug> --input '{…}' # server tools, deterministic, no model
|
|
188
|
+
agent-sdk eval --dir ./<slug> --list
|
|
189
189
|
npx tsc --noEmit -p ./<slug> # or the project's own type-check task
|
|
190
190
|
```
|
|
191
191
|
|
|
@@ -202,10 +202,10 @@ is forthcoming, finish every key-free check, confirm `run` fails with only
|
|
|
202
202
|
the clean API-key error, and hand these to the user as their next steps:
|
|
203
203
|
|
|
204
204
|
```bash
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
agent-sdk run --dir ./<slug> --message "<fixture prompt>" # JSON trajectory
|
|
206
|
+
agent-sdk serve --dir ./<slug> --dev
|
|
207
207
|
# playground: http://127.0.0.1:3000/<slug>/playground
|
|
208
|
-
|
|
208
|
+
agent-sdk eval --dir ./<slug>
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
Serve only the new agent's directory during bring-up — pointing `serve` at a
|
|
@@ -221,7 +221,7 @@ it, verify with doctor commands, and smoke-test before declaring victory.
|
|
|
221
221
|
|
|
222
222
|
- **Slack** — follow `packages/agent-serve/skills/setup-slack/SKILL.md` end
|
|
223
223
|
to end, starting from its Step 0 connection gate. Cursor-hosted: sign in
|
|
224
|
-
(`
|
|
224
|
+
(`agent-sdk login` / `CURSOR_API_KEY`) → serve → `@Cursor <AgentName>`
|
|
225
225
|
smoke. Dedicated app: init → human creates apps → doctor → `@mention`
|
|
226
226
|
smoke.
|
|
227
227
|
- **GitHub** — follow `packages/agent-serve/skills/github/SKILL.md`
|
|
@@ -251,7 +251,7 @@ at the smoke run's session (`.agent-serve/<slug>/sessions/<id>/events.ndjson`
|
|
|
251
251
|
or the trace under `.agent-serve/traces/`) as the baseline measurement — or,
|
|
252
252
|
when no API key was available, name the user's first real turn as the
|
|
253
253
|
baseline instead. For GitHub agents, snapshot replay fixtures now
|
|
254
|
-
(`
|
|
254
|
+
(`agent-sdk github replay ... --dry-run --out fixtures/github`) so the
|
|
255
255
|
loop starts deterministic.
|
|
256
256
|
|
|
257
257
|
## Working agreements
|
package/skills/debug/SKILL.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentkit-debug
|
|
3
3
|
description: >-
|
|
4
|
-
Diagnose a misbehaving
|
|
4
|
+
Diagnose a misbehaving Agent SDK agent, server, or playground — blank
|
|
5
5
|
playground, sessions missing, HMR not reloading, failing reads/retry
|
|
6
6
|
loops, webhook 401s, 403/409 responses, approvals or reminders lost,
|
|
7
|
-
orphaned processes. Use when an
|
|
7
|
+
orphaned processes. Use when an Agent SDK project runs but behaves
|
|
8
8
|
wrong locally.
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
# Debugging
|
|
11
|
+
# Debugging the Agent SDK locally
|
|
12
12
|
|
|
13
13
|
Read `framework-map/SKILL.md` (sibling skill) first if you don't know the
|
|
14
14
|
project structure or session model. Everything below assumes Node/tsx (`pnpm exec tsx
|
|
@@ -18,7 +18,7 @@ src/bin/agent-serve.ts ...` in the everysphere monorepo).
|
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
# 1. Is discovery clean? serve refuses to start on error diagnostics.
|
|
21
|
-
|
|
21
|
+
agent-sdk validate --dir <project>
|
|
22
22
|
|
|
23
23
|
# 2. What is actually running, and where?
|
|
24
24
|
lsof -iTCP:3000 -sTCP:LISTEN; lsof -iTCP:5273 -sTCP:LISTEN
|
|
@@ -37,11 +37,11 @@ curl -sN 'localhost:3000/<slug>/v1/session/<id>/stream?startIndex=0' | head -50
|
|
|
37
37
|
|
|
38
38
|
| Symptom | Cause / fix |
|
|
39
39
|
| --- | --- |
|
|
40
|
-
| Playground blank or "no agents" even though Vite assets are built | The SPA is static; it needs the
|
|
40
|
+
| Playground blank or "no agents" even though Vite assets are built | The SPA is static; it needs the Agent SDK backend on `:3000`. Start `serve` — building `dist/playground/` alone serves nothing. |
|
|
41
41
|
| Edits under `playground/src` don't show up in the browser | You're on the **static** `dist/playground` bundle, not HMR. Only `serve --dev` / `dev` starts Vite HMR (`:5273`) and prints that as `playground` — open that URL, not `:3000`. In the monorepo, `mise //packages/agent-serve:start` = all examples + multi-agent HMR; pin one slug with `AGENT_SERVE_BASE=/<slug>`. |
|
|
42
42
|
| Webhook / schedule sessions exist on disk but the playground session list is empty | The list shows the calling principal's sessions. `--dev` (loopback) or `--allow-anonymous` (trusted shared host) switches it to `includeAll`. Otherwise deep-link `/<slug>/playground?sessionId=ses_...` or read `sessions/` on disk. |
|
|
43
43
|
| Every built-in read/grep the model makes fails; turns crawl through retry loops | You ran the CLI under **Bun**. Kill it, rerun under Node/tsx. (`NGHTTP2_FRAME_SIZE_ERROR` in SDK logs is the tell.) |
|
|
44
|
-
| `gh webhook forward` / `
|
|
44
|
+
| `gh webhook forward` / `agent-sdk github forward` deliveries all 401 — but hook creation succeeded | `GITHUB_TOKEN`/`GH_TOKEN` in the env. The relay authenticates with the gh CLI login and rejects env tokens. `GITHUB_TOKEN= GH_TOKEN= agent-sdk github forward ...` |
|
|
45
45
|
| `Hook already exists` starting a forwarder | GitHub allows one forwarder per repo. Use one `github forward --dir <parent>` (it fans out to every matching channel) instead of N processes; kill stale forwarders. |
|
|
46
46
|
| Agent's answers reference monorepo rules / AGENTS.md it shouldn't know | Session workspace sits inside the monorepo, so the harness loaded ancestor config. `defineAgent({ local: { cwd } })` outside the repo, or `--state-root` under `/tmp`. |
|
|
47
47
|
| Port 3000/5273 in use; stray processes after crashes | `lsof -iTCP:3000 -sTCP:LISTEN`, kill the pids; also check companion processes (e.g. vite). |
|
|
@@ -49,12 +49,12 @@ curl -sN 'localhost:3000/<slug>/v1/session/<id>/stream?startIndex=0' | head -50
|
|
|
49
49
|
| Schedule / reminder never fires under `--dev` | Dev never auto-fires. `POST /<slug>/v1/dev/schedules/<id>` or `POST /<slug>/v1/dev/reminders/<id>` (list at `GET /v1/dev/reminders`). |
|
|
50
50
|
| Reminder disarmed after restart with `handler_lost_on_restart` | `run`-handler reminders are in-memory; re-arm them from the code path that created them (enroll hook / policy), or use prompt-based reminders. |
|
|
51
51
|
| `409` on a follow-up | Stale `continuationToken` (each accepted follow-up rotates it), busy session, or a task/schedule session (not followable). |
|
|
52
|
-
| `409 session_busy` on `
|
|
52
|
+
| `409 session_busy` on `agent-sdk call --session` | Session-bound deterministic calls serialize with model turns; wait or use an ephemeral call (drop `--session`). |
|
|
53
53
|
| `403` on stream/follow-up | Caller principal ≠ session owner. In dev, create and inspect with the same auth; beyond loopback pass `--bearer-token` and send it. |
|
|
54
54
|
| Works on localhost, 401/blocked through a tunnel or LAN | Default `localDevStrict()` auth only admits direct loopback, **rejects proxy-forwarding headers** (`X-Forwarded-For`, ...), and requires a loopback `Host`. Use `--bearer-token <secret>` (or authored `bearerAuth`) — `--allow-anonymous` only for trusted-network demos (and never with Cursor account MCP connections). |
|
|
55
55
|
| Channel route won't compile: body/query schema type error | `GET` requires a Zod `querySchema`, `POST`/`PUT`/`PATCH` a Zod `bodySchema` — plain JSON Schema objects don't type-check. Use `z.object({})` / `z.unknown()` for open surfaces. Empty POST bodies are coerced to `{}` before validation. |
|
|
56
|
-
| Slack channel prints `channel idle ... missing credentials` | Expected: tokens absent (dedicated-app path). Multi-agent needs `<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN` per agent. `
|
|
57
|
-
| `serve` fails: `Slack channels using the Cursor account connection ... not signed in to Cursor` | Cursor-hosted Slack (`cursorAccount: true`) needs a signed-in host: `
|
|
56
|
+
| Slack channel prints `channel idle ... missing credentials` | Expected: tokens absent (dedicated-app path). Multi-agent needs `<PREFIX>_SLACK_BOT_TOKEN` + `<PREFIX>_SLACK_APP_TOKEN` per agent. `agent-sdk slack doctor --prefix <PREFIX>`. |
|
|
57
|
+
| `serve` fails: `Slack channels using the Cursor account connection ... not signed in to Cursor` | Cursor-hosted Slack (`cursorAccount: true`) needs a signed-in host: `agent-sdk login` or `CURSOR_API_KEY`. No Slack tokens exist on this path — `slack doctor` doesn't apply. |
|
|
58
58
|
| `@Cursor <name>` in Slack gets Cursor's normal agent, not yours | Agent name mismatch or host not relaying. Names are single-token and matched case-insensitively; confirm the serve log `cursor-slack: relaying Slack for <AgentName>` and that the workspace's Cursor Slack integration is linked to the signed-in account. |
|
|
59
59
|
| Turn fails immediately with an API-key error | Model turns need `CURSOR_API_KEY`; everything structural (validate/info/call/serve bring-up) doesn't. |
|
|
60
60
|
| Server tools / skills / sandbox silently absent | Runtime is `cloud` — those are local-only. `validate` prints exactly this warning; read it. |
|
|
@@ -69,5 +69,5 @@ curl -sN 'localhost:3000/<slug>/v1/session/<id>/stream?startIndex=0' | head -50
|
|
|
69
69
|
preempted it — that's the designed behavior, not a crash.
|
|
70
70
|
- Escapes outside the session workspace in read/grep paths mean the
|
|
71
71
|
harness is fighting your evidence layout, not that the model is broken.
|
|
72
|
-
- `
|
|
72
|
+
- `agent-sdk trajectory --events <file>` renders any saved NDJSON; the
|
|
73
73
|
playground "Open trace" does the same visually.
|
package/skills/evals/SKILL.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentkit-evals
|
|
3
3
|
description: >-
|
|
4
|
-
Author and run
|
|
4
|
+
Author and run Agent SDK defineEval cases (single- or multi-datapoint).
|
|
5
5
|
Use when writing, fixing, seeding, or hillclimbing evals; AskQuestion
|
|
6
6
|
whether to generate samples or upload data. Materialize API-backed
|
|
7
7
|
fixtures first. Live A/B metrics: defineAB (skills/ab), not defineEval.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# Agent SDK evals
|
|
11
11
|
|
|
12
12
|
Evals are the ratchet that makes iteration trustworthy: a fixed input, a
|
|
13
13
|
model turn, and gates over the recorded trajectory. They live at the
|
|
@@ -29,13 +29,13 @@ and does not replace `defineEval` gates.
|
|
|
29
29
|
(`evals/weather.eval.ts` + `{ id: "nyc" }` → `weather/nyc`).
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
agent-sdk eval --dir . --list # all datapoints
|
|
33
|
+
agent-sdk eval --dir . --json # run all
|
|
34
|
+
agent-sdk eval --dir . weather/nyc # one datapoint
|
|
35
|
+
agent-sdk eval --dir . weather # every datapoint in that file
|
|
36
|
+
agent-sdk eval --dir . weather forecast # several files
|
|
37
|
+
agent-sdk eval --dir . --tag smoke
|
|
38
|
+
agent-sdk eval --dir . --verbose
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
`eval` (like `run`) boots an ephemeral server on port 0 with a temp state
|
|
@@ -65,7 +65,7 @@ If `AskQuestion` is unavailable, ask the same fork in plain chat and wait.
|
|
|
65
65
|
|
|
66
66
|
Tell the user the **shape** of the data (see “The API” below) and **how to
|
|
67
67
|
upload it**. Do not invent cases until they provide files (or paste content
|
|
68
|
-
to write). After they add data, run `
|
|
68
|
+
to write). After they add data, run `agent-sdk eval --dir <project>
|
|
69
69
|
--list` to confirm discovery, then wire any missing gates.
|
|
70
70
|
|
|
71
71
|
If the uploaded data is **API-backed** (PR URLs, pinned SHAs, gold labels,
|
|
@@ -79,7 +79,7 @@ fixtures first** — see “When eval data needs API calls to render” below.
|
|
|
79
79
|
3. Optional fixtures beside the case or under `fixtures/`.
|
|
80
80
|
4. Tell the agent once the files are in place — or paste case bodies in chat
|
|
81
81
|
and ask the agent to write the file.
|
|
82
|
-
5. Verify: `
|
|
82
|
+
5. Verify: `agent-sdk eval --dir <project> --list` shows the new ids.
|
|
83
83
|
|
|
84
84
|
### Step 2b — user chose agent-generated samples
|
|
85
85
|
|
|
@@ -95,7 +95,7 @@ fixtures first** — see “When eval data needs API calls to render” below.
|
|
|
95
95
|
3. **Append** — prefer adding entries to an existing file’s `cases` array
|
|
96
96
|
when the suite fits; otherwise create a new `evals/<suite>.eval.ts` with
|
|
97
97
|
`cases`. Never overwrite or weaken an existing datapoint. Case ids must
|
|
98
|
-
not collide with `
|
|
98
|
+
not collide with `agent-sdk eval --dir <project> --list`.
|
|
99
99
|
4. Create `evals/evals.config.ts` if missing (`maxConcurrency: 20` is fine
|
|
100
100
|
for now; hard limit 200 for model provider request limits).
|
|
101
101
|
5. Re-list to confirm, then optionally run `--tag smoke` if you tagged any.
|
|
@@ -206,7 +206,7 @@ input instead — see fixtures).
|
|
|
206
206
|
| Agent surface | Fixture source |
|
|
207
207
|
| --- | --- |
|
|
208
208
|
| Chat / domain assistant | A canonical prompt string, chosen once and frozen |
|
|
209
|
-
| Tool-heavy | `
|
|
209
|
+
| Tool-heavy | `agent-sdk call <tool> --dir . --input '{...}'` first, then the prompt that should trigger it |
|
|
210
210
|
| GitHub webhook | `github replay … --dry-run --out fixtures/github` (see `packages/agent-serve/skills/github/SKILL.md`) |
|
|
211
211
|
| PR reviewer with host prep | A small fixed PR the team controls; assert on findings shape, not counts |
|
|
212
212
|
| Workspace-dependent | `workspaceFiles` in `t.send` — never machine-local paths |
|
|
@@ -4,10 +4,10 @@ description: >-
|
|
|
4
4
|
Orientation for @cursor/july — folder structure, local vs cloud
|
|
5
5
|
runtimes, sessions, state layout, and invariants (Node not Bun, root
|
|
6
6
|
evals/, typecheck after tsx). Use when creating, editing, or running
|
|
7
|
-
|
|
7
|
+
Agent SDK projects with agent/agent.ts and agent/instructions.md.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# Agent SDK framework map
|
|
11
11
|
|
|
12
12
|
`@cursor/july` serves agents defined as ordinary files: markdown
|
|
13
13
|
for prose, TypeScript for typed behavior, under an `agent/` directory. The
|
|
@@ -16,7 +16,7 @@ over HTTP/Slack/GitHub channels, with the Cursor SDK + harness as the
|
|
|
16
16
|
execution engine. Ground truth is the package `README.md` (full reference)
|
|
17
17
|
and `AGENTS.md` (coding-agent loop) — this skill is the map, not the spec.
|
|
18
18
|
|
|
19
|
-
Run the CLI as `
|
|
19
|
+
Run the CLI as `agent-sdk <cmd>`. In the everysphere monorepo there is no
|
|
20
20
|
installed bin — use:
|
|
21
21
|
|
|
22
22
|
```bash
|
package/skills/github/SKILL.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agentkit-github
|
|
3
3
|
description: >-
|
|
4
|
-
Build and test GitHub-webhook-driven
|
|
4
|
+
Build and test GitHub-webhook-driven Agent SDK agents: githubChannel
|
|
5
5
|
hooks (auth turn vs host task), signature modes, and testing tiers
|
|
6
6
|
(fixtures, github replay, github forward, serve --cursor-events). Use
|
|
7
7
|
when wiring GitHub events, replaying PR webhooks, or debugging delivery.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# GitHub channels in
|
|
10
|
+
# GitHub channels in the Agent SDK
|
|
11
11
|
|
|
12
12
|
Author `agent/channels/github.ts` with `githubChannel()` from
|
|
13
13
|
`@cursor/july/channels/github`. It mounts
|
|
@@ -47,7 +47,7 @@ the model should reason about the event.
|
|
|
47
47
|
|
|
48
48
|
- **`cursorAccount`** → the signed-in Cursor principal supplies both the SCM
|
|
49
49
|
event stream and a short-lived, repo-scoped GitHub credential. It works in
|
|
50
|
-
local dev (`
|
|
50
|
+
local dev (`agent-sdk login`) and hosted deployments (`CURSOR_API_KEY`).
|
|
51
51
|
`ctx.github`, `ctx.host.github`, and child `gh` commands share the lease.
|
|
52
52
|
Use `{ repos: ["owner/repo"] }`, or `true` with `serve --cursor-events
|
|
53
53
|
--repo owner/repo`. One host credential covers up to 20 repositories under
|
|
@@ -81,9 +81,9 @@ is fine here), synthesizes GitHub-shaped payloads, signs them when a secret
|
|
|
81
81
|
is configured, and POSTs them at the channel. Fully deterministic.
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
agent-sdk github replay https://github.com/owner/repo/pull/123 --dir <project>
|
|
85
|
+
agent-sdk github replay owner/repo#123 --dir <project> --events '*' --conclusion failure
|
|
86
|
+
agent-sdk github replay owner/repo#123 --dir <project> --events '*' --dry-run --out fixtures/github
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
`--events` defaults to `pull_request` (`'*'` = the channel's declared
|
|
@@ -96,9 +96,9 @@ Wraps `gh webhook forward`: registers a real webhook and relays deliveries
|
|
|
96
96
|
to loopback. URL + events auto-derived; repo inferred from the git remote.
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
GITHUB_TOKEN= GH_TOKEN=
|
|
99
|
+
agent-sdk github doctor --install # one-time: gh + cli/gh-webhook
|
|
100
|
+
agent-sdk github events --dir <parent> --json # what would be forwarded
|
|
101
|
+
GITHUB_TOKEN= GH_TOKEN= agent-sdk github forward --dir <project>
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
Traps, in order of hours lost:
|
|
@@ -121,11 +121,11 @@ Traps, in order of hours lost:
|
|
|
121
121
|
### 4. `serve --cursor-events` — pull from Cursor (`/v0/scm-events`)
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
|
-
|
|
124
|
+
agent-sdk serve --dir <project> --cursor-events --repo owner/repo
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Reads the stream as the host's Cursor user, so it **requires sign-in**
|
|
128
|
-
(`
|
|
128
|
+
(`agent-sdk login` / `CURSOR_API_KEY`) — `serve` refuses to start signed
|
|
129
129
|
out instead of running a relay that can never receive events. No public URL
|
|
130
130
|
or repo admin. Registers before consuming; offset + consumer id under
|
|
131
131
|
`<state-root>/cursor-events/`. `CURSOR_API_BASE_URL` for a non-default
|