@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
|
@@ -10,7 +10,7 @@ export class ReminderValidationError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
/** Node setTimeout overflows past ~2^31-1 ms (~24.8d); chunk long waits. */
|
|
13
|
-
export const MAX_TIMER_MS =
|
|
13
|
+
export const MAX_TIMER_MS = 2_147_483_647;
|
|
14
14
|
/**
|
|
15
15
|
* Resolve create-input schedule fields into a concrete next-fire plan.
|
|
16
16
|
* Pass `nowMs` for deterministic CP / test resolution; CP owns this call.
|
|
@@ -7,15 +7,6 @@
|
|
|
7
7
|
* `args` and prompt-form reminders survive restart (handlers resolve from
|
|
8
8
|
* `agent/reminders/` on every fire).
|
|
9
9
|
*/
|
|
10
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
12
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
13
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
14
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
15
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
16
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
10
|
import { mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
20
11
|
import { join } from "node:path";
|
|
21
12
|
export const REMINDER_SNAPSHOT_VERSION = 1;
|
|
@@ -44,83 +35,71 @@ export class ReminderStore {
|
|
|
44
35
|
filePath(id) {
|
|
45
36
|
return join(this.rootDir, `${id}.json`);
|
|
46
37
|
}
|
|
47
|
-
ensureRoot() {
|
|
48
|
-
|
|
49
|
-
yield mkdir(this.rootDir, { recursive: true });
|
|
50
|
-
});
|
|
38
|
+
async ensureRoot() {
|
|
39
|
+
await mkdir(this.rootDir, { recursive: true });
|
|
51
40
|
}
|
|
52
|
-
list() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
41
|
+
async list() {
|
|
42
|
+
await this.ensureRoot();
|
|
43
|
+
let names;
|
|
44
|
+
try {
|
|
45
|
+
names = await readdir(this.rootDir);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const records = [];
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
if (!name.endsWith(".json"))
|
|
53
|
+
continue;
|
|
54
|
+
const record = await this.get(name.slice(0, -".json".length));
|
|
55
|
+
if (record !== undefined) {
|
|
56
|
+
records.push(record);
|
|
58
57
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
const records = [];
|
|
63
|
-
for (const name of names) {
|
|
64
|
-
if (!name.endsWith(".json"))
|
|
65
|
-
continue;
|
|
66
|
-
const record = yield this.get(name.slice(0, -".json".length));
|
|
67
|
-
if (record !== undefined) {
|
|
68
|
-
records.push(record);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return records;
|
|
72
|
-
});
|
|
58
|
+
}
|
|
59
|
+
return records;
|
|
73
60
|
}
|
|
74
|
-
listArmed() {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return all.filter(r => r.status === "armed" || r.status === "firing");
|
|
79
|
-
});
|
|
61
|
+
async listArmed() {
|
|
62
|
+
const all = await this.list();
|
|
63
|
+
// Treat in-flight claims as still armed for restart / listing purposes.
|
|
64
|
+
return all.filter(r => r.status === "armed" || r.status === "firing");
|
|
80
65
|
}
|
|
81
|
-
get(id) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (parsed.version !== REMINDER_SNAPSHOT_VERSION) {
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
if (typeof parsed.id !== "string" || parsed.id !== id) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
return parsed;
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
if (error !== null &&
|
|
96
|
-
typeof error === "object" &&
|
|
97
|
-
"code" in error &&
|
|
98
|
-
error.code === "ENOENT") {
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
66
|
+
async get(id) {
|
|
67
|
+
try {
|
|
68
|
+
const raw = await readFile(this.filePath(id), "utf8");
|
|
69
|
+
const parsed = JSON.parse(raw);
|
|
70
|
+
if (parsed.version !== REMINDER_SNAPSHOT_VERSION) {
|
|
101
71
|
return undefined;
|
|
102
72
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
save(record) {
|
|
106
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
-
yield this.ensureRoot();
|
|
108
|
-
const path = this.filePath(record.id);
|
|
109
|
-
const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
|
|
110
|
-
const body = `${JSON.stringify(record, null, 2)}\n`;
|
|
111
|
-
try {
|
|
112
|
-
yield writeFile(tmp, body, "utf8");
|
|
113
|
-
yield rename(tmp, path);
|
|
73
|
+
if (typeof parsed.id !== "string" || parsed.id !== id) {
|
|
74
|
+
return undefined;
|
|
114
75
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
76
|
+
return parsed;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error !== null &&
|
|
80
|
+
typeof error === "object" &&
|
|
81
|
+
"code" in error &&
|
|
82
|
+
error.code === "ENOENT") {
|
|
83
|
+
return undefined;
|
|
118
84
|
}
|
|
119
|
-
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async save(record) {
|
|
89
|
+
await this.ensureRoot();
|
|
90
|
+
const path = this.filePath(record.id);
|
|
91
|
+
const tmp = `${path}.${process.pid}.${Date.now()}.tmp`;
|
|
92
|
+
const body = `${JSON.stringify(record, null, 2)}\n`;
|
|
93
|
+
try {
|
|
94
|
+
await writeFile(tmp, body, "utf8");
|
|
95
|
+
await rename(tmp, path);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
await rm(tmp, { force: true }).catch(() => { });
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
120
101
|
}
|
|
121
|
-
delete(id) {
|
|
122
|
-
|
|
123
|
-
yield rm(this.filePath(id), { force: true });
|
|
124
|
-
});
|
|
102
|
+
async delete(id) {
|
|
103
|
+
await rm(this.filePath(id), { force: true });
|
|
125
104
|
}
|
|
126
105
|
}
|
|
@@ -70,7 +70,5 @@ export function mapThrownRequestError(error) {
|
|
|
70
70
|
return undefined;
|
|
71
71
|
}
|
|
72
72
|
export function statusForThrownRequestError(error) {
|
|
73
|
-
|
|
74
|
-
var _b;
|
|
75
|
-
return (_b = (_a = mapThrownRequestError(error)) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : 500;
|
|
73
|
+
return mapThrownRequestError(error)?.status ?? 500;
|
|
76
74
|
}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export function mergeRequestHeaders(auth) {
|
|
6
6
|
const out = {};
|
|
7
|
-
if (
|
|
7
|
+
if (auth?.headers !== undefined) {
|
|
8
8
|
Object.assign(out, auth.headers);
|
|
9
9
|
}
|
|
10
|
-
if (
|
|
10
|
+
if (auth?.bearerToken !== undefined) {
|
|
11
11
|
out.authorization = `Bearer ${auth.bearerToken}`;
|
|
12
12
|
}
|
|
13
13
|
return out;
|
|
@@ -6,15 +6,6 @@
|
|
|
6
6
|
* (Cursor API key on the management API; `X-Anyrun-Port-Token` on the
|
|
7
7
|
* engine). Alias tokens are out of scope here.
|
|
8
8
|
*/
|
|
9
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
10
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
11
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
12
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
13
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
14
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
15
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
9
|
import { basename, resolve } from "node:path";
|
|
19
10
|
import { resolveDeployAuth } from "./cli-deploy.js";
|
|
20
11
|
import { cursorWebsiteUrl } from "./cursor/credentials.js";
|
|
@@ -54,137 +45,48 @@ export class ProdTargetError extends Error {
|
|
|
54
45
|
* Look up a running deployment and return its engineAccess URL/headers.
|
|
55
46
|
* Throws {@link Error} with a CLI-ready message on failure.
|
|
56
47
|
*/
|
|
57
|
-
export function resolveProdTarget(options) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
fetchImpl: options.fetchImpl,
|
|
66
|
-
err,
|
|
67
|
-
});
|
|
68
|
-
if (typeof auth === "number") {
|
|
69
|
-
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
70
|
-
}
|
|
71
|
-
if (options.skipLegacyArchitectureCheck !== true) {
|
|
72
|
-
yield rejectV2ForLegacyCommand({
|
|
73
|
-
client: auth.client,
|
|
74
|
-
teamId: auth.teamId,
|
|
75
|
-
slug,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// A hibernated engine can briefly omit engineAccess while getPod fails
|
|
79
|
-
// during wake. Retry a few times before surfacing "not reachable yet".
|
|
80
|
-
const maxReachabilityAttempts = 5;
|
|
81
|
-
const sleep = (_b = options.sleep) !== null && _b !== void 0 ? _b : defaultSleep;
|
|
82
|
-
let detail;
|
|
83
|
-
for (let attempt = 0; attempt < maxReachabilityAttempts; attempt++) {
|
|
84
|
-
try {
|
|
85
|
-
detail = yield auth.client.getDeployment({
|
|
86
|
-
teamId: auth.teamId,
|
|
87
|
-
slug,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
if (error instanceof DeployApiError) {
|
|
92
|
-
throw new ProdTargetError(`Deployment "${slug}" (team ${auth.teamId}): ${error.message}`, {
|
|
93
|
-
slug,
|
|
94
|
-
notFound: error.status === 404,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
// `degraded` still serves the previous ACTIVE engine; allow runtime access
|
|
100
|
-
// when the control plane minted engineAccess for it.
|
|
101
|
-
const statusOk = detail.status === "running" || detail.status === "degraded";
|
|
102
|
-
if (!statusOk) {
|
|
103
|
-
const lastError = detail.lastError === null || detail.lastError === undefined
|
|
104
|
-
? ""
|
|
105
|
-
: ` ${sanitizeCustomerFacingDetail(detail.lastError)}`;
|
|
106
|
-
throw new Error(`Deployment "${slug}" is ${detail.status}, not running.${lastError}\n` +
|
|
107
|
-
`Deploy or wait: \`${CLI} deploy --slug ${slug}\` / \`${CLI} deployment ${slug}\``);
|
|
108
|
-
}
|
|
109
|
-
if (detail.engineAccess !== null && detail.engineAccess !== undefined) {
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
if (attempt + 1 < maxReachabilityAttempts) {
|
|
113
|
-
if (attempt === 0) {
|
|
114
|
-
err(`${stderrPalette().dim(`Deployment "${slug}" is waking; waiting for engine access…`)}\n`);
|
|
115
|
-
}
|
|
116
|
-
yield sleep(1000 * (attempt + 1));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
if (detail === undefined) {
|
|
120
|
-
throw new Error(`Deployment "${slug}" lookup failed.`);
|
|
121
|
-
}
|
|
122
|
-
const access = detail.engineAccess;
|
|
123
|
-
if (access === null || access === undefined) {
|
|
124
|
-
throw new Error(`Deployment "${slug}" is ${detail.status} but is not reachable yet. ` +
|
|
125
|
-
`Try \`${CLI} deployment ${slug}\` or redeploy.`);
|
|
126
|
-
}
|
|
127
|
-
err(`${stderrPalette().dim(`Using hosted deployment "${slug}".`)}\n`);
|
|
128
|
-
return {
|
|
129
|
-
agentUrl: access.url.replace(/\/$/, ""),
|
|
130
|
-
headers: Object.assign(Object.assign({}, access.headers), PROD_ENGINE_WAKE_HEADERS),
|
|
131
|
-
slug,
|
|
132
|
-
expiresAt: access.expiresAt,
|
|
133
|
-
};
|
|
48
|
+
export async function resolveProdTarget(options) {
|
|
49
|
+
const err = options.err ?? ((text) => void process.stderr.write(text));
|
|
50
|
+
const slug = resolveProdSlug(options);
|
|
51
|
+
const auth = await resolveDeployAuth({
|
|
52
|
+
team: options.team,
|
|
53
|
+
apiKey: options.apiKey,
|
|
54
|
+
fetchImpl: options.fetchImpl,
|
|
55
|
+
err,
|
|
134
56
|
});
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const err = (_b = options.err) !== null && _b !== void 0 ? _b : ((text) => void process.stderr.write(text));
|
|
141
|
-
const slug = resolveProdSlug(options);
|
|
142
|
-
const auth = yield resolveDeployAuth({
|
|
143
|
-
team: options.team,
|
|
144
|
-
apiKey: options.apiKey,
|
|
145
|
-
fetchImpl: options.fetchImpl,
|
|
146
|
-
err,
|
|
147
|
-
});
|
|
148
|
-
if (typeof auth === "number") {
|
|
149
|
-
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
150
|
-
}
|
|
151
|
-
const architecture = yield deploymentArchitecture({
|
|
57
|
+
if (typeof auth === "number") {
|
|
58
|
+
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
59
|
+
}
|
|
60
|
+
if (options.skipLegacyArchitectureCheck !== true) {
|
|
61
|
+
await rejectV2ForLegacyCommand({
|
|
152
62
|
client: auth.client,
|
|
153
63
|
teamId: auth.teamId,
|
|
154
64
|
slug,
|
|
155
65
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return {
|
|
164
|
-
playgroundUrl: playgroundUrl.toString(),
|
|
165
|
-
slug,
|
|
166
|
-
architecture,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
const resolved = yield resolveProdAliasPlaygroundUrlWithAuth(options, auth, slug, err);
|
|
170
|
-
return Object.assign(Object.assign({}, resolved), { architecture });
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
function resolveProdAliasPlaygroundUrlWithAuth(options, auth, slug, err) {
|
|
174
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
175
|
-
let detail;
|
|
66
|
+
}
|
|
67
|
+
// A hibernated engine can briefly omit engineAccess while getPod fails
|
|
68
|
+
// during wake. Retry a few times before surfacing "not reachable yet".
|
|
69
|
+
const maxReachabilityAttempts = 5;
|
|
70
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
71
|
+
let detail;
|
|
72
|
+
for (let attempt = 0; attempt < maxReachabilityAttempts; attempt++) {
|
|
176
73
|
try {
|
|
177
|
-
detail =
|
|
74
|
+
detail = await auth.client.getDeployment({
|
|
178
75
|
teamId: auth.teamId,
|
|
179
76
|
slug,
|
|
180
77
|
});
|
|
181
78
|
}
|
|
182
79
|
catch (error) {
|
|
183
80
|
if (error instanceof DeployApiError) {
|
|
184
|
-
throw new
|
|
81
|
+
throw new ProdTargetError(`Deployment "${slug}" (team ${auth.teamId}): ${error.message}`, {
|
|
82
|
+
slug,
|
|
83
|
+
notFound: error.status === 404,
|
|
84
|
+
});
|
|
185
85
|
}
|
|
186
86
|
throw error;
|
|
187
87
|
}
|
|
88
|
+
// `degraded` still serves the previous ACTIVE engine; allow runtime access
|
|
89
|
+
// when the control plane minted engineAccess for it.
|
|
188
90
|
const statusOk = detail.status === "running" || detail.status === "degraded";
|
|
189
91
|
if (!statusOk) {
|
|
190
92
|
const lastError = detail.lastError === null || detail.lastError === undefined
|
|
@@ -193,15 +95,98 @@ function resolveProdAliasPlaygroundUrlWithAuth(options, auth, slug, err) {
|
|
|
193
95
|
throw new Error(`Deployment "${slug}" is ${detail.status}, not running.${lastError}\n` +
|
|
194
96
|
`Deploy or wait: \`${CLI} deploy --slug ${slug}\` / \`${CLI} deployment ${slug}\``);
|
|
195
97
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
98
|
+
if (detail.engineAccess !== null && detail.engineAccess !== undefined) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
if (attempt + 1 < maxReachabilityAttempts) {
|
|
102
|
+
if (attempt === 0) {
|
|
103
|
+
err(`${stderrPalette().dim(`Deployment "${slug}" is waking; waiting for engine access…`)}\n`);
|
|
104
|
+
}
|
|
105
|
+
await sleep(1000 * (attempt + 1));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (detail === undefined) {
|
|
109
|
+
throw new Error(`Deployment "${slug}" lookup failed.`);
|
|
110
|
+
}
|
|
111
|
+
const access = detail.engineAccess;
|
|
112
|
+
if (access === null || access === undefined) {
|
|
113
|
+
throw new Error(`Deployment "${slug}" is ${detail.status} but is not reachable yet. ` +
|
|
114
|
+
`Try \`${CLI} deployment ${slug}\` or redeploy.`);
|
|
115
|
+
}
|
|
116
|
+
err(`${stderrPalette().dim(`Using hosted deployment "${slug}".`)}\n`);
|
|
117
|
+
return {
|
|
118
|
+
agentUrl: access.url.replace(/\/$/, ""),
|
|
119
|
+
headers: {
|
|
120
|
+
...access.headers,
|
|
121
|
+
...PROD_ENGINE_WAKE_HEADERS,
|
|
122
|
+
},
|
|
123
|
+
slug,
|
|
124
|
+
expiresAt: access.expiresAt,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export async function resolveProdPlaygroundUrl(options) {
|
|
128
|
+
const err = options.err ?? ((text) => void process.stderr.write(text));
|
|
129
|
+
const slug = resolveProdSlug(options);
|
|
130
|
+
const auth = await resolveDeployAuth({
|
|
131
|
+
team: options.team,
|
|
132
|
+
apiKey: options.apiKey,
|
|
133
|
+
fetchImpl: options.fetchImpl,
|
|
134
|
+
err,
|
|
135
|
+
});
|
|
136
|
+
if (typeof auth === "number") {
|
|
137
|
+
throw new Error(`Could not resolve Cursor credentials/team for the hosted deployment (see above).`);
|
|
138
|
+
}
|
|
139
|
+
const architecture = await deploymentArchitecture({
|
|
140
|
+
client: auth.client,
|
|
141
|
+
teamId: auth.teamId,
|
|
142
|
+
slug,
|
|
204
143
|
});
|
|
144
|
+
if (architecture === "v2") {
|
|
145
|
+
const playgroundUrl = new URL(`/dashboard/deployed-agents/${encodeURIComponent(slug)}/playground`, cursorWebsiteUrl());
|
|
146
|
+
const sessionId = options.sessionId?.trim();
|
|
147
|
+
if (sessionId !== undefined && sessionId !== "") {
|
|
148
|
+
playgroundUrl.searchParams.set("sessionId", sessionId);
|
|
149
|
+
}
|
|
150
|
+
err(`${stderrPalette().dim(`Using hosted deployment "${slug}".`)}\n`);
|
|
151
|
+
return {
|
|
152
|
+
playgroundUrl: playgroundUrl.toString(),
|
|
153
|
+
slug,
|
|
154
|
+
architecture,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
const resolved = await resolveProdAliasPlaygroundUrlWithAuth(options, auth, slug, err);
|
|
158
|
+
return { ...resolved, architecture };
|
|
159
|
+
}
|
|
160
|
+
async function resolveProdAliasPlaygroundUrlWithAuth(options, auth, slug, err) {
|
|
161
|
+
let detail;
|
|
162
|
+
try {
|
|
163
|
+
detail = await auth.client.getDeployment({
|
|
164
|
+
teamId: auth.teamId,
|
|
165
|
+
slug,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (error instanceof DeployApiError) {
|
|
170
|
+
throw new Error(`Deployment "${slug}" (team ${auth.teamId}): ${error.message}`);
|
|
171
|
+
}
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
const statusOk = detail.status === "running" || detail.status === "degraded";
|
|
175
|
+
if (!statusOk) {
|
|
176
|
+
const lastError = detail.lastError === null || detail.lastError === undefined
|
|
177
|
+
? ""
|
|
178
|
+
: ` ${sanitizeCustomerFacingDetail(detail.lastError)}`;
|
|
179
|
+
throw new Error(`Deployment "${slug}" is ${detail.status}, not running.${lastError}\n` +
|
|
180
|
+
`Deploy or wait: \`${CLI} deploy --slug ${slug}\` / \`${CLI} deployment ${slug}\``);
|
|
181
|
+
}
|
|
182
|
+
const aliasBase = auth.client.aliasUrl(detail.engineAlias).replace(/\/$/, "");
|
|
183
|
+
const base = `${aliasBase}/playground`;
|
|
184
|
+
const sessionId = options.sessionId !== undefined && options.sessionId.trim() !== ""
|
|
185
|
+
? options.sessionId.trim()
|
|
186
|
+
: undefined;
|
|
187
|
+
const playgroundUrl = sessionId === undefined ? base : `${base}?sessionId=${encodeURIComponent(sessionId)}`;
|
|
188
|
+
err(`${stderrPalette().dim(`Using hosted deployment "${slug}".`)}\n`);
|
|
189
|
+
return { playgroundUrl, slug };
|
|
205
190
|
}
|
|
206
191
|
/** Strip obvious hosting internals from customer-facing error fragments. */
|
|
207
192
|
function sanitizeCustomerFacingDetail(message) {
|
|
@@ -213,7 +198,6 @@ function sanitizeCustomerFacingDetail(message) {
|
|
|
213
198
|
}
|
|
214
199
|
/** Resolve the deployment slug the same way `deploy` does for a single dir. */
|
|
215
200
|
export function resolveProdSlug(options) {
|
|
216
|
-
var _a;
|
|
217
201
|
if (options.slug !== undefined && options.slug !== "") {
|
|
218
202
|
const slugError = validateDeploymentSlug(options.slug);
|
|
219
203
|
if (slugError !== undefined) {
|
|
@@ -221,7 +205,7 @@ export function resolveProdSlug(options) {
|
|
|
221
205
|
}
|
|
222
206
|
return options.slug;
|
|
223
207
|
}
|
|
224
|
-
const dir = resolve(
|
|
208
|
+
const dir = resolve(options.cwd ?? process.cwd(), options.dir);
|
|
225
209
|
const derived = slugFromDirectoryName(basename(dir));
|
|
226
210
|
if (derived === undefined) {
|
|
227
211
|
throw new Error(`Could not derive a deployment slug from the directory name ${JSON.stringify(basename(dir))}; pass --slug.`);
|
|
@@ -11,7 +11,6 @@ import { resolveCursorAccountConnections, } from "./cursor/account-mcp.js";
|
|
|
11
11
|
import { resolvePeerConnections } from "./peer-connections.js";
|
|
12
12
|
/** Fail fast before listen when static cloud config cannot honor `servers`. */
|
|
13
13
|
export function validateMountConnectionsConfig(args) {
|
|
14
|
-
var _a;
|
|
15
14
|
if (args.accountRefs === undefined || args.accountRefs.length === 0) {
|
|
16
15
|
return;
|
|
17
16
|
}
|
|
@@ -21,7 +20,7 @@ export function validateMountConnectionsConfig(args) {
|
|
|
21
20
|
return;
|
|
22
21
|
}
|
|
23
22
|
const label = args.slug === "" ? args.project.name : args.slug;
|
|
24
|
-
const hostConnectionNames = new Set((
|
|
23
|
+
const hostConnectionNames = new Set((args.project.agent.hostConnections ?? []).map(connection => connection.name));
|
|
25
24
|
const filteredRefs = args.accountRefs.filter(ref => ref.servers !== undefined && !hostConnectionNames.has(ref.name));
|
|
26
25
|
if (filteredRefs.length === 0) {
|
|
27
26
|
return;
|
|
@@ -35,9 +34,9 @@ export function assertCloudCanHonorAccountServersFilters(args) {
|
|
|
35
34
|
if (args.runtime !== "cloud") {
|
|
36
35
|
return;
|
|
37
36
|
}
|
|
38
|
-
const blocked = args.resolvedConnections.filter(connection =>
|
|
37
|
+
const blocked = args.resolvedConnections.filter(connection => connection.accountServersFilter !== undefined &&
|
|
39
38
|
connection.cloudUrl === undefined &&
|
|
40
|
-
|
|
39
|
+
args.bridgedNames?.has(connection.name) !== true);
|
|
41
40
|
if (blocked.length === 0) {
|
|
42
41
|
return;
|
|
43
42
|
}
|
|
@@ -71,7 +70,12 @@ export function resolveMountConnections(args) {
|
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
if (args.peerRefs !== undefined && args.peerRefs.length > 0) {
|
|
74
|
-
const peers = resolvePeerConnections(
|
|
73
|
+
const peers = resolvePeerConnections({
|
|
74
|
+
refs: args.peerRefs,
|
|
75
|
+
serverUrl: args.serverUrl,
|
|
76
|
+
...(args.publicUrl === undefined ? {} : { publicUrl: args.publicUrl }),
|
|
77
|
+
...(args.authToken === undefined ? {} : { authToken: args.authToken }),
|
|
78
|
+
});
|
|
75
79
|
resolved.push(...peers);
|
|
76
80
|
if (cloudCapable && args.publicUrl === undefined) {
|
|
77
81
|
args.logger(`[bdk] warning: agent "${label}" has peer MCP connections (${peers
|
|
@@ -80,7 +84,13 @@ export function resolveMountConnections(args) {
|
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
if (args.accountRefs !== undefined && args.accountBridge !== undefined) {
|
|
83
|
-
resolved.push(...resolveCursorAccountConnections(
|
|
87
|
+
resolved.push(...resolveCursorAccountConnections({
|
|
88
|
+
refs: args.accountRefs,
|
|
89
|
+
serverUrl: args.serverUrl,
|
|
90
|
+
basePath: args.slug === "" ? "" : `/${args.slug}`,
|
|
91
|
+
bridgeSecret: args.accountBridge.secret,
|
|
92
|
+
...(args.publicUrl === undefined ? {} : { publicUrl: args.publicUrl }),
|
|
93
|
+
}));
|
|
84
94
|
// Non-blocking startup DX: connector statuses land in the serve log.
|
|
85
95
|
args.accountBridge.logPreflight(args.accountRefs);
|
|
86
96
|
if (cloudCapable && args.publicUrl === undefined) {
|