@cursor/bdk 0.2.22 → 0.2.24
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/dist/artifacts.d.ts +1 -1
- package/dist/artifacts.js +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
- package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
- package/dist/channels/deployments/deployments-channel.js +1 -1
- package/dist/channels/github/github-channel.js +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +1 -1
- package/dist/channels/issues/issues-channel.js +1 -1
- package/dist/channels/origin/origin-channel.js +1 -1
- package/dist/channels/runs/runs-channel.js +1 -1
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +10 -5
- package/dist/channels/slack/tool-approval-events.js +5 -5
- package/dist/channels/slack/types.d.ts +7 -0
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels.d.ts +8 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +33 -6
- package/dist/docs/404.html +3 -3
- package/dist/docs/assets/{app.BD1yvHJK.js → app.DTIg0uKK.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D25E8cn2.js → VPLocalSearchBox.BpJoSaxi.js} +2 -2
- package/dist/docs/assets/chunks/{arc.1hKM2X5X.js → arc.ylgNvRNq.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.B1jE4xrG.js → architectureDiagram-Q4EWVU46.BMrNJqYk.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.BwPi_maB.js → baseUniq.BBWUEqf9.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.Cpy78QaZ.js → blockDiagram-DXYQGD6D.DFMu-Vza.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DkCQNehT.js → c4Diagram-AHTNJAMY.8nkAAxWv.js} +1 -1
- package/dist/docs/assets/chunks/channel.BOebySCN.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BuR2bNxe.js → chunk-4BX2VUAB.sO-z2Bag.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C24IlKyd.js → chunk-4TB4RGXK.BMROzTMq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.CRD5fIjA.js → chunk-55IACEB6.X81urwg7.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.gKhxQpy2.js → chunk-EDXVE4YY.eaZVFLZM.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DPlyJIaG.js → chunk-FMBD7UC4.CmZhzstR.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.DfDSVvIq.js → chunk-OYMX7WX6.CTezt9Lc.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CsA80Wio.js → chunk-QZHKN3VN.s-T8zukB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.BtXaaMC_.js → chunk-YZCP3GAM.DN4Nhy-D.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +1 -0
- package/dist/docs/assets/chunks/clone.D06pA7ML.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Bw9v-Pfp.js → cose-bilkent-S5V4N54A.Cqyp4BUH.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Wc53s510.js → dagre-KV5264BT.BIECOiqR.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DxJJrlh5.js → diagram-5BDNPKRD.1tLyWoTg.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Ldxa4MKP.js → diagram-G4DWMVQ6.BVY_6VMO.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.D30RWuU-.js → diagram-MMDJMWI5.BSZ7xiBB.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BuJ0aD65.js → diagram-TYMM5635.Bho6GmLh.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.2N-5dVK2.js → erDiagram-SMLLAGMA.A0yVIANn.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.B_te6Lre.js → flowDiagram-DWJPFMVM.ZMgbllH6.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CuNbn0Wd.js → ganttDiagram-T4ZO3ILL.BCCPBhXo.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.C1uOicx6.js → gitGraphDiagram-UUTBAWPF.BOkL0BbA.js} +1 -1
- package/dist/docs/assets/chunks/{graph.lSlSs4kh.js → graph.DMyZPu86.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Cw_LmsnD.js → infoDiagram-42DDH7IO.CjG1IiEw.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DikoN3ai.js → ishikawaDiagram-UXIWVN3A.UCe-kq9g.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.buwzIgeY.js → journeyDiagram-VCZTEJTY.3WyOK_eY.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.yacNqa4l.js → kanban-definition-6JOO6SKY.WoRG2qY1.js} +1 -1
- package/dist/docs/assets/chunks/{layout.CPlTUhtI.js → layout.DV07xDd5.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BpHFbx_2.js → linear.CTO8mN6o.js} +1 -1
- package/dist/docs/assets/chunks/{min.B_dSxH85.js → min.SvTtcKuZ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BO5-vmxy.js → mindmap-definition-QFDTVHPH.DMGgQ-HB.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Bwj1Zq54.js → pieDiagram-DEJITSTG.B7851apI.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D5dcUqJC.js → quadrantDiagram-34T5L4WZ.CEqyypIX.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CCP5yuT4.js → requirementDiagram-MS252O5E.C3Mwsw-H.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BWAu-_Jq.js → sankeyDiagram-XADWPNL6.DyYK0XxY.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.w545hYyz.js → sequenceDiagram-FGHM5R23.SiQPH-XM.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CxcpDNk2.js → stateDiagram-FHFEXIEX.CTJMsP4p.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +1 -0
- package/dist/docs/assets/chunks/{theme.DSJaK7i1.js → theme.DJo4my9R.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.2WxkfxRf.js → timeline-definition-GMOUNBTQ.CxSNRlQ6.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BGZwcK-Z.js → vennDiagram-DHZGUBPP.BdoJskyD.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.oryRmynQ.js → wardleyDiagram-NUSXRM2D.IjIbFn_F.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bq7gMvIU.js → xychartDiagram-5P7HB3ND.CPUxDZLH.js} +1 -1
- package/dist/docs/assets/{deployment.md.CtSJ6sF9.js → deployment.md.3MMWuPeV.js} +5 -5
- package/dist/docs/assets/{deployment.md.CtSJ6sF9.lean.js → deployment.md.3MMWuPeV.lean.js} +1 -1
- package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.js → guides_cloud-agents.md.BzbzcOyj.js} +2 -2
- package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.lean.js → guides_cloud-agents.md.BzbzcOyj.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.CQlGaBKX.js +7 -0
- package/dist/docs/assets/{guides_migrate.md.DZBL7dqT.lean.js → guides_migrate.md.CQlGaBKX.lean.js} +1 -1
- package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.js → guides_opentelemetry.md.Ck1o2frw.js} +11 -3
- package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.lean.js → guides_opentelemetry.md.Ck1o2frw.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.js → reference_agent-config.md.IplwL25I.js} +1 -2
- package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.lean.js → reference_agent-config.md.IplwL25I.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.Bkrsce22.js → reference_cli.md.DB7Llw3T.js} +3 -3
- package/dist/docs/assets/{reference_cli.md.Bkrsce22.lean.js → reference_cli.md.DB7Llw3T.lean.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.OUacPetl.js → reference_extensions.md.DKxTuCIw.js} +11 -8
- package/dist/docs/assets/{reference_extensions.md.OUacPetl.lean.js → reference_extensions.md.DKxTuCIw.lean.js} +1 -1
- package/dist/docs/assets/{reference_instructions.md.DrcHZXig.js → reference_instructions.md.BYMVxAkw.js} +4 -4
- package/dist/docs/assets/{reference_instructions.md.DrcHZXig.lean.js → reference_instructions.md.BYMVxAkw.lean.js} +1 -1
- package/dist/docs/assets/{style.Dwls12uf.css → style.nMsabY-V.css} +1 -1
- package/dist/docs/assets/templates_agentic-owners.md.CTEnR0jp.js +13 -0
- package/dist/docs/assets/{templates_agentic-owners.md.CvmABtia.lean.js → templates_agentic-owners.md.CTEnR0jp.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/deployment.html +42 -42
- package/dist/docs/deployment.md +9 -4
- package/dist/docs/evals.html +37 -37
- package/dist/docs/guides/agent-to-agent.html +37 -37
- package/dist/docs/guides/bitbucket.html +37 -37
- package/dist/docs/guides/cloud-agents.html +38 -38
- package/dist/docs/guides/cloud-agents.md +1 -0
- package/dist/docs/guides/convert-automation.html +37 -37
- package/dist/docs/guides/export-grokbot.html +37 -37
- package/dist/docs/guides/github.html +37 -37
- package/dist/docs/guides/gitlab.html +37 -37
- package/dist/docs/guides/grokbot-agents.html +37 -37
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/improve.html +37 -37
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/mcp-oauth.html +37 -37
- package/dist/docs/guides/migrate.html +39 -39
- package/dist/docs/guides/migrate.md +46 -4
- package/dist/docs/guides/opentelemetry.html +47 -39
- package/dist/docs/guides/opentelemetry.md +48 -2
- package/dist/docs/guides/slack.html +37 -37
- package/dist/docs/guides/webhooks.html +37 -37
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +37 -37
- package/dist/docs/index.html +37 -37
- package/dist/docs/llms-full.txt +195 -49
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/reference/agent-config.html +38 -39
- package/dist/docs/reference/agent-config.md +0 -1
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/channels.html +37 -37
- package/dist/docs/reference/cli.html +40 -40
- package/dist/docs/reference/cli.md +16 -5
- package/dist/docs/reference/connections.html +37 -37
- package/dist/docs/reference/evals.html +37 -37
- package/dist/docs/reference/extensions.html +47 -44
- package/dist/docs/reference/extensions.md +15 -9
- package/dist/docs/reference/hooks.html +37 -37
- package/dist/docs/reference/http-api.html +37 -37
- package/dist/docs/reference/instructions.html +40 -40
- package/dist/docs/reference/instructions.md +5 -1
- package/dist/docs/reference/memory.html +37 -37
- package/dist/docs/reference/playground.html +36 -36
- package/dist/docs/reference/project-layout.html +37 -37
- package/dist/docs/reference/prompt.html +37 -37
- package/dist/docs/reference/schedules.html +37 -37
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/skills.html +37 -37
- package/dist/docs/reference/subagents.html +37 -37
- package/dist/docs/reference/tools.html +37 -37
- package/dist/docs/templates/agentic-owners.html +42 -43
- package/dist/docs/templates/agentic-owners.md +55 -23
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/security-reviewer.html +37 -37
- package/dist/docs/templates/thermo-quality-review.html +37 -37
- package/dist/docs/templates/thermo-review.html +37 -37
- package/dist/docs/templates/triage.html +37 -37
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +1 -0
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -1
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/extension.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
- package/dist/extensions/improve/extension.js +1 -1
- package/dist/extensions/jev/extension.js +1 -1
- package/dist/extensions/jev/tools/evaluate.js +1 -1
- package/dist/extensions/slack-communication/extension.js +1 -1
- package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
- package/dist/extensions/slack-communication/tools/edit-message.js +1 -1
- package/dist/extensions/slack-communication/tools/post-card.js +1 -1
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions/slack-communication/tools/post-update.js +1 -1
- package/dist/extensions/slack-communication/tools/react.js +1 -1
- package/dist/extensions/slack-communication/tools/set-status.js +1 -1
- package/dist/extensions.d.ts +1 -1
- package/dist/extensions.js +1 -1
- package/dist/internal/builtin-tools/artifacts.js +1 -1
- package/dist/internal/builtin-tools/reminders.js +1 -1
- package/dist/internal/cli-deploy.d.ts +3 -3
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +63 -21
- package/dist/internal/cli-migrate.d.ts.map +1 -1
- package/dist/internal/cli-migrate.js +227 -12
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +56 -3
- package/dist/internal/convert-automation/convert-workflow.js +1 -1
- package/dist/internal/convert-grokbot/answers.js +1 -1
- package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
- package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
- package/dist/internal/convert-grokbot/recipe.js +1 -1
- package/dist/internal/cursor/backend-client.d.ts +1 -1
- package/dist/internal/cursor/backend-client.d.ts.map +1 -1
- package/dist/internal/cursor/backend-client.js +1 -1
- package/dist/internal/cursor/credentials.d.ts +1 -1
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +1 -1
- package/dist/internal/deploy-client.d.ts +7 -0
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +16 -2
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +2 -1
- package/dist/internal/discovery/cursor-plugin.js +1 -1
- package/dist/internal/factory-resource-channel.d.ts +1 -1
- package/dist/internal/factory-resource-channel.d.ts.map +1 -1
- package/dist/internal/filesystem/sdk-schemas.d.ts +1 -1
- package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
- package/dist/internal/filesystem/sdk-schemas.js +1 -1
- package/dist/internal/filesystem/tools.js +1 -1
- package/dist/internal/host-otel.d.ts +2 -1
- package/dist/internal/host-otel.d.ts.map +1 -1
- package/dist/internal/host-otel.js +20 -6
- package/dist/internal/hosted-delivery-protocol.d.ts +4 -0
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.d.ts +7 -0
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +19 -17
- package/dist/internal/hosting.d.ts +6 -0
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +9 -0
- package/dist/internal/init-scaffold.js +1 -1
- package/dist/internal/interview/agent-questions.d.ts +1 -1
- package/dist/internal/interview/agent-questions.d.ts.map +1 -1
- package/dist/internal/interview/agent-questions.js +1 -1
- package/dist/internal/interview/question.d.ts +1 -1
- package/dist/internal/interview/question.d.ts.map +1 -1
- package/dist/internal/interview/question.js +1 -1
- package/dist/internal/json-schema.d.ts +1 -1
- package/dist/internal/json-schema.d.ts.map +1 -1
- package/dist/internal/json-schema.js +1 -1
- package/dist/internal/mcp-endpoint.js +1 -1
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +47 -18
- package/dist/internal/otel/config.d.ts +4 -0
- package/dist/internal/otel/config.d.ts.map +1 -1
- package/dist/internal/otel/config.js +20 -9
- package/dist/internal/otel/http.d.ts +1 -1
- package/dist/internal/otel/http.d.ts.map +1 -1
- package/dist/internal/otel/http.js +1 -1
- package/dist/internal/otel/runtime.d.ts +17 -14
- package/dist/internal/otel/runtime.d.ts.map +1 -1
- package/dist/internal/otel/runtime.js +181 -238
- package/dist/internal/package-inline-stdio.d.ts.map +1 -1
- package/dist/internal/package-inline-stdio.js +1 -0
- package/dist/internal/process-memory-telemetry.d.ts +1 -1
- package/dist/internal/process-memory-telemetry.d.ts.map +1 -1
- package/dist/internal/process-memory-telemetry.js +1 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +22 -2
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +25 -13
- package/dist/internal/session-engine.d.ts +9 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +31 -2
- package/dist/internal/slack-provision-client.d.ts +1 -0
- package/dist/internal/slack-provision-client.d.ts.map +1 -1
- package/dist/internal/slack-provision-client.js +1 -1
- package/dist/internal/store-api-protocol.d.ts +1 -1
- package/dist/internal/store-api-protocol.d.ts.map +1 -1
- package/dist/internal/store-api-protocol.js +1 -1
- package/dist/internal/update-check.d.ts +1 -1
- package/dist/internal/update-check.d.ts.map +1 -1
- package/dist/internal/update-check.js +1 -1
- package/dist/otel.d.ts +1 -2
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +0 -1
- package/dist/playground/assets/index-DKKdkF29.js +62 -0
- package/dist/playground/assets/index-DpKinTMs.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/tools.d.ts +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +9 -4
- package/docs/guides/cloud-agents.md +1 -0
- package/docs/guides/migrate.md +46 -4
- package/docs/guides/opentelemetry.md +48 -2
- package/docs/reference/agent-config.md +0 -1
- package/docs/reference/cli.md +16 -5
- package/docs/reference/extensions.md +15 -9
- package/docs/reference/instructions.md +5 -1
- package/docs/templates/agentic-owners.md +55 -23
- package/package.json +17 -19
- package/skills/migrate-v2/SKILL.md +140 -11
- package/skills/otel/SKILL.md +17 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.DLNj_nNf.js +0 -1
- package/dist/docs/assets/chunks/channel.DRdmGkBC.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CAGM3Q8f.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CAGM3Q8f.js +0 -1
- package/dist/docs/assets/chunks/clone.DjA1k4gh.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CjwS--3R.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.BtotXz_c.js +0 -162
- package/dist/docs/assets/guides_migrate.md.DZBL7dqT.js +0 -7
- package/dist/docs/assets/templates_agentic-owners.md.CvmABtia.js +0 -14
- package/dist/playground/assets/index-CzV_Cybi.css +0 -1
- package/dist/playground/assets/index-XXYKgdQn.js +0 -71
package/dist/docs/llms-full.txt
CHANGED
|
@@ -235,9 +235,9 @@ agent and doesn't train on it.
|
|
|
235
235
|
Declare the external hosts and secret names the agent needs. Mounted
|
|
236
236
|
extensions add the ones they declare, so list only what your own code
|
|
237
237
|
calls; `bdk info --dir .` shows the combined list and what each mount
|
|
238
|
-
adds.
|
|
239
|
-
|
|
240
|
-
|
|
238
|
+
adds. Deploy the agent, then set each value at the hidden prompt.
|
|
239
|
+
The next task uses the new value. You do not deploy again to apply
|
|
240
|
+
that value.
|
|
241
241
|
|
|
242
242
|
```ts
|
|
243
243
|
// bot/agent.ts
|
|
@@ -252,9 +252,9 @@ export default defineAgent({
|
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
```text
|
|
255
|
+
bdk deploy --dir . --slug weather-agent
|
|
255
256
|
bdk secrets set weather-agent WEATHER_API_KEY
|
|
256
257
|
bdk secrets list weather-agent
|
|
257
|
-
bdk deploy --dir . --slug weather-agent
|
|
258
258
|
```
|
|
259
259
|
|
|
260
260
|
Commit secret names, never values. `secrets set` accepts names and reads
|
|
@@ -268,6 +268,11 @@ loading sees nothing. Read a secret inside the handler, tool, or callback
|
|
|
268
268
|
that needs it, and give an MCP connection its credential as a `${NAME}`
|
|
269
269
|
template, which resolves when the connection opens. See
|
|
270
270
|
[credentials in headers and env](/docs/reference/connections.md#credentials-in-headers-and-env).
|
|
271
|
+
|
|
272
|
+
`bdk deploy` runs the top-level code in your files one time to build
|
|
273
|
+
the snapshot. No secrets exist at that time. The snapshot keeps those
|
|
274
|
+
values.
|
|
275
|
+
|
|
271
276
|
SCM webhook channels go one step further and name their secrets in the
|
|
272
277
|
channel definition, as `{ secretName: "GITHUB_WEBHOOK_SECRET" }`, so the
|
|
273
278
|
platform can verify each delivery's signature before any compute starts.
|
|
@@ -1225,6 +1230,7 @@ their own.
|
|
|
1225
1230
|
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1226
1231
|
| `cloud` | Launch defaults for repositories, environment, and pull request behavior. |
|
|
1227
1232
|
| `cloud.repos` | The repositories the agent may hand work to, with a default branch or pull request for each. Without it, launches run with no repository and the model can't name one, so secrets in `cloud.envVars` never reach a repository you didn't list. |
|
|
1233
|
+
| `cloud.teamMcpServers` | The team MCP servers, by name, that launched agents may use (up to 50 names, matched case-insensitively; every team server with a listed name is kept). Every other team server is left out. Personal servers and `cloud.mcpServers` aren't filtered. Omit it to give agents every team server the launching account can use. |
|
|
1228
1234
|
| `model` | The model launched agents run. Omit it to use the account default. |
|
|
1229
1235
|
| `apiKey` | A Cursor API key to launch with instead of the host's own. |
|
|
1230
1236
|
|
|
@@ -3215,6 +3221,15 @@ Migrate when at least one of these signals is present:
|
|
|
3215
3221
|
Stop when none of these is true. An existing `agent/` project root can remain
|
|
3216
3222
|
in place; BDK still loads it even though current examples use `bot/`.
|
|
3217
3223
|
|
|
3224
|
+
`bdk migrate` prints `Nothing to migrate.` and exits 0 only when `--dir` shows
|
|
3225
|
+
no migration work. The check looks for an `@cursor/july` dependency,
|
|
3226
|
+
`architecture: "v1"`, `bot/storage.ts` or `agent/storage.ts`,
|
|
3227
|
+
`runtime: "grokbot"`, a literal SCM credential, a `/v1` continuation selector,
|
|
3228
|
+
an anonymous reminder, and a `*_MCP_URL` peer connection. When any of those is
|
|
3229
|
+
present, or a project file cannot be read, the command starts the agent. It
|
|
3230
|
+
does not read the hosted deployment. Run `bdk deployment <slug>` when you still
|
|
3231
|
+
need to see whether that copy is on v1.
|
|
3232
|
+
|
|
3218
3233
|
## Start the migration
|
|
3219
3234
|
|
|
3220
3235
|
Commit and push the source you want to migrate. `bdk migrate` reads that
|
|
@@ -3274,6 +3289,14 @@ Before merging, confirm the pull request:
|
|
|
3274
3289
|
removed. The [GitHub guide](/docs/guides/github.md#other-hosts) explains the named
|
|
3275
3290
|
form.
|
|
3276
3291
|
|
|
3292
|
+
- Rewrites each peer call that took its URL from a secret or environment
|
|
3293
|
+
variable, such as `BUILDER_MCP_URL`, to
|
|
3294
|
+
`defineConnection({ agent: "<slug>" })` under `bot/mcp-connections/`
|
|
3295
|
+
(or `agent/mcp-connections/` when the project root is `agent/`).
|
|
3296
|
+
Confirm the slug before you merge. The pull request lists each secret the
|
|
3297
|
+
rewrite left unused, and it leaves a TODO where it could not determine
|
|
3298
|
+
the slug.
|
|
3299
|
+
|
|
3277
3300
|
- Calls out unsupported behavior and any follow-up needed for reminders,
|
|
3278
3301
|
schedules, Slack, or MCP connections.
|
|
3279
3302
|
|
|
@@ -3304,10 +3327,33 @@ bdk validate --dir .
|
|
|
3304
3327
|
bdk deploy --dir . --slug <existing-or-new-slug>
|
|
3305
3328
|
```
|
|
3306
3329
|
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3330
|
+
When the folder contains more than one agent, deploy each agent folder
|
|
3331
|
+
alone. Run `bdk deploy --dir <agent folder>` one time for each agent. One
|
|
3332
|
+
`bdk deploy` on the parent folder prints those commands and does not deploy.
|
|
3333
|
+
Do not use `bdk deploy --all`. Repeat `bdk slack create --prod` for each
|
|
3334
|
+
agent folder. The Slack app slug is the folder name.
|
|
3335
|
+
|
|
3336
|
+
When the pull request calls another agent with
|
|
3337
|
+
`defineConnection({ agent: "<slug>" })`, deploy the caller and that peer
|
|
3338
|
+
on `@cursor/bdk` 0.2.18 or newer. Both deployments must belong to the
|
|
3339
|
+
same team, and the caller reaches the peer once the peer deployment is
|
|
3340
|
+
running. The connection file is already in the merged source, so unset
|
|
3341
|
+
each URL secret the pull request lists after both deploys:
|
|
3342
|
+
|
|
3343
|
+
```bash
|
|
3344
|
+
bdk secrets unset <slug> NAME
|
|
3345
|
+
```
|
|
3346
|
+
|
|
3347
|
+
`bdk migrate` prints the steps that follow the first deploy: one deploy per
|
|
3348
|
+
agent folder, `bdk slack create --prod --dir <agent-folder>` for each Slack
|
|
3349
|
+
agent, `bdk secrets unset` for peer URL secrets the pull request lists, and
|
|
3350
|
+
`bdk secrets list` / `bdk secrets set` when the slug is new. Slack setup
|
|
3351
|
+
redeploys the deployment by itself. `bdk secrets set` takes effect on the
|
|
3352
|
+
next request. Neither step needs another deploy.
|
|
3353
|
+
|
|
3354
|
+
After the deployment starts, follow that checklist for Slack, webhook callers,
|
|
3355
|
+
peer connections, and secrets, then verify a hosted turn. The
|
|
3356
|
+
[deployment guide](/docs/deployment.md) covers the managed hosting workflow.
|
|
3311
3357
|
|
|
3312
3358
|
## Related
|
|
3313
3359
|
|
|
@@ -3315,6 +3361,8 @@ hosting workflow.
|
|
|
3315
3361
|
exit status
|
|
3316
3362
|
- [`bdk-migrate-v2` skill](https://github.com/cursor/cursor/blob/main/packages/agent-serve/skills/migrate-v2/SKILL.md): the coding
|
|
3317
3363
|
procedure and complete capability matrix
|
|
3364
|
+
- [Peer agents](/docs/guides/agent-to-agent.md): how a deployed caller reaches another
|
|
3365
|
+
agent by slug
|
|
3318
3366
|
- [Deployment](/docs/deployment.md): deploy and verify the reviewed project
|
|
3319
3367
|
|
|
3320
3368
|
---
|
|
@@ -3373,6 +3421,52 @@ application starts the server itself. When that application
|
|
|
3373
3421
|
already uses OpenTelemetry, BDK sends its traces, metrics, and
|
|
3374
3422
|
logs to the collector configured here.
|
|
3375
3423
|
|
|
3424
|
+
## Export from a hosted agent
|
|
3425
|
+
|
|
3426
|
+
Set the collector endpoint and headers as secrets, and add the
|
|
3427
|
+
collector host to `hosting.egressDomains`. The host is a hostname
|
|
3428
|
+
with no scheme and no path. The first request loads the secrets,
|
|
3429
|
+
and export starts with those headers.
|
|
3430
|
+
|
|
3431
|
+
```ts
|
|
3432
|
+
// bot/agent.ts
|
|
3433
|
+
import { defineAgent } from "@cursor/bdk";
|
|
3434
|
+
|
|
3435
|
+
export default defineAgent({
|
|
3436
|
+
hosting: {
|
|
3437
|
+
egressDomains: ["otlp-gateway-prod-us-east-0.grafana.net"],
|
|
3438
|
+
secretNames: ["OTEL_EXPORTER_OTLP_ENDPOINT", "OTEL_EXPORTER_OTLP_HEADERS"],
|
|
3439
|
+
},
|
|
3440
|
+
});
|
|
3441
|
+
```
|
|
3442
|
+
|
|
3443
|
+
```bash
|
|
3444
|
+
bdk secrets set my-agent OTEL_EXPORTER_OTLP_ENDPOINT OTEL_EXPORTER_OTLP_HEADERS
|
|
3445
|
+
```
|
|
3446
|
+
|
|
3447
|
+
`OTEL_EXPORTER_OTLP_HEADERS` is a comma-separated list of
|
|
3448
|
+
`name=value` pairs. Each value is URL-encoded, so a space is
|
|
3449
|
+
`%20` (`Authorization=Basic%20...`).
|
|
3450
|
+
|
|
3451
|
+
A later `bdk secrets set` changes the headers on the next export.
|
|
3452
|
+
You do not redeploy to rotate a token. The URL, service name,
|
|
3453
|
+
resource attributes, signals, sample ratio, and metric export
|
|
3454
|
+
interval stay as they were on the first export. Redeploy to change
|
|
3455
|
+
one of those. BDK logs a warning when one of them changes on a
|
|
3456
|
+
running agent.
|
|
3457
|
+
|
|
3458
|
+
When an exporter host is missing from `hosting.egressDomains`, BDK
|
|
3459
|
+
logs an error that names the host. Add the host and redeploy.
|
|
3460
|
+
|
|
3461
|
+
Spans and metrics from before the first request are not exported,
|
|
3462
|
+
including spans from channel `onStart`. If the OpenTelemetry config
|
|
3463
|
+
fails, BDK logs the error and the request still completes.
|
|
3464
|
+
|
|
3465
|
+
Logs stay off until `serve({ otel })` sets `logs`, or until
|
|
3466
|
+
`OTEL_LOGS_EXPORTER` is `otlp`. Prompt text and tool payloads stay
|
|
3467
|
+
off until you set `OTEL_LOG_USER_PROMPTS` or
|
|
3468
|
+
`OTEL_LOG_TOOL_CONTENT`.
|
|
3469
|
+
|
|
3376
3470
|
## Follow one conversation
|
|
3377
3471
|
|
|
3378
3472
|
Copy the complete session ID from the playground or session API, then
|
|
@@ -3501,8 +3595,8 @@ The same controls are available as
|
|
|
3501
3595
|
configuration and custom-metric reference for coding agents
|
|
3502
3596
|
- [Hooks](/docs/reference/hooks.md): emit domain telemetry from session
|
|
3503
3597
|
events
|
|
3504
|
-
- [Deployment](/docs/deployment.md):
|
|
3505
|
-
on
|
|
3598
|
+
- [Deployment](/docs/deployment.md): declare `hosting.egressDomains`
|
|
3599
|
+
and set collector secrets on a hosted agent
|
|
3506
3600
|
- [Cursor enterprise OpenTelemetry Export](https://cursor.com/docs/enterprise/opentelemetry-export):
|
|
3507
3601
|
send organization-wide Cursor telemetry to the same collector
|
|
3508
3602
|
|
|
@@ -4794,7 +4888,6 @@ import { serve } from "@cursor/bdk";
|
|
|
4794
4888
|
|
|
4795
4889
|
const handle = await serve("./my-agent", {
|
|
4796
4890
|
port: 3000,
|
|
4797
|
-
apiKey: process.env.CURSOR_API_KEY,
|
|
4798
4891
|
});
|
|
4799
4892
|
console.log(`listening on ${handle.url}`);
|
|
4800
4893
|
// handle.callTool(...), handle.dispatchSchedule("heartbeat"),
|
|
@@ -5681,7 +5774,18 @@ bdk migrate [--dir <path>] [--repo <https-url>] [--ref <git-ref>]
|
|
|
5681
5774
|
early alpha. It reads a pushed Git ref, starts a Cursor cloud agent with the
|
|
5682
5775
|
bundled `bdk-migrate-v2` skill, and opens a pull request with the source
|
|
5683
5776
|
changes. The command waits for the pull request by default and never deploys
|
|
5684
|
-
the project or changes deployment secrets.
|
|
5777
|
+
the project or changes deployment secrets. When it starts an agent, it prints
|
|
5778
|
+
a checklist for the steps after the first deploy: deploy each agent folder,
|
|
5779
|
+
create the prod Slack app, unset peer URL secrets, and set secrets a new slug
|
|
5780
|
+
still needs.
|
|
5781
|
+
|
|
5782
|
+
The command prints `Nothing to migrate.` and exits 0 only when `--dir` shows
|
|
5783
|
+
no migration work. That check looks for an `@cursor/july` dependency,
|
|
5784
|
+
`architecture: "v1"`, `bot/storage.ts` or `agent/storage.ts`,
|
|
5785
|
+
`runtime: "grokbot"`, a literal SCM credential, a `/v1` continuation selector,
|
|
5786
|
+
an anonymous reminder, and a `*_MCP_URL` peer connection. When any of those is
|
|
5787
|
+
present, or a project file cannot be read, the command starts the agent. It
|
|
5788
|
+
does not read the hosted deployment.
|
|
5685
5789
|
|
|
5686
5790
|
| Option | Contract |
|
|
5687
5791
|
| --- | --- |
|
|
@@ -5690,7 +5794,7 @@ the project or changes deployment secrets.
|
|
|
5690
5794
|
| `--ref <git-ref>` | Select the pushed ref for the cloud agent. The CLI infers the current branch when possible. |
|
|
5691
5795
|
| `--path <agent-path>` | Select the project path relative to the repository root. The CLI infers it from `--dir` when possible. |
|
|
5692
5796
|
| `--no-wait` | Print the cloud agent URL and return after the agent starts. |
|
|
5693
|
-
| `--json` | Print a report with `ok`, `status`, `agentId`, and the cloud agent `url`. A completed migration adds `prUrl
|
|
5797
|
+
| `--json` | Print a report with `ok`, `status`, `agentId`, and the cloud agent `url`. A completed migration adds `prUrl` and `checklist`. A run with nothing to migrate uses `status: "current"` and `message` (no agent started) or `summary` (the agent reported it). A blocked or failed migration adds its explanation. |
|
|
5694
5798
|
| `--api-key <key>` | Override the Cursor credential. |
|
|
5695
5799
|
|
|
5696
5800
|
Credential resolution follows the normal order: `--api-key`,
|
|
@@ -5807,8 +5911,8 @@ service-account API key with agent access can deploy.
|
|
|
5807
5911
|
|
|
5808
5912
|
| Option | Contract |
|
|
5809
5913
|
| --- | --- |
|
|
5810
|
-
| `--slug <slug>` | Select one project and set its deployment slug. |
|
|
5811
|
-
| `--all` | Deploy every child
|
|
5914
|
+
| `--slug <slug>` | Select one project and set its deployment slug. Under a folder of several agents, this deploys that one agent. |
|
|
5915
|
+
| `--all` | Deploy every child under a folder of several agents. For a folder of v2 agents, print one deploy command for each agent. |
|
|
5812
5916
|
| `--team <id>` | Select the Cursor team. |
|
|
5813
5917
|
| `--repo <https-url>` | Set the source repository. The CLI infers it from the current checkout when possible. HTTPS is required. |
|
|
5814
5918
|
| `--ref <git-ref>` | Set the source Git ref. The CLI infers the current branch when possible. |
|
|
@@ -6200,7 +6304,7 @@ Credential resolution follows this order: `--api-key`, `CURSOR_API_KEY`,
|
|
|
6200
6304
|
| `chat`, `session` | Exit `2` for documented option conflicts or missing required input. |
|
|
6201
6305
|
| `validate` | Exit `1` when any project diagnostic has error severity. |
|
|
6202
6306
|
| `convert-automation` | Exit `1` for invalid input, authentication, export, or file-write failure. Warnings and dependency-install failure don't change a successful conversion exit. |
|
|
6203
|
-
| `migrate` | Exit `0` after starting with `--no-wait
|
|
6307
|
+
| `migrate` | Exit `0` when nothing needs a migration, after starting with `--no-wait`, or after the agent opens a pull request. Exit `1` for invalid input, authentication or agent failure, or a completed run without a pull request. |
|
|
6204
6308
|
| Other commands | Exit nonzero when validation, authentication, a request, or the requested operation fails. |
|
|
6205
6309
|
|
|
6206
6310
|
## Related
|
|
@@ -6851,10 +6955,13 @@ import ci from "@acme/ci-triage";
|
|
|
6851
6955
|
|
|
6852
6956
|
export default ci({
|
|
6853
6957
|
org: "acme",
|
|
6854
|
-
token: process.env.BUILDKITE_TOKEN,
|
|
6958
|
+
token: () => process.env.BUILDKITE_TOKEN ?? "",
|
|
6855
6959
|
});
|
|
6856
6960
|
```
|
|
6857
6961
|
|
|
6962
|
+
Pass `token` as a function so a tool can call it. The function reads
|
|
6963
|
+
`BUILDKITE_TOKEN` when the tool calls it.
|
|
6964
|
+
|
|
6858
6965
|
The extension validates its configuration while the project loads.
|
|
6859
6966
|
Missing or mistyped settings fail `bdk validate` before a turn
|
|
6860
6967
|
can call the contributed code.
|
|
@@ -6939,14 +7046,15 @@ import { cursorPlugin } from "@cursor/bdk/extensions";
|
|
|
6939
7046
|
export default cursorPlugin({
|
|
6940
7047
|
path: "plugins/notion-workspace",
|
|
6941
7048
|
variables: {
|
|
6942
|
-
NOTION_TOKEN:
|
|
7049
|
+
NOTION_TOKEN: "${NOTION_TOKEN}",
|
|
6943
7050
|
},
|
|
6944
7051
|
});
|
|
6945
7052
|
```
|
|
6946
7053
|
|
|
6947
7054
|
`path` is relative to the project root. `variables` fills placeholders
|
|
6948
|
-
declared by the plugin's MCP configuration
|
|
6949
|
-
|
|
7055
|
+
declared by the plugin's MCP configuration. Pass a `${NAME}` template.
|
|
7056
|
+
The connection reads `NAME` when it opens. An unresolved placeholder
|
|
7057
|
+
fails validation instead of mounting a partial server.
|
|
6950
7058
|
|
|
6951
7059
|
Plugin rules and hooks are not mounted. Overlay a generated
|
|
6952
7060
|
`mcp-connections/<server>.ts` file to replace or disable one plugin
|
|
@@ -6996,10 +7104,13 @@ export default defineExtension({
|
|
|
6996
7104
|
description: "Investigate failing Buildkite jobs.",
|
|
6997
7105
|
config: z.object({
|
|
6998
7106
|
org: z.string(),
|
|
6999
|
-
token: z.string(),
|
|
7107
|
+
token: z.function().args().returns(z.string()),
|
|
7000
7108
|
logTailLines: z.number().int().positive().default(200),
|
|
7001
7109
|
}),
|
|
7002
|
-
hosting: () => ({
|
|
7110
|
+
hosting: () => ({
|
|
7111
|
+
egressDomains: ["api.buildkite.com"],
|
|
7112
|
+
secretNames: ["BUILDKITE_TOKEN"],
|
|
7113
|
+
}),
|
|
7003
7114
|
});
|
|
7004
7115
|
```
|
|
7005
7116
|
|
|
@@ -7012,9 +7123,8 @@ prose assets beside it.
|
|
|
7012
7123
|
from the environment. It receives the validated settings, and the
|
|
7013
7124
|
mounting agent's `hosting.egressDomains` and `hosting.secretNames` gain
|
|
7014
7125
|
whatever it returns, so a hosted deploy reaches Buildkite without the
|
|
7015
|
-
consumer listing `api.buildkite.com`.
|
|
7016
|
-
|
|
7017
|
-
value comes from.
|
|
7126
|
+
consumer listing `api.buildkite.com`. List `BUILDKITE_TOKEN` in
|
|
7127
|
+
`secretNames`. Call `extension.config.token()` inside a tool.
|
|
7018
7128
|
|
|
7019
7129
|
The [Project layout](/docs/reference/project-layout.md) owns each contribution's
|
|
7020
7130
|
authoring contract. Keep extension instructions and tool descriptions
|
|
@@ -7477,10 +7587,14 @@ on every turn. A root agent requires them; a subagent may inline
|
|
|
7477
7587
|
import { defineInstructions } from "@cursor/bdk";
|
|
7478
7588
|
|
|
7479
7589
|
export default defineInstructions({
|
|
7480
|
-
markdown:
|
|
7590
|
+
markdown: "You are the on-call assistant for the payments team.",
|
|
7481
7591
|
});
|
|
7482
7592
|
```
|
|
7483
7593
|
|
|
7594
|
+
The `markdown` string is fixed when this file loads. Read a secret in
|
|
7595
|
+
a handler, a tool, or a callback. See
|
|
7596
|
+
[Add egress and secrets](/docs/deployment.md#add-egress-and-secrets).
|
|
7597
|
+
|
|
7484
7598
|
## Delivery
|
|
7485
7599
|
|
|
7486
7600
|
Instructions land in the session workspace as `AGENTS.md`, and the
|
|
@@ -8670,13 +8784,13 @@ Source: /docs/templates/agentic-owners.md
|
|
|
8670
8784
|
This agent reviews every pull request in your repository. It risk-tiers
|
|
8671
8785
|
the diff, requests the owning team or user as reviewers, and approves
|
|
8672
8786
|
what your policy allows. Ownership rules live in
|
|
8673
|
-
`.agentic-owners/policy.yml` files committed at any depth of the repo
|
|
8674
|
-
|
|
8675
|
-
from the PR's base ref so a PR cannot exempt itself.
|
|
8787
|
+
`.agentic-owners/policy.yml` files committed at any depth of the repo.
|
|
8788
|
+
The closest policy to a changed file wins, and policies are always read
|
|
8789
|
+
from the PR's base ref, so a PR cannot exempt itself.
|
|
8676
8790
|
|
|
8677
8791
|
## Scaffold
|
|
8678
8792
|
|
|
8679
|
-
```
|
|
8793
|
+
```bash
|
|
8680
8794
|
bdk init ./owners-agent --template agentic-owners
|
|
8681
8795
|
```
|
|
8682
8796
|
|
|
@@ -8685,21 +8799,23 @@ on PATH.
|
|
|
8685
8799
|
|
|
8686
8800
|
## Log in and run
|
|
8687
8801
|
|
|
8688
|
-
Set your repositories in `bot/lib/config.ts` (`repos: ["
|
|
8802
|
+
Set your repositories in `bot/lib/config.ts` (`repos: ["acme/api"]`),
|
|
8689
8803
|
then:
|
|
8690
8804
|
|
|
8691
|
-
```
|
|
8805
|
+
```bash
|
|
8692
8806
|
cd owners-agent
|
|
8693
8807
|
bdk login
|
|
8694
8808
|
bdk dev
|
|
8695
8809
|
```
|
|
8696
8810
|
|
|
8697
8811
|
PR events stream through your Cursor account. No webhook or GitHub App
|
|
8698
|
-
setup.
|
|
8812
|
+
setup. The agent reviews a PR when it is opened, reopened, pushed to,
|
|
8813
|
+
marked ready for review, or retargeted to another base. Draft PRs wait
|
|
8814
|
+
until they are ready. Open a PR, or replay a real one (this also works
|
|
8699
8815
|
with `repos` empty):
|
|
8700
8816
|
|
|
8701
|
-
```
|
|
8702
|
-
bdk github replay https://github.com/
|
|
8817
|
+
```bash
|
|
8818
|
+
bdk github replay https://github.com/acme/api/pull/123 --dir .
|
|
8703
8819
|
```
|
|
8704
8820
|
|
|
8705
8821
|
Deploy with `bdk deploy`.
|
|
@@ -8711,37 +8827,67 @@ low risk approve, medium and above hold with a comment. Route reviews by
|
|
|
8711
8827
|
committing policies:
|
|
8712
8828
|
|
|
8713
8829
|
```yaml
|
|
8714
|
-
# .agentic-owners/policy.yml
|
|
8715
|
-
# paths are repo-root-relative globs, wherever the policy file lives.
|
|
8830
|
+
# .agentic-owners/policy.yml at any depth; the closest policy wins.
|
|
8716
8831
|
version: 1
|
|
8717
8832
|
policies:
|
|
8718
8833
|
- paths: ["docs/**"]
|
|
8719
8834
|
always_approve: true
|
|
8720
8835
|
- paths: ["src/api/**"]
|
|
8721
|
-
team:
|
|
8836
|
+
team: platform # bare slug in the repo's org; or acme/platform, or user: alice
|
|
8722
8837
|
prompt: api-review.md # optional extra rubric, same directory
|
|
8723
8838
|
- paths: ["src/billing/**"]
|
|
8724
|
-
|
|
8725
|
-
|
|
8839
|
+
users: [alice, bob]
|
|
8840
|
+
mode: hard # the agent never approves; a person must
|
|
8726
8841
|
```
|
|
8727
8842
|
|
|
8728
|
-
`
|
|
8729
|
-
|
|
8843
|
+
`paths` are globs relative to the directory that holds the
|
|
8844
|
+
`.agentic-owners/` folder, so a root policy sees repo-relative paths and
|
|
8845
|
+
`src/.agentic-owners/policy.yml` matches `api/**` against
|
|
8846
|
+
`src/api/**`. Leading `../` segments reach a sibling tree. A path cannot
|
|
8847
|
+
escape the repo.
|
|
8848
|
+
|
|
8849
|
+
| Key | Meaning |
|
|
8850
|
+
| --- | --- |
|
|
8851
|
+
| `paths` | Globs relative to the policy's directory. Required. |
|
|
8852
|
+
| `team` / `teams` | Owner teams. A bare slug resolves in the repo's org. An `org/team` handle names a team directly. |
|
|
8853
|
+
| `user` / `users` | Owner GitHub logins, without `@`. |
|
|
8854
|
+
| `prompt` | Markdown filename in the same directory, added to the rubric for matching PRs. |
|
|
8855
|
+
| `mode` | `advisory` (default): low risk approves. `hard`: a person must approve. `notify`: the rule never blocks and its owners are not requested. |
|
|
8856
|
+
| `human_review_required` | `true` is the older spelling of `mode: hard`. |
|
|
8857
|
+
| `self_review` | A listed `user:` owner's own PRs clear this rule. |
|
|
8858
|
+
| `always_approve` | Satisfied at every risk tier. Cannot combine with owners, `prompt`, `mode`, `self_review`, or `human_review_required`. |
|
|
8859
|
+
|
|
8860
|
+
A rule without owners must set `always_approve: true`.
|
|
8861
|
+
`global_exclusions` in the root policy opts paths out entirely. The
|
|
8862
|
+
agent rejects `delegated_automations`: nothing in this template consumes
|
|
8863
|
+
automation approvals.
|
|
8730
8864
|
|
|
8731
8865
|
## What one review does
|
|
8732
8866
|
|
|
8733
8867
|
One model turn per PR head assesses the host-fetched diff against the
|
|
8734
|
-
base rubric plus any matched rule prompts, then records a
|
|
8868
|
+
base rubric plus any matched rule prompts, then records a risk tier of
|
|
8869
|
+
`very_low`, `low`, `medium`, `medium_high`, or `high` with
|
|
8735
8870
|
`record_review`. The host recomputes the policy from trusted state and
|
|
8736
8871
|
applies the deterministic decision:
|
|
8737
8872
|
|
|
8738
|
-
- **Approve** when
|
|
8739
|
-
|
|
8873
|
+
- **Approve** when every matched rule is `always_approve` or `notify`,
|
|
8874
|
+
or when the tier is very low or low and every matched `hard` rule is
|
|
8875
|
+
cleared by an owner-author with `self_review`. At medium and above,
|
|
8876
|
+
the agent approves only when the author's `self_review` covers every
|
|
8877
|
+
rule that can require review.
|
|
8740
8878
|
- **Request reviewers** otherwise: the policy owners (max 2, never the
|
|
8741
8879
|
author), plus one status comment the agent keeps updated in place.
|
|
8742
8880
|
|
|
8881
|
+
An approval binds to the head SHA, and a later hold dismisses the
|
|
8882
|
+
agent's earlier approvals. The agent also holds when the PR edits
|
|
8883
|
+
`.agentic-owners/` or `CODEOWNERS`, when the diff is empty or truncated,
|
|
8884
|
+
or when GitHub capped the changed-file list. `self_review` never clears
|
|
8885
|
+
a governance edit.
|
|
8886
|
+
|
|
8743
8887
|
The model never writes to GitHub. A broken policy file fails closed with
|
|
8744
|
-
a comment listing the validation issues.
|
|
8888
|
+
a comment listing the validation issues. Team membership is not
|
|
8889
|
+
resolved, because repo-scoped credentials cannot read org teams, so
|
|
8890
|
+
`self_review` applies to `user:` owners only.
|
|
8745
8891
|
|
|
8746
8892
|
## Rubric
|
|
8747
8893
|
|
|
@@ -8753,12 +8899,12 @@ next to the policy that names them. The next review reads both.
|
|
|
8753
8899
|
|
|
8754
8900
|
Use the three smoke reviews as a local exercise:
|
|
8755
8901
|
|
|
8756
|
-
```
|
|
8902
|
+
```bash
|
|
8757
8903
|
bdk eval
|
|
8758
8904
|
```
|
|
8759
8905
|
|
|
8760
|
-
|
|
8761
|
-
sessions skip GitHub writes.
|
|
8906
|
+
The cases are a docs-only change, an auth deletion, and a prompt
|
|
8907
|
+
injection. Eval sessions skip GitHub writes.
|
|
8762
8908
|
|
|
8763
8909
|
---
|
|
8764
8910
|
|