@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.
Files changed (306) hide show
  1. package/dist/artifacts.d.ts +1 -1
  2. package/dist/artifacts.js +1 -1
  3. package/dist/channels/bitbucket/bitbucket-channel.js +1 -1
  4. package/dist/channels/change-monitors/change-monitors-channel.js +1 -1
  5. package/dist/channels/deployments/deployments-channel.js +1 -1
  6. package/dist/channels/github/github-channel.js +1 -1
  7. package/dist/channels/gitlab/gitlab-channel.js +1 -1
  8. package/dist/channels/issues/issues-channel.js +1 -1
  9. package/dist/channels/origin/origin-channel.js +1 -1
  10. package/dist/channels/runs/runs-channel.js +1 -1
  11. package/dist/channels/slack/manifest.d.ts.map +1 -1
  12. package/dist/channels/slack/manifest.js +10 -5
  13. package/dist/channels/slack/tool-approval-events.js +5 -5
  14. package/dist/channels/slack/types.d.ts +7 -0
  15. package/dist/channels/slack/types.d.ts.map +1 -1
  16. package/dist/channels.d.ts +8 -1
  17. package/dist/channels.d.ts.map +1 -1
  18. package/dist/channels.js +33 -6
  19. package/dist/docs/404.html +3 -3
  20. package/dist/docs/assets/{app.BD1yvHJK.js → app.DTIg0uKK.js} +4 -4
  21. package/dist/docs/assets/chunks/@localSearchIndexroot.3ebvCWKy.js +1 -0
  22. package/dist/docs/assets/chunks/{VPLocalSearchBox.D25E8cn2.js → VPLocalSearchBox.BpJoSaxi.js} +2 -2
  23. package/dist/docs/assets/chunks/{arc.1hKM2X5X.js → arc.ylgNvRNq.js} +1 -1
  24. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.B1jE4xrG.js → architectureDiagram-Q4EWVU46.BMrNJqYk.js} +1 -1
  25. package/dist/docs/assets/chunks/{baseUniq.BwPi_maB.js → baseUniq.BBWUEqf9.js} +1 -1
  26. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.Cpy78QaZ.js → blockDiagram-DXYQGD6D.DFMu-Vza.js} +1 -1
  27. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DkCQNehT.js → c4Diagram-AHTNJAMY.8nkAAxWv.js} +1 -1
  28. package/dist/docs/assets/chunks/channel.BOebySCN.js +1 -0
  29. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.BuR2bNxe.js → chunk-4BX2VUAB.sO-z2Bag.js} +1 -1
  30. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C24IlKyd.js → chunk-4TB4RGXK.BMROzTMq.js} +1 -1
  31. package/dist/docs/assets/chunks/{chunk-55IACEB6.CRD5fIjA.js → chunk-55IACEB6.X81urwg7.js} +1 -1
  32. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.gKhxQpy2.js → chunk-EDXVE4YY.eaZVFLZM.js} +1 -1
  33. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DPlyJIaG.js → chunk-FMBD7UC4.CmZhzstR.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.DfDSVvIq.js → chunk-OYMX7WX6.CTezt9Lc.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.CsA80Wio.js → chunk-QZHKN3VN.s-T8zukB.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.BtXaaMC_.js → chunk-YZCP3GAM.DN4Nhy-D.js} +1 -1
  37. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C55IaN-T.js +1 -0
  38. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C55IaN-T.js +1 -0
  39. package/dist/docs/assets/chunks/clone.D06pA7ML.js +1 -0
  40. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.Bw9v-Pfp.js → cose-bilkent-S5V4N54A.Cqyp4BUH.js} +1 -1
  41. package/dist/docs/assets/chunks/{dagre-KV5264BT.Wc53s510.js → dagre-KV5264BT.BIECOiqR.js} +1 -1
  42. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DxJJrlh5.js → diagram-5BDNPKRD.1tLyWoTg.js} +1 -1
  43. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.Ldxa4MKP.js → diagram-G4DWMVQ6.BVY_6VMO.js} +1 -1
  44. package/dist/docs/assets/chunks/{diagram-MMDJMWI5.D30RWuU-.js → diagram-MMDJMWI5.BSZ7xiBB.js} +1 -1
  45. package/dist/docs/assets/chunks/{diagram-TYMM5635.BuJ0aD65.js → diagram-TYMM5635.Bho6GmLh.js} +1 -1
  46. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.2N-5dVK2.js → erDiagram-SMLLAGMA.A0yVIANn.js} +1 -1
  47. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.B_te6Lre.js → flowDiagram-DWJPFMVM.ZMgbllH6.js} +1 -1
  48. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.CuNbn0Wd.js → ganttDiagram-T4ZO3ILL.BCCPBhXo.js} +1 -1
  49. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.C1uOicx6.js → gitGraphDiagram-UUTBAWPF.BOkL0BbA.js} +1 -1
  50. package/dist/docs/assets/chunks/{graph.lSlSs4kh.js → graph.DMyZPu86.js} +1 -1
  51. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Cw_LmsnD.js → infoDiagram-42DDH7IO.CjG1IiEw.js} +1 -1
  52. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DikoN3ai.js → ishikawaDiagram-UXIWVN3A.UCe-kq9g.js} +1 -1
  53. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.buwzIgeY.js → journeyDiagram-VCZTEJTY.3WyOK_eY.js} +1 -1
  54. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.yacNqa4l.js → kanban-definition-6JOO6SKY.WoRG2qY1.js} +1 -1
  55. package/dist/docs/assets/chunks/{layout.CPlTUhtI.js → layout.DV07xDd5.js} +1 -1
  56. package/dist/docs/assets/chunks/{linear.BpHFbx_2.js → linear.CTO8mN6o.js} +1 -1
  57. package/dist/docs/assets/chunks/{min.B_dSxH85.js → min.SvTtcKuZ.js} +1 -1
  58. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.BO5-vmxy.js → mindmap-definition-QFDTVHPH.DMGgQ-HB.js} +1 -1
  59. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.Bwj1Zq54.js → pieDiagram-DEJITSTG.B7851apI.js} +1 -1
  60. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D5dcUqJC.js → quadrantDiagram-34T5L4WZ.CEqyypIX.js} +1 -1
  61. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.CCP5yuT4.js → requirementDiagram-MS252O5E.C3Mwsw-H.js} +1 -1
  62. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BWAu-_Jq.js → sankeyDiagram-XADWPNL6.DyYK0XxY.js} +1 -1
  63. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.w545hYyz.js → sequenceDiagram-FGHM5R23.SiQPH-XM.js} +1 -1
  64. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CxcpDNk2.js → stateDiagram-FHFEXIEX.CTJMsP4p.js} +1 -1
  65. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DddRVjeq.js +1 -0
  66. package/dist/docs/assets/chunks/{theme.DSJaK7i1.js → theme.DJo4my9R.js} +2 -2
  67. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.2WxkfxRf.js → timeline-definition-GMOUNBTQ.CxSNRlQ6.js} +1 -1
  68. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BGZwcK-Z.js → vennDiagram-DHZGUBPP.BdoJskyD.js} +1 -1
  69. package/dist/docs/assets/chunks/wardley-RL74JXVD.CVCRSuQK.js +162 -0
  70. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.oryRmynQ.js → wardleyDiagram-NUSXRM2D.IjIbFn_F.js} +1 -1
  71. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.Bq7gMvIU.js → xychartDiagram-5P7HB3ND.CPUxDZLH.js} +1 -1
  72. package/dist/docs/assets/{deployment.md.CtSJ6sF9.js → deployment.md.3MMWuPeV.js} +5 -5
  73. package/dist/docs/assets/{deployment.md.CtSJ6sF9.lean.js → deployment.md.3MMWuPeV.lean.js} +1 -1
  74. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.js → guides_cloud-agents.md.BzbzcOyj.js} +2 -2
  75. package/dist/docs/assets/{guides_cloud-agents.md.CBK7W0-O.lean.js → guides_cloud-agents.md.BzbzcOyj.lean.js} +1 -1
  76. package/dist/docs/assets/guides_migrate.md.CQlGaBKX.js +7 -0
  77. package/dist/docs/assets/{guides_migrate.md.DZBL7dqT.lean.js → guides_migrate.md.CQlGaBKX.lean.js} +1 -1
  78. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.js → guides_opentelemetry.md.Ck1o2frw.js} +11 -3
  79. package/dist/docs/assets/{guides_opentelemetry.md.ByW1Fs7b.lean.js → guides_opentelemetry.md.Ck1o2frw.lean.js} +1 -1
  80. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.js → reference_agent-config.md.IplwL25I.js} +1 -2
  81. package/dist/docs/assets/{reference_agent-config.md.DYA6ge6t.lean.js → reference_agent-config.md.IplwL25I.lean.js} +1 -1
  82. package/dist/docs/assets/{reference_cli.md.Bkrsce22.js → reference_cli.md.DB7Llw3T.js} +3 -3
  83. package/dist/docs/assets/{reference_cli.md.Bkrsce22.lean.js → reference_cli.md.DB7Llw3T.lean.js} +1 -1
  84. package/dist/docs/assets/{reference_extensions.md.OUacPetl.js → reference_extensions.md.DKxTuCIw.js} +11 -8
  85. package/dist/docs/assets/{reference_extensions.md.OUacPetl.lean.js → reference_extensions.md.DKxTuCIw.lean.js} +1 -1
  86. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.js → reference_instructions.md.BYMVxAkw.js} +4 -4
  87. package/dist/docs/assets/{reference_instructions.md.DrcHZXig.lean.js → reference_instructions.md.BYMVxAkw.lean.js} +1 -1
  88. package/dist/docs/assets/{style.Dwls12uf.css → style.nMsabY-V.css} +1 -1
  89. package/dist/docs/assets/templates_agentic-owners.md.CTEnR0jp.js +13 -0
  90. package/dist/docs/assets/{templates_agentic-owners.md.CvmABtia.lean.js → templates_agentic-owners.md.CTEnR0jp.lean.js} +1 -1
  91. package/dist/docs/building-with-agents.html +37 -37
  92. package/dist/docs/deployment.html +42 -42
  93. package/dist/docs/deployment.md +9 -4
  94. package/dist/docs/evals.html +37 -37
  95. package/dist/docs/guides/agent-to-agent.html +37 -37
  96. package/dist/docs/guides/bitbucket.html +37 -37
  97. package/dist/docs/guides/cloud-agents.html +38 -38
  98. package/dist/docs/guides/cloud-agents.md +1 -0
  99. package/dist/docs/guides/convert-automation.html +37 -37
  100. package/dist/docs/guides/export-grokbot.html +37 -37
  101. package/dist/docs/guides/github.html +37 -37
  102. package/dist/docs/guides/gitlab.html +37 -37
  103. package/dist/docs/guides/grokbot-agents.html +37 -37
  104. package/dist/docs/guides/hooks.html +37 -37
  105. package/dist/docs/guides/improve.html +37 -37
  106. package/dist/docs/guides/jev.html +37 -37
  107. package/dist/docs/guides/mcp-oauth.html +37 -37
  108. package/dist/docs/guides/migrate.html +39 -39
  109. package/dist/docs/guides/migrate.md +46 -4
  110. package/dist/docs/guides/opentelemetry.html +47 -39
  111. package/dist/docs/guides/opentelemetry.md +48 -2
  112. package/dist/docs/guides/slack.html +37 -37
  113. package/dist/docs/guides/webhooks.html +37 -37
  114. package/dist/docs/hashmap.json +1 -1
  115. package/dist/docs/hillclimbing.html +37 -37
  116. package/dist/docs/index.html +37 -37
  117. package/dist/docs/llms-full.txt +195 -49
  118. package/dist/docs/quickstart.html +37 -37
  119. package/dist/docs/reference/agent-config.html +38 -39
  120. package/dist/docs/reference/agent-config.md +0 -1
  121. package/dist/docs/reference/artifacts.html +37 -37
  122. package/dist/docs/reference/channels.html +37 -37
  123. package/dist/docs/reference/cli.html +40 -40
  124. package/dist/docs/reference/cli.md +16 -5
  125. package/dist/docs/reference/connections.html +37 -37
  126. package/dist/docs/reference/evals.html +37 -37
  127. package/dist/docs/reference/extensions.html +47 -44
  128. package/dist/docs/reference/extensions.md +15 -9
  129. package/dist/docs/reference/hooks.html +37 -37
  130. package/dist/docs/reference/http-api.html +37 -37
  131. package/dist/docs/reference/instructions.html +40 -40
  132. package/dist/docs/reference/instructions.md +5 -1
  133. package/dist/docs/reference/memory.html +37 -37
  134. package/dist/docs/reference/playground.html +36 -36
  135. package/dist/docs/reference/project-layout.html +37 -37
  136. package/dist/docs/reference/prompt.html +37 -37
  137. package/dist/docs/reference/schedules.html +37 -37
  138. package/dist/docs/reference/sessions.html +36 -36
  139. package/dist/docs/reference/skills.html +37 -37
  140. package/dist/docs/reference/subagents.html +37 -37
  141. package/dist/docs/reference/tools.html +37 -37
  142. package/dist/docs/templates/agentic-owners.html +42 -43
  143. package/dist/docs/templates/agentic-owners.md +55 -23
  144. package/dist/docs/templates/grokbot-agents.html +37 -37
  145. package/dist/docs/templates/security-reviewer.html +37 -37
  146. package/dist/docs/templates/thermo-quality-review.html +37 -37
  147. package/dist/docs/templates/thermo-review.html +37 -37
  148. package/dist/docs/templates/triage.html +37 -37
  149. package/dist/docs/troubleshooting.html +36 -36
  150. package/dist/extensions/cursor-cloud-agents/extension.d.ts +2 -0
  151. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  152. package/dist/extensions/cursor-cloud-agents/extension.js +2 -1
  153. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts +1 -0
  154. package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
  155. package/dist/extensions/cursor-cloud-agents/lib/backend.js +2 -1
  156. package/dist/extensions/cursor-cloud-agents/lib/fleet.js +1 -1
  157. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts +1 -1
  158. package/dist/extensions/cursor-cloud-agents/lib/inputs.d.ts.map +1 -1
  159. package/dist/extensions/cursor-cloud-agents/lib/inputs.js +1 -1
  160. package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +1 -1
  161. package/dist/extensions/cursor-cloud-agents/tools/launch.js +1 -1
  162. package/dist/extensions/cursor-cloud-agents/tools/list.js +1 -1
  163. package/dist/extensions/cursor-cloud-agents/tools/reply.js +1 -1
  164. package/dist/extensions/cursor-grokbot-agents/extension.js +1 -1
  165. package/dist/extensions/cursor-grokbot-agents/lib/backend.js +1 -1
  166. package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +1 -1
  167. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +1 -1
  168. package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -1
  169. package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +1 -1
  170. package/dist/extensions/cursor-grokbot-agents/tools/ask.js +1 -1
  171. package/dist/extensions/cursor-grokbot-agents/tools/check.js +1 -1
  172. package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +1 -1
  173. package/dist/extensions/cursor-grokbot-agents/tools/list.js +1 -1
  174. package/dist/extensions/improve/extension.js +1 -1
  175. package/dist/extensions/jev/extension.js +1 -1
  176. package/dist/extensions/jev/tools/evaluate.js +1 -1
  177. package/dist/extensions/slack-communication/extension.js +1 -1
  178. package/dist/extensions/slack-communication/tools/delete-message.js +1 -1
  179. package/dist/extensions/slack-communication/tools/edit-message.js +1 -1
  180. package/dist/extensions/slack-communication/tools/post-card.js +1 -1
  181. package/dist/extensions/slack-communication/tools/post-file.js +1 -1
  182. package/dist/extensions/slack-communication/tools/post-update.js +1 -1
  183. package/dist/extensions/slack-communication/tools/react.js +1 -1
  184. package/dist/extensions/slack-communication/tools/set-status.js +1 -1
  185. package/dist/extensions.d.ts +1 -1
  186. package/dist/extensions.js +1 -1
  187. package/dist/internal/builtin-tools/artifacts.js +1 -1
  188. package/dist/internal/builtin-tools/reminders.js +1 -1
  189. package/dist/internal/cli-deploy.d.ts +3 -3
  190. package/dist/internal/cli-deploy.d.ts.map +1 -1
  191. package/dist/internal/cli-deploy.js +63 -21
  192. package/dist/internal/cli-migrate.d.ts.map +1 -1
  193. package/dist/internal/cli-migrate.js +227 -12
  194. package/dist/internal/cli-slack.d.ts.map +1 -1
  195. package/dist/internal/cli-slack.js +56 -3
  196. package/dist/internal/convert-automation/convert-workflow.js +1 -1
  197. package/dist/internal/convert-grokbot/answers.js +1 -1
  198. package/dist/internal/convert-grokbot/recipe.d.ts +1 -1
  199. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -1
  200. package/dist/internal/convert-grokbot/recipe.js +1 -1
  201. package/dist/internal/cursor/backend-client.d.ts +1 -1
  202. package/dist/internal/cursor/backend-client.d.ts.map +1 -1
  203. package/dist/internal/cursor/backend-client.js +1 -1
  204. package/dist/internal/cursor/credentials.d.ts +1 -1
  205. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  206. package/dist/internal/cursor/credentials.js +1 -1
  207. package/dist/internal/deploy-client.d.ts +7 -0
  208. package/dist/internal/deploy-client.d.ts.map +1 -1
  209. package/dist/internal/deploy-client.js +16 -2
  210. package/dist/internal/deploy-manifest.d.ts.map +1 -1
  211. package/dist/internal/deploy-manifest.js +2 -1
  212. package/dist/internal/discovery/cursor-plugin.js +1 -1
  213. package/dist/internal/factory-resource-channel.d.ts +1 -1
  214. package/dist/internal/factory-resource-channel.d.ts.map +1 -1
  215. package/dist/internal/filesystem/sdk-schemas.d.ts +1 -1
  216. package/dist/internal/filesystem/sdk-schemas.d.ts.map +1 -1
  217. package/dist/internal/filesystem/sdk-schemas.js +1 -1
  218. package/dist/internal/filesystem/tools.js +1 -1
  219. package/dist/internal/host-otel.d.ts +2 -1
  220. package/dist/internal/host-otel.d.ts.map +1 -1
  221. package/dist/internal/host-otel.js +20 -6
  222. package/dist/internal/hosted-delivery-protocol.d.ts +4 -0
  223. package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
  224. package/dist/internal/hosted-delivery.d.ts +7 -0
  225. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  226. package/dist/internal/hosted-delivery.js +19 -17
  227. package/dist/internal/hosting.d.ts +6 -0
  228. package/dist/internal/hosting.d.ts.map +1 -1
  229. package/dist/internal/hosting.js +9 -0
  230. package/dist/internal/init-scaffold.js +1 -1
  231. package/dist/internal/interview/agent-questions.d.ts +1 -1
  232. package/dist/internal/interview/agent-questions.d.ts.map +1 -1
  233. package/dist/internal/interview/agent-questions.js +1 -1
  234. package/dist/internal/interview/question.d.ts +1 -1
  235. package/dist/internal/interview/question.d.ts.map +1 -1
  236. package/dist/internal/interview/question.js +1 -1
  237. package/dist/internal/json-schema.d.ts +1 -1
  238. package/dist/internal/json-schema.d.ts.map +1 -1
  239. package/dist/internal/json-schema.js +1 -1
  240. package/dist/internal/mcp-endpoint.js +1 -1
  241. package/dist/internal/otel/collector.d.ts.map +1 -1
  242. package/dist/internal/otel/collector.js +47 -18
  243. package/dist/internal/otel/config.d.ts +4 -0
  244. package/dist/internal/otel/config.d.ts.map +1 -1
  245. package/dist/internal/otel/config.js +20 -9
  246. package/dist/internal/otel/http.d.ts +1 -1
  247. package/dist/internal/otel/http.d.ts.map +1 -1
  248. package/dist/internal/otel/http.js +1 -1
  249. package/dist/internal/otel/runtime.d.ts +17 -14
  250. package/dist/internal/otel/runtime.d.ts.map +1 -1
  251. package/dist/internal/otel/runtime.js +181 -238
  252. package/dist/internal/package-inline-stdio.d.ts.map +1 -1
  253. package/dist/internal/package-inline-stdio.js +1 -0
  254. package/dist/internal/process-memory-telemetry.d.ts +1 -1
  255. package/dist/internal/process-memory-telemetry.d.ts.map +1 -1
  256. package/dist/internal/process-memory-telemetry.js +1 -1
  257. package/dist/internal/sdk-runner.d.ts.map +1 -1
  258. package/dist/internal/sdk-runner.js +22 -2
  259. package/dist/internal/server.d.ts.map +1 -1
  260. package/dist/internal/server.js +25 -13
  261. package/dist/internal/session-engine.d.ts +9 -1
  262. package/dist/internal/session-engine.d.ts.map +1 -1
  263. package/dist/internal/session-engine.js +31 -2
  264. package/dist/internal/slack-provision-client.d.ts +1 -0
  265. package/dist/internal/slack-provision-client.d.ts.map +1 -1
  266. package/dist/internal/slack-provision-client.js +1 -1
  267. package/dist/internal/store-api-protocol.d.ts +1 -1
  268. package/dist/internal/store-api-protocol.d.ts.map +1 -1
  269. package/dist/internal/store-api-protocol.js +1 -1
  270. package/dist/internal/update-check.d.ts +1 -1
  271. package/dist/internal/update-check.d.ts.map +1 -1
  272. package/dist/internal/update-check.js +1 -1
  273. package/dist/otel.d.ts +1 -2
  274. package/dist/otel.d.ts.map +1 -1
  275. package/dist/otel.js +0 -1
  276. package/dist/playground/assets/index-DKKdkF29.js +62 -0
  277. package/dist/playground/assets/index-DpKinTMs.css +1 -0
  278. package/dist/playground/index.html +2 -2
  279. package/dist/tools.d.ts +2 -2
  280. package/dist/tools.d.ts.map +1 -1
  281. package/dist/tools.js +1 -1
  282. package/dist/types.d.ts +1 -1
  283. package/dist/types.d.ts.map +1 -1
  284. package/docs/deployment.md +9 -4
  285. package/docs/guides/cloud-agents.md +1 -0
  286. package/docs/guides/migrate.md +46 -4
  287. package/docs/guides/opentelemetry.md +48 -2
  288. package/docs/reference/agent-config.md +0 -1
  289. package/docs/reference/cli.md +16 -5
  290. package/docs/reference/extensions.md +15 -9
  291. package/docs/reference/instructions.md +5 -1
  292. package/docs/templates/agentic-owners.md +55 -23
  293. package/package.json +17 -19
  294. package/skills/migrate-v2/SKILL.md +140 -11
  295. package/skills/otel/SKILL.md +17 -4
  296. package/dist/docs/assets/chunks/@localSearchIndexroot.DLNj_nNf.js +0 -1
  297. package/dist/docs/assets/chunks/channel.DRdmGkBC.js +0 -1
  298. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CAGM3Q8f.js +0 -1
  299. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CAGM3Q8f.js +0 -1
  300. package/dist/docs/assets/chunks/clone.DjA1k4gh.js +0 -1
  301. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CjwS--3R.js +0 -1
  302. package/dist/docs/assets/chunks/wardley-RL74JXVD.BtotXz_c.js +0 -162
  303. package/dist/docs/assets/guides_migrate.md.DZBL7dqT.js +0 -7
  304. package/dist/docs/assets/templates_agentic-owners.md.CvmABtia.js +0 -14
  305. package/dist/playground/assets/index-CzV_Cybi.css +0 -1
  306. package/dist/playground/assets/index-XXYKgdQn.js +0 -71
@@ -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. After the
239
- deployment exists, set each value at the hidden prompt and follow the
240
- CLI or dashboard instruction to redeploy.
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
- After the deployment starts, follow the migration skill's cutover checklist
3308
- for Slack, webhook callers, and Cursor-account MCP connections, then verify a
3309
- hosted turn. The [deployment guide](/docs/deployment.md) covers the managed
3310
- hosting workflow.
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): set collector endpoints and secrets
3505
- on hosted or self-hosted agents
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`; a blocked or failed migration adds its explanation. |
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 project under a multi-agent `--dir`. Mutually exclusive with `--slug`. |
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` 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. |
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: process.env.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; unresolved placeholders
6949
- fail validation instead of mounting a partial server.
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: () => ({ egressDomains: ["api.buildkite.com"] }),
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`. Leave out secrets that arrive
7016
- through settings, such as `token` here; the consumer decides where that
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: `You are the on-call assistant for ${process.env.TEAM_NAME}.`,
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
- the closest policy to a changed file wins, and policies are always read
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
- ```text
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: ["you/your-repo"]`),
8802
+ Set your repositories in `bot/lib/config.ts` (`repos: ["acme/api"]`),
8689
8803
  then:
8690
8804
 
8691
- ```text
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. Open a PR, or replay a real one deterministically (this also works
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
- ```text
8702
- bdk github replay https://github.com/you/your-repo/pull/123 --dir .
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. Anywhere in the repo; closest wins.
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: acme/platform # or user: alice
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
- user: alice
8725
- human_review_required: true # the agent never approves; a person must
8839
+ users: [alice, bob]
8840
+ mode: hard # the agent never approves; a person must
8726
8841
  ```
8727
8842
 
8728
- `self_review: true` lets a listed owner's own PRs clear their rule.
8729
- `global_exclusions` in the root policy opts paths out entirely.
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 verdict with
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 the tier is low and no matched rule demands a human,
8739
- bound to the head SHA.
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
- ```text
8902
+ ```bash
8757
8903
  bdk eval
8758
8904
  ```
8759
8905
 
8760
- Three smoke reviews (docs-only, auth deletion, prompt injection). Eval
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