@cursor/bdk 0.2.14 → 0.2.16

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 (392) hide show
  1. package/AGENTS.md +51 -52
  2. package/README.md +1 -1
  3. package/dist/bin/agent-sdk.js +0 -0
  4. package/dist/bin/agent-serve.js +41 -3
  5. package/dist/channels/github/index.d.ts +1 -1
  6. package/dist/channels/github/index.d.ts.map +1 -1
  7. package/dist/channels/github/index.js +1 -1
  8. package/dist/channels/slack/attachments.d.ts +2 -0
  9. package/dist/channels/slack/attachments.d.ts.map +1 -1
  10. package/dist/channels/slack/attachments.js +17 -5
  11. package/dist/channels/slack/channel-watch.d.ts +4 -2
  12. package/dist/channels/slack/channel-watch.d.ts.map +1 -1
  13. package/dist/channels/slack/channel-watch.js +4 -2
  14. package/dist/channels/slack/slack-channel.d.ts.map +1 -1
  15. package/dist/channels/slack/slack-channel.js +4 -2
  16. package/dist/channels/slack/types.d.ts +6 -4
  17. package/dist/channels/slack/types.d.ts.map +1 -1
  18. package/dist/connections.d.ts +29 -0
  19. package/dist/connections.d.ts.map +1 -1
  20. package/dist/connections.js +54 -0
  21. package/dist/docs/404.html +2 -2
  22. package/dist/docs/assets/{app.BN3sgOOo.js → app.BSrZkTHD.js} +4 -4
  23. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.js → building-with-agents.md.Bi9CQ-bR.js} +3 -3
  24. package/dist/docs/assets/{building-with-agents.md.Df87rAe1.lean.js → building-with-agents.md.Bi9CQ-bR.lean.js} +1 -1
  25. package/dist/docs/assets/chunks/@localSearchIndexroot.JUnN1Be1.js +1 -0
  26. package/dist/docs/assets/chunks/{VPLocalSearchBox.CbA00dML.js → VPLocalSearchBox.BxmgcwIX.js} +1 -1
  27. package/dist/docs/assets/chunks/{arc.Byug8CZM.js → arc.CAid9y9R.js} +1 -1
  28. package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.D1_qmnQy.js → architectureDiagram-Q4EWVU46.kLxg-1A5.js} +1 -1
  29. package/dist/docs/assets/chunks/{baseUniq.Dj-Nurf-.js → baseUniq.BWvpjFlO.js} +1 -1
  30. package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BZwq3EIg.js → blockDiagram-DXYQGD6D.DyjX8R7M.js} +1 -1
  31. package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.dx75urO7.js → c4Diagram-AHTNJAMY.DBdWlnqr.js} +1 -1
  32. package/dist/docs/assets/chunks/channel.CWc3NN9g.js +1 -0
  33. package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CIoddsDQ.js → chunk-4BX2VUAB.T5enPS2D.js} +1 -1
  34. package/dist/docs/assets/chunks/{chunk-4TB4RGXK.O3VsVBES.js → chunk-4TB4RGXK.D6zswRAS.js} +1 -1
  35. package/dist/docs/assets/chunks/{chunk-55IACEB6.WNNWh0Pe.js → chunk-55IACEB6.Bh05N-a3.js} +1 -1
  36. package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BKVQwEME.js → chunk-EDXVE4YY.DZv_O-d9.js} +1 -1
  37. package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Cv5iBz7A.js → chunk-FMBD7UC4.BY53CZaL.js} +1 -1
  38. package/dist/docs/assets/chunks/{chunk-OYMX7WX6.wCDCToee.js → chunk-OYMX7WX6.CO5lI2PE.js} +1 -1
  39. package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D3IGXhXA.js → chunk-QZHKN3VN.DMfpW0s4.js} +1 -1
  40. package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CAPPh-E7.js → chunk-YZCP3GAM.COPT56Nr.js} +1 -1
  41. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D5a745iS.js +1 -0
  42. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D5a745iS.js +1 -0
  43. package/dist/docs/assets/chunks/clone.CCGVqN_B.js +1 -0
  44. package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BQCFH3M5.js → cose-bilkent-S5V4N54A.BJSj7zzd.js} +1 -1
  45. package/dist/docs/assets/chunks/{dagre-KV5264BT.lHmdrh7L.js → dagre-KV5264BT.DDv7IQZT.js} +1 -1
  46. package/dist/docs/assets/chunks/{diagram-5BDNPKRD.EtSPnHgD.js → diagram-5BDNPKRD.BUoE9HFH.js} +1 -1
  47. package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DCyUnQT8.js → diagram-G4DWMVQ6.BF3JtrnJ.js} +1 -1
  48. package/dist/docs/assets/chunks/{diagram-MMDJMWI5._E0Qqblb.js → diagram-MMDJMWI5.BvuCWc4e.js} +1 -1
  49. package/dist/docs/assets/chunks/{diagram-TYMM5635.BDj4oyy_.js → diagram-TYMM5635._EqUGqFN.js} +1 -1
  50. package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.CrvnO6a3.js → erDiagram-SMLLAGMA.DxNvSdzj.js} +1 -1
  51. package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DIhYc-2F.js → flowDiagram-DWJPFMVM.DVtRP546.js} +1 -1
  52. package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.hFqm_vio.js → ganttDiagram-T4ZO3ILL.Bn9vb7xI.js} +1 -1
  53. package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.N3GDaVDD.js → gitGraphDiagram-UUTBAWPF.45r6n737.js} +1 -1
  54. package/dist/docs/assets/chunks/{graph.DK28rMBx.js → graph.BOkX3Ws_.js} +1 -1
  55. package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DHmE6W9M.js → infoDiagram-42DDH7IO.DyBCcxOm.js} +1 -1
  56. package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ByUJuOYm.js → ishikawaDiagram-UXIWVN3A.kg0ywDlx.js} +1 -1
  57. package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BIUChFMh.js → journeyDiagram-VCZTEJTY.BUfrLnXA.js} +1 -1
  58. package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CNgFXwo-.js → kanban-definition-6JOO6SKY.Bn7X35b2.js} +1 -1
  59. package/dist/docs/assets/chunks/{layout.BDnwE4ET.js → layout.B0QW6d8M.js} +1 -1
  60. package/dist/docs/assets/chunks/{linear.DmrYLXFs.js → linear.C59eCF0D.js} +1 -1
  61. package/dist/docs/assets/chunks/{min.BbYcWakN.js → min.BnDl0p08.js} +1 -1
  62. package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.C9x-klkv.js → mindmap-definition-QFDTVHPH.u2HYLooo.js} +1 -1
  63. package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.iufpEbi0.js → pieDiagram-DEJITSTG.CbnIrr9l.js} +1 -1
  64. package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DdoXbWL9.js → quadrantDiagram-34T5L4WZ.D2zWIixq.js} +1 -1
  65. package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.XL1-_pNk.js → requirementDiagram-MS252O5E.DvOFa3oO.js} +1 -1
  66. package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DySXofNs.js → sankeyDiagram-XADWPNL6.BfKCkH3x.js} +1 -1
  67. package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cp0GZoOU.js → sequenceDiagram-FGHM5R23.CUPKdYN0.js} +1 -1
  68. package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DvK-sXUX.js → stateDiagram-FHFEXIEX.CimDCRiK.js} +1 -1
  69. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.ClNUVSTQ.js +1 -0
  70. package/dist/docs/assets/chunks/{theme.Clup4iIo.js → theme.CKht7z82.js} +2 -2
  71. package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.gHI9ZLm6.js → timeline-definition-GMOUNBTQ.BFTd5qKs.js} +1 -1
  72. package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.G2N2zXYe.js → vennDiagram-DHZGUBPP.N6t5MmCb.js} +1 -1
  73. package/dist/docs/assets/chunks/wardley-RL74JXVD.D2G6Zyds.js +162 -0
  74. package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BgUKEagd.js → wardleyDiagram-NUSXRM2D.BqScALbL.js} +1 -1
  75. package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CwH7oege.js → xychartDiagram-5P7HB3ND.Br0WiDkT.js} +1 -1
  76. package/dist/docs/assets/deployment.md.hKKN9I4c.js +31 -0
  77. package/dist/docs/assets/{deployment.md.BYuEcDBv.lean.js → deployment.md.hKKN9I4c.lean.js} +1 -1
  78. package/dist/docs/assets/{evals.md.C851kViu.js → evals.md.CHR34K1Y.js} +3 -7
  79. package/dist/docs/assets/{evals.md.C851kViu.lean.js → evals.md.CHR34K1Y.lean.js} +1 -1
  80. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.js +9 -0
  81. package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.lean.js +1 -0
  82. package/dist/docs/assets/guides_grokbot-agents.md.BwAykJ7U.js +15 -0
  83. package/dist/docs/assets/{guides_grokbot-agents.md.tD1smFhU.lean.js → guides_grokbot-agents.md.BwAykJ7U.lean.js} +1 -1
  84. package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.js → guides_hooks.md.B_bKG1oA.js} +1 -1
  85. package/dist/docs/assets/{guides_improve.md.CRrYq22s.js → guides_improve.md.CZKVt1cT.js} +2 -3
  86. package/dist/docs/assets/{guides_improve.md.CRrYq22s.lean.js → guides_improve.md.CZKVt1cT.lean.js} +1 -1
  87. package/dist/docs/assets/{guides_mcp-oauth.md.DR3zhC9r.js → guides_mcp-oauth.md.BM_eFC0L.js} +3 -15
  88. package/dist/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js +1 -0
  89. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.js → guides_webhooks.md.Cpdc3BDX.js} +13 -12
  90. package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.lean.js → guides_webhooks.md.Cpdc3BDX.lean.js} +1 -1
  91. package/dist/docs/assets/{index.md.Dxxr7pFa.js → index.md.BIBHIQtU.js} +1 -1
  92. package/dist/docs/assets/{quickstart.md.BK5gjHM2.js → quickstart.md.CduLGBAB.js} +1 -1
  93. package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.js → reference_agent-config.md.DYA6ge6t.js} +7 -4
  94. package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.lean.js → reference_agent-config.md.DYA6ge6t.lean.js} +1 -1
  95. package/dist/docs/assets/reference_channels.md.DYg0CLud.js +22 -0
  96. package/dist/docs/assets/{reference_channels.md.LbNIJBwd.lean.js → reference_channels.md.DYg0CLud.lean.js} +1 -1
  97. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.js → reference_cli.md.2d2Y0O-d.js} +16 -13
  98. package/dist/docs/assets/{reference_cli.md.dYCAL2lB.lean.js → reference_cli.md.2d2Y0O-d.lean.js} +1 -1
  99. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.js → reference_connections.md.CxbLpaaP.js} +4 -5
  100. package/dist/docs/assets/{reference_connections.md.DLrgAd5f.lean.js → reference_connections.md.CxbLpaaP.lean.js} +1 -1
  101. package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.js → reference_evals.md.Ccwp4x3o.js} +4 -4
  102. package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.lean.js → reference_evals.md.Ccwp4x3o.lean.js} +1 -1
  103. package/dist/docs/assets/{reference_hooks.md.B-eGa2km.js → reference_hooks.md.DbJC8mcZ.js} +1 -1
  104. package/dist/docs/assets/reference_http-api.md.CrqhTv6S.js +11 -0
  105. package/dist/docs/assets/{reference_http-api.md.DbFNOubV.lean.js → reference_http-api.md.CrqhTv6S.lean.js} +1 -1
  106. package/dist/docs/assets/reference_playground.md.q4MI-0td.js +1 -0
  107. package/dist/docs/assets/reference_playground.md.q4MI-0td.lean.js +1 -0
  108. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.js → reference_schedules.md.03Ryy9ca.js} +5 -5
  109. package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +1 -1
  110. package/dist/docs/assets/reference_sessions.md.C_uzIWuy.js +1 -0
  111. package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C2GWh7g8.js} +4 -4
  112. package/dist/docs/assets/{reference_tools.md.DzIY9JzY.js → reference_tools.md.08XR7lIl.js} +3 -14
  113. package/dist/docs/assets/reference_tools.md.08XR7lIl.lean.js +1 -0
  114. package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.js → templates_grokbot-agents.md.DgpPEs7B.js} +1 -1
  115. package/dist/docs/assets/troubleshooting.md.PCafNCb5.js +1 -0
  116. package/dist/docs/assets/{troubleshooting.md.x-GBa7wN.lean.js → troubleshooting.md.PCafNCb5.lean.js} +1 -1
  117. package/dist/docs/building-with-agents.html +37 -37
  118. package/dist/docs/building-with-agents.md +5 -5
  119. package/dist/docs/deployment.html +43 -41
  120. package/dist/docs/deployment.md +70 -33
  121. package/dist/docs/evals.html +38 -42
  122. package/dist/docs/evals.md +1 -16
  123. package/dist/docs/guides/agent-to-agent.html +35 -35
  124. package/dist/docs/guides/bitbucket.html +35 -35
  125. package/dist/docs/guides/cloud-agents.html +38 -39
  126. package/dist/docs/guides/cloud-agents.md +2 -8
  127. package/dist/docs/guides/convert-automation.html +35 -35
  128. package/dist/docs/guides/github.html +35 -35
  129. package/dist/docs/guides/gitlab.html +35 -35
  130. package/dist/docs/guides/grokbot-agents.html +37 -38
  131. package/dist/docs/guides/grokbot-agents.md +9 -13
  132. package/dist/docs/guides/hooks.html +37 -37
  133. package/dist/docs/guides/hooks.md +0 -1
  134. package/dist/docs/guides/improve.html +37 -38
  135. package/dist/docs/guides/improve.md +4 -6
  136. package/dist/docs/guides/jev.html +35 -35
  137. package/dist/docs/guides/mcp-oauth.html +39 -51
  138. package/dist/docs/guides/mcp-oauth.md +17 -40
  139. package/dist/docs/guides/migrate.html +35 -35
  140. package/dist/docs/guides/opentelemetry.html +35 -35
  141. package/dist/docs/guides/slack.html +35 -35
  142. package/dist/docs/guides/webhooks.html +47 -46
  143. package/dist/docs/guides/webhooks.md +35 -18
  144. package/dist/docs/hashmap.json +1 -1
  145. package/dist/docs/hillclimbing.html +35 -35
  146. package/dist/docs/index.html +36 -36
  147. package/dist/docs/index.md +1 -1
  148. package/dist/docs/llms-full.txt +388 -272
  149. package/dist/docs/llms.txt +4 -4
  150. package/dist/docs/quickstart.html +37 -37
  151. package/dist/docs/quickstart.md +2 -2
  152. package/dist/docs/reference/agent-config.html +41 -38
  153. package/dist/docs/reference/agent-config.md +26 -1
  154. package/dist/docs/reference/artifacts.html +35 -35
  155. package/dist/docs/reference/channels.html +42 -43
  156. package/dist/docs/reference/channels.md +29 -13
  157. package/dist/docs/reference/cli.html +50 -47
  158. package/dist/docs/reference/cli.md +115 -42
  159. package/dist/docs/reference/connections.html +39 -40
  160. package/dist/docs/reference/connections.md +6 -5
  161. package/dist/docs/reference/evals.html +38 -38
  162. package/dist/docs/reference/evals.md +15 -4
  163. package/dist/docs/reference/extensions.html +35 -35
  164. package/dist/docs/reference/hooks.html +37 -37
  165. package/dist/docs/reference/hooks.md +0 -1
  166. package/dist/docs/reference/http-api.html +38 -38
  167. package/dist/docs/reference/http-api.md +7 -17
  168. package/dist/docs/reference/instructions.html +35 -35
  169. package/dist/docs/reference/playground.html +37 -37
  170. package/dist/docs/reference/playground.md +1 -4
  171. package/dist/docs/reference/project-layout.html +35 -35
  172. package/dist/docs/reference/prompt.html +35 -35
  173. package/dist/docs/reference/schedules.html +39 -39
  174. package/dist/docs/reference/schedules.md +26 -3
  175. package/dist/docs/reference/sessions.html +36 -36
  176. package/dist/docs/reference/sessions.md +1 -2
  177. package/dist/docs/reference/skills.html +39 -39
  178. package/dist/docs/reference/skills.md +1 -1
  179. package/dist/docs/reference/subagents.html +35 -35
  180. package/dist/docs/reference/tools.html +39 -50
  181. package/dist/docs/reference/tools.md +2 -28
  182. package/dist/docs/templates/agentic-owners.html +35 -35
  183. package/dist/docs/templates/grokbot-agents.html +37 -37
  184. package/dist/docs/templates/grokbot-agents.md +1 -1
  185. package/dist/docs/templates/security-reviewer.html +35 -35
  186. package/dist/docs/templates/thermo-quality-review.html +35 -35
  187. package/dist/docs/templates/thermo-review.html +35 -35
  188. package/dist/docs/templates/triage.html +35 -35
  189. package/dist/docs/troubleshooting.html +36 -36
  190. package/dist/docs/troubleshooting.md +12 -7
  191. package/dist/extensions/cursor-cloud-agents/extension.d.ts +5 -1
  192. package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
  193. package/dist/extensions/cursor-cloud-agents/extension.js +4 -0
  194. package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -1
  195. package/dist/extensions/cursor-cloud-agents/lib/channels.js +5 -1
  196. package/dist/filesystem.d.ts.map +1 -1
  197. package/dist/filesystem.js +4 -8
  198. package/dist/internal/cli-convert-automation.js +9 -19
  199. package/dist/internal/cli-deploy.d.ts +1 -1
  200. package/dist/internal/cli-deploy.d.ts.map +1 -1
  201. package/dist/internal/cli-deploy.js +18 -3
  202. package/dist/internal/cli-init-grokbot.d.ts +29 -0
  203. package/dist/internal/cli-init-grokbot.d.ts.map +1 -0
  204. package/dist/internal/cli-init-grokbot.js +181 -0
  205. package/dist/internal/cli-slack.js +1 -1
  206. package/dist/internal/comment-safe.d.ts +8 -0
  207. package/dist/internal/comment-safe.d.ts.map +1 -0
  208. package/dist/internal/comment-safe.js +12 -0
  209. package/dist/internal/continuation-identity.js +1 -1
  210. package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
  211. package/dist/internal/convert-automation/convert-workflow.js +2 -14
  212. package/dist/internal/convert-grokbot/answers.d.ts +127 -0
  213. package/dist/internal/convert-grokbot/answers.d.ts.map +1 -0
  214. package/dist/internal/convert-grokbot/answers.js +443 -0
  215. package/dist/internal/convert-grokbot/bot.d.ts +50 -0
  216. package/dist/internal/convert-grokbot/bot.d.ts.map +1 -0
  217. package/dist/internal/convert-grokbot/bot.js +72 -0
  218. package/dist/internal/convert-grokbot/checks.d.ts +26 -0
  219. package/dist/internal/convert-grokbot/checks.d.ts.map +1 -0
  220. package/dist/internal/convert-grokbot/checks.js +170 -0
  221. package/dist/internal/convert-grokbot/convert.d.ts +60 -0
  222. package/dist/internal/convert-grokbot/convert.d.ts.map +1 -0
  223. package/dist/internal/convert-grokbot/convert.js +470 -0
  224. package/dist/internal/convert-grokbot/handoff.d.ts +44 -0
  225. package/dist/internal/convert-grokbot/handoff.d.ts.map +1 -0
  226. package/dist/internal/convert-grokbot/handoff.js +160 -0
  227. package/dist/internal/convert-grokbot/recipe.d.ts +61 -0
  228. package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -0
  229. package/dist/internal/convert-grokbot/recipe.js +94 -0
  230. package/dist/internal/convert-grokbot/routine.d.ts +51 -0
  231. package/dist/internal/convert-grokbot/routine.d.ts.map +1 -0
  232. package/dist/internal/convert-grokbot/routine.js +128 -0
  233. package/dist/internal/convert-grokbot/slack.d.ts +28 -0
  234. package/dist/internal/convert-grokbot/slack.d.ts.map +1 -0
  235. package/dist/internal/convert-grokbot/slack.js +50 -0
  236. package/dist/internal/deploy-client.d.ts +0 -2
  237. package/dist/internal/deploy-client.d.ts.map +1 -1
  238. package/dist/internal/deploy-client.js +2 -11
  239. package/dist/internal/discovery/agent-config.d.ts +6 -0
  240. package/dist/internal/discovery/agent-config.d.ts.map +1 -1
  241. package/dist/internal/discovery/agent-config.js +19 -0
  242. package/dist/internal/discovery/agent.d.ts.map +1 -1
  243. package/dist/internal/discovery/agent.js +2 -1
  244. package/dist/internal/discovery/names.d.ts +2 -0
  245. package/dist/internal/discovery/names.d.ts.map +1 -1
  246. package/dist/internal/discovery/names.js +2 -0
  247. package/dist/internal/discovery/project.d.ts.map +1 -1
  248. package/dist/internal/discovery/project.js +1 -3
  249. package/dist/internal/eval-judge-model.d.ts +10 -5
  250. package/dist/internal/eval-judge-model.d.ts.map +1 -1
  251. package/dist/internal/eval-judge-model.js +36 -25
  252. package/dist/internal/filesystem/subagent-inherit.d.ts +39 -0
  253. package/dist/internal/filesystem/subagent-inherit.d.ts.map +1 -0
  254. package/dist/internal/filesystem/subagent-inherit.js +96 -0
  255. package/dist/internal/filesystem/tools.d.ts +6 -0
  256. package/dist/internal/filesystem/tools.d.ts.map +1 -1
  257. package/dist/internal/filesystem/tools.js +38 -1
  258. package/dist/internal/hosted-catch-protocol.d.ts +2 -0
  259. package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
  260. package/dist/internal/hosted-catch-protocol.js +2 -0
  261. package/dist/internal/hosted-catch.d.ts +2 -3
  262. package/dist/internal/hosted-catch.d.ts.map +1 -1
  263. package/dist/internal/hosted-catch.js +2 -3
  264. package/dist/internal/hosted-delivery.d.ts.map +1 -1
  265. package/dist/internal/hosted-delivery.js +46 -13
  266. package/dist/internal/hosted-execution-flush.d.ts +6 -3
  267. package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
  268. package/dist/internal/hosted-execution-flush.js +28 -31
  269. package/dist/internal/hosting.d.ts +1 -1
  270. package/dist/internal/hosting.d.ts.map +1 -1
  271. package/dist/internal/hosting.js +7 -3
  272. package/dist/internal/init-interview.d.ts +3 -5
  273. package/dist/internal/init-interview.d.ts.map +1 -1
  274. package/dist/internal/init-interview.js +15 -88
  275. package/dist/internal/init-project.d.ts +13 -0
  276. package/dist/internal/init-project.d.ts.map +1 -1
  277. package/dist/internal/init-project.js +30 -37
  278. package/dist/internal/init-scaffold.d.ts +11 -0
  279. package/dist/internal/init-scaffold.d.ts.map +1 -1
  280. package/dist/internal/init-scaffold.js +47 -13
  281. package/dist/internal/interview/agent-questions.d.ts +19 -0
  282. package/dist/internal/interview/agent-questions.d.ts.map +1 -0
  283. package/dist/internal/interview/agent-questions.js +120 -0
  284. package/dist/internal/interview/question.d.ts +82 -0
  285. package/dist/internal/interview/question.d.ts.map +1 -0
  286. package/dist/internal/interview/question.js +198 -0
  287. package/dist/internal/local-control-plane.d.ts.map +1 -1
  288. package/dist/internal/local-control-plane.js +5 -1
  289. package/dist/internal/otel/collector.d.ts +2 -0
  290. package/dist/internal/otel/collector.d.ts.map +1 -1
  291. package/dist/internal/otel/collector.js +4 -0
  292. package/dist/internal/peer-connections.d.ts +6 -2
  293. package/dist/internal/peer-connections.d.ts.map +1 -1
  294. package/dist/internal/peer-connections.js +23 -19
  295. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  296. package/dist/internal/resolve-prod-target.js +2 -1
  297. package/dist/internal/sdk-runner.d.ts.map +1 -1
  298. package/dist/internal/sdk-runner.js +43 -16
  299. package/dist/internal/sdk-subagent-inherit-support.d.ts +9 -0
  300. package/dist/internal/sdk-subagent-inherit-support.d.ts.map +1 -0
  301. package/dist/internal/sdk-subagent-inherit-support.js +89 -0
  302. package/dist/internal/server.d.ts.map +1 -1
  303. package/dist/internal/server.js +6 -5
  304. package/dist/internal/session-engine.d.ts +13 -0
  305. package/dist/internal/session-engine.d.ts.map +1 -1
  306. package/dist/internal/session-engine.js +62 -11
  307. package/dist/internal/session-run-log.d.ts.map +1 -1
  308. package/dist/internal/session-run-log.js +26 -11
  309. package/dist/internal/{convert-automation/slug.d.ts → slug.d.ts} +4 -1
  310. package/dist/internal/slug.d.ts.map +1 -0
  311. package/dist/internal/{convert-automation/slug.js → slug.js} +11 -1
  312. package/dist/playground/assets/index-7fVUOA5l.css +1 -0
  313. package/dist/playground/assets/{index-ClxRl2Cw.js → index-U3TRnwAP.js} +43 -43
  314. package/dist/playground/index.html +2 -2
  315. package/dist/types.d.ts +26 -1
  316. package/dist/types.d.ts.map +1 -1
  317. package/docs/README.md +1 -1
  318. package/docs/building-with-agents.md +5 -5
  319. package/docs/deployment.md +70 -33
  320. package/docs/evals.md +1 -16
  321. package/docs/guides/cloud-agents.md +3 -9
  322. package/docs/guides/grokbot-agents.md +10 -14
  323. package/docs/guides/hooks.md +0 -1
  324. package/docs/guides/improve.md +4 -6
  325. package/docs/guides/mcp-oauth.md +18 -41
  326. package/docs/guides/webhooks.md +35 -18
  327. package/docs/quickstart.md +2 -2
  328. package/docs/reference/agent-config.md +26 -1
  329. package/docs/reference/channels.md +29 -13
  330. package/docs/reference/cli.md +115 -42
  331. package/docs/reference/connections.md +6 -5
  332. package/docs/reference/evals.md +15 -4
  333. package/docs/reference/hooks.md +0 -1
  334. package/docs/reference/http-api.md +7 -17
  335. package/docs/reference/playground.md +2 -5
  336. package/docs/reference/schedules.md +26 -3
  337. package/docs/reference/sessions.md +1 -2
  338. package/docs/reference/skills.md +1 -1
  339. package/docs/reference/tools.md +3 -29
  340. package/docs/templates/grokbot-agents.md +1 -1
  341. package/docs/troubleshooting.md +12 -7
  342. package/package.json +36 -35
  343. package/schemas/grokbot-answers.schema.json +343 -0
  344. package/skills/create-agent/SKILL.md +16 -11
  345. package/skills/debug/SKILL.md +3 -4
  346. package/skills/evals/SKILL.md +2 -2
  347. package/skills/framework-map/SKILL.md +10 -10
  348. package/skills/mcp-auth/SKILL.md +10 -34
  349. package/skills/migrate-v2/SKILL.md +13 -9
  350. package/skills/setup-slack/SKILL.md +0 -13
  351. package/templates/agentic-owners/bot/lib/owners/handles.ts +1 -1
  352. package/templates/agentic-owners/bot/lib/owners/matching.ts +20 -9
  353. package/templates/agents-md/README.md +3 -3
  354. package/templates/agents-md/bot/channels/queue.ts +3 -8
  355. package/templates/agents-md/bot/instructions.md +1 -2
  356. package/templates/agents-md/bot/tools/apply_agents.ts +0 -1
  357. package/templates/agents-md/evals/agents.eval.ts +2 -2
  358. package/templates/demo/bot/channels/queue.ts +5 -15
  359. package/templates/grokbot-agents/.gitignore +4 -0
  360. package/templates/pr-autofixer/bot/channels/drive.ts +3 -16
  361. package/templates/security-help/.gitignore +4 -0
  362. package/templates/triage/bot/channels/queue.ts +11 -22
  363. package/templates/triage/bot/channels/webhook.ts +3 -6
  364. package/templates/triage/bot/lib/parse-queue-event.ts +0 -6
  365. package/dist/docs/assets/chunks/@localSearchIndexroot.CzrtdJ8s.js +0 -1
  366. package/dist/docs/assets/chunks/channel.6ebHhoF9.js +0 -1
  367. package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BJ-CwKwu.js +0 -1
  368. package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BJ-CwKwu.js +0 -1
  369. package/dist/docs/assets/chunks/clone.DfV2fkWH.js +0 -1
  370. package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DNdUCJyd.js +0 -1
  371. package/dist/docs/assets/chunks/wardley-RL74JXVD.C46G0P5a.js +0 -162
  372. package/dist/docs/assets/deployment.md.BYuEcDBv.js +0 -29
  373. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.js +0 -10
  374. package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.lean.js +0 -1
  375. package/dist/docs/assets/guides_grokbot-agents.md.tD1smFhU.js +0 -16
  376. package/dist/docs/assets/guides_mcp-oauth.md.DR3zhC9r.lean.js +0 -1
  377. package/dist/docs/assets/reference_channels.md.LbNIJBwd.js +0 -23
  378. package/dist/docs/assets/reference_http-api.md.DbFNOubV.js +0 -11
  379. package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +0 -1
  380. package/dist/docs/assets/reference_playground.md.1hx0gcIu.lean.js +0 -1
  381. package/dist/docs/assets/reference_sessions.md.CyM7ARz1.js +0 -1
  382. package/dist/docs/assets/reference_tools.md.DzIY9JzY.lean.js +0 -1
  383. package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +0 -1
  384. package/dist/internal/convert-automation/slug.d.ts.map +0 -1
  385. package/dist/playground/assets/index-BKSsuEMw.css +0 -1
  386. /package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.lean.js → guides_hooks.md.B_bKG1oA.lean.js} +0 -0
  387. /package/dist/docs/assets/{index.md.Dxxr7pFa.lean.js → index.md.BIBHIQtU.lean.js} +0 -0
  388. /package/dist/docs/assets/{quickstart.md.BK5gjHM2.lean.js → quickstart.md.CduLGBAB.lean.js} +0 -0
  389. /package/dist/docs/assets/{reference_hooks.md.B-eGa2km.lean.js → reference_hooks.md.DbJC8mcZ.lean.js} +0 -0
  390. /package/dist/docs/assets/{reference_sessions.md.CyM7ARz1.lean.js → reference_sessions.md.C_uzIWuy.lean.js} +0 -0
  391. /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C2GWh7g8.lean.js} +0 -0
  392. /package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.lean.js → templates_grokbot-agents.md.DgpPEs7B.lean.js} +0 -0
package/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent experience (AX)
2
2
 
3
- Guide for coding agents working on or with `@cursor/july`.
3
+ Guide for coding agents working on or with `@cursor/bdk`.
4
4
  Loop: edit files → inspect surface → run a turn → assert with filesystem
5
5
  evals. Prefer the CLI over ad-hoc curl.
6
6
 
@@ -13,9 +13,9 @@ Start machine-readable docs at `dist/docs/llms.txt` when it exists, or at
13
13
  `/docs/llms.txt` on a running host. Use `llms-full.txt` only when the whole
14
14
  documentation set is needed.
15
15
 
16
- Before committing or reviewing any Agent SDK documentation change, read the
16
+ Before committing or reviewing any BDK documentation change, read the
17
17
  repo-wide writing skill at `.cursor/skills/docs/writing/SKILL.md` (repo root)
18
- and run `/docs-lint` on every change. The Agent SDK naming, skill-link, and
18
+ and run `/docs-lint` on every change. The BDK naming, skill-link, and
19
19
  verify rules live in `.cursor/rules/packages/agent-sdk-docs-style.mdc` and
20
20
  attach automatically when a published docs file is in context.
21
21
 
@@ -23,7 +23,7 @@ Before writing or editing a template, read
23
23
  [`docs/.cursor/skills/template-lint/SKILL.md`](./docs/.cursor/skills/template-lint/SKILL.md).
24
24
  Run `/template-lint` before every commit or review that changes `templates/`.
25
25
 
26
- Run the CLI under **Node, never Bun** — use the installed `agent-sdk`
26
+ Run the CLI under **Node, never Bun** — use the installed `bdk`
27
27
  bin; from a source checkout of this package,
28
28
  `pnpm exec tsx src/bin/agent-serve.ts <command> …` is equivalent. Bun's
29
29
  HTTP/2 client corrupts local harness
@@ -34,7 +34,7 @@ built-in read/grep fail and sends models into retry loops.
34
34
 
35
35
  Before scaffolding, wiring channels, writing evals, or deploying, **read the
36
36
  matching skill under `skills/<task>/SKILL.md`** (paths
37
- below are relative to this package). Those files ship with `@cursor/july`.
37
+ below are relative to this package). Those files ship with `@cursor/bdk`.
38
38
  Cloud agents get the same published skills via `GetManagedSkills`,
39
39
  which reads these files. Open them directly. There are no
40
40
  `.cursor/skills/` stubs for authoring.
@@ -47,52 +47,52 @@ which reads these files. Open them directly. There are no
47
47
  | `skills/otel/SKILL.md` | OpenTelemetry export (OTLP env / `serve({ otel })` / `ctx.host.otel`) |
48
48
  | `skills/hillclimb/SKILL.md` | Improving an existing agent measurably |
49
49
  | `skills/github/SKILL.md` | GitHub webhook agents; replay / forward / fixtures / cursor-events |
50
- | `skills/setup-slack/SKILL.md` | Slack wiring and Slack tool approvals |
51
- | `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `--store`, `advertiseTools`, `host-connections/`) |
50
+ | `skills/setup-slack/SKILL.md` | Slack wiring and channel watching |
51
+ | `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`, `advertiseTools`, `host-connections/`, hosted `cursorAccount`) |
52
52
  | `skills/deploy/SKILL.md` | Deploy or redeploy from a pushed Git ref with an attached service account |
53
53
  | `skills/debug/SKILL.md` | Something misbehaving locally (symptom → cause) |
54
54
 
55
55
  Hosted-platform debug (stopped / slow start / health-fail, Datadog
56
56
  `cursor.agent_serve.*`) is the monorepo skill
57
57
  `.cursor/skills/debugging/debug-agentsdk-deployment/SKILL.md` — it does
58
- not ship with `@cursor/july`.
58
+ not ship with `@cursor/bdk`.
59
59
 
60
60
  ## Recommended loop
61
61
 
62
62
  ```bash
63
63
  # 1. Discover / validate
64
- agent-sdk validate --dir .
65
- agent-sdk info --dir . --json
64
+ bdk validate --dir .
65
+ bdk info --dir . --json
66
66
 
67
67
  # One-shot turn (ephemeral server, JSON trajectory + single NDJSON trace)
68
- agent-sdk run --dir . --message "What's the temperature in NYC?"
68
+ bdk run --dir . --message "What's the temperature in NYC?"
69
69
  # → trace at <dir>/.agent-serve/traces/<sessionId>.ndjson
70
- # Visualize: agent-sdk serve --dir . then playground → Open trace
70
+ # Visualize: bdk serve --dir . then playground → Open trace
71
71
 
72
72
  # Against a running server (deep-linkable in the playground)
73
- agent-sdk serve --dir . &
74
- agent-sdk run --url http://127.0.0.1:3000 --message "..."
73
+ bdk serve --dir . &
74
+ bdk run --url http://127.0.0.1:3000 --message "..."
75
75
  # → JSON includes playgroundUrl?sessionId=...
76
76
 
77
77
  # Optional: custom path / offline summary
78
- agent-sdk run --dir . --message "..." --events /tmp/run.ndjson
79
- agent-sdk trajectory --events /tmp/run.ndjson
78
+ bdk run --dir . --message "..." --events /tmp/run.ndjson
79
+ bdk trajectory --events /tmp/run.ndjson
80
80
 
81
81
  # Deterministic tool call (no model turn, no API key needed)
82
- agent-sdk call get_weather --dir . --input '{"city":"NYC"}'
82
+ bdk call get_weather --dir . --input '{"city":"NYC"}'
83
83
  # → POST /v1/tools/get_weather; validates input, runs execute in-process
84
84
 
85
85
  # 3. Evals (defineEval under evals/)
86
- agent-sdk eval --dir . --list
87
- agent-sdk eval --dir . --json
88
- agent-sdk eval --dir . weather/nyc
86
+ bdk eval --dir . --list
87
+ bdk eval --dir . --json
88
+ bdk eval --dir . weather/nyc
89
89
  ```
90
90
 
91
91
  ## Project layout
92
92
 
93
93
  ```
94
94
  my-agent/
95
- agent/
95
+ bot/
96
96
  agent.ts
97
97
  instructions.md
98
98
  tools/*.ts
@@ -108,7 +108,7 @@ my-agent/
108
108
  ## Authoring evals
109
109
 
110
110
  ```ts
111
- import { defineEval, includes } from "@cursor/july/evals";
111
+ import { defineEval, includes } from "@cursor/bdk/evals";
112
112
 
113
113
  // One datapoint per file, or many via `cases` (ids = <fileId>/<case.id>)
114
114
  export default defineEval({
@@ -132,12 +132,12 @@ Select with the CLI: one datapoint (`weather/nyc`), a whole file
132
132
  (`weather`), several ids, or omit for all.
133
133
 
134
134
  `evals/evals.config.ts` must set `maxConcurrency` (hard-capped at 200 due to
135
- model provider request limits; examples use `20`). Playground batches default
136
- to in-memory only (`maxPlaygroundRuns`, default 20); declare an `evals` table
137
- in `agent/storage.ts` (`defineStorage`) to survive serve restart:
135
+ model provider request limits; examples use `20`). Playground batches stay
136
+ in memory only (`maxPlaygroundRuns`, default 20), and a serve restart loses
137
+ them:
138
138
 
139
139
  ```ts
140
- import { defineEvalConfig } from "@cursor/july/evals";
140
+ import { defineEvalConfig } from "@cursor/bdk/evals";
141
141
 
142
142
  export default defineEvalConfig({
143
143
  maxConcurrency: 20,
@@ -158,9 +158,9 @@ export default defineEvalConfig({
158
158
  `~/.cursor/skills/bdk/` (TTY only; always overwrites with the
159
159
  package copy, with `alwaysApply: true` so Cursor injects them).
160
160
  Consumer installs already copy those skills in postinstall; the
161
- source checkout does not. Links `agent-sdk` onto the
162
- npm global bin (so bare `agent-sdk` works on PATH), runs `login` and
163
- waits when unsigned, then prints `cd` (when needed) and `agent-sdk dev`.
161
+ source checkout does not. Links `bdk` onto the
162
+ npm global bin (so bare `bdk` works on PATH), runs `login` and
163
+ waits when unsigned, then prints `cd` (when needed) and `bdk dev`.
164
164
  `--json` still installs but never blocks on login or skill install; it
165
165
  prints
166
166
  `{ ok, directory, created, skipped, installed, installError, cliOnPath, cliLinkError, next }`.
@@ -179,7 +179,7 @@ the `mcp` channel and are visible in the playground.
179
179
  Wire one agent to another with a **peer MCP connection**:
180
180
 
181
181
  ```ts
182
- // agent/mcp-connections/weather.ts
182
+ // bot/mcp-connections/weather.ts
183
183
  export default defineConnection({ agent: "weather-agent" });
184
184
  ```
185
185
 
@@ -191,23 +191,23 @@ instructions so A→B→A recursion cannot happen (e.g. a parent agent that
191
191
  delegates *only* weather questions to a `weather-agent` peer).
192
192
 
193
193
  ```bash
194
- agent-sdk dev ./agents
195
- agent-sdk chat --url http://127.0.0.1:3000/concierge --message "Weather in Paris?"
194
+ bdk dev ./agents
195
+ bdk chat --url http://127.0.0.1:3000/concierge --message "Weather in Paris?"
196
196
  ```
197
197
 
198
198
  ## Slack channel
199
199
 
200
200
  `slackChannel()` is a dedicated Socket Mode Slack app (no public Request
201
- URL). Import from `@cursor/july/channels/slack`. Mint the app with
202
- `agent-sdk slack create`; mention the bot (or DM it) in Slack.
201
+ URL). Import from `@cursor/bdk/channels/slack`. Mint the app with
202
+ `bdk slack create`; mention the bot (or DM it) in Slack.
203
203
 
204
204
  ```bash
205
- agent-sdk slack setup
206
- agent-sdk slack create --dir ./my-agent --channel-posts
205
+ bdk slack setup
206
+ bdk slack create --dir ./my-agent --channel-posts
207
207
  # envPrefix from the directory name (MY_AGENT_SLACK_*)
208
- # Manual path: agent-sdk slack init --manual --dir ./my-agent
209
- agent-sdk slack doctor --prefix MY_AGENT
210
- agent-sdk dev ./my-agent
208
+ # Manual path: bdk slack init --manual --dir ./my-agent
209
+ bdk slack doctor --prefix MY_AGENT
210
+ bdk dev ./my-agent
211
211
  ```
212
212
 
213
213
  Multi-agent serve needs **one Slack app (and token pair) per agent**:
@@ -215,8 +215,7 @@ Multi-agent serve needs **one Slack app (and token pair) per agent**:
215
215
  that channel idle instead of failing `serve`. Single-agent setups can use the
216
216
  shared `SLACK_*` vars (`slackChannel()` / `slack create --no-prefix`).
217
217
 
218
- Channel watching is `engagement.channelPosts`. Tool approvals are
219
- `toolApprovals` / `interactivity`.
218
+ Channel watching is `engagement.channelPosts`.
220
219
 
221
220
  Replies default to `reply: { mode: "post" }` (status chip while the turn
222
221
  runs, one message at the end); `reply: { mode: "stream" }` streams the answer
@@ -228,7 +227,7 @@ Guided skill: `skills/setup-slack/SKILL.md`.
228
227
  The web playground is a Vite + React SPA under `playground/` (entry
229
228
  `playground/src/main.tsx`).
230
229
 
231
- `agent-sdk serve` handles the Vite side for you:
230
+ `bdk serve` handles the Vite side for you:
232
231
 
233
232
  - If `dist/playground/` is missing and the local vite toolchain is present,
234
233
  serve auto-runs `vite build` before listening.
@@ -243,8 +242,8 @@ The web playground is a Vite + React SPA under `playground/` (entry
243
242
 
244
243
  ## GitHub channel
245
244
 
246
- Author `agent/channels/github.ts` with `githubChannel()` from
247
- `@cursor/july/channels/github`; it mounts `POST /v1/channels/github`
245
+ Author `bot/channels/github.ts` with `githubChannel()` from
246
+ `@cursor/bdk/channels/github`; it mounts `POST /v1/channels/github`
248
247
  and verifies `X-Hub-Signature-256` when a webhook secret is set. The channel
249
248
  publishes the webhook events it dispatches on (derived from the declared hooks,
250
249
  or pinned via `webhookEvents`) as `meta.githubWebhookEvents`. Auth default: with
@@ -270,15 +269,15 @@ remote):
270
269
 
271
270
  ```bash
272
271
  # one-time: gh + the cli/gh-webhook extension
273
- agent-sdk github doctor --install
272
+ bdk github doctor --install
274
273
 
275
274
  # what would be forwarded, per agent (URL + events)
276
- agent-sdk github events --dir ./agents --json
275
+ bdk github events --dir ./agents --json
277
276
 
278
277
  # forward live deliveries to a served agent (no secret needed against --dev;
279
278
  # set GITHUB_WEBHOOK_SECRET to verify signatures)
280
- agent-sdk dev ./my-agent &
281
- agent-sdk github forward --dir ./my-agent
279
+ bdk dev ./my-agent &
280
+ bdk github forward --dir ./my-agent
282
281
  ```
283
282
 
284
283
  When several channels match (e.g. a folder of agent projects), one forwarder fans out to
@@ -292,11 +291,11 @@ target, `--events` narrows the set, `--url` points at a tunnel, and `--slug` /
292
291
  authenticates its relay with the GitHub CLI's own login — so a `GITHUB_TOKEN` /
293
292
  `GH_TOKEN` env override makes deliveries **401** (hook creation still succeeds,
294
293
  which is the confusing part). Blank it for the command (`GITHUB_TOKEN= GH_TOKEN=
295
- agent-sdk github forward …`) or `unset` it; `github doctor` / `forward` warn
294
+ bdk github forward …`) or `unset` it; `github doctor` / `forward` warn
296
295
  when they detect an env token.
297
296
 
298
297
  When you lack repo admin, or want deterministic runs (hillclimbing), use
299
- `agent-sdk github replay <pr_url>` instead: it **reads** the PR via `gh api`
298
+ `bdk github replay <pr_url>` instead: it **reads** the PR via `gh api`
300
299
  (pull access only, `GITHUB_TOKEN` is fine), synthesizes GitHub-shaped payloads,
301
300
  signs them (`--secret`/`GITHUB_WEBHOOK_SECRET`), and POSTs them at the channel —
302
301
  no admin, no relay. `--events` defaults to `pull_request` (`*` = the channel's
@@ -318,13 +317,13 @@ Fixtures still work for offline replay: `POST` a saved payload with an
318
317
  `instructions.md` / skills (prose in `.md`, never TS string builders).
319
318
  Speculative caches (prefetch, fingerprint dedupe, write coalescing) need
320
319
  measured pressure first, and framework gaps (posting, chunking, retries)
321
- get fixed or filed in the framework, not worked around in `agent/lib/`.
320
+ get fixed or filed in the framework, not worked around in `bot/lib/`.
322
321
  Budget + smells: `skills/create-agent/SKILL.md` § "The deterministic-path
323
322
  budget".
324
323
  - Nested git checkouts default `local.cwd` to `~/.cache/agent-serve/<dir>`.
325
324
  Point cwd at a checkout only when the agent must inherit that tree.
326
325
  `run` / `eval` already use a temp state root.
327
- - Expect `agent/evals/` to be loaded — evals live at the **project root** `evals/`.
326
+ - Expect `bot/evals/` to be loaded — evals live at the **project root** `evals/`.
328
327
  - Build optional object fields with a conditional empty-object spread.
329
328
  Assign the property directly; `undefined` is fine on optional keys.
330
329
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The Grok Bot Development Kit (BDK) is how Cursor builds bots and
4
4
  agents. It is the open-source version of the engine behind Bugbot,
5
- Security Review, and Approval Bot.
5
+ Security Review, Approval Bot, and Rollouts.
6
6
 
7
7
  A BDK project is a folder of Markdown and TypeScript. Combine model
8
8
  judgment with deterministic code, then make the result available in
File without changes
@@ -27,6 +27,7 @@ import { cmdCancelRuns, cmdDelete, cmdDeploy, cmdDeploymentStatus, cmdDeployment
27
27
  import { cmdImagesList, cmdImagesPush, cmdImagesRm } from "../internal/cli-images.js";
28
28
  import { cmdManifest } from "../internal/cli-manifest.js";
29
29
  import { CLI_COMMAND_NAME as CLI, formatCliVersion, PACKAGE_NAME, packageVersion, } from "../internal/distribution.js";
30
+ import { initFlagConflict } from "../internal/init-project.js";
30
31
  import { v2HostedVerifyHint } from "../internal/legacy-command-guard.js";
31
32
  import { loadAgentLocalEnv } from "../internal/local-env.js";
32
33
  import { ENTER_RESTART_EXIT_CODE, isServeRestartWorker, runEnterRestartSupervisor, } from "../internal/serve-restart.js";
@@ -76,6 +77,8 @@ Usage:
76
77
  ${CLI} skill <name> [--dir <path> | --url <baseUrl> | --prod]
77
78
  [--slug <slug>] [--team <id>] [--text]
78
79
  ${CLI} init [dir] [--template <name>] [--var id=value]... [--json]
80
+ ${CLI} init [dir] --from-grokbot <recipe.json> [--answers <file>]
81
+ [--dry-run] [--json]
79
82
  ${CLI} convert-automation <url> [--dir <path>] [--json]
80
83
  ${CLI} migrate [--dir <path>] [--repo <url>] [--ref <ref>] [--path <agentPath>]
81
84
  [--no-wait] [--json]
@@ -104,7 +107,7 @@ Usage:
104
107
  ${CLI} version [--json]
105
108
  ${CLI} deploy [--dir <path>] [--slug <slug> | --all] [--team <id>] [--json]
106
109
  [--no-wait] [--repo <url>] [--ref <ref>]
107
- [--path <agentPath>] [--cursor-events-repo <owner/name>]...
110
+ [--path <agentPath>] [--cursor-events-repo <repo>]...
108
111
  [--allow-domain <domain>]...
109
112
  ${CLI} manifest [--dir <path>] [--json]
110
113
  ${CLI} deployments [--team <id>] [--json]
@@ -189,6 +192,13 @@ Commands:
189
192
  prompt. With --json or off a TTY, each question without a
190
193
  default needs --var. --json is machine-readable and never
191
194
  blocks on login. No directory: print the setup guide.
195
+ --from-grokbot converts a Grok Bot recipe instead: it asks
196
+ the export questions on a TTY or reads them from --answers
197
+ (schema: schemas/grokbot-answers.schema.json), writes the
198
+ project with SECRETS.md, a finish-the-export skill, and
199
+ SLACK.md for Slack bots, and installs npm dependencies. The
200
+ directory defaults to the answers' location. --dry-run
201
+ prints the preview and writes nothing.
192
202
  convert-automation
193
203
  Export a Cursor Automation into an agentsdk project. <url> is
194
204
  the dashboard URL (…/automations/<uuid> or
@@ -451,8 +461,10 @@ Options:
451
461
  --all deploy: every child agent under a multi-agent --dir
452
462
  (skips the interactive picker; mutually exclusive with
453
463
  --slug).
454
- --cursor-events-repo deploy: repo (owner/name) the deployed agent
455
- watches (repeatable).
464
+ --cursor-events-repo deploy: repo the deployed agent watches
465
+ (repeatable): owner/name for GitHub and Origin,
466
+ gitlab.com/<group>/<project>, or
467
+ bitbucket.org/<workspace>/<repo>.
456
468
  --allow-domain deploy: egress domain the engine pod may reach
457
469
  (repeatable; unioned with hosting.egressDomains from the
458
470
  agent manifest). Repo-backed deploys only.
@@ -514,6 +526,8 @@ async function main(argv) {
514
526
  dir: { type: "string", default: "." },
515
527
  template: { type: "string" },
516
528
  var: { type: "string", multiple: true },
529
+ "from-grokbot": { type: "string" },
530
+ answers: { type: "string" },
517
531
  port: { type: "string" },
518
532
  host: { type: "string" },
519
533
  mode: { type: "string" },
@@ -730,6 +744,30 @@ async function main(argv) {
730
744
  });
731
745
  }
732
746
  case "init": {
747
+ const conflict = initFlagConflict({
748
+ fromGrokbot: values["from-grokbot"],
749
+ answers: values.answers,
750
+ dryRun: values["dry-run"],
751
+ template: values.template,
752
+ vars: values.var,
753
+ });
754
+ if (conflict !== undefined) {
755
+ if (values.json) {
756
+ await writeStdout(`${JSON.stringify({ ok: false, error: conflict })}\n`);
757
+ }
758
+ process.stderr.write(`${conflict}\n`);
759
+ return 1;
760
+ }
761
+ if (values["from-grokbot"] !== undefined) {
762
+ const { cmdInitFromGrokbot } = await import("../internal/cli-init-grokbot.js");
763
+ return cmdInitFromGrokbot({
764
+ recipe: values["from-grokbot"],
765
+ answers: values.answers,
766
+ dir: positionals[0],
767
+ dryRun: values["dry-run"],
768
+ json: values.json,
769
+ });
770
+ }
733
771
  return cmdInit({
734
772
  dir,
735
773
  initTarget: positionals[0],
@@ -53,7 +53,7 @@ export { deriveGitHubWebhookEvents, GITHUB_CHANNEL_KIND } from "./events.js";
53
53
  export type { AgentMountLike, GitHubChannelTarget, GitHubForwardArgsInput, GitHubForwardTarget, ResolveGitHubForwardTargetsInput, ResolveGitHubForwardTargetsResult, } from "./forward.js";
54
54
  export { buildGitHubForwardArgs, channelForwardUrl, detectGitHubEnvTokenOverride, findGitHubChannelTargets, GITHUB_WEBHOOK_EXTENSION, GITHUB_WEBHOOK_EXTENSION_PIN, ghWebhookExtensionInstallArgs, ghWebhookExtensionPinSatisfied, githubEnvTokenHint, parseGhWebhookExtensionInstalled, parseGhWebhookExtensionVersion, parseRepoFromRemoteUrl, resolveGitHubForwardTargets, targetLabel, unionForwardEvents, } from "./forward.js";
55
55
  export type { GitHubPullRequestRef } from "./github-channel.js";
56
- export { defaultGitHubAuth, defaultGitHubPullRequestDispatch, defaultGitHubPullRequestMessage, defaultGitHubTitle, defaultOnComment, dispatchGitHubWebhook, extractGitHubCommentTrigger, getGitHubChannelOptions, githubChannel, githubContinuationKey, handleGitHubWebhookRequest, isGitHubAppBotAuthor, parseGitHubPrContinuationKey, parseGitHubPullRequestEvent, shouldDispatchGitHubComment, verifyGitHubWebhookSignature, } from "./github-channel.js";
56
+ export { defaultGitHubAuth, defaultGitHubPullRequestDispatch, defaultGitHubPullRequestMessage, defaultGitHubTitle, defaultOnComment, dispatchGitHubWebhook, extractGitHubCommentTrigger, getGitHubChannelOptions, githubChannel, githubChannelArchitectureError, githubChannelCredentialSecretNames, githubContinuationKey, handleGitHubWebhookRequest, isCursorAccountGitHubChannel, isGitHubAppBotAuthor, parseGitHubPrContinuationKey, parseGitHubPullRequestEvent, shouldDispatchGitHubComment, verifyGitHubWebhookSignature, } from "./github-channel.js";
57
57
  export type { GitHubBannerProgress, GitHubCommitStatusProgress, GitHubProgressConfig, GitHubProgressOptions, GitHubProgressPhase, GitHubProgressPhaseCopy, } from "./progress.js";
58
58
  export { applyGitHubProgress, progressPhaseCopy, resolveBannerProgress, resolveCommitStatusProgress, } from "./progress.js";
59
59
  export type { GitHubPrRef, ReplayCheck, ReplayPull, ReplayRepo, ReplayUser, SynthesizableEvent, SynthesizedEvent, SynthesizeInput, SynthesizeResult, } from "./replay.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ export { createGitHubCheck, resumeGitHubCheck } from "./checks.js";
46
46
  export { buildDefaultGitHubEvents } from "./defaults.js";
47
47
  export { deriveGitHubWebhookEvents, GITHUB_CHANNEL_KIND } from "./events.js";
48
48
  export { buildGitHubForwardArgs, channelForwardUrl, detectGitHubEnvTokenOverride, findGitHubChannelTargets, GITHUB_WEBHOOK_EXTENSION, GITHUB_WEBHOOK_EXTENSION_PIN, ghWebhookExtensionInstallArgs, ghWebhookExtensionPinSatisfied, githubEnvTokenHint, parseGhWebhookExtensionInstalled, parseGhWebhookExtensionVersion, parseRepoFromRemoteUrl, resolveGitHubForwardTargets, targetLabel, unionForwardEvents, } from "./forward.js";
49
- export { defaultGitHubAuth, defaultGitHubPullRequestDispatch, defaultGitHubPullRequestMessage, defaultGitHubTitle, defaultOnComment, dispatchGitHubWebhook, extractGitHubCommentTrigger, getGitHubChannelOptions, githubChannel, githubContinuationKey, handleGitHubWebhookRequest, isGitHubAppBotAuthor, parseGitHubPrContinuationKey, parseGitHubPullRequestEvent, shouldDispatchGitHubComment, verifyGitHubWebhookSignature, } from "./github-channel.js";
49
+ export { defaultGitHubAuth, defaultGitHubPullRequestDispatch, defaultGitHubPullRequestMessage, defaultGitHubTitle, defaultOnComment, dispatchGitHubWebhook, extractGitHubCommentTrigger, getGitHubChannelOptions, githubChannel, githubChannelArchitectureError, githubChannelCredentialSecretNames, githubContinuationKey, handleGitHubWebhookRequest, isCursorAccountGitHubChannel, isGitHubAppBotAuthor, parseGitHubPrContinuationKey, parseGitHubPullRequestEvent, shouldDispatchGitHubComment, verifyGitHubWebhookSignature, } from "./github-channel.js";
50
50
  export { applyGitHubProgress, progressPhaseCopy, resolveBannerProgress, resolveCommitStatusProgress, } from "./progress.js";
51
51
  export { isSynthesizableEvent, parseGitHubPrRef, SYNTHESIZABLE_EVENTS, selectReplayEvents, signGitHubWebhookBody, synthesizeGitHubEvent, } from "./replay.js";
52
52
  export { emptyGitHubChannelState, githubBindingStateForEvent } from "./state.js";
@@ -16,6 +16,8 @@ export declare function isSupportedDocumentFormat(args: {
16
16
  filename?: string;
17
17
  }): boolean;
18
18
  export declare function isSupportedVideoFormat(mimeType: string): boolean;
19
+ /** Slack's 1024px rendition when it made one: the backend downscales to that budget anyway. */
20
+ export declare function slackImageThumbnailUrl(file: Record<string, unknown>): string | undefined;
19
21
  /** Raw Slack file object (message `files[]` or forwarded share). */
20
22
  export interface RawSlackFile {
21
23
  id?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/attachments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/attachments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,yFAC+C,CAAC;AA4FzF,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIhE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CA2EhG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC;AAUhE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,uBAAuB,GAAG,SAAS,CAyBzF;AAOD,+EAA+E;AAC/E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAgBzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAoBnF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACnD,iDAAiD;IACjD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAkID,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAuInC;AAED,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,mBAAmB,GAAE,MAAqC,GACzD,MAAM,CAUR"}
@@ -174,6 +174,11 @@ export function isSupportedDocumentFormat(args) {
174
174
  export function isSupportedVideoFormat(mimeType) {
175
175
  return normalizeMimeType(mimeType).startsWith("video/");
176
176
  }
177
+ /** Slack's 1024px rendition when it made one: the backend downscales to that budget anyway. */
178
+ export function slackImageThumbnailUrl(file) {
179
+ const thumbnail = asString(file.thumb_1024);
180
+ return thumbnail !== undefined && thumbnail.length > 0 ? thumbnail : undefined;
181
+ }
177
182
  function hasTextSlackHint(file) {
178
183
  if (file.mode === "snippet") {
179
184
  return true;
@@ -297,13 +302,17 @@ async function downloadSlackFileBytes(args) {
297
302
  if (file === null) {
298
303
  return null;
299
304
  }
300
- const downloadUrl = asString(file.url_private_download);
305
+ const thumbnailUrl = args.preferImageThumbnail ? slackImageThumbnailUrl(file) : undefined;
306
+ const downloadUrl = thumbnailUrl ?? asString(file.url_private_download);
301
307
  if (downloadUrl === undefined || downloadUrl.length === 0) {
302
308
  return null;
303
309
  }
304
- const fileSize = asNumber(file.size);
305
- if (fileSize !== undefined && fileSize > args.maxBytes) {
306
- return null;
310
+ // `file.size` is the original's size, which says nothing about the rendition.
311
+ if (thumbnailUrl === undefined) {
312
+ const fileSize = asNumber(file.size);
313
+ if (fileSize !== undefined && fileSize > args.maxBytes) {
314
+ return null;
315
+ }
307
316
  }
308
317
  const botToken = await tryResolveBotToken({ botToken: args.botToken });
309
318
  const headers = {};
@@ -372,7 +381,9 @@ export async function prepareSlackAttachments(options) {
372
381
  if (classification === undefined) {
373
382
  return undefined;
374
383
  }
375
- if (file.size !== undefined && file.size > maxFileBytes) {
384
+ // A big image may still have a small rendition, so let the download decide.
385
+ const skipsSizeGate = classification.kind === "image" && file.dataBase64 === undefined;
386
+ if (!skipsSizeGate && file.size !== undefined && file.size > maxFileBytes) {
376
387
  options.log?.info("slack attachment skipped (size)", {
377
388
  file_id: file.id,
378
389
  size: file.size,
@@ -395,6 +406,7 @@ export async function prepareSlackAttachments(options) {
395
406
  fallbackMimeType: classification.mimeType,
396
407
  maxBytes: maxFileBytes,
397
408
  downloadTimeoutMs,
409
+ preferImageThumbnail: classification.kind === "image",
398
410
  });
399
411
  if (downloaded === null) {
400
412
  options.log?.info("slack attachment download failed", {
@@ -5,7 +5,8 @@
5
5
  * - The allowlist is a finite id list, or a lone `"*"` for every channel
6
6
  * the bot is in. Mixing `"*"` with ids is a definition error.
7
7
  * - Top-level posts only by default. `"replies"` is thread replies only
8
- * (`ts !== threadTs`). `"all"` is both. A lone `"*"` is replies only.
8
+ * (`ts !== threadTs`). `"all"` is both. A lone `"*"` is replies only, or
9
+ * `"all"` with `includeBotPosts` (hosted edges bound the top-level posts).
9
10
  * - Posts that @mention the bot are skipped here (the `app_mention` path
10
11
  * owns them).
11
12
  * - Bot-authored posts are dropped unless `includeBotPosts` is configured
@@ -31,7 +32,8 @@ export declare const CHANNEL_POSTS_MAX_CHANNEL_IDS = 10;
31
32
  * True when the allowlist is only `"*"`: every channel the bot is in.
32
33
  * Guest-side only. It is not a deploy-manifest subscription — the control
33
34
  * plane rejects `"*"` and already delivers a reply in a thread a mention
34
- * started. Top-level posts do not match it (`posts: "replies"`).
35
+ * started. Top-level posts match it only under `posts: "all"` with
36
+ * `includeBotPosts`, and on hosting only in channels with an edge.
35
37
  */
36
38
  export declare function channelPostsWatchEverywhere(entries: readonly string[]): boolean;
37
39
  /** The channel-id (`C…`/`G…`) entries of an allowlist, deduped. */
@@ -1 +1 @@
1
- {"version":3,"file":"channel-watch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/channel-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIzE;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG/E;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CASzE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAuBxF;AAED,sEAAsE;AACtE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC,YAAY,OAAO,EAAE,SAAS,MAAM,EAAE,EAqBrC;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAElC;IAED,eAAe,IAAI,MAAM,EAAE,CAE1B;IAED,uDAAuD;IACvD,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAO9D;CACF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,GAAG,GAAE,QAA0B,GAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,wBAAwB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,2CAA2C;IAC3C,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,wBAAwB,CAAC;IAClC,SAAS,EAAE,qBAAqB,CAAC;IACjC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,kBAAkB,CAwHrB"}
1
+ {"version":3,"file":"channel-watch.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/channel-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAIzE;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG/E;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CASzE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAuBxF;AAED,sEAAsE;AACtE,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC,YAAY,OAAO,EAAE,SAAS,MAAM,EAAE,EAqBrC;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAElC;IAED,eAAe,IAAI,MAAM,EAAE,CAE1B;IAED,uDAAuD;IACvD,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAO9D;CACF;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,GAAG,GAAE,QAA0B,GAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,MAAM,CAAC,KAAK,EAAE,wBAAwB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,2CAA2C;IAC3C,IAAI,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,wBAAwB,CAAC;IAClC,SAAS,EAAE,qBAAqB,CAAC;IACjC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GAAG,kBAAkB,CAwHrB"}
@@ -5,7 +5,8 @@
5
5
  * - The allowlist is a finite id list, or a lone `"*"` for every channel
6
6
  * the bot is in. Mixing `"*"` with ids is a definition error.
7
7
  * - Top-level posts only by default. `"replies"` is thread replies only
8
- * (`ts !== threadTs`). `"all"` is both. A lone `"*"` is replies only.
8
+ * (`ts !== threadTs`). `"all"` is both. A lone `"*"` is replies only, or
9
+ * `"all"` with `includeBotPosts` (hosted edges bound the top-level posts).
9
10
  * - Posts that @mention the bot are skipped here (the `app_mention` path
10
11
  * owns them).
11
12
  * - Bot-authored posts are dropped unless `includeBotPosts` is configured
@@ -29,7 +30,8 @@ export const CHANNEL_POSTS_MAX_CHANNEL_IDS = 10;
29
30
  * True when the allowlist is only `"*"`: every channel the bot is in.
30
31
  * Guest-side only. It is not a deploy-manifest subscription — the control
31
32
  * plane rejects `"*"` and already delivers a reply in a thread a mention
32
- * started. Top-level posts do not match it (`posts: "replies"`).
33
+ * started. Top-level posts match it only under `posts: "all"` with
34
+ * `includeBotPosts`, and on hosting only in channels with an edge.
33
35
  */
34
36
  export function channelPostsWatchEverywhere(entries) {
35
37
  const trimmed = entries.map((entry) => entry.trim()).filter((entry) => entry !== "");
@@ -1 +1 @@
1
- {"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,OAAO,KAAK,EAEV,iBAAiB,EAOlB,MAAM,gBAAgB,CAAC;AAwDxB,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAKpB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE1F;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAaD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,CA6oBtC"}
1
+ {"version":3,"file":"slack-channel.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/slack-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAQH,OAAO,KAAK,EAEV,iBAAiB,EAOlB,MAAM,gBAAgB,CAAC;AAwDxB,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAKpB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE1F;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,uBAAuB,GAAG,SAAS,CAYrC;AAaD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,mBAAwB,GACjC,iBAAiB,CAAC,iBAAiB,CAAC,CAipBtC"}
@@ -108,8 +108,10 @@ export function slackChannel(authored = {}) {
108
108
  if (allowError !== undefined) {
109
109
  throw new Error(`slackChannel engagement.channelPosts.allow ${allowError}`);
110
110
  }
111
- if (channelPostsWatchEverywhere(channelPosts.allow) && channelPosts.posts !== "replies") {
112
- throw new Error('slackChannel engagement.channelPosts: "*" watches every channel the bot is in, thread replies only. Set posts: "replies".');
111
+ if (channelPostsWatchEverywhere(channelPosts.allow) &&
112
+ channelPosts.posts !== "replies" &&
113
+ !(channelPosts.posts === "all" && channelPosts.includeBotPosts === true)) {
114
+ throw new Error('slackChannel engagement.channelPosts: "*" watches every channel the bot is in. Set posts: "replies", or posts: "all" with includeBotPosts: true.');
113
115
  }
114
116
  }
115
117
  const botMentions = engagement.botMentions;
@@ -470,15 +470,17 @@ export type SlackBlockActionHandler = (ctx: SlackBinding, action: SlackBlockActi
470
470
  export interface SlackChannelPostsOptions {
471
471
  /**
472
472
  * Channels to watch. Either a lone `"*"` (every channel the bot is in;
473
- * thread replies only — set `posts: "replies"`) or a finite list: at
473
+ * `posts: "replies"`, or `posts: "all"` with `includeBotPosts: true`) or a finite list: at
474
474
  * least one channel id (`C…` / `G…`), at most 10 distinct ids. Mixing
475
475
  * `"*"` with ids is a definition error. `#name` entries may accompany
476
476
  * ids (resolved via `conversations.list` on Socket Mode). On
477
477
  * Cursor-managed hosting, id entries become channel-scoped
478
478
  * subscriptions. A lone `"*"` is the guest watcher only: it is omitted
479
479
  * from the deploy manifest, and a thread reply is delivered when a
480
- * mention already opened that thread. The bot must be a member of a
481
- * channel to receive its messages.
480
+ * mention already opened that thread. On hosting, the deployment's
481
+ * channel edges decide which top-level posts arrive (for example an
482
+ * installation's alert channels), so `"*"` does not mean every channel.
483
+ * The bot must be a member of a channel to receive its messages.
482
484
  */
483
485
  allow: string[];
484
486
  /**
@@ -486,7 +488,7 @@ export interface SlackChannelPostsOptions {
486
488
  * channel posts — never on replies inside other people's threads.
487
489
  * `"replies"` is the opposite: thread replies only (`ts !== threadTs`),
488
490
  * never a top-level post. `"all"` is both. A lone `"*"` allowlist
489
- * requires `"replies"`.
491
+ * requires `"replies"`, or `"all"` together with `includeBotPosts: true`.
490
492
  */
491
493
  posts?: "top-level" | "all" | "replies";
492
494
  /**