@cursor/bdk 0.2.9 → 0.2.11
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/dist/artifacts.js +3 -5
- package/dist/bin/agent-serve.js +803 -812
- package/dist/channels/bitbucket/api.js +305 -321
- package/dist/channels/bitbucket/binding.js +97 -61
- package/dist/channels/bitbucket/bitbucket-channel.d.ts +15 -1
- package/dist/channels/bitbucket/bitbucket-channel.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-channel.js +95 -42
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts +11 -0
- package/dist/channels/bitbucket/bitbucket-webhook.d.ts.map +1 -1
- package/dist/channels/bitbucket/bitbucket-webhook.js +214 -204
- package/dist/channels/bitbucket/checks.js +9 -21
- package/dist/channels/bitbucket/cursor-account.js +1 -1
- package/dist/channels/bitbucket/defaults.js +14 -4
- package/dist/channels/bitbucket/events.js +1 -2
- package/dist/channels/bitbucket/index.d.ts +6 -2
- package/dist/channels/bitbucket/index.d.ts.map +1 -1
- package/dist/channels/bitbucket/index.js +6 -2
- package/dist/channels/bitbucket/replay.js +80 -56
- package/dist/channels/bitbucket/state.js +16 -7
- package/dist/channels/bitbucket/types.d.ts +11 -2
- package/dist/channels/bitbucket/types.d.ts.map +1 -1
- package/dist/channels/checks.js +18 -28
- package/dist/channels/deployments/deployments-channel.js +26 -34
- package/dist/channels/github/api.js +216 -210
- package/dist/channels/github/auth.d.ts +5 -1
- package/dist/channels/github/auth.d.ts.map +1 -1
- package/dist/channels/github/auth.js +157 -174
- package/dist/channels/github/binding.js +48 -39
- package/dist/channels/github/checks.js +9 -14
- package/dist/channels/github/cursor-account.js +6 -11
- package/dist/channels/github/defaults.js +105 -130
- package/dist/channels/github/forward.js +13 -17
- package/dist/channels/github/github-channel.d.ts +43 -2
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +1228 -958
- package/dist/channels/github/progress.js +145 -146
- package/dist/channels/github/replay.js +30 -39
- package/dist/channels/github/state.js +40 -16
- package/dist/channels/github/types.d.ts +30 -6
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/gitlab/api.js +100 -114
- package/dist/channels/gitlab/binding.js +52 -33
- package/dist/channels/gitlab/checks.js +28 -29
- package/dist/channels/gitlab/cursor-account.js +1 -1
- package/dist/channels/gitlab/defaults.js +9 -3
- package/dist/channels/gitlab/gitlab-channel.d.ts +16 -1
- package/dist/channels/gitlab/gitlab-channel.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-channel.js +95 -42
- package/dist/channels/gitlab/gitlab-webhook.d.ts +10 -1
- package/dist/channels/gitlab/gitlab-webhook.d.ts.map +1 -1
- package/dist/channels/gitlab/gitlab-webhook.js +282 -249
- package/dist/channels/gitlab/index.d.ts +6 -2
- package/dist/channels/gitlab/index.d.ts.map +1 -1
- package/dist/channels/gitlab/index.js +6 -2
- package/dist/channels/gitlab/replay.js +50 -27
- package/dist/channels/gitlab/state.js +14 -6
- package/dist/channels/gitlab/types.d.ts +13 -2
- package/dist/channels/gitlab/types.d.ts.map +1 -1
- package/dist/channels/origin/api.js +100 -116
- package/dist/channels/origin/binding.js +15 -16
- package/dist/channels/origin/checks.js +30 -28
- package/dist/channels/origin/defaults.js +50 -65
- package/dist/channels/origin/origin-channel.js +266 -272
- package/dist/channels/origin/origin-webhook.js +70 -88
- package/dist/channels/origin/reactions.js +9 -21
- package/dist/channels/origin/state.js +13 -5
- package/dist/channels/slack/agentic-delivery.js +426 -478
- package/dist/channels/slack/agentic-posted.js +9 -10
- package/dist/channels/slack/agentic-signals.js +2 -3
- package/dist/channels/slack/api.js +417 -427
- package/dist/channels/slack/approvals.js +1 -1
- package/dist/channels/slack/assistant.js +37 -47
- package/dist/channels/slack/attachments.js +188 -206
- package/dist/channels/slack/auth.js +8 -6
- package/dist/channels/slack/bot-mentions.js +31 -45
- package/dist/channels/slack/channel-watch.js +42 -48
- package/dist/channels/slack/cli-project.js +112 -137
- package/dist/channels/slack/code-fences.js +3 -5
- package/dist/channels/slack/constants.js +2 -2
- package/dist/channels/slack/credentials.js +23 -38
- package/dist/channels/slack/defaults.js +292 -331
- package/dist/channels/slack/dispatch.d.ts.map +1 -1
- package/dist/channels/slack/dispatch.js +533 -460
- package/dist/channels/slack/doctor.js +200 -214
- package/dist/channels/slack/eval-directive.js +79 -96
- package/dist/channels/slack/event-id-dedupe.js +1 -1
- package/dist/channels/slack/external-policy.js +26 -39
- package/dist/channels/slack/footer.js +28 -41
- package/dist/channels/slack/inbound.d.ts +1 -0
- package/dist/channels/slack/inbound.d.ts.map +1 -1
- package/dist/channels/slack/inbound.js +50 -31
- package/dist/channels/slack/init.d.ts +1 -5
- package/dist/channels/slack/init.d.ts.map +1 -1
- package/dist/channels/slack/init.js +42 -59
- package/dist/channels/slack/interactive.d.ts +9 -3
- package/dist/channels/slack/interactive.d.ts.map +1 -1
- package/dist/channels/slack/interactive.js +160 -162
- package/dist/channels/slack/links.js +1 -2
- package/dist/channels/slack/live-delivery.js +172 -190
- package/dist/channels/slack/manifest.d.ts.map +1 -1
- package/dist/channels/slack/manifest.js +44 -23
- package/dist/channels/slack/message-body.js +2 -2
- package/dist/channels/slack/nudge-carrier.js +30 -42
- package/dist/channels/slack/nudge-store.js +164 -191
- package/dist/channels/slack/paint-start.js +66 -81
- package/dist/channels/slack/placeholder.js +123 -152
- package/dist/channels/slack/pr-ref.js +1 -1
- package/dist/channels/slack/progress-delivery.js +65 -78
- package/dist/channels/slack/reasoning-card.js +36 -49
- package/dist/channels/slack/recording-sink.js +12 -24
- package/dist/channels/slack/reply-options.js +7 -12
- package/dist/channels/slack/self-identity.js +27 -35
- package/dist/channels/slack/sender-name.d.ts +12 -3
- package/dist/channels/slack/sender-name.d.ts.map +1 -1
- package/dist/channels/slack/sender-name.js +57 -61
- package/dist/channels/slack/setup.js +2 -4
- package/dist/channels/slack/slack-channel.d.ts +6 -4
- package/dist/channels/slack/slack-channel.d.ts.map +1 -1
- package/dist/channels/slack/slack-channel.js +441 -308
- package/dist/channels/slack/socket-mode.js +38 -52
- package/dist/channels/slack/thread-context.js +143 -160
- package/dist/channels/slack/tool-approval-events.js +149 -166
- package/dist/channels/slack/tool-cards.js +6 -11
- package/dist/channels/slack/tool-chip.js +1 -2
- package/dist/channels/slack/types.d.ts +15 -17
- package/dist/channels/slack/types.d.ts.map +1 -1
- package/dist/channels/slack/upload.js +84 -97
- package/dist/channels/slack/user-info.js +27 -41
- package/dist/channels.js +9 -20
- package/dist/dashboard-session-url.js +3 -4
- package/dist/docs/404.html +2 -2
- package/dist/docs/assets/{app.BNhEdGa8.js → app.DXI7bwox.js} +4 -4
- package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.js → building-with-agents.md.Df87rAe1.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.CtLtpWcx.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.DIdUV1Ph.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.lELI4_SR.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.iCMdvuoM.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.C1-nDJBf.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.ClemzBox.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.BqTak6cR.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.CUS3qs_R.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.dz5fdHcl.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.D6BEBmve.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.B5uK4ID9.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.PgOJgNQs.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CvkTrCii.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BnSfKYsB.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.MZH6v5UC.js → chunk-YZCP3GAM.Cg1OcF8G.js} +1 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CbC_mrvB.js +1 -0
- package/dist/docs/assets/chunks/clone.BTvFyY1a.js +1 -0
- package/dist/docs/assets/chunks/{cose-bilkent-S5V4N54A.BBbw_YZi.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CNJB2l7E.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.BQzlnFfq.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.DkgqqZMz.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DIT8L7H_.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.3xLPZWGJ.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.5_IHz8jF.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.BGUCXz8A.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DbfFavS1.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.D2yKdeNW.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CSCxwHba.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.FDeb6xHY.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.DbeYs9VL.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.CWjKINpx.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.B4FrAlwz.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.DFGxQ9ab.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.BmjZ-G59.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.DZSxulMW.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CHLi3-aN.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.DteG-CkU.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.D458ipN3.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.DcFgUxst.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.BwQAMmSA.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.B_Xdsrh9.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.CdfDW6-C.js → stateDiagram-FHFEXIEX.Iru8BsFo.js} +1 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.BYXl4LW6.js +1 -0
- package/dist/docs/assets/chunks/{theme.sfdL3srp.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.56-4hXaC.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.CvZSQBO7.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/{wardley-RL74JXVD.C9qc8k39.js → wardley-RL74JXVD.iXazD3Z7.js} +1 -1
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.D9s0nihi.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.BVJSpYrC.js → xychartDiagram-5P7HB3ND.CLPZEIU9.js} +1 -1
- package/dist/docs/assets/{deployment.md.BdqTiGdc.js → deployment.md.BYuEcDBv.js} +2 -2
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.js → guides_bitbucket.md.CKUayYtD.js} +3 -3
- package/dist/docs/assets/{guides_bitbucket.md.BB6fqD-M.lean.js → guides_bitbucket.md.CKUayYtD.lean.js} +1 -1
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.js → guides_github.md.TuNiZAOQ.js} +4 -4
- package/dist/docs/assets/{guides_github.md.Cr1Xlf-m.lean.js → guides_github.md.TuNiZAOQ.lean.js} +1 -1
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.js → guides_gitlab.md.CtNI4fSH.js} +4 -4
- package/dist/docs/assets/{guides_gitlab.md.CMpmFi4M.lean.js → guides_gitlab.md.CtNI4fSH.lean.js} +1 -1
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.js +7 -0
- package/dist/docs/assets/guides_migrate.md.sCAvvlC6.lean.js +1 -0
- package/dist/docs/assets/{reference_cli.md.GwugN3n-.js → reference_cli.md.dYCAL2lB.js} +4 -3
- package/dist/docs/assets/reference_cli.md.dYCAL2lB.lean.js +1 -0
- package/dist/docs/assets/troubleshooting.md.x-GBa7wN.js +1 -0
- package/dist/docs/assets/{troubleshooting.md.Bscj6ODe.lean.js → troubleshooting.md.x-GBa7wN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +37 -37
- package/dist/docs/building-with-agents.md +2 -0
- package/dist/docs/deployment.html +38 -38
- package/dist/docs/deployment.md +7 -0
- package/dist/docs/evals.html +36 -36
- package/dist/docs/guides/agent-to-agent.html +35 -35
- package/dist/docs/guides/bitbucket.html +38 -38
- package/dist/docs/guides/bitbucket.md +9 -1
- package/dist/docs/guides/cloud-agents.html +35 -35
- package/dist/docs/guides/convert-automation.html +35 -35
- package/dist/docs/guides/github.html +39 -39
- package/dist/docs/guides/github.md +20 -4
- package/dist/docs/guides/gitlab.html +38 -38
- package/dist/docs/guides/gitlab.md +9 -1
- 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 +35 -35
- package/dist/docs/guides/mcp-oauth.html +35 -35
- package/dist/docs/guides/migrate.html +66 -0
- package/dist/docs/guides/migrate.md +122 -0
- package/dist/docs/guides/opentelemetry.html +35 -35
- package/dist/docs/guides/slack.html +35 -35
- 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 +214 -6
- package/dist/docs/llms.txt +1 -0
- package/dist/docs/quickstart.html +35 -35
- package/dist/docs/reference/agent-config.html +35 -35
- package/dist/docs/reference/artifacts.html +35 -35
- package/dist/docs/reference/channels.html +35 -35
- package/dist/docs/reference/cli.html +39 -38
- package/dist/docs/reference/cli.md +39 -0
- package/dist/docs/reference/connections.html +35 -35
- package/dist/docs/reference/evals.html +35 -35
- package/dist/docs/reference/extensions.html +35 -35
- 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 +35 -35
- 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/grokbot-agents.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 +1 -0
- package/dist/evals/assertions.js +20 -34
- package/dist/evals/expect.js +3 -6
- package/dist/evals/judge.js +5 -8
- package/dist/evals/loaders.js +45 -62
- package/dist/evals/matchers.js +2 -3
- package/dist/evals/reporters.js +43 -67
- package/dist/evals/results.js +1 -1
- package/dist/evals/run-facts.js +5 -6
- package/dist/evals.js +27 -15
- package/dist/extensions/cursor-cloud-agents/extension.js +4 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +100 -126
- package/dist/extensions/cursor-cloud-agents/lib/fleet.js +22 -38
- package/dist/extensions/cursor-cloud-agents/lib/repos.js +8 -10
- package/dist/extensions/cursor-cloud-agents/lib/transcript.js +2 -3
- package/dist/extensions/cursor-cloud-agents/lib/watch.js +52 -66
- package/dist/extensions/cursor-cloud-agents/reminders/cloud-agent-stop-watch.js +29 -40
- package/dist/extensions/cursor-cloud-agents/tools/cancel.js +6 -17
- package/dist/extensions/cursor-cloud-agents/tools/dump.js +25 -36
- package/dist/extensions/cursor-cloud-agents/tools/get.js +3 -14
- package/dist/extensions/cursor-cloud-agents/tools/launch.js +13 -21
- package/dist/extensions/cursor-cloud-agents/tools/list.js +8 -19
- package/dist/extensions/cursor-cloud-agents/tools/reply.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/extension.js +4 -1
- package/dist/extensions/cursor-grokbot-agents/lib/agents.js +3 -3
- package/dist/extensions/cursor-grokbot-agents/lib/backend.js +53 -73
- package/dist/extensions/cursor-grokbot-agents/lib/contacts.js +10 -23
- package/dist/extensions/cursor-grokbot-agents/lib/conversation.js +112 -132
- package/dist/extensions/cursor-grokbot-agents/lib/lock.js +1 -2
- package/dist/extensions/cursor-grokbot-agents/tools/ask.js +5 -16
- package/dist/extensions/cursor-grokbot-agents/tools/check.js +4 -15
- package/dist/extensions/cursor-grokbot-agents/tools/interrupt.js +2 -13
- package/dist/extensions/cursor-grokbot-agents/tools/list.js +11 -23
- package/dist/extensions/jev/extension.js +3 -3
- package/dist/extensions/jev/lib/evaluate.js +43 -60
- package/dist/extensions/jev/tools/evaluate.js +6 -17
- package/dist/extensions/slack-communication/tools/post-file.js +1 -1
- package/dist/extensions.js +3 -5
- package/dist/files-backends/cursor-hosted.js +504 -523
- package/dist/files-backends/local-fs.js +72 -134
- package/dist/files.js +3 -3
- package/dist/filesystem.js +562 -861
- package/dist/index.js +16 -35
- package/dist/internal/advertise-tools.js +74 -86
- package/dist/internal/artifacts-store.js +298 -361
- package/dist/internal/as-of.js +2 -4
- package/dist/internal/authored-alias-hooks.js +6 -4
- package/dist/internal/authored-loaders.js +37 -52
- package/dist/internal/bounded-int.js +1 -2
- package/dist/internal/bounded.js +13 -24
- package/dist/internal/brand.js +1 -1
- package/dist/internal/browser-origin-guard.js +4 -4
- package/dist/internal/builtin-tools/artifacts.js +15 -27
- package/dist/internal/builtin-tools/index.js +2 -3
- package/dist/internal/builtin-tools/reminders.js +33 -52
- package/dist/internal/channel-architecture.d.ts +21 -0
- package/dist/internal/channel-architecture.d.ts.map +1 -0
- package/dist/internal/channel-architecture.js +41 -0
- package/dist/internal/channel-dispatch.js +3 -4
- package/dist/internal/channel-route-dispatch.js +40 -51
- package/dist/internal/channel-state.js +1 -1
- package/dist/internal/chat-client.js +319 -340
- package/dist/internal/cli-ax.js +1262 -1294
- package/dist/internal/cli-bitbucket.js +244 -272
- package/dist/internal/cli-convert-automation.js +137 -151
- package/dist/internal/cli-cursor.js +126 -147
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +1457 -1507
- package/dist/internal/cli-docs.js +130 -147
- package/dist/internal/cli-github.js +437 -476
- package/dist/internal/cli-gitlab.js +259 -288
- package/dist/internal/cli-images.js +266 -334
- package/dist/internal/cli-manifest.js +25 -37
- package/dist/internal/cli-mcp-oauth.js +228 -247
- package/dist/internal/cli-mcp.js +358 -383
- package/dist/internal/cli-migrate.js +73 -90
- package/dist/internal/cli-skills.js +35 -47
- package/dist/internal/cli-slack-manual.d.ts +0 -1
- package/dist/internal/cli-slack-manual.d.ts.map +1 -1
- package/dist/internal/cli-slack-manual.js +175 -204
- package/dist/internal/cli-slack.d.ts +1 -1
- package/dist/internal/cli-slack.d.ts.map +1 -1
- package/dist/internal/cli-slack.js +416 -456
- package/dist/internal/cloud-merge.js +7 -3
- package/dist/internal/cloud-turn-cost.js +8 -1
- package/dist/internal/connection-env.js +5 -6
- package/dist/internal/continuation-channel.js +10 -7
- package/dist/internal/continuation-identity.js +85 -67
- package/dist/internal/conversation-mirror.js +112 -131
- package/dist/internal/convert-automation/convert-workflow.js +21 -31
- package/dist/internal/cron.js +3 -3
- package/dist/internal/cursor/account-mcp.js +147 -146
- package/dist/internal/cursor/backend-client.js +290 -320
- package/dist/internal/cursor/bound-secret-file.js +3 -3
- package/dist/internal/cursor/credentials.js +127 -142
- package/dist/internal/cursor/cursor-api-transport.js +4 -8
- package/dist/internal/cursor/github-credentials.js +91 -108
- package/dist/internal/cursor/hosted-bound-secrets.js +3 -4
- package/dist/internal/cursor/hosted-deployment-secrets.js +1 -1
- package/dist/internal/cursor/hosted-store-secrets.js +5 -9
- package/dist/internal/cursor/session-token.js +36 -48
- package/dist/internal/cursor/store-api-client.js +77 -92
- package/dist/internal/cursor-account-mcp-auth.js +132 -149
- package/dist/internal/cursor-agent-template.js +1 -1
- package/dist/internal/cursor-deployment-relay.js +33 -54
- package/dist/internal/cursor-event-relay.js +65 -59
- package/dist/internal/cursor-relay-core.js +258 -286
- package/dist/internal/deferred-channel-session.js +3 -12
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +413 -475
- package/dist/internal/deploy-manifest.d.ts +17 -0
- package/dist/internal/deploy-manifest.d.ts.map +1 -1
- package/dist/internal/deploy-manifest.js +71 -21
- package/dist/internal/deploy-source.js +31 -43
- package/dist/internal/discovery/agent-config.js +45 -59
- package/dist/internal/discovery/agent.js +276 -280
- package/dist/internal/discovery/channels.js +67 -80
- package/dist/internal/discovery/connections.js +286 -296
- package/dist/internal/discovery/context.js +2 -13
- package/dist/internal/discovery/cursor-plugin.js +223 -259
- package/dist/internal/discovery/extension-overlay.js +104 -131
- package/dist/internal/discovery/extensions.js +276 -281
- package/dist/internal/discovery/fs.js +56 -79
- package/dist/internal/discovery/hooks.js +39 -50
- package/dist/internal/discovery/info.js +17 -19
- package/dist/internal/discovery/instructions.js +58 -71
- package/dist/internal/discovery/modules.js +45 -58
- package/dist/internal/discovery/project.d.ts.map +1 -1
- package/dist/internal/discovery/project.js +192 -215
- package/dist/internal/discovery/reminders.js +41 -52
- package/dist/internal/discovery/runtime.js +1 -1
- package/dist/internal/discovery/schedules.js +71 -82
- package/dist/internal/discovery/seed-files.js +21 -32
- package/dist/internal/discovery/services.js +74 -96
- package/dist/internal/discovery/skills.js +77 -94
- package/dist/internal/discovery/subagent.js +79 -95
- package/dist/internal/discovery/tools.js +12 -23
- package/dist/internal/distribution.js +2 -2
- package/dist/internal/docs-site.js +30 -45
- package/dist/internal/duration.js +1 -1
- package/dist/internal/env-file.js +48 -64
- package/dist/internal/eval-judge-model.js +17 -28
- package/dist/internal/eval-run-store.js +265 -254
- package/dist/internal/eval-runner.d.ts +8 -0
- package/dist/internal/eval-runner.d.ts.map +1 -1
- package/dist/internal/eval-runner.js +406 -408
- package/dist/internal/eval-transport.d.ts +24 -0
- package/dist/internal/eval-transport.d.ts.map +1 -0
- package/dist/internal/eval-transport.js +22 -0
- package/dist/internal/evals-client.js +242 -246
- package/dist/internal/event-log.js +72 -120
- package/dist/internal/event-mapper.js +30 -31
- package/dist/internal/factory-resource-channel.js +16 -30
- package/dist/internal/filesystem/errors.js +6 -6
- package/dist/internal/filesystem/format.js +10 -13
- package/dist/internal/filesystem/merge.js +52 -94
- package/dist/internal/filesystem/nearest.js +15 -27
- package/dist/internal/filesystem/scratch.js +65 -85
- package/dist/internal/filesystem/tools.js +221 -241
- package/dist/internal/filesystem/walk.js +76 -143
- package/dist/internal/framework-file-storage.js +118 -139
- package/dist/internal/framework-storage-selection.js +21 -13
- package/dist/internal/frontmatter.js +4 -6
- package/dist/internal/github-fanout.js +50 -64
- package/dist/internal/guest-network.js +96 -109
- package/dist/internal/handleAgentServeTrigger.js +121 -126
- package/dist/internal/host-files.js +73 -88
- package/dist/internal/host-kv.js +21 -36
- package/dist/internal/host-otel.js +22 -19
- package/dist/internal/host-platforms.js +49 -63
- package/dist/internal/hosted-catch-protocol.d.ts +1 -0
- package/dist/internal/hosted-catch-protocol.d.ts.map +1 -1
- package/dist/internal/hosted-catch-protocol.js +1 -0
- package/dist/internal/hosted-catch.d.ts +5 -3
- package/dist/internal/hosted-catch.d.ts.map +1 -1
- package/dist/internal/hosted-catch.js +84 -93
- package/dist/internal/hosted-delivery-protocol.js +32 -8
- package/dist/internal/hosted-delivery.d.ts +13 -1
- package/dist/internal/hosted-delivery.d.ts.map +1 -1
- package/dist/internal/hosted-delivery.js +614 -584
- package/dist/internal/hosted-eval-cases.d.ts +21 -0
- package/dist/internal/hosted-eval-cases.d.ts.map +1 -0
- package/dist/internal/hosted-eval-cases.js +162 -0
- package/dist/internal/hosted-execution-diag.js +38 -30
- package/dist/internal/hosted-execution-flush.js +75 -66
- package/dist/internal/hosted-execution-latency.js +16 -8
- package/dist/internal/hosted-managed-automation.js +2 -2
- package/dist/internal/hosting.js +2 -3
- package/dist/internal/http-channel-define.js +4 -1
- package/dist/internal/http-channel.js +101 -112
- package/dist/internal/http-control-plane-session.d.ts +18 -1
- package/dist/internal/http-control-plane-session.d.ts.map +1 -1
- package/dist/internal/http-control-plane-session.js +66 -32
- package/dist/internal/incoming-headers-to-fetch.js +1 -2
- package/dist/internal/init-interview.js +73 -93
- package/dist/internal/init-project.js +182 -214
- package/dist/internal/init-scaffold.js +10 -21
- package/dist/internal/inline-stdio-mcp.js +80 -86
- package/dist/internal/install-cursor-skills.js +231 -273
- package/dist/internal/legacy-command-guard.js +18 -31
- package/dist/internal/listen-port.js +34 -45
- package/dist/internal/local-control-plane.js +293 -307
- package/dist/internal/local-env.js +1 -1
- package/dist/internal/local-ingress.js +15 -9
- package/dist/internal/log-ring.js +1 -2
- package/dist/internal/logs-client.js +207 -227
- package/dist/internal/map-pool.js +24 -38
- package/dist/internal/mcp-endpoint.js +204 -180
- package/dist/internal/mcp-host.js +165 -168
- package/dist/internal/mcp-oauth-on-demand.js +170 -207
- package/dist/internal/mcp-oauth-persist.js +15 -29
- package/dist/internal/mcp-oauth.js +209 -266
- package/dist/internal/named-webhook-secret.d.ts +39 -0
- package/dist/internal/named-webhook-secret.d.ts.map +1 -0
- package/dist/internal/named-webhook-secret.js +47 -0
- package/dist/internal/open-browser.js +2 -3
- package/dist/internal/otel/collector.js +104 -68
- package/dist/internal/otel/config.js +24 -37
- package/dist/internal/otel/http.js +5 -7
- package/dist/internal/otel/mcp.js +3 -12
- package/dist/internal/otel/runtime.js +69 -83
- package/dist/internal/package-inline-stdio.js +57 -65
- package/dist/internal/peer-connections.js +9 -5
- package/dist/internal/platform-schedule-sync.js +39 -54
- package/dist/internal/platform-timers.js +176 -210
- package/dist/internal/playground/static.js +1 -2
- package/dist/internal/playground/toolchain.js +37 -53
- package/dist/internal/playground-proxy.js +230 -270
- package/dist/internal/process-memory-telemetry.js +33 -51
- package/dist/internal/prompt-context.js +3 -6
- package/dist/internal/reminder-control-plane-protocol.js +46 -13
- package/dist/internal/reminder-runner.js +770 -785
- package/dist/internal/reminder-schedule.js +1 -1
- package/dist/internal/reminder-store.js +57 -78
- package/dist/internal/request-error-status.js +1 -3
- package/dist/internal/request-headers.js +2 -2
- package/dist/internal/resolve-prod-target.js +119 -135
- package/dist/internal/resolved-connections.js +16 -6
- package/dist/internal/run-client.js +221 -229
- package/dist/internal/runtime-dispatch-runner.js +18 -43
- package/dist/internal/schedule-runner.js +49 -58
- package/dist/internal/scm/pr-url.js +7 -6
- package/dist/internal/sdk-runner.js +388 -363
- package/dist/internal/serve-restart.js +26 -39
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +1283 -1244
- package/dist/internal/session-cost.js +7 -9
- package/dist/internal/session-engine.d.ts +3 -1
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +2801 -2777
- package/dist/internal/session-links.js +12 -16
- package/dist/internal/session-run-log.js +134 -82
- package/dist/internal/session-store.js +133 -164
- package/dist/internal/sessions-client.js +97 -118
- package/dist/internal/skill-catalog.js +18 -23
- package/dist/internal/skills-sync.js +16 -30
- package/dist/internal/slack-provision-client.js +90 -116
- package/dist/internal/start-log-store.js +48 -67
- package/dist/internal/steering.js +1 -2
- package/dist/internal/storage-coordinator.js +160 -196
- package/dist/internal/store-mirror.js +16 -30
- package/dist/internal/stream-progress.js +6 -8
- package/dist/internal/terminal-style.js +3 -4
- package/dist/internal/testing/scm-continuation-fixtures.js +6 -2
- package/dist/internal/testing/slack-continuation-fixtures.d.ts +26 -0
- package/dist/internal/testing/slack-continuation-fixtures.d.ts.map +1 -0
- package/dist/internal/testing/slack-continuation-fixtures.js +136 -0
- package/dist/internal/tool-catalog.js +11 -5
- package/dist/internal/tool-result.js +1 -1
- package/dist/internal/trajectory.js +19 -22
- package/dist/internal/turn-cost.js +52 -62
- package/dist/internal/turn-governor.js +5 -8
- package/dist/internal/turn-lease-store.js +85 -105
- package/dist/internal/turn-outbox.js +28 -43
- package/dist/internal/update-check.js +231 -259
- package/dist/internal/v2-hosting.js +1 -2
- package/dist/internal/workspace-sync.js +25 -41
- package/dist/internal/workspace.js +111 -139
- package/dist/kv/memory-kv.js +27 -51
- package/dist/memory.js +106 -148
- package/dist/otel.js +5 -8
- package/dist/playground/assets/{index-Co4CUVTQ.js → index-Be0-1hw2.js} +45 -45
- package/dist/playground/assets/index-Clz6uHj9.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/prompt.js +2 -4
- package/dist/storage-backends/cursor-hosted-v2.js +53 -83
- package/dist/storage-backends/cursor-hosted.js +105 -145
- package/dist/storage-backends/file-kv.js +100 -128
- package/dist/storage-protocol.js +3 -5
- package/dist/storage.js +17 -26
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -18
- package/docs/building-with-agents.md +2 -0
- package/docs/deployment.md +7 -0
- package/docs/guides/bitbucket.md +9 -1
- package/docs/guides/github.md +20 -4
- package/docs/guides/gitlab.md +9 -1
- package/docs/guides/migrate.md +127 -0
- package/docs/reference/cli.md +39 -0
- package/docs/troubleshooting.md +1 -0
- package/package.json +1 -1
- package/skills/debug/SKILL.md +1 -0
- package/skills/github/SKILL.md +23 -0
- package/skills/migrate-v2/SKILL.md +51 -10
- package/dist/docs/assets/chunks/@localSearchIndexroot.BJ8UZggu.js +0 -1
- package/dist/docs/assets/chunks/channel.BTJ5J9FI.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.D4BZ3cVV.js +0 -1
- package/dist/docs/assets/chunks/clone.62tX-O-1.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DkTs1aEU.js +0 -1
- package/dist/docs/assets/reference_cli.md.GwugN3n-.lean.js +0 -1
- package/dist/docs/assets/troubleshooting.md.Bscj6ODe.js +0 -1
- package/dist/playground/assets/index-C1g_PTTZ.css +0 -1
- /package/dist/docs/assets/{building-with-agents.md.BPjPFxFg.lean.js → building-with-agents.md.Df87rAe1.lean.js} +0 -0
- /package/dist/docs/assets/{deployment.md.BdqTiGdc.lean.js → deployment.md.BYuEcDBv.lean.js} +0 -0
|
@@ -4,27 +4,8 @@
|
|
|
4
4
|
* Owns request, response, and error mapping. Rendering and polling remain in
|
|
5
5
|
* the CLI layer. Requests authenticate with the user's Cursor API key.
|
|
6
6
|
*/
|
|
7
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
17
|
-
var t = {};
|
|
18
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
19
|
-
t[p] = s[p];
|
|
20
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
21
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
22
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
23
|
-
t[p[i]] = s[p[i]];
|
|
24
|
-
}
|
|
25
|
-
return t;
|
|
26
|
-
};
|
|
27
7
|
import { z } from "zod";
|
|
8
|
+
import { packageVersion } from "./distribution.js";
|
|
28
9
|
import { MAX_SECRET_VALUE_BYTES, MAX_SECRETS, validateEgressDomain, validateSettableSecretName, } from "./hosting.js";
|
|
29
10
|
export const TERMINAL_DEPLOY_STATUSES = new Set([
|
|
30
11
|
"running",
|
|
@@ -380,60 +361,65 @@ const automationExportSchema = z
|
|
|
380
361
|
.passthrough();
|
|
381
362
|
export class AgentServeDeployClient {
|
|
382
363
|
constructor(options) {
|
|
383
|
-
var _a;
|
|
384
364
|
this.backendUrl = options.backendUrl.endsWith("/")
|
|
385
365
|
? options.backendUrl.slice(0, -1)
|
|
386
366
|
: options.backendUrl;
|
|
387
367
|
this.apiKey = options.apiKey;
|
|
388
|
-
this.fetchImpl =
|
|
368
|
+
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
389
369
|
}
|
|
390
370
|
/** Create or redeploy; 202 means accepted, not running (poll status). */
|
|
391
|
-
deploy(args) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (domainError !== undefined) {
|
|
401
|
-
throw new DeployApiError(domainError, 400);
|
|
402
|
-
}
|
|
371
|
+
async deploy(args) {
|
|
372
|
+
const slugError = validateDeploymentSlug(args.slug);
|
|
373
|
+
if (slugError !== undefined) {
|
|
374
|
+
throw new DeployApiError(slugError, 400);
|
|
375
|
+
}
|
|
376
|
+
for (const domain of args.source.egressAllowedDomains ?? []) {
|
|
377
|
+
const domainError = validateEgressDomain(domain);
|
|
378
|
+
if (domainError !== undefined) {
|
|
379
|
+
throw new DeployApiError(domainError, 400);
|
|
403
380
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
381
|
+
}
|
|
382
|
+
// Only the git-ref member exists today; a future artifact member would
|
|
383
|
+
// upload the build first and post a different body from this branch.
|
|
384
|
+
const body = {
|
|
385
|
+
teamId: args.teamId,
|
|
386
|
+
slug: args.slug,
|
|
387
|
+
gitRepoUrl: args.source.gitRepoUrl,
|
|
388
|
+
...(args.source.gitRef === undefined ? {} : { gitRef: args.source.gitRef }),
|
|
389
|
+
...(args.source.agentPath === undefined ? {} : { agentPath: args.source.agentPath }),
|
|
390
|
+
...(args.source.cursorEventRepos === undefined
|
|
407
391
|
? {}
|
|
408
|
-
: { cursorEventRepos: args.source.cursorEventRepos })
|
|
392
|
+
: { cursorEventRepos: args.source.cursorEventRepos }),
|
|
393
|
+
...(args.source.egressAllowedDomains === undefined
|
|
409
394
|
? {}
|
|
410
|
-
: { egressAllowedDomains: args.source.egressAllowedDomains })
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
raw = yield send();
|
|
395
|
+
: { egressAllowedDomains: args.source.egressAllowedDomains }),
|
|
396
|
+
// JSON.stringify drops undefined keys.
|
|
397
|
+
publicRoutePaths: args.source.publicRoutePaths,
|
|
398
|
+
template: args.template,
|
|
399
|
+
};
|
|
400
|
+
const send = () => this.request({
|
|
401
|
+
method: "POST",
|
|
402
|
+
path: "/internal/agent-serve/deployments",
|
|
403
|
+
body,
|
|
404
|
+
context: { verb: "deploy", slug: args.slug },
|
|
405
|
+
});
|
|
406
|
+
let raw;
|
|
407
|
+
try {
|
|
408
|
+
raw = await send();
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
const unsupportedTemplate = args.template !== undefined &&
|
|
412
|
+
error instanceof DeployApiError &&
|
|
413
|
+
error.status === 400 &&
|
|
414
|
+
error.message.toLowerCase().includes("template") &&
|
|
415
|
+
/unrecognized|unknown/i.test(error.message);
|
|
416
|
+
if (!unsupportedTemplate) {
|
|
417
|
+
throw error;
|
|
434
418
|
}
|
|
435
|
-
|
|
436
|
-
|
|
419
|
+
delete body.template;
|
|
420
|
+
raw = await send();
|
|
421
|
+
}
|
|
422
|
+
return deployAcceptedSchema.parse(raw);
|
|
437
423
|
}
|
|
438
424
|
/**
|
|
439
425
|
* Create or redeploy an architecture-v2 deployment. Poll
|
|
@@ -441,402 +427,355 @@ export class AgentServeDeployClient {
|
|
|
441
427
|
* one application with several release components (one per agent
|
|
442
428
|
* directory); it is mutually exclusive with `agentPath`.
|
|
443
429
|
*/
|
|
444
|
-
deployAgentkit(args) {
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
if (keyError !== undefined) {
|
|
454
|
-
throw new DeployApiError(`Invalid component key ${JSON.stringify(component.componentKey)}: use lowercase letters, digits, '-' or '_' (max 64 chars)`, 400);
|
|
455
|
-
}
|
|
430
|
+
async deployAgentkit(args) {
|
|
431
|
+
const slugError = validateDeploymentSlug(args.slug);
|
|
432
|
+
if (slugError !== undefined) {
|
|
433
|
+
throw new DeployApiError(slugError, 400);
|
|
434
|
+
}
|
|
435
|
+
for (const component of args.components ?? []) {
|
|
436
|
+
const keyError = validateDeploymentSlug(component.componentKey);
|
|
437
|
+
if (keyError !== undefined) {
|
|
438
|
+
throw new DeployApiError(`Invalid component key ${JSON.stringify(component.componentKey)}: use lowercase letters, digits, '-' or '_' (max 64 chars)`, 400);
|
|
456
439
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
});
|
|
440
|
+
}
|
|
441
|
+
const raw = await this.request({
|
|
442
|
+
method: "POST",
|
|
443
|
+
path: "/internal/agentsdk/deployments",
|
|
444
|
+
body: {
|
|
445
|
+
teamId: args.teamId,
|
|
446
|
+
slug: args.slug,
|
|
447
|
+
gitRepoUrl: args.gitRepoUrl,
|
|
448
|
+
gitRef: args.gitRef,
|
|
449
|
+
agentPath: args.agentPath,
|
|
450
|
+
components: args.components,
|
|
451
|
+
repositories: args.repositories !== undefined && args.repositories.length > 0
|
|
452
|
+
? args.repositories
|
|
453
|
+
: undefined,
|
|
454
|
+
...(args.multiTenant === true ? { multiTenant: true } : {}),
|
|
455
|
+
persistent: args.persistent,
|
|
456
|
+
...(args.image === undefined ? {} : { image: args.image }),
|
|
457
|
+
},
|
|
458
|
+
context: { verb: "deploy", slug: args.slug },
|
|
459
|
+
});
|
|
460
|
+
return agentkitDeployAcceptedSchema.parse(raw);
|
|
461
|
+
}
|
|
462
|
+
async getAgentkitDeploy(args) {
|
|
463
|
+
const raw = await this.request({
|
|
464
|
+
method: "GET",
|
|
465
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
466
|
+
context: { verb: "get deployment", slug: args.slug },
|
|
467
|
+
});
|
|
468
|
+
return agentkitDeployStatusSchema.parse(raw);
|
|
477
469
|
}
|
|
478
470
|
/**
|
|
479
471
|
* Stop an architecture-v2 deployment. Poll {@link getAgentkitDeploy} until
|
|
480
472
|
* `stopped`.
|
|
481
473
|
*/
|
|
482
|
-
stopAgentkit(args) {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
context: { verb: "stop", slug: args.slug },
|
|
489
|
-
});
|
|
490
|
-
return agentkitStopAcceptedSchema.parse(raw);
|
|
474
|
+
async stopAgentkit(args) {
|
|
475
|
+
const raw = await this.request({
|
|
476
|
+
method: "POST",
|
|
477
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}` +
|
|
478
|
+
(args.cancelRuns === true ? "&cancelRuns=true" : ""),
|
|
479
|
+
context: { verb: "stop", slug: args.slug },
|
|
491
480
|
});
|
|
481
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
492
482
|
}
|
|
493
483
|
/** Start an architecture-v2 deployment with a compatibility fallback. */
|
|
494
|
-
startAgentkit(args) {
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
const raw = yield this.request({
|
|
499
|
-
method: "POST",
|
|
500
|
-
path: `/internal/agentsdk/deployments/${encoded}/start?teamId=${args.teamId}`,
|
|
501
|
-
context: { verb: "start", slug: args.slug },
|
|
502
|
-
});
|
|
503
|
-
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
504
|
-
}
|
|
505
|
-
catch (error) {
|
|
506
|
-
if (!(error instanceof DeployApiError) || error.status !== 404) {
|
|
507
|
-
throw error;
|
|
508
|
-
}
|
|
509
|
-
const raw = yield this.request({
|
|
510
|
-
method: "POST",
|
|
511
|
-
path: `/internal/agentsdk/deployments/${encoded}/global-resume?teamId=${args.teamId}`,
|
|
512
|
-
context: { verb: "start", slug: args.slug },
|
|
513
|
-
});
|
|
514
|
-
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
515
|
-
}
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
setAgentkitGlobalSuspension(args) {
|
|
519
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
520
|
-
const action = args.suspended ? "global-stop" : "global-resume";
|
|
521
|
-
const cancelQuery = args.suspended === true && args.cancelRuns === true ? "&cancelRuns=true" : "";
|
|
522
|
-
const raw = yield this.request({
|
|
484
|
+
async startAgentkit(args) {
|
|
485
|
+
const encoded = encodeURIComponent(args.slug);
|
|
486
|
+
try {
|
|
487
|
+
const raw = await this.request({
|
|
523
488
|
method: "POST",
|
|
524
|
-
path: `/internal/agentsdk/deployments/${
|
|
525
|
-
context: {
|
|
526
|
-
verb: args.suspended ? "globally stop" : "globally resume",
|
|
527
|
-
slug: args.slug,
|
|
528
|
-
},
|
|
489
|
+
path: `/internal/agentsdk/deployments/${encoded}/start?teamId=${args.teamId}`,
|
|
490
|
+
context: { verb: "start", slug: args.slug },
|
|
529
491
|
});
|
|
530
492
|
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
493
|
+
}
|
|
494
|
+
catch (error) {
|
|
495
|
+
if (!(error instanceof DeployApiError) || error.status !== 404) {
|
|
496
|
+
throw error;
|
|
497
|
+
}
|
|
498
|
+
const raw = await this.request({
|
|
536
499
|
method: "POST",
|
|
537
|
-
path: `/internal/agentsdk/deployments/${
|
|
538
|
-
context: { verb: "
|
|
500
|
+
path: `/internal/agentsdk/deployments/${encoded}/global-resume?teamId=${args.teamId}`,
|
|
501
|
+
context: { verb: "start", slug: args.slug },
|
|
539
502
|
});
|
|
540
|
-
return
|
|
541
|
-
}
|
|
503
|
+
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
504
|
+
}
|
|
542
505
|
}
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
.
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
506
|
+
async setAgentkitGlobalSuspension(args) {
|
|
507
|
+
const action = args.suspended ? "global-stop" : "global-resume";
|
|
508
|
+
const cancelQuery = args.suspended === true && args.cancelRuns === true ? "&cancelRuns=true" : "";
|
|
509
|
+
const raw = await this.request({
|
|
510
|
+
method: "POST",
|
|
511
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${action}?teamId=${args.teamId}${cancelQuery}`,
|
|
512
|
+
context: {
|
|
513
|
+
verb: args.suspended ? "globally stop" : "globally resume",
|
|
514
|
+
slug: args.slug,
|
|
515
|
+
},
|
|
516
|
+
});
|
|
517
|
+
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
518
|
+
}
|
|
519
|
+
async killAgentkit(args) {
|
|
520
|
+
const raw = await this.request({
|
|
521
|
+
method: "POST",
|
|
522
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/kill?teamId=${args.teamId}`,
|
|
523
|
+
context: { verb: "kill", slug: args.slug },
|
|
524
|
+
});
|
|
525
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
526
|
+
}
|
|
527
|
+
async unlockAgentkitDeploys(args) {
|
|
528
|
+
const raw = await this.request({
|
|
529
|
+
method: "POST",
|
|
530
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/unlock-deploys?teamId=${args.teamId}`,
|
|
531
|
+
context: { verb: "unlock deploys", slug: args.slug },
|
|
532
|
+
});
|
|
533
|
+
return z
|
|
534
|
+
.object({
|
|
535
|
+
applicationId: z.string().min(1),
|
|
536
|
+
deployLocked: z.literal(false),
|
|
537
|
+
})
|
|
538
|
+
.parse(raw);
|
|
557
539
|
}
|
|
558
|
-
cancelAgentkitRuns(args) {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
context: { verb: "cancel runs", slug: args.slug },
|
|
564
|
-
});
|
|
565
|
-
return agentkitCancelRunsResultSchema.parse(raw);
|
|
540
|
+
async cancelAgentkitRuns(args) {
|
|
541
|
+
const raw = await this.request({
|
|
542
|
+
method: "POST",
|
|
543
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/cancel-runs?teamId=${args.teamId}`,
|
|
544
|
+
context: { verb: "cancel runs", slug: args.slug },
|
|
566
545
|
});
|
|
546
|
+
return agentkitCancelRunsResultSchema.parse(raw);
|
|
567
547
|
}
|
|
568
548
|
/** Repoint a managed deployment's event repositories. */
|
|
569
|
-
setAgentkitEventRepositories(args) {
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
slug: args.slug,
|
|
599
|
-
},
|
|
600
|
-
});
|
|
601
|
-
return agentkitInstallReleaseSchema.parse(raw).releaseId;
|
|
602
|
-
});
|
|
549
|
+
async setAgentkitEventRepositories(args) {
|
|
550
|
+
const raw = await this.request({
|
|
551
|
+
method: "PUT",
|
|
552
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/event-repositories?teamId=${args.teamId}`,
|
|
553
|
+
body: { repositories: args.repositories },
|
|
554
|
+
context: { verb: "set event repositories", slug: args.slug },
|
|
555
|
+
});
|
|
556
|
+
return agentkitEventRepositoriesSchema.parse(raw).repositories;
|
|
557
|
+
}
|
|
558
|
+
async upgradeAgentkitInstall(args) {
|
|
559
|
+
return this.pinAgentkitInstall("upgrade", args);
|
|
560
|
+
}
|
|
561
|
+
async rollbackAgentkitInstall(args) {
|
|
562
|
+
return this.pinAgentkitInstall("rollback", args);
|
|
563
|
+
}
|
|
564
|
+
async pinAgentkitInstall(direction, args) {
|
|
565
|
+
const raw = await this.request({
|
|
566
|
+
method: direction === "upgrade" ? "PUT" : "POST",
|
|
567
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${direction === "upgrade" ? "release" : "rollback"}?teamId=${args.teamId}`,
|
|
568
|
+
body: {
|
|
569
|
+
...(args.releaseId === undefined ? {} : { releaseId: args.releaseId }),
|
|
570
|
+
...(args.version === undefined ? {} : { version: args.version }),
|
|
571
|
+
},
|
|
572
|
+
context: {
|
|
573
|
+
verb: direction === "upgrade" ? "upgrade" : "roll back",
|
|
574
|
+
slug: args.slug,
|
|
575
|
+
},
|
|
576
|
+
});
|
|
577
|
+
return agentkitInstallReleaseSchema.parse(raw).releaseId;
|
|
603
578
|
}
|
|
604
579
|
/**
|
|
605
580
|
* Delete an architecture-v2 deployment. Poll {@link getAgentkitDeploy}
|
|
606
581
|
* until it is no longer found.
|
|
607
582
|
*/
|
|
608
|
-
deleteAgentkit(args) {
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
context: { verb: "delete", slug: args.slug },
|
|
614
|
-
});
|
|
615
|
-
return agentkitStopAcceptedSchema.parse(raw);
|
|
583
|
+
async deleteAgentkit(args) {
|
|
584
|
+
const raw = await this.request({
|
|
585
|
+
method: "DELETE",
|
|
586
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
587
|
+
context: { verb: "delete", slug: args.slug },
|
|
616
588
|
});
|
|
589
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
617
590
|
}
|
|
618
591
|
/**
|
|
619
592
|
* Start or, with `sessionId`, resume a hosted architecture-v2 session.
|
|
620
593
|
*/
|
|
621
|
-
startSession(args) {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
return agentkitStartSessionAcceptedSchema.parse(raw);
|
|
637
|
-
});
|
|
594
|
+
async startSession(args) {
|
|
595
|
+
const raw = await this.request({
|
|
596
|
+
method: "POST",
|
|
597
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions`,
|
|
598
|
+
body: {
|
|
599
|
+
teamId: args.teamId,
|
|
600
|
+
message: args.message,
|
|
601
|
+
sessionId: args.sessionId,
|
|
602
|
+
dryRun: args.dryRun === true ? true : undefined,
|
|
603
|
+
asOf: args.asOf,
|
|
604
|
+
componentKey: args.componentKey,
|
|
605
|
+
},
|
|
606
|
+
context: { verb: "start session", slug: args.slug },
|
|
607
|
+
});
|
|
608
|
+
return agentkitStartSessionAcceptedSchema.parse(raw);
|
|
638
609
|
}
|
|
639
610
|
/** Hosted executions and the start-log tee for one v2 session. */
|
|
640
|
-
getAgentkitSessionRuns(args) {
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
context: { verb: "get session runs", slug: args.slug },
|
|
646
|
-
});
|
|
647
|
-
return agentkitSessionRunsSchema.parse(raw);
|
|
611
|
+
async getAgentkitSessionRuns(args) {
|
|
612
|
+
const raw = await this.request({
|
|
613
|
+
method: "GET",
|
|
614
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions/${encodeURIComponent(args.sessionId)}/runs?teamId=${args.teamId}`,
|
|
615
|
+
context: { verb: "get session runs", slug: args.slug },
|
|
648
616
|
});
|
|
617
|
+
return agentkitSessionRunsSchema.parse(raw);
|
|
649
618
|
}
|
|
650
619
|
/** Events written so far. Pass `afterEventIndex: -1` to read from the start. */
|
|
651
|
-
getAgentkitSessionEvents(args) {
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
context: { verb: "get session events", slug: args.slug },
|
|
659
|
-
});
|
|
660
|
-
return agentkitSessionEventPollSchema.parse(raw);
|
|
620
|
+
async getAgentkitSessionEvents(args) {
|
|
621
|
+
const raw = await this.request({
|
|
622
|
+
method: "GET",
|
|
623
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}` +
|
|
624
|
+
`/sessions/${encodeURIComponent(args.sessionId)}/events` +
|
|
625
|
+
`?teamId=${args.teamId}&afterEventIndex=${args.afterEventIndex}`,
|
|
626
|
+
context: { verb: "get session events", slug: args.slug },
|
|
661
627
|
});
|
|
628
|
+
return agentkitSessionEventPollSchema.parse(raw);
|
|
662
629
|
}
|
|
663
630
|
/**
|
|
664
631
|
* Recent output of the deployment's most recent sessions, oldest first, or
|
|
665
632
|
* of one session when `sessionId` is set.
|
|
666
633
|
*/
|
|
667
|
-
getAgentkitDeploymentLogs(args) {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
634
|
+
async getAgentkitDeploymentLogs(args) {
|
|
635
|
+
const query = new URLSearchParams({ teamId: String(args.teamId) });
|
|
636
|
+
if (args.sessionId !== undefined) {
|
|
637
|
+
query.set("sessionId", args.sessionId);
|
|
638
|
+
}
|
|
639
|
+
const raw = await this.request({
|
|
640
|
+
method: "GET",
|
|
641
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/logs?${query}`,
|
|
642
|
+
context: { verb: "get logs", slug: args.slug },
|
|
643
|
+
signal: args.signal,
|
|
644
|
+
});
|
|
645
|
+
return agentkitDeploymentLogsSchema.parse(raw).sessions;
|
|
646
|
+
}
|
|
647
|
+
async listDeployments(args) {
|
|
648
|
+
const raw = await this.request({
|
|
649
|
+
method: "GET",
|
|
650
|
+
path: `/internal/agent-serve/deployments?teamId=${args.teamId}`,
|
|
651
|
+
context: { verb: "list deployments" },
|
|
652
|
+
});
|
|
653
|
+
return listResponseSchema.parse(raw).deployments;
|
|
654
|
+
}
|
|
655
|
+
async listAgentkitDeployments(args) {
|
|
656
|
+
const deployments = [];
|
|
657
|
+
let pageToken = null;
|
|
658
|
+
do {
|
|
659
|
+
const qs = `teamId=${args.teamId}&pageSize=100` +
|
|
660
|
+
(pageToken === null ? "" : `&pageToken=${encodeURIComponent(pageToken)}`);
|
|
661
|
+
const page = agentkitDeploymentListResponseSchema.parse(await this.request({
|
|
685
662
|
method: "GET",
|
|
686
|
-
path: `/internal/
|
|
687
|
-
context: { verb: "list deployments" },
|
|
688
|
-
});
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
return deploymentDetailSchema.parse(raw);
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
stopDeployment(args) {
|
|
721
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
722
|
-
const raw = yield this.request({
|
|
723
|
-
method: "POST",
|
|
724
|
-
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
|
|
725
|
-
context: { verb: "stop", slug: args.slug },
|
|
726
|
-
});
|
|
727
|
-
return stopAcceptedSchema.parse(raw);
|
|
728
|
-
});
|
|
729
|
-
}
|
|
730
|
-
deleteDeployment(args) {
|
|
731
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
732
|
-
const raw = yield this.request({
|
|
733
|
-
method: "DELETE",
|
|
734
|
-
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
735
|
-
context: { verb: "delete", slug: args.slug },
|
|
736
|
-
});
|
|
737
|
-
return stopAcceptedSchema.parse(raw);
|
|
738
|
-
});
|
|
663
|
+
path: `/internal/agentsdk/deployments?${qs}`,
|
|
664
|
+
context: { verb: "list architecture v2 deployments" },
|
|
665
|
+
}));
|
|
666
|
+
deployments.push(...page.deployments);
|
|
667
|
+
pageToken = page.nextPageToken;
|
|
668
|
+
} while (pageToken !== null);
|
|
669
|
+
return deployments;
|
|
670
|
+
}
|
|
671
|
+
async getDeployment(args) {
|
|
672
|
+
const raw = await this.request({
|
|
673
|
+
method: "GET",
|
|
674
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
675
|
+
context: { verb: "get deployment", slug: args.slug },
|
|
676
|
+
});
|
|
677
|
+
return deploymentDetailSchema.parse(raw);
|
|
678
|
+
}
|
|
679
|
+
async stopDeployment(args) {
|
|
680
|
+
const raw = await this.request({
|
|
681
|
+
method: "POST",
|
|
682
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
|
|
683
|
+
context: { verb: "stop", slug: args.slug },
|
|
684
|
+
});
|
|
685
|
+
return stopAcceptedSchema.parse(raw);
|
|
686
|
+
}
|
|
687
|
+
async deleteDeployment(args) {
|
|
688
|
+
const raw = await this.request({
|
|
689
|
+
method: "DELETE",
|
|
690
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
691
|
+
context: { verb: "delete", slug: args.slug },
|
|
692
|
+
});
|
|
693
|
+
return stopAcceptedSchema.parse(raw);
|
|
739
694
|
}
|
|
740
695
|
/** Returns the new alias token exactly once; the old one dies now. */
|
|
741
|
-
rotateAliasToken(args) {
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
context: { verb: "rotate alias token", slug: args.slug },
|
|
747
|
-
});
|
|
748
|
-
return rotateResponseSchema.parse(raw).aliasToken;
|
|
696
|
+
async rotateAliasToken(args) {
|
|
697
|
+
const raw = await this.request({
|
|
698
|
+
method: "POST",
|
|
699
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
|
|
700
|
+
context: { verb: "rotate alias token", slug: args.slug },
|
|
749
701
|
});
|
|
702
|
+
return rotateResponseSchema.parse(raw).aliasToken;
|
|
750
703
|
}
|
|
751
704
|
/** Rotate the alias token on an AgentSDK v2 deployment. */
|
|
752
|
-
rotateAgentsdkAliasToken(args) {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
context: { verb: "rotate alias token", slug: args.slug },
|
|
758
|
-
});
|
|
759
|
-
return rotateResponseSchema.parse(raw).aliasToken;
|
|
705
|
+
async rotateAgentsdkAliasToken(args) {
|
|
706
|
+
const raw = await this.request({
|
|
707
|
+
method: "POST",
|
|
708
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
|
|
709
|
+
context: { verb: "rotate alias token", slug: args.slug },
|
|
760
710
|
});
|
|
711
|
+
return rotateResponseSchema.parse(raw).aliasToken;
|
|
761
712
|
}
|
|
762
713
|
/**
|
|
763
714
|
* Upsert secrets by name (unlisted names stay untouched). Returns the
|
|
764
715
|
* post-write union of secret names, sorted. Validates names and value
|
|
765
716
|
* sizes client-side with the backend's grammar before any network call.
|
|
766
717
|
*/
|
|
767
|
-
setSecrets(args) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
context: { verb: "set secrets", slug: args.slug },
|
|
775
|
-
});
|
|
776
|
-
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
718
|
+
async setSecrets(args) {
|
|
719
|
+
this.validateSecrets(args.secrets);
|
|
720
|
+
const raw = await this.request({
|
|
721
|
+
method: "PUT",
|
|
722
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
723
|
+
body: { teamId: args.teamId, secrets: args.secrets },
|
|
724
|
+
context: { verb: "set secrets", slug: args.slug },
|
|
777
725
|
});
|
|
726
|
+
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
778
727
|
}
|
|
779
728
|
/** Upsert application-scoped secrets on an AgentSDK v2 deployment. */
|
|
780
|
-
setAgentkitSecrets(args) {
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
context: { verb: "set secrets", slug: args.slug },
|
|
788
|
-
});
|
|
789
|
-
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
729
|
+
async setAgentkitSecrets(args) {
|
|
730
|
+
this.validateSecrets(args.secrets);
|
|
731
|
+
const raw = await this.request({
|
|
732
|
+
method: "PUT",
|
|
733
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
734
|
+
body: { teamId: args.teamId, secrets: args.secrets },
|
|
735
|
+
context: { verb: "set secrets", slug: args.slug },
|
|
790
736
|
});
|
|
737
|
+
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
791
738
|
}
|
|
792
739
|
/** Secret names + creation times; values are never returned. */
|
|
793
|
-
listSecrets(args) {
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
context: { verb: "list secrets", slug: args.slug },
|
|
799
|
-
});
|
|
800
|
-
return listSecretsResponseSchema.parse(raw).secrets;
|
|
740
|
+
async listSecrets(args) {
|
|
741
|
+
const raw = await this.request({
|
|
742
|
+
method: "GET",
|
|
743
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
|
|
744
|
+
context: { verb: "list secrets", slug: args.slug },
|
|
801
745
|
});
|
|
746
|
+
return listSecretsResponseSchema.parse(raw).secrets;
|
|
802
747
|
}
|
|
803
748
|
/** Secret names + creation times for an AgentSDK v2 application. */
|
|
804
|
-
listAgentkitSecrets(args) {
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
context: { verb: "list secrets", slug: args.slug },
|
|
810
|
-
});
|
|
811
|
-
return listSecretsResponseSchema.parse(raw).secrets;
|
|
749
|
+
async listAgentkitSecrets(args) {
|
|
750
|
+
const raw = await this.request({
|
|
751
|
+
method: "GET",
|
|
752
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
|
|
753
|
+
context: { verb: "list secrets", slug: args.slug },
|
|
812
754
|
});
|
|
755
|
+
return listSecretsResponseSchema.parse(raw).secrets;
|
|
813
756
|
}
|
|
814
757
|
/** Remove one secret by name; 404 when it is not set. */
|
|
815
|
-
deleteSecret(args) {
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
context: { verb: "unset secret", slug: args.slug },
|
|
825
|
-
});
|
|
758
|
+
async deleteSecret(args) {
|
|
759
|
+
const nameError = validateSettableSecretName(args.name);
|
|
760
|
+
if (nameError !== undefined) {
|
|
761
|
+
throw new DeployApiError(nameError, 400);
|
|
762
|
+
}
|
|
763
|
+
await this.request({
|
|
764
|
+
method: "DELETE",
|
|
765
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
766
|
+
context: { verb: "unset secret", slug: args.slug },
|
|
826
767
|
});
|
|
827
768
|
}
|
|
828
769
|
/** Remove one application-scoped secret from an AgentSDK v2 deployment. */
|
|
829
|
-
deleteAgentkitSecret(args) {
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
context: { verb: "unset secret", slug: args.slug },
|
|
839
|
-
});
|
|
770
|
+
async deleteAgentkitSecret(args) {
|
|
771
|
+
const nameError = validateSettableSecretName(args.name);
|
|
772
|
+
if (nameError !== undefined) {
|
|
773
|
+
throw new DeployApiError(nameError, 400);
|
|
774
|
+
}
|
|
775
|
+
await this.request({
|
|
776
|
+
method: "DELETE",
|
|
777
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
778
|
+
context: { verb: "unset secret", slug: args.slug },
|
|
840
779
|
});
|
|
841
780
|
}
|
|
842
781
|
validateSecrets(secrets) {
|
|
@@ -859,26 +798,24 @@ export class AgentServeDeployClient {
|
|
|
859
798
|
* indistinguishable 404s on the backend, so they map to one message here
|
|
860
799
|
* (the wrong-host 404 hint from {@link mapErrorResponse} passes through).
|
|
861
800
|
*/
|
|
862
|
-
exportAutomation(args) {
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
throw new DeployApiError(`Automation ${args.uuid} was not found or you don't have access to it (the agent_serve_mvp feature gate may also be off for your team).`, 404);
|
|
877
|
-
}
|
|
878
|
-
throw error;
|
|
801
|
+
async exportAutomation(args) {
|
|
802
|
+
let raw;
|
|
803
|
+
try {
|
|
804
|
+
raw = await this.request({
|
|
805
|
+
method: "GET",
|
|
806
|
+
path: `/internal/agent-serve/automations/${encodeURIComponent(args.uuid)}/export`,
|
|
807
|
+
context: { verb: "export automation" },
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
catch (error) {
|
|
811
|
+
if (error instanceof DeployApiError &&
|
|
812
|
+
error.status === 404 &&
|
|
813
|
+
!error.message.includes("api.cursor.com")) {
|
|
814
|
+
throw new DeployApiError(`Automation ${args.uuid} was not found or you don't have access to it (the agent_serve_mvp feature gate may also be off for your team).`, 404);
|
|
879
815
|
}
|
|
880
|
-
|
|
881
|
-
}
|
|
816
|
+
throw error;
|
|
817
|
+
}
|
|
818
|
+
return automationExportSchema.parse(raw);
|
|
882
819
|
}
|
|
883
820
|
/** Full URL of the stable engine alias for a deployment. */
|
|
884
821
|
aliasUrl(engineAlias) {
|
|
@@ -894,72 +831,73 @@ export class AgentServeDeployClient {
|
|
|
894
831
|
return `${this.backendUrl}/internal/agent-serve/mcp/${teamId}/${encodeURIComponent(slug)}`;
|
|
895
832
|
}
|
|
896
833
|
/** Team container images, newest first, with the per-team cap. */
|
|
897
|
-
listContainerImages(args) {
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
context: { verb: "list images" },
|
|
903
|
-
});
|
|
904
|
-
return listContainerImagesResponseSchema.parse(raw);
|
|
834
|
+
async listContainerImages(args) {
|
|
835
|
+
const raw = await this.request({
|
|
836
|
+
method: "GET",
|
|
837
|
+
path: `/internal/agentsdk/images?teamId=${args.teamId}`,
|
|
838
|
+
context: { verb: "list images" },
|
|
905
839
|
});
|
|
840
|
+
return listContainerImagesResponseSchema.parse(raw);
|
|
906
841
|
}
|
|
907
842
|
/** Start (or restart) the upload for `name`; 409 when a new name would exceed the cap. */
|
|
908
|
-
beginContainerImageUpload(args) {
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
context: { verb: "push image" },
|
|
916
|
-
});
|
|
917
|
-
return containerImageUploadSchema.parse(raw);
|
|
843
|
+
async beginContainerImageUpload(args) {
|
|
844
|
+
const { name, ...body } = args;
|
|
845
|
+
const raw = await this.request({
|
|
846
|
+
method: "POST",
|
|
847
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(name)}/begin`,
|
|
848
|
+
body,
|
|
849
|
+
context: { verb: "push image" },
|
|
918
850
|
});
|
|
851
|
+
return containerImageUploadSchema.parse(raw);
|
|
919
852
|
}
|
|
920
853
|
/** Every part is uploaded: complete the object and mark the image ready. */
|
|
921
|
-
finalizeContainerImage(args) {
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
context: { verb: "push image" },
|
|
928
|
-
});
|
|
929
|
-
return z.object({ image: containerImageSchema }).passthrough().parse(raw).image;
|
|
854
|
+
async finalizeContainerImage(args) {
|
|
855
|
+
const raw = await this.request({
|
|
856
|
+
method: "POST",
|
|
857
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}/finalize`,
|
|
858
|
+
body: { teamId: args.teamId, uploadId: args.uploadId, parts: args.parts },
|
|
859
|
+
context: { verb: "push image" },
|
|
930
860
|
});
|
|
861
|
+
return z.object({ image: containerImageSchema }).passthrough().parse(raw).image;
|
|
931
862
|
}
|
|
932
863
|
/** Remove one image and its tarball; 404 when there is none by that name. */
|
|
933
|
-
deleteContainerImage(args) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
864
|
+
async deleteContainerImage(args) {
|
|
865
|
+
await this.request({
|
|
866
|
+
method: "DELETE",
|
|
867
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
868
|
+
context: { verb: "remove image" },
|
|
869
|
+
});
|
|
870
|
+
}
|
|
871
|
+
async request(args) {
|
|
872
|
+
const timeout = AbortSignal.timeout(60_000);
|
|
873
|
+
let response;
|
|
874
|
+
try {
|
|
875
|
+
response = await this.fetchImpl(`${this.backendUrl}${args.path}`, {
|
|
876
|
+
method: args.method,
|
|
877
|
+
headers: {
|
|
878
|
+
accept: "application/json",
|
|
879
|
+
authorization: `Bearer ${this.apiKey}`,
|
|
880
|
+
// The backend refuses deploys from a CLI below its v2 floor.
|
|
881
|
+
"x-agent-sdk-cli-version": packageVersion(),
|
|
882
|
+
...(args.body === undefined ? {} : { "content-type": "application/json" }),
|
|
883
|
+
},
|
|
884
|
+
...(args.body === undefined ? {} : { body: JSON.stringify(args.body) }),
|
|
885
|
+
signal: args.signal === undefined ? timeout : AbortSignal.any([args.signal, timeout]),
|
|
939
886
|
});
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
throw mapErrorResponse(response, text, args.context);
|
|
955
|
-
}
|
|
956
|
-
try {
|
|
957
|
-
return JSON.parse(text);
|
|
958
|
-
}
|
|
959
|
-
catch (_a) {
|
|
960
|
-
throw new DeployApiError(`The Cursor backend returned a non-JSON response to ${args.context.verb}.`, response.status);
|
|
961
|
-
}
|
|
962
|
-
});
|
|
887
|
+
}
|
|
888
|
+
catch (error) {
|
|
889
|
+
throw new DeployApiError(`Could not reach the Cursor backend at ${this.backendUrl}: ${error instanceof Error ? error.message : String(error)}`, 0);
|
|
890
|
+
}
|
|
891
|
+
const text = await response.text();
|
|
892
|
+
if (!response.ok) {
|
|
893
|
+
throw mapErrorResponse(response, text, args.context);
|
|
894
|
+
}
|
|
895
|
+
try {
|
|
896
|
+
return JSON.parse(text);
|
|
897
|
+
}
|
|
898
|
+
catch {
|
|
899
|
+
throw new DeployApiError(`The Cursor backend returned a non-JSON response to ${args.context.verb}.`, response.status);
|
|
900
|
+
}
|
|
963
901
|
}
|
|
964
902
|
}
|
|
965
903
|
const MCP_GATEWAY_PATH = /^\/internal\/agent-serve\/mcp\/(\d+)\/([^/]+)(?:\/tools)?\/?$/;
|
|
@@ -972,7 +910,7 @@ export function parseAgentServeMcpGatewayUrl(url) {
|
|
|
972
910
|
try {
|
|
973
911
|
parsed = new URL(url);
|
|
974
912
|
}
|
|
975
|
-
catch
|
|
913
|
+
catch {
|
|
976
914
|
return undefined;
|
|
977
915
|
}
|
|
978
916
|
const match = MCP_GATEWAY_PATH.exec(parsed.pathname);
|
|
@@ -999,22 +937,21 @@ function serverErrorText(bodyText) {
|
|
|
999
937
|
return parsed.error;
|
|
1000
938
|
}
|
|
1001
939
|
}
|
|
1002
|
-
catch
|
|
940
|
+
catch {
|
|
1003
941
|
// Non-JSON body — fall through.
|
|
1004
942
|
}
|
|
1005
943
|
return undefined;
|
|
1006
944
|
}
|
|
1007
945
|
function mapErrorResponse(response, bodyText, context) {
|
|
1008
|
-
var _a;
|
|
1009
946
|
const serverError = serverErrorText(bodyText);
|
|
1010
947
|
const slugPart = context.slug === undefined ? "" : ` "${context.slug}"`;
|
|
1011
948
|
switch (response.status) {
|
|
1012
949
|
case 400:
|
|
1013
|
-
return new DeployApiError(serverError
|
|
950
|
+
return new DeployApiError(serverError ?? `The ${context.verb} request was rejected as invalid.`, 400);
|
|
1014
951
|
case 401:
|
|
1015
952
|
return new DeployApiError("The Cursor API key was rejected. Run `agent-sdk login` again or update CURSOR_API_KEY.", 401);
|
|
1016
953
|
case 403:
|
|
1017
|
-
return new DeployApiError(`${serverError
|
|
954
|
+
return new DeployApiError(`${serverError ?? "Not authorized"} — deploying needs team membership and the cloud-agent entitlement on that team.`, 403);
|
|
1018
955
|
case 404: {
|
|
1019
956
|
// Fastify's route-not-found envelope means we hit the wrong host
|
|
1020
957
|
// (api2 vs api.cursor.com), not a missing deployment / closed gate.
|
|
@@ -1029,15 +966,16 @@ function mapErrorResponse(response, bodyText, context) {
|
|
|
1029
966
|
// The server's 409 body distinguishes real conflicts (CAS races,
|
|
1030
967
|
// "still deploying", architecture-v2 slugs on the v1 surface); keep
|
|
1031
968
|
// its message when present.
|
|
1032
|
-
return new DeployApiError(serverError
|
|
969
|
+
return new DeployApiError(serverError ??
|
|
970
|
+
`A concurrent deploy or stop is changing deployment${slugPart}; retry in a moment.`, 409);
|
|
1033
971
|
case 429: {
|
|
1034
972
|
const retryAfterHeader = response.headers.get("retry-after");
|
|
1035
973
|
const retryAfterSeconds = retryAfterHeader !== null && /^\d+$/.test(retryAfterHeader)
|
|
1036
974
|
? Number(retryAfterHeader)
|
|
1037
975
|
: undefined;
|
|
1038
|
-
return new DeployApiError(`${serverError
|
|
976
|
+
return new DeployApiError(`${serverError ?? "Rate limited"}${retryAfterSeconds === undefined ? "" : ` — retry in ${retryAfterSeconds}s`}`, 429, retryAfterSeconds);
|
|
1039
977
|
}
|
|
1040
978
|
default:
|
|
1041
|
-
return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${
|
|
979
|
+
return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${serverError ?? bodyText.slice(0, 300) ?? "(empty body)"}`, response.status);
|
|
1042
980
|
}
|
|
1043
981
|
}
|