@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.
- package/AGENTS.md +51 -52
- package/README.md +1 -1
- package/dist/bin/agent-sdk.js +0 -0
- package/dist/bin/agent-serve.js +41 -3
- package/dist/channels/github/index.d.ts +1 -1
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +1 -1
- package/dist/channels/slack/attachments.d.ts +2 -0
- package/dist/channels/slack/attachments.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +17 -5
- package/dist/channels/slack/channel-watch.d.ts +4 -2
- package/dist/channels/slack/channel-watch.d.ts.map +1 -1
- package/dist/channels/slack/channel-watch.js +4 -2
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +4 -2
- package/dist/channels/slack/types.d.ts +6 -4
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/connections.d.ts +29 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +54 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BN3sgOOo.js → app.BSrZkTHD.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.Df87rAe1.js → building-with-agents.md.Bi9CQ-bR.js} +3 -3
- package/dist/docs/assets/{building-with-agents.md.Df87rAe1.lean.js → building-with-agents.md.Bi9CQ-bR.lean.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.JUnN1Be1.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.CbA00dML.js → VPLocalSearchBox.BxmgcwIX.js} +1 -1
- package/dist/docs/assets/chunks/{arc.Byug8CZM.js → arc.CAid9y9R.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.D1_qmnQy.js → architectureDiagram-Q4EWVU46.kLxg-1A5.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.Dj-Nurf-.js → baseUniq.BWvpjFlO.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.BZwq3EIg.js → blockDiagram-DXYQGD6D.DyjX8R7M.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.dx75urO7.js → c4Diagram-AHTNJAMY.DBdWlnqr.js} +1 -1
- package/dist/docs/assets/chunks/channel.CWc3NN9g.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CIoddsDQ.js → chunk-4BX2VUAB.T5enPS2D.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.O3VsVBES.js → chunk-4TB4RGXK.D6zswRAS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.WNNWh0Pe.js → chunk-55IACEB6.Bh05N-a3.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BKVQwEME.js → chunk-EDXVE4YY.DZv_O-d9.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.Cv5iBz7A.js → chunk-FMBD7UC4.BY53CZaL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.wCDCToee.js → chunk-OYMX7WX6.CO5lI2PE.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.D3IGXhXA.js → chunk-QZHKN3VN.DMfpW0s4.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CAPPh-E7.js → chunk-YZCP3GAM.COPT56Nr.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D5a745iS.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D5a745iS.js +1 -0
- package/dist/docs/assets/chunks/clone.CCGVqN_B.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BQCFH3M5.js → cose-bilkent-S5V4N54A.BJSj7zzd.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.lHmdrh7L.js → dagre-KV5264BT.DDv7IQZT.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.EtSPnHgD.js → diagram-5BDNPKRD.BUoE9HFH.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DCyUnQT8.js → diagram-G4DWMVQ6.BF3JtrnJ.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5._E0Qqblb.js → diagram-MMDJMWI5.BvuCWc4e.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BDj4oyy_.js → diagram-TYMM5635._EqUGqFN.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.CrvnO6a3.js → erDiagram-SMLLAGMA.DxNvSdzj.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.DIhYc-2F.js → flowDiagram-DWJPFMVM.DVtRP546.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.hFqm_vio.js → ganttDiagram-T4ZO3ILL.Bn9vb7xI.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.N3GDaVDD.js → gitGraphDiagram-UUTBAWPF.45r6n737.js} +1 -1
- package/dist/docs/assets/chunks/{graph.DK28rMBx.js → graph.BOkX3Ws_.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.DHmE6W9M.js → infoDiagram-42DDH7IO.DyBCcxOm.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.ByUJuOYm.js → ishikawaDiagram-UXIWVN3A.kg0ywDlx.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BIUChFMh.js → journeyDiagram-VCZTEJTY.BUfrLnXA.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.CNgFXwo-.js → kanban-definition-6JOO6SKY.Bn7X35b2.js} +1 -1
- package/dist/docs/assets/chunks/{layout.BDnwE4ET.js → layout.B0QW6d8M.js} +1 -1
- package/dist/docs/assets/chunks/{linear.DmrYLXFs.js → linear.C59eCF0D.js} +1 -1
- package/dist/docs/assets/chunks/{min.BbYcWakN.js → min.BnDl0p08.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.C9x-klkv.js → mindmap-definition-QFDTVHPH.u2HYLooo.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.iufpEbi0.js → pieDiagram-DEJITSTG.CbnIrr9l.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DdoXbWL9.js → quadrantDiagram-34T5L4WZ.D2zWIixq.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.XL1-_pNk.js → requirementDiagram-MS252O5E.DvOFa3oO.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.DySXofNs.js → sankeyDiagram-XADWPNL6.BfKCkH3x.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Cp0GZoOU.js → sequenceDiagram-FGHM5R23.CUPKdYN0.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.DvK-sXUX.js → stateDiagram-FHFEXIEX.CimDCRiK.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.ClNUVSTQ.js +1 -0
- package/dist/docs/assets/chunks/{theme.Clup4iIo.js → theme.CKht7z82.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.gHI9ZLm6.js → timeline-definition-GMOUNBTQ.BFTd5qKs.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.G2N2zXYe.js → vennDiagram-DHZGUBPP.N6t5MmCb.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.D2G6Zyds.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.BgUKEagd.js → wardleyDiagram-NUSXRM2D.BqScALbL.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CwH7oege.js → xychartDiagram-5P7HB3ND.Br0WiDkT.js} +1 -1
- package/dist/docs/assets/deployment.md.hKKN9I4c.js +31 -0
- package/dist/docs/assets/{deployment.md.BYuEcDBv.lean.js → deployment.md.hKKN9I4c.lean.js} +1 -1
- package/dist/docs/assets/{evals.md.C851kViu.js → evals.md.CHR34K1Y.js} +3 -7
- package/dist/docs/assets/{evals.md.C851kViu.lean.js → evals.md.CHR34K1Y.lean.js} +1 -1
- package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.js +9 -0
- package/dist/docs/assets/guides_cloud-agents.md.CBK7W0-O.lean.js +1 -0
- package/dist/docs/assets/guides_grokbot-agents.md.BwAykJ7U.js +15 -0
- package/dist/docs/assets/{guides_grokbot-agents.md.tD1smFhU.lean.js → guides_grokbot-agents.md.BwAykJ7U.lean.js} +1 -1
- package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.js → guides_hooks.md.B_bKG1oA.js} +1 -1
- package/dist/docs/assets/{guides_improve.md.CRrYq22s.js → guides_improve.md.CZKVt1cT.js} +2 -3
- package/dist/docs/assets/{guides_improve.md.CRrYq22s.lean.js → guides_improve.md.CZKVt1cT.lean.js} +1 -1
- package/dist/docs/assets/{guides_mcp-oauth.md.DR3zhC9r.js → guides_mcp-oauth.md.BM_eFC0L.js} +3 -15
- package/dist/docs/assets/guides_mcp-oauth.md.BM_eFC0L.lean.js +1 -0
- package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.js → guides_webhooks.md.Cpdc3BDX.js} +13 -12
- package/dist/docs/assets/{guides_webhooks.md.BBvAm_VF.lean.js → guides_webhooks.md.Cpdc3BDX.lean.js} +1 -1
- package/dist/docs/assets/{index.md.Dxxr7pFa.js → index.md.BIBHIQtU.js} +1 -1
- package/dist/docs/assets/{quickstart.md.BK5gjHM2.js → quickstart.md.CduLGBAB.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.js → reference_agent-config.md.DYA6ge6t.js} +7 -4
- package/dist/docs/assets/{reference_agent-config.md.DrtLxWgR.lean.js → reference_agent-config.md.DYA6ge6t.lean.js} +1 -1
- package/dist/docs/assets/reference_channels.md.DYg0CLud.js +22 -0
- package/dist/docs/assets/{reference_channels.md.LbNIJBwd.lean.js → reference_channels.md.DYg0CLud.lean.js} +1 -1
- package/dist/docs/assets/{reference_cli.md.dYCAL2lB.js → reference_cli.md.2d2Y0O-d.js} +16 -13
- package/dist/docs/assets/{reference_cli.md.dYCAL2lB.lean.js → reference_cli.md.2d2Y0O-d.lean.js} +1 -1
- package/dist/docs/assets/{reference_connections.md.DLrgAd5f.js → reference_connections.md.CxbLpaaP.js} +4 -5
- package/dist/docs/assets/{reference_connections.md.DLrgAd5f.lean.js → reference_connections.md.CxbLpaaP.lean.js} +1 -1
- package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.js → reference_evals.md.Ccwp4x3o.js} +4 -4
- package/dist/docs/assets/{reference_evals.md.D5i8PuXJ.lean.js → reference_evals.md.Ccwp4x3o.lean.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.B-eGa2km.js → reference_hooks.md.DbJC8mcZ.js} +1 -1
- package/dist/docs/assets/reference_http-api.md.CrqhTv6S.js +11 -0
- package/dist/docs/assets/{reference_http-api.md.DbFNOubV.lean.js → reference_http-api.md.CrqhTv6S.lean.js} +1 -1
- package/dist/docs/assets/reference_playground.md.q4MI-0td.js +1 -0
- package/dist/docs/assets/reference_playground.md.q4MI-0td.lean.js +1 -0
- package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.js → reference_schedules.md.03Ryy9ca.js} +5 -5
- package/dist/docs/assets/{reference_schedules.md.BuJ8fgMa.lean.js → reference_schedules.md.03Ryy9ca.lean.js} +1 -1
- package/dist/docs/assets/reference_sessions.md.C_uzIWuy.js +1 -0
- package/dist/docs/assets/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C2GWh7g8.js} +4 -4
- package/dist/docs/assets/{reference_tools.md.DzIY9JzY.js → reference_tools.md.08XR7lIl.js} +3 -14
- package/dist/docs/assets/reference_tools.md.08XR7lIl.lean.js +1 -0
- package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.js → templates_grokbot-agents.md.DgpPEs7B.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.PCafNCb5.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.x-GBa7wN.lean.js → troubleshooting.md.PCafNCb5.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +5 -5
- package/dist/docs/deployment.html +43 -41
- package/dist/docs/deployment.md +70 -33
- package/dist/docs/evals.html +38 -42
- package/dist/docs/evals.md +1 -16
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +35 -35
- package/dist/docs/guides/cloud-agents.html +38 -39
- package/dist/docs/guides/cloud-agents.md +2 -8
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +35 -35
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +37 -38
- package/dist/docs/guides/grokbot-agents.md +9 -13
- package/dist/docs/guides/hooks.html +37 -37
- package/dist/docs/guides/hooks.md +0 -1
- package/dist/docs/guides/improve.html +37 -38
- package/dist/docs/guides/improve.md +4 -6
- package/dist/docs/guides/jev.html +35 -35
- package/dist/docs/guides/mcp-oauth.html +39 -51
- package/dist/docs/guides/mcp-oauth.md +17 -40
- package/dist/docs/guides/migrate.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- package/dist/docs/guides/webhooks.html +47 -46
- package/dist/docs/guides/webhooks.md +35 -18
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +36 -36
- package/dist/docs/index.md +1 -1
- package/dist/docs/llms-full.txt +388 -272
- package/dist/docs/llms.txt +4 -4
- package/dist/docs/quickstart.html +37 -37
- package/dist/docs/quickstart.md +2 -2
- package/dist/docs/reference/agent-config.html +41 -38
- package/dist/docs/reference/agent-config.md +26 -1
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +42 -43
- package/dist/docs/reference/channels.md +29 -13
- package/dist/docs/reference/cli.html +50 -47
- package/dist/docs/reference/cli.md +115 -42
- package/dist/docs/reference/connections.html +39 -40
- package/dist/docs/reference/connections.md +6 -5
- package/dist/docs/reference/evals.html +38 -38
- package/dist/docs/reference/evals.md +15 -4
- package/dist/docs/reference/extensions.html +35 -35
- package/dist/docs/reference/hooks.html +37 -37
- package/dist/docs/reference/hooks.md +0 -1
- package/dist/docs/reference/http-api.html +38 -38
- package/dist/docs/reference/http-api.md +7 -17
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +37 -37
- package/dist/docs/reference/playground.md +1 -4
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +39 -39
- package/dist/docs/reference/schedules.md +26 -3
- package/dist/docs/reference/sessions.html +36 -36
- package/dist/docs/reference/sessions.md +1 -2
- package/dist/docs/reference/skills.html +39 -39
- package/dist/docs/reference/skills.md +1 -1
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +39 -50
- package/dist/docs/reference/tools.md +2 -28
- package/dist/docs/templates/agentic-owners.html +35 -35
- package/dist/docs/templates/grokbot-agents.html +37 -37
- package/dist/docs/templates/grokbot-agents.md +1 -1
- package/dist/docs/templates/security-reviewer.html +35 -35
- package/dist/docs/templates/thermo-quality-review.html +35 -35
- package/dist/docs/templates/thermo-review.html +35 -35
- package/dist/docs/templates/triage.html +35 -35
- package/dist/docs/troubleshooting.html +36 -36
- package/dist/docs/troubleshooting.md +12 -7
- package/dist/extensions/cursor-cloud-agents/extension.d.ts +5 -1
- package/dist/extensions/cursor-cloud-agents/extension.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -0
- package/dist/extensions/cursor-cloud-agents/lib/channels.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/channels.js +5 -1
- package/dist/filesystem.d.ts.map +1 -1
- package/dist/filesystem.js +4 -8
- package/dist/internal/cli-convert-automation.js +9 -19
- package/dist/internal/cli-deploy.d.ts +1 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +18 -3
- package/dist/internal/cli-init-grokbot.d.ts +29 -0
- package/dist/internal/cli-init-grokbot.d.ts.map +1 -0
- package/dist/internal/cli-init-grokbot.js +181 -0
- package/dist/internal/cli-slack.js +1 -1
- package/dist/internal/comment-safe.d.ts +8 -0
- package/dist/internal/comment-safe.d.ts.map +1 -0
- package/dist/internal/comment-safe.js +12 -0
- package/dist/internal/continuation-identity.js +1 -1
- package/dist/internal/convert-automation/convert-workflow.d.ts.map +1 -1
- package/dist/internal/convert-automation/convert-workflow.js +2 -14
- package/dist/internal/convert-grokbot/answers.d.ts +127 -0
- package/dist/internal/convert-grokbot/answers.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/answers.js +443 -0
- package/dist/internal/convert-grokbot/bot.d.ts +50 -0
- package/dist/internal/convert-grokbot/bot.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/bot.js +72 -0
- package/dist/internal/convert-grokbot/checks.d.ts +26 -0
- package/dist/internal/convert-grokbot/checks.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/checks.js +170 -0
- package/dist/internal/convert-grokbot/convert.d.ts +60 -0
- package/dist/internal/convert-grokbot/convert.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/convert.js +470 -0
- package/dist/internal/convert-grokbot/handoff.d.ts +44 -0
- package/dist/internal/convert-grokbot/handoff.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/handoff.js +160 -0
- package/dist/internal/convert-grokbot/recipe.d.ts +61 -0
- package/dist/internal/convert-grokbot/recipe.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/recipe.js +94 -0
- package/dist/internal/convert-grokbot/routine.d.ts +51 -0
- package/dist/internal/convert-grokbot/routine.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/routine.js +128 -0
- package/dist/internal/convert-grokbot/slack.d.ts +28 -0
- package/dist/internal/convert-grokbot/slack.d.ts.map +1 -0
- package/dist/internal/convert-grokbot/slack.js +50 -0
- package/dist/internal/deploy-client.d.ts +0 -2
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +2 -11
- package/dist/internal/discovery/agent-config.d.ts +6 -0
- package/dist/internal/discovery/agent-config.d.ts.map +1 -1
- package/dist/internal/discovery/agent-config.js +19 -0
- package/dist/internal/discovery/agent.d.ts.map +1 -1
- package/dist/internal/discovery/agent.js +2 -1
- package/dist/internal/discovery/names.d.ts +2 -0
- package/dist/internal/discovery/names.d.ts.map +1 -1
- package/dist/internal/discovery/names.js +2 -0
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +1 -3
- package/dist/internal/eval-judge-model.d.ts +10 -5
- package/dist/internal/eval-judge-model.d.ts.map +1 -1
- package/dist/internal/eval-judge-model.js +36 -25
- package/dist/internal/filesystem/subagent-inherit.d.ts +39 -0
- package/dist/internal/filesystem/subagent-inherit.d.ts.map +1 -0
- package/dist/internal/filesystem/subagent-inherit.js +96 -0
- package/dist/internal/filesystem/tools.d.ts +6 -0
- package/dist/internal/filesystem/tools.d.ts.map +1 -1
- package/dist/internal/filesystem/tools.js +38 -1
- package/dist/internal/hosted-catch-protocol.d.ts +2 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +2 -0
- package/dist/internal/hosted-catch.d.ts +2 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +2 -3
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +46 -13
- package/dist/internal/hosted-execution-flush.d.ts +6 -3
- package/dist/internal/hosted-execution-flush.d.ts.map +1 -1
- package/dist/internal/hosted-execution-flush.js +28 -31
- package/dist/internal/hosting.d.ts +1 -1
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +7 -3
- package/dist/internal/init-interview.d.ts +3 -5
- package/dist/internal/init-interview.d.ts.map +1 -1
- package/dist/internal/init-interview.js +15 -88
- package/dist/internal/init-project.d.ts +13 -0
- package/dist/internal/init-project.d.ts.map +1 -1
- package/dist/internal/init-project.js +30 -37
- package/dist/internal/init-scaffold.d.ts +11 -0
- package/dist/internal/init-scaffold.d.ts.map +1 -1
- package/dist/internal/init-scaffold.js +47 -13
- package/dist/internal/interview/agent-questions.d.ts +19 -0
- package/dist/internal/interview/agent-questions.d.ts.map +1 -0
- package/dist/internal/interview/agent-questions.js +120 -0
- package/dist/internal/interview/question.d.ts +82 -0
- package/dist/internal/interview/question.d.ts.map +1 -0
- package/dist/internal/interview/question.js +198 -0
- package/dist/internal/local-control-plane.d.ts.map +1 -1
- package/dist/internal/local-control-plane.js +5 -1
- package/dist/internal/otel/collector.d.ts +2 -0
- package/dist/internal/otel/collector.d.ts.map +1 -1
- package/dist/internal/otel/collector.js +4 -0
- package/dist/internal/peer-connections.d.ts +6 -2
- package/dist/internal/peer-connections.d.ts.map +1 -1
- package/dist/internal/peer-connections.js +23 -19
- package/dist/internal/resolve-prod-target.d.ts.map +1 -1
- package/dist/internal/resolve-prod-target.js +2 -1
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +43 -16
- package/dist/internal/sdk-subagent-inherit-support.d.ts +9 -0
- package/dist/internal/sdk-subagent-inherit-support.d.ts.map +1 -0
- package/dist/internal/sdk-subagent-inherit-support.js +89 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +6 -5
- package/dist/internal/session-engine.d.ts +13 -0
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +62 -11
- package/dist/internal/session-run-log.d.ts.map +1 -1
- package/dist/internal/session-run-log.js +26 -11
- package/dist/internal/{convert-automation/slug.d.ts → slug.d.ts} +4 -1
- package/dist/internal/slug.d.ts.map +1 -0
- package/dist/internal/{convert-automation/slug.js → slug.js} +11 -1
- package/dist/playground/assets/index-7fVUOA5l.css +1 -0
- package/dist/playground/assets/{index-ClxRl2Cw.js → index-U3TRnwAP.js} +43 -43
- package/dist/playground/index.html +2 -2
- package/dist/types.d.ts +26 -1
- package/dist/types.d.ts.map +1 -1
- package/docs/README.md +1 -1
- package/docs/building-with-agents.md +5 -5
- package/docs/deployment.md +70 -33
- package/docs/evals.md +1 -16
- package/docs/guides/cloud-agents.md +3 -9
- package/docs/guides/grokbot-agents.md +10 -14
- package/docs/guides/hooks.md +0 -1
- package/docs/guides/improve.md +4 -6
- package/docs/guides/mcp-oauth.md +18 -41
- package/docs/guides/webhooks.md +35 -18
- package/docs/quickstart.md +2 -2
- package/docs/reference/agent-config.md +26 -1
- package/docs/reference/channels.md +29 -13
- package/docs/reference/cli.md +115 -42
- package/docs/reference/connections.md +6 -5
- package/docs/reference/evals.md +15 -4
- package/docs/reference/hooks.md +0 -1
- package/docs/reference/http-api.md +7 -17
- package/docs/reference/playground.md +2 -5
- package/docs/reference/schedules.md +26 -3
- package/docs/reference/sessions.md +1 -2
- package/docs/reference/skills.md +1 -1
- package/docs/reference/tools.md +3 -29
- package/docs/templates/grokbot-agents.md +1 -1
- package/docs/troubleshooting.md +12 -7
- package/package.json +36 -35
- package/schemas/grokbot-answers.schema.json +343 -0
- package/skills/create-agent/SKILL.md +16 -11
- package/skills/debug/SKILL.md +3 -4
- package/skills/evals/SKILL.md +2 -2
- package/skills/framework-map/SKILL.md +10 -10
- package/skills/mcp-auth/SKILL.md +10 -34
- package/skills/migrate-v2/SKILL.md +13 -9
- package/skills/setup-slack/SKILL.md +0 -13
- package/templates/agentic-owners/bot/lib/owners/handles.ts +1 -1
- package/templates/agentic-owners/bot/lib/owners/matching.ts +20 -9
- package/templates/agents-md/README.md +3 -3
- package/templates/agents-md/bot/channels/queue.ts +3 -8
- package/templates/agents-md/bot/instructions.md +1 -2
- package/templates/agents-md/bot/tools/apply_agents.ts +0 -1
- package/templates/agents-md/evals/agents.eval.ts +2 -2
- package/templates/demo/bot/channels/queue.ts +5 -15
- package/templates/grokbot-agents/.gitignore +4 -0
- package/templates/pr-autofixer/bot/channels/drive.ts +3 -16
- package/templates/security-help/.gitignore +4 -0
- package/templates/triage/bot/channels/queue.ts +11 -22
- package/templates/triage/bot/channels/webhook.ts +3 -6
- package/templates/triage/bot/lib/parse-queue-event.ts +0 -6
- package/dist/docs/assets/chunks/@localSearchIndexroot.CzrtdJ8s.js +0 -1
- package/dist/docs/assets/chunks/channel.6ebHhoF9.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.BJ-CwKwu.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.BJ-CwKwu.js +0 -1
- package/dist/docs/assets/chunks/clone.DfV2fkWH.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DNdUCJyd.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.C46G0P5a.js +0 -162
- package/dist/docs/assets/deployment.md.BYuEcDBv.js +0 -29
- package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.js +0 -10
- package/dist/docs/assets/guides_cloud-agents.md.CWJjS9No.lean.js +0 -1
- package/dist/docs/assets/guides_grokbot-agents.md.tD1smFhU.js +0 -16
- package/dist/docs/assets/guides_mcp-oauth.md.DR3zhC9r.lean.js +0 -1
- package/dist/docs/assets/reference_channels.md.LbNIJBwd.js +0 -23
- package/dist/docs/assets/reference_http-api.md.DbFNOubV.js +0 -11
- package/dist/docs/assets/reference_playground.md.1hx0gcIu.js +0 -1
- package/dist/docs/assets/reference_playground.md.1hx0gcIu.lean.js +0 -1
- package/dist/docs/assets/reference_sessions.md.CyM7ARz1.js +0 -1
- package/dist/docs/assets/reference_tools.md.DzIY9JzY.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +0 -1
- package/dist/internal/convert-automation/slug.d.ts.map +0 -1
- package/dist/playground/assets/index-BKSsuEMw.css +0 -1
- /package/dist/docs/assets/{guides_hooks.md.5Ce3NXxZ.lean.js → guides_hooks.md.B_bKG1oA.lean.js} +0 -0
- /package/dist/docs/assets/{index.md.Dxxr7pFa.lean.js → index.md.BIBHIQtU.lean.js} +0 -0
- /package/dist/docs/assets/{quickstart.md.BK5gjHM2.lean.js → quickstart.md.CduLGBAB.lean.js} +0 -0
- /package/dist/docs/assets/{reference_hooks.md.B-eGa2km.lean.js → reference_hooks.md.DbJC8mcZ.lean.js} +0 -0
- /package/dist/docs/assets/{reference_sessions.md.CyM7ARz1.lean.js → reference_sessions.md.C_uzIWuy.lean.js} +0 -0
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C2GWh7g8.lean.js} +0 -0
- /package/dist/docs/assets/{templates_grokbot-agents.md.2sydjFiO.lean.js → templates_grokbot-agents.md.DgpPEs7B.lean.js} +0 -0
package/AGENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent experience (AX)
|
|
2
2
|
|
|
3
|
-
Guide for coding agents working on or with `@cursor/
|
|
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
|
|
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
|
|
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 `
|
|
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/
|
|
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
|
|
51
|
-
| `skills/mcp-auth/SKILL.md` | Host MCP OAuth (`mcp oauth`,
|
|
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/
|
|
58
|
+
not ship with `@cursor/bdk`.
|
|
59
59
|
|
|
60
60
|
## Recommended loop
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
# 1. Discover / validate
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
bdk validate --dir .
|
|
65
|
+
bdk info --dir . --json
|
|
66
66
|
|
|
67
67
|
# One-shot turn (ephemeral server, JSON trajectory + single NDJSON trace)
|
|
68
|
-
|
|
68
|
+
bdk run --dir . --message "What's the temperature in NYC?"
|
|
69
69
|
# → trace at <dir>/.agent-serve/traces/<sessionId>.ndjson
|
|
70
|
-
# Visualize:
|
|
70
|
+
# Visualize: bdk serve --dir . then playground → Open trace
|
|
71
71
|
|
|
72
72
|
# Against a running server (deep-linkable in the playground)
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
79
|
-
|
|
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
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
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/
|
|
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
|
|
136
|
-
|
|
137
|
-
|
|
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/
|
|
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 `
|
|
162
|
-
npm global bin (so bare `
|
|
163
|
-
waits when unsigned, then prints `cd` (when needed) and `
|
|
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
|
-
//
|
|
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
|
-
|
|
195
|
-
|
|
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/
|
|
202
|
-
`
|
|
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
|
-
|
|
206
|
-
|
|
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:
|
|
209
|
-
|
|
210
|
-
|
|
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`.
|
|
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
|
-
`
|
|
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 `
|
|
247
|
-
`@cursor/
|
|
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
|
-
|
|
272
|
+
bdk github doctor --install
|
|
274
273
|
|
|
275
274
|
# what would be forwarded, per agent (URL + events)
|
|
276
|
-
|
|
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
|
-
|
|
281
|
-
|
|
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
|
-
|
|
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
|
-
`
|
|
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 `
|
|
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 `
|
|
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,
|
|
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
|
package/dist/bin/agent-sdk.js
CHANGED
|
File without changes
|
package/dist/bin/agent-serve.js
CHANGED
|
@@ -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 <
|
|
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
|
|
455
|
-
|
|
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":"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,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;
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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
|
-
|
|
305
|
-
if (
|
|
306
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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) &&
|
|
112
|
-
|
|
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
|
-
*
|
|
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.
|
|
481
|
-
* channel
|
|
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
|
/**
|