@cursor/bdk 0.2.14 → 0.2.15
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 +51 -52
- package/README.md +1 -1
- package/dist/bin/agent-sdk.js +0 -0
- package/dist/bin/agent-serve.js +0 -0
- package/dist/channels/slack/attachments.d.ts +2 -0
- package/dist/channels/slack/attachments.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +17 -5
- package/dist/channels/slack/channel-watch.d.ts +4 -2
- package/dist/channels/slack/channel-watch.d.ts.map +1 -1
- package/dist/channels/slack/channel-watch.js +4 -2
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +4 -2
- package/dist/channels/slack/types.d.ts +6 -4
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/connections.d.ts +29 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +54 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BN3sgOOo.js → app.CRMxF0qX.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.Df87rAe1.js → building-with-agents.md.Bi9CQ-bR.js} +3 -3
- package/dist/docs/assets/{building-with-agents.md.Df87rAe1.lean.js → building-with-agents.md.Bi9CQ-bR.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.BZwvb2LN.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CbA00dML.js → VPLocalSearchBox.C4BiQe53.js} +1 -1
- package/dist/docs/assets/chunks/{arc.Byug8CZM.js → arc.D1TA2Mxn.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.D1_qmnQy.js → architectureDiagram-Q4EWVU46.CA-hBJCN.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.Dj-Nurf-.js → baseUniq.CzsSgiab.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BZwq3EIg.js → blockDiagram-DXYQGD6D.sxrH_f0l.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.dx75urO7.js → c4Diagram-AHTNJAMY.D_Z3mqAl.js} +1 -1
- package/dist/docs/assets/chunks/channel.D7DtboxW.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CIoddsDQ.js → chunk-4BX2VUAB.BS6_uTUf.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.O3VsVBES.js → chunk-4TB4RGXK.D-URAeTU.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.WNNWh0Pe.js → chunk-55IACEB6.b4SZc5kO.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BKVQwEME.js → chunk-EDXVE4YY.DLKEEDkN.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Cv5iBz7A.js → chunk-FMBD7UC4.3SyQHgpY.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.wCDCToee.js → chunk-OYMX7WX6.DBKKaFeS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D3IGXhXA.js → chunk-QZHKN3VN.BhCYeR7H.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CAPPh-E7.js → chunk-YZCP3GAM.Cpg0VgI7.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.irslOV8B.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.irslOV8B.js +1 -0
- package/dist/docs/assets/chunks/clone.DosLeDYL.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BQCFH3M5.js → cose-bilkent-S5V4N54A.4q0YNZN6.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.lHmdrh7L.js → dagre-KV5264BT.Bk_CcQPr.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.EtSPnHgD.js → diagram-5BDNPKRD.CgreoM_Z.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DCyUnQT8.js → diagram-G4DWMVQ6.DlZGpm6W.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5._E0Qqblb.js → diagram-MMDJMWI5.BxtXxgIR.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BDj4oyy_.js → diagram-TYMM5635.DSzlJp2D.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.CrvnO6a3.js → erDiagram-SMLLAGMA.BN1YUmEV.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DIhYc-2F.js → flowDiagram-DWJPFMVM.B61NGNYu.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.hFqm_vio.js → ganttDiagram-T4ZO3ILL.DR-tto3M.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.N3GDaVDD.js → gitGraphDiagram-UUTBAWPF.CBPs2W_2.js} +1 -1
- package/dist/docs/assets/chunks/{graph.DK28rMBx.js → graph.DmlaqzCE.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DHmE6W9M.js → infoDiagram-42DDH7IO.obPv-fFg.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ByUJuOYm.js → ishikawaDiagram-UXIWVN3A.CXHTUcM3.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BIUChFMh.js → journeyDiagram-VCZTEJTY.BoVHerYZ.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CNgFXwo-.js → kanban-definition-6JOO6SKY.CfYmPHZg.js} +1 -1
- package/dist/docs/assets/chunks/{layout.BDnwE4ET.js → layout.621UdAhB.js} +1 -1
- package/dist/docs/assets/chunks/{linear.DmrYLXFs.js → linear.Cz_zRKjr.js} +1 -1
- package/dist/docs/assets/chunks/{min.BbYcWakN.js → min.ON4GjCH7.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.C9x-klkv.js → mindmap-definition-QFDTVHPH.DLPMLJlv.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.iufpEbi0.js → pieDiagram-DEJITSTG.BFp11AYt.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DdoXbWL9.js → quadrantDiagram-34T5L4WZ.ChX7xo6B.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.XL1-_pNk.js → requirementDiagram-MS252O5E.DbKtHG_Q.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DySXofNs.js → sankeyDiagram-XADWPNL6.Spw8tv-7.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cp0GZoOU.js → sequenceDiagram-FGHM5R23.BYso9LlE.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DvK-sXUX.js → stateDiagram-FHFEXIEX.D8l54jqW.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CAYMmzGj.js +1 -0
- package/dist/docs/assets/chunks/{theme.Clup4iIo.js → theme.m_Ethbkv.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.gHI9ZLm6.js → timeline-definition-GMOUNBTQ.BLdhhyy9.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.G2N2zXYe.js → vennDiagram-DHZGUBPP.CyGT2F_P.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C46G0P5a.js → wardley-RL74JXVD.C5JJS3bh.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BgUKEagd.js → wardleyDiagram-NUSXRM2D.p_Sz9p1i.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CwH7oege.js → xychartDiagram-5P7HB3ND.DtXsNUaf.js} +1 -1
- package/dist/docs/assets/deployment.md.hKKN9I4c.js +31 -0
- package/dist/docs/assets/{deployment.md.BYuEcDBv.lean.js → deployment.md.hKKN9I4c.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.C851kViu.js → evals.md.CHR34K1Y.js} +3 -7
- package/dist/docs/assets/{evals.md.C851kViu.lean.js → evals.md.CHR34K1Y.lean.js} +1 -1
- package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.js +9 -0
- package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.lean.js +1 -0
- package/dist/docs/assets/guides_grokbot-agents.md.BwAykJ7U.js +15 -0
- package/dist/docs/assets/{guides_grokbot-agents.md.tD1smFhU.lean.js → guides_grokbot-agents.md.BwAykJ7U.lean.js} +1 -1
- package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.js → guides_hooks.md.B_bKG1oA.js} +1 -1
- package/dist/docs/assets/{guides_improve.md.CRrYq22s.js → guides_improve.md.CZKVt1cT.js} +2 -3
- package/dist/docs/assets/{guides_improve.md.CRrYq22s.lean.js → guides_improve.md.CZKVt1cT.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.DR3zhC9r.js → guides_mcp-oauth.md.BM_eFC0L.js} +3 -15
- package/dist/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.js → guides_webhooks.md.Cpdc3BDX.js} +13 -12
- package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.lean.js → guides_webhooks.md.Cpdc3BDX.lean.js} +1 -1
- package/dist/docs/assets/{index.md.Dxxr7pFa.js → index.md.BIBHIQtU.js} +1 -1
- package/dist/docs/assets/{quickstart.md.BK5gjHM2.js → quickstart.md.CduLGBAB.js} +1 -1
- package/dist/docs/assets/reference_channels.md.DYg0CLud.js +22 -0
- package/dist/docs/assets/{reference_channels.md.LbNIJBwd.lean.js → reference_channels.md.DYg0CLud.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.dYCAL2lB.js → reference_cli.md.BYNIHwbi.js} +15 -12
- package/dist/docs/assets/{reference_cli.md.dYCAL2lB.lean.js → reference_cli.md.BYNIHwbi.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DLrgAd5f.js → reference_connections.md.CxbLpaaP.js} +4 -5
- package/dist/docs/assets/{reference_connections.md.DLrgAd5f.lean.js → reference_connections.md.CxbLpaaP.lean.js} +1 -1
- package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.js → reference_evals.md.if--BLd0.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.B-eGa2km.js → reference_hooks.md.DbJC8mcZ.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.CrqhTv6S.js +11 -0
- package/dist/docs/assets/{reference_http-api.md.DbFNOubV.lean.js → reference_http-api.md.CrqhTv6S.lean.js} +1 -1
- package/dist/docs/assets/reference_playground.md.q4MI-0td.js +1 -0
- package/dist/docs/assets/reference_playground.md.q4MI-0td.lean.js +1 -0
- package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.js → reference_schedules.md.03Ryy9ca.js} +5 -5
- package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.C_uzIWuy.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.Ckddg6KX.js} +1 -1
- package/dist/docs/assets/{reference_tools.md.DzIY9JzY.js → reference_tools.md.08XR7lIl.js} +3 -14
- package/dist/docs/assets/reference_tools.md.08XR7lIl.lean.js +1 -0
- package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.js → templates_grokbot-agents.md.DgpPEs7B.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.PCafNCb5.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.x-GBa7wN.lean.js → troubleshooting.md.PCafNCb5.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +5 -5
- package/dist/docs/deployment.html +43 -41
- package/dist/docs/deployment.md +70 -33
- package/dist/docs/evals.html +38 -42
- package/dist/docs/evals.md +1 -16
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +38 -39
- package/dist/docs/guides/cloud-agents.md +2 -8
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +37 -38
- package/dist/docs/guides/grokbot-agents.md +9 -13
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/hooks.md +0 -1
- package/dist/docs/guides/improve.html +37 -38
- package/dist/docs/guides/improve.md +4 -6
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +39 -51
- package/dist/docs/guides/mcp-oauth.md +17 -40
- package/dist/docs/guides/migrate.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +47 -46
- package/dist/docs/guides/webhooks.md +35 -18
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +36 -36
- package/dist/docs/index.md +1 -1
- package/dist/docs/llms-full.txt +347 -269
- package/dist/docs/llms.txt +4 -4
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/quickstart.md +2 -2
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +42 -43
- package/dist/docs/reference/channels.md +29 -13
- package/dist/docs/reference/cli.html +49 -46
- package/dist/docs/reference/cli.md +113 -40
- package/dist/docs/reference/connections.html +39 -40
- package/dist/docs/reference/connections.md +6 -5
- package/dist/docs/reference/evals.html +37 -37
- package/dist/docs/reference/evals.md +2 -4
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +37 -37
- package/dist/docs/reference/hooks.md +0 -1
- package/dist/docs/reference/http-api.html +38 -38
- package/dist/docs/reference/http-api.md +7 -17
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +37 -37
- package/dist/docs/reference/playground.md +1 -4
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +39 -39
- package/dist/docs/reference/schedules.md +26 -3
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/sessions.md +1 -2
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/skills.md +1 -1
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +39 -50
- package/dist/docs/reference/tools.md +2 -28
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/grokbot-agents.md +1 -1
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/docs/troubleshooting.md +12 -7
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +5 -1
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -0
- package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/channels.js +5 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +14 -0
- package/dist/internal/continuation-identity.js +1 -1
- package/dist/internal/discovery/agent-config.d.ts +6 -0
- package/dist/internal/discovery/agent-config.d.ts.map +1 -1
- package/dist/internal/discovery/agent-config.js +19 -0
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +2 -1
- package/dist/internal/hosted-catch-protocol.d.ts +2 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +2 -0
- package/dist/internal/hosted-catch.d.ts +2 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +2 -3
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +22 -12
- package/dist/internal/hosted-execution-flush.d.ts +6 -3
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +28 -31
- package/dist/internal/peer-connections.d.ts +6 -2
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +23 -19
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +5 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +6 -5
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +3 -0
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +26 -11
- package/dist/playground/assets/index-BVYWBxLU.css +1 -0
- package/dist/playground/assets/{index-ClxRl2Cw.js → index-DCsq6f_I.js} +37 -37
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +1 -1
- package/docs/building-with-agents.md +5 -5
- package/docs/deployment.md +70 -33
- package/docs/evals.md +1 -16
- package/docs/guides/cloud-agents.md +3 -9
- package/docs/guides/grokbot-agents.md +10 -14
- package/docs/guides/hooks.md +0 -1
- package/docs/guides/improve.md +4 -6
- package/docs/guides/mcp-oauth.md +18 -41
- package/docs/guides/webhooks.md +35 -18
- package/docs/quickstart.md +2 -2
- package/docs/reference/channels.md +29 -13
- package/docs/reference/cli.md +113 -40
- package/docs/reference/connections.md +6 -5
- package/docs/reference/evals.md +2 -4
- package/docs/reference/hooks.md +0 -1
- package/docs/reference/http-api.md +7 -17
- package/docs/reference/playground.md +2 -5
- package/docs/reference/schedules.md +26 -3
- package/docs/reference/sessions.md +1 -2
- package/docs/reference/skills.md +1 -1
- package/docs/reference/tools.md +3 -29
- package/docs/templates/grokbot-agents.md +1 -1
- package/docs/troubleshooting.md +12 -7
- package/package.json +35 -35
- package/skills/create-agent/SKILL.md +9 -6
- package/skills/debug/SKILL.md +3 -4
- package/skills/evals/SKILL.md +2 -2
- package/skills/framework-map/SKILL.md +10 -10
- package/skills/mcp-auth/SKILL.md +10 -34
- package/skills/migrate-v2/SKILL.md +13 -9
- package/skills/setup-slack/SKILL.md +0 -13
- package/templates/agents-md/README.md +3 -3
- package/templates/agents-md/bot/channels/queue.ts +3 -8
- package/templates/agents-md/bot/instructions.md +1 -2
- package/templates/agents-md/bot/tools/apply_agents.ts +0 -1
- package/templates/agents-md/evals/agents.eval.ts +2 -2
- package/templates/demo/bot/channels/queue.ts +5 -15
- package/templates/grokbot-agents/.gitignore +4 -0
- package/templates/pr-autofixer/bot/channels/drive.ts +3 -16
- package/templates/security-help/.gitignore +4 -0
- package/templates/triage/bot/channels/queue.ts +11 -22
- package/templates/triage/bot/channels/webhook.ts +3 -6
- package/templates/triage/bot/lib/parse-queue-event.ts +0 -6
- package/dist/docs/assets/chunks/@localSearchIndexroot.CzrtdJ8s.js +0 -1
- package/dist/docs/assets/chunks/channel.6ebHhoF9.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BJ-CwKwu.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BJ-CwKwu.js +0 -1
- package/dist/docs/assets/chunks/clone.DfV2fkWH.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DNdUCJyd.js +0 -1
- package/dist/docs/assets/deployment.md.BYuEcDBv.js +0 -29
- package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.js +0 -10
- package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.lean.js +0 -1
- package/dist/docs/assets/guides_grokbot-agents.md.tD1smFhU.js +0 -16
- package/dist/docs/assets/guides_mcp-oauth.md.DR3zhC9r.lean.js +0 -1
- package/dist/docs/assets/reference_channels.md.LbNIJBwd.js +0 -23
- package/dist/docs/assets/reference_http-api.md.DbFNOubV.js +0 -11
- package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +0 -1
- package/dist/docs/assets/reference_playground.md.1hx0gcIu.lean.js +0 -1
- package/dist/docs/assets/reference_sessions.md.CyM7ARz1.js +0 -1
- package/dist/docs/assets/reference_tools.md.DzIY9JzY.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +0 -1
- package/dist/playground/assets/index-BKSsuEMw.css +0 -1
- /package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.lean.js → guides_hooks.md.B_bKG1oA.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.Dxxr7pFa.lean.js → index.md.BIBHIQtU.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BK5gjHM2.lean.js → quickstart.md.CduLGBAB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.lean.js → reference_evals.md.if--BLd0.lean.js} +0 -0
- /package/dist/docs/assets/{reference_hooks.md.B-eGa2km.lean.js → reference_hooks.md.DbJC8mcZ.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CyM7ARz1.lean.js → reference_sessions.md.C_uzIWuy.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.Ckddg6KX.lean.js} +0 -0
- /package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.lean.js → templates_grokbot-agents.md.DgpPEs7B.lean.js} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cursor/bdk",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Build, test, and deploy BDK bots and agents as code on Cursor's agent harness.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"repository": {
|
|
@@ -286,34 +286,13 @@
|
|
|
286
286
|
"default": "./package.json"
|
|
287
287
|
}
|
|
288
288
|
},
|
|
289
|
-
"scripts": {
|
|
290
|
-
"build": "tsc -p tsconfig.build.json && node scripts/bundle-publish-shims.mjs && node scripts/copy-extension-assets.mjs && pnpm run build:playground && pnpm run docs:build",
|
|
291
|
-
"build:dist": "node scripts/build-hosted-dist.mjs",
|
|
292
|
-
"postinstall": "node -e \"try{const p='./scripts/install-cursor-skills.mjs';if(require('fs').existsSync(p))require('child_process').execFileSync(process.execPath,[p],{stdio:'inherit'})}catch{}\"",
|
|
293
|
-
"build:playground": "vite build --config playground/vite.config.ts",
|
|
294
|
-
"build:playground:central": "vite build --mode central --config playground/vite.config.ts",
|
|
295
|
-
"dev:playground": "vite --config playground/vite.config.ts",
|
|
296
|
-
"check": "oxlint src && tsc --noEmit && tsc --noEmit -p playground/tsconfig.json",
|
|
297
|
-
"docs:dev": "vitepress dev docs",
|
|
298
|
-
"docs:build": "vitepress build docs",
|
|
299
|
-
"docs:preview": "vitepress preview docs",
|
|
300
|
-
"docs:verify-links": "node scripts/verify-docs-links.mjs",
|
|
301
|
-
"fix": "oxlint --fix src && oxfmt --write --no-error-on-unmatched-pattern src",
|
|
302
|
-
"test": "vitest run --passWithNoTests",
|
|
303
|
-
"type-check": "tsc --noEmit && tsc --noEmit -p playground/tsconfig.json",
|
|
304
|
-
"build-dev": "echo noop",
|
|
305
|
-
"build-types": "tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
306
|
-
"verify-publish": "node scripts/verify-publish-artifacts.mjs",
|
|
307
|
-
"smoke-publish": "node scripts/smoke-publish-artifact.mjs",
|
|
308
|
-
"publish-check": "pnpm run build && pnpm run verify-publish && pnpm run smoke-publish"
|
|
309
|
-
},
|
|
310
289
|
"engines": {
|
|
311
290
|
"node": ">=22.13"
|
|
312
291
|
},
|
|
313
292
|
"dependencies": {
|
|
314
293
|
"@bazel/runfiles": "6.5.0",
|
|
315
|
-
"@cursor/sdk": "1.0.
|
|
316
|
-
"@modelcontextprotocol/sdk": "1.
|
|
294
|
+
"@cursor/sdk": "1.0.34",
|
|
295
|
+
"@modelcontextprotocol/sdk": "1.30.0",
|
|
317
296
|
"@octokit/auth-app": "^7.2.0",
|
|
318
297
|
"@octokit/rest": "^21.1.1",
|
|
319
298
|
"@opentelemetry/api": "^1.9.0",
|
|
@@ -336,7 +315,7 @@
|
|
|
336
315
|
"croner": "^8.0.1",
|
|
337
316
|
"esbuild": "^0.25.0",
|
|
338
317
|
"javascript-time-ago": "^2.6.4",
|
|
339
|
-
"js-yaml": "4.
|
|
318
|
+
"js-yaml": "4.3.2",
|
|
340
319
|
"minimatch": "^10.2.5",
|
|
341
320
|
"ms": "^2.1.3",
|
|
342
321
|
"proper-lockfile": "^4.1.2",
|
|
@@ -346,22 +325,17 @@
|
|
|
346
325
|
"zod-to-json-schema": "^3.24.5"
|
|
347
326
|
},
|
|
348
327
|
"devDependencies": {
|
|
349
|
-
"@anysphere/agent-exec": "workspace:*",
|
|
350
|
-
"@anysphere/agent-store-sync": "workspace:*",
|
|
351
|
-
"@anysphere/context": "workspace:*",
|
|
352
|
-
"@anysphere/proto": "workspace:*",
|
|
353
|
-
"@anysphere/ui": "workspace:*",
|
|
354
328
|
"@braintree/sanitize-url": "7.1.2",
|
|
355
329
|
"@stylexswc/rs-compiler": "^0.18.0",
|
|
356
330
|
"@tanstack/react-virtual": "3.13.23",
|
|
357
331
|
"@types/js-yaml": "4.0.9",
|
|
358
332
|
"@types/ms": "^2.1.0",
|
|
359
|
-
"@types/node": "
|
|
333
|
+
"@types/node": "22.14.1",
|
|
360
334
|
"@types/pg": "^8.16.0",
|
|
361
335
|
"@types/proper-lockfile": "^4.1.4",
|
|
362
336
|
"@types/react": "^19.0.0",
|
|
363
337
|
"@types/react-dom": "^19.0.0",
|
|
364
|
-
"@typescript/native": "
|
|
338
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
365
339
|
"@vitejs/plugin-react": "^5.1.2",
|
|
366
340
|
"cytoscape": "3.33.3",
|
|
367
341
|
"cytoscape-cose-bilkent": "4.1.0",
|
|
@@ -374,12 +348,38 @@
|
|
|
374
348
|
"react-markdown": "^10.1.0",
|
|
375
349
|
"rehype-highlight": "^7.0.2",
|
|
376
350
|
"remark-gfm": "^4.0.1",
|
|
377
|
-
"typescript": "
|
|
351
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
378
352
|
"vite": "^7.3.0",
|
|
379
353
|
"vitepress": "1.6.4",
|
|
380
354
|
"vitepress-plugin-mermaid": "^2.0.17",
|
|
381
355
|
"vitest": "^4.0.18",
|
|
382
356
|
"yaml": "^2.4.2",
|
|
383
|
-
"zustand": "^5.0.9"
|
|
357
|
+
"zustand": "^5.0.9",
|
|
358
|
+
"@anysphere/agent-exec": "1.0.0",
|
|
359
|
+
"@anysphere/agent-store-sync": "1.0.0",
|
|
360
|
+
"@anysphere/proto": "1.0.0",
|
|
361
|
+
"@anysphere/ui": "1.0.0",
|
|
362
|
+
"@anysphere/context": "1.0.0"
|
|
363
|
+
},
|
|
364
|
+
"scripts": {
|
|
365
|
+
"build": "tsc -p tsconfig.build.json && node scripts/bundle-publish-shims.mjs && node scripts/copy-extension-assets.mjs && pnpm run build:playground && pnpm run docs:build",
|
|
366
|
+
"build:dist": "node scripts/build-hosted-dist.mjs",
|
|
367
|
+
"postinstall": "node -e \"try{const p='./scripts/install-cursor-skills.mjs';if(require('fs').existsSync(p))require('child_process').execFileSync(process.execPath,[p],{stdio:'inherit'})}catch{}\"",
|
|
368
|
+
"build:playground": "vite build --config playground/vite.config.ts",
|
|
369
|
+
"build:playground:central": "vite build --mode central --config playground/vite.config.ts",
|
|
370
|
+
"dev:playground": "vite --config playground/vite.config.ts",
|
|
371
|
+
"check": "oxlint src && tsc --noEmit && tsc --noEmit -p playground/tsconfig.json",
|
|
372
|
+
"docs:dev": "vitepress dev docs",
|
|
373
|
+
"docs:build": "vitepress build docs",
|
|
374
|
+
"docs:preview": "vitepress preview docs",
|
|
375
|
+
"docs:verify-links": "node scripts/verify-docs-links.mjs",
|
|
376
|
+
"fix": "oxlint --fix src && oxfmt --write --no-error-on-unmatched-pattern src",
|
|
377
|
+
"test": "vitest run --passWithNoTests",
|
|
378
|
+
"type-check": "tsc --noEmit && tsc --noEmit -p playground/tsconfig.json",
|
|
379
|
+
"build-dev": "echo noop",
|
|
380
|
+
"build-types": "tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
381
|
+
"verify-publish": "node scripts/verify-publish-artifacts.mjs",
|
|
382
|
+
"smoke-publish": "node scripts/smoke-publish-artifact.mjs",
|
|
383
|
+
"publish-check": "pnpm run build && pnpm run verify-publish && pnpm run smoke-publish"
|
|
384
384
|
}
|
|
385
|
-
}
|
|
385
|
+
}
|
|
@@ -6,7 +6,7 @@ description: >-
|
|
|
6
6
|
agent. Ask only what the invoking message left open.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
# Create
|
|
9
|
+
# Create a BDK agent
|
|
10
10
|
|
|
11
11
|
1. **Interview.** Two `AskQuestion` rounds, then a plan gate.
|
|
12
12
|
2. **Scaffold.** `bdk init`, then shape the files.
|
|
@@ -48,7 +48,7 @@ on a running host.
|
|
|
48
48
|
| **Model** | `grok-4.5` + `effort=high`, `fast=true` · Other id | Params, not id suffixes: `{ id: "grok-4.5", params: [{ id: "effort", value: "high" }, { id: "fast", value: "true" }] }` |
|
|
49
49
|
| **Channels** (multi) | playground + HTTP (always on) · Slack · GitHub · custom webhook · schedule | Slack: `skills/setup-slack/SKILL.md`. GitHub: `skills/github/SKILL.md`. No Discord/Teams pack; offer custom webhook. |
|
|
50
50
|
| **MCP** (multi) | none · remote URL · local stdio · Cursor account connectors · Other | One file under `bot/mcp-connections/`. Account file is `account.ts`, never `cursor.ts`. Named local tools need `advertiseTools: true`. Privileged servers go in `bot/host-connections/`. |
|
|
51
|
-
| **Capabilities** (multi) | server tools · agent tools · skills · subagents · hooks · sandbox seeds ·
|
|
51
|
+
| **Capabilities** (multi) | server tools · agent tools · skills · subagents · hooks · sandbox seeds · evals (recommend) | Always recommend one smoke eval. |
|
|
52
52
|
|
|
53
53
|
Close with the plan and file tree, then "Scaffold it" / "Adjust
|
|
54
54
|
something". Write files only after approval.
|
|
@@ -72,13 +72,13 @@ Defaults:
|
|
|
72
72
|
- `bot/instructions.md`: identity, when to use which tool,
|
|
73
73
|
output shape.
|
|
74
74
|
- One tool per file. Prefer `execution: "server"` + zod
|
|
75
|
-
`inputSchema`.
|
|
75
|
+
`inputSchema`. Declare `effect: "read"` or `"write"` on each tool.
|
|
76
76
|
- Long prompts: `prompt\`…\`` / `prompt.lines\`…\`` from
|
|
77
77
|
`@cursor/bdk`.
|
|
78
78
|
- Host prep is for evidence (`callTool`, `workspaceFiles`), not
|
|
79
79
|
judgment, formatting, or replies.
|
|
80
|
-
- Remembered state is `ctx.host.kv`.
|
|
81
|
-
|
|
80
|
+
- Remembered state is `ctx.host.kv`. On Cursor hosting, a later
|
|
81
|
+
event can run in a new process, where a module `Map` starts empty.
|
|
82
82
|
File bytes that must outlive the process go in `ctx.host.files`.
|
|
83
83
|
See `skills/framework-map/SKILL.md`.
|
|
84
84
|
|
|
@@ -154,7 +154,10 @@ project state directory (`--state-root`). That is not harness cwd.
|
|
|
154
154
|
- **Slack.** `skills/setup-slack/SKILL.md`
|
|
155
155
|
- **GitHub.** `skills/github/SKILL.md`
|
|
156
156
|
- **Custom webhook.** `POST /v1/channels/<id>/<route>`.
|
|
157
|
-
Loopback-only until you add `bearerAuth(...)`.
|
|
157
|
+
Loopback-only until you add `bearerAuth(...)`. Hosted callers
|
|
158
|
+
get an empty `202` before the handler runs, so return
|
|
159
|
+
`new Response(null, { status: 202 })` and deliver results from
|
|
160
|
+
the channel's `events`.
|
|
158
161
|
- **Schedules.** Never auto-fire under `--dev`.
|
|
159
162
|
`POST /v1/dev/schedules/<id>`.
|
|
160
163
|
|
package/skills/debug/SKILL.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
name: bdk-debug
|
|
3
3
|
description: >-
|
|
4
4
|
Diagnose a misbehaving local BDK agent: blank playground,
|
|
5
|
-
missing sessions, failed reads, webhook 401s, 403/409
|
|
6
|
-
|
|
5
|
+
missing sessions, failed reads, webhook 401s, 403/409. Use when
|
|
6
|
+
a project runs but behaves wrong locally.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Debugging the BDK locally
|
|
10
10
|
|
|
11
|
-
Local `bdk serve`. Hosted start
|
|
11
|
+
Local `bdk serve`. Hosted start failures:
|
|
12
12
|
`docs/troubleshooting.md` and `docs/deployment.md`.
|
|
13
13
|
|
|
14
14
|
1. **Validate.** `bdk validate --dir <project>`
|
|
@@ -27,7 +27,6 @@ Local `bdk serve`. Hosted start or health failures:
|
|
|
27
27
|
| Answers cite ancestor `AGENTS.md` | Nested checkout. Default `local.cwd` is a cache directory under `~/.cache`. |
|
|
28
28
|
| Model lists IDE `cursor` tools, never MCP | `advertiseTools: true`. Check `GET /v1/info`. |
|
|
29
29
|
| Port 3000 in use | `lsof -iTCP:3000 -sTCP:LISTEN` and kill that pid. |
|
|
30
|
-
| Approval vanished after restart | Parked calls do not survive restart. Re-run. |
|
|
31
30
|
| Schedule / reminder silent under `--dev` | Dev never auto-fires. `POST /<slug>/v1/dev/schedules/<id>`. |
|
|
32
31
|
| `409` on follow-up | Stale `continuationToken`, busy session, or a task session. |
|
|
33
32
|
| `409 session_busy` on `call --session` | Wait, or drop `--session`. |
|
package/skills/evals/SKILL.md
CHANGED
|
@@ -84,11 +84,11 @@ export default defineEvalConfig({
|
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
Either `test(t)` or `cases`, not both. `t.send` waits for the turn to
|
|
87
|
-
settle (complete
|
|
87
|
+
settle (complete or fail) and returns it; `turn.calledTool(...)`
|
|
88
88
|
reads only that turn, `t.*` reads the whole run. First-send options:
|
|
89
89
|
`workspaceFiles`, `workspaceDir`.
|
|
90
90
|
|
|
91
|
-
Gates: `t.succeeded()
|
|
91
|
+
Gates: `t.succeeded()`,
|
|
92
92
|
`calledTool(name, { input, output, status, count })` / `notCalledTool`,
|
|
93
93
|
`toolOrder`, `maxToolCalls`, `taggedArtifact`, `event` / `notEvent`,
|
|
94
94
|
`t.check(value, includes | equals | matches | similarity | satisfies)`.
|
|
@@ -33,9 +33,9 @@ Public docs: `node_modules/@cursor/bdk/dist/docs/llms.txt` or
|
|
|
33
33
|
`CURSOR_API_KEY_FILE`, then `CURSOR_SERVICE_ACCOUNT_KEY`, then
|
|
34
34
|
`bdk login`). `validate`,
|
|
35
35
|
`info`, `call`, and `serve` bring-up do not.
|
|
36
|
-
7. **Memory is `ctx.host.kv`.**
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
7. **Memory is `ctx.host.kv`.** On Cursor hosting, a later event
|
|
37
|
+
can run in a new process. Module `Map`s, globals, and local files
|
|
38
|
+
do not carry over.
|
|
39
39
|
|
|
40
40
|
## Folder structure
|
|
41
41
|
|
|
@@ -63,8 +63,8 @@ Path is identity. Full list: README "Folder structure".
|
|
|
63
63
|
|
|
64
64
|
## Runtime
|
|
65
65
|
|
|
66
|
-
Turns run on the serve host. Server tools,
|
|
67
|
-
|
|
66
|
+
Turns run on the serve host. Server tools, agent tools, skills, and
|
|
67
|
+
sandbox seeds are available there.
|
|
68
68
|
|
|
69
69
|
## Sessions
|
|
70
70
|
|
|
@@ -84,9 +84,9 @@ Anything you need to remember goes in `ctx.host.kv`: coalesce,
|
|
|
84
84
|
dedupe, cursors, a decision a later turn must see. `get`, `put`,
|
|
85
85
|
and `delete`. Values are JSON.
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
On Cursor hosting, the platform can replace the serve process at
|
|
88
|
+
any time. The next hook, tool call, or channel event can run in a
|
|
89
|
+
new process, so do not assume this one is still up.
|
|
90
90
|
|
|
91
91
|
- The store is shared by every session of the agent. Prefix keys
|
|
92
92
|
with `ctx.session.id` for per-session memory.
|
|
@@ -107,14 +107,14 @@ before you return.
|
|
|
107
107
|
Code: side-effect gates, write dedupe (the record lives in
|
|
108
108
|
`ctx.host.kv`), auth, evidence seeding, hard API caps. Model:
|
|
109
109
|
formatting, summarizing, classification, replies.
|
|
110
|
-
Budget: `skills/create-
|
|
110
|
+
Budget: `skills/create-agent/SKILL.md`.
|
|
111
111
|
|
|
112
112
|
Loop: `validate` / `info` / `call` / `run` / `eval` / `serve`. Serve
|
|
113
113
|
only this agent's directory.
|
|
114
114
|
|
|
115
115
|
| Task | Skill |
|
|
116
116
|
| --- | --- |
|
|
117
|
-
| Scaffold | `skills/create-
|
|
117
|
+
| Scaffold | `skills/create-agent/SKILL.md` |
|
|
118
118
|
| Evals | `skills/evals/SKILL.md` |
|
|
119
119
|
| OpenTelemetry | `skills/otel/SKILL.md` |
|
|
120
120
|
| GitHub | `skills/github/SKILL.md` |
|
package/skills/mcp-auth/SKILL.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
name: bdk-mcp-auth
|
|
3
3
|
description: >-
|
|
4
4
|
Authorize host MCP OAuth for defineConnection({ url, oauth: true }):
|
|
5
|
-
bdk mcp oauth, local tokens,
|
|
6
|
-
Use when wiring or debugging MCP auth.
|
|
5
|
+
bdk mcp oauth, local tokens, advertiseTools, egress, and the hosted
|
|
6
|
+
cursorAccount path. Use when wiring or debugging MCP auth.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Host MCP OAuth
|
|
@@ -24,17 +24,14 @@ can still call `ctx.host.mcp`.
|
|
|
24
24
|
1. **Declare the connection.** `bot/mcp-connections/<name>.ts`
|
|
25
25
|
with `url` + `oauth: true`. Use `bot/host-connections/` when
|
|
26
26
|
the model must not see it.
|
|
27
|
-
2. **
|
|
28
|
-
`hosting.secretNames` lists
|
|
29
|
-
`MCP_OAUTH_<NAME>_{ACCESS_TOKEN,REFRESH_TOKEN,CLIENT_ID}`.
|
|
30
|
-
3. **Allow egress** on hosted non-bootstrap hosts:
|
|
27
|
+
2. **Allow egress** on hosted non-bootstrap hosts:
|
|
31
28
|
`hosting.egressDomains`.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
3. **Authorize.** Local: `bdk mcp oauth <name>`, or finish
|
|
30
|
+
Connect in the playground so the current process can retry.
|
|
31
|
+
Tokens stay on this machine. Hosted: use a
|
|
32
|
+
`cursorAccount: true` connection and connect the server from
|
|
33
|
+
**Deployed Agents** in the dashboard; its tokens stay on the
|
|
34
|
+
Cursor backend.
|
|
38
35
|
|
|
39
36
|
```ts
|
|
40
37
|
// bot/mcp-connections/inventory.ts
|
|
@@ -44,41 +41,20 @@ export default defineConnection({
|
|
|
44
41
|
});
|
|
45
42
|
```
|
|
46
43
|
|
|
47
|
-
```ts
|
|
48
|
-
// bot/agent.ts
|
|
49
|
-
export default defineAgent({
|
|
50
|
-
hosting: {
|
|
51
|
-
secretNames: [
|
|
52
|
-
"MCP_OAUTH_INVENTORY_ACCESS_TOKEN",
|
|
53
|
-
"MCP_OAUTH_INVENTORY_REFRESH_TOKEN",
|
|
54
|
-
"MCP_OAUTH_INVENTORY_CLIENT_ID",
|
|
55
|
-
],
|
|
56
|
-
egressDomains: ["mcp.example.com"],
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
File `inventory.ts` → prefix `MCP_OAUTH_INVENTORY`. Do not put
|
|
62
|
-
`CURSOR_*` names in `secretNames`.
|
|
63
|
-
|
|
64
44
|
```bash
|
|
65
45
|
bdk mcp oauth <connection>
|
|
66
|
-
bdk mcp oauth <connection> --store [--slug <slug>]
|
|
67
|
-
bdk secrets list <slug>
|
|
68
|
-
bdk deploy
|
|
69
46
|
```
|
|
70
47
|
|
|
71
48
|
Browser callback: `http://127.0.0.1:8787/callback`. Tokens live in
|
|
72
49
|
the CLI config directory (`mcp-auth.json` or
|
|
73
50
|
`$AGENT_SERVE_CONFIG_DIR`). URL change drops the old entry; re-run.
|
|
74
|
-
`--store` does not restart a running engine.
|
|
75
51
|
|
|
76
52
|
| Symptom | Fix |
|
|
77
53
|
| --- | --- |
|
|
78
54
|
| `must be defineConnection({ url, oauth: true })` | Wrong name or missing `oauth: true` |
|
|
79
55
|
| `Unknown MCP connection` | Filename must match the CLI arg |
|
|
80
56
|
| Callback hang | Free port 8787; finish the browser flow here |
|
|
81
|
-
| Hosted 401 | `
|
|
57
|
+
| Hosted 401 | Local tokens don't reach the deployment. Switch to `cursorAccount: true`; connect from **Deployed Agents** |
|
|
82
58
|
| Model invents `mcp_auth` / IDE MCP | `advertiseTools: true` on local turns |
|
|
83
59
|
|
|
84
60
|
No raw tokens in git.
|
|
@@ -62,18 +62,18 @@ ends. That model changes code in three places:
|
|
|
62
62
|
| Local `bdk dev`, `run`, `eval`, and the playground | Supported |
|
|
63
63
|
| `defineStorage` in `agent/storage.ts` | Not supported. Delete the file. |
|
|
64
64
|
| Reminders with inline `run` or a function `until` | Not supported. Use a named handler. |
|
|
65
|
-
| Cron schedules in `agent/schedules/` on Cursor hosting |
|
|
65
|
+
| Cron schedules in `agent/schedules/` on Cursor hosting | Supported with `@cursor/bdk` 0.2.14 or newer. Each fire runs in a new runtime and must finish in 26 minutes. |
|
|
66
66
|
| Slack tool-approval buttons on Cursor hosting | Not supported yet |
|
|
67
67
|
| `bdk mcp oauth --store` for host MCP OAuth | Not supported. Connect Cursor-account MCP servers from **Deployed Agents** in the dashboard. |
|
|
68
|
-
|
|
|
69
|
-
| `--prod` with `chat`, `resume`, `call`, `sessions`, `cost`, or `mcp` | Not supported. Use `run --prod`, `session --prod`, and `
|
|
68
|
+
| Session, tool, and MCP APIs on the deployment URL | Not reachable |
|
|
69
|
+
| `--prod` with `chat`, `resume`, `call`, `skill`, `sessions`, `cost`, or `mcp` | Not supported. Use `run --prod`, `logs --prod`, `session --prod`, and `playground --prod`. |
|
|
70
70
|
| v1 sessions, KV, and files | Not carried over. v2 starts empty, and deleting v1 deletes them. |
|
|
71
71
|
|
|
72
72
|
The steps below rewrite `defineStorage`, inline reminders, SCM channel
|
|
73
73
|
credentials, and secret reads. Stop and ask before migrating an agent
|
|
74
|
-
that depends on
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
that depends on Slack tool-approval buttons, `mcp oauth --store`, or an
|
|
75
|
+
HTTP route whose caller reads the response body. Name the row and the
|
|
76
|
+
file that uses it.
|
|
77
77
|
|
|
78
78
|
## Update the project
|
|
79
79
|
|
|
@@ -181,7 +181,8 @@ still loads.
|
|
|
181
181
|
|
|
182
182
|
8. **Stop answering from HTTP routes.** A custom route that returned
|
|
183
183
|
computed data must deliver it another way, such as a callback URL or a
|
|
184
|
-
tool the turn calls.
|
|
184
|
+
tool the turn calls. Return `new Response(null, { status: 202 })` so
|
|
185
|
+
local runs match the hosted response.
|
|
185
186
|
|
|
186
187
|
## Verify locally
|
|
187
188
|
|
|
@@ -257,8 +258,11 @@ After the deploy is running:
|
|
|
257
258
|
secrets go unused.
|
|
258
259
|
- Reconnect Cursor-account MCP servers from **Deployed Agents** in the
|
|
259
260
|
dashboard.
|
|
260
|
-
- Start a turn with `bdk run --prod --slug <slug> --message "..."
|
|
261
|
-
|
|
261
|
+
- Start a turn with `bdk run --prod --slug <slug> --message "..."`. It
|
|
262
|
+
prints a `deliveryId`, not a session. Find the `ses_...` header in
|
|
263
|
+
`bdk logs --prod --once --slug <slug>`, then read the turn with
|
|
264
|
+
`bdk session <ses_...> --prod --slug <slug>` until the latest run
|
|
265
|
+
finishes.
|
|
262
266
|
|
|
263
267
|
The [deploy skill](../deploy/SKILL.md) covers deploys with an attached
|
|
264
268
|
service account.
|
|
@@ -134,16 +134,3 @@ export default slackChannel({
|
|
|
134
134
|
Pass `--channel-posts` on `create` / `init --manual`. Invite the
|
|
135
135
|
bot to each watched channel. Mentions stay on `app_mention`; a
|
|
136
136
|
later mention continues the watch thread.
|
|
137
|
-
|
|
138
|
-
## Approvals (opt-in)
|
|
139
|
-
|
|
140
|
-
```ts
|
|
141
|
-
export default slackChannel({
|
|
142
|
-
envPrefix: "JENNY",
|
|
143
|
-
toolApprovals: true,
|
|
144
|
-
});
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Wizard enables interactivity when this is set. Server tools on
|
|
148
|
-
`local` only. Parked calls die on host restart. Cards truncate
|
|
149
|
-
args; execution uses the full input.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Living AGENTS.md
|
|
2
2
|
|
|
3
3
|
Keeps `AGENTS.md` current from last week's merged pull requests and the
|
|
4
|
-
listed Slack channels.
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
listed Slack channels. Opens each update as a draft follow-up PR for a
|
|
5
|
+
person to review. Chores stay quiet. Same-base updates stack on
|
|
6
|
+
`agents-md/<base>`.
|
|
7
7
|
|
|
8
8
|
```text
|
|
9
9
|
npx @cursor/bdk init ./agents-md --template agents-md
|
|
@@ -7,14 +7,9 @@ export default defineChannel({
|
|
|
7
7
|
POST("/run", {
|
|
8
8
|
description: "Collect last week's PRs and Slack, then review AGENTS.md",
|
|
9
9
|
bodySchema: z.object({}),
|
|
10
|
-
handler: async (_req, { send, host, auth }) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return Response.json({
|
|
14
|
-
ok: true,
|
|
15
|
-
sessionId: session.id,
|
|
16
|
-
window: week.window,
|
|
17
|
-
});
|
|
10
|
+
handler: async (_req, { send, waitUntil, host, auth }) => {
|
|
11
|
+
waitUntil(collectWeek(host).then((week) => startWeek(send, week, auth)));
|
|
12
|
+
return new Response(null, { status: 202 });
|
|
18
13
|
},
|
|
19
14
|
}),
|
|
20
15
|
],
|
|
@@ -33,7 +33,6 @@ Call `apply_agents` once.
|
|
|
33
33
|
Paths must be `AGENTS.md` or `*/AGENTS.md`. Short declarative sentences.
|
|
34
34
|
Edit only the stale or missing rules. Keep the existing voice.
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
opens as a draft.
|
|
36
|
+
The follow-up PR opens as a draft for a person to review.
|
|
38
37
|
|
|
39
38
|
Reply with `skip` or `update` and the reason.
|
|
@@ -26,7 +26,6 @@ type Write = {
|
|
|
26
26
|
|
|
27
27
|
export default defineTool({
|
|
28
28
|
description: "Skip or open an AGENTS.md follow-up PR for this weekly review. Call once.",
|
|
29
|
-
needsApproval: (input) => input.verdict === "update",
|
|
30
29
|
effect: (input) => (input.verdict === "update" ? "write" : "read"),
|
|
31
30
|
inputSchema: z.discriminatedUnion("verdict", [
|
|
32
31
|
z.object({
|
|
@@ -78,7 +78,7 @@ export default defineEval({
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
id: "update-rule",
|
|
81
|
-
description: "A repeated billing rule
|
|
81
|
+
description: "A repeated billing rule opens an AGENTS.md update.",
|
|
82
82
|
async test(t) {
|
|
83
83
|
await t.send(weekly(), {
|
|
84
84
|
workspaceFiles: {
|
|
@@ -91,7 +91,7 @@ export default defineEval({
|
|
|
91
91
|
"week/tree/AGENTS.md.txt": "# API\n\nKeep handlers thin.\n",
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
|
-
t.
|
|
94
|
+
t.succeeded();
|
|
95
95
|
t.calledTool("apply_agents", { input: { verdict: "update" } });
|
|
96
96
|
},
|
|
97
97
|
},
|
|
@@ -2,7 +2,7 @@ import { defineChannel, POST } from "@cursor/bdk/channels";
|
|
|
2
2
|
import { parseGitHubPrRef } from "@cursor/bdk/channels/github";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { startDemo } from "../lib/collect.js";
|
|
5
|
-
import {
|
|
5
|
+
import { watches } from "../lib/repos.js";
|
|
6
6
|
|
|
7
7
|
export default defineChannel({
|
|
8
8
|
routes: [
|
|
@@ -11,23 +11,13 @@ export default defineChannel({
|
|
|
11
11
|
bodySchema: z.object({
|
|
12
12
|
pr: z.string().describe("GitHub PR URL or owner/repo#N"),
|
|
13
13
|
}),
|
|
14
|
-
handler: async (_req, { send, host, body }) => {
|
|
14
|
+
handler: async (_req, { send, waitUntil, host, body }) => {
|
|
15
15
|
const ref = parseGitHubPrRef(body.pr);
|
|
16
16
|
if (ref === undefined || !watches(`${ref.owner}/${ref.repo}`)) {
|
|
17
|
-
return Response
|
|
18
|
-
{
|
|
19
|
-
ok: false,
|
|
20
|
-
error: `need a PR URL or owner/repo#N in ${REPOS.join(", ")}`,
|
|
21
|
-
},
|
|
22
|
-
{ status: 400 },
|
|
23
|
-
);
|
|
17
|
+
return new Response(null, { status: 400 });
|
|
24
18
|
}
|
|
25
|
-
|
|
26
|
-
return Response
|
|
27
|
-
ok: true,
|
|
28
|
-
sessionId: session.id,
|
|
29
|
-
pr: ref.label,
|
|
30
|
-
});
|
|
19
|
+
waitUntil(startDemo(send, host.github, ref));
|
|
20
|
+
return new Response(null, { status: 202 });
|
|
31
21
|
},
|
|
32
22
|
}),
|
|
33
23
|
],
|
|
@@ -7,30 +7,17 @@ export default defineChannel({
|
|
|
7
7
|
POST("/", {
|
|
8
8
|
description: "Start PR autofixer on a GitHub PR (same path as the drive_pr tool).",
|
|
9
9
|
bodySchema: driveStartBodySchema,
|
|
10
|
-
handler: async (
|
|
10
|
+
handler: async (_req, { send, host, body }) => {
|
|
11
11
|
const result = await startDrive({
|
|
12
12
|
pr: body.pr,
|
|
13
13
|
hint: body.hint,
|
|
14
14
|
send,
|
|
15
15
|
host,
|
|
16
16
|
});
|
|
17
|
-
|
|
18
17
|
if (!result.ok) {
|
|
19
|
-
return Response
|
|
18
|
+
return new Response(null, { status: 400 });
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
return Response.json({
|
|
23
|
-
pr: result.pr,
|
|
24
|
-
sessionId: result.sessionId,
|
|
25
|
-
continuationToken: result.continuationToken,
|
|
26
|
-
bcId: result.bcId,
|
|
27
|
-
agentUrl: result.agentUrl,
|
|
28
|
-
status: result.status,
|
|
29
|
-
result: result.result,
|
|
30
|
-
playgroundUrl:
|
|
31
|
-
result.sessionId === null ? null : sessionUrls(req, result.sessionId).playgroundUrl,
|
|
32
|
-
mergeConflictReminderId: result.mergeConflictReminderId,
|
|
33
|
-
});
|
|
20
|
+
return new Response(null, { status: 202 });
|
|
34
21
|
},
|
|
35
22
|
}),
|
|
36
23
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineChannel, POST } from "@cursor/bdk/channels";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { formatQueuePrompt,
|
|
3
|
+
import { formatQueuePrompt, parseQueueEvent } from "../lib/parse-queue-event.js";
|
|
4
4
|
|
|
5
5
|
export default defineChannel({
|
|
6
6
|
routes: [
|
|
@@ -11,29 +11,18 @@ export default defineChannel({
|
|
|
11
11
|
const parsed = parseQueueEvent(body);
|
|
12
12
|
if (!parsed.ok) {
|
|
13
13
|
if ("ignored" in parsed) {
|
|
14
|
-
return Response
|
|
14
|
+
return new Response(null, { status: 202 });
|
|
15
15
|
}
|
|
16
|
-
return Response
|
|
16
|
+
return new Response(null, { status: 400 });
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return Response.json({
|
|
27
|
-
ok: true,
|
|
28
|
-
identifier: parsed.issue.identifier,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
const session = await send(prompt, options);
|
|
32
|
-
return Response.json({
|
|
33
|
-
ok: true,
|
|
34
|
-
sessionId: session.id,
|
|
35
|
-
identifier: parsed.issue.identifier,
|
|
36
|
-
});
|
|
18
|
+
waitUntil(
|
|
19
|
+
send(formatQueuePrompt(parsed.issue), {
|
|
20
|
+
continuationToken: parsed.issue.identifier,
|
|
21
|
+
admission: "coalesce",
|
|
22
|
+
title: parsed.issue.title === "" ? undefined : parsed.issue.title,
|
|
23
|
+
}),
|
|
24
|
+
);
|
|
25
|
+
return new Response(null, { status: 202 });
|
|
37
26
|
},
|
|
38
27
|
}),
|
|
39
28
|
],
|
|
@@ -21,11 +21,11 @@ export default defineChannel({
|
|
|
21
21
|
nowMs: Date.now(),
|
|
22
22
|
});
|
|
23
23
|
if (!verified.ok) {
|
|
24
|
-
return Response
|
|
24
|
+
return new Response(null, { status: verified.status });
|
|
25
25
|
}
|
|
26
26
|
const parsed = parseQueueEvent(body);
|
|
27
27
|
if (!parsed.ok) {
|
|
28
|
-
return Response
|
|
28
|
+
return new Response(null, { status: 202 });
|
|
29
29
|
}
|
|
30
30
|
waitUntil(
|
|
31
31
|
send(formatQueuePrompt(parsed.issue), {
|
|
@@ -34,10 +34,7 @@ export default defineChannel({
|
|
|
34
34
|
title: parsed.issue.title === "" ? undefined : parsed.issue.title,
|
|
35
35
|
}),
|
|
36
36
|
);
|
|
37
|
-
return Response
|
|
38
|
-
ok: true,
|
|
39
|
-
identifier: parsed.issue.identifier,
|
|
40
|
-
});
|
|
37
|
+
return new Response(null, { status: 202 });
|
|
41
38
|
},
|
|
42
39
|
}),
|
|
43
40
|
],
|