@cursor/bdk 0.2.2 → 0.2.4
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 +1 -1
- package/dist/bin/agent-serve.js +32 -8
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +36 -5
- package/dist/channels/slack/attachments.d.ts +2 -1
- package/dist/channels/slack/attachments.d.ts.map +1 -1
- package/dist/channels/slack/attachments.js +19 -9
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +26 -24
- package/dist/channels/slack/thread-context.d.ts +21 -11
- package/dist/channels/slack/thread-context.d.ts.map +1 -1
- package/dist/channels/slack/thread-context.js +75 -27
- package/dist/connections.d.ts +1 -1
- package/dist/connections.js +1 -1
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.DtYVVVyK.js → app.4kQ8Db_q.js} +4 -4
- package/dist/docs/assets/chunks/@localSearchIndexroot.CvuAJ0My.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.D47xT7J4.js → VPLocalSearchBox.DY1RwB8Q.js} +1 -1
- package/dist/docs/assets/chunks/{arc.CDJ6xzxR.js → arc.CxE_fSPK.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.l1Xnjd3N.js → architectureDiagram-Q4EWVU46.CPX426ui.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.x-finShZ.js → baseUniq.CB52JrKG.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.COC3qynH.js → blockDiagram-DXYQGD6D.J0cNaQCL.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.DdQO850E.js → c4Diagram-AHTNJAMY.DJn3vEGT.js} +1 -1
- package/dist/docs/assets/chunks/channel.BoNycAoN.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.Dpn8omLk.js → chunk-4BX2VUAB.Dao618F6.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.C0XWStUN.js → chunk-4TB4RGXK.QW8Rhjai.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.DsKSZfIM.js → chunk-55IACEB6.DfRLLKF_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.dNU6JDu6.js → chunk-EDXVE4YY.CIV2ApKQ.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.DN41fxKE.js → chunk-FMBD7UC4.BEheSuxp.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.COpKCZus.js → chunk-OYMX7WX6.CUN88ENB.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.HDB-azx2.js → chunk-QZHKN3VN.CgqCs8b_.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.DEeX_a2j.js → chunk-YZCP3GAM.iCH0nnTJ.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.C4x07Gkj.js +1 -0
- package/dist/docs/assets/chunks/clone.Db22cH_-.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.C3yGL2A8.js → cose-bilkent-S5V4N54A.BLcUxhWE.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.Bpl24en4.js → dagre-KV5264BT.Ep7LofOm.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.nFco6seU.js → diagram-5BDNPKRD.Bzf4GSQ4.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DXhA6DWR.js → diagram-G4DWMVQ6.DD6Jh-eM.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.8GoOYcwk.js → diagram-MMDJMWI5.oOIl8bWd.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.DDBlqvlJ.js → diagram-TYMM5635.DHs85Ade.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.vl_N81P4.js → erDiagram-SMLLAGMA.BIb5ghCk.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.Cteg8g7I.js → flowDiagram-DWJPFMVM.DV4paY9k.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.D4aMhlMM.js → ganttDiagram-T4ZO3ILL.AyEKA6_v.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DF_J0D4q.js → gitGraphDiagram-UUTBAWPF.BltiCDFo.js} +1 -1
- package/dist/docs/assets/chunks/{graph.DJs0LDCf.js → graph.DzuEYGdC.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.Bb-4RQwg.js → infoDiagram-42DDH7IO.BV2l981J.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DEtQRSbc.js → ishikawaDiagram-UXIWVN3A.BA4Izf-m.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.DhQQ75FA.js → journeyDiagram-VCZTEJTY.DjaFbFS3.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.C4gEw3Rk.js → kanban-definition-6JOO6SKY.CfTFieDs.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DT-PGlXa.js → layout.DzfWqTBV.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BMMe__JW.js → linear.BO6mpulV.js} +1 -1
- package/dist/docs/assets/chunks/{min.XyaU9K9Q.js → min.BGgTadgT.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CbBM6xZ-.js → mindmap-definition-QFDTVHPH.DPuIXVWY.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DFJoIVou.js → pieDiagram-DEJITSTG.BOnl3bBg.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.CQjkDYqb.js → quadrantDiagram-34T5L4WZ.DNB6Ckdc.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.D-mK-JQu.js → requirementDiagram-MS252O5E.D5-Qo7vb.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BStQInpd.js → sankeyDiagram-XADWPNL6.8t65cesf.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.CA_eooPJ.js → sequenceDiagram-FGHM5R23.CaG07BdS.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.BXl-b7ad.js → stateDiagram-FHFEXIEX.TKOweTB6.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.CuqmyQc4.js +1 -0
- package/dist/docs/assets/chunks/{theme.q37tOs4x.js → theme.Dx-JhpTB.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.vjuaGOSe.js → timeline-definition-GMOUNBTQ.fE53zQ2s.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.BxduJl-F.js → vennDiagram-DHZGUBPP.DJsZZaJg.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.844kyrjl.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D1z3ds0D.js → wardleyDiagram-NUSXRM2D.CMZ-Ru_t.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CRU5Ti9b.js → xychartDiagram-5P7HB3ND.XXrhBc7a.js} +1 -1
- package/dist/docs/assets/{deployment.md.nGo1yIsa.js → deployment.md.UhnJIMr-.js} +6 -9
- package/dist/docs/assets/{deployment.md.nGo1yIsa.lean.js → deployment.md.UhnJIMr-.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.C2_DSWlE.js → guides_github.md.Bq9kQU9B.js} +9 -3
- package/dist/docs/assets/{guides_github.md.C2_DSWlE.lean.js → guides_github.md.Bq9kQU9B.lean.js} +1 -1
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.js → guides_jev.md.CRcgmjDb.js} +2 -2
- package/dist/docs/assets/{guides_jev.md.BNDm14Gy.lean.js → guides_jev.md.CRcgmjDb.lean.js} +1 -1
- package/dist/docs/assets/{guides_slack.md.ZbHQETOT.js → guides_slack.md.diqqXTTm.js} +2 -2
- package/dist/docs/assets/{guides_slack.md.ZbHQETOT.lean.js → guides_slack.md.diqqXTTm.lean.js} +1 -1
- package/dist/docs/assets/{quickstart.md.wG4shE1f.js → quickstart.md.CHpHPBUN.js} +5 -3
- package/dist/docs/assets/{quickstart.md.wG4shE1f.lean.js → quickstart.md.CHpHPBUN.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.DzGI777n.js → reference_agent-config.md.Cj5uBKp4.js} +1 -1
- package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.js → reference_artifacts.md.CQfKq8F2.js} +1 -1
- package/dist/docs/assets/reference_cli.md.DgeLTO18.js +91 -0
- package/dist/docs/assets/reference_cli.md.DgeLTO18.lean.js +1 -0
- package/dist/docs/assets/{reference_connections.md._XpKiOaF.js → reference_connections.md.COq--gAm.js} +7 -3
- package/dist/docs/assets/{reference_connections.md._XpKiOaF.lean.js → reference_connections.md.COq--gAm.lean.js} +1 -1
- package/dist/docs/assets/{reference_evals.md.DqNyHMA6.js → reference_evals.md.CJm3uCUm.js} +4 -4
- package/dist/docs/assets/{reference_evals.md.DqNyHMA6.lean.js → reference_evals.md.CJm3uCUm.lean.js} +1 -1
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.js → reference_extensions.md.pa2tN-e4.js} +4 -3
- package/dist/docs/assets/{reference_extensions.md.CPPrkWlJ.lean.js → reference_extensions.md.pa2tN-e4.lean.js} +1 -1
- package/dist/docs/assets/{reference_skills.md.CRFTxt9M.js → reference_skills.md.Cy00QMKS.js} +3 -3
- package/dist/docs/assets/{reference_skills.md.CRFTxt9M.lean.js → reference_skills.md.Cy00QMKS.lean.js} +1 -1
- package/dist/docs/assets/troubleshooting.md.Cw5PKa3t.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.BzZSu1Gz.lean.js → troubleshooting.md.Cw5PKa3t.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +35 -35
- package/dist/docs/deployment.html +41 -44
- package/dist/docs/deployment.md +49 -16
- package/dist/docs/evals.html +35 -35
- 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 +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +43 -37
- package/dist/docs/guides/github.md +34 -0
- package/dist/docs/guides/gitlab.html +35 -35
- package/dist/docs/guides/grokbot-agents.html +35 -35
- package/dist/docs/guides/hooks.html +35 -35
- package/dist/docs/guides/improve.html +35 -35
- package/dist/docs/guides/jev.html +37 -37
- package/dist/docs/guides/jev.md +7 -0
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +37 -37
- package/dist/docs/guides/slack.md +5 -0
- package/dist/docs/guides/webhooks.html +35 -35
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +35 -35
- package/dist/docs/index.html +35 -35
- package/dist/docs/llms-full.txt +223 -94
- package/dist/docs/quickstart.html +40 -38
- package/dist/docs/quickstart.md +7 -1
- package/dist/docs/reference/agent-config.html +37 -37
- package/dist/docs/reference/agent-config.md +1 -1
- package/dist/docs/reference/artifacts.html +37 -37
- package/dist/docs/reference/artifacts.md +1 -1
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +55 -61
- package/dist/docs/reference/cli.md +65 -63
- package/dist/docs/reference/connections.html +42 -38
- package/dist/docs/reference/connections.md +28 -2
- package/dist/docs/reference/evals.html +39 -39
- package/dist/docs/reference/evals.md +6 -7
- package/dist/docs/reference/extensions.html +39 -38
- package/dist/docs/reference/extensions.md +13 -0
- package/dist/docs/reference/hooks.html +35 -35
- package/dist/docs/reference/http-api.html +35 -35
- package/dist/docs/reference/instructions.html +35 -35
- package/dist/docs/reference/playground.html +35 -35
- package/dist/docs/reference/project-layout.html +35 -35
- package/dist/docs/reference/prompt.html +35 -35
- package/dist/docs/reference/schedules.html +35 -35
- package/dist/docs/reference/sessions.html +35 -35
- package/dist/docs/reference/skills.html +38 -38
- package/dist/docs/reference/subagents.html +35 -35
- package/dist/docs/reference/tools.html +35 -35
- package/dist/docs/templates/agentic-owners.html +35 -35
- 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 +7 -3
- package/dist/extensions/cursor-grokbot-agents/extension.d.ts +77 -0
- package/dist/extensions/cursor-grokbot-agents/extension.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/extension.js +63 -0
- package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts +11 -0
- package/dist/extensions/cursor-grokbot-agents/lib/agents.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +31 -0
- package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts +56 -0
- package/dist/extensions/cursor-grokbot-agents/lib/backend.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +158 -0
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts +28 -0
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +59 -0
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts +53 -0
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +206 -0
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts +4 -0
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/inputs.js +15 -0
- package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts +12 -0
- package/dist/extensions/cursor-grokbot-agents/lib/lock.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +25 -0
- package/dist/extensions/cursor-grokbot-agents/skills/consult.md +40 -0
- package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts +4 -0
- package/dist/extensions/cursor-grokbot-agents/tools/ask.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +37 -0
- package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts +4 -0
- package/dist/extensions/cursor-grokbot-agents/tools/check.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +32 -0
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts +4 -0
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +24 -0
- package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts +4 -0
- package/dist/extensions/cursor-grokbot-agents/tools/list.d.ts.map +1 -0
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +34 -0
- package/dist/extensions/jev/extension.d.ts +3 -0
- package/dist/extensions/jev/extension.d.ts.map +1 -1
- package/dist/extensions/jev/extension.js +10 -1
- package/dist/extensions/jev/lib/evaluate.d.ts +4 -0
- package/dist/extensions/jev/lib/evaluate.d.ts.map +1 -1
- package/dist/extensions/jev/lib/evaluate.js +6 -2
- package/dist/extensions.d.ts +4 -2
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +5 -2
- package/dist/internal/cli-ax.d.ts +1 -0
- package/dist/internal/cli-ax.d.ts.map +1 -1
- package/dist/internal/cli-ax.js +43 -10
- package/dist/internal/cli-deploy.d.ts +5 -1
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +41 -9
- package/dist/internal/cli-mcp-oauth.d.ts.map +1 -1
- package/dist/internal/cli-mcp-oauth.js +2 -1
- package/dist/internal/cli-skills.d.ts +1 -1
- package/dist/internal/cli-skills.d.ts.map +1 -1
- package/dist/internal/cli-skills.js +5 -5
- package/dist/internal/connection-env.d.ts +31 -0
- package/dist/internal/connection-env.d.ts.map +1 -0
- package/dist/internal/connection-env.js +84 -0
- package/dist/internal/cursor/backend-client.js +5 -0
- package/dist/internal/deploy-client.d.ts +30 -6
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +45 -9
- package/dist/internal/discovery/agent-config.d.ts +6 -5
- package/dist/internal/discovery/agent-config.d.ts.map +1 -1
- package/dist/internal/discovery/agent-config.js +29 -28
- package/dist/internal/discovery/agent.js +1 -1
- package/dist/internal/discovery/connections.d.ts.map +1 -1
- package/dist/internal/discovery/connections.js +11 -0
- package/dist/internal/discovery/extensions.d.ts.map +1 -1
- package/dist/internal/discovery/extensions.js +12 -0
- package/dist/internal/hosted-delivery-protocol.d.ts +36 -11
- package/dist/internal/hosted-delivery-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-delivery-protocol.js +31 -8
- package/dist/internal/hosted-delivery.d.ts +2 -2
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +228 -48
- package/dist/internal/hosting.d.ts +10 -2
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +33 -3
- package/dist/internal/install-cursor-skills.d.ts +20 -24
- package/dist/internal/install-cursor-skills.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +50 -48
- package/dist/internal/legacy-command-guard.d.ts +2 -0
- package/dist/internal/legacy-command-guard.d.ts.map +1 -1
- package/dist/internal/legacy-command-guard.js +10 -1
- package/dist/internal/mcp-host.d.ts +6 -0
- package/dist/internal/mcp-host.d.ts.map +1 -1
- package/dist/internal/mcp-host.js +35 -16
- package/dist/internal/sdk-runner.d.ts +2 -0
- package/dist/internal/sdk-runner.d.ts.map +1 -1
- package/dist/internal/sdk-runner.js +10 -0
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +11 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +9 -5
- package/dist/types.d.ts +29 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/deployment.md +49 -16
- package/docs/guides/github.md +34 -0
- package/docs/guides/jev.md +7 -0
- package/docs/guides/slack.md +5 -0
- package/docs/quickstart.md +7 -1
- package/docs/reference/agent-config.md +1 -1
- package/docs/reference/artifacts.md +1 -1
- package/docs/reference/cli.md +65 -63
- package/docs/reference/connections.md +28 -2
- package/docs/reference/evals.md +6 -7
- package/docs/reference/extensions.md +13 -0
- package/docs/troubleshooting.md +7 -3
- package/package.json +1 -11
- package/scripts/install-cursor-skills.mjs +1 -1
- package/skills/create-agent/SKILL.md +1 -1
- package/skills/debug/SKILL.md +1 -1
- package/skills/deploy/SKILL.md +1 -1
- package/skills/evals/SKILL.md +1 -1
- package/skills/framework-map/SKILL.md +1 -1
- package/skills/github/SKILL.md +1 -1
- package/skills/hillclimb/SKILL.md +1 -1
- package/skills/mcp-auth/SKILL.md +1 -1
- package/skills/otel/SKILL.md +1 -1
- package/skills/setup-slack/SKILL.md +1 -1
- package/templates/agents-md/bot/lib/collect.ts +1 -4
- package/templates/code-wiki/bot/channels/github.ts +2 -2
- package/templates/demo/bot/channels/github.ts +5 -1
- package/templates/pr-autofixer/bot/lib/start-drive.ts +4 -4
- package/templates/triage/bot/lib/types.ts +6 -6
- package/dist/docs/assets/chunks/@localSearchIndexroot.BgTA2tV1.js +0 -1
- package/dist/docs/assets/chunks/channel.B2nMEx82.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D8iCH2ve.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D8iCH2ve.js +0 -1
- package/dist/docs/assets/chunks/clone.5XNLjby0.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.yGM2uLZQ.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.DKfyIejL.js +0 -162
- package/dist/docs/assets/reference_cli.md.BK2QUH67.js +0 -97
- package/dist/docs/assets/reference_cli.md.BK2QUH67.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.BzZSu1Gz.js +0 -1
- package/src/artifacts.ts +0 -68
- package/src/bin/agent-serve.ts +0 -1833
- package/src/channels/bitbucket/api.ts +0 -891
- package/src/channels/bitbucket/binding.ts +0 -417
- package/src/channels/bitbucket/bitbucket-channel.ts +0 -162
- package/src/channels/bitbucket/bitbucket-webhook.ts +0 -519
- package/src/channels/bitbucket/checks.ts +0 -146
- package/src/channels/bitbucket/cursor-account.ts +0 -106
- package/src/channels/bitbucket/defaults.ts +0 -100
- package/src/channels/bitbucket/events.ts +0 -74
- package/src/channels/bitbucket/index.ts +0 -51
- package/src/channels/bitbucket/replay.ts +0 -421
- package/src/channels/bitbucket/state.ts +0 -59
- package/src/channels/bitbucket/types.ts +0 -261
- package/src/channels/change-monitors/change-monitors-channel.ts +0 -63
- package/src/channels/change-monitors/index.ts +0 -8
- package/src/channels/change-monitors/types.ts +0 -42
- package/src/channels/checks.ts +0 -185
- package/src/channels/deployments/deployments-channel.ts +0 -224
- package/src/channels/deployments/index.ts +0 -25
- package/src/channels/deployments/types.ts +0 -92
- package/src/channels/github/api.ts +0 -526
- package/src/channels/github/auth.ts +0 -254
- package/src/channels/github/binding.ts +0 -233
- package/src/channels/github/checks.ts +0 -145
- package/src/channels/github/cursor-account.ts +0 -303
- package/src/channels/github/defaults.ts +0 -168
- package/src/channels/github/events.ts +0 -67
- package/src/channels/github/forward.ts +0 -359
- package/src/channels/github/github-channel.ts +0 -2334
- package/src/channels/github/index.ts +0 -54
- package/src/channels/github/progress.ts +0 -365
- package/src/channels/github/replay.ts +0 -372
- package/src/channels/github/state.ts +0 -124
- package/src/channels/github/types.ts +0 -590
- package/src/channels/gitlab/api.ts +0 -329
- package/src/channels/gitlab/binding.ts +0 -231
- package/src/channels/gitlab/checks.ts +0 -228
- package/src/channels/gitlab/cursor-account.ts +0 -105
- package/src/channels/gitlab/defaults.ts +0 -80
- package/src/channels/gitlab/events.ts +0 -37
- package/src/channels/gitlab/gitlab-channel.ts +0 -160
- package/src/channels/gitlab/gitlab-webhook.ts +0 -509
- package/src/channels/gitlab/index.ts +0 -44
- package/src/channels/gitlab/replay.ts +0 -328
- package/src/channels/gitlab/state.ts +0 -55
- package/src/channels/gitlab/types.ts +0 -247
- package/src/channels/issues/index.ts +0 -9
- package/src/channels/issues/issues-channel.ts +0 -45
- package/src/channels/issues/types.ts +0 -38
- package/src/channels/origin/api.ts +0 -507
- package/src/channels/origin/binding.ts +0 -114
- package/src/channels/origin/checks.ts +0 -250
- package/src/channels/origin/cursor-account.ts +0 -58
- package/src/channels/origin/defaults.ts +0 -140
- package/src/channels/origin/events.ts +0 -35
- package/src/channels/origin/index.ts +0 -35
- package/src/channels/origin/origin-channel.ts +0 -815
- package/src/channels/origin/origin-webhook.ts +0 -296
- package/src/channels/origin/reactions.ts +0 -72
- package/src/channels/origin/state.ts +0 -54
- package/src/channels/origin/types.ts +0 -295
- package/src/channels/slack/agentic-delivery.ts +0 -634
- package/src/channels/slack/agentic-posted.ts +0 -135
- package/src/channels/slack/agentic-signals.ts +0 -231
- package/src/channels/slack/api.ts +0 -761
- package/src/channels/slack/approvals.ts +0 -279
- package/src/channels/slack/assistant.ts +0 -76
- package/src/channels/slack/attachments.ts +0 -596
- package/src/channels/slack/auth.ts +0 -127
- package/src/channels/slack/blocks.ts +0 -131
- package/src/channels/slack/bot-mentions.ts +0 -318
- package/src/channels/slack/channel-watch.ts +0 -314
- package/src/channels/slack/cli-project.ts +0 -249
- package/src/channels/slack/code-fences.ts +0 -171
- package/src/channels/slack/constants.ts +0 -38
- package/src/channels/slack/credentials.ts +0 -88
- package/src/channels/slack/defaults.ts +0 -714
- package/src/channels/slack/dispatch.ts +0 -1060
- package/src/channels/slack/doctor.ts +0 -338
- package/src/channels/slack/eval-directive.ts +0 -306
- package/src/channels/slack/event-id-dedupe.ts +0 -30
- package/src/channels/slack/external-policy.ts +0 -75
- package/src/channels/slack/footer.ts +0 -106
- package/src/channels/slack/inbound.ts +0 -416
- package/src/channels/slack/index.ts +0 -53
- package/src/channels/slack/init.ts +0 -169
- package/src/channels/slack/interactive.ts +0 -406
- package/src/channels/slack/links.ts +0 -23
- package/src/channels/slack/live-delivery.ts +0 -489
- package/src/channels/slack/log.ts +0 -70
- package/src/channels/slack/manifest.ts +0 -240
- package/src/channels/slack/message-body.ts +0 -82
- package/src/channels/slack/nudge-carrier.ts +0 -224
- package/src/channels/slack/nudge-store.ts +0 -334
- package/src/channels/slack/paint-start.ts +0 -93
- package/src/channels/slack/placeholder.ts +0 -358
- package/src/channels/slack/pr-ref.ts +0 -74
- package/src/channels/slack/progress-delivery.ts +0 -138
- package/src/channels/slack/reasoning-card.ts +0 -125
- package/src/channels/slack/reasoning-chip.ts +0 -41
- package/src/channels/slack/recording-sink.ts +0 -167
- package/src/channels/slack/redact.ts +0 -6
- package/src/channels/slack/reply-options.ts +0 -279
- package/src/channels/slack/setup.ts +0 -125
- package/src/channels/slack/slack-channel.ts +0 -744
- package/src/channels/slack/socket-mode.ts +0 -140
- package/src/channels/slack/stop.ts +0 -25
- package/src/channels/slack/stream.ts +0 -66
- package/src/channels/slack/thread-context.ts +0 -485
- package/src/channels/slack/tool-approval-events.ts +0 -233
- package/src/channels/slack/tool-cards.ts +0 -198
- package/src/channels/slack/tool-chip.ts +0 -34
- package/src/channels/slack/types.ts +0 -787
- package/src/channels/slack/upload.ts +0 -137
- package/src/channels.ts +0 -543
- package/src/connections.ts +0 -153
- package/src/dashboard-session-url.ts +0 -30
- package/src/evals/assertions.ts +0 -688
- package/src/evals/expect.ts +0 -250
- package/src/evals/judge.ts +0 -329
- package/src/evals/loaders.ts +0 -111
- package/src/evals/matchers.ts +0 -223
- package/src/evals/reporters.ts +0 -257
- package/src/evals/results.ts +0 -130
- package/src/evals/run-facts.ts +0 -306
- package/src/evals.ts +0 -709
- package/src/extensions/cursor-cloud-agents/extension.ts +0 -131
- package/src/extensions/cursor-cloud-agents/lib/backend.ts +0 -386
- package/src/extensions/cursor-cloud-agents/lib/channels.ts +0 -11
- package/src/extensions/cursor-cloud-agents/lib/fleet.ts +0 -98
- package/src/extensions/cursor-cloud-agents/lib/inputs.ts +0 -5
- package/src/extensions/cursor-cloud-agents/lib/repos.ts +0 -80
- package/src/extensions/cursor-cloud-agents/lib/transcript.ts +0 -19
- package/src/extensions/cursor-cloud-agents/skills/handoff.md +0 -37
- package/src/extensions/cursor-cloud-agents/tools/cancel.ts +0 -21
- package/src/extensions/cursor-cloud-agents/tools/dump.ts +0 -47
- package/src/extensions/cursor-cloud-agents/tools/get.ts +0 -18
- package/src/extensions/cursor-cloud-agents/tools/launch.ts +0 -62
- package/src/extensions/cursor-cloud-agents/tools/list.ts +0 -31
- package/src/extensions/cursor-cloud-agents/tools/reply.ts +0 -36
- package/src/extensions/improve/extension.ts +0 -69
- package/src/extensions/improve/skills/yourself.ts +0 -50
- package/src/extensions/jev/extension.ts +0 -95
- package/src/extensions/jev/lib/evaluate.ts +0 -266
- package/src/extensions/jev/skills/gated-write.md +0 -25
- package/src/extensions/jev/skills/questions.md +0 -33
- package/src/extensions/jev/tools/evaluate.ts +0 -82
- package/src/extensions/slack-communication/evals/harness.ts +0 -705
- package/src/extensions/slack-communication/evals/slack-communication.eval.ts +0 -830
- package/src/extensions/slack-communication/evals/slack-placeholder.eval.ts +0 -172
- package/src/extensions/slack-communication/extension.ts +0 -44
- package/src/extensions/slack-communication/skills/slack-voice.ts +0 -56
- package/src/extensions/slack-communication/tools/delete-message.ts +0 -33
- package/src/extensions/slack-communication/tools/edit-message.ts +0 -42
- package/src/extensions/slack-communication/tools/post-card.ts +0 -28
- package/src/extensions/slack-communication/tools/post-file.ts +0 -82
- package/src/extensions/slack-communication/tools/post-update.ts +0 -40
- package/src/extensions/slack-communication/tools/react.ts +0 -30
- package/src/extensions/slack-communication/tools/set-status.ts +0 -21
- package/src/extensions.ts +0 -179
- package/src/files-backends/agent-store-presigned-url.ts +0 -11
- package/src/files-backends/cursor-hosted.ts +0 -1212
- package/src/files-backends/local-fs.ts +0 -163
- package/src/files.ts +0 -293
- package/src/filesystem.ts +0 -2005
- package/src/hooks.ts +0 -30
- package/src/index.ts +0 -259
- package/src/internal/advertise-tools.ts +0 -370
- package/src/internal/approval-gate.ts +0 -103
- package/src/internal/artifacts-store.ts +0 -836
- package/src/internal/as-of.ts +0 -257
- package/src/internal/auth.ts +0 -46
- package/src/internal/authored-alias-hooks.ts +0 -138
- package/src/internal/authored-loaders.ts +0 -188
- package/src/internal/bounded-int.ts +0 -24
- package/src/internal/bounded.ts +0 -25
- package/src/internal/brand.ts +0 -28
- package/src/internal/browser-origin-guard.ts +0 -67
- package/src/internal/builtin-tools/artifacts.ts +0 -62
- package/src/internal/builtin-tools/index.ts +0 -53
- package/src/internal/builtin-tools/reminders.ts +0 -145
- package/src/internal/channel-dispatch.ts +0 -129
- package/src/internal/channel-route-dispatch.ts +0 -58
- package/src/internal/channel-state.ts +0 -83
- package/src/internal/chat-client.ts +0 -594
- package/src/internal/cli-ax.ts +0 -2273
- package/src/internal/cli-bitbucket.ts +0 -438
- package/src/internal/cli-convert-automation.ts +0 -335
- package/src/internal/cli-cursor.ts +0 -282
- package/src/internal/cli-deploy.ts +0 -2486
- package/src/internal/cli-docs.ts +0 -192
- package/src/internal/cli-github.ts +0 -806
- package/src/internal/cli-gitlab.ts +0 -452
- package/src/internal/cli-images.ts +0 -672
- package/src/internal/cli-manifest.ts +0 -56
- package/src/internal/cli-mcp-oauth.ts +0 -395
- package/src/internal/cli-mcp.ts +0 -808
- package/src/internal/cli-skills.ts +0 -99
- package/src/internal/cli-slack-manual.ts +0 -418
- package/src/internal/cli-slack.ts +0 -874
- package/src/internal/cloud-merge.ts +0 -51
- package/src/internal/cloud-turn-cost.ts +0 -159
- package/src/internal/continuation-channel.ts +0 -233
- package/src/internal/continuation-identity.ts +0 -935
- package/src/internal/conversation-mirror.ts +0 -423
- package/src/internal/convert-automation/convert-workflow.ts +0 -1377
- package/src/internal/convert-automation/slug.ts +0 -29
- package/src/internal/convert-automation/types.ts +0 -212
- package/src/internal/cron.ts +0 -76
- package/src/internal/cursor/account-mcp.ts +0 -692
- package/src/internal/cursor/backend-client.ts +0 -978
- package/src/internal/cursor/bound-secret-file.ts +0 -101
- package/src/internal/cursor/credentials.ts +0 -560
- package/src/internal/cursor/cursor-api-transport.ts +0 -65
- package/src/internal/cursor/github-credentials.ts +0 -228
- package/src/internal/cursor/hosted-bound-secrets.ts +0 -71
- package/src/internal/cursor/hosted-deployment-secrets.ts +0 -100
- package/src/internal/cursor/hosted-store-secrets.ts +0 -152
- package/src/internal/cursor/session-token.ts +0 -111
- package/src/internal/cursor/store-api-client.ts +0 -323
- package/src/internal/cursor-account-mcp-auth.ts +0 -303
- package/src/internal/cursor-agent-template.ts +0 -50
- package/src/internal/cursor-deployment-relay.ts +0 -315
- package/src/internal/cursor-event-relay.ts +0 -675
- package/src/internal/cursor-relay-core.ts +0 -563
- package/src/internal/deferred-channel-session.ts +0 -61
- package/src/internal/deploy-client.ts +0 -1504
- package/src/internal/deploy-manifest.ts +0 -361
- package/src/internal/deploy-source.ts +0 -144
- package/src/internal/describe-error.ts +0 -32
- package/src/internal/dev-mode.ts +0 -20
- package/src/internal/discovery/agent-config.ts +0 -288
- package/src/internal/discovery/agent.ts +0 -381
- package/src/internal/discovery/channels.ts +0 -100
- package/src/internal/discovery/connections.ts +0 -505
- package/src/internal/discovery/context.ts +0 -38
- package/src/internal/discovery/cursor-plugin.ts +0 -628
- package/src/internal/discovery/extension-overlay.ts +0 -247
- package/src/internal/discovery/extensions.ts +0 -490
- package/src/internal/discovery/fs.ts +0 -103
- package/src/internal/discovery/hooks.ts +0 -63
- package/src/internal/discovery/info.ts +0 -174
- package/src/internal/discovery/instructions.ts +0 -98
- package/src/internal/discovery/modules.ts +0 -107
- package/src/internal/discovery/names.ts +0 -45
- package/src/internal/discovery/project.ts +0 -319
- package/src/internal/discovery/reminders.ts +0 -65
- package/src/internal/discovery/runtime.ts +0 -158
- package/src/internal/discovery/schedules.ts +0 -120
- package/src/internal/discovery/seed-files.ts +0 -34
- package/src/internal/discovery/services.ts +0 -151
- package/src/internal/discovery/skills.ts +0 -174
- package/src/internal/discovery/subagent.ts +0 -138
- package/src/internal/discovery/tools.ts +0 -170
- package/src/internal/discovery.ts +0 -27
- package/src/internal/distribution.ts +0 -126
- package/src/internal/docs-site.ts +0 -248
- package/src/internal/duration.ts +0 -37
- package/src/internal/env-file.ts +0 -83
- package/src/internal/eval-judge-model.ts +0 -142
- package/src/internal/eval-run-store.ts +0 -585
- package/src/internal/eval-runner.ts +0 -823
- package/src/internal/evals-client.ts +0 -475
- package/src/internal/event-log.ts +0 -342
- package/src/internal/event-mapper.ts +0 -811
- package/src/internal/expected-delivery-failure.ts +0 -34
- package/src/internal/factory-resource-channel.ts +0 -103
- package/src/internal/filesystem/errors.ts +0 -207
- package/src/internal/filesystem/format.ts +0 -253
- package/src/internal/filesystem/merge.ts +0 -192
- package/src/internal/filesystem/nearest.ts +0 -112
- package/src/internal/filesystem/scratch.ts +0 -239
- package/src/internal/filesystem/sdk-schemas.ts +0 -204
- package/src/internal/filesystem/tools.ts +0 -804
- package/src/internal/filesystem/walk.ts +0 -366
- package/src/internal/fixtures/units-server.ts +0 -52
- package/src/internal/framework-file-storage.ts +0 -357
- package/src/internal/framework-storage-selection.ts +0 -156
- package/src/internal/frontmatter.ts +0 -108
- package/src/internal/github-fanout.ts +0 -144
- package/src/internal/guest-network.ts +0 -391
- package/src/internal/handleAgentServeTrigger.ts +0 -286
- package/src/internal/host-files.ts +0 -341
- package/src/internal/host-kv.ts +0 -81
- package/src/internal/host-otel.ts +0 -231
- package/src/internal/host-platforms.ts +0 -170
- package/src/internal/hosted-admission-adapter.ts +0 -47
- package/src/internal/hosted-admission-context.ts +0 -37
- package/src/internal/hosted-catch-protocol.ts +0 -112
- package/src/internal/hosted-catch.ts +0 -179
- package/src/internal/hosted-delivery-protocol.ts +0 -787
- package/src/internal/hosted-delivery.ts +0 -1152
- package/src/internal/hosted-execution-diag.ts +0 -291
- package/src/internal/hosted-execution-flush.ts +0 -136
- package/src/internal/hosted-execution-latency.ts +0 -301
- package/src/internal/hosted-managed-automation.ts +0 -116
- package/src/internal/hosting.ts +0 -107
- package/src/internal/http-channel-define.ts +0 -25
- package/src/internal/http-channel.ts +0 -669
- package/src/internal/http-control-plane-session.ts +0 -110
- package/src/internal/ids.ts +0 -39
- package/src/internal/incoming-headers-to-fetch.ts +0 -45
- package/src/internal/init-interview.ts +0 -360
- package/src/internal/init-project.ts +0 -711
- package/src/internal/init-scaffold.ts +0 -182
- package/src/internal/inline-stdio-define-stub.ts +0 -4
- package/src/internal/inline-stdio-mcp.ts +0 -230
- package/src/internal/install-cursor-skills.ts +0 -601
- package/src/internal/is-record.ts +0 -3
- package/src/internal/json-schema.ts +0 -95
- package/src/internal/legacy-command-guard.ts +0 -54
- package/src/internal/listen-port.ts +0 -85
- package/src/internal/local-control-plane.ts +0 -442
- package/src/internal/local-env.ts +0 -59
- package/src/internal/local-ingress.ts +0 -90
- package/src/internal/log-ring.ts +0 -59
- package/src/internal/logs-client.ts +0 -477
- package/src/internal/map-pool.ts +0 -39
- package/src/internal/mcp-endpoint.ts +0 -747
- package/src/internal/mcp-host.ts +0 -481
- package/src/internal/mcp-oauth-on-demand.ts +0 -337
- package/src/internal/mcp-oauth-persist.ts +0 -118
- package/src/internal/mcp-oauth.ts +0 -549
- package/src/internal/net.ts +0 -29
- package/src/internal/open-browser.ts +0 -41
- package/src/internal/otel/attrs.ts +0 -16
- package/src/internal/otel/collector.ts +0 -937
- package/src/internal/otel/config.ts +0 -287
- package/src/internal/otel/http.ts +0 -122
- package/src/internal/otel/mcp.ts +0 -56
- package/src/internal/otel/propagation.ts +0 -17
- package/src/internal/otel/runtime.ts +0 -441
- package/src/internal/package-inline-stdio.ts +0 -114
- package/src/internal/peer-connections.ts +0 -96
- package/src/internal/platform-schedule-sync.ts +0 -75
- package/src/internal/platform-timers.ts +0 -365
- package/src/internal/playground/static.ts +0 -278
- package/src/internal/playground/toolchain.ts +0 -270
- package/src/internal/playground-proxy.ts +0 -564
- package/src/internal/process-memory-telemetry.ts +0 -334
- package/src/internal/project-layout.ts +0 -31
- package/src/internal/prompt-context.ts +0 -116
- package/src/internal/reminder-control-plane-protocol.ts +0 -482
- package/src/internal/reminder-runner.ts +0 -1559
- package/src/internal/reminder-schedule.ts +0 -104
- package/src/internal/reminder-store.ts +0 -176
- package/src/internal/request-error-status.ts +0 -95
- package/src/internal/request-headers.ts +0 -21
- package/src/internal/resolve-prod-target.ts +0 -334
- package/src/internal/resolved-connections.ts +0 -190
- package/src/internal/router.ts +0 -143
- package/src/internal/run-client.ts +0 -354
- package/src/internal/runtime-dispatch-runner.ts +0 -50
- package/src/internal/sanitize-mcp-tool-name.ts +0 -31
- package/src/internal/schedule-runner.ts +0 -154
- package/src/internal/scm/pr-url.ts +0 -245
- package/src/internal/sdk-runner.ts +0 -948
- package/src/internal/serve-restart.ts +0 -113
- package/src/internal/server.ts +0 -3135
- package/src/internal/session-cost.ts +0 -208
- package/src/internal/session-engine.ts +0 -5618
- package/src/internal/session-links.ts +0 -84
- package/src/internal/session-run-log.ts +0 -535
- package/src/internal/session-store.ts +0 -307
- package/src/internal/session-urls.ts +0 -32
- package/src/internal/sessions-client.ts +0 -239
- package/src/internal/skill-catalog.ts +0 -66
- package/src/internal/skills-sync.ts +0 -55
- package/src/internal/slack-provision-client.ts +0 -544
- package/src/internal/slack-thread-key.ts +0 -11
- package/src/internal/sleep.ts +0 -3
- package/src/internal/start-log-store.ts +0 -164
- package/src/internal/steering.ts +0 -17
- package/src/internal/storage-coordinator.ts +0 -800
- package/src/internal/storage-roles.ts +0 -86
- package/src/internal/storage.ts +0 -1
- package/src/internal/store-api-protocol.ts +0 -205
- package/src/internal/store-mirror.ts +0 -73
- package/src/internal/stream-progress.ts +0 -294
- package/src/internal/terminal-style.ts +0 -133
- package/src/internal/testing/factory-resource-fixtures.ts +0 -84
- package/src/internal/testing/scm-continuation-fixtures.ts +0 -285
- package/src/internal/tool-catalog.ts +0 -104
- package/src/internal/tool-policy.ts +0 -222
- package/src/internal/tool-result.ts +0 -50
- package/src/internal/trajectory.ts +0 -418
- package/src/internal/turn-cost.ts +0 -136
- package/src/internal/turn-governor.ts +0 -145
- package/src/internal/turn-lease-store.ts +0 -144
- package/src/internal/turn-outbox.ts +0 -77
- package/src/internal/update-check.ts +0 -517
- package/src/internal/v2-hosting.ts +0 -52
- package/src/internal/workspace-sync.ts +0 -114
- package/src/internal/workspace.ts +0 -505
- package/src/kv/memory-kv.ts +0 -94
- package/src/kv.ts +0 -18
- package/src/memory.ts +0 -487
- package/src/otel-public.ts +0 -24
- package/src/otel.ts +0 -320
- package/src/prompt.ts +0 -80
- package/src/reminders.ts +0 -65
- package/src/schedules.ts +0 -31
- package/src/skills.ts +0 -27
- package/src/storage-backends/cursor-hosted-v2.ts +0 -204
- package/src/storage-backends/cursor-hosted.ts +0 -388
- package/src/storage-backends/file-kv.ts +0 -276
- package/src/storage-protocol.ts +0 -261
- package/src/storage.ts +0 -408
- package/src/tools.ts +0 -166
- package/src/types.ts +0 -3766
- /package/dist/docs/assets/{reference_agent-config.md.DzGI777n.lean.js → reference_agent-config.md.Cj5uBKp4.lean.js} +0 -0
- /package/dist/docs/assets/{reference_artifacts.md.CFMNPreZ.lean.js → reference_artifacts.md.CQfKq8F2.lean.js} +0 -0
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub API token resolution for the channel pack.
|
|
3
|
-
*
|
|
4
|
-
* Resolution order for authenticated REST calls:
|
|
5
|
-
* 1. `credentials.token` / `credentials.installationToken` (explicit)
|
|
6
|
-
* 2. GitHub App JWT → installation access token (when App creds + installation
|
|
7
|
-
* id are available — webhook `installation.id` or `GITHUB_APP_INSTALLATION_ID`)
|
|
8
|
-
* 3. `GITHUB_TOKEN` / `GH_TOKEN` env (local PAT / fine-grained token)
|
|
9
|
-
* 4. `gh auth token` (local CLI session)
|
|
10
|
-
*
|
|
11
|
-
* Production should set App credentials and omit ambient PATs. Local testing
|
|
12
|
-
* can keep using a PAT or `gh auth login` when App creds are unset.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { execFile } from "node:child_process";
|
|
16
|
-
import { promisify } from "node:util";
|
|
17
|
-
import { createAppAuth } from "@octokit/auth-app";
|
|
18
|
-
import type { GitHubChannelCredentials, GitHubCredentialValue } from "./types.js";
|
|
19
|
-
|
|
20
|
-
const execFileAsync = promisify(execFile);
|
|
21
|
-
|
|
22
|
-
export interface GitHubAuthApiOptions {
|
|
23
|
-
apiBaseUrl?: string;
|
|
24
|
-
fetch?: typeof fetch;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
let ghAuthTokenCache: { token: string; expiresAtMs: number } | null = null;
|
|
28
|
-
const GH_AUTH_CACHE_MS = 5 * 60_000;
|
|
29
|
-
|
|
30
|
-
/** Refresh exported `GH_TOKEN` before installation tokens expire (~60m). */
|
|
31
|
-
const GH_CLI_TOKEN_REFRESH_MS = 50 * 60_000;
|
|
32
|
-
let ghCliTokenRefreshTimer: ReturnType<typeof setInterval> | null = null;
|
|
33
|
-
|
|
34
|
-
/** Resolve a credential value (literal or lazy). */
|
|
35
|
-
export async function resolveCredentialValue(
|
|
36
|
-
value: GitHubCredentialValue | undefined,
|
|
37
|
-
): Promise<string | undefined> {
|
|
38
|
-
if (value === undefined) {
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
const resolved = typeof value === "function" ? await value() : value;
|
|
42
|
-
if (typeof resolved !== "string") {
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
const trimmed = resolved.trim();
|
|
46
|
-
return trimmed === "" ? undefined : trimmed;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** True when App id + private key are configured (credentials or env). */
|
|
50
|
-
export async function hasGitHubAppCredentials(
|
|
51
|
-
credentials?: GitHubChannelCredentials,
|
|
52
|
-
): Promise<boolean> {
|
|
53
|
-
try {
|
|
54
|
-
await resolveGitHubAppId(credentials?.appId);
|
|
55
|
-
await resolveGitHubPrivateKey(credentials?.privateKey);
|
|
56
|
-
return true;
|
|
57
|
-
} catch {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Resolve an installation id from the call site, then
|
|
64
|
-
* `GITHUB_APP_INSTALLATION_ID` (host / non-webhook GitHub calls).
|
|
65
|
-
*/
|
|
66
|
-
export async function resolveGitHubInstallationId(
|
|
67
|
-
installationId?: number,
|
|
68
|
-
): Promise<number | undefined> {
|
|
69
|
-
if (installationId !== undefined && Number.isInteger(installationId) && installationId > 0) {
|
|
70
|
-
return installationId;
|
|
71
|
-
}
|
|
72
|
-
const fromEnv = await resolveCredentialValue(process.env.GITHUB_APP_INSTALLATION_ID);
|
|
73
|
-
if (fromEnv === undefined) {
|
|
74
|
-
return undefined;
|
|
75
|
-
}
|
|
76
|
-
if (!/^[1-9][0-9]*$/u.test(fromEnv)) {
|
|
77
|
-
return undefined;
|
|
78
|
-
}
|
|
79
|
-
return Number(fromEnv);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Resolve a bearer token for GitHub REST calls. Prefer explicit credentials,
|
|
84
|
-
* then App installation tokens when configured, then local PAT / `gh auth`.
|
|
85
|
-
*/
|
|
86
|
-
export async function resolveGitHubAccessToken(input: {
|
|
87
|
-
api?: GitHubAuthApiOptions;
|
|
88
|
-
credentials?: GitHubChannelCredentials;
|
|
89
|
-
installationId?: number;
|
|
90
|
-
}): Promise<string> {
|
|
91
|
-
const explicit =
|
|
92
|
-
(await resolveCredentialValue(input.credentials?.token)) ??
|
|
93
|
-
(await resolveCredentialValue(input.credentials?.installationToken));
|
|
94
|
-
if (explicit !== undefined) {
|
|
95
|
-
return explicit;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const installationId = await resolveGitHubInstallationId(input.installationId);
|
|
99
|
-
if (installationId !== undefined && (await hasGitHubAppCredentials(input.credentials))) {
|
|
100
|
-
return createGitHubInstallationToken({
|
|
101
|
-
api: input.api,
|
|
102
|
-
appId: input.credentials?.appId,
|
|
103
|
-
installationId,
|
|
104
|
-
privateKey: input.credentials?.privateKey,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const fromEnv =
|
|
109
|
-
(await resolveCredentialValue(process.env.GITHUB_TOKEN)) ??
|
|
110
|
-
(await resolveCredentialValue(process.env.GH_TOKEN));
|
|
111
|
-
if (fromEnv !== undefined) {
|
|
112
|
-
return fromEnv;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const fromGh = await tryResolveGhAuthToken();
|
|
116
|
-
if (fromGh !== undefined) {
|
|
117
|
-
return fromGh;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
throw new Error(
|
|
121
|
-
"githubChannel: no GitHub token available (set GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY + installation id, or GITHUB_TOKEN / GH_TOKEN, or run `gh auth login`).",
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/** Soft resolve — returns undefined instead of throwing. */
|
|
126
|
-
export async function tryResolveGitHubAccessToken(input: {
|
|
127
|
-
api?: GitHubAuthApiOptions;
|
|
128
|
-
credentials?: GitHubChannelCredentials;
|
|
129
|
-
installationId?: number;
|
|
130
|
-
}): Promise<string | undefined> {
|
|
131
|
-
try {
|
|
132
|
-
return await resolveGitHubAccessToken(input);
|
|
133
|
-
} catch {
|
|
134
|
-
return undefined;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/** Read `gh auth token` when the CLI is logged in. Cached briefly. */
|
|
139
|
-
export async function tryResolveGhAuthToken(): Promise<string | undefined> {
|
|
140
|
-
if (ghAuthTokenCache !== null && Date.now() < ghAuthTokenCache.expiresAtMs) {
|
|
141
|
-
return ghAuthTokenCache.token;
|
|
142
|
-
}
|
|
143
|
-
try {
|
|
144
|
-
const { stdout } = await execFileAsync("gh", ["auth", "token"], {
|
|
145
|
-
timeout: 5_000,
|
|
146
|
-
env: process.env,
|
|
147
|
-
});
|
|
148
|
-
const token = stdout.trim();
|
|
149
|
-
if (token === "") {
|
|
150
|
-
return undefined;
|
|
151
|
-
}
|
|
152
|
-
ghAuthTokenCache = {
|
|
153
|
-
token,
|
|
154
|
-
expiresAtMs: Date.now() + GH_AUTH_CACHE_MS,
|
|
155
|
-
};
|
|
156
|
-
return token;
|
|
157
|
-
} catch {
|
|
158
|
-
return undefined;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
export async function resolveGitHubAppId(appId?: GitHubCredentialValue | number): Promise<string> {
|
|
163
|
-
const source =
|
|
164
|
-
appId ??
|
|
165
|
-
(process.env.GITHUB_APP_ID !== undefined && process.env.GITHUB_APP_ID !== ""
|
|
166
|
-
? process.env.GITHUB_APP_ID
|
|
167
|
-
: undefined);
|
|
168
|
-
if (source === undefined) {
|
|
169
|
-
throw new Error("githubChannel: GITHUB_APP_ID is required.");
|
|
170
|
-
}
|
|
171
|
-
if (typeof source === "number") {
|
|
172
|
-
return String(source);
|
|
173
|
-
}
|
|
174
|
-
const value = await resolveCredentialValue(source);
|
|
175
|
-
if (value === undefined) {
|
|
176
|
-
throw new Error("githubChannel: GITHUB_APP_ID is required.");
|
|
177
|
-
}
|
|
178
|
-
return value;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
export async function resolveGitHubPrivateKey(privateKey?: GitHubCredentialValue): Promise<string> {
|
|
182
|
-
const source =
|
|
183
|
-
privateKey ??
|
|
184
|
-
(process.env.GITHUB_APP_PRIVATE_KEY !== undefined && process.env.GITHUB_APP_PRIVATE_KEY !== ""
|
|
185
|
-
? process.env.GITHUB_APP_PRIVATE_KEY
|
|
186
|
-
: undefined);
|
|
187
|
-
if (source === undefined) {
|
|
188
|
-
throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
|
|
189
|
-
}
|
|
190
|
-
const value = await resolveCredentialValue(source);
|
|
191
|
-
if (value === undefined) {
|
|
192
|
-
throw new Error("githubChannel: GITHUB_APP_PRIVATE_KEY is required.");
|
|
193
|
-
}
|
|
194
|
-
return value.replace(/\\n/gu, "\n");
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Mint an installation access token via `@octokit/auth-app`.
|
|
199
|
-
* Prefer {@link createGitHubOctokit} for normal API work — this is for
|
|
200
|
-
* callers that only need the raw token string.
|
|
201
|
-
*/
|
|
202
|
-
export async function createGitHubInstallationToken(input: {
|
|
203
|
-
api?: GitHubAuthApiOptions;
|
|
204
|
-
appId?: GitHubCredentialValue | number;
|
|
205
|
-
installationId: number;
|
|
206
|
-
privateKey?: GitHubCredentialValue;
|
|
207
|
-
}): Promise<string> {
|
|
208
|
-
const appId = await resolveGitHubAppId(input.appId);
|
|
209
|
-
const privateKey = await resolveGitHubPrivateKey(input.privateKey);
|
|
210
|
-
// Prefer createGitHubOctokit for API work — this path only mints a raw
|
|
211
|
-
// token. Custom fetch belongs on the Octokit client, not createAppAuth
|
|
212
|
-
// (StrategyOptions.request expects a full RequestInterface).
|
|
213
|
-
const auth = createAppAuth({
|
|
214
|
-
appId,
|
|
215
|
-
privateKey,
|
|
216
|
-
...(input.api?.apiBaseUrl === undefined ? {} : { baseUrl: input.api.apiBaseUrl }),
|
|
217
|
-
});
|
|
218
|
-
const result = await auth({
|
|
219
|
-
type: "installation",
|
|
220
|
-
installationId: input.installationId,
|
|
221
|
-
});
|
|
222
|
-
return result.token;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Export the resolved host GitHub token as `process.env.GH_TOKEN` so
|
|
227
|
-
* subprocesses that shell out to `gh` work on App-credential hosts (corp
|
|
228
|
-
* agent-serve). Intended for serve warmup when auth source is `app`.
|
|
229
|
-
* Returns whether `GH_TOKEN` was written; refreshes on an interval.
|
|
230
|
-
*/
|
|
231
|
-
export async function ensureGhCliTokenEnv(): Promise<boolean> {
|
|
232
|
-
const token = await tryResolveGitHubAccessToken({});
|
|
233
|
-
if (token === undefined) {
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
process.env.GH_TOKEN = token;
|
|
237
|
-
if (ghCliTokenRefreshTimer === null) {
|
|
238
|
-
const timer = setInterval(() => {
|
|
239
|
-
void ensureGhCliTokenEnv();
|
|
240
|
-
}, GH_CLI_TOKEN_REFRESH_MS);
|
|
241
|
-
timer.unref?.();
|
|
242
|
-
ghCliTokenRefreshTimer = timer;
|
|
243
|
-
}
|
|
244
|
-
return true;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/** Clears in-memory caches. Intended for tests. */
|
|
248
|
-
export function clearGitHubAuthCaches(): void {
|
|
249
|
-
ghAuthTokenCache = null;
|
|
250
|
-
if (ghCliTokenRefreshTimer !== null) {
|
|
251
|
-
clearInterval(ghCliTokenRefreshTimer);
|
|
252
|
-
ghCliTokenRefreshTimer = null;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rebuild GitHub API + thread handles for inbound hooks and stream events.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import type { Octokit } from "@octokit/rest";
|
|
6
|
-
import {
|
|
7
|
-
callGitHubApi,
|
|
8
|
-
createGitHubCommitStatus,
|
|
9
|
-
createGitHubIssueComment,
|
|
10
|
-
createGitHubOctokit,
|
|
11
|
-
createGitHubReaction,
|
|
12
|
-
createGitHubReviewCommentReply,
|
|
13
|
-
type GitHubApiMethod,
|
|
14
|
-
type GitHubApiOptions,
|
|
15
|
-
type GitHubApiResponse,
|
|
16
|
-
type GitHubJsonObject,
|
|
17
|
-
type GitHubPostedComment,
|
|
18
|
-
type GitHubReactionContent,
|
|
19
|
-
} from "./api.js";
|
|
20
|
-
import { createGitHubCheck, type GitHubCheck, type GitHubCheckCreateInput } from "./checks.js";
|
|
21
|
-
import type {
|
|
22
|
-
GitHubChannelCredentials,
|
|
23
|
-
GitHubConversationKind,
|
|
24
|
-
GitHubRepositoryRef,
|
|
25
|
-
} from "./types.js";
|
|
26
|
-
|
|
27
|
-
/** Hidden marker on outbound GitHub comments so inbound dispatch ignores them. */
|
|
28
|
-
export const GITHUB_OUTBOUND_MARKER = "<!-- agent-serve-github -->";
|
|
29
|
-
|
|
30
|
-
export function formatGitHubOutboundComment(body: string): string {
|
|
31
|
-
if (body.includes(GITHUB_OUTBOUND_MARKER)) {
|
|
32
|
-
return body;
|
|
33
|
-
}
|
|
34
|
-
return `${body.trimEnd()}\n\n${GITHUB_OUTBOUND_MARKER}`;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface GitHubBindingConfig {
|
|
38
|
-
api?: GitHubApiOptions;
|
|
39
|
-
credentials?: GitHubChannelCredentials;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** Serializable fields needed to rebuild handles. */
|
|
43
|
-
export interface GitHubBindingState {
|
|
44
|
-
conversationKind: GitHubConversationKind;
|
|
45
|
-
installationId: number | null;
|
|
46
|
-
issueNumber: number | null;
|
|
47
|
-
owner: string;
|
|
48
|
-
pullRequestNumber: number | null;
|
|
49
|
-
repo: string;
|
|
50
|
-
repositoryId: number | null;
|
|
51
|
-
/**
|
|
52
|
-
* `repository.html_url` from the delivery. Carries the GitHub Enterprise
|
|
53
|
-
* Server host; absent on state persisted before this field existed, in
|
|
54
|
-
* which case handles fall back to `https://github.com`.
|
|
55
|
-
*/
|
|
56
|
-
repositoryUrl?: string | null;
|
|
57
|
-
reviewCommentId: number | null;
|
|
58
|
-
reviewThreadRootCommentId: number | null;
|
|
59
|
-
triggeringCommentId: number | null;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** GitHub operations exposed to hooks (`ctx.github`). */
|
|
63
|
-
export interface GitHubHandle {
|
|
64
|
-
installationId: number | undefined;
|
|
65
|
-
repository: GitHubRepositoryRef;
|
|
66
|
-
/**
|
|
67
|
-
* Authenticated `@octokit/rest` client. Prefer typed `octokit.rest.*`
|
|
68
|
-
* methods for new code; keep {@link request} / {@link createStatus} for
|
|
69
|
-
* thin wrappers and host-side tasks.
|
|
70
|
-
*/
|
|
71
|
-
getOctokit(): Promise<Octokit>;
|
|
72
|
-
/**
|
|
73
|
-
* Call an arbitrary GitHub REST path with channel auth (PAT / App /
|
|
74
|
-
* `gh auth token`). Prefer {@link getOctokit} for typed calls.
|
|
75
|
-
*/
|
|
76
|
-
request<T = unknown>(input: {
|
|
77
|
-
body?: GitHubJsonObject;
|
|
78
|
-
method: GitHubApiMethod;
|
|
79
|
-
path: string;
|
|
80
|
-
}): Promise<GitHubApiResponse<T>>;
|
|
81
|
-
/** Create a commit status on `sha`. */
|
|
82
|
-
createStatus(input: {
|
|
83
|
-
sha: string;
|
|
84
|
-
state: "error" | "failure" | "pending" | "success";
|
|
85
|
-
context?: string;
|
|
86
|
-
description?: string;
|
|
87
|
-
targetUrl?: string;
|
|
88
|
-
}): Promise<GitHubApiResponse>;
|
|
89
|
-
/**
|
|
90
|
-
* Open a CI check run (Checks API) on `sha` and get a handle for updating
|
|
91
|
-
* and concluding it. Needs `checks:write` — with `cursorAccount`, declare
|
|
92
|
-
* `githubChannel({ checks: true })` to opt the lease up.
|
|
93
|
-
*/
|
|
94
|
-
createCheck(
|
|
95
|
-
input: Omit<GitHubCheckCreateInput, "github" | "owner" | "repo">,
|
|
96
|
-
): Promise<GitHubCheck>;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/** Thread-scoped operations for the current conversation (`ctx.thread`). */
|
|
100
|
-
export interface GitHubThread {
|
|
101
|
-
kind: GitHubConversationKind;
|
|
102
|
-
/** Post a reply on the issue/PR timeline or review thread. */
|
|
103
|
-
post(message: string): Promise<GitHubPostedComment>;
|
|
104
|
-
/**
|
|
105
|
-
* React to the triggering comment. No-ops when there is no comment to
|
|
106
|
-
* react to (e.g. a PR-opened delivery).
|
|
107
|
-
*/
|
|
108
|
-
react(content: GitHubReactionContent): Promise<void>;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function buildGitHubBinding(input: {
|
|
112
|
-
config: GitHubBindingConfig;
|
|
113
|
-
state: GitHubBindingState;
|
|
114
|
-
}): { github: GitHubHandle; thread: GitHubThread } {
|
|
115
|
-
const { config, state } = input;
|
|
116
|
-
const repository: GitHubRepositoryRef = {
|
|
117
|
-
fullName: `${state.owner}/${state.repo}`,
|
|
118
|
-
url: state.repositoryUrl ?? `https://github.com/${state.owner}/${state.repo}`,
|
|
119
|
-
owner: state.owner,
|
|
120
|
-
name: state.repo,
|
|
121
|
-
...(state.repositoryId === null ? {} : { id: state.repositoryId }),
|
|
122
|
-
};
|
|
123
|
-
const installationId = state.installationId ?? undefined;
|
|
124
|
-
|
|
125
|
-
let octokitPromise: Promise<Octokit> | undefined;
|
|
126
|
-
const getOctokit = (): Promise<Octokit> => {
|
|
127
|
-
octokitPromise ??= createGitHubOctokit({
|
|
128
|
-
api: config.api,
|
|
129
|
-
credentials: config.credentials,
|
|
130
|
-
installationId,
|
|
131
|
-
});
|
|
132
|
-
return octokitPromise;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const github: GitHubHandle = {
|
|
136
|
-
installationId,
|
|
137
|
-
repository,
|
|
138
|
-
getOctokit,
|
|
139
|
-
request(req) {
|
|
140
|
-
return callGitHubApi({
|
|
141
|
-
api: config.api,
|
|
142
|
-
body: req.body,
|
|
143
|
-
credentials: config.credentials,
|
|
144
|
-
installationId,
|
|
145
|
-
method: req.method,
|
|
146
|
-
path: req.path,
|
|
147
|
-
});
|
|
148
|
-
},
|
|
149
|
-
createStatus(status) {
|
|
150
|
-
return createGitHubCommitStatus({
|
|
151
|
-
api: config.api,
|
|
152
|
-
credentials: config.credentials,
|
|
153
|
-
installationId,
|
|
154
|
-
owner: state.owner,
|
|
155
|
-
repo: state.repo,
|
|
156
|
-
sha: status.sha,
|
|
157
|
-
state: status.state,
|
|
158
|
-
...(status.context === undefined ? {} : { context: status.context }),
|
|
159
|
-
...(status.description === undefined ? {} : { description: status.description }),
|
|
160
|
-
...(status.targetUrl === undefined ? {} : { targetUrl: status.targetUrl }),
|
|
161
|
-
});
|
|
162
|
-
},
|
|
163
|
-
createCheck(check) {
|
|
164
|
-
return createGitHubCheck({
|
|
165
|
-
...check,
|
|
166
|
-
github: { getOctokit },
|
|
167
|
-
owner: state.owner,
|
|
168
|
-
repo: state.repo,
|
|
169
|
-
});
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
const thread: GitHubThread = {
|
|
174
|
-
kind: state.conversationKind,
|
|
175
|
-
post(message) {
|
|
176
|
-
if (state.conversationKind === "review_thread") {
|
|
177
|
-
return createGitHubReviewCommentReply({
|
|
178
|
-
api: config.api,
|
|
179
|
-
body: message,
|
|
180
|
-
commentId: requiredNumber(
|
|
181
|
-
state.reviewThreadRootCommentId ?? state.reviewCommentId,
|
|
182
|
-
"reviewThreadRootCommentId",
|
|
183
|
-
),
|
|
184
|
-
credentials: config.credentials,
|
|
185
|
-
installationId,
|
|
186
|
-
owner: state.owner,
|
|
187
|
-
pullRequestNumber: requiredNumber(state.pullRequestNumber, "pullRequestNumber"),
|
|
188
|
-
repo: state.repo,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
return createGitHubIssueComment({
|
|
192
|
-
api: config.api,
|
|
193
|
-
body: message,
|
|
194
|
-
credentials: config.credentials,
|
|
195
|
-
installationId,
|
|
196
|
-
issueNumber: requiredNumber(state.issueNumber ?? state.pullRequestNumber, "issueNumber"),
|
|
197
|
-
owner: state.owner,
|
|
198
|
-
repo: state.repo,
|
|
199
|
-
});
|
|
200
|
-
},
|
|
201
|
-
async react(content) {
|
|
202
|
-
const commentId =
|
|
203
|
-
state.conversationKind === "review_thread"
|
|
204
|
-
? state.reviewCommentId
|
|
205
|
-
: state.triggeringCommentId;
|
|
206
|
-
if (commentId === null) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
await createGitHubReaction({
|
|
210
|
-
api: config.api,
|
|
211
|
-
commentId,
|
|
212
|
-
content,
|
|
213
|
-
credentials: config.credentials,
|
|
214
|
-
installationId,
|
|
215
|
-
owner: state.owner,
|
|
216
|
-
repo: state.repo,
|
|
217
|
-
subject:
|
|
218
|
-
state.conversationKind === "review_thread"
|
|
219
|
-
? "pull_request_review_comment"
|
|
220
|
-
: "issue_comment",
|
|
221
|
-
});
|
|
222
|
-
},
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
return { github, thread };
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function requiredNumber(value: number | null | undefined, name: string): number {
|
|
229
|
-
if (typeof value === "number" && Number.isFinite(value)) {
|
|
230
|
-
return value;
|
|
231
|
-
}
|
|
232
|
-
throw new Error(`githubChannel: missing ${name}.`);
|
|
233
|
-
}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHub CI checks (Checks API) — the GitHub {@link CiCheckWriter} behind the
|
|
3
|
-
* shared check lifecycle in `../checks.js`.
|
|
4
|
-
*
|
|
5
|
-
* `createGitHubCheck` opens a merge-box check run on a commit and returns the
|
|
6
|
-
* shared `CiCheck` handle; `resumeGitHubCheck` rebuilds one from a stored
|
|
7
|
-
* check-run id. Works with any client exposing `getOctokit()` (`ctx.github`,
|
|
8
|
-
* `ctx.host.github`), and is also reachable as `ctx.github.createCheck(...)`.
|
|
9
|
-
*
|
|
10
|
-
* Posting checks needs `checks:write`. With `cursorAccount`, declare
|
|
11
|
-
* `githubChannel({ checks: true })` so the hosted lease is minted on the
|
|
12
|
-
* `contents-write` tier; GitHub App / PAT credentials need the equivalent
|
|
13
|
-
* permission. API failures are normalized into `GitHubApiError`.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import type { Octokit } from "@octokit/rest";
|
|
17
|
-
import {
|
|
18
|
-
type CiCheck,
|
|
19
|
-
type CiCheckConcludeInput,
|
|
20
|
-
type CiCheckCreateInput,
|
|
21
|
-
type CiCheckOutput,
|
|
22
|
-
type CiCheckRef,
|
|
23
|
-
type CiCheckUpdateInput,
|
|
24
|
-
type CiCheckWriter,
|
|
25
|
-
openCiCheck,
|
|
26
|
-
resumeCiCheck,
|
|
27
|
-
} from "../checks.js";
|
|
28
|
-
import { wrapOctokitError } from "./api.js";
|
|
29
|
-
|
|
30
|
-
/** Any client that can hand out an authenticated Octokit. */
|
|
31
|
-
export interface GitHubCheckClient {
|
|
32
|
-
getOctokit(): Promise<Octokit>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export type GitHubCheckOutput = CiCheckOutput;
|
|
36
|
-
export type GitHubCheckUpdateInput = CiCheckUpdateInput;
|
|
37
|
-
export type GitHubCheckConcludeInput = CiCheckConcludeInput;
|
|
38
|
-
|
|
39
|
-
/** A created check run. All methods throw `GitHubApiError` on API failure. */
|
|
40
|
-
export type GitHubCheck = CiCheck & CiCheckRef;
|
|
41
|
-
|
|
42
|
-
export interface GitHubCheckCreateInput extends CiCheckCreateInput {
|
|
43
|
-
/** Client used for every API call on the returned handle. */
|
|
44
|
-
github: GitHubCheckClient;
|
|
45
|
-
/** Repository owner login, e.g. `"acme"`. */
|
|
46
|
-
owner: string;
|
|
47
|
-
/** Repository name, e.g. `"widgets"`. */
|
|
48
|
-
repo: string;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* GitHub writer: first write creates the check run (capturing its id), later
|
|
53
|
-
* writes patch it.
|
|
54
|
-
*/
|
|
55
|
-
function githubCheckWriter(input: {
|
|
56
|
-
github: GitHubCheckClient;
|
|
57
|
-
owner: string;
|
|
58
|
-
repo: string;
|
|
59
|
-
name: string;
|
|
60
|
-
sha?: string;
|
|
61
|
-
checkRunId?: number;
|
|
62
|
-
}): CiCheckWriter {
|
|
63
|
-
let checkRunId = input.checkRunId;
|
|
64
|
-
return async write => {
|
|
65
|
-
const octokit = await input.github.getOctokit();
|
|
66
|
-
const base = {
|
|
67
|
-
owner: input.owner,
|
|
68
|
-
repo: input.repo,
|
|
69
|
-
name: input.name,
|
|
70
|
-
status: write.status,
|
|
71
|
-
conclusion: write.conclusion,
|
|
72
|
-
completed_at: write.completedAt,
|
|
73
|
-
details_url: write.detailsUrl,
|
|
74
|
-
output: write.output,
|
|
75
|
-
};
|
|
76
|
-
if (checkRunId === undefined) {
|
|
77
|
-
if (input.sha === undefined) {
|
|
78
|
-
throw new Error("githubChannel: cannot create a check without a sha.");
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
const response = await octokit.rest.checks.create({
|
|
82
|
-
...base,
|
|
83
|
-
head_sha: input.sha,
|
|
84
|
-
started_at: write.startedAt,
|
|
85
|
-
});
|
|
86
|
-
checkRunId = response.data.id;
|
|
87
|
-
return {
|
|
88
|
-
id: response.data.id,
|
|
89
|
-
url: typeof response.data.html_url === "string" ? response.data.html_url : undefined,
|
|
90
|
-
};
|
|
91
|
-
} catch (error) {
|
|
92
|
-
throw wrapOctokitError(error, "POST", `/repos/${input.owner}/${input.repo}/check-runs`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
try {
|
|
96
|
-
await octokit.rest.checks.update({ ...base, check_run_id: checkRunId });
|
|
97
|
-
return undefined;
|
|
98
|
-
} catch (error) {
|
|
99
|
-
throw wrapOctokitError(
|
|
100
|
-
error,
|
|
101
|
-
"PATCH",
|
|
102
|
-
`/repos/${input.owner}/${input.repo}/check-runs/${checkRunId}`,
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Create a CI check run on a commit and return a handle for later updates.
|
|
110
|
-
*
|
|
111
|
-
* ```ts
|
|
112
|
-
* const check = await createGitHubCheck({
|
|
113
|
-
* github: ctx.github,
|
|
114
|
-
* owner: ctx.repository.owner,
|
|
115
|
-
* repo: ctx.repository.name,
|
|
116
|
-
* name: "Cursor Security Review",
|
|
117
|
-
* sha: pr.headSha,
|
|
118
|
-
* detailsUrl: sessionUrl,
|
|
119
|
-
* output: { title: "Running…", summary: `[View session](${sessionUrl})` },
|
|
120
|
-
* });
|
|
121
|
-
* // …do the work…
|
|
122
|
-
* await check.conclude({ conclusion: "success", output: { … } });
|
|
123
|
-
* ```
|
|
124
|
-
*/
|
|
125
|
-
export function createGitHubCheck(input: GitHubCheckCreateInput): Promise<GitHubCheck> {
|
|
126
|
-
return openCiCheck(githubCheckWriter(input), input);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Rebuild a {@link GitHubCheck} handle for an existing check run id (e.g.
|
|
131
|
-
* after a process restart). No API call is made until the first update.
|
|
132
|
-
*/
|
|
133
|
-
export function resumeGitHubCheck(input: {
|
|
134
|
-
github: GitHubCheckClient;
|
|
135
|
-
owner: string;
|
|
136
|
-
repo: string;
|
|
137
|
-
name: string;
|
|
138
|
-
checkRunId: number;
|
|
139
|
-
url?: string;
|
|
140
|
-
}): GitHubCheck {
|
|
141
|
-
return resumeCiCheck(githubCheckWriter(input), {
|
|
142
|
-
id: input.checkRunId,
|
|
143
|
-
url: input.url,
|
|
144
|
-
});
|
|
145
|
-
}
|