@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,787 +0,0 @@
|
|
|
1
|
-
export const HOSTED_DELIVERY_PROTOCOL_VERSION = 2;
|
|
2
|
-
export const HOSTED_DELIVERY_HEADER = "x-agent-sdk-hosted-delivery";
|
|
3
|
-
export const HOSTED_ADMISSION_PATH = "/v1/internal/hosted-admission";
|
|
4
|
-
export const HOSTED_EXECUTION_PATH = "/v1/internal/hosted-execution";
|
|
5
|
-
export const HOSTED_GUEST_RETRY_TRANSIENT = "transient";
|
|
6
|
-
export const HOSTED_GUEST_RETRY_TERMINAL = "terminal";
|
|
7
|
-
|
|
8
|
-
export type HostedGuestRetryDisposition =
|
|
9
|
-
| typeof HOSTED_GUEST_RETRY_TRANSIENT
|
|
10
|
-
| typeof HOSTED_GUEST_RETRY_TERMINAL;
|
|
11
|
-
|
|
12
|
-
export const HOSTED_FAILURE_CLASSIFICATION_VERSION = 1;
|
|
13
|
-
|
|
14
|
-
export type HostedFailureDomain =
|
|
15
|
-
| "configuration"
|
|
16
|
-
| "protocol"
|
|
17
|
-
| "platform"
|
|
18
|
-
| "agent"
|
|
19
|
-
| "dependency"
|
|
20
|
-
| "cancellation"
|
|
21
|
-
| "unknown";
|
|
22
|
-
|
|
23
|
-
export type HostedFailureSource = "tas" | "factory" | "anyrun" | "engine" | "agent";
|
|
24
|
-
|
|
25
|
-
export type HostedFailureClassification = {
|
|
26
|
-
v: typeof HOSTED_FAILURE_CLASSIFICATION_VERSION;
|
|
27
|
-
domain: HostedFailureDomain;
|
|
28
|
-
source: HostedFailureSource;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const HOSTED_FAILURE_DOMAINS = new Set<HostedFailureDomain>([
|
|
32
|
-
"configuration",
|
|
33
|
-
"protocol",
|
|
34
|
-
"platform",
|
|
35
|
-
"agent",
|
|
36
|
-
"dependency",
|
|
37
|
-
"cancellation",
|
|
38
|
-
"unknown",
|
|
39
|
-
]);
|
|
40
|
-
const HOSTED_FAILURE_SOURCES = new Set<HostedFailureSource>([
|
|
41
|
-
"tas",
|
|
42
|
-
"factory",
|
|
43
|
-
"anyrun",
|
|
44
|
-
"engine",
|
|
45
|
-
"agent",
|
|
46
|
-
]);
|
|
47
|
-
|
|
48
|
-
export type HostedFailureCode =
|
|
49
|
-
| "agent_admission_threw"
|
|
50
|
-
| "agent_dependency_failed"
|
|
51
|
-
| "background_dispatch_failed"
|
|
52
|
-
| "bound_secrets_not_consumed"
|
|
53
|
-
| "channel_dispatch_failed"
|
|
54
|
-
| "channel_kind_mismatch"
|
|
55
|
-
| "channel_not_found"
|
|
56
|
-
| "channel_outcome_missing"
|
|
57
|
-
| "forbidden"
|
|
58
|
-
| "guest_connect_stalled"
|
|
59
|
-
| "guest_network_unavailable"
|
|
60
|
-
| "hosted_admission_session_mismatch"
|
|
61
|
-
| "hosted_admission_unavailable"
|
|
62
|
-
| "hosted_deferred_session_unusable"
|
|
63
|
-
| "hosted_local_send_rejected"
|
|
64
|
-
| "hosted_send_limit_exceeded"
|
|
65
|
-
| "internal_error"
|
|
66
|
-
| "invalid_hosted_admission"
|
|
67
|
-
| "invalid_hosted_execution"
|
|
68
|
-
| "invalid_request"
|
|
69
|
-
| "method_not_allowed"
|
|
70
|
-
| "not_found"
|
|
71
|
-
| "session_busy"
|
|
72
|
-
| "turn_cancelled"
|
|
73
|
-
| "turn_failed"
|
|
74
|
-
| "unauthorized"
|
|
75
|
-
| "unpaid_invoice"
|
|
76
|
-
| "usage_limit"
|
|
77
|
-
| "v2_identity_conflict";
|
|
78
|
-
|
|
79
|
-
export const HOSTED_FAILURE_CLASSIFICATIONS: Record<
|
|
80
|
-
HostedFailureCode,
|
|
81
|
-
Omit<HostedFailureClassification, "v">
|
|
82
|
-
> = {
|
|
83
|
-
agent_admission_threw: { domain: "agent", source: "agent" },
|
|
84
|
-
agent_dependency_failed: { domain: "dependency", source: "factory" },
|
|
85
|
-
background_dispatch_failed: { domain: "agent", source: "agent" },
|
|
86
|
-
bound_secrets_not_consumed: { domain: "platform", source: "engine" },
|
|
87
|
-
channel_dispatch_failed: { domain: "agent", source: "agent" },
|
|
88
|
-
channel_kind_mismatch: { domain: "configuration", source: "engine" },
|
|
89
|
-
channel_not_found: { domain: "configuration", source: "engine" },
|
|
90
|
-
channel_outcome_missing: { domain: "protocol", source: "agent" },
|
|
91
|
-
forbidden: { domain: "configuration", source: "engine" },
|
|
92
|
-
guest_connect_stalled: { domain: "platform", source: "engine" },
|
|
93
|
-
guest_network_unavailable: { domain: "platform", source: "anyrun" },
|
|
94
|
-
hosted_admission_session_mismatch: { domain: "protocol", source: "engine" },
|
|
95
|
-
hosted_admission_unavailable: { domain: "platform", source: "engine" },
|
|
96
|
-
hosted_deferred_session_unusable: { domain: "agent", source: "agent" },
|
|
97
|
-
hosted_local_send_rejected: { domain: "agent", source: "agent" },
|
|
98
|
-
hosted_send_limit_exceeded: { domain: "agent", source: "agent" },
|
|
99
|
-
internal_error: { domain: "unknown", source: "engine" },
|
|
100
|
-
invalid_hosted_admission: { domain: "protocol", source: "engine" },
|
|
101
|
-
invalid_hosted_execution: { domain: "protocol", source: "engine" },
|
|
102
|
-
invalid_request: { domain: "protocol", source: "engine" },
|
|
103
|
-
method_not_allowed: { domain: "protocol", source: "engine" },
|
|
104
|
-
not_found: { domain: "protocol", source: "engine" },
|
|
105
|
-
session_busy: { domain: "platform", source: "engine" },
|
|
106
|
-
turn_cancelled: { domain: "cancellation", source: "agent" },
|
|
107
|
-
turn_failed: { domain: "agent", source: "agent" },
|
|
108
|
-
unauthorized: { domain: "configuration", source: "engine" },
|
|
109
|
-
unpaid_invoice: { domain: "configuration", source: "agent" },
|
|
110
|
-
usage_limit: { domain: "configuration", source: "agent" },
|
|
111
|
-
v2_identity_conflict: { domain: "protocol", source: "engine" },
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
export function hostedFailureClassification(code: string): HostedFailureClassification {
|
|
115
|
-
const known = HOSTED_FAILURE_CLASSIFICATIONS[code as HostedFailureCode];
|
|
116
|
-
return {
|
|
117
|
-
v: HOSTED_FAILURE_CLASSIFICATION_VERSION,
|
|
118
|
-
domain: known?.domain ?? "unknown",
|
|
119
|
-
source: known?.source ?? "engine",
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export function parseHostedFailureClassification(
|
|
124
|
-
value: unknown,
|
|
125
|
-
): HostedFailureClassification | undefined {
|
|
126
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
127
|
-
return undefined;
|
|
128
|
-
}
|
|
129
|
-
const body = value as Record<string, unknown>;
|
|
130
|
-
if (
|
|
131
|
-
body.v !== HOSTED_FAILURE_CLASSIFICATION_VERSION ||
|
|
132
|
-
typeof body.domain !== "string" ||
|
|
133
|
-
!HOSTED_FAILURE_DOMAINS.has(body.domain as HostedFailureDomain) ||
|
|
134
|
-
typeof body.source !== "string" ||
|
|
135
|
-
!HOSTED_FAILURE_SOURCES.has(body.source as HostedFailureSource)
|
|
136
|
-
) {
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
return body as HostedFailureClassification;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export type HostedGuestError = {
|
|
143
|
-
ok: false;
|
|
144
|
-
error: string;
|
|
145
|
-
retry: HostedGuestRetryDisposition;
|
|
146
|
-
classification: HostedFailureClassification;
|
|
147
|
-
message?: string;
|
|
148
|
-
turnStatus?: string;
|
|
149
|
-
/** Runner/SDK code (`unknown`, `canceled`, …). Not the human message. */
|
|
150
|
-
errorCode?: string;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Hosted delivery is the only HTTP surface whose failures drive Temporal
|
|
155
|
-
* retries. Keep its retry disposition explicit instead of making the shared
|
|
156
|
-
* HTTP error helper guess from a status code.
|
|
157
|
-
*/
|
|
158
|
-
export function hostedGuestErrorResponse(input: {
|
|
159
|
-
status: number;
|
|
160
|
-
error: string;
|
|
161
|
-
retry: HostedGuestRetryDisposition;
|
|
162
|
-
message?: string;
|
|
163
|
-
turnStatus?: string;
|
|
164
|
-
errorCode?: string;
|
|
165
|
-
}): Response {
|
|
166
|
-
const body: HostedGuestError = {
|
|
167
|
-
ok: false,
|
|
168
|
-
error: input.error,
|
|
169
|
-
retry: input.retry,
|
|
170
|
-
classification: hostedFailureClassification(input.error),
|
|
171
|
-
message: input.message,
|
|
172
|
-
turnStatus: input.turnStatus,
|
|
173
|
-
errorCode: input.errorCode,
|
|
174
|
-
};
|
|
175
|
-
return Response.json(body, { status: input.status });
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Filename under the serve `--state-root` (not the per-slug SessionEngine
|
|
180
|
-
* dir). Hosted freeze uses `/workspace/.agent-serve`; the Temporal host
|
|
181
|
-
* reads this path after hosted-execution and logs it on the activity span.
|
|
182
|
-
* Must match `AGENT_SERVE_ENGINE_HOSTED_EXECUTION_DIAG_PATH` basename.
|
|
183
|
-
*/
|
|
184
|
-
export const HOSTED_EXECUTION_DIAG_FILENAME = "hosted-execution.json";
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Reserved hosted-admission `channelKind` for durable reminder fires.
|
|
188
|
-
* Bypasses authored channel admission and invokes ReminderRunner.dispatch.
|
|
189
|
-
* Backend builds envelopes with this constant + {@link HOSTED_REMINDER_EVENT_TYPE}.
|
|
190
|
-
*/
|
|
191
|
-
export const HOSTED_REMINDER_CHANNEL_KIND = "agent-sdk:reminder";
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Reserved hosted-admission `eventType` for durable reminder fires.
|
|
195
|
-
* Payload is {@link HostedReminderFirePayload}.
|
|
196
|
-
*/
|
|
197
|
-
export const HOSTED_REMINDER_EVENT_TYPE = "agent-sdk.reminder/fire";
|
|
198
|
-
|
|
199
|
-
/** Compact reminder-fire payload on the reserved hosted-admission path. */
|
|
200
|
-
export type HostedReminderFirePayload = {
|
|
201
|
-
reminderId: string;
|
|
202
|
-
fireCount: number;
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
/** Protocol v1 immutable fire descriptor (architecture v2 CP path). */
|
|
206
|
-
export type HostedReminderFireDescriptorPayload = {
|
|
207
|
-
protocolVersion: 1;
|
|
208
|
-
id: string;
|
|
209
|
-
fireCount: number;
|
|
210
|
-
generation: number;
|
|
211
|
-
purpose: string;
|
|
212
|
-
channelId: string;
|
|
213
|
-
continuationToken: string;
|
|
214
|
-
target?: Record<string, unknown>;
|
|
215
|
-
scheduleKind: "every" | "cron" | "delay" | "at";
|
|
216
|
-
scheduleValue: string;
|
|
217
|
-
intervalMs?: number;
|
|
218
|
-
prompt?: string;
|
|
219
|
-
handler?: string;
|
|
220
|
-
args?: Record<string, unknown>;
|
|
221
|
-
hasRunHandler: boolean;
|
|
222
|
-
hasUntilFn: boolean;
|
|
223
|
-
untilPrompt?: string;
|
|
224
|
-
busyPolicy: "skipIfBusy" | "queueBehindTurn";
|
|
225
|
-
nextFireAtMs: number;
|
|
226
|
-
claimedAtMs: number;
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
export type HostedAdmissionManagedAutomation = {
|
|
230
|
-
automationUuid: string;
|
|
231
|
-
mcpServerNames: string[];
|
|
232
|
-
/**
|
|
233
|
-
* Slack channel ids the automation's "Send to Slack" action targets,
|
|
234
|
-
* posted through the control-plane Slack relay. Omitted when the action
|
|
235
|
-
* is toggled off (never empty).
|
|
236
|
-
*/
|
|
237
|
-
slackChannels?: string[];
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Trusted control-plane handoff for a Slack placeholder posted at ingress
|
|
242
|
-
* before the Temporal signal. Omitted when no placeholder was posted.
|
|
243
|
-
*/
|
|
244
|
-
export type HostedAdmissionPlatformHandoff = {
|
|
245
|
-
v: 1;
|
|
246
|
-
slackPlaceholder: {
|
|
247
|
-
messageTs: string;
|
|
248
|
-
channelId: string;
|
|
249
|
-
threadTs: string;
|
|
250
|
-
streamed: false;
|
|
251
|
-
};
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
export type HostedAdmission = {
|
|
255
|
-
v: 2;
|
|
256
|
-
channelId: string;
|
|
257
|
-
/**
|
|
258
|
-
* Mailbox / subscription channel kind (`github`, `origin`, …). The guest
|
|
259
|
-
* resolves dispatch from the mounted definition's hosted-admission
|
|
260
|
-
* adapter; this field is not an allowlist.
|
|
261
|
-
*/
|
|
262
|
-
channelKind: string;
|
|
263
|
-
eventType: string;
|
|
264
|
-
deliveryId: string;
|
|
265
|
-
sessionMode: "event" | "continuation";
|
|
266
|
-
mailboxContinuationKey: string;
|
|
267
|
-
payload: unknown;
|
|
268
|
-
managedAutomation?: HostedAdmissionManagedAutomation;
|
|
269
|
-
/** Present only when control-plane Slack fast-act posted a placeholder. */
|
|
270
|
-
platformHandoff?: HostedAdmissionPlatformHandoff;
|
|
271
|
-
};
|
|
272
|
-
|
|
273
|
-
export type HostedAdmissionOutcome =
|
|
274
|
-
| { ok: true; v: 2; outcome: "skip" | "task" }
|
|
275
|
-
| { ok: true; v: 2; outcome: "send"; admissionToken: string };
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Cap on delivery IDs an owner execute may report as consumed (primary +
|
|
279
|
-
* accepted active-guest enqueues). Enqueue requests beyond this return
|
|
280
|
-
* `not_active`.
|
|
281
|
-
*/
|
|
282
|
-
export const HOSTED_MAX_CONSUMED_DELIVERY_IDS = 16;
|
|
283
|
-
|
|
284
|
-
/** Hosted-execution run mode. Omitted/`execute` is the legacy wait path. */
|
|
285
|
-
export type HostedExecutionMode = "execute" | "enqueue";
|
|
286
|
-
|
|
287
|
-
export type HostedExecution = {
|
|
288
|
-
v: 2;
|
|
289
|
-
admissionToken: string;
|
|
290
|
-
sessionPublicId: string;
|
|
291
|
-
/**
|
|
292
|
-
* `execute` (default when omitted) runs the owner send and waits for the
|
|
293
|
-
* coalesce chain. `enqueue` injects into an accepting owner or returns
|
|
294
|
-
* `not_active`.
|
|
295
|
-
*/
|
|
296
|
-
mode?: HostedExecutionMode;
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
export type HostedExecutionOutcome =
|
|
300
|
-
| {
|
|
301
|
-
ok: true;
|
|
302
|
-
v: 2;
|
|
303
|
-
outcome: "send";
|
|
304
|
-
/**
|
|
305
|
-
* Primary delivery id then accepted enqueue ids; length 1..16.
|
|
306
|
-
* Optional for old-guest compatibility; callers must normalize absent
|
|
307
|
-
* lists to `[primaryDeliveryId]`.
|
|
308
|
-
*/
|
|
309
|
-
consumedDeliveryIds?: string[];
|
|
310
|
-
}
|
|
311
|
-
| { ok: true; v: 2; outcome: "enqueued" }
|
|
312
|
-
| { ok: true; v: 2; outcome: "not_active" };
|
|
313
|
-
|
|
314
|
-
const DELIVERY_KEYS = new Set([
|
|
315
|
-
"v",
|
|
316
|
-
"channelId",
|
|
317
|
-
"channelKind",
|
|
318
|
-
"eventType",
|
|
319
|
-
"deliveryId",
|
|
320
|
-
"sessionMode",
|
|
321
|
-
"mailboxContinuationKey",
|
|
322
|
-
"payload",
|
|
323
|
-
"managedAutomation",
|
|
324
|
-
"platformHandoff",
|
|
325
|
-
]);
|
|
326
|
-
const MANAGED_AUTOMATION_KEYS = new Set(["automationUuid", "mcpServerNames", "slackChannels"]);
|
|
327
|
-
export const HOSTED_PLATFORM_HANDOFF_KEYS: ReadonlySet<string> = new Set(["v", "slackPlaceholder"]);
|
|
328
|
-
export const HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS: ReadonlySet<string> = new Set([
|
|
329
|
-
"messageTs",
|
|
330
|
-
"channelId",
|
|
331
|
-
"threadTs",
|
|
332
|
-
"streamed",
|
|
333
|
-
]);
|
|
334
|
-
/** More names than any real automation configures is a malformed envelope. */
|
|
335
|
-
const MANAGED_AUTOMATION_MAX_SERVERS = 64;
|
|
336
|
-
/** More channels than the dashboard picker allows is a malformed envelope. */
|
|
337
|
-
const MANAGED_AUTOMATION_MAX_SLACK_CHANNELS = 64;
|
|
338
|
-
const EXECUTION_KEYS = new Set(["v", "admissionToken", "sessionPublicId", "mode"]);
|
|
339
|
-
|
|
340
|
-
function boundedString(value: unknown, max: number): value is string {
|
|
341
|
-
return typeof value === "string" && value.length > 0 && value.length <= max;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Parse the optional managed-automation slice. Absent → valid (undefined);
|
|
346
|
-
* present-but-malformed → invalid (the whole admission fails closed, the
|
|
347
|
-
* strict posture the rest of the envelope already takes).
|
|
348
|
-
*/
|
|
349
|
-
function parseManagedAutomation(
|
|
350
|
-
value: unknown,
|
|
351
|
-
): { managedAutomation?: HostedAdmissionManagedAutomation } | undefined {
|
|
352
|
-
if (value === undefined) {
|
|
353
|
-
return {};
|
|
354
|
-
}
|
|
355
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
356
|
-
return undefined;
|
|
357
|
-
}
|
|
358
|
-
const body = value as Record<string, unknown>;
|
|
359
|
-
if (
|
|
360
|
-
Object.keys(body).some(key => !MANAGED_AUTOMATION_KEYS.has(key)) ||
|
|
361
|
-
!boundedString(body.automationUuid, 128) ||
|
|
362
|
-
!Array.isArray(body.mcpServerNames) ||
|
|
363
|
-
body.mcpServerNames.length > MANAGED_AUTOMATION_MAX_SERVERS ||
|
|
364
|
-
!body.mcpServerNames.every(name => boundedString(name, 256))
|
|
365
|
-
) {
|
|
366
|
-
return undefined;
|
|
367
|
-
}
|
|
368
|
-
if (body.slackChannels !== undefined) {
|
|
369
|
-
if (
|
|
370
|
-
!Array.isArray(body.slackChannels) ||
|
|
371
|
-
body.slackChannels.length === 0 ||
|
|
372
|
-
body.slackChannels.length > MANAGED_AUTOMATION_MAX_SLACK_CHANNELS ||
|
|
373
|
-
!body.slackChannels.every(channel => boundedString(channel, 64))
|
|
374
|
-
) {
|
|
375
|
-
return undefined;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
return {
|
|
379
|
-
managedAutomation: {
|
|
380
|
-
automationUuid: body.automationUuid,
|
|
381
|
-
mcpServerNames: body.mcpServerNames,
|
|
382
|
-
...(body.slackChannels === undefined
|
|
383
|
-
? {}
|
|
384
|
-
: { slackChannels: body.slackChannels as string[] }),
|
|
385
|
-
},
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
/**
|
|
390
|
-
* Parse optional control-plane Slack placeholder handoff. Absent → valid;
|
|
391
|
-
* present-but-malformed → invalid (fail closed like managedAutomation).
|
|
392
|
-
*/
|
|
393
|
-
function parsePlatformHandoff(
|
|
394
|
-
value: unknown,
|
|
395
|
-
): { platformHandoff?: HostedAdmissionPlatformHandoff } | undefined {
|
|
396
|
-
if (value === undefined) {
|
|
397
|
-
return {};
|
|
398
|
-
}
|
|
399
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
400
|
-
return undefined;
|
|
401
|
-
}
|
|
402
|
-
const body = value as Record<string, unknown>;
|
|
403
|
-
if (Object.keys(body).some(key => !HOSTED_PLATFORM_HANDOFF_KEYS.has(key)) || body.v !== 1) {
|
|
404
|
-
return undefined;
|
|
405
|
-
}
|
|
406
|
-
const placeholder = body.slackPlaceholder;
|
|
407
|
-
if (typeof placeholder !== "object" || placeholder === null || Array.isArray(placeholder)) {
|
|
408
|
-
return undefined;
|
|
409
|
-
}
|
|
410
|
-
const slot = placeholder as Record<string, unknown>;
|
|
411
|
-
if (
|
|
412
|
-
Object.keys(slot).some(key => !HOSTED_SLACK_PLACEHOLDER_HANDOFF_KEYS.has(key)) ||
|
|
413
|
-
!boundedString(slot.messageTs, 64) ||
|
|
414
|
-
!boundedString(slot.channelId, 64) ||
|
|
415
|
-
!boundedString(slot.threadTs, 64) ||
|
|
416
|
-
slot.streamed !== false
|
|
417
|
-
) {
|
|
418
|
-
return undefined;
|
|
419
|
-
}
|
|
420
|
-
return {
|
|
421
|
-
platformHandoff: {
|
|
422
|
-
v: 1,
|
|
423
|
-
slackPlaceholder: {
|
|
424
|
-
messageTs: slot.messageTs,
|
|
425
|
-
channelId: slot.channelId,
|
|
426
|
-
threadTs: slot.threadTs,
|
|
427
|
-
streamed: slot.streamed,
|
|
428
|
-
},
|
|
429
|
-
},
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
export function parseHostedAdmission(value: unknown): HostedAdmission | undefined {
|
|
434
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
435
|
-
return undefined;
|
|
436
|
-
}
|
|
437
|
-
const body = value as Record<string, unknown>;
|
|
438
|
-
if (
|
|
439
|
-
Object.keys(body).some(key => !DELIVERY_KEYS.has(key)) ||
|
|
440
|
-
!Object.hasOwn(body, "payload") ||
|
|
441
|
-
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
442
|
-
!boundedString(body.channelId, 128) ||
|
|
443
|
-
!boundedString(body.channelKind, 128) ||
|
|
444
|
-
!boundedString(body.eventType, 128) ||
|
|
445
|
-
!boundedString(body.deliveryId, 256) ||
|
|
446
|
-
(body.sessionMode !== "event" && body.sessionMode !== "continuation") ||
|
|
447
|
-
!boundedString(body.mailboxContinuationKey, 512) ||
|
|
448
|
-
parseManagedAutomation(body.managedAutomation) === undefined ||
|
|
449
|
-
parsePlatformHandoff(body.platformHandoff) === undefined
|
|
450
|
-
) {
|
|
451
|
-
return undefined;
|
|
452
|
-
}
|
|
453
|
-
const prefix = body.sessionMode === "event" ? "evt:" : "cont:";
|
|
454
|
-
return body.mailboxContinuationKey.startsWith(prefix) ? (body as HostedAdmission) : undefined;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
export function parseHostedExecution(value: unknown): HostedExecution | undefined {
|
|
458
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
459
|
-
return undefined;
|
|
460
|
-
}
|
|
461
|
-
const body = value as Record<string, unknown>;
|
|
462
|
-
if (
|
|
463
|
-
Object.keys(body).some(key => !EXECUTION_KEYS.has(key)) ||
|
|
464
|
-
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
465
|
-
!boundedString(body.admissionToken, 128) ||
|
|
466
|
-
typeof body.sessionPublicId !== "string" ||
|
|
467
|
-
!/^ses_[a-f0-9]{24}$/.test(body.sessionPublicId)
|
|
468
|
-
) {
|
|
469
|
-
return undefined;
|
|
470
|
-
}
|
|
471
|
-
if (body.mode !== undefined && body.mode !== "execute" && body.mode !== "enqueue") {
|
|
472
|
-
return undefined;
|
|
473
|
-
}
|
|
474
|
-
return body as HostedExecution;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
const HOSTED_EXECUTION_OUTCOME_KEYS = new Set(["ok", "v", "outcome", "consumedDeliveryIds"]);
|
|
478
|
-
|
|
479
|
-
function parseConsumedDeliveryIds(value: unknown): string[] | undefined {
|
|
480
|
-
if (!Array.isArray(value) || value.length === 0) {
|
|
481
|
-
return undefined;
|
|
482
|
-
}
|
|
483
|
-
if (value.length > HOSTED_MAX_CONSUMED_DELIVERY_IDS) {
|
|
484
|
-
return undefined;
|
|
485
|
-
}
|
|
486
|
-
if (!value.every(id => boundedString(id, 256))) {
|
|
487
|
-
return undefined;
|
|
488
|
-
}
|
|
489
|
-
return value as string[];
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
export function parseHostedExecutionOutcome(value: unknown): HostedExecutionOutcome | undefined {
|
|
493
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
494
|
-
return undefined;
|
|
495
|
-
}
|
|
496
|
-
const body = value as Record<string, unknown>;
|
|
497
|
-
if (
|
|
498
|
-
Object.keys(body).some(key => !HOSTED_EXECUTION_OUTCOME_KEYS.has(key)) ||
|
|
499
|
-
body.ok !== true ||
|
|
500
|
-
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION
|
|
501
|
-
) {
|
|
502
|
-
return undefined;
|
|
503
|
-
}
|
|
504
|
-
if (body.outcome === "enqueued" || body.outcome === "not_active") {
|
|
505
|
-
if (body.consumedDeliveryIds !== undefined) {
|
|
506
|
-
return undefined;
|
|
507
|
-
}
|
|
508
|
-
return body as HostedExecutionOutcome;
|
|
509
|
-
}
|
|
510
|
-
if (body.outcome !== "send") {
|
|
511
|
-
return undefined;
|
|
512
|
-
}
|
|
513
|
-
// Old guests omit consumedDeliveryIds; accept and let callers normalize.
|
|
514
|
-
if (body.consumedDeliveryIds === undefined) {
|
|
515
|
-
return { ok: true, v: 2, outcome: "send" };
|
|
516
|
-
}
|
|
517
|
-
const consumedDeliveryIds = parseConsumedDeliveryIds(body.consumedDeliveryIds);
|
|
518
|
-
if (consumedDeliveryIds === undefined) {
|
|
519
|
-
return undefined;
|
|
520
|
-
}
|
|
521
|
-
return {
|
|
522
|
-
ok: true,
|
|
523
|
-
v: 2,
|
|
524
|
-
outcome: "send",
|
|
525
|
-
consumedDeliveryIds,
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* True when the admission envelope is the reserved internal reminder fire
|
|
531
|
-
* path (not an authored channel event).
|
|
532
|
-
*/
|
|
533
|
-
export function isHostedReminderAdmission(delivery: HostedAdmission): boolean {
|
|
534
|
-
return (
|
|
535
|
-
delivery.channelKind === HOSTED_REMINDER_CHANNEL_KIND &&
|
|
536
|
-
delivery.eventType === HOSTED_REMINDER_EVENT_TYPE
|
|
537
|
-
);
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
/**
|
|
541
|
-
* Parse `{ reminderId, fireCount }` from a reserved reminder admission
|
|
542
|
-
* payload. Rejects unknown keys and non-integer fireCount.
|
|
543
|
-
*/
|
|
544
|
-
export function parseHostedReminderFirePayload(
|
|
545
|
-
value: unknown,
|
|
546
|
-
): HostedReminderFirePayload | undefined {
|
|
547
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
548
|
-
return undefined;
|
|
549
|
-
}
|
|
550
|
-
const body = value as Record<string, unknown>;
|
|
551
|
-
const keys = Object.keys(body);
|
|
552
|
-
if (
|
|
553
|
-
keys.length !== 2 ||
|
|
554
|
-
!Object.hasOwn(body, "reminderId") ||
|
|
555
|
-
!Object.hasOwn(body, "fireCount") ||
|
|
556
|
-
!boundedString(body.reminderId, 128) ||
|
|
557
|
-
typeof body.fireCount !== "number" ||
|
|
558
|
-
!Number.isInteger(body.fireCount) ||
|
|
559
|
-
body.fireCount < 0
|
|
560
|
-
) {
|
|
561
|
-
return undefined;
|
|
562
|
-
}
|
|
563
|
-
return {
|
|
564
|
-
reminderId: body.reminderId,
|
|
565
|
-
fireCount: body.fireCount,
|
|
566
|
-
};
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
const HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS = new Set([
|
|
570
|
-
"protocolVersion",
|
|
571
|
-
"id",
|
|
572
|
-
"fireCount",
|
|
573
|
-
"generation",
|
|
574
|
-
"purpose",
|
|
575
|
-
"channelId",
|
|
576
|
-
"continuationToken",
|
|
577
|
-
"target",
|
|
578
|
-
"scheduleKind",
|
|
579
|
-
"scheduleValue",
|
|
580
|
-
"intervalMs",
|
|
581
|
-
"prompt",
|
|
582
|
-
"handler",
|
|
583
|
-
"args",
|
|
584
|
-
"hasRunHandler",
|
|
585
|
-
"hasUntilFn",
|
|
586
|
-
"untilPrompt",
|
|
587
|
-
"busyPolicy",
|
|
588
|
-
"nextFireAtMs",
|
|
589
|
-
"claimedAtMs",
|
|
590
|
-
]);
|
|
591
|
-
|
|
592
|
-
const HOSTED_REMINDER_SCHEDULE_KINDS = new Set(["every", "cron", "delay", "at"]);
|
|
593
|
-
const HOSTED_REMINDER_BUSY_POLICIES = new Set(["skipIfBusy", "queueBehindTurn"]);
|
|
594
|
-
|
|
595
|
-
const HOSTED_REMINDER_JSON_MAX_DEPTH = 8;
|
|
596
|
-
|
|
597
|
-
/** Reject non-JSON values (NaN/Infinity/undefined/bigint/function/symbol). */
|
|
598
|
-
function isJsonSafeValue(value: unknown, depth: number): boolean {
|
|
599
|
-
if (depth > HOSTED_REMINDER_JSON_MAX_DEPTH) {
|
|
600
|
-
return false;
|
|
601
|
-
}
|
|
602
|
-
if (value === null) {
|
|
603
|
-
return true;
|
|
604
|
-
}
|
|
605
|
-
const type = typeof value;
|
|
606
|
-
if (type === "string" || type === "boolean") {
|
|
607
|
-
return true;
|
|
608
|
-
}
|
|
609
|
-
if (type === "number") {
|
|
610
|
-
return Number.isFinite(value);
|
|
611
|
-
}
|
|
612
|
-
if (type !== "object") {
|
|
613
|
-
return false;
|
|
614
|
-
}
|
|
615
|
-
if (Array.isArray(value)) {
|
|
616
|
-
return value.every(entry => isJsonSafeValue(entry, depth + 1));
|
|
617
|
-
}
|
|
618
|
-
const proto = Object.getPrototypeOf(value);
|
|
619
|
-
if (proto !== Object.prototype && proto !== null) {
|
|
620
|
-
return false;
|
|
621
|
-
}
|
|
622
|
-
for (const entry of Object.values(value as Record<string, unknown>)) {
|
|
623
|
-
if (!isJsonSafeValue(entry, depth + 1)) {
|
|
624
|
-
return false;
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
return true;
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
function parseOptionalJsonObjectField(
|
|
631
|
-
value: unknown,
|
|
632
|
-
maxBytes: number,
|
|
633
|
-
): Record<string, unknown> | undefined {
|
|
634
|
-
if (value === undefined) {
|
|
635
|
-
return undefined;
|
|
636
|
-
}
|
|
637
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
638
|
-
return undefined;
|
|
639
|
-
}
|
|
640
|
-
if (!isJsonSafeValue(value, 0)) {
|
|
641
|
-
return undefined;
|
|
642
|
-
}
|
|
643
|
-
try {
|
|
644
|
-
const encoded = JSON.stringify(value);
|
|
645
|
-
if (encoded === undefined || Buffer.byteLength(encoded, "utf8") > maxBytes) {
|
|
646
|
-
return undefined;
|
|
647
|
-
}
|
|
648
|
-
const roundTrip = JSON.parse(encoded) as unknown;
|
|
649
|
-
if (typeof roundTrip !== "object" || roundTrip === null || Array.isArray(roundTrip)) {
|
|
650
|
-
return undefined;
|
|
651
|
-
}
|
|
652
|
-
return roundTrip as Record<string, unknown>;
|
|
653
|
-
} catch {
|
|
654
|
-
return undefined;
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
|
|
658
|
-
/**
|
|
659
|
-
* Parse the immutable CP fire descriptor. Rejects unknown keys, non-enum
|
|
660
|
-
* schedule/busy values, and non-JSON-safe optional object fields.
|
|
661
|
-
*/
|
|
662
|
-
export function parseHostedReminderFireDescriptorPayload(
|
|
663
|
-
value: unknown,
|
|
664
|
-
): HostedReminderFireDescriptorPayload | undefined {
|
|
665
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
666
|
-
return undefined;
|
|
667
|
-
}
|
|
668
|
-
const body = value as Record<string, unknown>;
|
|
669
|
-
if (Object.keys(body).some(key => !HOSTED_REMINDER_FIRE_DESCRIPTOR_KEYS.has(key))) {
|
|
670
|
-
return undefined;
|
|
671
|
-
}
|
|
672
|
-
if (
|
|
673
|
-
body.protocolVersion !== 1 ||
|
|
674
|
-
typeof body.id !== "string" ||
|
|
675
|
-
body.id.length === 0 ||
|
|
676
|
-
body.id.length > 128 ||
|
|
677
|
-
typeof body.fireCount !== "number" ||
|
|
678
|
-
!Number.isInteger(body.fireCount) ||
|
|
679
|
-
body.fireCount < 0 ||
|
|
680
|
-
typeof body.generation !== "number" ||
|
|
681
|
-
!Number.isInteger(body.generation) ||
|
|
682
|
-
body.generation < 0 ||
|
|
683
|
-
typeof body.purpose !== "string" ||
|
|
684
|
-
body.purpose.length === 0 ||
|
|
685
|
-
body.purpose.length > 512 ||
|
|
686
|
-
typeof body.channelId !== "string" ||
|
|
687
|
-
body.channelId.length === 0 ||
|
|
688
|
-
body.channelId.length > 128 ||
|
|
689
|
-
typeof body.continuationToken !== "string" ||
|
|
690
|
-
body.continuationToken.length === 0 ||
|
|
691
|
-
body.continuationToken.length > 512 ||
|
|
692
|
-
typeof body.scheduleKind !== "string" ||
|
|
693
|
-
!HOSTED_REMINDER_SCHEDULE_KINDS.has(body.scheduleKind) ||
|
|
694
|
-
typeof body.scheduleValue !== "string" ||
|
|
695
|
-
body.scheduleValue.length === 0 ||
|
|
696
|
-
body.scheduleValue.length > 512 ||
|
|
697
|
-
typeof body.hasRunHandler !== "boolean" ||
|
|
698
|
-
typeof body.hasUntilFn !== "boolean" ||
|
|
699
|
-
typeof body.busyPolicy !== "string" ||
|
|
700
|
-
!HOSTED_REMINDER_BUSY_POLICIES.has(body.busyPolicy) ||
|
|
701
|
-
typeof body.nextFireAtMs !== "number" ||
|
|
702
|
-
!Number.isFinite(body.nextFireAtMs) ||
|
|
703
|
-
typeof body.claimedAtMs !== "number" ||
|
|
704
|
-
!Number.isFinite(body.claimedAtMs) ||
|
|
705
|
-
!Number.isInteger(body.claimedAtMs) ||
|
|
706
|
-
body.claimedAtMs < 0
|
|
707
|
-
) {
|
|
708
|
-
return undefined;
|
|
709
|
-
}
|
|
710
|
-
if (body.intervalMs !== undefined) {
|
|
711
|
-
if (
|
|
712
|
-
typeof body.intervalMs !== "number" ||
|
|
713
|
-
!Number.isFinite(body.intervalMs) ||
|
|
714
|
-
!Number.isInteger(body.intervalMs) ||
|
|
715
|
-
body.intervalMs <= 0
|
|
716
|
-
) {
|
|
717
|
-
return undefined;
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
if (body.prompt !== undefined) {
|
|
721
|
-
if (typeof body.prompt !== "string" || body.prompt.length > 8192) {
|
|
722
|
-
return undefined;
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
if (body.handler !== undefined) {
|
|
726
|
-
if (
|
|
727
|
-
typeof body.handler !== "string" ||
|
|
728
|
-
body.handler.length === 0 ||
|
|
729
|
-
body.handler.length > 128
|
|
730
|
-
) {
|
|
731
|
-
return undefined;
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
if (body.untilPrompt !== undefined) {
|
|
735
|
-
if (typeof body.untilPrompt !== "string" || body.untilPrompt.length > 8192) {
|
|
736
|
-
return undefined;
|
|
737
|
-
}
|
|
738
|
-
}
|
|
739
|
-
const target = parseOptionalJsonObjectField(body.target, 16 * 1024);
|
|
740
|
-
if (body.target !== undefined && target === undefined) {
|
|
741
|
-
return undefined;
|
|
742
|
-
}
|
|
743
|
-
const args = parseOptionalJsonObjectField(body.args, 32 * 1024);
|
|
744
|
-
if (body.args !== undefined && args === undefined) {
|
|
745
|
-
return undefined;
|
|
746
|
-
}
|
|
747
|
-
return {
|
|
748
|
-
protocolVersion: 1,
|
|
749
|
-
id: body.id,
|
|
750
|
-
fireCount: body.fireCount,
|
|
751
|
-
generation: body.generation,
|
|
752
|
-
purpose: body.purpose,
|
|
753
|
-
channelId: body.channelId,
|
|
754
|
-
continuationToken: body.continuationToken,
|
|
755
|
-
...(target === undefined ? {} : { target }),
|
|
756
|
-
scheduleKind: body.scheduleKind as HostedReminderFireDescriptorPayload["scheduleKind"],
|
|
757
|
-
scheduleValue: body.scheduleValue,
|
|
758
|
-
...(body.intervalMs === undefined ? {} : { intervalMs: body.intervalMs }),
|
|
759
|
-
...(body.prompt === undefined ? {} : { prompt: body.prompt }),
|
|
760
|
-
...(body.handler === undefined ? {} : { handler: body.handler }),
|
|
761
|
-
...(args === undefined ? {} : { args }),
|
|
762
|
-
hasRunHandler: body.hasRunHandler,
|
|
763
|
-
hasUntilFn: body.hasUntilFn,
|
|
764
|
-
...(body.untilPrompt === undefined ? {} : { untilPrompt: body.untilPrompt }),
|
|
765
|
-
busyPolicy: body.busyPolicy as HostedReminderFireDescriptorPayload["busyPolicy"],
|
|
766
|
-
nextFireAtMs: body.nextFireAtMs,
|
|
767
|
-
claimedAtMs: body.claimedAtMs,
|
|
768
|
-
};
|
|
769
|
-
}
|
|
770
|
-
|
|
771
|
-
export function parseHostedAdmissionOutcome(value: unknown): HostedAdmissionOutcome | undefined {
|
|
772
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
773
|
-
return undefined;
|
|
774
|
-
}
|
|
775
|
-
const body = value as Record<string, unknown>;
|
|
776
|
-
if (
|
|
777
|
-
body.ok !== true ||
|
|
778
|
-
body.v !== HOSTED_DELIVERY_PROTOCOL_VERSION ||
|
|
779
|
-
(body.outcome !== "skip" && body.outcome !== "send" && body.outcome !== "task")
|
|
780
|
-
) {
|
|
781
|
-
return undefined;
|
|
782
|
-
}
|
|
783
|
-
if (body.outcome === "send" && !boundedString(body.admissionToken, 128)) {
|
|
784
|
-
return undefined;
|
|
785
|
-
}
|
|
786
|
-
return body as HostedAdmissionOutcome;
|
|
787
|
-
}
|