@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,301 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hosted-execution interactive latency: first user-visible outbound and
|
|
3
|
-
* phase timings (send → waitForCompletion → durability drain → post-drain →
|
|
4
|
-
* total).
|
|
5
|
-
*
|
|
6
|
-
* Guest OTel (`agent_sdk.hosted_execution.*`) follows the package's existing
|
|
7
|
-
* guest-side OTel meter conventions (same pattern as `agent_sdk.http.duration`
|
|
8
|
-
* / process-memory histograms) so guest exporters can chart phases without
|
|
9
|
-
* waiting on control-plane scrape.
|
|
10
|
-
*
|
|
11
|
-
* Control-plane scrape of `as_hex` Server-Timing into
|
|
12
|
-
* `agent_sdk.runtime.hosted_execution.*` follows the established
|
|
13
|
-
* `guest_duration_ms` / `guest_network_wait_ms` path so Datadog control-plane
|
|
14
|
-
* dashboards can join execute wall time with guest phases. Both are retained
|
|
15
|
-
* because they feed different scrape surfaces already used in production.
|
|
16
|
-
*
|
|
17
|
-
* Tags stay low-cardinality: channel_kind, phase, outcome, delivery_surface.
|
|
18
|
-
* Never tag message content, Slack IDs, tokens, workflow/request/session IDs.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
22
|
-
import {
|
|
23
|
-
type Attributes,
|
|
24
|
-
type Counter,
|
|
25
|
-
type Histogram,
|
|
26
|
-
type Meter,
|
|
27
|
-
metrics,
|
|
28
|
-
} from "@opentelemetry/api";
|
|
29
|
-
|
|
30
|
-
export const HOSTED_EXECUTION_DURATION_METRIC = "agent_sdk.hosted_execution.duration_ms";
|
|
31
|
-
export const HOSTED_EXECUTION_VISIBLE_REPLY_METRIC = "agent_sdk.hosted_execution.visible_reply";
|
|
32
|
-
|
|
33
|
-
/** Server-Timing metric name scraped by the control plane. */
|
|
34
|
-
export const HOSTED_EXECUTION_SERVER_TIMING = "as_hex";
|
|
35
|
-
|
|
36
|
-
export type HostedVisibleReplyOutcome = "none" | "progress_update" | "final_post" | "error";
|
|
37
|
-
|
|
38
|
-
export type HostedLatencyPhase =
|
|
39
|
-
| "to_first_visible"
|
|
40
|
-
| "first_visible_to_completion"
|
|
41
|
-
| "durability_drain"
|
|
42
|
-
| "post_drain"
|
|
43
|
-
| "total";
|
|
44
|
-
|
|
45
|
-
export type HostedDeliverySurface = "slack" | "none";
|
|
46
|
-
|
|
47
|
-
export type HostedExecutionLatencySnapshot = {
|
|
48
|
-
channelKind: string;
|
|
49
|
-
outcome: HostedVisibleReplyOutcome;
|
|
50
|
-
deliverySurface: HostedDeliverySurface;
|
|
51
|
-
phases: Partial<Record<HostedLatencyPhase, number>>;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
type LatencyStore = {
|
|
55
|
-
startedAt: number;
|
|
56
|
-
channelKind: string;
|
|
57
|
-
firstVisibleAt: number | undefined;
|
|
58
|
-
firstVisibleOutcome: Exclude<HostedVisibleReplyOutcome, "none" | "error"> | undefined;
|
|
59
|
-
deliverySurface: HostedDeliverySurface;
|
|
60
|
-
visibleCounterEmitted: boolean;
|
|
61
|
-
errorEmitted: boolean;
|
|
62
|
-
finalized: boolean;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const latencyAls = new AsyncLocalStorage<LatencyStore>();
|
|
66
|
-
|
|
67
|
-
const INSTRUMENTATION = "agent_sdk";
|
|
68
|
-
|
|
69
|
-
let meterOverride: Meter | undefined;
|
|
70
|
-
let durationHistogram: Histogram | undefined;
|
|
71
|
-
let visibleCounter: Counter | undefined;
|
|
72
|
-
let nowOverride: (() => number) | undefined;
|
|
73
|
-
|
|
74
|
-
/** Monotonic clock used for latency marks (injectable in tests). */
|
|
75
|
-
export function hostedExecutionNow(): number {
|
|
76
|
-
return nowOverride !== undefined ? nowOverride() : performance.now();
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** @internal */
|
|
80
|
-
export function setHostedExecutionLatencyNowForTests(now: (() => number) | undefined): void {
|
|
81
|
-
nowOverride = now;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** @internal */
|
|
85
|
-
export function setHostedExecutionLatencyMeterForTests(meter: Meter | undefined): void {
|
|
86
|
-
meterOverride = meter;
|
|
87
|
-
durationHistogram = undefined;
|
|
88
|
-
visibleCounter = undefined;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** @internal */
|
|
92
|
-
export function resetHostedExecutionLatencyForTests(): void {
|
|
93
|
-
meterOverride = undefined;
|
|
94
|
-
durationHistogram = undefined;
|
|
95
|
-
visibleCounter = undefined;
|
|
96
|
-
nowOverride = undefined;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function resolveMeter(): Meter {
|
|
100
|
-
return meterOverride ?? metrics.getMeter(INSTRUMENTATION);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function durationInstrument(): Histogram {
|
|
104
|
-
if (durationHistogram === undefined) {
|
|
105
|
-
durationHistogram = resolveMeter().createHistogram(HOSTED_EXECUTION_DURATION_METRIC, {
|
|
106
|
-
unit: "ms",
|
|
107
|
-
description:
|
|
108
|
-
"Hosted execution interactive latency phases (first visible, completion, durability, post-drain, total)",
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
return durationHistogram;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function visibleInstrument(): Counter {
|
|
115
|
-
if (visibleCounter === undefined) {
|
|
116
|
-
visibleCounter = resolveMeter().createCounter(HOSTED_EXECUTION_VISIBLE_REPLY_METRIC, {
|
|
117
|
-
description:
|
|
118
|
-
"Hosted execution first-visible Slack outbound outcome (exact-once per execution)",
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
return visibleCounter;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export function sanitizeHostedChannelKind(value: string): string {
|
|
125
|
-
const normalized = value
|
|
126
|
-
.trim()
|
|
127
|
-
.toLowerCase()
|
|
128
|
-
.replace(/[^a-z0-9_]+/g, "_")
|
|
129
|
-
.replace(/^_+|_+$/g, "")
|
|
130
|
-
.slice(0, 64);
|
|
131
|
-
return normalized === "" ? "unknown" : normalized;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function baseAttrs(store: LatencyStore): Attributes {
|
|
135
|
-
return {
|
|
136
|
-
channel_kind: store.channelKind,
|
|
137
|
-
delivery_surface: store.deliverySurface,
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Run hosted execution work inside the latency ALS. Slack delivery marks
|
|
143
|
-
* first-visible against this store; no-ops outside the window.
|
|
144
|
-
*/
|
|
145
|
-
export function runWithHostedExecutionLatency<T>(args: { channelKind: string }, work: () => T): T {
|
|
146
|
-
const store: LatencyStore = {
|
|
147
|
-
startedAt: hostedExecutionNow(),
|
|
148
|
-
channelKind: sanitizeHostedChannelKind(args.channelKind),
|
|
149
|
-
firstVisibleAt: undefined,
|
|
150
|
-
firstVisibleOutcome: undefined,
|
|
151
|
-
deliverySurface: "none",
|
|
152
|
-
visibleCounterEmitted: false,
|
|
153
|
-
errorEmitted: false,
|
|
154
|
-
finalized: false,
|
|
155
|
-
};
|
|
156
|
-
return latencyAls.run(store, work);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export function isDuringHostedExecutionLatency(): boolean {
|
|
160
|
-
return latencyAls.getStore() !== undefined;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Mark the first user-visible Slack outbound success. Exact-once: later
|
|
165
|
-
* progress updates and final fallback posts are ignored.
|
|
166
|
-
*/
|
|
167
|
-
export function markHostedFirstVisibleReply(args: {
|
|
168
|
-
outcome: "progress_update" | "final_post";
|
|
169
|
-
deliverySurface?: HostedDeliverySurface;
|
|
170
|
-
}): boolean {
|
|
171
|
-
const store = latencyAls.getStore();
|
|
172
|
-
if (store === undefined || store.firstVisibleAt !== undefined) {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
store.firstVisibleAt = hostedExecutionNow();
|
|
176
|
-
store.firstVisibleOutcome = args.outcome;
|
|
177
|
-
store.deliverySurface = args.deliverySurface ?? "slack";
|
|
178
|
-
if (!store.visibleCounterEmitted) {
|
|
179
|
-
store.visibleCounterEmitted = true;
|
|
180
|
-
visibleInstrument().add(1, {
|
|
181
|
-
...baseAttrs(store),
|
|
182
|
-
outcome: args.outcome,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Count a visible-outbound failure when nothing user-visible succeeded yet.
|
|
190
|
-
* Exact-once; ignored after a first-visible mark or a prior error.
|
|
191
|
-
*/
|
|
192
|
-
export function noteHostedVisibleReplyError(args?: {
|
|
193
|
-
deliverySurface?: HostedDeliverySurface;
|
|
194
|
-
}): void {
|
|
195
|
-
const store = latencyAls.getStore();
|
|
196
|
-
if (store === undefined || store.errorEmitted || store.firstVisibleAt !== undefined) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
store.errorEmitted = true;
|
|
200
|
-
if (args?.deliverySurface !== undefined) {
|
|
201
|
-
store.deliverySurface = args.deliverySurface;
|
|
202
|
-
} else if (store.deliverySurface === "none") {
|
|
203
|
-
store.deliverySurface = "slack";
|
|
204
|
-
}
|
|
205
|
-
if (!store.visibleCounterEmitted) {
|
|
206
|
-
store.visibleCounterEmitted = true;
|
|
207
|
-
visibleInstrument().add(1, {
|
|
208
|
-
...baseAttrs(store),
|
|
209
|
-
outcome: "error",
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
function resolveOutcome(store: LatencyStore): HostedVisibleReplyOutcome {
|
|
215
|
-
if (store.firstVisibleOutcome !== undefined) {
|
|
216
|
-
return store.firstVisibleOutcome;
|
|
217
|
-
}
|
|
218
|
-
if (store.errorEmitted) {
|
|
219
|
-
return "error";
|
|
220
|
-
}
|
|
221
|
-
return "none";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Emit phase histograms + optional none counter; return a snapshot for
|
|
226
|
-
* Server-Timing. Safe to call once per ALS window.
|
|
227
|
-
*
|
|
228
|
-
* `endedAt` should be taken as late as possible before the execution reply
|
|
229
|
-
* (or rethrow) is returned so `total` and `post_drain` include eviction and
|
|
230
|
-
* diagnostic write work after durability drain.
|
|
231
|
-
*/
|
|
232
|
-
export function finalizeHostedExecutionLatency(marks: {
|
|
233
|
-
completionAt: number;
|
|
234
|
-
drainAt: number;
|
|
235
|
-
endedAt: number;
|
|
236
|
-
}): HostedExecutionLatencySnapshot | undefined {
|
|
237
|
-
const store = latencyAls.getStore();
|
|
238
|
-
if (store === undefined || store.finalized) {
|
|
239
|
-
return undefined;
|
|
240
|
-
}
|
|
241
|
-
store.finalized = true;
|
|
242
|
-
|
|
243
|
-
const outcome = resolveOutcome(store);
|
|
244
|
-
if (!store.visibleCounterEmitted) {
|
|
245
|
-
store.visibleCounterEmitted = true;
|
|
246
|
-
visibleInstrument().add(1, {
|
|
247
|
-
...baseAttrs(store),
|
|
248
|
-
outcome: "none",
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
const phases: Partial<Record<HostedLatencyPhase, number>> = {
|
|
253
|
-
durability_drain: Math.max(0, marks.drainAt - marks.completionAt),
|
|
254
|
-
post_drain: Math.max(0, marks.endedAt - marks.drainAt),
|
|
255
|
-
total: Math.max(0, marks.endedAt - store.startedAt),
|
|
256
|
-
};
|
|
257
|
-
if (store.firstVisibleAt !== undefined) {
|
|
258
|
-
phases.to_first_visible = Math.max(0, store.firstVisibleAt - store.startedAt);
|
|
259
|
-
phases.first_visible_to_completion = Math.max(0, marks.completionAt - store.firstVisibleAt);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
const attrs: Attributes = {
|
|
263
|
-
channel_kind: store.channelKind,
|
|
264
|
-
outcome,
|
|
265
|
-
delivery_surface: store.deliverySurface,
|
|
266
|
-
};
|
|
267
|
-
const histogram = durationInstrument();
|
|
268
|
-
for (const [phase, value] of Object.entries(phases) as Array<[HostedLatencyPhase, number]>) {
|
|
269
|
-
histogram.record(value, { ...attrs, phase });
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
return {
|
|
273
|
-
channelKind: store.channelKind,
|
|
274
|
-
outcome,
|
|
275
|
-
deliverySurface: store.deliverySurface,
|
|
276
|
-
phases,
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
export function formatHostedExecutionLatencyServerTiming(
|
|
281
|
-
snapshot: HostedExecutionLatencySnapshot,
|
|
282
|
-
): string[] {
|
|
283
|
-
const parts: string[] = [];
|
|
284
|
-
const order: HostedLatencyPhase[] = [
|
|
285
|
-
"to_first_visible",
|
|
286
|
-
"first_visible_to_completion",
|
|
287
|
-
"durability_drain",
|
|
288
|
-
"post_drain",
|
|
289
|
-
"total",
|
|
290
|
-
];
|
|
291
|
-
for (const phase of order) {
|
|
292
|
-
const dur = snapshot.phases[phase];
|
|
293
|
-
if (dur === undefined) {
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
parts.push(
|
|
297
|
-
`${HOSTED_EXECUTION_SERVER_TIMING};desc="${phase}";dur=${Math.max(0, dur).toFixed(1)};outcome="${snapshot.outcome}";ch="${snapshot.channelKind}";sf="${snapshot.deliverySurface}"`,
|
|
298
|
-
);
|
|
299
|
-
}
|
|
300
|
-
return parts;
|
|
301
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Managed-automation envelope slices by provider delivery id (plan 0002
|
|
3
|
-
* G2), recorded at hosted admission so channel code running the delivery's
|
|
4
|
-
* task (or session turn) can attach the customer's MCP servers through the
|
|
5
|
-
* control-plane relay. In-memory and TTL-bounded like the hosted pending-
|
|
6
|
-
* send table: the envelope slice carries names only (never credentials)
|
|
7
|
-
* and evaporates with the process.
|
|
8
|
-
*
|
|
9
|
-
* A leaf module (protocol type import only) so product channels can read
|
|
10
|
-
* it without pulling the hosted-delivery route — and its session-engine
|
|
11
|
-
* dependency graph — into their bundles.
|
|
12
|
-
*
|
|
13
|
-
* INTERNAL: first-party multi-tenant deployment plumbing. Deliberately
|
|
14
|
-
* excluded from the published `@cursor/bdk` npm package (see the `files`
|
|
15
|
-
* whitelist); consumed by internal deployments via relative source imports.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type { HostedAdmissionManagedAutomation } from "./hosted-delivery-protocol.js";
|
|
19
|
-
|
|
20
|
-
type ManagedAutomationEntry = {
|
|
21
|
-
managedAutomation: HostedAdmissionManagedAutomation;
|
|
22
|
-
expiresAt: number;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Process-wide slot for the table. Hosted engines run the compiled CLI
|
|
27
|
-
* (`dist/`), which records at admission, while first-party factory agents
|
|
28
|
-
* relative-import this file from `src/` and read at finalize — two module
|
|
29
|
-
* instances in one process. A module-local Map would be recorded in one
|
|
30
|
-
* copy and read from the other (always undefined, so a fork never sees its
|
|
31
|
-
* Slack channels or MCP servers); the shared symbol keeps one table.
|
|
32
|
-
*/
|
|
33
|
-
const MANAGED_AUTOMATION_TABLE_KEY = Symbol.for(
|
|
34
|
-
"cursor.agentkit.hostedManagedAutomationByDelivery",
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
function managedAutomationTable(): Map<string, ManagedAutomationEntry> {
|
|
38
|
-
const slots = globalThis as unknown as Record<
|
|
39
|
-
symbol,
|
|
40
|
-
Map<string, ManagedAutomationEntry> | undefined
|
|
41
|
-
>;
|
|
42
|
-
let table = slots[MANAGED_AUTOMATION_TABLE_KEY];
|
|
43
|
-
if (table === undefined) {
|
|
44
|
-
table = new Map();
|
|
45
|
-
slots[MANAGED_AUTOMATION_TABLE_KEY] = table;
|
|
46
|
-
}
|
|
47
|
-
return table;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Long enough to outlive a slow review run kicked off by the delivery. */
|
|
51
|
-
const MANAGED_AUTOMATION_TTL_MS = 60 * 60_000;
|
|
52
|
-
const MANAGED_AUTOMATION_MAX_ENTRIES = 10_000;
|
|
53
|
-
|
|
54
|
-
export function recordHostedManagedAutomation(delivery: {
|
|
55
|
-
deliveryId: string;
|
|
56
|
-
managedAutomation?: HostedAdmissionManagedAutomation;
|
|
57
|
-
}): void {
|
|
58
|
-
if (delivery.managedAutomation === undefined) {
|
|
59
|
-
console.info(
|
|
60
|
-
`[agent-sdk] hosted managedAutomation not recorded deliveryId=${delivery.deliveryId}: admission envelope carried no managedAutomation slice (non-managed delivery, or the control plane resolved no MCP servers and no Slack channels)`,
|
|
61
|
-
);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const managedAutomationByDelivery = managedAutomationTable();
|
|
65
|
-
const now = Date.now();
|
|
66
|
-
for (const [key, entry] of managedAutomationByDelivery) {
|
|
67
|
-
if (entry.expiresAt <= now) {
|
|
68
|
-
managedAutomationByDelivery.delete(key);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (managedAutomationByDelivery.size >= MANAGED_AUTOMATION_MAX_ENTRIES) {
|
|
72
|
-
console.info(
|
|
73
|
-
`[agent-sdk] hosted managedAutomation table full (${String(managedAutomationByDelivery.size)} entries); clearing before recording deliveryId=${delivery.deliveryId}`,
|
|
74
|
-
);
|
|
75
|
-
managedAutomationByDelivery.clear();
|
|
76
|
-
}
|
|
77
|
-
managedAutomationByDelivery.set(delivery.deliveryId, {
|
|
78
|
-
managedAutomation: delivery.managedAutomation,
|
|
79
|
-
expiresAt: now + MANAGED_AUTOMATION_TTL_MS,
|
|
80
|
-
});
|
|
81
|
-
const slackChannels = delivery.managedAutomation.slackChannels;
|
|
82
|
-
console.info(
|
|
83
|
-
`[agent-sdk] hosted managedAutomation recorded deliveryId=${delivery.deliveryId} automationUuid=${delivery.managedAutomation.automationUuid} mcpServerNames=${String(delivery.managedAutomation.mcpServerNames.length)} slackChannels=${slackChannels === undefined ? "<absent>" : JSON.stringify(slackChannels)} ttlMs=${String(MANAGED_AUTOMATION_TTL_MS)} tableSize=${String(managedAutomationByDelivery.size)}`,
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* The managed automation the control plane attributed to a hosted delivery,
|
|
89
|
-
* when the envelope carried one. Undefined for non-managed deliveries,
|
|
90
|
-
* expired entries, and non-hosted (webhook/stream) dispatch paths.
|
|
91
|
-
*/
|
|
92
|
-
export function getHostedManagedAutomation(
|
|
93
|
-
deliveryId: string,
|
|
94
|
-
): HostedAdmissionManagedAutomation | undefined {
|
|
95
|
-
const managedAutomationByDelivery = managedAutomationTable();
|
|
96
|
-
const entry = managedAutomationByDelivery.get(deliveryId);
|
|
97
|
-
if (entry === undefined) {
|
|
98
|
-
console.info(
|
|
99
|
-
`[agent-sdk] hosted managedAutomation lookup miss deliveryId=${deliveryId}: no entry (never recorded in this process, or evicted) tableSize=${String(managedAutomationByDelivery.size)} knownDeliveryIds=${JSON.stringify([...managedAutomationByDelivery.keys()].slice(0, 10))}`,
|
|
100
|
-
);
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
103
|
-
if (entry.expiresAt <= Date.now()) {
|
|
104
|
-
console.info(
|
|
105
|
-
`[agent-sdk] hosted managedAutomation lookup expired deliveryId=${deliveryId} automationUuid=${entry.managedAutomation.automationUuid} expiredMsAgo=${String(Date.now() - entry.expiresAt)}`,
|
|
106
|
-
);
|
|
107
|
-
managedAutomationByDelivery.delete(deliveryId);
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
return entry.managedAutomation;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/** Drop recorded managed-automation slices (tests only). */
|
|
114
|
-
export function resetHostedManagedAutomationForTest(): void {
|
|
115
|
-
managedAutomationTable().clear();
|
|
116
|
-
}
|
package/src/internal/hosting.ts
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-side mirrors of the Agent Serve hosting validation rules
|
|
3
|
-
* (backend/server/src/agentServe/agentServeShared.ts). Shared by discovery
|
|
4
|
-
* (`hosting` block diagnostics on `agent-sdk validate`) and the deploy /
|
|
5
|
-
* secrets CLI verbs (actionable errors before any network call). The
|
|
6
|
-
* backend stays authoritative — these exist so mistakes fail fast and
|
|
7
|
-
* locally with the same grammar the server enforces.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/** `hosting.egressDomains` cap (backend caps the deploy body at 20). */
|
|
11
|
-
export const MAX_EGRESS_DOMAINS = 20;
|
|
12
|
-
/** Max secrets per deployment. */
|
|
13
|
-
export const MAX_SECRETS = 32;
|
|
14
|
-
/** Max secret value size in bytes. */
|
|
15
|
-
export const MAX_SECRET_VALUE_BYTES = 4096;
|
|
16
|
-
/** Max secret name length. */
|
|
17
|
-
export const MAX_SECRET_NAME_LENGTH = 64;
|
|
18
|
-
/** Secret names the platform manages; user writes are rejected. */
|
|
19
|
-
export const RESERVED_SECRET_NAME_PREFIX = "CURSOR_";
|
|
20
|
-
/** Pushed container images per team, uploads in flight included. */
|
|
21
|
-
export const MAX_CONTAINER_IMAGES = 100;
|
|
22
|
-
/** Compressed `docker save` tarball cap per image. */
|
|
23
|
-
export const MAX_CONTAINER_IMAGE_BYTES: number = 8 * 1024 * 1024 * 1024;
|
|
24
|
-
|
|
25
|
-
const CONTAINER_IMAGE_NAME_PATTERN = /^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/;
|
|
26
|
-
|
|
27
|
-
/** Returns a human error message, or undefined when the image name is valid. */
|
|
28
|
-
export function validateContainerImageName(name: string): string | undefined {
|
|
29
|
-
if (name.length >= 2 && CONTAINER_IMAGE_NAME_PATTERN.test(name)) {
|
|
30
|
-
return undefined;
|
|
31
|
-
}
|
|
32
|
-
return `Invalid image name "${name}": use 2–64 lowercase letters, digits, ".", "_" or "-", starting and ending with a letter or digit.`;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Extra platform-managed env names (not `CURSOR_*`). Mirrored from
|
|
37
|
-
* `@cursor/bdk/internal/cursor-hosted` so validate/secrets CLI stay in
|
|
38
|
-
* sync without importing the storage backend into the CLI graph.
|
|
39
|
-
* Hosted storage is HTTP-proxied; engines never see a database URL.
|
|
40
|
-
*/
|
|
41
|
-
export const PLATFORM_HOSTED_STORAGE_SECRET_NAMES = ["AGENT_SERVE_DEPLOYMENT_ID"] as const;
|
|
42
|
-
|
|
43
|
-
const SECRET_NAME_PATTERN = /^[A-Z][A-Z0-9_]*$/;
|
|
44
|
-
|
|
45
|
-
// Lowercase hostname with >=2 labels, an alphabetic TLD, and at most one
|
|
46
|
-
// leading `*.` wildcard. Labels: alphanumeric with interior hyphens.
|
|
47
|
-
const EGRESS_DOMAIN_PATTERN = /^(\*\.)?([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z]+$/;
|
|
48
|
-
|
|
49
|
-
/** Returns a human error message, or undefined when the domain is valid. */
|
|
50
|
-
export function validateEgressDomain(domain: string): string | undefined {
|
|
51
|
-
if (EGRESS_DOMAIN_PATTERN.test(domain)) {
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
return `Invalid egress domain ${JSON.stringify(domain)}: use a lowercase hostname with at least two labels and an alphabetic TLD (e.g. "api.example.com"), optionally with a single leading "*." wildcard.`;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Returns a human error message, or undefined when the name is a valid
|
|
59
|
-
* secret name. Grammar only — reserved names are checked separately so the
|
|
60
|
-
* manifest's declarative `secretNames` can mention them with a softer
|
|
61
|
-
* diagnostic than the hard write-time rejection.
|
|
62
|
-
*/
|
|
63
|
-
export function validateSecretName(name: string): string | undefined {
|
|
64
|
-
if (name.length > MAX_SECRET_NAME_LENGTH) {
|
|
65
|
-
return `Secret name ${JSON.stringify(name)} is too long (max ${MAX_SECRET_NAME_LENGTH} characters).`;
|
|
66
|
-
}
|
|
67
|
-
if (!SECRET_NAME_PATTERN.test(name)) {
|
|
68
|
-
return `Invalid secret name ${JSON.stringify(name)}: use UPPER_SNAKE_CASE starting with a letter (${SECRET_NAME_PATTERN}).`;
|
|
69
|
-
}
|
|
70
|
-
return undefined;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* True when the platform manages this name (`CURSOR_*` or hosted-storage
|
|
75
|
-
* env vars); user writes / deletes are rejected.
|
|
76
|
-
*/
|
|
77
|
-
export function isReservedSecretName(name: string): boolean {
|
|
78
|
-
if (name.startsWith(RESERVED_SECRET_NAME_PREFIX)) {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
const upper = name.toUpperCase();
|
|
82
|
-
return (PLATFORM_HOSTED_STORAGE_SECRET_NAMES as readonly string[]).some(
|
|
83
|
-
managed => managed === upper,
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Human error for a secret name a user is trying to write or delete:
|
|
89
|
-
* grammar plus platform-managed names (`CURSOR_*`, hosted storage).
|
|
90
|
-
*/
|
|
91
|
-
export function validateSettableSecretName(name: string): string | undefined {
|
|
92
|
-
const nameError = validateSecretName(name);
|
|
93
|
-
if (nameError !== undefined) {
|
|
94
|
-
return nameError;
|
|
95
|
-
}
|
|
96
|
-
if (isReservedSecretName(name)) {
|
|
97
|
-
return `Secret name ${JSON.stringify(name)} is platform-managed; user secrets cannot claim CURSOR_* or reserved hosted-storage names.`;
|
|
98
|
-
}
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const CURSOR_EVENT_REPO_PATTERN = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
|
|
103
|
-
|
|
104
|
-
/** `owner/name` — mirrors the backend's cursor-event repo grammar. */
|
|
105
|
-
export function isValidCursorEventRepo(repo: string): boolean {
|
|
106
|
-
return CURSOR_EVENT_REPO_PATTERN.test(repo) && !repo.includes("..");
|
|
107
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constructor for the built-in HTTP session channel. The runtime always
|
|
3
|
-
* mounts this channel; authors use `defineChannel` for custom surfaces.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { HttpChannelConfig, HttpChannelDefinition } from "../types.js";
|
|
7
|
-
import { brandDefinition } from "./brand.js";
|
|
8
|
-
import { normalizeIdentity } from "./continuation-identity.js";
|
|
9
|
-
import { attachHttpControlPlaneAdmission } from "./http-control-plane-session.js";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Configure the built-in HTTP session channel. Used by discovery as the
|
|
13
|
-
* default (and for an optional internal `agent/channels/http.ts` override).
|
|
14
|
-
*/
|
|
15
|
-
export function httpChannel(config: HttpChannelConfig = {}): HttpChannelDefinition {
|
|
16
|
-
const definition =
|
|
17
|
-
config.continuation !== undefined
|
|
18
|
-
? brandDefinition("http-channel", {
|
|
19
|
-
...config,
|
|
20
|
-
continuation: normalizeIdentity(config.continuation, "http"),
|
|
21
|
-
})
|
|
22
|
-
: brandDefinition("http-channel", config);
|
|
23
|
-
attachHttpControlPlaneAdmission(definition);
|
|
24
|
-
return definition;
|
|
25
|
-
}
|