@cursor/bdk 0.2.8 → 0.2.10
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.d.ts +1 -0
- package/dist/bin/agent-serve.d.ts.map +1 -1
- package/dist/bin/agent-serve.js +820 -807
- 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.oyjtOr3W.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.D0P6J_UJ.js → VPLocalSearchBox.BrbO5mEe.js} +1 -1
- package/dist/docs/assets/chunks/{arc.B0LY1J1h.js → arc.BOG1yms8.js} +1 -1
- package/dist/docs/assets/chunks/{architectureDiagram-Q4EWVU46.dPduLUxY.js → architectureDiagram-Q4EWVU46.C0hsMZnZ.js} +1 -1
- package/dist/docs/assets/chunks/{baseUniq.B_Ohm21h.js → baseUniq.H044KjKs.js} +1 -1
- package/dist/docs/assets/chunks/{blockDiagram-DXYQGD6D.B4zcanaJ.js → blockDiagram-DXYQGD6D.BsRW6GoB.js} +1 -1
- package/dist/docs/assets/chunks/{c4Diagram-AHTNJAMY.D9Iw21nx.js → c4Diagram-AHTNJAMY.B9HV5PFR.js} +1 -1
- package/dist/docs/assets/chunks/channel.CBwrU9rP.js +1 -0
- package/dist/docs/assets/chunks/{chunk-4BX2VUAB.DDVwRShI.js → chunk-4BX2VUAB.CPoT_ajl.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-4TB4RGXK.DsYcdn1i.js → chunk-4TB4RGXK.DZBwWuCL.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-55IACEB6.BzzQvcYp.js → chunk-55IACEB6.CZ3yTiyq.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-EDXVE4YY.BMiXZ7FX.js → chunk-EDXVE4YY.6DfvHSd8.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-FMBD7UC4.D_mBcLoc.js → chunk-FMBD7UC4.CpBj8HfK.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-OYMX7WX6.CMVjWVMx.js → chunk-OYMX7WX6.BdKo8YqS.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-QZHKN3VN.BG-FrPv9.js → chunk-QZHKN3VN.BnXNyxJx.js} +1 -1
- package/dist/docs/assets/chunks/{chunk-YZCP3GAM.CkFE1ap3.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.BVNnCTvY.js → cose-bilkent-S5V4N54A.1SP8al9c.js} +1 -1
- package/dist/docs/assets/chunks/{dagre-KV5264BT.CDN5PR9l.js → dagre-KV5264BT.DS1L6hJt.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-5BDNPKRD.DQRUlT-i.js → diagram-5BDNPKRD.ChsausbG.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-G4DWMVQ6.CoeblYQT.js → diagram-G4DWMVQ6.3XsptNWj.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-MMDJMWI5.DW3ymjl0.js → diagram-MMDJMWI5.DPA9Dk_P.js} +1 -1
- package/dist/docs/assets/chunks/{diagram-TYMM5635.BP0uN4Jw.js → diagram-TYMM5635.BVswXWrB.js} +1 -1
- package/dist/docs/assets/chunks/{erDiagram-SMLLAGMA.DVFUWEn4.js → erDiagram-SMLLAGMA.BSak5OSP.js} +1 -1
- package/dist/docs/assets/chunks/{flowDiagram-DWJPFMVM.HU-eHspv.js → flowDiagram-DWJPFMVM.CQgN4TTz.js} +1 -1
- package/dist/docs/assets/chunks/{ganttDiagram-T4ZO3ILL.DHNhXijY.js → ganttDiagram-T4ZO3ILL.GrT0kA4a.js} +1 -1
- package/dist/docs/assets/chunks/{gitGraphDiagram-UUTBAWPF.DkISXcO3.js → gitGraphDiagram-UUTBAWPF.CdS7Ucll.js} +1 -1
- package/dist/docs/assets/chunks/{graph.CCV0fuRR.js → graph.BVqKRmRo.js} +1 -1
- package/dist/docs/assets/chunks/{infoDiagram-42DDH7IO.bgILzOoc.js → infoDiagram-42DDH7IO.C3C9FRto.js} +1 -1
- package/dist/docs/assets/chunks/{ishikawaDiagram-UXIWVN3A.CuryXC0F.js → ishikawaDiagram-UXIWVN3A.2FuAh_Zj.js} +1 -1
- package/dist/docs/assets/chunks/{journeyDiagram-VCZTEJTY.BL1Pr-wu.js → journeyDiagram-VCZTEJTY.CaHMfK4b.js} +1 -1
- package/dist/docs/assets/chunks/{kanban-definition-6JOO6SKY.BbGjvk4l.js → kanban-definition-6JOO6SKY.CjhIUwcA.js} +1 -1
- package/dist/docs/assets/chunks/{layout.C4PfdldS.js → layout.CGU3gfSf.js} +1 -1
- package/dist/docs/assets/chunks/{linear.C3xD1T6X.js → linear.DaihpW_n.js} +1 -1
- package/dist/docs/assets/chunks/{min.CzgRAQ9c.js → min.BS-j8kHQ.js} +1 -1
- package/dist/docs/assets/chunks/{mindmap-definition-QFDTVHPH.CA9rSWum.js → mindmap-definition-QFDTVHPH.BVJ1Bbnk.js} +1 -1
- package/dist/docs/assets/chunks/{pieDiagram-DEJITSTG.B8MprgJu.js → pieDiagram-DEJITSTG.Cz1WIv9r.js} +1 -1
- package/dist/docs/assets/chunks/{quadrantDiagram-34T5L4WZ.DndDwbKT.js → quadrantDiagram-34T5L4WZ.DKLFxcjy.js} +1 -1
- package/dist/docs/assets/chunks/{requirementDiagram-MS252O5E.Zhfgwlnn.js → requirementDiagram-MS252O5E.BHegiK7x.js} +1 -1
- package/dist/docs/assets/chunks/{sankeyDiagram-XADWPNL6.B6RRm6N5.js → sankeyDiagram-XADWPNL6.DYkY6yPc.js} +1 -1
- package/dist/docs/assets/chunks/{sequenceDiagram-FGHM5R23.Bfmz-1PN.js → sequenceDiagram-FGHM5R23.DYQ1QUrI.js} +1 -1
- package/dist/docs/assets/chunks/{stateDiagram-FHFEXIEX.gbrdNqgj.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.gpWjytMh.js → theme.DaplWQhQ.js} +2 -2
- package/dist/docs/assets/chunks/{timeline-definition-GMOUNBTQ.Bl1l7M1f.js → timeline-definition-GMOUNBTQ.BwFA8hiX.js} +1 -1
- package/dist/docs/assets/chunks/{vennDiagram-DHZGUBPP.Dfle4U0d.js → vennDiagram-DHZGUBPP.CZ60W1C_.js} +1 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.iXazD3Z7.js +162 -0
- package/dist/docs/assets/chunks/{wardleyDiagram-NUSXRM2D.CM_4lmvZ.js → wardleyDiagram-NUSXRM2D.B69D2r8-.js} +1 -1
- package/dist/docs/assets/chunks/{xychartDiagram-5P7HB3ND.CHT5X28R.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/{reference_skills.md.ClkMoQsV.js → reference_skills.md.C0guGcH0.js} +3 -3
- 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 +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/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.d.ts +0 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/lib/backend.js +101 -130
- 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.d.ts.map +1 -1
- package/dist/extensions/cursor-cloud-agents/tools/list.js +9 -20
- 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.d.ts +18 -0
- package/dist/internal/cli-migrate.d.ts.map +1 -0
- package/dist/internal/cli-migrate.js +136 -0
- 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.d.ts +1 -0
- package/dist/internal/cursor/credentials.d.ts.map +1 -1
- package/dist/internal/cursor/credentials.js +130 -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.js +410 -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.d.ts.map +1 -1
- package/dist/internal/install-cursor-skills.js +238 -274
- 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-DXm_VXAQ.css +1 -0
- package/dist/playground/assets/{index-MijLHTbB.js → index-JekUQERK.js} +45 -45
- 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 +264 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.C25zYVuc.js +0 -1
- package/dist/docs/assets/chunks/channel.CRUyWDV-.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-6PBFFD2Q.CG_UObcQ.js +0 -1
- package/dist/docs/assets/chunks/classDiagram-v2-HSJHXN6E.CG_UObcQ.js +0 -1
- package/dist/docs/assets/chunks/clone.NYSZ9qZN.js +0 -1
- package/dist/docs/assets/chunks/stateDiagram-v2-QKLJ7IA2.DOOmulfQ.js +0 -1
- package/dist/docs/assets/chunks/wardley-RL74JXVD.BJrCW6xc.js +0 -162
- 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-DPKLl4C_.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
- /package/dist/docs/assets/{reference_skills.md.ClkMoQsV.lean.js → reference_skills.md.C0guGcH0.lean.js} +0 -0
|
@@ -4,26 +4,6 @@
|
|
|
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";
|
|
28
8
|
import { MAX_SECRET_VALUE_BYTES, MAX_SECRETS, validateEgressDomain, validateSettableSecretName, } from "./hosting.js";
|
|
29
9
|
export const TERMINAL_DEPLOY_STATUSES = new Set([
|
|
@@ -380,60 +360,65 @@ const automationExportSchema = z
|
|
|
380
360
|
.passthrough();
|
|
381
361
|
export class AgentServeDeployClient {
|
|
382
362
|
constructor(options) {
|
|
383
|
-
var _a;
|
|
384
363
|
this.backendUrl = options.backendUrl.endsWith("/")
|
|
385
364
|
? options.backendUrl.slice(0, -1)
|
|
386
365
|
: options.backendUrl;
|
|
387
366
|
this.apiKey = options.apiKey;
|
|
388
|
-
this.fetchImpl =
|
|
367
|
+
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
389
368
|
}
|
|
390
369
|
/** 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
|
-
}
|
|
370
|
+
async deploy(args) {
|
|
371
|
+
const slugError = validateDeploymentSlug(args.slug);
|
|
372
|
+
if (slugError !== undefined) {
|
|
373
|
+
throw new DeployApiError(slugError, 400);
|
|
374
|
+
}
|
|
375
|
+
for (const domain of args.source.egressAllowedDomains ?? []) {
|
|
376
|
+
const domainError = validateEgressDomain(domain);
|
|
377
|
+
if (domainError !== undefined) {
|
|
378
|
+
throw new DeployApiError(domainError, 400);
|
|
403
379
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
380
|
+
}
|
|
381
|
+
// Only the git-ref member exists today; a future artifact member would
|
|
382
|
+
// upload the build first and post a different body from this branch.
|
|
383
|
+
const body = {
|
|
384
|
+
teamId: args.teamId,
|
|
385
|
+
slug: args.slug,
|
|
386
|
+
gitRepoUrl: args.source.gitRepoUrl,
|
|
387
|
+
...(args.source.gitRef === undefined ? {} : { gitRef: args.source.gitRef }),
|
|
388
|
+
...(args.source.agentPath === undefined ? {} : { agentPath: args.source.agentPath }),
|
|
389
|
+
...(args.source.cursorEventRepos === undefined
|
|
407
390
|
? {}
|
|
408
|
-
: { cursorEventRepos: args.source.cursorEventRepos })
|
|
391
|
+
: { cursorEventRepos: args.source.cursorEventRepos }),
|
|
392
|
+
...(args.source.egressAllowedDomains === undefined
|
|
409
393
|
? {}
|
|
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();
|
|
394
|
+
: { egressAllowedDomains: args.source.egressAllowedDomains }),
|
|
395
|
+
// JSON.stringify drops undefined keys.
|
|
396
|
+
publicRoutePaths: args.source.publicRoutePaths,
|
|
397
|
+
template: args.template,
|
|
398
|
+
};
|
|
399
|
+
const send = () => this.request({
|
|
400
|
+
method: "POST",
|
|
401
|
+
path: "/internal/agent-serve/deployments",
|
|
402
|
+
body,
|
|
403
|
+
context: { verb: "deploy", slug: args.slug },
|
|
404
|
+
});
|
|
405
|
+
let raw;
|
|
406
|
+
try {
|
|
407
|
+
raw = await send();
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
const unsupportedTemplate = args.template !== undefined &&
|
|
411
|
+
error instanceof DeployApiError &&
|
|
412
|
+
error.status === 400 &&
|
|
413
|
+
error.message.toLowerCase().includes("template") &&
|
|
414
|
+
/unrecognized|unknown/i.test(error.message);
|
|
415
|
+
if (!unsupportedTemplate) {
|
|
416
|
+
throw error;
|
|
434
417
|
}
|
|
435
|
-
|
|
436
|
-
|
|
418
|
+
delete body.template;
|
|
419
|
+
raw = await send();
|
|
420
|
+
}
|
|
421
|
+
return deployAcceptedSchema.parse(raw);
|
|
437
422
|
}
|
|
438
423
|
/**
|
|
439
424
|
* Create or redeploy an architecture-v2 deployment. Poll
|
|
@@ -441,402 +426,355 @@ export class AgentServeDeployClient {
|
|
|
441
426
|
* one application with several release components (one per agent
|
|
442
427
|
* directory); it is mutually exclusive with `agentPath`.
|
|
443
428
|
*/
|
|
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
|
-
}
|
|
429
|
+
async deployAgentkit(args) {
|
|
430
|
+
const slugError = validateDeploymentSlug(args.slug);
|
|
431
|
+
if (slugError !== undefined) {
|
|
432
|
+
throw new DeployApiError(slugError, 400);
|
|
433
|
+
}
|
|
434
|
+
for (const component of args.components ?? []) {
|
|
435
|
+
const keyError = validateDeploymentSlug(component.componentKey);
|
|
436
|
+
if (keyError !== undefined) {
|
|
437
|
+
throw new DeployApiError(`Invalid component key ${JSON.stringify(component.componentKey)}: use lowercase letters, digits, '-' or '_' (max 64 chars)`, 400);
|
|
456
438
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
});
|
|
439
|
+
}
|
|
440
|
+
const raw = await this.request({
|
|
441
|
+
method: "POST",
|
|
442
|
+
path: "/internal/agentsdk/deployments",
|
|
443
|
+
body: {
|
|
444
|
+
teamId: args.teamId,
|
|
445
|
+
slug: args.slug,
|
|
446
|
+
gitRepoUrl: args.gitRepoUrl,
|
|
447
|
+
gitRef: args.gitRef,
|
|
448
|
+
agentPath: args.agentPath,
|
|
449
|
+
components: args.components,
|
|
450
|
+
repositories: args.repositories !== undefined && args.repositories.length > 0
|
|
451
|
+
? args.repositories
|
|
452
|
+
: undefined,
|
|
453
|
+
...(args.multiTenant === true ? { multiTenant: true } : {}),
|
|
454
|
+
persistent: args.persistent,
|
|
455
|
+
...(args.image === undefined ? {} : { image: args.image }),
|
|
456
|
+
},
|
|
457
|
+
context: { verb: "deploy", slug: args.slug },
|
|
458
|
+
});
|
|
459
|
+
return agentkitDeployAcceptedSchema.parse(raw);
|
|
460
|
+
}
|
|
461
|
+
async getAgentkitDeploy(args) {
|
|
462
|
+
const raw = await this.request({
|
|
463
|
+
method: "GET",
|
|
464
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
465
|
+
context: { verb: "get deployment", slug: args.slug },
|
|
466
|
+
});
|
|
467
|
+
return agentkitDeployStatusSchema.parse(raw);
|
|
477
468
|
}
|
|
478
469
|
/**
|
|
479
470
|
* Stop an architecture-v2 deployment. Poll {@link getAgentkitDeploy} until
|
|
480
471
|
* `stopped`.
|
|
481
472
|
*/
|
|
482
|
-
stopAgentkit(args) {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
context: { verb: "stop", slug: args.slug },
|
|
489
|
-
});
|
|
490
|
-
return agentkitStopAcceptedSchema.parse(raw);
|
|
473
|
+
async stopAgentkit(args) {
|
|
474
|
+
const raw = await this.request({
|
|
475
|
+
method: "POST",
|
|
476
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}` +
|
|
477
|
+
(args.cancelRuns === true ? "&cancelRuns=true" : ""),
|
|
478
|
+
context: { verb: "stop", slug: args.slug },
|
|
491
479
|
});
|
|
480
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
492
481
|
}
|
|
493
482
|
/** 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({
|
|
483
|
+
async startAgentkit(args) {
|
|
484
|
+
const encoded = encodeURIComponent(args.slug);
|
|
485
|
+
try {
|
|
486
|
+
const raw = await this.request({
|
|
523
487
|
method: "POST",
|
|
524
|
-
path: `/internal/agentsdk/deployments/${
|
|
525
|
-
context: {
|
|
526
|
-
verb: args.suspended ? "globally stop" : "globally resume",
|
|
527
|
-
slug: args.slug,
|
|
528
|
-
},
|
|
488
|
+
path: `/internal/agentsdk/deployments/${encoded}/start?teamId=${args.teamId}`,
|
|
489
|
+
context: { verb: "start", slug: args.slug },
|
|
529
490
|
});
|
|
530
491
|
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
492
|
+
}
|
|
493
|
+
catch (error) {
|
|
494
|
+
if (!(error instanceof DeployApiError) || error.status !== 404) {
|
|
495
|
+
throw error;
|
|
496
|
+
}
|
|
497
|
+
const raw = await this.request({
|
|
536
498
|
method: "POST",
|
|
537
|
-
path: `/internal/agentsdk/deployments/${
|
|
538
|
-
context: { verb: "
|
|
499
|
+
path: `/internal/agentsdk/deployments/${encoded}/global-resume?teamId=${args.teamId}`,
|
|
500
|
+
context: { verb: "start", slug: args.slug },
|
|
539
501
|
});
|
|
540
|
-
return
|
|
541
|
-
}
|
|
502
|
+
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
503
|
+
}
|
|
542
504
|
}
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
.
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
505
|
+
async setAgentkitGlobalSuspension(args) {
|
|
506
|
+
const action = args.suspended ? "global-stop" : "global-resume";
|
|
507
|
+
const cancelQuery = args.suspended === true && args.cancelRuns === true ? "&cancelRuns=true" : "";
|
|
508
|
+
const raw = await this.request({
|
|
509
|
+
method: "POST",
|
|
510
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${action}?teamId=${args.teamId}${cancelQuery}`,
|
|
511
|
+
context: {
|
|
512
|
+
verb: args.suspended ? "globally stop" : "globally resume",
|
|
513
|
+
slug: args.slug,
|
|
514
|
+
},
|
|
515
|
+
});
|
|
516
|
+
return agentkitGlobalSuspensionAcceptedSchema.parse(raw);
|
|
517
|
+
}
|
|
518
|
+
async killAgentkit(args) {
|
|
519
|
+
const raw = await this.request({
|
|
520
|
+
method: "POST",
|
|
521
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/kill?teamId=${args.teamId}`,
|
|
522
|
+
context: { verb: "kill", slug: args.slug },
|
|
523
|
+
});
|
|
524
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
525
|
+
}
|
|
526
|
+
async unlockAgentkitDeploys(args) {
|
|
527
|
+
const raw = await this.request({
|
|
528
|
+
method: "POST",
|
|
529
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/unlock-deploys?teamId=${args.teamId}`,
|
|
530
|
+
context: { verb: "unlock deploys", slug: args.slug },
|
|
531
|
+
});
|
|
532
|
+
return z
|
|
533
|
+
.object({
|
|
534
|
+
applicationId: z.string().min(1),
|
|
535
|
+
deployLocked: z.literal(false),
|
|
536
|
+
})
|
|
537
|
+
.parse(raw);
|
|
557
538
|
}
|
|
558
|
-
cancelAgentkitRuns(args) {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
context: { verb: "cancel runs", slug: args.slug },
|
|
564
|
-
});
|
|
565
|
-
return agentkitCancelRunsResultSchema.parse(raw);
|
|
539
|
+
async cancelAgentkitRuns(args) {
|
|
540
|
+
const raw = await this.request({
|
|
541
|
+
method: "POST",
|
|
542
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/cancel-runs?teamId=${args.teamId}`,
|
|
543
|
+
context: { verb: "cancel runs", slug: args.slug },
|
|
566
544
|
});
|
|
545
|
+
return agentkitCancelRunsResultSchema.parse(raw);
|
|
567
546
|
}
|
|
568
547
|
/** 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
|
-
});
|
|
548
|
+
async setAgentkitEventRepositories(args) {
|
|
549
|
+
const raw = await this.request({
|
|
550
|
+
method: "PUT",
|
|
551
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/event-repositories?teamId=${args.teamId}`,
|
|
552
|
+
body: { repositories: args.repositories },
|
|
553
|
+
context: { verb: "set event repositories", slug: args.slug },
|
|
554
|
+
});
|
|
555
|
+
return agentkitEventRepositoriesSchema.parse(raw).repositories;
|
|
556
|
+
}
|
|
557
|
+
async upgradeAgentkitInstall(args) {
|
|
558
|
+
return this.pinAgentkitInstall("upgrade", args);
|
|
559
|
+
}
|
|
560
|
+
async rollbackAgentkitInstall(args) {
|
|
561
|
+
return this.pinAgentkitInstall("rollback", args);
|
|
562
|
+
}
|
|
563
|
+
async pinAgentkitInstall(direction, args) {
|
|
564
|
+
const raw = await this.request({
|
|
565
|
+
method: direction === "upgrade" ? "PUT" : "POST",
|
|
566
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/${direction === "upgrade" ? "release" : "rollback"}?teamId=${args.teamId}`,
|
|
567
|
+
body: {
|
|
568
|
+
...(args.releaseId === undefined ? {} : { releaseId: args.releaseId }),
|
|
569
|
+
...(args.version === undefined ? {} : { version: args.version }),
|
|
570
|
+
},
|
|
571
|
+
context: {
|
|
572
|
+
verb: direction === "upgrade" ? "upgrade" : "roll back",
|
|
573
|
+
slug: args.slug,
|
|
574
|
+
},
|
|
575
|
+
});
|
|
576
|
+
return agentkitInstallReleaseSchema.parse(raw).releaseId;
|
|
603
577
|
}
|
|
604
578
|
/**
|
|
605
579
|
* Delete an architecture-v2 deployment. Poll {@link getAgentkitDeploy}
|
|
606
580
|
* until it is no longer found.
|
|
607
581
|
*/
|
|
608
|
-
deleteAgentkit(args) {
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
context: { verb: "delete", slug: args.slug },
|
|
614
|
-
});
|
|
615
|
-
return agentkitStopAcceptedSchema.parse(raw);
|
|
582
|
+
async deleteAgentkit(args) {
|
|
583
|
+
const raw = await this.request({
|
|
584
|
+
method: "DELETE",
|
|
585
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
586
|
+
context: { verb: "delete", slug: args.slug },
|
|
616
587
|
});
|
|
588
|
+
return agentkitStopAcceptedSchema.parse(raw);
|
|
617
589
|
}
|
|
618
590
|
/**
|
|
619
591
|
* Start or, with `sessionId`, resume a hosted architecture-v2 session.
|
|
620
592
|
*/
|
|
621
|
-
startSession(args) {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
return agentkitStartSessionAcceptedSchema.parse(raw);
|
|
637
|
-
});
|
|
593
|
+
async startSession(args) {
|
|
594
|
+
const raw = await this.request({
|
|
595
|
+
method: "POST",
|
|
596
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions`,
|
|
597
|
+
body: {
|
|
598
|
+
teamId: args.teamId,
|
|
599
|
+
message: args.message,
|
|
600
|
+
sessionId: args.sessionId,
|
|
601
|
+
dryRun: args.dryRun === true ? true : undefined,
|
|
602
|
+
asOf: args.asOf,
|
|
603
|
+
componentKey: args.componentKey,
|
|
604
|
+
},
|
|
605
|
+
context: { verb: "start session", slug: args.slug },
|
|
606
|
+
});
|
|
607
|
+
return agentkitStartSessionAcceptedSchema.parse(raw);
|
|
638
608
|
}
|
|
639
609
|
/** 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);
|
|
610
|
+
async getAgentkitSessionRuns(args) {
|
|
611
|
+
const raw = await this.request({
|
|
612
|
+
method: "GET",
|
|
613
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/sessions/${encodeURIComponent(args.sessionId)}/runs?teamId=${args.teamId}`,
|
|
614
|
+
context: { verb: "get session runs", slug: args.slug },
|
|
648
615
|
});
|
|
616
|
+
return agentkitSessionRunsSchema.parse(raw);
|
|
649
617
|
}
|
|
650
618
|
/** 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);
|
|
619
|
+
async getAgentkitSessionEvents(args) {
|
|
620
|
+
const raw = await this.request({
|
|
621
|
+
method: "GET",
|
|
622
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}` +
|
|
623
|
+
`/sessions/${encodeURIComponent(args.sessionId)}/events` +
|
|
624
|
+
`?teamId=${args.teamId}&afterEventIndex=${args.afterEventIndex}`,
|
|
625
|
+
context: { verb: "get session events", slug: args.slug },
|
|
661
626
|
});
|
|
627
|
+
return agentkitSessionEventPollSchema.parse(raw);
|
|
662
628
|
}
|
|
663
629
|
/**
|
|
664
630
|
* Recent output of the deployment's most recent sessions, oldest first, or
|
|
665
631
|
* of one session when `sessionId` is set.
|
|
666
632
|
*/
|
|
667
|
-
getAgentkitDeploymentLogs(args) {
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
633
|
+
async getAgentkitDeploymentLogs(args) {
|
|
634
|
+
const query = new URLSearchParams({ teamId: String(args.teamId) });
|
|
635
|
+
if (args.sessionId !== undefined) {
|
|
636
|
+
query.set("sessionId", args.sessionId);
|
|
637
|
+
}
|
|
638
|
+
const raw = await this.request({
|
|
639
|
+
method: "GET",
|
|
640
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/logs?${query}`,
|
|
641
|
+
context: { verb: "get logs", slug: args.slug },
|
|
642
|
+
signal: args.signal,
|
|
643
|
+
});
|
|
644
|
+
return agentkitDeploymentLogsSchema.parse(raw).sessions;
|
|
645
|
+
}
|
|
646
|
+
async listDeployments(args) {
|
|
647
|
+
const raw = await this.request({
|
|
648
|
+
method: "GET",
|
|
649
|
+
path: `/internal/agent-serve/deployments?teamId=${args.teamId}`,
|
|
650
|
+
context: { verb: "list deployments" },
|
|
651
|
+
});
|
|
652
|
+
return listResponseSchema.parse(raw).deployments;
|
|
653
|
+
}
|
|
654
|
+
async listAgentkitDeployments(args) {
|
|
655
|
+
const deployments = [];
|
|
656
|
+
let pageToken = null;
|
|
657
|
+
do {
|
|
658
|
+
const qs = `teamId=${args.teamId}&pageSize=100` +
|
|
659
|
+
(pageToken === null ? "" : `&pageToken=${encodeURIComponent(pageToken)}`);
|
|
660
|
+
const page = agentkitDeploymentListResponseSchema.parse(await this.request({
|
|
685
661
|
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
|
-
});
|
|
662
|
+
path: `/internal/agentsdk/deployments?${qs}`,
|
|
663
|
+
context: { verb: "list architecture v2 deployments" },
|
|
664
|
+
}));
|
|
665
|
+
deployments.push(...page.deployments);
|
|
666
|
+
pageToken = page.nextPageToken;
|
|
667
|
+
} while (pageToken !== null);
|
|
668
|
+
return deployments;
|
|
669
|
+
}
|
|
670
|
+
async getDeployment(args) {
|
|
671
|
+
const raw = await this.request({
|
|
672
|
+
method: "GET",
|
|
673
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
674
|
+
context: { verb: "get deployment", slug: args.slug },
|
|
675
|
+
});
|
|
676
|
+
return deploymentDetailSchema.parse(raw);
|
|
677
|
+
}
|
|
678
|
+
async stopDeployment(args) {
|
|
679
|
+
const raw = await this.request({
|
|
680
|
+
method: "POST",
|
|
681
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/stop?teamId=${args.teamId}`,
|
|
682
|
+
context: { verb: "stop", slug: args.slug },
|
|
683
|
+
});
|
|
684
|
+
return stopAcceptedSchema.parse(raw);
|
|
685
|
+
}
|
|
686
|
+
async deleteDeployment(args) {
|
|
687
|
+
const raw = await this.request({
|
|
688
|
+
method: "DELETE",
|
|
689
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}?teamId=${args.teamId}`,
|
|
690
|
+
context: { verb: "delete", slug: args.slug },
|
|
691
|
+
});
|
|
692
|
+
return stopAcceptedSchema.parse(raw);
|
|
739
693
|
}
|
|
740
694
|
/** 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;
|
|
695
|
+
async rotateAliasToken(args) {
|
|
696
|
+
const raw = await this.request({
|
|
697
|
+
method: "POST",
|
|
698
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
|
|
699
|
+
context: { verb: "rotate alias token", slug: args.slug },
|
|
749
700
|
});
|
|
701
|
+
return rotateResponseSchema.parse(raw).aliasToken;
|
|
750
702
|
}
|
|
751
703
|
/** 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;
|
|
704
|
+
async rotateAgentsdkAliasToken(args) {
|
|
705
|
+
const raw = await this.request({
|
|
706
|
+
method: "POST",
|
|
707
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/rotate-alias-token?teamId=${args.teamId}`,
|
|
708
|
+
context: { verb: "rotate alias token", slug: args.slug },
|
|
760
709
|
});
|
|
710
|
+
return rotateResponseSchema.parse(raw).aliasToken;
|
|
761
711
|
}
|
|
762
712
|
/**
|
|
763
713
|
* Upsert secrets by name (unlisted names stay untouched). Returns the
|
|
764
714
|
* post-write union of secret names, sorted. Validates names and value
|
|
765
715
|
* sizes client-side with the backend's grammar before any network call.
|
|
766
716
|
*/
|
|
767
|
-
setSecrets(args) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
context: { verb: "set secrets", slug: args.slug },
|
|
775
|
-
});
|
|
776
|
-
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
717
|
+
async setSecrets(args) {
|
|
718
|
+
this.validateSecrets(args.secrets);
|
|
719
|
+
const raw = await this.request({
|
|
720
|
+
method: "PUT",
|
|
721
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
722
|
+
body: { teamId: args.teamId, secrets: args.secrets },
|
|
723
|
+
context: { verb: "set secrets", slug: args.slug },
|
|
777
724
|
});
|
|
725
|
+
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
778
726
|
}
|
|
779
727
|
/** 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;
|
|
728
|
+
async setAgentkitSecrets(args) {
|
|
729
|
+
this.validateSecrets(args.secrets);
|
|
730
|
+
const raw = await this.request({
|
|
731
|
+
method: "PUT",
|
|
732
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets`,
|
|
733
|
+
body: { teamId: args.teamId, secrets: args.secrets },
|
|
734
|
+
context: { verb: "set secrets", slug: args.slug },
|
|
790
735
|
});
|
|
736
|
+
return setSecretsResponseSchema.parse(raw).secretNames;
|
|
791
737
|
}
|
|
792
738
|
/** 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;
|
|
739
|
+
async listSecrets(args) {
|
|
740
|
+
const raw = await this.request({
|
|
741
|
+
method: "GET",
|
|
742
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
|
|
743
|
+
context: { verb: "list secrets", slug: args.slug },
|
|
801
744
|
});
|
|
745
|
+
return listSecretsResponseSchema.parse(raw).secrets;
|
|
802
746
|
}
|
|
803
747
|
/** 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;
|
|
748
|
+
async listAgentkitSecrets(args) {
|
|
749
|
+
const raw = await this.request({
|
|
750
|
+
method: "GET",
|
|
751
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets?teamId=${args.teamId}`,
|
|
752
|
+
context: { verb: "list secrets", slug: args.slug },
|
|
812
753
|
});
|
|
754
|
+
return listSecretsResponseSchema.parse(raw).secrets;
|
|
813
755
|
}
|
|
814
756
|
/** 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
|
-
});
|
|
757
|
+
async deleteSecret(args) {
|
|
758
|
+
const nameError = validateSettableSecretName(args.name);
|
|
759
|
+
if (nameError !== undefined) {
|
|
760
|
+
throw new DeployApiError(nameError, 400);
|
|
761
|
+
}
|
|
762
|
+
await this.request({
|
|
763
|
+
method: "DELETE",
|
|
764
|
+
path: `/internal/agent-serve/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
765
|
+
context: { verb: "unset secret", slug: args.slug },
|
|
826
766
|
});
|
|
827
767
|
}
|
|
828
768
|
/** 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
|
-
});
|
|
769
|
+
async deleteAgentkitSecret(args) {
|
|
770
|
+
const nameError = validateSettableSecretName(args.name);
|
|
771
|
+
if (nameError !== undefined) {
|
|
772
|
+
throw new DeployApiError(nameError, 400);
|
|
773
|
+
}
|
|
774
|
+
await this.request({
|
|
775
|
+
method: "DELETE",
|
|
776
|
+
path: `/internal/agentsdk/deployments/${encodeURIComponent(args.slug)}/secrets/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
777
|
+
context: { verb: "unset secret", slug: args.slug },
|
|
840
778
|
});
|
|
841
779
|
}
|
|
842
780
|
validateSecrets(secrets) {
|
|
@@ -859,26 +797,24 @@ export class AgentServeDeployClient {
|
|
|
859
797
|
* indistinguishable 404s on the backend, so they map to one message here
|
|
860
798
|
* (the wrong-host 404 hint from {@link mapErrorResponse} passes through).
|
|
861
799
|
*/
|
|
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;
|
|
800
|
+
async exportAutomation(args) {
|
|
801
|
+
let raw;
|
|
802
|
+
try {
|
|
803
|
+
raw = await this.request({
|
|
804
|
+
method: "GET",
|
|
805
|
+
path: `/internal/agent-serve/automations/${encodeURIComponent(args.uuid)}/export`,
|
|
806
|
+
context: { verb: "export automation" },
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
catch (error) {
|
|
810
|
+
if (error instanceof DeployApiError &&
|
|
811
|
+
error.status === 404 &&
|
|
812
|
+
!error.message.includes("api.cursor.com")) {
|
|
813
|
+
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
814
|
}
|
|
880
|
-
|
|
881
|
-
}
|
|
815
|
+
throw error;
|
|
816
|
+
}
|
|
817
|
+
return automationExportSchema.parse(raw);
|
|
882
818
|
}
|
|
883
819
|
/** Full URL of the stable engine alias for a deployment. */
|
|
884
820
|
aliasUrl(engineAlias) {
|
|
@@ -894,72 +830,71 @@ export class AgentServeDeployClient {
|
|
|
894
830
|
return `${this.backendUrl}/internal/agent-serve/mcp/${teamId}/${encodeURIComponent(slug)}`;
|
|
895
831
|
}
|
|
896
832
|
/** 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);
|
|
833
|
+
async listContainerImages(args) {
|
|
834
|
+
const raw = await this.request({
|
|
835
|
+
method: "GET",
|
|
836
|
+
path: `/internal/agentsdk/images?teamId=${args.teamId}`,
|
|
837
|
+
context: { verb: "list images" },
|
|
905
838
|
});
|
|
839
|
+
return listContainerImagesResponseSchema.parse(raw);
|
|
906
840
|
}
|
|
907
841
|
/** 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);
|
|
842
|
+
async beginContainerImageUpload(args) {
|
|
843
|
+
const { name, ...body } = args;
|
|
844
|
+
const raw = await this.request({
|
|
845
|
+
method: "POST",
|
|
846
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(name)}/begin`,
|
|
847
|
+
body,
|
|
848
|
+
context: { verb: "push image" },
|
|
918
849
|
});
|
|
850
|
+
return containerImageUploadSchema.parse(raw);
|
|
919
851
|
}
|
|
920
852
|
/** 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;
|
|
853
|
+
async finalizeContainerImage(args) {
|
|
854
|
+
const raw = await this.request({
|
|
855
|
+
method: "POST",
|
|
856
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}/finalize`,
|
|
857
|
+
body: { teamId: args.teamId, uploadId: args.uploadId, parts: args.parts },
|
|
858
|
+
context: { verb: "push image" },
|
|
930
859
|
});
|
|
860
|
+
return z.object({ image: containerImageSchema }).passthrough().parse(raw).image;
|
|
931
861
|
}
|
|
932
862
|
/** Remove one image and its tarball; 404 when there is none by that name. */
|
|
933
|
-
deleteContainerImage(args) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
863
|
+
async deleteContainerImage(args) {
|
|
864
|
+
await this.request({
|
|
865
|
+
method: "DELETE",
|
|
866
|
+
path: `/internal/agentsdk/images/${encodeURIComponent(args.name)}?teamId=${args.teamId}`,
|
|
867
|
+
context: { verb: "remove image" },
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
async request(args) {
|
|
871
|
+
const timeout = AbortSignal.timeout(60_000);
|
|
872
|
+
let response;
|
|
873
|
+
try {
|
|
874
|
+
response = await this.fetchImpl(`${this.backendUrl}${args.path}`, {
|
|
875
|
+
method: args.method,
|
|
876
|
+
headers: {
|
|
877
|
+
accept: "application/json",
|
|
878
|
+
authorization: `Bearer ${this.apiKey}`,
|
|
879
|
+
...(args.body === undefined ? {} : { "content-type": "application/json" }),
|
|
880
|
+
},
|
|
881
|
+
...(args.body === undefined ? {} : { body: JSON.stringify(args.body) }),
|
|
882
|
+
signal: args.signal === undefined ? timeout : AbortSignal.any([args.signal, timeout]),
|
|
939
883
|
});
|
|
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
|
-
});
|
|
884
|
+
}
|
|
885
|
+
catch (error) {
|
|
886
|
+
throw new DeployApiError(`Could not reach the Cursor backend at ${this.backendUrl}: ${error instanceof Error ? error.message : String(error)}`, 0);
|
|
887
|
+
}
|
|
888
|
+
const text = await response.text();
|
|
889
|
+
if (!response.ok) {
|
|
890
|
+
throw mapErrorResponse(response, text, args.context);
|
|
891
|
+
}
|
|
892
|
+
try {
|
|
893
|
+
return JSON.parse(text);
|
|
894
|
+
}
|
|
895
|
+
catch {
|
|
896
|
+
throw new DeployApiError(`The Cursor backend returned a non-JSON response to ${args.context.verb}.`, response.status);
|
|
897
|
+
}
|
|
963
898
|
}
|
|
964
899
|
}
|
|
965
900
|
const MCP_GATEWAY_PATH = /^\/internal\/agent-serve\/mcp\/(\d+)\/([^/]+)(?:\/tools)?\/?$/;
|
|
@@ -972,7 +907,7 @@ export function parseAgentServeMcpGatewayUrl(url) {
|
|
|
972
907
|
try {
|
|
973
908
|
parsed = new URL(url);
|
|
974
909
|
}
|
|
975
|
-
catch
|
|
910
|
+
catch {
|
|
976
911
|
return undefined;
|
|
977
912
|
}
|
|
978
913
|
const match = MCP_GATEWAY_PATH.exec(parsed.pathname);
|
|
@@ -999,22 +934,21 @@ function serverErrorText(bodyText) {
|
|
|
999
934
|
return parsed.error;
|
|
1000
935
|
}
|
|
1001
936
|
}
|
|
1002
|
-
catch
|
|
937
|
+
catch {
|
|
1003
938
|
// Non-JSON body — fall through.
|
|
1004
939
|
}
|
|
1005
940
|
return undefined;
|
|
1006
941
|
}
|
|
1007
942
|
function mapErrorResponse(response, bodyText, context) {
|
|
1008
|
-
var _a;
|
|
1009
943
|
const serverError = serverErrorText(bodyText);
|
|
1010
944
|
const slugPart = context.slug === undefined ? "" : ` "${context.slug}"`;
|
|
1011
945
|
switch (response.status) {
|
|
1012
946
|
case 400:
|
|
1013
|
-
return new DeployApiError(serverError
|
|
947
|
+
return new DeployApiError(serverError ?? `The ${context.verb} request was rejected as invalid.`, 400);
|
|
1014
948
|
case 401:
|
|
1015
949
|
return new DeployApiError("The Cursor API key was rejected. Run `agent-sdk login` again or update CURSOR_API_KEY.", 401);
|
|
1016
950
|
case 403:
|
|
1017
|
-
return new DeployApiError(`${serverError
|
|
951
|
+
return new DeployApiError(`${serverError ?? "Not authorized"} — deploying needs team membership and the cloud-agent entitlement on that team.`, 403);
|
|
1018
952
|
case 404: {
|
|
1019
953
|
// Fastify's route-not-found envelope means we hit the wrong host
|
|
1020
954
|
// (api2 vs api.cursor.com), not a missing deployment / closed gate.
|
|
@@ -1029,15 +963,16 @@ function mapErrorResponse(response, bodyText, context) {
|
|
|
1029
963
|
// The server's 409 body distinguishes real conflicts (CAS races,
|
|
1030
964
|
// "still deploying", architecture-v2 slugs on the v1 surface); keep
|
|
1031
965
|
// its message when present.
|
|
1032
|
-
return new DeployApiError(serverError
|
|
966
|
+
return new DeployApiError(serverError ??
|
|
967
|
+
`A concurrent deploy or stop is changing deployment${slugPart}; retry in a moment.`, 409);
|
|
1033
968
|
case 429: {
|
|
1034
969
|
const retryAfterHeader = response.headers.get("retry-after");
|
|
1035
970
|
const retryAfterSeconds = retryAfterHeader !== null && /^\d+$/.test(retryAfterHeader)
|
|
1036
971
|
? Number(retryAfterHeader)
|
|
1037
972
|
: undefined;
|
|
1038
|
-
return new DeployApiError(`${serverError
|
|
973
|
+
return new DeployApiError(`${serverError ?? "Rate limited"}${retryAfterSeconds === undefined ? "" : ` — retry in ${retryAfterSeconds}s`}`, 429, retryAfterSeconds);
|
|
1039
974
|
}
|
|
1040
975
|
default:
|
|
1041
|
-
return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${
|
|
976
|
+
return new DeployApiError(`The ${context.verb} request failed (${response.status}): ${serverError ?? bodyText.slice(0, 300) ?? "(empty body)"}`, response.status);
|
|
1042
977
|
}
|
|
1043
978
|
}
|