@mastra/deployer-cloud 0.0.0-error-handler-fix-20251020202607 → 0.0.0-execa-dynamic-import-20260304221256
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/CHANGELOG.md +767 -5
- package/LICENSE.md +15 -0
- package/README.md +2 -3
- package/dist/index.cjs +104 -83
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +104 -83
- package/dist/index.js.map +1 -1
- package/dist/studio/assets/GeistMonoVF-BHyMa335.woff +0 -0
- package/dist/studio/assets/InterVariable-H_M6nIbt.ttf +0 -0
- package/dist/studio/assets/TASAExplorerVF-FO8P5krV.woff2 +0 -0
- package/dist/studio/assets/abap-DsBKuouk.js +1 -0
- package/dist/studio/assets/actionscript-3-D_z4Izcz.js +1 -0
- package/dist/studio/assets/ada-727ZlQH0.js +1 -0
- package/dist/studio/assets/andromeeda-C3khCPGq.js +1 -0
- package/dist/studio/assets/angular-html-LfdN0zeE.js +1 -0
- package/dist/studio/assets/angular-ts-CKsD7JZE.js +1 -0
- package/dist/studio/assets/apache-Dn00JSTd.js +1 -0
- package/dist/studio/assets/apex-COJ4H7py.js +1 -0
- package/dist/studio/assets/apl-B4CMkyY2.js +1 -0
- package/dist/studio/assets/apl-BBq3IX1j.js +1 -0
- package/dist/studio/assets/applescript-Bu5BbsvL.js +1 -0
- package/dist/studio/assets/ara-7O62HKoU.js +1 -0
- package/dist/studio/assets/asciiarmor-Df11BRmG.js +1 -0
- package/dist/studio/assets/asciidoc-BPT9niGB.js +1 -0
- package/dist/studio/assets/asm-Dhn9LcZ4.js +1 -0
- package/dist/studio/assets/asn1-EdZsLKOL.js +1 -0
- package/dist/studio/assets/asterisk-B-8jnY81.js +1 -0
- package/dist/studio/assets/astro-CqkE3fuf.js +1 -0
- package/dist/studio/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/studio/assets/awk-eg146-Ew.js +1 -0
- package/dist/studio/assets/ayu-dark-Cv9koXgw.js +1 -0
- package/dist/studio/assets/ballerina-Du268qiB.js +1 -0
- package/dist/studio/assets/bat-fje9CFhw.js +1 -0
- package/dist/studio/assets/beancount-BwXTMy5W.js +1 -0
- package/dist/studio/assets/berry-3xVqZejG.js +1 -0
- package/dist/studio/assets/bibtex-xW4inM5L.js +1 -0
- package/dist/studio/assets/bicep-DHo0CJ0O.js +1 -0
- package/dist/studio/assets/blade-a8OxSdnT.js +1 -0
- package/dist/studio/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/studio/assets/bsl-Dgyn0ogV.js +1 -0
- package/dist/studio/assets/c-C3t2pwGQ.js +1 -0
- package/dist/studio/assets/cadence-DNquZEk8.js +1 -0
- package/dist/studio/assets/cairo--RitsXJZ.js +1 -0
- package/dist/studio/assets/catppuccin-frappe-CD_QflpE.js +1 -0
- package/dist/studio/assets/catppuccin-latte-DRW-0cLl.js +1 -0
- package/dist/studio/assets/catppuccin-macchiato-C-_shW-Y.js +1 -0
- package/dist/studio/assets/catppuccin-mocha-LGGdnPYs.js +1 -0
- package/dist/studio/assets/chunk-REDZDNFN-5iqqdJs8.js +1 -0
- package/dist/studio/assets/clarity-BHOwM8T6.js +1 -0
- package/dist/studio/assets/clike-B9uivgTg.js +1 -0
- package/dist/studio/assets/clojure-BMjYHr_A.js +1 -0
- package/dist/studio/assets/clojure-DxSadP1t.js +1 -0
- package/dist/studio/assets/cmake-BQqOBYOt.js +1 -0
- package/dist/studio/assets/cmake-DbXoA79R.js +1 -0
- package/dist/studio/assets/cobol-CWcv1MsR.js +1 -0
- package/dist/studio/assets/cobol-PTqiYgYu.js +1 -0
- package/dist/studio/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/studio/assets/codeql-sacFqUAJ.js +1 -0
- package/dist/studio/assets/coffee-dyiR41kL.js +1 -0
- package/dist/studio/assets/coffeescript-S37ZYGWr.js +1 -0
- package/dist/studio/assets/common-lisp-C7gG9l05.js +1 -0
- package/dist/studio/assets/commonlisp-DBKNyK5s.js +1 -0
- package/dist/studio/assets/coq-Dsg_Bt_b.js +1 -0
- package/dist/studio/assets/cpp-BksuvNSY.js +1 -0
- package/dist/studio/assets/crystal-DtDmRg-F.js +1 -0
- package/dist/studio/assets/crystal-SjHAIU92.js +1 -0
- package/dist/studio/assets/csharp-D9R-vmeu.js +1 -0
- package/dist/studio/assets/css-BPhBrDlE.js +1 -0
- package/dist/studio/assets/css-BnMrqG3P.js +1 -0
- package/dist/studio/assets/csv-B0qRVHPH.js +1 -0
- package/dist/studio/assets/cue-DtFQj3wx.js +1 -0
- package/dist/studio/assets/cypher-C_CwsFkJ.js +1 -0
- package/dist/studio/assets/cypher-m2LEI-9-.js +1 -0
- package/dist/studio/assets/d-BoXegm-a.js +1 -0
- package/dist/studio/assets/d-pRatUO7H.js +1 -0
- package/dist/studio/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/studio/assets/dart-B9wLZaAG.js +1 -0
- package/dist/studio/assets/dax-ClGRhx96.js +1 -0
- package/dist/studio/assets/desktop-DEIpsLCJ.js +1 -0
- package/dist/studio/assets/diff-BgYniUM_.js +1 -0
- package/dist/studio/assets/diff-DbItnlRl.js +1 -0
- package/dist/studio/assets/docker-COcR7UxN.js +1 -0
- package/dist/studio/assets/dockerfile-BKs6k2Af.js +1 -0
- package/dist/studio/assets/dotenv-BjQB5zDj.js +1 -0
- package/dist/studio/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/studio/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/studio/assets/dream-maker-C-nORZOA.js +1 -0
- package/dist/studio/assets/dtd-DF_7sFjM.js +1 -0
- package/dist/studio/assets/dylan-DwRh75JA.js +1 -0
- package/dist/studio/assets/ebnf-CDyGwa7X.js +1 -0
- package/dist/studio/assets/ecl-Cabwm37j.js +1 -0
- package/dist/studio/assets/edge-D5gP-w-T.js +1 -0
- package/dist/studio/assets/eiffel-CnydiIhH.js +1 -0
- package/dist/studio/assets/elixir-CLiX3zqd.js +1 -0
- package/dist/studio/assets/elm-CmHSxxaM.js +1 -0
- package/dist/studio/assets/elm-vLlmbW-K.js +1 -0
- package/dist/studio/assets/emacs-lisp-BX77sIaO.js +1 -0
- package/dist/studio/assets/erb-BYTLMnw6.js +1 -0
- package/dist/studio/assets/erlang-B-DoSBHF.js +1 -0
- package/dist/studio/assets/erlang-BNw1qcRV.js +1 -0
- package/dist/studio/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/studio/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/studio/assets/factor-kuTfRLto.js +1 -0
- package/dist/studio/assets/fcl-Kvtd6kyn.js +1 -0
- package/dist/studio/assets/fennel-bCA53EVm.js +1 -0
- package/dist/studio/assets/fish-w-ucz2PV.js +1 -0
- package/dist/studio/assets/fluent-Dayu4EKP.js +1 -0
- package/dist/studio/assets/forth-Ffai-XNe.js +1 -0
- package/dist/studio/assets/fortran-DYz_wnZ1.js +1 -0
- package/dist/studio/assets/fortran-fixed-form-TqA4NnZg.js +1 -0
- package/dist/studio/assets/fortran-free-form-DKXYxT9g.js +1 -0
- package/dist/studio/assets/fsharp-XplgxFYe.js +1 -0
- package/dist/studio/assets/gas-Bneqetm1.js +1 -0
- package/dist/studio/assets/gdresource-BHYsBjWJ.js +1 -0
- package/dist/studio/assets/gdscript-DfxzS6Rs.js +1 -0
- package/dist/studio/assets/gdshader-SKMF96pI.js +1 -0
- package/dist/studio/assets/genie-ajMbGru0.js +1 -0
- package/dist/studio/assets/gherkin--30QC5Em.js +1 -0
- package/dist/studio/assets/gherkin-heZmZLOM.js +1 -0
- package/dist/studio/assets/git-commit-i4q6IMui.js +1 -0
- package/dist/studio/assets/git-rebase-B-v9cOL2.js +1 -0
- package/dist/studio/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/studio/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/studio/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/studio/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/studio/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/studio/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/studio/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/studio/assets/gleam-B430Bg39.js +1 -0
- package/dist/studio/assets/glimmer-js-D-cwc0-E.js +1 -0
- package/dist/studio/assets/glimmer-ts-pgjy16dm.js +1 -0
- package/dist/studio/assets/glsl-DBO2IWDn.js +1 -0
- package/dist/studio/assets/gnuplot-CM8KxXT1.js +1 -0
- package/dist/studio/assets/go-B1SYOhNW.js +1 -0
- package/dist/studio/assets/graphql-cDcHW_If.js +1 -0
- package/dist/studio/assets/groovy-D9Dt4D0W.js +1 -0
- package/dist/studio/assets/groovy-DkBy-JyN.js +1 -0
- package/dist/studio/assets/hack-D1yCygmZ.js +1 -0
- package/dist/studio/assets/haml-B2EZWmdv.js +1 -0
- package/dist/studio/assets/handlebars-BQGss363.js +1 -0
- package/dist/studio/assets/haskell-BILxekzW.js +1 -0
- package/dist/studio/assets/haskell-Cw1EW3IL.js +1 -0
- package/dist/studio/assets/haxe-C5wWYbrZ.js +1 -0
- package/dist/studio/assets/haxe-H-WmDvRZ.js +1 -0
- package/dist/studio/assets/hcl-HzYwdGDm.js +1 -0
- package/dist/studio/assets/hjson-T-Tgc4AT.js +1 -0
- package/dist/studio/assets/hlsl-ifBTmRxC.js +1 -0
- package/dist/studio/assets/houston-DnULxvSX.js +1 -0
- package/dist/studio/assets/html-C2L_23MC.js +1 -0
- package/dist/studio/assets/html-derivative-CSfWNPLT.js +1 -0
- package/dist/studio/assets/http-DBlCnlav.js +1 -0
- package/dist/studio/assets/http-FRrOvY1W.js +1 -0
- package/dist/studio/assets/hxml-TIA70rKU.js +1 -0
- package/dist/studio/assets/hy-BMj5Y0dO.js +1 -0
- package/dist/studio/assets/idl-BEugSyMb.js +1 -0
- package/dist/studio/assets/imba-bv_oIlVt.js +1 -0
- package/dist/studio/assets/index-B6FFiwCq.js +7 -0
- package/dist/studio/assets/index-BF-VdB_e.js +1 -0
- package/dist/studio/assets/index-BMsn419X.js +1 -0
- package/dist/studio/assets/index-BSaVWSHN.js +1 -0
- package/dist/studio/assets/index-BU8_pta8.js +1 -0
- package/dist/studio/assets/index-BmYOQgQO.js +1 -0
- package/dist/studio/assets/index-C5pU1gdn.js +1 -0
- package/dist/studio/assets/index-C8ryouyb.js +1 -0
- package/dist/studio/assets/index-CL_SMQN0.js +1 -0
- package/dist/studio/assets/index-CqhgmK6Z.js +2 -0
- package/dist/studio/assets/index-Cxt6yXnu.js +1 -0
- package/dist/studio/assets/index-D9DNH0Jx.js +1 -0
- package/dist/studio/assets/index-DlnHN9lT.js +3 -0
- package/dist/studio/assets/index-Dv3rmPW6.js +1 -0
- package/dist/studio/assets/index-EkvLm0JJ.js +1 -0
- package/dist/studio/assets/index-ciPTTl-8.js +1 -0
- package/dist/studio/assets/index-lne63pVU.js +13 -0
- package/dist/studio/assets/index-txzqaK5y.js +1 -0
- package/dist/studio/assets/index-yUiD89B4.js +1 -0
- package/dist/studio/assets/ini-BjABl1g7.js +1 -0
- package/dist/studio/assets/java-xI-RfyKK.js +1 -0
- package/dist/studio/assets/javascript-iXu5QeM3.js +1 -0
- package/dist/studio/assets/javascript-ySlJ1b_l.js +1 -0
- package/dist/studio/assets/jinja-DGy0s7-h.js +1 -0
- package/dist/studio/assets/jison-BqZprYcd.js +1 -0
- package/dist/studio/assets/json-BQoSv7ci.js +1 -0
- package/dist/studio/assets/json5-w8dY5SsB.js +1 -0
- package/dist/studio/assets/jsonc-TU54ms6u.js +1 -0
- package/dist/studio/assets/jsonl-DREVFZK8.js +1 -0
- package/dist/studio/assets/jsonnet-BfivnA6A.js +1 -0
- package/dist/studio/assets/jssm-P4WzXJd0.js +1 -0
- package/dist/studio/assets/jsx-BAng5TT0.js +1 -0
- package/dist/studio/assets/julia-BBuGR-5E.js +1 -0
- package/dist/studio/assets/julia-DuME0IfC.js +1 -0
- package/dist/studio/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/studio/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/studio/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/studio/assets/kotlin-B5lbUyaz.js +1 -0
- package/dist/studio/assets/kusto-mebxcVVE.js +1 -0
- package/dist/studio/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/studio/assets/latex-C-cWTeAZ.js +1 -0
- package/dist/studio/assets/lean-XBlWyCtg.js +1 -0
- package/dist/studio/assets/less-BfCpw3nA.js +1 -0
- package/dist/studio/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/studio/assets/liquid-D3W5UaiH.js +1 -0
- package/dist/studio/assets/livescript-BwQOo05w.js +1 -0
- package/dist/studio/assets/log-Cc5clBb7.js +1 -0
- package/dist/studio/assets/logo-IuBKFhSY.js +1 -0
- package/dist/studio/assets/lua-BgMRiT3U.js +1 -0
- package/dist/studio/assets/lua-CvWAzNxB.js +1 -0
- package/dist/studio/assets/luau-Du5NY7AG.js +1 -0
- package/dist/studio/assets/main-D7IeDdEt.js +615 -0
- package/dist/studio/assets/make-Bvotw-X0.js +1 -0
- package/dist/studio/assets/markdown-UIAJJxZW.js +1 -0
- package/dist/studio/assets/marko-z0MBrx5-.js +1 -0
- package/dist/studio/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/studio/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/studio/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/studio/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/studio/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/studio/assets/mathematica-DTrFuWx2.js +1 -0
- package/dist/studio/assets/matlab-D9-PGadD.js +1 -0
- package/dist/studio/assets/mbox-CNhZ1qSd.js +1 -0
- package/dist/studio/assets/mdc-DB_EDNY_.js +1 -0
- package/dist/studio/assets/mdx-sdHcTMYB.js +1 -0
- package/dist/studio/assets/mermaid-Ci6OQyBP.js +1 -0
- package/dist/studio/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/studio/assets/min-light-CTRr51gU.js +1 -0
- package/dist/studio/assets/mipsasm-BC5c_5Pe.js +1 -0
- package/dist/studio/assets/mirc-CjQqDB4T.js +1 -0
- package/dist/studio/assets/mllike-BO34x3tv.js +1 -0
- package/dist/studio/assets/modelica-Dc1JOy9r.js +1 -0
- package/dist/studio/assets/mojo-Tz6hzZYG.js +1 -0
- package/dist/studio/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/studio/assets/move-DB_GagMm.js +1 -0
- package/dist/studio/assets/mscgen-BA5vi2Kp.js +1 -0
- package/dist/studio/assets/mumps-BT43cFF4.js +1 -0
- package/dist/studio/assets/narrat-DLbgOhZU.js +1 -0
- package/dist/studio/assets/nextflow-B0XVJmRM.js +1 -0
- package/dist/studio/assets/nginx-D_VnBJ67.js +1 -0
- package/dist/studio/assets/nginx-DdIZxoE0.js +1 -0
- package/dist/studio/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/studio/assets/nim-ZlGxZxc3.js +1 -0
- package/dist/studio/assets/nix-shcSOmrb.js +1 -0
- package/dist/studio/assets/nord-Ddv68eIx.js +1 -0
- package/dist/studio/assets/nsis-LdVXkNf5.js +1 -0
- package/dist/studio/assets/ntriples-BfvgReVJ.js +1 -0
- package/dist/studio/assets/nushell-D4Tzg5kh.js +1 -0
- package/dist/studio/assets/objective-c-Deuh7S70.js +1 -0
- package/dist/studio/assets/objective-cpp-BUEGK8hf.js +1 -0
- package/dist/studio/assets/ocaml-BNioltXt.js +1 -0
- package/dist/studio/assets/octave-Ck1zUtKM.js +1 -0
- package/dist/studio/assets/one-dark-pro-GBQ2dnAY.js +1 -0
- package/dist/studio/assets/one-light-PoHY5YXO.js +1 -0
- package/dist/studio/assets/oz-BzwKVEFT.js +1 -0
- package/dist/studio/assets/pascal--L3eBynH.js +1 -0
- package/dist/studio/assets/pascal-JqZropPD.js +1 -0
- package/dist/studio/assets/perl-CHQXSrWU.js +1 -0
- package/dist/studio/assets/perl-CdXCOZ3F.js +1 -0
- package/dist/studio/assets/php-B5ebYQev.js +1 -0
- package/dist/studio/assets/pig-CevX1Tat.js +1 -0
- package/dist/studio/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/studio/assets/plsql-LKU2TuZ1.js +1 -0
- package/dist/studio/assets/po-BFLt1xDp.js +1 -0
- package/dist/studio/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/studio/assets/polar-DKykz6zU.js +1 -0
- package/dist/studio/assets/postcss-B3ZDOciz.js +1 -0
- package/dist/studio/assets/powerquery-CSHBycmS.js +1 -0
- package/dist/studio/assets/powershell-BIEUsx6d.js +1 -0
- package/dist/studio/assets/powershell-CaxLzxiJ.js +1 -0
- package/dist/studio/assets/prisma-B48N-Iqd.js +1 -0
- package/dist/studio/assets/prolog-BY-TUvya.js +1 -0
- package/dist/studio/assets/properties-C78fOPTZ.js +1 -0
- package/dist/studio/assets/proto-zocC4JxJ.js +1 -0
- package/dist/studio/assets/protobuf-ChK-085T.js +1 -0
- package/dist/studio/assets/pug-CM9l7STV.js +1 -0
- package/dist/studio/assets/pug-DeIclll2.js +1 -0
- package/dist/studio/assets/puppet-Cza_XSSt.js +1 -0
- package/dist/studio/assets/puppet-DMA9R1ak.js +1 -0
- package/dist/studio/assets/purescript-Bg-kzb6g.js +1 -0
- package/dist/studio/assets/python-BuPzkPfP.js +1 -0
- package/dist/studio/assets/python-DhUJRlN_.js +1 -0
- package/dist/studio/assets/q-pXgVlZs6.js +1 -0
- package/dist/studio/assets/qml-D8XfuvdV.js +1 -0
- package/dist/studio/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/studio/assets/qss-DhMKtDLN.js +1 -0
- package/dist/studio/assets/r-B6wPVr8A.js +1 -0
- package/dist/studio/assets/r-CwjWoCRV.js +1 -0
- package/dist/studio/assets/racket-CzouJOBO.js +1 -0
- package/dist/studio/assets/raku-B1bQXN8T.js +1 -0
- package/dist/studio/assets/razor-CNLDkMZG.js +1 -0
- package/dist/studio/assets/red-bN70gL4F.js +1 -0
- package/dist/studio/assets/reg-5LuOXUq_.js +1 -0
- package/dist/studio/assets/regexp-DWJ3fJO_.js +1 -0
- package/dist/studio/assets/rel-DJlmqQ1C.js +1 -0
- package/dist/studio/assets/riscv-QhoSD0DR.js +1 -0
- package/dist/studio/assets/rose-pine-CmCqftbK.js +1 -0
- package/dist/studio/assets/rose-pine-dawn-Ds-gbosJ.js +1 -0
- package/dist/studio/assets/rose-pine-moon-CjDtw9vr.js +1 -0
- package/dist/studio/assets/rpm-CTu-6PCP.js +1 -0
- package/dist/studio/assets/rst-4NLicBqY.js +1 -0
- package/dist/studio/assets/ruby-B2Rjki9n.js +1 -0
- package/dist/studio/assets/ruby-DeZ3UC14.js +1 -0
- package/dist/studio/assets/rust-Be6lgOlo.js +1 -0
- package/dist/studio/assets/sas-B4kiWyti.js +1 -0
- package/dist/studio/assets/sas-BmTFh92c.js +1 -0
- package/dist/studio/assets/sass-BJ4Li9vH.js +1 -0
- package/dist/studio/assets/scala-DQVVAn-B.js +1 -0
- package/dist/studio/assets/scheme-BJGe-b2p.js +1 -0
- package/dist/studio/assets/scheme-C41bIUwD.js +1 -0
- package/dist/studio/assets/scss-C31hgJw-.js +1 -0
- package/dist/studio/assets/sdbl-BLhTXw86.js +1 -0
- package/dist/studio/assets/shaderlab-B7qAK45m.js +1 -0
- package/dist/studio/assets/shell-CjFT_Tl9.js +1 -0
- package/dist/studio/assets/shellscript-atvbtKCR.js +1 -0
- package/dist/studio/assets/shellsession-C_rIy8kc.js +1 -0
- package/dist/studio/assets/sieve-C3Gn_uJK.js +1 -0
- package/dist/studio/assets/simple-mode-GW_nhZxv.js +1 -0
- package/dist/studio/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/studio/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/studio/assets/smalltalk-CnHTOXQT.js +1 -0
- package/dist/studio/assets/smalltalk-DkLiglaE.js +1 -0
- package/dist/studio/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/studio/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/studio/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/studio/assets/solidity-C1w2a3ep.js +1 -0
- package/dist/studio/assets/solr-DehyRSwq.js +1 -0
- package/dist/studio/assets/soy-C-lX7w71.js +1 -0
- package/dist/studio/assets/sparql-DkYu6x3z.js +1 -0
- package/dist/studio/assets/sparql-bYkjHRlG.js +1 -0
- package/dist/studio/assets/splunk-Cf8iN4DR.js +1 -0
- package/dist/studio/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/dist/studio/assets/sql-COK4E0Yg.js +1 -0
- package/dist/studio/assets/sql-D0XecflT.js +1 -0
- package/dist/studio/assets/ssh-config-BknIz3MU.js +1 -0
- package/dist/studio/assets/stata-DorPZHa4.js +1 -0
- package/dist/studio/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/studio/assets/style-BM0szoAZ.css +1 -0
- package/dist/studio/assets/stylus-B533Al4x.js +1 -0
- package/dist/studio/assets/stylus-BeQkCIfX.js +1 -0
- package/dist/studio/assets/svelte-MSaWC3Je.js +1 -0
- package/dist/studio/assets/swift-BSxZ-RaX.js +1 -0
- package/dist/studio/assets/swift-BzpIVaGY.js +1 -0
- package/dist/studio/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/studio/assets/system-verilog-C7L56vO4.js +1 -0
- package/dist/studio/assets/systemd-CUnW07Te.js +1 -0
- package/dist/studio/assets/talonscript-C1XDQQGZ.js +1 -0
- package/dist/studio/assets/tasl-CQjiPCtT.js +1 -0
- package/dist/studio/assets/tcl-DQ1-QYvQ.js +1 -0
- package/dist/studio/assets/tcl-DVfN8rqt.js +1 -0
- package/dist/studio/assets/templ-dwX3ZSMB.js +1 -0
- package/dist/studio/assets/terraform-BbSNqyBO.js +1 -0
- package/dist/studio/assets/tex-rYs2v40G.js +1 -0
- package/dist/studio/assets/textile-CnDTJFAw.js +1 -0
- package/dist/studio/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/dist/studio/assets/tiki-DGYXhP31.js +1 -0
- package/dist/studio/assets/token-6GSAFR2W-XRCSVUPZ-Dv0BO_yd.js +1 -0
- package/dist/studio/assets/token-util-NEHG7TUY-U7CX7GS4-BCckTG-5.js +1 -0
- package/dist/studio/assets/tokyo-night-DBQeEorK.js +1 -0
- package/dist/studio/assets/toml-Bm5Em-hy.js +1 -0
- package/dist/studio/assets/toml-CB2ApiWb.js +1 -0
- package/dist/studio/assets/troff-wAsdV37c.js +1 -0
- package/dist/studio/assets/ts-tags-CipyTH0X.js +1 -0
- package/dist/studio/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/studio/assets/tsx-B6W0miNI.js +1 -0
- package/dist/studio/assets/ttcn-CfJYG6tj.js +1 -0
- package/dist/studio/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/dist/studio/assets/turtle-B1tBg_DP.js +1 -0
- package/dist/studio/assets/turtle-BMR_PYu6.js +1 -0
- package/dist/studio/assets/twig-NC5TFiHP.js +1 -0
- package/dist/studio/assets/typescript-Dj6nwHGl.js +1 -0
- package/dist/studio/assets/typespec-BpWG_bgh.js +1 -0
- package/dist/studio/assets/typst-BVUVsWT6.js +1 -0
- package/dist/studio/assets/v-CAQ2eGtk.js +1 -0
- package/dist/studio/assets/vala-BFOHcciG.js +1 -0
- package/dist/studio/assets/vb-CdO5JTpU.js +1 -0
- package/dist/studio/assets/vb-CmGdzxic.js +1 -0
- package/dist/studio/assets/vbscript-BuJXcnF6.js +1 -0
- package/dist/studio/assets/velocity-D8B20fx6.js +1 -0
- package/dist/studio/assets/verilog-C6RDOZhf.js +1 -0
- package/dist/studio/assets/verilog-CJaU5se_.js +1 -0
- package/dist/studio/assets/vesper-BEBZ7ncR.js +1 -0
- package/dist/studio/assets/vhdl-DYoNaHQp.js +1 -0
- package/dist/studio/assets/vhdl-lSbBsy5d.js +1 -0
- package/dist/studio/assets/viml-m4uW47V2.js +1 -0
- package/dist/studio/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/studio/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/studio/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/studio/assets/vue-BuYVFjOK.js +1 -0
- package/dist/studio/assets/vue-html-xdeiXROB.js +1 -0
- package/dist/studio/assets/vyper-nyqBNV6O.js +1 -0
- package/dist/studio/assets/wasm-C6j12Q_x.js +1 -0
- package/dist/studio/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/studio/assets/webidl-ZXfAyPTL.js +1 -0
- package/dist/studio/assets/wenyan-7A4Fjokl.js +1 -0
- package/dist/studio/assets/wgsl-CB0Krxn9.js +1 -0
- package/dist/studio/assets/wikitext-DCE3LsBG.js +1 -0
- package/dist/studio/assets/wolfram-C3FkfJm5.js +1 -0
- package/dist/studio/assets/xml-e3z08dGr.js +1 -0
- package/dist/studio/assets/xquery-DzFWVndE.js +1 -0
- package/dist/studio/assets/xsl-Dd0NUgwM.js +1 -0
- package/dist/studio/assets/yacas-BJ4BC0dw.js +1 -0
- package/dist/studio/assets/yaml-CVw76BM1.js +1 -0
- package/dist/studio/assets/z80-Hz9HOZM7.js +1 -0
- package/dist/studio/assets/zenscript-HnGAYVZD.js +1 -0
- package/dist/studio/assets/zig-BVz_zdnA.js +1 -0
- package/dist/studio/index.html +51 -0
- package/dist/studio/mastra.svg +17 -0
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/deps.d.ts.map +1 -1
- package/dist/utils/execa.d.ts +1 -1
- package/dist/utils/execa.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +3 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/package.json +20 -14
- package/versions.json +1 -1
- package/templates/instrumentation-template.js +0 -69
package/LICENSE.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
Portions of this software are licensed as follows:
|
|
2
|
+
|
|
3
|
+
- All content that resides under any directory named "ee/" within this
|
|
4
|
+
repository, including but not limited to:
|
|
5
|
+
- `packages/core/src/auth/ee/`
|
|
6
|
+
- `packages/server/src/server/auth/ee/`
|
|
7
|
+
is licensed under the license defined in `ee/LICENSE`.
|
|
8
|
+
|
|
9
|
+
- All third-party components incorporated into the Mastra Software are
|
|
10
|
+
licensed under the original license provided by the owner of the
|
|
11
|
+
applicable component.
|
|
12
|
+
|
|
13
|
+
- Content outside of the above-mentioned directories or restrictions is
|
|
14
|
+
available under the "Apache License 2.0" as defined below.
|
|
15
|
+
|
|
1
16
|
# Apache License 2.0
|
|
2
17
|
|
|
3
18
|
Copyright (c) 2025 Kepler Software, Inc.
|
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ MASTRA_STORAGE_AUTH_TOKEN=your-auth-token
|
|
|
76
76
|
BUSINESS_API_RUNNER_LOGS_ENDPOINT=your-logs-endpoint
|
|
77
77
|
BUSINESS_JWT_TOKEN=your-jwt-token
|
|
78
78
|
|
|
79
|
-
#
|
|
79
|
+
# Studio Configuration
|
|
80
80
|
PLAYGROUND_JWT_TOKEN=your-playground-jwt-token
|
|
81
81
|
|
|
82
82
|
# Runtime Configuration
|
|
@@ -109,7 +109,7 @@ The deployer generates a server entry that:
|
|
|
109
109
|
|
|
110
110
|
4. **Starts Server**:
|
|
111
111
|
- Creates Node.js server with Mastra configuration
|
|
112
|
-
- Disables
|
|
112
|
+
- Disables Studio and Swagger UI for production
|
|
113
113
|
- Exports tools for API access
|
|
114
114
|
|
|
115
115
|
## Project Structure
|
|
@@ -118,7 +118,6 @@ After deployment, your project will have:
|
|
|
118
118
|
|
|
119
119
|
```
|
|
120
120
|
output/
|
|
121
|
-
├── instrumentation.mjs # OpenTelemetry setup
|
|
122
121
|
├── package.json # With cloud dependencies
|
|
123
122
|
├── index.mjs # Main server entry
|
|
124
123
|
├── mastra.mjs # Your Mastra configuration
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var url = require('url');
|
|
4
3
|
var path = require('path');
|
|
4
|
+
var url = require('url');
|
|
5
5
|
var deployer = require('@mastra/deployer');
|
|
6
6
|
var esm = require('fs-extra/esm');
|
|
7
7
|
var os = require('os');
|
|
@@ -41,44 +41,80 @@ var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
|
|
|
41
41
|
|
|
42
42
|
// src/utils/auth.ts
|
|
43
43
|
function getAuthEntrypoint() {
|
|
44
|
+
const tokensObject = {};
|
|
45
|
+
if (process.env.PLAYGROUND_JWT_TOKEN) {
|
|
46
|
+
tokensObject[process.env.PLAYGROUND_JWT_TOKEN] = { id: "business-api", role: "api" };
|
|
47
|
+
}
|
|
48
|
+
if (process.env.BUSINESS_JWT_TOKEN) {
|
|
49
|
+
tokensObject[process.env.BUSINESS_JWT_TOKEN] = { id: "business-api", role: "api" };
|
|
50
|
+
}
|
|
44
51
|
return `
|
|
45
|
-
import {
|
|
52
|
+
import { SimpleAuth, CompositeAuth } from '@mastra/core/server';
|
|
53
|
+
import { MastraCloudAuthProvider, MastraRBACCloud } from '@mastra/auth-cloud';
|
|
46
54
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
async authenticateToken (...args) {
|
|
54
|
-
if (typeof args[0] === 'string') {
|
|
55
|
-
const token = args[0].replace('Bearer ', '');
|
|
56
|
-
const validTokens = [];
|
|
57
|
-
${process.env.PLAYGROUND_JWT_TOKEN ? `validTokens.push('${process.env.PLAYGROUND_JWT_TOKEN}');` : ""}
|
|
58
|
-
${process.env.BUSINESS_JWT_TOKEN ? `validTokens.push('${process.env.BUSINESS_JWT_TOKEN}');` : ""}
|
|
59
|
-
|
|
60
|
-
if (validTokens.includes(token)) {
|
|
61
|
-
return { id: 'business-api' }
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return this.auth.authenticateToken(...args)
|
|
55
|
+
// Service token auth (for business-api, playground internal calls)
|
|
56
|
+
class MastraCloudServiceAuth extends SimpleAuth {
|
|
57
|
+
constructor() {
|
|
58
|
+
super({
|
|
59
|
+
tokens: ${JSON.stringify(tokensObject)}
|
|
60
|
+
});
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
async authorizeUser
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
async authorizeUser(user, request) {
|
|
64
|
+
// Allow access to /api path
|
|
65
|
+
if (request && request.url && new URL(request.url).pathname === '/api') {
|
|
66
|
+
return true;
|
|
70
67
|
}
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
// Allow access for business-api users
|
|
69
|
+
if (user && user.id === 'business-api') {
|
|
70
|
+
return true;
|
|
73
71
|
}
|
|
74
|
-
return
|
|
72
|
+
return false;
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
75
|
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
const serviceAuth = new MastraCloudServiceAuth();
|
|
77
|
+
|
|
78
|
+
// Cloud user auth (for end users via OAuth)
|
|
79
|
+
// Only enabled if MASTRA_CLOUD_API_URL is set
|
|
80
|
+
let cloudUserAuth = null;
|
|
81
|
+
if (process.env.MASTRA_CLOUD_API_URL) {
|
|
82
|
+
cloudUserAuth = new MastraCloudAuthProvider({
|
|
83
|
+
projectId: process.env.PROJECT_ID,
|
|
84
|
+
cloudBaseUrl: process.env.MASTRA_CLOUD_API_URL,
|
|
85
|
+
callbackUrl: process.env.MASTRA_CLOUD_CALLBACK_URL || \`\${process.env.MASTRA_CLOUD_API_URL}/auth/callback\`,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const serverConfig = mastra.getServer();
|
|
90
|
+
const userAuth = serverConfig?.auth;
|
|
91
|
+
|
|
92
|
+
// Only enable auth if cloudUserAuth or userAuth are defined
|
|
93
|
+
if (serverConfig && (cloudUserAuth || userAuth)) {
|
|
94
|
+
// Build provider list: service auth first, then cloud user auth, then user's custom auth
|
|
95
|
+
const providers = [serviceAuth];
|
|
96
|
+
if (cloudUserAuth) {
|
|
97
|
+
providers.push(cloudUserAuth);
|
|
98
|
+
}
|
|
99
|
+
if (userAuth) {
|
|
100
|
+
providers.push(userAuth);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
serverConfig.auth = new CompositeAuth(providers);
|
|
104
|
+
|
|
105
|
+
// If cloud auth is enabled but no RBAC is configured, add default cloud RBAC
|
|
106
|
+
if (cloudUserAuth && !serverConfig.rbac) {
|
|
107
|
+
serverConfig.rbac = new MastraRBACCloud({
|
|
108
|
+
roleMapping: {
|
|
109
|
+
owner: ['*'],
|
|
110
|
+
admin: ['*:read', '*:write', '*:execute'],
|
|
111
|
+
api: ['*:read', '*:write', '*:execute'],
|
|
112
|
+
member: ['*:read', '*:execute'],
|
|
113
|
+
viewer: ['*:read'],
|
|
114
|
+
_default: [],
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
82
118
|
}
|
|
83
119
|
`;
|
|
84
120
|
}
|
|
@@ -142,7 +178,7 @@ var RedisTransport = class extends logger$1.LoggerTransport {
|
|
|
142
178
|
await closeLogger();
|
|
143
179
|
cb(err);
|
|
144
180
|
}
|
|
145
|
-
|
|
181
|
+
listLogs(_args) {
|
|
146
182
|
return Promise.resolve({
|
|
147
183
|
logs: [],
|
|
148
184
|
total: 0,
|
|
@@ -151,7 +187,7 @@ var RedisTransport = class extends logger$1.LoggerTransport {
|
|
|
151
187
|
hasMore: false
|
|
152
188
|
});
|
|
153
189
|
}
|
|
154
|
-
|
|
190
|
+
listLogsByRunId(_args) {
|
|
155
191
|
return Promise.resolve({
|
|
156
192
|
logs: [],
|
|
157
193
|
total: 0,
|
|
@@ -257,7 +293,7 @@ function detectPm({ path }) {
|
|
|
257
293
|
async function installDeps({ path, pm }) {
|
|
258
294
|
pm = pm ?? detectPm({ path });
|
|
259
295
|
logger.info(`Installing dependencies with ${pm} in ${path}`);
|
|
260
|
-
const args = ["install"];
|
|
296
|
+
const args = ["install", "--legacy-peer-deps=false", "--force"];
|
|
261
297
|
const { success, error: error$1 } = await runWithExeca({ cmd: pm, args, cwd: path });
|
|
262
298
|
if (!success) {
|
|
263
299
|
throw new error.MastraError(
|
|
@@ -317,15 +353,30 @@ function successEntrypoint() {
|
|
|
317
353
|
|
|
318
354
|
// src/index.ts
|
|
319
355
|
var CloudDeployer = class extends deployer.Deployer {
|
|
320
|
-
|
|
356
|
+
studio;
|
|
357
|
+
constructor({ studio } = {}) {
|
|
321
358
|
super({ name: "cloud" });
|
|
359
|
+
this.studio = studio ?? false;
|
|
360
|
+
}
|
|
361
|
+
async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
|
|
362
|
+
const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);
|
|
363
|
+
return {
|
|
364
|
+
...bundlerOptions,
|
|
365
|
+
externals: true
|
|
366
|
+
};
|
|
322
367
|
}
|
|
323
368
|
async deploy(_outputDirectory) {
|
|
324
369
|
}
|
|
325
|
-
async
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
370
|
+
async prepare(outputDirectory) {
|
|
371
|
+
await super.prepare(outputDirectory);
|
|
372
|
+
if (this.studio) {
|
|
373
|
+
const __filename = url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)));
|
|
374
|
+
const __dirname = path.dirname(__filename);
|
|
375
|
+
const studioServePath = path.join(outputDirectory, this.outputDir, "studio");
|
|
376
|
+
await esm.copy(path.join(path.dirname(__dirname), path.join("dist", "studio")), studioServePath, {
|
|
377
|
+
overwrite: true
|
|
378
|
+
});
|
|
379
|
+
}
|
|
329
380
|
}
|
|
330
381
|
async writePackageJson(outputDirectory, dependencies) {
|
|
331
382
|
const versions = await esm.readJSON(path.join(path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)))), "../versions.json"));
|
|
@@ -343,7 +394,9 @@ var CloudDeployer = class extends deployer.Deployer {
|
|
|
343
394
|
const currentCwd = process.cwd();
|
|
344
395
|
process.chdir(mastraDir);
|
|
345
396
|
const mastraEntryFile = getMastraEntryFile(mastraDir);
|
|
346
|
-
const
|
|
397
|
+
const mastraAppDir = path.join(mastraDir, MASTRA_DIRECTORY);
|
|
398
|
+
const discoveredTools = this.getAllToolPaths(mastraAppDir);
|
|
399
|
+
await this.prepare(outputDirectory);
|
|
347
400
|
await this._bundle(
|
|
348
401
|
this.getEntry(),
|
|
349
402
|
mastraEntryFile,
|
|
@@ -351,7 +404,7 @@ var CloudDeployer = class extends deployer.Deployer {
|
|
|
351
404
|
outputDirectory,
|
|
352
405
|
projectRoot: mastraDir
|
|
353
406
|
},
|
|
354
|
-
|
|
407
|
+
discoveredTools
|
|
355
408
|
);
|
|
356
409
|
process.chdir(currentCwd);
|
|
357
410
|
}
|
|
@@ -366,10 +419,9 @@ import { mastra } from '#mastra';
|
|
|
366
419
|
import { MultiLogger } from '@mastra/core/logger';
|
|
367
420
|
import { PinoLogger } from '@mastra/loggers';
|
|
368
421
|
import { HttpTransport } from '@mastra/loggers/http';
|
|
369
|
-
import { evaluate } from '@mastra/core/eval';
|
|
370
|
-
import { AvailableHooks, registerHook } from '@mastra/core/hooks';
|
|
371
422
|
import { LibSQLStore, LibSQLVector } from '@mastra/libsql';
|
|
372
|
-
import { scoreTracesWorkflow } from '@mastra/core/
|
|
423
|
+
import { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';
|
|
424
|
+
|
|
373
425
|
const startTime = process.env.RUNNER_START_TIME ? new Date(process.env.RUNNER_START_TIME).getTime() : Date.now();
|
|
374
426
|
const createNodeServerStartTime = Date.now();
|
|
375
427
|
|
|
@@ -408,58 +460,27 @@ const combinedLogger = existingLogger ? new MultiLogger([logger, existingLogger]
|
|
|
408
460
|
|
|
409
461
|
mastra.setLogger({ logger: combinedLogger });
|
|
410
462
|
|
|
411
|
-
if (mastra?.storage) {
|
|
412
|
-
mastra.storage.init()
|
|
413
|
-
}
|
|
414
|
-
|
|
415
463
|
if (process.env.MASTRA_STORAGE_URL && process.env.MASTRA_STORAGE_AUTH_TOKEN) {
|
|
416
464
|
const { MastraStorage } = await import('@mastra/core/storage');
|
|
417
465
|
logger.info('Using Mastra Cloud Storage: ' + process.env.MASTRA_STORAGE_URL)
|
|
418
466
|
const storage = new LibSQLStore({
|
|
467
|
+
id: 'mastra-cloud-storage-libsql',
|
|
419
468
|
url: process.env.MASTRA_STORAGE_URL,
|
|
420
469
|
authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,
|
|
421
470
|
})
|
|
422
471
|
const vector = new LibSQLVector({
|
|
423
|
-
|
|
472
|
+
id: 'mastra-cloud-storage-libsql-vector',
|
|
473
|
+
url: process.env.MASTRA_STORAGE_URL,
|
|
424
474
|
authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,
|
|
425
475
|
})
|
|
426
476
|
|
|
427
477
|
await storage.init()
|
|
428
478
|
mastra?.setStorage(storage)
|
|
429
|
-
|
|
430
|
-
mastra?.
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
evaluate({
|
|
435
|
-
agentName,
|
|
436
|
-
input,
|
|
437
|
-
metric,
|
|
438
|
-
output,
|
|
439
|
-
runId,
|
|
440
|
-
globalRunId: runId,
|
|
441
|
-
instructions,
|
|
442
|
-
});
|
|
443
|
-
});
|
|
444
|
-
registerHook(AvailableHooks.ON_EVALUATION, async traceObject => {
|
|
445
|
-
if (mastra?.storage) {
|
|
446
|
-
await mastra.storage.insert({
|
|
447
|
-
tableName: MastraStorage.TABLE_EVALS,
|
|
448
|
-
record: {
|
|
449
|
-
input: traceObject.input,
|
|
450
|
-
output: traceObject.output,
|
|
451
|
-
result: JSON.stringify(traceObject.result),
|
|
452
|
-
agent_name: traceObject.agentName,
|
|
453
|
-
metric_name: traceObject.metricName,
|
|
454
|
-
instructions: traceObject.instructions,
|
|
455
|
-
test_info: null,
|
|
456
|
-
global_run_id: traceObject.globalRunId,
|
|
457
|
-
run_id: traceObject.runId,
|
|
458
|
-
created_at: new Date().toISOString(),
|
|
459
|
-
},
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
});
|
|
479
|
+
} else {
|
|
480
|
+
const userStorage = mastra?.getStorage();
|
|
481
|
+
if (userStorage && !userStorage.disableInit) {
|
|
482
|
+
userStorage.init();
|
|
483
|
+
}
|
|
463
484
|
}
|
|
464
485
|
|
|
465
486
|
if (mastra?.getStorage()) {
|
|
@@ -468,7 +489,7 @@ if (mastra?.getStorage()) {
|
|
|
468
489
|
|
|
469
490
|
${getAuthEntrypoint()}
|
|
470
491
|
|
|
471
|
-
await createNodeServer(mastra, {
|
|
492
|
+
await createNodeServer(mastra, { studio: ${this.studio}, swaggerUI: false, tools: getToolExports(tools) });
|
|
472
493
|
|
|
473
494
|
${successEntrypoint()}
|
|
474
495
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/auth.ts","../src/utils/constants.ts","../src/utils/logger.ts","../src/utils/execa.ts","../src/utils/deps.ts","../src/utils/file.ts","../src/utils/report.ts","../src/index.ts"],"names":["os","createClient","LoggerTransport","resolve","PinoLogger","Transform","execa","fs","join","error","MastraError","FileService","Deployer","dirname","fileURLToPath","copy","readJSON"],"mappings":"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","file":"index.cjs","sourcesContent":["export function getAuthEntrypoint() {\n return `\n import { MastraAuthProvider } from '@mastra/core/server';\n\n class MastraCloudAuth extends MastraAuthProvider {\n constructor (auth) {\n super()\n this.auth = auth\n }\n\n async authenticateToken (...args) {\n if (typeof args[0] === 'string') {\n const token = args[0].replace('Bearer ', '');\n const validTokens = [];\n ${process.env.PLAYGROUND_JWT_TOKEN ? `validTokens.push('${process.env.PLAYGROUND_JWT_TOKEN}');` : ''}\n ${process.env.BUSINESS_JWT_TOKEN ? `validTokens.push('${process.env.BUSINESS_JWT_TOKEN}');` : ''}\n \n if (validTokens.includes(token)) {\n return { id: 'business-api' }\n }\n }\n return this.auth.authenticateToken(...args)\n }\n\n async authorizeUser (...args) {\n if (args[1] && args[1].path === '/api') {\n return true\n }\n if (args[0] && args[0].id === 'business-api') {\n return true\n }\n return this.auth.authorizeUser(...args)\n }\n }\n\n const serverConfig = mastra.getServer()\n if (serverConfig && serverConfig.experimental_auth) {\n const auth = serverConfig.experimental_auth\n serverConfig.experimental_auth = new MastraCloudAuth(auth)\n }\n `;\n}\n","import os from 'os';\n\nexport const LOCAL = process.env.LOCAL === 'true';\nexport const TEAM_ID: string = process.env.TEAM_ID ?? '';\nexport const PROJECT_ID: string = process.env.PROJECT_ID ?? '';\nexport const BUILD_ID: string = process.env.BUILD_ID ?? '';\nexport const BUILD_URL: string = process.env.BUILD_URL ?? '';\nexport const LOG_REDIS_URL: string = process.env.LOG_REDIS_URL ?? 'redis://localhost:6379';\nexport const BUSINESS_JWT_TOKEN: string = process.env.BUSINESS_JWT_TOKEN ?? '';\nexport const PLAYGROUND_JWT_TOKEN: string = process.env.PLAYGROUND_JWT_TOKEN ?? '';\nexport const USER_IP_ADDRESS: string = process.env.USER_IP_ADDRESS ?? '';\nexport const MASTRA_DIRECTORY: string = process.env.MASTRA_DIRECTORY ?? 'src/mastra';\nexport const PROJECT_ENV_VARS: Record<string, string> = safelyParseJson(process.env.PROJECT_ENV_VARS ?? '{}');\n\nexport const PROJECT_ROOT = LOCAL ? os.tmpdir() + '/project' : (process.env.PROJECT_ROOT ?? '/project');\n\nexport function safelyParseJson(json: string) {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n}\n","import type { TransformCallback } from 'stream';\nimport type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\nimport { LoggerTransport } from '@mastra/core/logger';\nimport { PinoLogger } from '@mastra/loggers';\nimport { createClient } from 'redis';\nimport { BUILD_ID, LOG_REDIS_URL, PROJECT_ID, TEAM_ID } from './constants.js';\n\nconst redisClient = createClient({\n url: LOG_REDIS_URL,\n});\n\nclass RedisTransport extends LoggerTransport {\n _transform(chunk: any, _encoding: string, callback: TransformCallback): void {\n chunk = chunk.toString();\n const logKey = `builder:logs:${TEAM_ID}:${PROJECT_ID}:${BUILD_ID}`;\n const ttl = 2 * 24 * 60 * 60; // 2 days in seconds\n const logData = typeof chunk === 'string' ? chunk : JSON.stringify(chunk);\n\n // Don't block the event loop - process logs asynchronously\n process.nextTick(async () => {\n try {\n // Connect to Redis if not already connected\n if (!redisClient.isOpen) {\n await redisClient.connect().catch(err => {\n console.error('Redis connection error:', err);\n });\n }\n\n // Use pipeline to batch Redis operations\n const pipeline = redisClient.multi();\n pipeline.rPush(logKey, logData);\n pipeline.expire(logKey, ttl);\n await pipeline.exec();\n } catch (err) {\n console.error('Redis logging error:', err);\n }\n });\n\n // Immediately pass through the chunk without waiting\n callback(null, chunk);\n }\n\n _write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean {\n if (typeof callback === 'function') {\n this._transform(chunk, encoding || 'utf8', callback);\n return true;\n }\n\n this._transform(chunk, encoding || 'utf8', (error: Error | null | undefined) => {\n if (error) console.error('Transform error in write:', error);\n });\n return true;\n }\n\n async _flush(): Promise<void> {\n // // Ensure the pipeline is closed and flushed\n // redisClient.quit().catch(err => {\n // console.error('Redis connection error:', err);\n // });\n // callback();\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n async _destroy(err: Error, cb: Function) {\n await closeLogger();\n cb(err);\n }\n\n getLogs(_args: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }> {\n return Promise.resolve({\n logs: [],\n total: 0,\n page: _args?.page ?? 1,\n perPage: _args?.perPage ?? 100,\n hasMore: false,\n });\n }\n\n getLogsByRunId(_args?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return Promise.resolve({\n logs: [],\n total: 0,\n page: _args?.page ?? 1,\n perPage: _args?.perPage ?? 100,\n hasMore: false,\n });\n }\n}\n\nexport const transport = new RedisTransport();\n\nexport const closeLogger = async () => {\n if (redisClient.isOpen) {\n setTimeout(async () => {\n await redisClient.quit();\n }, 10);\n }\n};\n\nexport const logger = new PinoLogger({\n level: 'info',\n transports: {\n redis: transport,\n },\n});\n","import { Transform } from 'stream';\nimport { execa } from 'execa';\nimport { PROJECT_ENV_VARS, PROJECT_ROOT } from './constants.js';\nimport { logger } from './logger.js';\n\nexport const createPinoStream = () => {\n return new Transform({\n transform(chunk, encoding, callback) {\n // Convert Buffer/string to string and trim whitespace\n const line = chunk.toString().trim();\n\n if (line) {\n // Log each line through Pino\n logger.info(line);\n }\n\n // Pass through the original data\n callback(null, chunk);\n },\n });\n};\n\nexport async function runWithExeca({\n cmd,\n args,\n cwd = process.cwd(),\n env = PROJECT_ENV_VARS,\n}: {\n cmd: string;\n args: string[];\n cwd?: string;\n env?: Record<string, string>;\n}): Promise<{ stdout?: string; stderr?: string; success: boolean; error?: Error }> {\n const pinoStream = createPinoStream();\n\n try {\n const subprocess = execa(cmd, args, {\n cwd,\n env: {\n ...process.env,\n ...env,\n },\n });\n\n // Pipe stdout and stderr through the Pino stream\n subprocess.stdout?.pipe(pinoStream);\n subprocess.stderr?.pipe(pinoStream);\n\n const { stdout, stderr, exitCode } = await subprocess;\n return { stdout, stderr, success: exitCode === 0 };\n } catch (error) {\n logger.error(`Process failed: ${error}`);\n return { success: false, error: error instanceof Error ? error : new Error(String(error)) };\n }\n}\n\nexport function runWithChildProcess(cmd: string, args: string[]): { stdout?: string; stderr?: string } {\n const pinoStream = createPinoStream();\n\n try {\n const { stdout, stderr } = require('child_process').spawnSync(cmd, args, {\n cwd: PROJECT_ROOT,\n encoding: 'utf8',\n shell: true,\n env: {\n ...process.env,\n ...PROJECT_ENV_VARS,\n },\n maxBuffer: 1024 * 1024 * 10, // 10MB buffer\n });\n\n if (stdout) {\n pinoStream.write(stdout);\n }\n if (stderr) {\n pinoStream.write(stderr);\n }\n\n pinoStream.end();\n return { stdout, stderr };\n } catch (error) {\n logger.error('Process failed' + error);\n pinoStream.end();\n return {};\n }\n}\n","import * as fs from 'fs';\nimport { join, resolve } from 'path';\n\nimport { MastraError } from '@mastra/core/error';\nimport { runWithExeca } from './execa.js';\nimport { logger } from './logger.js';\n\nconst MEMOIZED = new Map();\n\nfunction findLockFile(dir: string): string | null {\n const lockFiles = ['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lock'];\n for (const file of lockFiles) {\n if (fs.existsSync(join(dir, file))) {\n return file;\n }\n }\n const parentDir = resolve(dir, '..');\n if (parentDir !== dir) {\n return findLockFile(parentDir);\n }\n return null;\n}\n\nexport function detectPm({ path }: { path: string }): string {\n const cached = MEMOIZED.get(path);\n if (cached) {\n return cached;\n }\n\n const lockFile = findLockFile(path);\n let pm: string = 'npm';\n switch (lockFile) {\n case 'pnpm-lock.yaml':\n pm = 'pnpm';\n break;\n case 'package-lock.json':\n pm = 'npm';\n break;\n case 'yarn.lock':\n pm = 'yarn';\n break;\n case 'bun.lock':\n pm = 'bun';\n break;\n default:\n pm = 'npm';\n }\n\n MEMOIZED.set(path, pm);\n return pm;\n}\n\nexport async function installNodeVersion({ path }: { path: string }) {\n let nvmrcExists = false;\n let nodeVersionExists = false;\n\n try {\n fs.accessSync(join(path, '.nvmrc'));\n nvmrcExists = true;\n } catch {\n // File does not exist\n }\n\n try {\n fs.accessSync(join(path, '.node-version'));\n nodeVersionExists = true;\n } catch {\n // File does not exist\n }\n\n if (nvmrcExists || nodeVersionExists) {\n logger.info('Node version file found, installing specified Node.js version...');\n const { success, error } = await runWithExeca({\n cmd: 'n',\n args: ['auto'],\n cwd: path,\n });\n if (!success) {\n throw new MastraError(\n {\n id: 'NODE_FAIL_INSTALL_SPECIFIED_VERSION',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n }\n}\n\nexport async function installDeps({ path, pm }: { path: string; pm?: string }) {\n pm = pm ?? detectPm({ path });\n logger.info(`Installing dependencies with ${pm} in ${path}`);\n const args = ['install'];\n const { success, error } = await runWithExeca({ cmd: pm, args, cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_INSTALL_DEPS',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runInstallCommand({ path, installCommand }: { path: string; installCommand: string }) {\n logger.info(`Running install command ${installCommand} in workspace with ${path}`);\n const { success, error } = await runWithExeca({ cmd: 'sh', args: ['-c', installCommand], cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_CUSTOM_INSTALL_COMMAND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runScript({ scriptName, path, args }: { scriptName: string; path: string; args?: string[] }) {\n const pm = detectPm({ path });\n logger.info(`Running script ${scriptName} in workspace with ${pm}`);\n const { success, error } = await runWithExeca({\n cmd: pm,\n args: pm === 'npm' ? ['run', scriptName, ...(args ?? [])] : [scriptName, ...(args ?? [])],\n cwd: path,\n });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_BUILD_SCRIPT',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runBuildCommand({ command, path }: { command: string; path: string }) {\n logger.info(`Running build command ${command}`);\n const { success, error } = await runWithExeca({ cmd: 'sh', args: ['-c', command], cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_BUILD_COMMAND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n","import { join } from 'path';\nimport { MastraError } from '@mastra/core/error';\nimport { FileService } from '@mastra/deployer';\n\nimport { MASTRA_DIRECTORY } from './constants.js';\n\nexport function getMastraEntryFile(mastraDir: string) {\n try {\n const fileService = new FileService();\n return fileService.getFirstExistingFile([\n join(mastraDir, MASTRA_DIRECTORY, 'index.ts'),\n join(mastraDir, MASTRA_DIRECTORY, 'index.js'),\n ]);\n } catch (error) {\n throw new MastraError(\n {\n id: 'MASTRA_ENTRY_FILE_NOT_FOUND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n","import { PROJECT_ID, BUILD_ID, BUILD_URL, USER_IP_ADDRESS } from './constants.js';\n\nexport function successEntrypoint() {\n return `\n if (process.env.CI !== 'true') {\n await fetch('${process.env.REPORTER_API_URL}', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ${process.env.REPORTER_API_URL_AUTH_TOKEN}',\n },\n body: JSON.stringify(${JSON.stringify({\n projectId: PROJECT_ID,\n buildId: BUILD_ID,\n status: 'success',\n url: BUILD_URL,\n userIpAddress: USER_IP_ADDRESS,\n })}),\n }).catch(err => {\n console.error('Failed to report build status to monitoring service', {\n error: err,\n });\n })\n }\n `;\n}\n","import { fileURLToPath } from 'node:url';\nimport { join, dirname } from 'path';\nimport { Deployer } from '@mastra/deployer';\nimport { copy, readJSON } from 'fs-extra/esm';\n\nimport { getAuthEntrypoint } from './utils/auth.js';\nimport { MASTRA_DIRECTORY, BUILD_ID, PROJECT_ID, TEAM_ID } from './utils/constants.js';\nimport { installDeps } from './utils/deps.js';\nimport { getMastraEntryFile } from './utils/file.js';\nimport { successEntrypoint } from './utils/report.js';\n\nexport class CloudDeployer extends Deployer {\n constructor() {\n super({ name: 'cloud' });\n }\n\n async deploy(_outputDirectory: string): Promise<void> {}\n async writeInstrumentationFile(outputDirectory: string) {\n const instrumentationFile = join(outputDirectory, 'instrumentation.mjs');\n const __dirname = dirname(fileURLToPath(import.meta.url));\n\n await copy(join(__dirname, '../templates', 'instrumentation-template.js'), instrumentationFile);\n }\n async writePackageJson(outputDirectory: string, dependencies: Map<string, string>) {\n const versions = (await readJSON(join(dirname(fileURLToPath(import.meta.url)), '../versions.json'))) as\n | Record<string, string>\n | undefined;\n for (const [pkgName, version] of Object.entries(versions || {})) {\n dependencies.set(pkgName, version);\n }\n\n return super.writePackageJson(outputDirectory, dependencies);\n }\n\n async lint() {}\n\n protected async installDependencies(outputDirectory: string, _rootDir = process.cwd()) {\n await installDeps({ path: join(outputDirectory, 'output'), pm: 'npm' });\n }\n\n async bundle(mastraDir: string, outputDirectory: string): Promise<void> {\n const currentCwd = process.cwd();\n process.chdir(mastraDir);\n\n const mastraEntryFile = getMastraEntryFile(mastraDir);\n\n const defaultToolsPath = join(mastraDir, MASTRA_DIRECTORY, 'tools');\n\n await this._bundle(\n this.getEntry(),\n mastraEntryFile,\n {\n outputDirectory,\n projectRoot: mastraDir,\n },\n [defaultToolsPath],\n );\n process.chdir(currentCwd);\n }\n\n getAuthEntrypoint() {\n return getAuthEntrypoint();\n }\n\n private getEntry(): string {\n return `\nimport { createNodeServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { mastra } from '#mastra';\nimport { MultiLogger } from '@mastra/core/logger';\nimport { PinoLogger } from '@mastra/loggers';\nimport { HttpTransport } from '@mastra/loggers/http';\nimport { evaluate } from '@mastra/core/eval';\nimport { AvailableHooks, registerHook } from '@mastra/core/hooks';\nimport { LibSQLStore, LibSQLVector } from '@mastra/libsql';\nimport { scoreTracesWorkflow } from '@mastra/core/scores/scoreTraces';\nconst startTime = process.env.RUNNER_START_TIME ? new Date(process.env.RUNNER_START_TIME).getTime() : Date.now();\nconst createNodeServerStartTime = Date.now();\n\nconsole.log(JSON.stringify({\n message: \"Server starting\",\n operation: 'builder.createNodeServer',\n operation_startTime: createNodeServerStartTime,\n type: \"READINESS\",\n startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n\nconst transports = {}\nif (process.env.CI !== 'true') {\n if (process.env.BUSINESS_API_RUNNER_LOGS_ENDPOINT) {\n transports.default = new HttpTransport({\n url: process.env.BUSINESS_API_RUNNER_LOGS_ENDPOINT,\n headers: {\n Authorization: 'Bearer ' + process.env.BUSINESS_JWT_TOKEN,\n },\n });\n }\n}\n\nconst logger = new PinoLogger({\n name: 'MastraCloud',\n transports,\n level: 'debug',\n});\nconst existingLogger = mastra?.getLogger();\nconst combinedLogger = existingLogger ? new MultiLogger([logger, existingLogger]) : logger;\n\nmastra.setLogger({ logger: combinedLogger });\n\nif (mastra?.storage) {\n mastra.storage.init()\n}\n\nif (process.env.MASTRA_STORAGE_URL && process.env.MASTRA_STORAGE_AUTH_TOKEN) {\n const { MastraStorage } = await import('@mastra/core/storage');\n logger.info('Using Mastra Cloud Storage: ' + process.env.MASTRA_STORAGE_URL)\n const storage = new LibSQLStore({\n url: process.env.MASTRA_STORAGE_URL,\n authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,\n })\n const vector = new LibSQLVector({\n connectionUrl: process.env.MASTRA_STORAGE_URL,\n authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,\n })\n\n await storage.init()\n mastra?.setStorage(storage)\n\n mastra?.memory?.setStorage(storage)\n mastra?.memory?.setVector(vector)\n\n registerHook(AvailableHooks.ON_GENERATION, ({ input, output, metric, runId, agentName, instructions }) => {\n evaluate({\n agentName,\n input,\n metric,\n output,\n runId,\n globalRunId: runId,\n instructions,\n });\n });\n registerHook(AvailableHooks.ON_EVALUATION, async traceObject => {\n if (mastra?.storage) {\n await mastra.storage.insert({\n tableName: MastraStorage.TABLE_EVALS,\n record: {\n input: traceObject.input,\n output: traceObject.output,\n result: JSON.stringify(traceObject.result),\n agent_name: traceObject.agentName,\n metric_name: traceObject.metricName,\n instructions: traceObject.instructions,\n test_info: null,\n global_run_id: traceObject.globalRunId,\n run_id: traceObject.runId,\n created_at: new Date().toISOString(),\n },\n });\n }\n });\n}\n\nif (mastra?.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\n${getAuthEntrypoint()}\n\nawait createNodeServer(mastra, { playground: false, swaggerUI: false, tools: getToolExports(tools) });\n\n${successEntrypoint()}\n\nconsole.log(JSON.stringify({\n message: \"Server started\",\n operation: 'builder.createNodeServer',\n operation_startTime: createNodeServerStartTime,\n operation_durationMs: Date.now() - createNodeServerStartTime,\n type: \"READINESS\",\n startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n\n\nconsole.log(JSON.stringify({\n message: \"Runner Initialized\",\n type: \"READINESS\",\n startTime,\n durationMs: Date.now() - startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/auth.ts","../src/utils/constants.ts","../src/utils/logger.ts","../src/utils/execa.ts","../src/utils/deps.ts","../src/utils/file.ts","../src/utils/report.ts","../src/index.ts"],"names":["os","createClient","LoggerTransport","resolve","PinoLogger","Transform","execa","fs","join","error","MastraError","FileService","Deployer","fileURLToPath","dirname","copy","readJSON"],"mappings":"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","file":"index.cjs","sourcesContent":["export function getAuthEntrypoint() {\n const tokensObject: Record<string, { id: string; role: string }> = {};\n\n if (process.env.PLAYGROUND_JWT_TOKEN) {\n tokensObject[process.env.PLAYGROUND_JWT_TOKEN] = { id: 'business-api', role: 'api' };\n }\n if (process.env.BUSINESS_JWT_TOKEN) {\n tokensObject[process.env.BUSINESS_JWT_TOKEN] = { id: 'business-api', role: 'api' };\n }\n\n return `\n import { SimpleAuth, CompositeAuth } from '@mastra/core/server';\n import { MastraCloudAuthProvider, MastraRBACCloud } from '@mastra/auth-cloud';\n\n // Service token auth (for business-api, playground internal calls)\n class MastraCloudServiceAuth extends SimpleAuth {\n constructor() {\n super({\n tokens: ${JSON.stringify(tokensObject)}\n });\n }\n\n async authorizeUser(user, request) {\n // Allow access to /api path\n if (request && request.url && new URL(request.url).pathname === '/api') {\n return true;\n }\n // Allow access for business-api users\n if (user && user.id === 'business-api') {\n return true;\n }\n return false;\n }\n }\n\n const serviceAuth = new MastraCloudServiceAuth();\n\n // Cloud user auth (for end users via OAuth)\n // Only enabled if MASTRA_CLOUD_API_URL is set\n let cloudUserAuth = null;\n if (process.env.MASTRA_CLOUD_API_URL) {\n cloudUserAuth = new MastraCloudAuthProvider({\n projectId: process.env.PROJECT_ID,\n cloudBaseUrl: process.env.MASTRA_CLOUD_API_URL,\n callbackUrl: process.env.MASTRA_CLOUD_CALLBACK_URL || \\`\\${process.env.MASTRA_CLOUD_API_URL}/auth/callback\\`,\n });\n }\n\n const serverConfig = mastra.getServer();\n const userAuth = serverConfig?.auth;\n\n // Only enable auth if cloudUserAuth or userAuth are defined\n if (serverConfig && (cloudUserAuth || userAuth)) {\n // Build provider list: service auth first, then cloud user auth, then user's custom auth\n const providers = [serviceAuth];\n if (cloudUserAuth) {\n providers.push(cloudUserAuth);\n }\n if (userAuth) {\n providers.push(userAuth);\n }\n\n serverConfig.auth = new CompositeAuth(providers);\n\n // If cloud auth is enabled but no RBAC is configured, add default cloud RBAC\n if (cloudUserAuth && !serverConfig.rbac) {\n serverConfig.rbac = new MastraRBACCloud({\n roleMapping: {\n owner: ['*'],\n admin: ['*:read', '*:write', '*:execute'],\n api: ['*:read', '*:write', '*:execute'],\n member: ['*:read', '*:execute'],\n viewer: ['*:read'],\n _default: [],\n },\n });\n }\n }\n `;\n}\n","import os from 'node:os';\n\nexport const LOCAL = process.env.LOCAL === 'true';\nexport const TEAM_ID: string = process.env.TEAM_ID ?? '';\nexport const PROJECT_ID: string = process.env.PROJECT_ID ?? '';\nexport const BUILD_ID: string = process.env.BUILD_ID ?? '';\nexport const BUILD_URL: string = process.env.BUILD_URL ?? '';\nexport const LOG_REDIS_URL: string = process.env.LOG_REDIS_URL ?? 'redis://localhost:6379';\nexport const BUSINESS_JWT_TOKEN: string = process.env.BUSINESS_JWT_TOKEN ?? '';\nexport const PLAYGROUND_JWT_TOKEN: string = process.env.PLAYGROUND_JWT_TOKEN ?? '';\nexport const USER_IP_ADDRESS: string = process.env.USER_IP_ADDRESS ?? '';\nexport const MASTRA_DIRECTORY: string = process.env.MASTRA_DIRECTORY ?? 'src/mastra';\nexport const PROJECT_ENV_VARS: Record<string, string> = safelyParseJson(process.env.PROJECT_ENV_VARS ?? '{}');\n\nexport const PROJECT_ROOT = LOCAL ? os.tmpdir() + '/project' : (process.env.PROJECT_ROOT ?? '/project');\n\nexport function safelyParseJson(json: string) {\n try {\n return JSON.parse(json);\n } catch {\n return {};\n }\n}\n","import type { TransformCallback } from 'node:stream';\nimport type { BaseLogMessage, LogLevel } from '@mastra/core/logger';\nimport { LoggerTransport } from '@mastra/core/logger';\nimport { PinoLogger } from '@mastra/loggers';\nimport { createClient } from 'redis';\nimport { BUILD_ID, LOG_REDIS_URL, PROJECT_ID, TEAM_ID } from './constants.js';\n\nconst redisClient = createClient({\n url: LOG_REDIS_URL,\n});\n\nclass RedisTransport extends LoggerTransport {\n _transform(chunk: any, _encoding: string, callback: TransformCallback): void {\n chunk = chunk.toString();\n const logKey = `builder:logs:${TEAM_ID}:${PROJECT_ID}:${BUILD_ID}`;\n const ttl = 2 * 24 * 60 * 60; // 2 days in seconds\n const logData = typeof chunk === 'string' ? chunk : JSON.stringify(chunk);\n\n // Don't block the event loop - process logs asynchronously\n process.nextTick(async () => {\n try {\n // Connect to Redis if not already connected\n if (!redisClient.isOpen) {\n await redisClient.connect().catch(err => {\n console.error('Redis connection error:', err);\n });\n }\n\n // Use pipeline to batch Redis operations\n const pipeline = redisClient.multi();\n pipeline.rPush(logKey, logData);\n pipeline.expire(logKey, ttl);\n await pipeline.exec();\n } catch (err) {\n console.error('Redis logging error:', err);\n }\n });\n\n // Immediately pass through the chunk without waiting\n callback(null, chunk);\n }\n\n _write(chunk: any, encoding?: string, callback?: (error?: Error | null) => void): boolean {\n if (typeof callback === 'function') {\n this._transform(chunk, encoding || 'utf8', callback);\n return true;\n }\n\n this._transform(chunk, encoding || 'utf8', (error: Error | null | undefined) => {\n if (error) console.error('Transform error in write:', error);\n });\n return true;\n }\n\n async _flush(): Promise<void> {\n // // Ensure the pipeline is closed and flushed\n // redisClient.quit().catch(err => {\n // console.error('Redis connection error:', err);\n // });\n // callback();\n await new Promise(resolve => setTimeout(resolve, 10));\n }\n\n async _destroy(err: Error, cb: Function) {\n await closeLogger();\n cb(err);\n }\n\n listLogs(_args: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }> {\n return Promise.resolve({\n logs: [],\n total: 0,\n page: _args?.page ?? 1,\n perPage: _args?.perPage ?? 100,\n hasMore: false,\n });\n }\n\n listLogsByRunId(_args?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n returnPaginationResults?: boolean;\n page?: number;\n perPage?: number;\n }): Promise<{\n logs: BaseLogMessage[];\n total: number;\n page: number;\n perPage: number;\n hasMore: boolean;\n }> {\n return Promise.resolve({\n logs: [],\n total: 0,\n page: _args?.page ?? 1,\n perPage: _args?.perPage ?? 100,\n hasMore: false,\n });\n }\n}\n\nexport const transport = new RedisTransport();\n\nexport const closeLogger = async () => {\n if (redisClient.isOpen) {\n setTimeout(async () => {\n await redisClient.quit();\n }, 10);\n }\n};\n\nexport const logger = new PinoLogger({\n level: 'info',\n transports: {\n redis: transport,\n },\n});\n","import { Transform } from 'node:stream';\nimport { execa } from 'execa';\nimport { PROJECT_ENV_VARS, PROJECT_ROOT } from './constants.js';\nimport { logger } from './logger.js';\n\nexport const createPinoStream = () => {\n return new Transform({\n transform(chunk, encoding, callback) {\n // Convert Buffer/string to string and trim whitespace\n const line = chunk.toString().trim();\n\n if (line) {\n // Log each line through Pino\n logger.info(line);\n }\n\n // Pass through the original data\n callback(null, chunk);\n },\n });\n};\n\nexport async function runWithExeca({\n cmd,\n args,\n cwd = process.cwd(),\n env = PROJECT_ENV_VARS,\n}: {\n cmd: string;\n args: string[];\n cwd?: string;\n env?: Record<string, string>;\n}): Promise<{ stdout?: string; stderr?: string; success: boolean; error?: Error }> {\n const pinoStream = createPinoStream();\n\n try {\n const subprocess = execa(cmd, args, {\n cwd,\n env: {\n ...process.env,\n ...env,\n },\n });\n\n // Pipe stdout and stderr through the Pino stream\n subprocess.stdout?.pipe(pinoStream);\n subprocess.stderr?.pipe(pinoStream);\n\n const { stdout, stderr, exitCode } = await subprocess;\n return { stdout, stderr, success: exitCode === 0 };\n } catch (error) {\n logger.error(`Process failed: ${error}`);\n return { success: false, error: error instanceof Error ? error : new Error(String(error)) };\n }\n}\n\nexport function runWithChildProcess(cmd: string, args: string[]): { stdout?: string; stderr?: string } {\n const pinoStream = createPinoStream();\n\n try {\n const { stdout, stderr } = require('node:child_process').spawnSync(cmd, args, {\n cwd: PROJECT_ROOT,\n encoding: 'utf8',\n shell: true,\n env: {\n ...process.env,\n ...PROJECT_ENV_VARS,\n },\n maxBuffer: 1024 * 1024 * 10, // 10MB buffer\n });\n\n if (stdout) {\n pinoStream.write(stdout);\n }\n if (stderr) {\n pinoStream.write(stderr);\n }\n\n pinoStream.end();\n return { stdout, stderr };\n } catch (error) {\n logger.error('Process failed' + error);\n pinoStream.end();\n return {};\n }\n}\n","import * as fs from 'node:fs';\nimport { join, resolve } from 'node:path';\n\nimport { MastraError } from '@mastra/core/error';\nimport { runWithExeca } from './execa.js';\nimport { logger } from './logger.js';\n\nconst MEMOIZED = new Map();\n\nfunction findLockFile(dir: string): string | null {\n const lockFiles = ['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lock'];\n for (const file of lockFiles) {\n if (fs.existsSync(join(dir, file))) {\n return file;\n }\n }\n const parentDir = resolve(dir, '..');\n if (parentDir !== dir) {\n return findLockFile(parentDir);\n }\n return null;\n}\n\nexport function detectPm({ path }: { path: string }): string {\n const cached = MEMOIZED.get(path);\n if (cached) {\n return cached;\n }\n\n const lockFile = findLockFile(path);\n let pm: string = 'npm';\n switch (lockFile) {\n case 'pnpm-lock.yaml':\n pm = 'pnpm';\n break;\n case 'package-lock.json':\n pm = 'npm';\n break;\n case 'yarn.lock':\n pm = 'yarn';\n break;\n case 'bun.lock':\n pm = 'bun';\n break;\n default:\n pm = 'npm';\n }\n\n MEMOIZED.set(path, pm);\n return pm;\n}\n\nexport async function installNodeVersion({ path }: { path: string }) {\n let nvmrcExists = false;\n let nodeVersionExists = false;\n\n try {\n fs.accessSync(join(path, '.nvmrc'));\n nvmrcExists = true;\n } catch {\n // File does not exist\n }\n\n try {\n fs.accessSync(join(path, '.node-version'));\n nodeVersionExists = true;\n } catch {\n // File does not exist\n }\n\n if (nvmrcExists || nodeVersionExists) {\n logger.info('Node version file found, installing specified Node.js version...');\n const { success, error } = await runWithExeca({\n cmd: 'n',\n args: ['auto'],\n cwd: path,\n });\n if (!success) {\n throw new MastraError(\n {\n id: 'NODE_FAIL_INSTALL_SPECIFIED_VERSION',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n }\n}\n\nexport async function installDeps({ path, pm }: { path: string; pm?: string }) {\n pm = pm ?? detectPm({ path });\n logger.info(`Installing dependencies with ${pm} in ${path}`);\n // --force is needed to install peer deps for external packages in the mastra output directory\n // --legacy-peer-deps=false is needed to override other overrides by the repo package manager such as pnpm. Pnpm would set it to true\n const args = ['install', '--legacy-peer-deps=false', '--force'];\n const { success, error } = await runWithExeca({ cmd: pm, args, cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_INSTALL_DEPS',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runInstallCommand({ path, installCommand }: { path: string; installCommand: string }) {\n logger.info(`Running install command ${installCommand} in workspace with ${path}`);\n const { success, error } = await runWithExeca({ cmd: 'sh', args: ['-c', installCommand], cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_CUSTOM_INSTALL_COMMAND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runScript({ scriptName, path, args }: { scriptName: string; path: string; args?: string[] }) {\n const pm = detectPm({ path });\n logger.info(`Running script ${scriptName} in workspace with ${pm}`);\n const { success, error } = await runWithExeca({\n cmd: pm,\n args: pm === 'npm' ? ['run', scriptName, ...(args ?? [])] : [scriptName, ...(args ?? [])],\n cwd: path,\n });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_BUILD_SCRIPT',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n\nexport async function runBuildCommand({ command, path }: { command: string; path: string }) {\n logger.info(`Running build command ${command}`);\n const { success, error } = await runWithExeca({ cmd: 'sh', args: ['-c', command], cwd: path });\n if (!success) {\n throw new MastraError(\n {\n id: 'FAIL_BUILD_COMMAND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n","import { join } from 'node:path';\nimport { MastraError } from '@mastra/core/error';\nimport { FileService } from '@mastra/deployer';\n\nimport { MASTRA_DIRECTORY } from './constants.js';\n\nexport function getMastraEntryFile(mastraDir: string) {\n try {\n const fileService = new FileService();\n return fileService.getFirstExistingFile([\n join(mastraDir, MASTRA_DIRECTORY, 'index.ts'),\n join(mastraDir, MASTRA_DIRECTORY, 'index.js'),\n ]);\n } catch (error) {\n throw new MastraError(\n {\n id: 'MASTRA_ENTRY_FILE_NOT_FOUND',\n category: 'USER',\n domain: 'DEPLOYER',\n },\n error,\n );\n }\n}\n","import { PROJECT_ID, BUILD_ID, BUILD_URL, USER_IP_ADDRESS } from './constants.js';\n\nexport function successEntrypoint() {\n return `\n if (process.env.CI !== 'true') {\n await fetch('${process.env.REPORTER_API_URL}', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ${process.env.REPORTER_API_URL_AUTH_TOKEN}',\n },\n body: JSON.stringify(${JSON.stringify({\n projectId: PROJECT_ID,\n buildId: BUILD_ID,\n status: 'success',\n url: BUILD_URL,\n userIpAddress: USER_IP_ADDRESS,\n })}),\n }).catch(err => {\n console.error('Failed to report build status to monitoring service', {\n error: err,\n });\n })\n }\n `;\n}\n","import { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { Config } from '@mastra/core/mastra';\nimport { Deployer } from '@mastra/deployer';\nimport { copy, readJSON } from 'fs-extra/esm';\n\nimport { getAuthEntrypoint } from './utils/auth.js';\nimport { MASTRA_DIRECTORY, BUILD_ID, PROJECT_ID, TEAM_ID } from './utils/constants.js';\nimport { installDeps } from './utils/deps.js';\nimport { getMastraEntryFile } from './utils/file.js';\nimport { successEntrypoint } from './utils/report.js';\n\nexport class CloudDeployer extends Deployer {\n private studio: boolean;\n\n constructor({ studio }: { studio?: boolean } = {}) {\n super({ name: 'cloud' });\n this.studio = studio ?? false;\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const bundlerOptions = await super.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n\n // Always force externals: true for cloud deployments.\n // The cloud deployer installs all dependencies from npm into node_modules,\n // so bundling them inline serves no purpose. Bundling inline can also cause\n // circular module evaluation deadlocks when dynamic imports (e.g. in\n // MemoryLibSQL.init()) reference chunks that depend back on the entry module,\n // resulting in \"Detected unsettled top-level await\" warnings.\n return {\n ...bundlerOptions,\n externals: true,\n };\n }\n\n async deploy(_outputDirectory: string): Promise<void> {}\n\n async prepare(outputDirectory: string): Promise<void> {\n await super.prepare(outputDirectory);\n\n if (this.studio) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n\n const studioServePath = join(outputDirectory, this.outputDir, 'studio');\n await copy(join(dirname(__dirname), join('dist', 'studio')), studioServePath, {\n overwrite: true,\n });\n }\n }\n async writePackageJson(outputDirectory: string, dependencies: Map<string, string>) {\n const versions = (await readJSON(join(dirname(fileURLToPath(import.meta.url)), '../versions.json'))) as\n | Record<string, string>\n | undefined;\n for (const [pkgName, version] of Object.entries(versions || {})) {\n dependencies.set(pkgName, version);\n }\n\n return super.writePackageJson(outputDirectory, dependencies);\n }\n\n async lint() {}\n\n protected async installDependencies(outputDirectory: string, _rootDir = process.cwd()) {\n await installDeps({ path: join(outputDirectory, 'output'), pm: 'npm' });\n }\n\n async bundle(mastraDir: string, outputDirectory: string): Promise<void> {\n const currentCwd = process.cwd();\n process.chdir(mastraDir);\n\n const mastraEntryFile = getMastraEntryFile(mastraDir);\n\n const mastraAppDir = join(mastraDir, MASTRA_DIRECTORY);\n\n // Use the getAllToolPaths method to prepare tools paths\n const discoveredTools = this.getAllToolPaths(mastraAppDir);\n\n await this.prepare(outputDirectory);\n await this._bundle(\n this.getEntry(),\n mastraEntryFile,\n {\n outputDirectory,\n projectRoot: mastraDir,\n },\n discoveredTools,\n );\n process.chdir(currentCwd);\n }\n\n getAuthEntrypoint() {\n return getAuthEntrypoint();\n }\n\n private getEntry(): string {\n return `\nimport { createNodeServer, getToolExports } from '#server';\nimport { tools } from '#tools';\nimport { mastra } from '#mastra';\nimport { MultiLogger } from '@mastra/core/logger';\nimport { PinoLogger } from '@mastra/loggers';\nimport { HttpTransport } from '@mastra/loggers/http';\nimport { LibSQLStore, LibSQLVector } from '@mastra/libsql';\nimport { scoreTracesWorkflow } from '@mastra/core/evals/scoreTraces';\n\nconst startTime = process.env.RUNNER_START_TIME ? new Date(process.env.RUNNER_START_TIME).getTime() : Date.now();\nconst createNodeServerStartTime = Date.now();\n\nconsole.log(JSON.stringify({\n message: \"Server starting\",\n operation: 'builder.createNodeServer',\n operation_startTime: createNodeServerStartTime,\n type: \"READINESS\",\n startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n\nconst transports = {}\nif (process.env.CI !== 'true') {\n if (process.env.BUSINESS_API_RUNNER_LOGS_ENDPOINT) {\n transports.default = new HttpTransport({\n url: process.env.BUSINESS_API_RUNNER_LOGS_ENDPOINT,\n headers: {\n Authorization: 'Bearer ' + process.env.BUSINESS_JWT_TOKEN,\n },\n });\n }\n}\n\nconst logger = new PinoLogger({\n name: 'MastraCloud',\n transports,\n level: 'debug',\n});\nconst existingLogger = mastra?.getLogger();\nconst combinedLogger = existingLogger ? new MultiLogger([logger, existingLogger]) : logger;\n\nmastra.setLogger({ logger: combinedLogger });\n\nif (process.env.MASTRA_STORAGE_URL && process.env.MASTRA_STORAGE_AUTH_TOKEN) {\n const { MastraStorage } = await import('@mastra/core/storage');\n logger.info('Using Mastra Cloud Storage: ' + process.env.MASTRA_STORAGE_URL)\n const storage = new LibSQLStore({\n id: 'mastra-cloud-storage-libsql',\n url: process.env.MASTRA_STORAGE_URL,\n authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,\n })\n const vector = new LibSQLVector({\n id: 'mastra-cloud-storage-libsql-vector',\n url: process.env.MASTRA_STORAGE_URL,\n authToken: process.env.MASTRA_STORAGE_AUTH_TOKEN,\n })\n\n await storage.init()\n mastra?.setStorage(storage)\n} else {\n const userStorage = mastra?.getStorage();\n if (userStorage && !userStorage.disableInit) {\n userStorage.init();\n }\n}\n\nif (mastra?.getStorage()) {\n mastra.__registerInternalWorkflow(scoreTracesWorkflow);\n}\n\n${getAuthEntrypoint()}\n\nawait createNodeServer(mastra, { studio: ${this.studio}, swaggerUI: false, tools: getToolExports(tools) });\n\n${successEntrypoint()}\n\nconsole.log(JSON.stringify({\n message: \"Server started\",\n operation: 'builder.createNodeServer',\n operation_startTime: createNodeServerStartTime,\n operation_durationMs: Date.now() - createNodeServerStartTime,\n type: \"READINESS\",\n startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n\n\nconsole.log(JSON.stringify({\n message: \"Runner Initialized\",\n type: \"READINESS\",\n startTime,\n durationMs: Date.now() - startTime,\n metadata: {\n teamId: \"${TEAM_ID}\",\n projectId: \"${PROJECT_ID}\",\n buildId: \"${BUILD_ID}\",\n },\n}));\n`;\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import type { Config } from '@mastra/core/mastra';
|
|
1
2
|
import { Deployer } from '@mastra/deployer';
|
|
2
3
|
export declare class CloudDeployer extends Deployer {
|
|
3
|
-
|
|
4
|
+
private studio;
|
|
5
|
+
constructor({ studio }?: {
|
|
6
|
+
studio?: boolean;
|
|
7
|
+
});
|
|
8
|
+
protected getUserBundlerOptions(mastraEntryFile: string, outputDirectory: string): Promise<NonNullable<Config['bundler']>>;
|
|
4
9
|
deploy(_outputDirectory: string): Promise<void>;
|
|
5
|
-
|
|
10
|
+
prepare(outputDirectory: string): Promise<void>;
|
|
6
11
|
writePackageJson(outputDirectory: string, dependencies: Map<string, string>): Promise<void>;
|
|
7
12
|
lint(): Promise<void>;
|
|
8
13
|
protected installDependencies(outputDirectory: string, _rootDir?: string): Promise<void>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,qBAAa,aAAc,SAAQ,QAAQ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,qBAAa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,MAAM,CAAU;gBAEZ,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;cAKjC,qBAAqB,CACnC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAepC,MAAM,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAW3E,IAAI;cAEM,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,SAAgB;IAI/E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBvE,iBAAiB;IAIjB,OAAO,CAAC,QAAQ;CA8GjB"}
|