@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
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bot a recipe describes. Slugs are claimed here once, so questions,
|
|
3
|
+
* answers, and output paths all name items the same way. Names become one
|
|
4
|
+
* printable line and prose loses unprintable characters, so recipe text is
|
|
5
|
+
* safe to show in a terminal or a list.
|
|
6
|
+
*/
|
|
7
|
+
import { parseYamlFrontmatter } from "../frontmatter.js";
|
|
8
|
+
import { isRecord } from "../is-record.js";
|
|
9
|
+
import { SlugRegistry, slugify } from "../slug.js";
|
|
10
|
+
import { plainText, singleLine } from "./checks.js";
|
|
11
|
+
import { parseRoutineContent, routineFillIns, } from "./routine.js";
|
|
12
|
+
/** List answers read these as keywords, so no item slug may take them. */
|
|
13
|
+
const LIST_KEYWORDS = ["all", "none"];
|
|
14
|
+
/** Connection file names a plugin slug may not take. */
|
|
15
|
+
const RESERVED_CONNECTIONS = ["cursor", "account"];
|
|
16
|
+
export function botFromRecipe(recipe, unknownFields = []) {
|
|
17
|
+
const skillSlugs = slugRegistry();
|
|
18
|
+
const skills = recipe.skills.map((skill) => {
|
|
19
|
+
const { data, body } = parseYamlFrontmatter(skill.content);
|
|
20
|
+
const trigger = isRecord(data.trigger) ? data.trigger : {};
|
|
21
|
+
const name = singleLine(skill.name);
|
|
22
|
+
return {
|
|
23
|
+
slug: skillSlugs.claim(slugify(name, "skill")),
|
|
24
|
+
name,
|
|
25
|
+
description: plainText(skill.description),
|
|
26
|
+
body: body.trim(),
|
|
27
|
+
triggers: typeof trigger.schedule === "string"
|
|
28
|
+
? [{ kind: "cron", cron: trigger.schedule, paused: trigger.enabled === false }]
|
|
29
|
+
: [],
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
const routineSlugs = slugRegistry();
|
|
33
|
+
const routines = recipe.routines.map((routine) => {
|
|
34
|
+
const parsed = parseRoutineContent(routine.content);
|
|
35
|
+
return {
|
|
36
|
+
slug: routineSlugs.claim(slugify(routine.slug, "routine")),
|
|
37
|
+
name: singleLine(routine.name),
|
|
38
|
+
description: plainText(routine.description),
|
|
39
|
+
job: parsed.job,
|
|
40
|
+
triggers: parsed.triggers,
|
|
41
|
+
fillIns: routineFillIns([parsed.job, routine.description], parsed.askFor),
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
const start = recipe.gettingStarted === undefined ? undefined : singleLine(recipe.gettingStarted.skill);
|
|
45
|
+
return {
|
|
46
|
+
name: singleLine(recipe.profile.name),
|
|
47
|
+
description: plainText(recipe.profile.description),
|
|
48
|
+
avatar: recipe.profile.avatarColor === undefined && recipe.profile.avatarShape === undefined
|
|
49
|
+
? undefined
|
|
50
|
+
: { color: recipe.profile.avatarColor, shape: recipe.profile.avatarShape },
|
|
51
|
+
skills,
|
|
52
|
+
routines,
|
|
53
|
+
plugins: pluginsFrom(recipe.plugins),
|
|
54
|
+
memory: recipe.memory,
|
|
55
|
+
gettingStarted: skills.find((skill) => skill.name === start)?.slug,
|
|
56
|
+
unknownFields,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function slugRegistry(reserved = []) {
|
|
60
|
+
const slugs = new SlugRegistry();
|
|
61
|
+
for (const slug of [...LIST_KEYWORDS, ...reserved]) {
|
|
62
|
+
slugs.claim(slug);
|
|
63
|
+
}
|
|
64
|
+
return slugs;
|
|
65
|
+
}
|
|
66
|
+
function pluginsFrom(plugins) {
|
|
67
|
+
const slugs = slugRegistry(RESERVED_CONNECTIONS);
|
|
68
|
+
return plugins.map((plugin) => {
|
|
69
|
+
const name = singleLine(plugin.name);
|
|
70
|
+
return { slug: slugs.claim(slugify(name, "connector")), name };
|
|
71
|
+
});
|
|
72
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Validation for export answers that land in names, URLs, and review text. */
|
|
2
|
+
export declare const SLACK_BOT_NAME_MAX = 80;
|
|
3
|
+
/** Recipe text for a name or list item: one line, nothing unprintable. */
|
|
4
|
+
export declare function singleLine(text: string): string;
|
|
5
|
+
/** Recipe prose: line breaks and tabs kept, anything else unprintable dropped. */
|
|
6
|
+
export declare function plainText(text: string): string;
|
|
7
|
+
/** Text as a markdown code span, so it reads as data; a backtick would end the span. */
|
|
8
|
+
export declare function code(text: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* A Slack bot name starts with the team prefix and never reads as "Grok",
|
|
11
|
+
* including through separators, accents, or look-alike letters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function slackBotNameError(name: string, teamPrefix?: string): string | undefined;
|
|
14
|
+
/** The recipe name under the team prefix, or `Bot` when that name cannot pass. */
|
|
15
|
+
export declare function defaultSlackBotName(name: string, teamPrefix?: string): string;
|
|
16
|
+
/** Remote MCP URL: https, with credentials kept out of it. */
|
|
17
|
+
export declare function connectorUrlError(url: string): string | undefined;
|
|
18
|
+
export declare function repoNameError(name: string): string | undefined;
|
|
19
|
+
export declare function namespaceError(name: string): string | undefined;
|
|
20
|
+
export declare function redactSecretValues(text: string): {
|
|
21
|
+
text: string;
|
|
22
|
+
redacted: number;
|
|
23
|
+
};
|
|
24
|
+
/** Every string in a JSON-shaped value, redacted. */
|
|
25
|
+
export declare function redactDeep<T>(value: T): T;
|
|
26
|
+
//# sourceMappingURL=checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/internal/convert-grokbot/checks.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAI/E,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAMrC,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wFAAwF;AACxF,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzC;AAmCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmBvF;AAED,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAS7E;AA6BD,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI9D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/D;AAeD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOnF;AAED,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAazC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/** Validation for export answers that land in names, URLs, and review text. */
|
|
2
|
+
import { isRecord } from "../is-record.js";
|
|
3
|
+
export const SLACK_BOT_NAME_MAX = 80;
|
|
4
|
+
/** Control, line-separator, and bidi-override characters. */
|
|
5
|
+
const UNPRINTABLE = /[\p{Cc}\u2028\u2029\u202A-\u202E\u2066-\u2069]/u;
|
|
6
|
+
const UNPRINTABLE_RUNS = new RegExp(`${UNPRINTABLE.source}+`, "gu");
|
|
7
|
+
/** Recipe text for a name or list item: one line, nothing unprintable. */
|
|
8
|
+
export function singleLine(text) {
|
|
9
|
+
return text.replace(UNPRINTABLE_RUNS, " ").replace(/\s+/g, " ").trim();
|
|
10
|
+
}
|
|
11
|
+
/** Recipe prose: line breaks and tabs kept, anything else unprintable dropped. */
|
|
12
|
+
export function plainText(text) {
|
|
13
|
+
return text
|
|
14
|
+
.replace(/\r\n?/g, "\n")
|
|
15
|
+
.replace(UNPRINTABLE_RUNS, (run) => run.replace(/[^\n\t]/g, ""));
|
|
16
|
+
}
|
|
17
|
+
/** Text as a markdown code span, so it reads as data; a backtick would end the span. */
|
|
18
|
+
export function code(text) {
|
|
19
|
+
return `\`${singleLine(text).replaceAll("`", "'")}\``;
|
|
20
|
+
}
|
|
21
|
+
/** Characters that read as g, r, o, or k but survive NFKD. Keys are uppercase where a case exists. */
|
|
22
|
+
const LOOKALIKES = {
|
|
23
|
+
"0": "o",
|
|
24
|
+
Ø: "o",
|
|
25
|
+
ɢ: "g",
|
|
26
|
+
Ɡ: "g",
|
|
27
|
+
ʀ: "r",
|
|
28
|
+
ᴏ: "o",
|
|
29
|
+
ᴑ: "o",
|
|
30
|
+
Ɵ: "o",
|
|
31
|
+
Ꝋ: "o",
|
|
32
|
+
ᴋ: "k",
|
|
33
|
+
ĸ: "k",
|
|
34
|
+
Օ: "o",
|
|
35
|
+
Ꮐ: "g",
|
|
36
|
+
Ꮢ: "r",
|
|
37
|
+
Ꮎ: "o",
|
|
38
|
+
Ꮶ: "k",
|
|
39
|
+
};
|
|
40
|
+
const LOOKALIKE_SCRIPTS = /[\p{Script=Cyrillic}\p{Script=Greek}\p{Script=Armenian}\p{Script=Cherokee}]/u;
|
|
41
|
+
function plain(value) {
|
|
42
|
+
return value.trim().normalize("NFKD").replace(/\p{M}/gu, "");
|
|
43
|
+
}
|
|
44
|
+
function fold(value) {
|
|
45
|
+
return [...plain(value)]
|
|
46
|
+
.map((char) => LOOKALIKES[char] ?? LOOKALIKES[char.toUpperCase()] ?? char)
|
|
47
|
+
.join("")
|
|
48
|
+
.toLowerCase();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A Slack bot name starts with the team prefix and never reads as "Grok",
|
|
52
|
+
* including through separators, accents, or look-alike letters.
|
|
53
|
+
*/
|
|
54
|
+
export function slackBotNameError(name, teamPrefix) {
|
|
55
|
+
if ([...name.trim()].length > SLACK_BOT_NAME_MAX) {
|
|
56
|
+
return `must be at most ${SLACK_BOT_NAME_MAX} characters.`;
|
|
57
|
+
}
|
|
58
|
+
if (UNPRINTABLE.test(name)) {
|
|
59
|
+
return "must be one line of printable text.";
|
|
60
|
+
}
|
|
61
|
+
const folded = fold(name);
|
|
62
|
+
if (teamPrefix !== undefined && !folded.startsWith(fold(teamPrefix))) {
|
|
63
|
+
return `must start with the team prefix ${JSON.stringify(teamPrefix)}.`;
|
|
64
|
+
}
|
|
65
|
+
if (folded.replace(/[^\p{L}\p{N}]/gu, "").includes("grok")) {
|
|
66
|
+
return 'must not contain "Grok".';
|
|
67
|
+
}
|
|
68
|
+
const text = plain(name);
|
|
69
|
+
if (/\p{Script=Latin}/u.test(text) && LOOKALIKE_SCRIPTS.test(text)) {
|
|
70
|
+
return "must not mix Latin letters with look-alike letters from other scripts.";
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/** The recipe name under the team prefix, or `Bot` when that name cannot pass. */
|
|
75
|
+
export function defaultSlackBotName(name, teamPrefix) {
|
|
76
|
+
const prefix = teamPrefix?.trim() ?? "";
|
|
77
|
+
const prefixed = (base) => {
|
|
78
|
+
const joined = prefix === "" || /[\s\-_:·|/]$/.test(prefix) ? `${prefix}${base}` : `${prefix} ${base}`;
|
|
79
|
+
return [...joined].slice(0, SLACK_BOT_NAME_MAX).join("").trim();
|
|
80
|
+
};
|
|
81
|
+
const candidate = prefixed(name.replace(/grok/gi, " ").replace(/\s+/g, " ").trim() || "Bot");
|
|
82
|
+
return slackBotNameError(candidate, teamPrefix) === undefined ? candidate : prefixed("Bot");
|
|
83
|
+
}
|
|
84
|
+
const CREDENTIAL_WORDS = new Set([
|
|
85
|
+
"key",
|
|
86
|
+
"apikey",
|
|
87
|
+
"token",
|
|
88
|
+
"accesstoken",
|
|
89
|
+
"secret",
|
|
90
|
+
"password",
|
|
91
|
+
"passwd",
|
|
92
|
+
"pat",
|
|
93
|
+
"sig",
|
|
94
|
+
"signature",
|
|
95
|
+
"credential",
|
|
96
|
+
"credentials",
|
|
97
|
+
"auth",
|
|
98
|
+
"authorization",
|
|
99
|
+
"jwt",
|
|
100
|
+
]);
|
|
101
|
+
/** A parameter named for a credential, word by word (`x-api-key`, `accessToken`), or `code`. */
|
|
102
|
+
function credentialParam(name) {
|
|
103
|
+
const words = name
|
|
104
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
105
|
+
.toLowerCase()
|
|
106
|
+
.split(/[^a-z0-9]+/);
|
|
107
|
+
return name.toLowerCase() === "code" || words.some((word) => CREDENTIAL_WORDS.has(word));
|
|
108
|
+
}
|
|
109
|
+
/** Remote MCP URL: https, with credentials kept out of it. */
|
|
110
|
+
export function connectorUrlError(url) {
|
|
111
|
+
if (!URL.canParse(url)) {
|
|
112
|
+
return "must be an absolute URL.";
|
|
113
|
+
}
|
|
114
|
+
const parsed = new URL(url);
|
|
115
|
+
if (parsed.protocol !== "https:") {
|
|
116
|
+
return "must use https.";
|
|
117
|
+
}
|
|
118
|
+
if (parsed.username !== "" || parsed.password !== "") {
|
|
119
|
+
return "must not carry credentials; name a secret instead.";
|
|
120
|
+
}
|
|
121
|
+
const params = [
|
|
122
|
+
...parsed.searchParams.keys(),
|
|
123
|
+
...new URLSearchParams(parsed.hash.slice(1)).keys(),
|
|
124
|
+
];
|
|
125
|
+
const leaked = params.find(credentialParam);
|
|
126
|
+
if (leaked !== undefined) {
|
|
127
|
+
return `must not carry credentials (parameter ${JSON.stringify(leaked)}); name a secret instead.`;
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
export function repoNameError(name) {
|
|
132
|
+
return /^[A-Za-z0-9._-]{1,100}$/.test(name) && name !== "." && name !== ".."
|
|
133
|
+
? undefined
|
|
134
|
+
: "must be 1–100 letters, digits, '.', '_' or '-'.";
|
|
135
|
+
}
|
|
136
|
+
export function namespaceError(name) {
|
|
137
|
+
return /^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(name)
|
|
138
|
+
? undefined
|
|
139
|
+
: "must start with a letter or digit and use letters, digits, '.', '_' or '-'.";
|
|
140
|
+
}
|
|
141
|
+
/** Token shapes that must not reach a committed file. */
|
|
142
|
+
const SECRET_VALUE = new RegExp([
|
|
143
|
+
String.raw `\b(?:crsr_|xox[abeprs]-|xapp-|ghp_|gho_|ghu_|ghs_|github_pat_|glpat-|sk-(?:ant-|proj-)?|[sr]k_(?:live|test)_|lin_api_|ntn_|AIza)[A-Za-z0-9_-]{16,}`,
|
|
144
|
+
String.raw `\bxai-[A-Za-z0-9]{32,}`,
|
|
145
|
+
String.raw `\bgrok_[0-9A-Fa-f]{32}_[0-9A-Fa-f]{64}\b`,
|
|
146
|
+
String.raw `\bAKIA[0-9A-Z]{16}\b`,
|
|
147
|
+
String.raw `\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}`,
|
|
148
|
+
String.raw `hooks\.slack\.com/services/[A-Za-z0-9/]+`,
|
|
149
|
+
].join("|"), "g");
|
|
150
|
+
export function redactSecretValues(text) {
|
|
151
|
+
let redacted = 0;
|
|
152
|
+
const next = text.replace(SECRET_VALUE, () => {
|
|
153
|
+
redacted++;
|
|
154
|
+
return "[redacted]";
|
|
155
|
+
});
|
|
156
|
+
return { text: next, redacted };
|
|
157
|
+
}
|
|
158
|
+
/** Every string in a JSON-shaped value, redacted. */
|
|
159
|
+
export function redactDeep(value) {
|
|
160
|
+
if (typeof value === "string") {
|
|
161
|
+
return redactSecretValues(value).text;
|
|
162
|
+
}
|
|
163
|
+
if (Array.isArray(value)) {
|
|
164
|
+
return value.map(redactDeep);
|
|
165
|
+
}
|
|
166
|
+
if (isRecord(value)) {
|
|
167
|
+
return Object.fromEntries(Object.entries(value).map(([key, nested]) => [key, redactDeep(nested)]));
|
|
168
|
+
}
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Grok Bot → BDK project mapping. Takes the recipe's bot and resolved
|
|
3
|
+
* answers; returns the project files as an in-memory tree plus a preview a
|
|
4
|
+
* client renders before confirming. No I/O and no clock: `generatedAt`
|
|
5
|
+
* comes from the caller.
|
|
6
|
+
*/
|
|
7
|
+
import { type ProjectRoot } from "../project-layout.js";
|
|
8
|
+
import type { Resolved } from "./answers.js";
|
|
9
|
+
import type { Bot } from "./bot.js";
|
|
10
|
+
export declare const EXPORT_RECORD_VERSION = 1;
|
|
11
|
+
export declare const PREVIEW_VERSION = 1;
|
|
12
|
+
export interface ConvertGrokbotInput {
|
|
13
|
+
bot: Bot;
|
|
14
|
+
resolved: Resolved;
|
|
15
|
+
/** ISO 8601 timestamp for the export record. */
|
|
16
|
+
generatedAt: string;
|
|
17
|
+
packageVersion: string;
|
|
18
|
+
/** Basename of the target directory; `bdk slack create` derives the env prefix from it. */
|
|
19
|
+
directoryName?: string;
|
|
20
|
+
projectRoot?: ProjectRoot;
|
|
21
|
+
}
|
|
22
|
+
export interface ConvertedFile {
|
|
23
|
+
path: string;
|
|
24
|
+
contents: string;
|
|
25
|
+
}
|
|
26
|
+
/** A recipe item, answer, or scaffold step: `skills/<slug>`, `routines/<slug>`, `profile`, ... */
|
|
27
|
+
export type Source = string;
|
|
28
|
+
export interface PreviewFillIn {
|
|
29
|
+
routine: string;
|
|
30
|
+
id: string;
|
|
31
|
+
label: string;
|
|
32
|
+
value?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface GrokbotPreview extends Resolved {
|
|
35
|
+
version: number;
|
|
36
|
+
name: string;
|
|
37
|
+
files: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
from: Source[];
|
|
40
|
+
}>;
|
|
41
|
+
/** Recipe items the answers left out. */
|
|
42
|
+
excluded: Source[];
|
|
43
|
+
unmapped: Array<{
|
|
44
|
+
from: Source;
|
|
45
|
+
reason: string;
|
|
46
|
+
}>;
|
|
47
|
+
fillIns: PreviewFillIn[];
|
|
48
|
+
secrets: {
|
|
49
|
+
names: string[];
|
|
50
|
+
reauth: string[];
|
|
51
|
+
};
|
|
52
|
+
warnings: string[];
|
|
53
|
+
setupSteps: string[];
|
|
54
|
+
}
|
|
55
|
+
export interface GrokbotConversion {
|
|
56
|
+
files: ConvertedFile[];
|
|
57
|
+
preview: GrokbotPreview;
|
|
58
|
+
}
|
|
59
|
+
export declare function convertGrokbot(input: ConvertGrokbotInput): GrokbotConversion;
|
|
60
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/internal/convert-grokbot/convert.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH,OAAO,EAAuC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,KAAK,EAEV,QAAQ,EAIT,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,GAAG,EAAoC,MAAM,UAAU,CAAC;AAmBtE,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kGAAkG;AAClG,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,yCAAyC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;CACzB;AAeD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,iBAAiB,CAqG5E"}
|