decocms 4.246.2 → 4.246.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DOZzh9F_.js → AlertCircle-CywLLU7N.js} +1 -1
- package/dist/client/assets/{AreaChart-BEoF41lY.js → AreaChart-D_qhsjcn.js} +1 -1
- package/dist/client/assets/{ArrowLeft-D3IfTAWC.js → ArrowLeft-5kZnTkMw.js} +1 -1
- package/dist/client/assets/{ArrowUp-D1Whwq-K.js → ArrowUp-Drc1UvH8.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CibKwsqg.js → ArrowUpRight-BmVMgmrB.js} +1 -1
- package/dist/client/assets/{Check-CSFy6eOj.js → Check-BMTcpyw9.js} +1 -1
- package/dist/client/assets/{CheckCircle-BCbqPCn-.js → CheckCircle-DUIOLuHc.js} +1 -1
- package/dist/client/assets/{ChevronDown-DiERg-yU.js → ChevronDown-CRZWY5vZ.js} +1 -1
- package/dist/client/assets/{ChevronRight-H-_IIqWd.js → ChevronRight-D-hHdaJE.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-Bnz5tSS1.js → ChevronSelectorVertical-DfQTwZbh.js} +1 -1
- package/dist/client/assets/{ChevronUp-CT1Rb5MC.js → ChevronUp-AUp1Qpqu.js} +1 -1
- package/dist/client/assets/{Copy01-CzEeXGsa.js → Copy01-DsL2MX7-.js} +1 -1
- package/dist/client/assets/{CreditCard01-DTIKWUon.js → CreditCard01-DSiwLzu5.js} +1 -1
- package/dist/client/assets/{DotsVertical-Bqf_kSFh.js → DotsVertical-T-qNNFNq.js} +1 -1
- package/dist/client/assets/{Download01-BPvwRxeD.js → Download01-Dx5a-JSz.js} +1 -1
- package/dist/client/assets/{Eye-CDfbu42j.js → Eye-7PQLukgG.js} +1 -1
- package/dist/client/assets/{FilterLines-Dc1F-WNI.js → FilterLines-CrgP-FUu.js} +1 -1
- package/dist/client/assets/{Globe01-CHMths1B.js → Globe01-BIM1CfT5.js} +1 -1
- package/dist/client/assets/{Globe04-CIol-u19.js → Globe04-CFZMqgDC.js} +1 -1
- package/dist/client/assets/{HardDrive-Bs-QsH_i.js → HardDrive-D-plrf3i.js} +1 -1
- package/dist/client/assets/{Key01-WuBVakl2.js → Key01-CKfOfm2w.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BF7bmTAo.js → LayoutLeft-CZkuUfPg.js} +1 -1
- package/dist/client/assets/{LinkExternal01-kQgSYVkJ.js → LinkExternal01-B6Mm4hAd.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-Bvs7cZ-w.js → LockUnlocked01-BjEsmeyw.js} +1 -1
- package/dist/client/assets/{LogOut01-9xKoxZHy.js → LogOut01-C4uDW2hW.js} +1 -1
- package/dist/client/assets/{Monitor01-B5i4MO_v.js → Monitor01-DMCNMsNO.js} +1 -1
- package/dist/client/assets/{Palette-l5b6DG4Q.js → Palette-sGNsebP3.js} +1 -1
- package/dist/client/assets/{Play-AS6vVmkD.js → Play-CvUWjt5q.js} +1 -1
- package/dist/client/assets/{Plus-m61KPSTg.js → Plus-DPKssxLn.js} +1 -1
- package/dist/client/assets/{SearchLg-CDtXrrcW.js → SearchLg-L_JPa3fX.js} +1 -1
- package/dist/client/assets/{SearchMd-CF01LhHu.js → SearchMd-DHbBd3im.js} +1 -1
- package/dist/client/assets/{Settings02-CGZ0Ol25.js → Settings02-DyCd7JtA.js} +1 -1
- package/dist/client/assets/{Share07-Dc2LdheG.js → Share07-OGAtiC_R.js} +1 -1
- package/dist/client/assets/{Shield01-CkA8zl8k.js → Shield01-Ci_NiZAD.js} +1 -1
- package/dist/client/assets/{Stars01-Co5mOLjQ.js → Stars01-OuQBYZge.js} +1 -1
- package/dist/client/assets/{Stars02-CLHJV6ce.js → Stars02-Cp9bSUYT.js} +1 -1
- package/dist/client/assets/{Sun-Cz50Vxl-.js → Sun-B9dfSL2V.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BdWiZHby.js → SwitchHorizontal01-BhNLszpk.js} +1 -1
- package/dist/client/assets/{Tool01-D9lNVxCu.js → Tool01-BPmgbtqw.js} +1 -1
- package/dist/client/assets/{Tool02-DtJ6WkGT.js → Tool02-OPICFuOd.js} +1 -1
- package/dist/client/assets/{Trash01-BcRuo5Fe.js → Trash01-DgXUCXZR.js} +1 -1
- package/dist/client/assets/{TrendUp01-B2aFkzBy.js → TrendUp01-BfvESyFJ.js} +1 -1
- package/dist/client/assets/{Upload01-B1Z9PE0l.js → Upload01--adXJUt3.js} +1 -1
- package/dist/client/assets/{User01-D1UDDnNw.js → User01-Ddl7sykt.js} +1 -1
- package/dist/client/assets/UserSquare-DELWBgQx.js +1 -0
- package/dist/client/assets/{Users01-gv39jXBY.js → Users01-m82_DH1U.js} +1 -1
- package/dist/client/assets/{Users03-DM_1WdDy.js → Users03-D5uVoOJh.js} +1 -1
- package/dist/client/assets/{X-VMfnK-j5.js → X-GHDv2bPa.js} +1 -1
- package/dist/client/assets/{XCircle-D-ab7D3l.js → XCircle-Woz3hXm7.js} +1 -1
- package/dist/client/assets/{XClose-BmVO_SaY.js → XClose-C22JjfI5.js} +1 -1
- package/dist/client/assets/{YAxis-CYtp3V1k.js → YAxis-CTXvwn-w.js} +1 -1
- package/dist/client/assets/{Zap-BrJ2b2V7.js → Zap-DEkoWmnk.js} +1 -1
- package/dist/client/assets/{ZapSquare-BjQDrkMq.js → ZapSquare-Dk0j1NZT.js} +1 -1
- package/dist/client/assets/{access-gate-bmibgRvV.js → access-gate-CUuU4Akn.js} +1 -1
- package/dist/client/assets/agent-icon-BFfHpTj0.js +1 -0
- package/dist/client/assets/agents-list-B10S3S1o.js +1 -0
- package/dist/client/assets/ai-providers-D6M6vnH3.js +6 -0
- package/dist/client/assets/{alert-C6E9q71w.js → alert-CbzuL5U0.js} +1 -1
- package/dist/client/assets/{alert-dialog-DRGp9yFR.js → alert-dialog-B6efvq96.js} +1 -1
- package/dist/client/assets/api-keys-Be49xOHM.js +1 -0
- package/dist/client/assets/app-editor-Btw61HI8.js +1 -0
- package/dist/client/assets/{auth-Dk3-oFE7.js → auth-By9laq1a.js} +1 -1
- package/dist/client/assets/{auth-catchall-BB9-aq9V.js → auth-catchall-Dic0l2zL.js} +1 -1
- package/dist/client/assets/{auth-entry-C_2hGTBt.js → auth-entry-EiDYEymR.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B7n763Vx.js → auth-split-layout-D9kcoAJV.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BwcRtSiC.js → authenticate-and-persist-oauth-CjhkLgGL.js} +1 -1
- package/dist/client/assets/{automation-list-row-BIOSCgKN.js → automation-list-row-ByHEJHr4.js} +1 -1
- package/dist/client/assets/{automation-runs-D-R-Y_E3.js → automation-runs-CuJe3IJj.js} +16 -16
- package/dist/client/assets/automations-DRnBdfkP.js +1 -0
- package/dist/client/assets/{avatar-C448hZt-.js → avatar-XToRCTtg.js} +1 -1
- package/dist/client/assets/{badge-Bc-IWDm5.js → badge-DveTg52E.js} +1 -1
- package/dist/client/assets/{block-document-D__keZl9.js → block-document-CbRdyV4I.js} +1 -1
- package/dist/client/assets/{buckets-Dyp0YIko.js → buckets-HCO-gN-n.js} +1 -1
- package/dist/client/assets/bulk-category-panel-CZgZICpu.js +1 -0
- package/dist/client/assets/{capability-load-error-BPXMIbs3.js → capability-load-error-D9lVxIV_.js} +1 -1
- package/dist/client/assets/{card-CG7VHdDz.js → card-CzcIXv8O.js} +1 -1
- package/dist/client/assets/{cards-DY46VRdr.js → cards-CdIo4vf_.js} +1 -1
- package/dist/client/assets/category-editor-Nb4J4_cD.js +1 -0
- package/dist/client/assets/{chart-DoynaU7M.js → chart-CfPCrkm9.js} +1 -1
- package/dist/client/assets/{chat-context-D20WJCxs.js → chat-context-Dqusww-z.js} +5 -5
- package/dist/client/assets/{checkbox-BsGrD1YR.js → checkbox-BZtl3z8P.js} +1 -1
- package/dist/client/assets/choose-editor-CdvG_dim.js +1 -0
- package/dist/client/assets/{cli-auth-success-BBaOfXHx.js → cli-auth-success-CRHJTFXN.js} +1 -1
- package/dist/client/assets/collection-detail-BzgbN-Qy.js +1 -0
- package/dist/client/assets/{collection-display-button-CvRYqkOn.js → collection-display-button-CsTQ9UtS.js} +1 -1
- package/dist/client/assets/{collection-search-DGOZ00E9.js → collection-search-BAbgWU_h.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Pg9EfyUB.js → collection-table-wrapper-DebkUlwo.js} +1 -1
- package/dist/client/assets/{collection-tabs-DaZaBm6K.js → collection-tabs-BuB0qOUO.js} +1 -1
- package/dist/client/assets/{command-D63NDRD_.js → command-DWt73k63.js} +1 -1
- package/dist/client/assets/commerce-onboarding-DNDoGFKk.js +1 -0
- package/dist/client/assets/{connect-GnxEAvmg.js → connect-Cii_fgku.js} +2 -2
- package/dist/client/assets/connection-card-C6y7PdX8.js +1 -0
- package/dist/client/assets/connection-detail-D7Voz52Y.js +1 -0
- package/dist/client/assets/{connection-form-helpers-ZW-hGCeS.js → connection-form-helpers-CvmIulQM.js} +1 -1
- package/dist/client/assets/{connection-C_INLdxb.js → connection-ybedUfG8.js} +1 -1
- package/dist/client/assets/connections-B-Q5XAol.js +1 -0
- package/dist/client/assets/constants-BSYv1IkQ.js +1 -0
- package/dist/client/assets/{decopilot-sse-pool-CeSWLSEV.js → decopilot-sse-pool-Hm5cR6Ox.js} +1 -1
- package/dist/client/assets/{dialog-Ww_zj2g-.js → dialog-DF-CfFZo.js} +1 -1
- package/dist/client/assets/{domain-settings-C1hsjq6B.js → domain-settings-DyFCdtS5.js} +1 -1
- package/dist/client/assets/{drawer-lF-HaYn9.js → drawer-CDoSEnu9.js} +1 -1
- package/dist/client/assets/{dropdown-menu-ByKxU4Y4.js → dropdown-menu-CJxuIExP.js} +1 -1
- package/dist/client/assets/{empty-state-BJ2gnfVT.js → empty-state-CAvGBBF6.js} +1 -1
- package/dist/client/assets/extract-connection-data-DHCZqcQQ.js +1 -0
- package/dist/client/assets/file-explorer-iP4x_Yhy.js +2 -0
- package/dist/client/assets/{file-type-icon-B5W8k3cc.js → file-type-icon-DXPee-3o.js} +1 -1
- package/dist/client/assets/{form-BhElkTfE.js → form-3gPXzjO1.js} +1 -1
- package/dist/client/assets/general-VYZWN_XI.js +1 -0
- package/dist/client/assets/github-repo-picker-CbrjFpAT.js +1 -0
- package/dist/client/assets/{hooks-D72xT78n.js → hooks-2knfRhQG.js} +4 -4
- package/dist/client/assets/{index-DGV2vBko.js → index-BtSjLcb4.js} +1 -1
- package/dist/client/assets/index-C4tNsqrz.js +1 -0
- package/dist/client/assets/{index-CVShUKw1.js → index-CS8hxwi8.js} +1 -1
- package/dist/client/assets/{index-BGQowlvH.js → index-Cd5TgCBJ.js} +2 -2
- package/dist/client/assets/{index-COAHvcVh.js → index-ChP7VzHg.js} +49 -49
- package/dist/client/assets/{index-E8TCV-RN.js → index-CwnG996Y.js} +2 -2
- package/dist/client/assets/{index-CacyxM-B.js → index-DScyN1ng.js} +36 -36
- package/dist/client/assets/{index-GDSYOTBM.js → index-Dj9nFK99.js} +1 -1
- package/dist/client/assets/index-DukI1vFj.js +1 -0
- package/dist/client/assets/{index-redirect-DkpgAZX1.js → index-redirect-hmUlblcp.js} +1 -1
- package/dist/client/assets/{index-CSqLyX3L.js → index-xuoH-ELf.js} +1 -1
- package/dist/client/assets/{infra-billing-YoJpQK-_.js → infra-billing-6qUJ8FpF.js} +1 -1
- package/dist/client/assets/{input-B8ln-0Wl.js → input-B-WAAZ8l.js} +1 -1
- package/dist/client/assets/{integration-icon-CLbqw16t.js → integration-icon-h2cZJQ9Q.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DBZ3baH8.js → invite-member-dialog-DmbzPllG.js} +1 -1
- package/dist/client/assets/{label-CCAJCJOj.js → label-Cg9QkeNq.js} +1 -1
- package/dist/client/assets/{layout-kT_5r6yU.js → layout-DZIITT9R.js} +1 -1
- package/dist/client/assets/{login-CdH7we7T.js → login-DjS6vG5F.js} +1 -1
- package/dist/client/assets/{mcp-oauth-YJCTRoaW.js → mcp-oauth-frjOq5nr.js} +1 -1
- package/dist/client/assets/{members-DkH9jYrb.js → members-DvCHXlKd.js} +1 -1
- package/dist/client/assets/{monaco-editor-q7NTyRwe.js → monaco-editor-B9zykm3x.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DCpIn3aa.js → monitoring-stats-row-DeZ0cyol.js} +1 -1
- package/dist/client/assets/{multi-select-FeXmTrOe.js → multi-select-BeamEHNc.js} +1 -1
- package/dist/client/assets/{oauth-callback-Br4bRi-8.js → oauth-callback-ChRRKa65.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-1lrQ44YW.js → oauth-callback-ai-provider-CAKZaPXP.js} +1 -1
- package/dist/client/assets/{onboarding-CJUbJrTS.js → onboarding-lmgUbBQe.js} +1 -1
- package/dist/client/assets/{org-layout-LRZQllfb.js → org-layout-B2VWo1QW.js} +1 -1
- package/dist/client/assets/{organization-choice-sfwWjhN7.js → organization-choice-BQ9U-Xq-.js} +1 -1
- package/dist/client/assets/{orgs-YJZRuVN_.js → orgs-Cdbe31pX.js} +1 -1
- package/dist/client/assets/{page-seo-form-BtKgt3m_.js → page-seo-form-D6iMCtAU.js} +1 -1
- package/dist/client/assets/{popover-5hCe1k-b.js → popover-Wy89IMWR.js} +1 -1
- package/dist/client/assets/post-editor-8um4AIC8.js +1 -0
- package/dist/client/assets/{primitives-BcUA5QnY.js → primitives-CuvVdjDA.js} +1 -1
- package/dist/client/assets/{profile-DLCbWXln.js → profile-C1mhmQtv.js} +1 -1
- package/dist/client/assets/project-app-view--LLIOxER.js +1 -0
- package/dist/client/assets/record-editor-DYnXx3r9.js +1 -0
- package/dist/client/assets/redirect-editor-B9-qGeUf.js +1 -0
- package/dist/client/assets/registry-CcjhOTSX.js +2 -0
- package/dist/client/assets/{registry-layout-DjY1XBxT.js → registry-layout-BR5urnXm.js} +2 -2
- package/dist/client/assets/{reports-gVOr0Sxi.js → reports-B9btUBiO.js} +1 -1
- package/dist/client/assets/{require-capability-BDCw5l2l.js → require-capability-DfzoRoy3.js} +1 -1
- package/dist/client/assets/{required-auth-layout-C0mQQwr6.js → required-auth-layout-BUpI2CfS.js} +1 -1
- package/dist/client/assets/{reset-password-DyhS2TkQ.js → reset-password-BVcWauyo.js} +1 -1
- package/dist/client/assets/roles-COefXdsU.js +1 -0
- package/dist/client/assets/{search-input-ByYoJKBQ.js → search-input-DGjtP6Rh.js} +1 -1
- package/dist/client/assets/{secrets-BRUyuZE5.js → secrets-BEPk1-eF.js} +1 -1
- package/dist/client/assets/{sections-editor-at21kKiT.js → sections-editor-DT6LvCBZ.js} +2 -2
- package/dist/client/assets/{select-CwAouusu.js → select-7pa4_aUT.js} +1 -1
- package/dist/client/assets/select-model-DQ1eNQu7.js +4 -0
- package/dist/client/assets/self-tool-result-BGGrfBl-.js +1 -0
- package/dist/client/assets/seo-editor-0ctPVCix.js +1 -0
- package/dist/client/assets/settings-layout-B147f-12.js +1 -0
- package/dist/client/assets/{settings-section-Cz2znp8W.js → settings-section-XDvcEzCV.js} +1 -1
- package/dist/client/assets/{settings-subnav-a1a1GCc2.js → settings-subnav-fRspG0-I.js} +1 -1
- package/dist/client/assets/{shell-controls-BPVHXOz1.js → shell-controls-nc8A-U3S.js} +1 -1
- package/dist/client/assets/shell-layout-BkFHuRxc.js +1 -0
- package/dist/client/assets/{sidebar-BDv_n64F.js → sidebar-BI-9XBR_.js} +1 -1
- package/dist/client/assets/{skeleton-DOg01VWn.js → skeleton-CmjcgP6R.js} +1 -1
- package/dist/client/assets/{spinner-D7fl_vK2.js → spinner-Ch7938P6.js} +1 -1
- package/dist/client/assets/{sso-kMJDATrG.js → sso-N3cjPoo1.js} +1 -1
- package/dist/client/assets/store-Dpv1v_pN.js +1 -0
- package/dist/client/assets/store-registry-B4Pzxsjd.js +2 -0
- package/dist/client/assets/{studio-tools-O0czolAT.js → studio-tools-DjBsxbnj.js} +1 -1
- package/dist/client/assets/{switch-B0vh0spM.js → switch-Bz_Ut2Tq.js} +1 -1
- package/dist/client/assets/synced-repos-4hDvRnUi.js +1 -0
- package/dist/client/assets/{tab-id-ZL6F14qy.js → tab-id-DgRfDePR.js} +1 -1
- package/dist/client/assets/{table-Dc0W0B0Q.js → table-BXTkk8zy.js} +1 -1
- package/dist/client/assets/{tabs-BerlyCPW.js → tabs-D_sEPUFk.js} +1 -1
- package/dist/client/assets/tasks-B38CkkW5.js +1 -0
- package/dist/client/assets/{textarea-CD_pYqo3.js → textarea-TMz6gyXu.js} +1 -1
- package/dist/client/assets/{toggle-group-BFyHFJ9G.js → toggle-group-CnQpN6py.js} +1 -1
- package/dist/client/assets/{toolbar-ClzusW5n.js → toolbar-CD4BCM4b.js} +1 -1
- package/dist/client/assets/{tooltip-CwIq9zTG.js → tooltip-BYHYsdou.js} +1 -1
- package/dist/client/assets/{track-Bufvtvpy.js → track-COzY04MD.js} +1 -1
- package/dist/client/assets/{types-D40WAxQO.js → types-CrCH3G_F.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DF6xoNtC.js → use-ai-providers-D8ZxPPNl.js} +1 -1
- package/dist/client/assets/use-api-keys-QabOr7Sy.js +1 -0
- package/dist/client/assets/use-automations-olw2u0pZ.js +1 -0
- package/dist/client/assets/{use-autosave-BvdFNf3e.js → use-autosave-D0LAhUzj.js} +1 -1
- package/dist/client/assets/{use-capability-D8TgIows.js → use-capability-CzBu-J56.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Dht-z9YX.js → use-clock-tick-DOlAeCMC.js} +1 -1
- package/dist/client/assets/use-commerce-diagnostic-BfO1Uz-E.js +1 -0
- package/dist/client/assets/use-connection-BPZswYGL.js +1 -0
- package/dist/client/assets/{use-copy-D87eemcY.js → use-copy-gUNHP8WW.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BqCII4uA.js → use-create-virtual-mcp-CVBBpLVJ.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-fueOpbqS.js → use-debounced-autosave-CYC1_jOJ.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DAmoRUxP.js → use-debounced-value-CRrTp2sD.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BIUvCjFX.js → use-decopilot-events-BZrhOh3J.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CmSM7WcU.js → use-delete-connection-Dn80jRMf.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BRR0WTvL.js → use-deployment-admin-CczUz7z9.js} +1 -1
- package/dist/client/assets/{use-file-configs-EhMCIyTI.js → use-file-configs-bzI9NrYv.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-ChfJMk5S.js → use-infinite-scroll-qlOO1QTT.js} +1 -1
- package/dist/client/assets/{use-join-requests-DAyU8-6X.js → use-join-requests-Ve5ZEQzI.js} +1 -1
- package/dist/client/assets/use-mcp-client-CpcKk1mC.js +10 -0
- package/dist/client/assets/{use-mcp-tools-CMpvouUr.js → use-mcp-tools-BXCDAH3K.js} +1 -1
- package/dist/client/assets/{use-members-CYQAJOqU.js → use-members-lr2D4-9f.js} +1 -1
- package/dist/client/assets/{use-mobile-c0ak1uw4.js → use-mobile-CLhvlD5U.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-IPGb4TnC.js → use-navigate-to-agent-B9V6njZa.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-Bjx13kGF.js → use-org-auth-client-BKcaa9No.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-CEYhU3FE.js → use-org-repo-syncs-qpXT2wCH.js} +1 -1
- package/dist/client/assets/{use-org-sso-BUVIJh4V.js → use-org-sso-CKd4_qDy.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DZR-ca1L.js → use-organization-roles-dAemVnAv.js} +1 -1
- package/dist/client/assets/use-organization-settings-DqAGAUYM.js +1 -0
- package/dist/client/assets/use-registry-connections-BqF6UAct.js +1 -0
- package/dist/client/assets/{use-secrets-6DO3yZ-p.js → use-secrets-D0HFviXi.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-Dc8Axtks.js → use-section-preview-base-BGsB97Xk.js} +1 -1
- package/dist/client/assets/use-settings-tabs-BjnrTXLq.js +1 -0
- package/dist/client/assets/{use-status-sounds-e0Pidqxv.js → use-status-sounds-DXRZEi59.js} +1 -1
- package/dist/client/assets/{use-tags-tOpGCqE_.js → use-tags-uV1Iq0hs.js} +1 -1
- package/dist/client/assets/{use-view-mode-BQejzyHA.js → use-view-mode-DuXFb47r.js} +1 -1
- package/dist/client/assets/use-virtual-mcp-CesHdqwl.js +1 -0
- package/dist/client/assets/useInfiniteQuery-DPD5wRLH.js +1 -0
- package/dist/client/assets/{useRouterState-Dk4tjkCW.js → useRouterState-C7_szwLj.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-kJZnOfaD.js +1 -0
- package/dist/client/assets/{users-Bv8CJJ4l.js → users-UKz0Vh9o.js} +1 -1
- package/dist/client/assets/variant-calendar-Bss6PO3E.js +1 -0
- package/dist/client/assets/{view-mode-toggle-BTBNp3sA.js → view-mode-toggle-BdaCG6S5.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-icon-BDevt-8Z.js +0 -1
- package/dist/client/assets/agents-list-DVOKstH-.js +0 -1
- package/dist/client/assets/ai-providers-qcQefmBS.js +0 -1
- package/dist/client/assets/api-keys-FMNqGQ51.js +0 -1
- package/dist/client/assets/app-editor-JM5Dp20k.js +0 -1
- package/dist/client/assets/automations-B-rlIa9G.js +0 -1
- package/dist/client/assets/billing-Do4qOo4X.js +0 -6
- package/dist/client/assets/bulk-category-panel-C5Gw6crO.js +0 -1
- package/dist/client/assets/category-editor-C2yNqWw9.js +0 -1
- package/dist/client/assets/choose-editor-D_7RLdI1.js +0 -1
- package/dist/client/assets/collection-detail-BcpNCPzg.js +0 -1
- package/dist/client/assets/commerce-onboarding-DptWqvBa.js +0 -1
- package/dist/client/assets/connection-card-BER9PD2I.js +0 -1
- package/dist/client/assets/connection-detail-BztCQFVl.js +0 -1
- package/dist/client/assets/connections-BkovTccm.js +0 -1
- package/dist/client/assets/extract-connection-data-BJ1FOt2x.js +0 -1
- package/dist/client/assets/file-explorer-DCujfpAL.js +0 -2
- package/dist/client/assets/general-DgbsvkYa.js +0 -1
- package/dist/client/assets/github-repo-picker-CcDCsGzG.js +0 -1
- package/dist/client/assets/index-DQv8YUWm.js +0 -1
- package/dist/client/assets/index-DRGw16I_.js +0 -1
- package/dist/client/assets/post-editor-C3I40PTm.js +0 -1
- package/dist/client/assets/project-app-view-TA-FxXgR.js +0 -1
- package/dist/client/assets/record-editor-wtWxgd5F.js +0 -1
- package/dist/client/assets/redirect-editor-BRBlF0cf.js +0 -1
- package/dist/client/assets/registry-D5JAnGyh.js +0 -2
- package/dist/client/assets/roles-BxtW1gkj.js +0 -1
- package/dist/client/assets/select-model-eoIBQakm.js +0 -4
- package/dist/client/assets/self-tool-result-DaPbHreD.js +0 -1
- package/dist/client/assets/seo-editor-DesMlOi9.js +0 -1
- package/dist/client/assets/settings-layout-Bf3LCUkH.js +0 -1
- package/dist/client/assets/shell-layout-VRjP3s0M.js +0 -1
- package/dist/client/assets/store-mWCGhxUC.js +0 -1
- package/dist/client/assets/store-registry-C-F9k1uh.js +0 -2
- package/dist/client/assets/synced-repos-DvIBkVQt.js +0 -1
- package/dist/client/assets/tasks-BhmY_7d9.js +0 -1
- package/dist/client/assets/use-api-keys-DMBDl3ic.js +0 -1
- package/dist/client/assets/use-automations-DQVxqjfN.js +0 -1
- package/dist/client/assets/use-commerce-diagnostic-B_wc4KWh.js +0 -1
- package/dist/client/assets/use-connection-BS7_Pbag.js +0 -1
- package/dist/client/assets/use-mcp-client-DRcy9vk6.js +0 -10
- package/dist/client/assets/use-open-billing-url-nNkK2kBm.js +0 -1
- package/dist/client/assets/use-organization-settings-DJYuvv-k.js +0 -1
- package/dist/client/assets/use-registry-connections-GX-tovow.js +0 -1
- package/dist/client/assets/use-settings-tabs-CkhP712K.js +0 -1
- package/dist/client/assets/use-virtual-mcp-zFcH9fRu.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BxSgA-RD.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CNPxNyM-.js +0 -1
- package/dist/client/assets/variant-calendar-Cvw4xTeP.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1371,7 +1371,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Oi1=w(()=>{Lf()});f
|
|
|
1371
1371
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await mb`
|
|
1372
1372
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1373
1373
|
`.execute($)}}async function _o1($){await hp6($),await up6($);let Z=new So1({db:$,provider:{getMigrations:()=>Promise.resolve(Vi0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function cp6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await ac0();let G=X??U6(),J=async()=>{if(!Z&&!X)await hB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await _o1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function lp6(){let $=U6(),Z=new So1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Vi0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var xo1=w(()=>{ko1();sc0();QX()});async function VZ0($){let Z={...process.env},X=j80($,Z);console.log(tw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?mn1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (b90(),f90)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (sc0(),nn1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (QX(),Hn1)),{migrateToLatest:F}=await Promise.resolve().then(() => (xo1(),vo1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return wi1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ki0=w(()=>{Lf();in1();C8()});var yo1={};U0(yo1,{updateService:()=>EE,subscribeCliState:()=>_i0,setTuiConsoleIntercepted:()=>kZ0,setServerUrl:()=>vi,setMigrationsDone:()=>_i,setDevMode:()=>ip6,resetCliStateForTests:()=>dp6,isTuiConsoleIntercepted:()=>SZ0,getCliState:()=>Ci0,addLogEntry:()=>mB});function fo1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function dp6(){lQ=fo1()}function mp6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Ci(){for(let $ of Si0)$()}function Ci0(){return lQ}function _i0($){return Si0.add($),()=>Si0.delete($)}function EE($){lQ={...lQ,services:lQ.services.map((Z)=>Z.name===$.name?$:Z)},Ci()}function _i(){lQ={...lQ,migrationsStatus:"done"},Ci()}function vi($){lQ={...lQ,serverUrl:$},Ci()}function mB($){let Z=[...lQ.logs,$];lQ={...lQ,logs:Z.length>500?Z.slice(-500):Z},Ci()}function ip6(){lQ={...lQ,services:[...mp6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Ci()}function kZ0($){bo1=$}function SZ0(){return bo1}var lQ,Si0,bo1=!1;var jE=w(()=>{lQ=fo1();Si0=new Set});import{createServer as go1}from"net";function np6($){return new Promise((Z)=>{let X=go1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function xi($){if(await np6($))return $;let Z=await new Promise((X,Q)=>{let Y=go1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var vi0=()=>{};function fi($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var xi0={};U0(xi0,{startDevServer:()=>tp6});import{join as pp6}from"path";function ho1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1374
|
-
`);Q=G.pop()??"";for(let J of G){let K=fi(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=fi(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function tp6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await xi(Number(Y)+1):await xi(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await VZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)EE({name:L.name,status:"ready",port:L.port});_i();let F=pp6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ho1(U.stdout),ho1(U.stderr);vi(G),EE({name:"Vite",status:"ready",port:Number(Y)}),EE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(U.kill(L),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (b90(),f90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var fi0=w(()=>{ki0();jE();vi0()});var CZ0;var bi0=w(()=>{CZ0={name:"decocms",version:"4.246.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as rp6,Text as uo1}from"ink";import{jsx as ap6,jsxs as co1}from"react/jsx-runtime";function lo1({version:$}){return co1(rp6,{flexDirection:"column",marginTop:1,children:[GZ0.map((Z,X)=>ap6(uo1,{color:JZ0[X],children:Z},X)),co1(uo1,{dimColor:!0,children:[" v",$]})]})}var do1=w(()=>{zi()});import{Box as zE,Text as iB}from"ink";import{Spinner as sp6}from"@inkjs/ui";import{jsx as aY,jsxs as ib}from"react/jsx-runtime";function mo1({status:$}){if($==="pending")return aY(sp6,{label:""});return aY(iB,{color:"green",children:"\u2713"})}function ep6($){return`${$.name}: ${$.port||"...."}`}function io1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return ib(zE,{flexDirection:"column",paddingBottom:1,children:[aY(lo1,{version:CZ0.version}),aY(zE,{marginBottom:1,children:aY(iB,{dimColor:!0,children:"\u2500".repeat(80)})}),aY(zE,{children:ib(iB,{dimColor:!0,children:["Home: ",X]})}),ib(zE,{gap:2,children:[$.map((Y)=>ib(zE,{gap:1,children:[aY(iB,{children:ep6(Y)}),aY(mo1,{status:Y.status})]},Y.name)),ib(zE,{gap:1,children:[aY(iB,{children:"Migrations"}),aY(mo1,{status:Z})]})]}),aY(zE,{children:Q?ib(iB,{children:["Open in browser: ",aY(iB,{color:"cyan",children:Q})]}):aY(iB,{dimColor:!0,children:"Starting..."})})]})}var no1=w(()=>{bi0();do1()});import{Box as $t6,Text as bi}from"ink";import{jsx as yi0,jsxs as gi0}from"react/jsx-runtime";function Zt6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function po1({logs:$}){return yi0($t6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return yi0(bi,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return gi0(bi,{children:[gi0(bi,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),yi0(bi,{color:Zt6(Z.status),children:Z.status}),gi0(bi,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var to1=()=>{};var hi0={};U0(hi0,{App:()=>Yt6});import{Box as Xt6}from"ink";import{useSyncExternalStore as Qt6}from"react";import{jsx as oo1,jsxs as Gt6}from"react/jsx-runtime";function Yt6({home:$}){let Z=Qt6(_i0,Ci0);return Gt6(Xt6,{flexDirection:"column",children:[oo1(io1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),oo1(po1,{logs:Z.logs})]})}var ui0=w(()=>{no1();to1();jE()});var fJ="thread-gate",sF="decopilot-hosted-harness",eF="decopilot-hosted-harness-sandboxed",F3="automations",nB="background-tools",PE="task-board-github-reads",AE="jira-push";var ro1="7";function ao1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ro1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var so1=()=>{};function Jt6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ci0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function eo1(){let $=Jt6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ci0($,"--cpu-prof-dir")??process.cwd(),name:ci0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ci0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function $r1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=OE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),_Z0=setInterval(()=>void Z().catch(()=>{}),$),_Z0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(_Z0)clearInterval(_Z0)}}var _Z0;var Zr1=()=>{};import*as Kt6 from"bun:jsc";function Xr1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Wt6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ht6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Wt6,Ht6;var Qr1=w(()=>{({startSamplingProfiler:Wt6,samplingProfilerStackTraces:Ht6}=Kt6)});function Yr1(){eo1();let $=[$r1(),Zn1(),Xr1()];return()=>{for(let Z of $)Z()}}var Gr1=w(()=>{cc0();Zr1();Qr1()});var TE=_((Jr1)=>{Object.defineProperty(Jr1,"__esModule",{value:!0});Jr1.RepublishHeaders=Jr1.DirectMsgHeaders=Jr1.JsHeaders=Jr1.AdvisoryKind=void 0;Jr1.isOrderedPushConsumerOptions=Ft6;Jr1.isPullConsumer=Nt6;Jr1.isPushConsumer=Ut6;Jr1.isBoundPushConsumerOptions=Bt6;function Ft6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Nt6($){return $.isPullConsumer()}function Ut6($){return $.isPushConsumer()}function Bt6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Jr1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Jr1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Jr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Jr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sY=_((Wr1)=>{Object.defineProperty(Wr1,"__esModule",{value:!0});Wr1.TD=Wr1.TE=Wr1.Empty=void 0;Wr1.encode=At6;Wr1.decode=Tt6;Wr1.Empty=new Uint8Array(0);Wr1.TE=new TextEncoder;Wr1.TD=new TextDecoder;function Pt6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function At6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Wr1.TE.encode($[X]));if(Z.length===0)return Wr1.Empty;if(Z.length===1)return Z[0];return Pt6(...Z)}function Tt6($){if(!$||$.length===0)return"";return Wr1.TD.decode($)}});var eY=_((Nr1)=>{Object.defineProperty(Nr1,"__esModule",{value:!0});Nr1.errors=Nr1.PermissionViolationError=Nr1.NoRespondersError=Nr1.TimeoutError=Nr1.RequestError=Nr1.ProtocolError=Nr1.ConnectionError=Nr1.DrainingConnectionError=Nr1.ClosedConnectionError=Nr1.AuthorizationError=Nr1.UserAuthenticationExpiredError=Nr1.InvalidOperationError=Nr1.InvalidArgumentError=Nr1.InvalidSubjectError=void 0;class di0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Nr1.InvalidSubjectError=di0;class vZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new vZ0(`${$} ${Z}`,X)}}Nr1.InvalidArgumentError=vZ0;class mi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Nr1.InvalidOperationError=mi0;class xZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new xZ0($);return null}}Nr1.UserAuthenticationExpiredError=xZ0;class fZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new fZ0($);return null}}Nr1.AuthorizationError=fZ0;class ii0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Nr1.ClosedConnectionError=ii0;class ni0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Nr1.DrainingConnectionError=ni0;class pi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Nr1.ConnectionError=pi0;class ti0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Nr1.ProtocolError=ti0;class oi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof bZ0}}Nr1.RequestError=oi0;class ri0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Nr1.TimeoutError=ri0;class bZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Nr1.NoRespondersError=bZ0;class yZ0 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new yZ0($,X,Q,Y)}}Nr1.PermissionViolationError=yZ0;Nr1.errors={AuthorizationError:fZ0,ClosedConnectionError:ii0,ConnectionError:pi0,DrainingConnectionError:ni0,InvalidArgumentError:vZ0,InvalidOperationError:mi0,InvalidSubjectError:di0,NoRespondersError:bZ0,PermissionViolationError:yZ0,ProtocolError:ti0,RequestError:oi0,TimeoutError:ri0,UserAuthenticationExpiredError:xZ0}});var bJ=_((Lr1)=>{Object.defineProperty(Lr1,"__esModule",{value:!0});Lr1.SimpleMutex=Lr1.Perf=void 0;Lr1.extend=ut6;Lr1.render=ct6;Lr1.timeout=lt6;Lr1.delay=dt6;Lr1.deadline=mt6;Lr1.deferred=si0;Lr1.debugDeferred=it6;Lr1.shuffle=nt6;Lr1.collect=pt6;Lr1.jitter=wr1;Lr1.backoff=tt6;Lr1.nanos=ot6;Lr1.millis=rt6;Lr1.randomToken=et6;var ht6=sY(),ai0=eY();function ut6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ct6($){return ht6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function lt6($,Z=!0){let X=Z?new ai0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ai0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function dt6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function mt6($,Z=1000){let X=si0(),Q=setTimeout(()=>{X.reject(new ai0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function si0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function it6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function nt6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function pt6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Br1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Lr1.Perf=Br1;class Or1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=si0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Lr1.SimpleMutex=Or1;function wr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function tt6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return wr1(X>Z?$[Z]:$[X])}}}function ot6($){return $*1e6}function rt6($){return Math.floor($/1e6)}var at6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",$N=new Uint8Array(62);for(let $=0;$<62;$++)$N[$]=at6.charCodeAt($);var st6=218340105584896;function et6(){let $=Math.floor(Math.random()*st6),Z=$%62,X=$N[Z];$=($-Z)/62,Z=$%62;let Q=$N[Z];$=($-Z)/62,Z=$%62;let Y=$N[Z];$=($-Z)/62,Z=$%62;let G=$N[Z];$=($-Z)/62,Z=$%62;let J=$N[Z];$=($-Z)/62,Z=$%62;let K=$N[Z];$=($-Z)/62,Z=$%62;let W=$N[Z];$=($-Z)/62;let H=$N[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Rr1=_((Ar1)=>{Object.defineProperty(Ar1,"__esModule",{value:!0});Ar1.nuid=Ar1.NuidImpl=void 0;var wo6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",pB=62,hZ0=12,zr1=10,Er1=33,Lo6=333,jr1=hZ0+zr1,$n0=new Uint8Array(pB);for(let $=0;$<pB;$++)$n0[$]=wo6.charCodeAt($);var gZ0=4294967296,Pr1=BigInt(pB)**BigInt(zr1),yi=Number(Pr1/(1n<<32n)),ei0=Number(Pr1%(1n<<32n));function Do6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Eo6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Do6($)}class Zn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(jr1),this.cbuf=new Uint8Array(hZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(yi+1)),this.seqLo=Math.floor(Math.random()*gZ0);while($++<8&&this.seqHi===yi&&this.seqLo>=ei0);if(this.seqHi===yi&&this.seqLo>=ei0)this.seqLo=0;this.inc=Math.random()*(Lo6-Er1)+Er1|0}setPre(){Eo6(this.cbuf);for(let $=0;$<hZ0;$++)this.buf[$]=$n0[this.cbuf[$]%pB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=jr1-1;X>=hZ0;X--){let Q=Math.floor($/pB),G=($-Q*pB)*gZ0+Z,J=Math.floor(G/pB),K=G-J*pB;this.buf[X]=$n0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=gZ0)this.seqLo-=gZ0,this.seqHi+=1;if(this.seqHi>yi||this.seqHi===yi&&this.seqLo>=ei0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Ar1.NuidImpl=Zn0;Ar1.nuid=new Zn0});var Vr1=_((qr1)=>{Object.defineProperty(qr1,"__esModule",{value:!0});qr1.nuid=qr1.Nuid=void 0;var Ir1=Rr1();qr1.Nuid=Ir1.NuidImpl;qr1.nuid=Ir1.nuid});var cZ0=_((uZ0)=>{Object.defineProperty(uZ0,"__esModule",{value:!0});uZ0.nuid=uZ0.Nuid=void 0;var kr1=Vr1();Object.defineProperty(uZ0,"Nuid",{enumerable:!0,get:function(){return kr1.Nuid}});Object.defineProperty(uZ0,"nuid",{enumerable:!0,get:function(){return kr1.nuid}})});var tB=_((Sr1)=>{Object.defineProperty(Sr1,"__esModule",{value:!0});Sr1.DEFAULT_HOST=Sr1.DEFAULT_PORT=Sr1.Match=void 0;Sr1.syncIterator=Ro6;Sr1.createInbox=Io6;var Ao6=cZ0(),To6=eY();Sr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ro6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Io6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw To6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ao6.nuid.next()}`}Sr1.DEFAULT_PORT=4222;Sr1.DEFAULT_HOST="127.0.0.1"});var gi=_((xr1)=>{Object.defineProperty(xr1,"__esModule",{value:!0});xr1.DataBuffer=void 0;var _r1=sY();class vr1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return _r1.TE.encode($)}static toAscii($){return _r1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}xr1.DataBuffer=vr1});var RE=_((yr1)=>{Object.defineProperty(yr1,"__esModule",{value:!0});yr1.LF=yr1.CR=yr1.CRLF=yr1.CR_LF_LEN=yr1.CR_LF=void 0;yr1.setTransportFactory=vo6;yr1.defaultPort=xo6;yr1.getUrlParseFn=fo6;yr1.newTransport=bo6;yr1.getResolveFn=yo6;yr1.protoLen=br1;yr1.extractProtocolMessage=go6;var So6=sY(),Co6=tB(),_o6=gi(),$G;function vo6($){$G=$}function xo6(){return $G!==void 0&&$G.defaultPort!==void 0?$G.defaultPort:Co6.DEFAULT_PORT}function fo6(){return $G!==void 0&&$G.urlParseFn?$G.urlParseFn:void 0}function bo6(){if(!$G||typeof $G.factory!=="function")throw Error("transport fn is not set");return $G.factory()}function yo6(){return $G!==void 0&&$G.dnsResolveFn?$G.dnsResolveFn:void 0}yr1.CR_LF=`\r
|
|
1374
|
+
`);Q=G.pop()??"";for(let J of G){let K=fi(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=fi(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)mB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function tp6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await xi(Number(Y)+1):await xi(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await VZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)EE({name:L.name,status:"ready",port:L.port});_i();let F=pp6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)ho1(U.stdout),ho1(U.stderr);vi(G),EE({name:"Vite",status:"ready",port:Number(Y)}),EE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(U.kill(L),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (b90(),f90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var fi0=w(()=>{ki0();jE();vi0()});var CZ0;var bi0=w(()=>{CZ0={name:"decocms",version:"4.246.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as rp6,Text as uo1}from"ink";import{jsx as ap6,jsxs as co1}from"react/jsx-runtime";function lo1({version:$}){return co1(rp6,{flexDirection:"column",marginTop:1,children:[GZ0.map((Z,X)=>ap6(uo1,{color:JZ0[X],children:Z},X)),co1(uo1,{dimColor:!0,children:[" v",$]})]})}var do1=w(()=>{zi()});import{Box as zE,Text as iB}from"ink";import{Spinner as sp6}from"@inkjs/ui";import{jsx as aY,jsxs as ib}from"react/jsx-runtime";function mo1({status:$}){if($==="pending")return aY(sp6,{label:""});return aY(iB,{color:"green",children:"\u2713"})}function ep6($){return`${$.name}: ${$.port||"...."}`}function io1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return ib(zE,{flexDirection:"column",paddingBottom:1,children:[aY(lo1,{version:CZ0.version}),aY(zE,{marginBottom:1,children:aY(iB,{dimColor:!0,children:"\u2500".repeat(80)})}),aY(zE,{children:ib(iB,{dimColor:!0,children:["Home: ",X]})}),ib(zE,{gap:2,children:[$.map((Y)=>ib(zE,{gap:1,children:[aY(iB,{children:ep6(Y)}),aY(mo1,{status:Y.status})]},Y.name)),ib(zE,{gap:1,children:[aY(iB,{children:"Migrations"}),aY(mo1,{status:Z})]})]}),aY(zE,{children:Q?ib(iB,{children:["Open in browser: ",aY(iB,{color:"cyan",children:Q})]}):aY(iB,{dimColor:!0,children:"Starting..."})})]})}var no1=w(()=>{bi0();do1()});import{Box as $t6,Text as bi}from"ink";import{jsx as yi0,jsxs as gi0}from"react/jsx-runtime";function Zt6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function po1({logs:$}){return yi0($t6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return yi0(bi,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return gi0(bi,{children:[gi0(bi,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),yi0(bi,{color:Zt6(Z.status),children:Z.status}),gi0(bi,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var to1=()=>{};var hi0={};U0(hi0,{App:()=>Yt6});import{Box as Xt6}from"ink";import{useSyncExternalStore as Qt6}from"react";import{jsx as oo1,jsxs as Gt6}from"react/jsx-runtime";function Yt6({home:$}){let Z=Qt6(_i0,Ci0);return Gt6(Xt6,{flexDirection:"column",children:[oo1(io1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),oo1(po1,{logs:Z.logs})]})}var ui0=w(()=>{no1();to1();jE()});var fJ="thread-gate",sF="decopilot-hosted-harness",eF="decopilot-hosted-harness-sandboxed",F3="automations",nB="background-tools",PE="task-board-github-reads",AE="jira-push";var ro1="7";function ao1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ro1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var so1=()=>{};function Jt6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ci0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function eo1(){let $=Jt6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ci0($,"--cpu-prof-dir")??process.cwd(),name:ci0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ci0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function $r1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=OE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),_Z0=setInterval(()=>void Z().catch(()=>{}),$),_Z0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(_Z0)clearInterval(_Z0)}}var _Z0;var Zr1=()=>{};import*as Kt6 from"bun:jsc";function Xr1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Wt6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ht6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Wt6,Ht6;var Qr1=w(()=>{({startSamplingProfiler:Wt6,samplingProfilerStackTraces:Ht6}=Kt6)});function Yr1(){eo1();let $=[$r1(),Zn1(),Xr1()];return()=>{for(let Z of $)Z()}}var Gr1=w(()=>{cc0();Zr1();Qr1()});var TE=_((Jr1)=>{Object.defineProperty(Jr1,"__esModule",{value:!0});Jr1.RepublishHeaders=Jr1.DirectMsgHeaders=Jr1.JsHeaders=Jr1.AdvisoryKind=void 0;Jr1.isOrderedPushConsumerOptions=Ft6;Jr1.isPullConsumer=Nt6;Jr1.isPushConsumer=Ut6;Jr1.isBoundPushConsumerOptions=Bt6;function Ft6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Nt6($){return $.isPullConsumer()}function Ut6($){return $.isPushConsumer()}function Bt6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Jr1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Jr1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Jr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Jr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var sY=_((Wr1)=>{Object.defineProperty(Wr1,"__esModule",{value:!0});Wr1.TD=Wr1.TE=Wr1.Empty=void 0;Wr1.encode=At6;Wr1.decode=Tt6;Wr1.Empty=new Uint8Array(0);Wr1.TE=new TextEncoder;Wr1.TD=new TextDecoder;function Pt6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function At6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Wr1.TE.encode($[X]));if(Z.length===0)return Wr1.Empty;if(Z.length===1)return Z[0];return Pt6(...Z)}function Tt6($){if(!$||$.length===0)return"";return Wr1.TD.decode($)}});var eY=_((Nr1)=>{Object.defineProperty(Nr1,"__esModule",{value:!0});Nr1.errors=Nr1.PermissionViolationError=Nr1.NoRespondersError=Nr1.TimeoutError=Nr1.RequestError=Nr1.ProtocolError=Nr1.ConnectionError=Nr1.DrainingConnectionError=Nr1.ClosedConnectionError=Nr1.AuthorizationError=Nr1.UserAuthenticationExpiredError=Nr1.InvalidOperationError=Nr1.InvalidArgumentError=Nr1.InvalidSubjectError=void 0;class di0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Nr1.InvalidSubjectError=di0;class vZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new vZ0(`${$} ${Z}`,X)}}Nr1.InvalidArgumentError=vZ0;class mi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Nr1.InvalidOperationError=mi0;class xZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new xZ0($);return null}}Nr1.UserAuthenticationExpiredError=xZ0;class fZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new fZ0($);return null}}Nr1.AuthorizationError=fZ0;class ii0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Nr1.ClosedConnectionError=ii0;class ni0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Nr1.DrainingConnectionError=ni0;class pi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Nr1.ConnectionError=pi0;class ti0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Nr1.ProtocolError=ti0;class oi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof bZ0}}Nr1.RequestError=oi0;class ri0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Nr1.TimeoutError=ri0;class bZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Nr1.NoRespondersError=bZ0;class yZ0 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new yZ0($,X,Q,Y)}}Nr1.PermissionViolationError=yZ0;Nr1.errors={AuthorizationError:fZ0,ClosedConnectionError:ii0,ConnectionError:pi0,DrainingConnectionError:ni0,InvalidArgumentError:vZ0,InvalidOperationError:mi0,InvalidSubjectError:di0,NoRespondersError:bZ0,PermissionViolationError:yZ0,ProtocolError:ti0,RequestError:oi0,TimeoutError:ri0,UserAuthenticationExpiredError:xZ0}});var bJ=_((Lr1)=>{Object.defineProperty(Lr1,"__esModule",{value:!0});Lr1.SimpleMutex=Lr1.Perf=void 0;Lr1.extend=ut6;Lr1.render=ct6;Lr1.timeout=lt6;Lr1.delay=dt6;Lr1.deadline=mt6;Lr1.deferred=si0;Lr1.debugDeferred=it6;Lr1.shuffle=nt6;Lr1.collect=pt6;Lr1.jitter=wr1;Lr1.backoff=tt6;Lr1.nanos=ot6;Lr1.millis=rt6;Lr1.randomToken=et6;var ht6=sY(),ai0=eY();function ut6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ct6($){return ht6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function lt6($,Z=!0){let X=Z?new ai0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ai0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function dt6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function mt6($,Z=1000){let X=si0(),Q=setTimeout(()=>{X.reject(new ai0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function si0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function it6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function nt6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function pt6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Br1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Lr1.Perf=Br1;class Or1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=si0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Lr1.SimpleMutex=Or1;function wr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function tt6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return wr1(X>Z?$[Z]:$[X])}}}function ot6($){return $*1e6}function rt6($){return Math.floor($/1e6)}var at6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",$N=new Uint8Array(62);for(let $=0;$<62;$++)$N[$]=at6.charCodeAt($);var st6=218340105584896;function et6(){let $=Math.floor(Math.random()*st6),Z=$%62,X=$N[Z];$=($-Z)/62,Z=$%62;let Q=$N[Z];$=($-Z)/62,Z=$%62;let Y=$N[Z];$=($-Z)/62,Z=$%62;let G=$N[Z];$=($-Z)/62,Z=$%62;let J=$N[Z];$=($-Z)/62,Z=$%62;let K=$N[Z];$=($-Z)/62,Z=$%62;let W=$N[Z];$=($-Z)/62;let H=$N[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Rr1=_((Ar1)=>{Object.defineProperty(Ar1,"__esModule",{value:!0});Ar1.nuid=Ar1.NuidImpl=void 0;var wo6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",pB=62,hZ0=12,zr1=10,Er1=33,Lo6=333,jr1=hZ0+zr1,$n0=new Uint8Array(pB);for(let $=0;$<pB;$++)$n0[$]=wo6.charCodeAt($);var gZ0=4294967296,Pr1=BigInt(pB)**BigInt(zr1),yi=Number(Pr1/(1n<<32n)),ei0=Number(Pr1%(1n<<32n));function Do6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Eo6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Do6($)}class Zn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(jr1),this.cbuf=new Uint8Array(hZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(yi+1)),this.seqLo=Math.floor(Math.random()*gZ0);while($++<8&&this.seqHi===yi&&this.seqLo>=ei0);if(this.seqHi===yi&&this.seqLo>=ei0)this.seqLo=0;this.inc=Math.random()*(Lo6-Er1)+Er1|0}setPre(){Eo6(this.cbuf);for(let $=0;$<hZ0;$++)this.buf[$]=$n0[this.cbuf[$]%pB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=jr1-1;X>=hZ0;X--){let Q=Math.floor($/pB),G=($-Q*pB)*gZ0+Z,J=Math.floor(G/pB),K=G-J*pB;this.buf[X]=$n0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=gZ0)this.seqLo-=gZ0,this.seqHi+=1;if(this.seqHi>yi||this.seqHi===yi&&this.seqLo>=ei0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Ar1.NuidImpl=Zn0;Ar1.nuid=new Zn0});var Vr1=_((qr1)=>{Object.defineProperty(qr1,"__esModule",{value:!0});qr1.nuid=qr1.Nuid=void 0;var Ir1=Rr1();qr1.Nuid=Ir1.NuidImpl;qr1.nuid=Ir1.nuid});var cZ0=_((uZ0)=>{Object.defineProperty(uZ0,"__esModule",{value:!0});uZ0.nuid=uZ0.Nuid=void 0;var kr1=Vr1();Object.defineProperty(uZ0,"Nuid",{enumerable:!0,get:function(){return kr1.Nuid}});Object.defineProperty(uZ0,"nuid",{enumerable:!0,get:function(){return kr1.nuid}})});var tB=_((Sr1)=>{Object.defineProperty(Sr1,"__esModule",{value:!0});Sr1.DEFAULT_HOST=Sr1.DEFAULT_PORT=Sr1.Match=void 0;Sr1.syncIterator=Ro6;Sr1.createInbox=Io6;var Ao6=cZ0(),To6=eY();Sr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ro6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Io6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw To6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ao6.nuid.next()}`}Sr1.DEFAULT_PORT=4222;Sr1.DEFAULT_HOST="127.0.0.1"});var gi=_((xr1)=>{Object.defineProperty(xr1,"__esModule",{value:!0});xr1.DataBuffer=void 0;var _r1=sY();class vr1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return _r1.TE.encode($)}static toAscii($){return _r1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}xr1.DataBuffer=vr1});var RE=_((yr1)=>{Object.defineProperty(yr1,"__esModule",{value:!0});yr1.LF=yr1.CR=yr1.CRLF=yr1.CR_LF_LEN=yr1.CR_LF=void 0;yr1.setTransportFactory=vo6;yr1.defaultPort=xo6;yr1.getUrlParseFn=fo6;yr1.newTransport=bo6;yr1.getResolveFn=yo6;yr1.protoLen=br1;yr1.extractProtocolMessage=go6;var So6=sY(),Co6=tB(),_o6=gi(),$G;function vo6($){$G=$}function xo6(){return $G!==void 0&&$G.defaultPort!==void 0?$G.defaultPort:Co6.DEFAULT_PORT}function fo6(){return $G!==void 0&&$G.urlParseFn?$G.urlParseFn:void 0}function bo6(){if(!$G||typeof $G.factory!=="function")throw Error("transport fn is not set");return $G.factory()}function yo6(){return $G!==void 0&&$G.dnsResolveFn?$G.dnsResolveFn:void 0}yr1.CR_LF=`\r
|
|
1375
1375
|
`;yr1.CR_LF_LEN=yr1.CR_LF.length;yr1.CRLF=_o6.DataBuffer.fromAscii(yr1.CR_LF);yr1.CR=new Uint8Array(yr1.CRLF)[0];yr1.LF=new Uint8Array(yr1.CRLF)[1];function br1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===yr1.CR&&$[X]===yr1.LF)return X+1}return 0}function go6($){let Z=br1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return So6.TD.decode(Q)}return""}});var Jn0=_((ir1)=>{Object.defineProperty(ir1,"__esModule",{value:!0});ir1.ipV4=lr1;ir1.isIP=oo6;ir1.parseIP=dr1;var hi=4,IE=16,lZ0=48,cr1=57,hr1=65,po6=70,ur1=97,to6=102,Gn0=16777215;function lr1($,Z,X,Q){let Y=new Uint8Array(IE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function oo6($){return dr1($)!==void 0}function dr1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return mr1($);case":":return ro6($)}return}function mr1($){let Z=new Uint8Array(hi);for(let X=0;X<hi;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=ao6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return lr1(Z[0],Z[1],Z[2],Z[3])}function ro6($){let Z=new Uint8Array(IE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<IE){let{n:Y,c:G,ok:J}=so6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=IE-hi)return;if(Q+hi>IE)return;let K=mr1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=hi;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<IE){if(X<0)return;let Y=IE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function ao6($){let Z=0,X=0;for(Z=0;Z<$.length&&lZ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=cr1;Z++)if(X=X*10+($.charCodeAt(Z)-lZ0),X>=Gn0)return{n:Gn0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function so6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(lZ0<=$.charCodeAt(X)&&$.charCodeAt(X)<=cr1)Z*=16,Z+=$.charCodeAt(X)-lZ0;else if(ur1<=$.charCodeAt(X)&&$.charCodeAt(X)<=to6)Z*=16,Z+=$.charCodeAt(X)-ur1+10;else if(hr1<=$.charCodeAt(X)&&$.charCodeAt(X)<=po6)Z*=16,Z+=$.charCodeAt(X)-hr1+10;else break;if(Z>=Gn0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Un0=_((pr1)=>{Object.defineProperty(pr1,"__esModule",{value:!0});pr1.Servers=pr1.ServerImpl=void 0;pr1.isIPV4OrHostname=nr1;pr1.hostPort=Nn0;var Kn0=RE(),Wn0=bJ(),Hn0=Jn0(),Xr6=tB(),Qr6=eY();function nr1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Fn0($){return!nr1($)}function Yr6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Nn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Yr6($),Fn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Fn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Xr6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class nb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Nn0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Hn0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Fn0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new nb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Wn0.shuffle)(Z);return this.resolves=Z,Z}}pr1.ServerImpl=nb;class dZ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Qr6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Kn0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Nn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new nb(Y))}if(this.randomize)(0,Wn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Hn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Kn0.getUrlParseFn)();$=X?X($):$;let Q=new nb($,Z);if((0,Hn0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return dZ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return dZ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Kn0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new nb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Wn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}pr1.Servers=dZ0});var mZ0=_((ar1)=>{Object.defineProperty(ar1,"__esModule",{value:!0});ar1.QueuedIteratorImpl=void 0;var Bn0=bJ(),or1=eY();class rr1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Bn0.deferred)(),this.yields=[],this.iterClosed=(0,Bn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new or1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new or1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Bn0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}ar1.QueuedIteratorImpl=rr1});var On0=_((Za1)=>{Object.defineProperty(Za1,"__esModule",{value:!0});Za1.MuxSubscription=void 0;var Wr6=tB(),er1=eY();class $a1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Wr6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new er1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new er1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Za1.MuxSubscription=$a1});var wn0=_((Ya1)=>{Object.defineProperty(Ya1,"__esModule",{value:!0});Ya1.Heartbeat=void 0;var Hr6=bJ();class Qa1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Hr6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Ya1.Heartbeat=Qa1});var En0=_((Ha1)=>{Object.defineProperty(Ha1,"__esModule",{value:!0});Ha1.DenoBuffer=Ha1.MAX_SIZE=Ha1.AssertionError=void 0;Ha1.assert=Ka1;Ha1.concat=Wa1;Ha1.append=Nr6;Ha1.readAll=Ur6;Ha1.writeAll=Br6;var Fr6=sY();class Ln0 extends Error{constructor($){super($);this.name="AssertionError"}}Ha1.AssertionError=Ln0;function Ka1($,Z="Assertion failed."){if(!$)throw new Ln0(Z)}var Ja1=32768;Ha1.MAX_SIZE=4294967294;function iZ0($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Wa1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Nr6($,Z){return Wa1($,Uint8Array.of(Z))}class Dn0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){Ka1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=iZ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Fr6.TE.encode($))}write($){let Z=this._grow($.byteLength);return iZ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)iZ0(this._buf.subarray(this._off),this._buf);else if(Q+$>Ha1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Ha1.MAX_SIZE));iZ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Ha1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Ja1);while(!0){let Q=this.capacity-this.length<Ja1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Ha1.DenoBuffer=Dn0;function Ur6($){let Z=new Dn0;return Z.readFrom($),Z.bytes()}function Br6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Pn0=_((Oa1)=>{Object.defineProperty(Oa1,"__esModule",{value:!0});Oa1.cc=Oa1.State=Oa1.Parser=Oa1.Kind=void 0;Oa1.describe=zr6;var jn0=En0(),zn0=sY();Oa1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function zr6($){let Z,X="";switch($.kind){case Oa1.Kind.MSG:Z="MSG";break;case Oa1.Kind.OK:Z="OK";break;case Oa1.Kind.ERR:Z="ERR",X=zn0.TD.decode($.data);break;case Oa1.Kind.PING:Z="PING";break;case Oa1.Kind.PONG:Z="PONG";break;case Oa1.Kind.INFO:Z="INFO",X=zn0.TD.decode($.data)}return`${Z}: ${X}`}function Na1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Ua1=48,Pr6=57,pb=67108864;class Ba1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Oa1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Oa1.State.OP_START:switch(X){case Oa1.cc.M:case Oa1.cc.m:this.state=Oa1.State.OP_M,this.hdr=-1,this.ma=Na1();break;case Oa1.cc.H:case Oa1.cc.h:this.state=Oa1.State.OP_H,this.hdr=0,this.ma=Na1();break;case Oa1.cc.P:case Oa1.cc.p:this.state=Oa1.State.OP_P;break;case Oa1.cc.PLUS:this.state=Oa1.State.OP_PLUS;break;case Oa1.cc.MINUS:this.state=Oa1.State.OP_MINUS;break;case Oa1.cc.I:case Oa1.cc.i:this.state=Oa1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_H:switch(X){case Oa1.cc.M:case Oa1.cc.m:this.state=Oa1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_M:switch(X){case Oa1.cc.S:case Oa1.cc.s:this.state=Oa1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MS:switch(X){case Oa1.cc.G:case Oa1.cc.g:this.state=Oa1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MSG:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:this.state=Oa1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MSG_SPC:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:continue;default:this.state=Oa1.State.MSG_ARG,this.as=Z}break;case Oa1.State.MSG_ARG:switch(X){case Oa1.cc.CR:this.drop=1;break;case Oa1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Oa1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Oa1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Oa1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Oa1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Oa1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Oa1.State.MSG_END;break;case Oa1.State.MSG_END:switch(X){case Oa1.cc.NL:this.drop=0,this.as=Z+1,this.state=Oa1.State.OP_START;break;default:continue}break;case Oa1.State.OP_PLUS:switch(X){case Oa1.cc.O:case Oa1.cc.o:this.state=Oa1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PLUS_O:switch(X){case Oa1.cc.K:case Oa1.cc.k:this.state=Oa1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PLUS_OK:switch(X){case Oa1.cc.NL:this.dispatcher.push({kind:Oa1.Kind.OK}),this.drop=0,this.state=Oa1.State.OP_START;break}break;case Oa1.State.OP_MINUS:switch(X){case Oa1.cc.E:case Oa1.cc.e:this.state=Oa1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MINUS_E:switch(X){case Oa1.cc.R:case Oa1.cc.r:this.state=Oa1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MINUS_ER:switch(X){case Oa1.cc.R:case Oa1.cc.r:this.state=Oa1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MINUS_ERR:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:this.state=Oa1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_MINUS_ERR_SPC:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:continue;default:this.state=Oa1.State.MINUS_ERR_ARG,this.as=Z}break;case Oa1.State.MINUS_ERR_ARG:switch(X){case Oa1.cc.CR:this.drop=1;break;case Oa1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Oa1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Oa1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Oa1.State.OP_P:switch(X){case Oa1.cc.I:case Oa1.cc.i:this.state=Oa1.State.OP_PI;break;case Oa1.cc.O:case Oa1.cc.o:this.state=Oa1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PO:switch(X){case Oa1.cc.N:case Oa1.cc.n:this.state=Oa1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PON:switch(X){case Oa1.cc.G:case Oa1.cc.g:this.state=Oa1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PONG:switch(X){case Oa1.cc.NL:this.dispatcher.push({kind:Oa1.Kind.PONG}),this.drop=0,this.state=Oa1.State.OP_START;break}break;case Oa1.State.OP_PI:switch(X){case Oa1.cc.N:case Oa1.cc.n:this.state=Oa1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PIN:switch(X){case Oa1.cc.G:case Oa1.cc.g:this.state=Oa1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_PING:switch(X){case Oa1.cc.NL:this.dispatcher.push({kind:Oa1.Kind.PING}),this.drop=0,this.state=Oa1.State.OP_START;break}break;case Oa1.State.OP_I:switch(X){case Oa1.cc.N:case Oa1.cc.n:this.state=Oa1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_IN:switch(X){case Oa1.cc.F:case Oa1.cc.f:this.state=Oa1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_INF:switch(X){case Oa1.cc.O:case Oa1.cc.o:this.state=Oa1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_INFO:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:this.state=Oa1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Oa1.State.OP_INFO_SPC:switch(X){case Oa1.cc.SPACE:case Oa1.cc.TAB:continue;default:this.state=Oa1.State.INFO_ARG,this.as=Z}break;case Oa1.State.INFO_ARG:switch(X){case Oa1.cc.CR:this.drop=1;break;case Oa1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Oa1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Oa1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Oa1.State.MSG_ARG||this.state===Oa1.State.MINUS_ERR_ARG||this.state===Oa1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new jn0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Oa1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new jn0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new jn0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Oa1.cc.SPACE:case Oa1.cc.TAB:case Oa1.cc.CR:case Oa1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],pb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],pb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${zn0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Oa1.cc.SPACE:case Oa1.cc.TAB:case Oa1.cc.CR:case Oa1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],pb),this.ma.size=this.protoParseInt(Z[3],pb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],pb),this.ma.size=this.protoParseInt(Z[4],pb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Ua1||$[Q]>Pr6)return-1;X=X*10+($[Q]-Ua1)}return Z!==void 0&&X>Z?-1:X}}Oa1.Parser=Ba1;Oa1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};Oa1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var tZ0=_((La1)=>{Object.defineProperty(La1,"__esModule",{value:!0});La1.MsgHdrsImpl=void 0;La1.canonicalMIMEHeaderKey=Tn0;La1.headers=Rr6;var wa1=sY(),yJ=tB(),pZ0=eY();function Tn0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw pZ0.InvalidArgumentError.format("header",`'${$[U]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;N[U]=B,F=B==45}return String.fromCharCode(...N)}function Rr6($=0,Z=""){if($===0&&Z!=="")throw pZ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw pZ0.InvalidArgumentError.format("description","is required");return new tb($,Z)}var An0="NATS/1.0";class tb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new tb,Q=wa1.TD.decode($).split(`\r
|
|
1376
1376
|
`),Y=Q[0];if(Y!==An0){let G=Y.replace(An0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=An0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1377
1377
|
${Z}: ${X[Q]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2830,7 +2830,7 @@ Respond with the structured verdict and a short reason.`,hy$;var cy$=w(()=>{_4()
|
|
|
2830
2830
|
${G.join(`
|
|
2831
2831
|
`)}`:Y}function cG6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2832
2832
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Ig$=200,_G6=12,xG6=300,z91=3;var P91=w(()=>{q_();lP0()});function dG6($){if(!$||$.includes(".."))return!1;return lG6.test($)}function Mg$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!dG6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function kg$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var lG6;var Vg$=w(()=>{lG6=/^[\w./@-]+$/});function A91($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Ka($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Sg$($,Z,X,Q){if(!Q.connectionId)throw new k_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new k_(Z9);await nO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let N=H instanceof Error?H.message:Z9;throw new k_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await tO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((H)=>{let{code:N,message:U}=J4$(H instanceof Error?H.message:String(H));throw N?new k_(U):H}),K=dh($),F=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await UB(F,mG6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var mG6=10485760,k_;var T91=w(()=>{uG();CP0();gp();id0();ux();k_=class k_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function pG6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!iG6.test(Z))throw Error(`Invalid branch name: ${$}`)}function V_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(tG6)])}function oG6($,Z,X){let Q=B5($)[Z]?.[X];return!!Q&&Object.keys(AY(Q)).length>0}function S_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function th($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Ka(Z,X);if(!Y)throw new Q6(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return _P0(Q,G.id,Y)}function R91($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,i5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,i5)}async function vg$($){try{let Z=await th($),X=await dP0(Z,$.get("vmClaim").branch);return $.json(X,200,i5)}catch(Z){return R91($,Z)}}function Fa($,Z){let Q=(pP0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return pP0.set($,Y),Y.finally(()=>{if(pP0.get($)===Y)pP0.delete($)}),Q}async function dZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,i5);let Q=S_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,F=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,F.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=X?.signal,N={method:W,headers:F,body:K,...H?{signal:H}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...i5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?aG6(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...i5}})};try{if(H){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function aG6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function nP0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function sG6($){return fg$.includes($)}var iG6,Cg$=524288,nG6=65536,tG6=1e4,_g$=2000,rG6,pP0,i5,fg$,bg$=()=>{let $=new H1;$.use("/:virtualMcpId/:branch/*",rG6),$.post("/:virtualMcpId/:branch/write",(X)=>dZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>dZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>dZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>dZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>dZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>dZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>dZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return dZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return dZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!sG6(Q))return X.json({error:`step must be one of: ${fg$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Yy(Y.virtualMcpMetadata);try{await xO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return dZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return TN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return vy$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return vg$(X);return Z(X)});let Z=(X)=>dZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(_g$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return vg$(X);return dZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(_g$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await th(X),J=await mP0(G,Q.branch,Y.base);return X.json(J,200,i5)}catch(Y){return R91(X,Y)}return dZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,i5);let Q=S_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Fa(Y,async()=>{try{await Q91(W,Q,Y);let K=Ka(G,J);if(K)await Sg$(W,Q,Y,K)}catch(K){if(K instanceof k_)return X.json({error:K.message},403,i5);let F=K instanceof Error?K.message:String(K);return X.json({error:F},502,i5)}return dZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Fa(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,i5);try{let J=await th(X);return await qg$(J,Q.branch,G),X.json({ok:!0},200,i5)}catch(J){let W=J instanceof Q6&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,i5)}});return Fa(Q.claimName,()=>dZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Fa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await th(X),F=W.base??await K.getDefaultBranch();return await iP0(K,Q.branch,F),X.json({ok:!0},200,i5)}catch(W){return R91(X,W)}});let Y=S_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Fa(G,async()=>{try{await Q91(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,i5)}return dZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",M9({maxSize:Cg$,onError:(X)=>X.json({error:"Payload too large"},413,i5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let F=S_(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=J91(H)&&U?[H,N]:Y?await Promise.all([nP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),nP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await th(X);return Promise.all([dP0(L,Q.branch),mP0(L,Q.branch)])})(),D=await gy$(K,O,B);return X.json(D,200,i5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,i5);return X.json({error:H},502,i5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",M9({maxSize:Cg$,onError:(X)=>X.json({error:"Payload too large"},413,i5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let F=S_(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=J91(H)&&U?[H,N]:Y?await Promise.all([nP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),nP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await th(X);return Promise.all([dP0(L,Q.branch),mP0(L,Q.branch)])})(),D=await uy$(K,O,B,typeof F.language==="string"?F.language:void 0);return X.json(D,200,i5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,i5);return X.json({error:H},502,i5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=S_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=A91(`${W}${G}`),F;try{F=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let H;try{H=await F.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(H,{status:F.status,headers:{"content-type":F.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",M9({maxSize:nG6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=S_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Mg$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=kg$(G,W.resolveType),F=A91(K),H;try{H=await fetch(F?.url??K,{method:"POST",headers:{"content-type":"application/json",...F?{host:F.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var xg$=w(()=>{D8();BN();lh();X91();TH();Cy$();S3();dX();O8();xB0();KB();_y$();fy$();Op0();xp();F91();cy$();U91();q_();P91();Vg$();T91();iG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;rG6=SP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=G1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{pG6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=ei({orgId:Y.id,virtualMcpId:G,branch:J}),F=await vH(X,J,Q),H=Sy$({userId:F,projectRef:K}),N=W.metadata??null;if(AW$(N).fastPreviewCapability&&!oG6(N,F,J))return $.set("vmClaim",{claimName:H,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await oX(X,{userId:F,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});pP0=new Map;i5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};fg$=["clone","install","start"]});function yg$($,Z,X){let Q=I91.get($);if(!Q)Q={pending:null,running:!1},I91.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)$J6($,Q);return G}async function $J6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await ZJ6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)I91.delete($)}}async function ZJ6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Wa(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=E91(W,Q),F=[],H=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=j91(K,B),E=`${JSON.stringify(D,null,2)}
|
|
2833
|
-
`,j=await Z.createBlob(E);await Tg$(Z.owner,Z.repo,j,E);let z=L[0]??`${cP0(Q)}/${O91(B)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let B of $.del)for(let D of j91(K,B))F.push({path:D,mode:"100644",type:"blob",sha:null}),H.delete(D);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Qa(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),O=await Z.createCommit({message:XJ6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=eG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function XJ6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return xd0(Q,$.deps.coAuthor)}var eG6=3,I91;var gg$=w(()=>{kO0();fP0();u4();q_();lP0();I91=new Map});import{createHmac as hg$,randomBytes as QJ6,timingSafeEqual as YJ6}from"crypto";function ug$(){if(tP0)return tP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return tP0=$?Buffer.from($):QJ6(32),tP0}function q91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+GJ6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=hg$("sha256",ug$()).update(Q).digest("base64url");return`${Q}.${Y}`}function cg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(hg$("sha256",ug$()).update(Q).digest("base64url"));if(Y.length!==G.length||!YJ6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var GJ6=21600000,tP0=null;var lg$=w(()=>{T$()});import{z as oh}from"zod";function WJ6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&JJ6.test($)}function mg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function oP0($){let Z=$.get("decofileScope");return _P0($.var.studioContext,Z.organizationId,Z.githubRepo)}function rP0($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function ig$(){let $=new H1;return $.use("/:virtualMcpId/:branch",dg$),$.use("/:virtualMcpId/:branch/*",dg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Rg$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=q91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(mg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return rP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=KJ6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{vP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await oP0(Z),W=await yg$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:dh(Q)},G),K=q91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:mg$(Z)})}catch(J){return rP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof Q6&&W.status===409))throw W;await iP0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return rP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return rP0(Z,Q)}}),$}var JJ6,KJ6,dg$;var pg$=w(()=>{fP0();D8();X91();CP0();T91();U91();gg$();lg$();P91();q_();lP0();JJ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;KJ6=oh.object({set:oh.record(oh.string(),oh.unknown()).optional(),delete:oh.array(oh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),dg$=SP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!WJ6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!cg$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!bB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let H=W.connections?.map((O)=>O.connection_id)??[],N=Ka(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var ng$=($)=>{let Z=new H1;if(Z.use("*",D_),Z.route("/",nz0()),Z.route("/",Bf$()),Z.route("/",Ly$()),Z.route("/",By$()),Z.route("/",MP0()),Z.route("/tools",Ry$()),Z.route("/",Py$()),Z.route("/",rx$({kvStorage:$.kvStorage})),Z.route("/",tx$()),Z.route("/fs",Wy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",bg$()),Z.route("/decofile",ig$()),Z.route("/",Ny$()),Z.route("/deco-sites",oz0()),Z.route("/sso",cz0()),Z.route("/",kP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Jf$()),$.mountDevAssets)Z.route("/dev-assets",rz0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",lC$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Fy$()),Z.route("/mcp",ZD0()),Z.route("/mcp/self",qP0()),Z.route("/mcp",YD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var tg$=w(()=>{D8();R61();Wf$();k61();az0();Vr();A61();ox$();ax$();Ky$();xn();B61();GD0();o51();Hy$();Uy$();wy$();Ey$();Ay$();a51();Iy$();s51();XD0();xg$();pg$()});function FJ6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var HJ6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},og$=()=>{let $=new H1;return $.use("*",HJ6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:FJ6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var rg$=w(()=>{D8();T$();oj0()});import{z as M1}from"zod";function QF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function zJ6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function PJ6($,Z,X){try{return JSON.parse($)}catch{throw new eg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function AJ6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:PJ6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function TJ6($){let Z=$.map((X)=>{let Q=X.function.parameters?xY(X.function.parameters):xY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function RJ6($){if(!$)return;return{openai:{response_format:$}}}function IJ6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ag$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function sg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var NJ6=256,UJ6,OJ6,BJ6,wJ6,DJ6,LJ6,EJ6,jJ6,eg$,$h$,Zh$;var Xh$=w(()=>{_4();D8();lh();XN();UJ6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),OJ6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),BJ6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(OJ6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),wJ6=M1.object({type:M1.literal("text")}),DJ6=M1.object({type:M1.literal("json_object")}),LJ6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),EJ6=M1.union([wJ6,DJ6,LJ6]),jJ6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(BJ6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(UJ6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:EJ6.optional(),user:M1.string().optional()});eg$=class eg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};$h$=new H1;$h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(QF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=jJ6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=zJ6(G.model);if(!J)return $.json(QF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>VD(j.providerId));if(!E)return $.json(QF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(QF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=AJ6(G.messages),U=G.tools?TJ6(G.tools):void 0,O=RJ6(G.response_format),B=IJ6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=ag$(H,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=NJ6)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:sg$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=ag$(H,N,U,G,O,$.req.raw.signal),E=await dO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:sg$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(QF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QF(Y.message,"server_error"),500)}});Zh$=$h$});function qJ6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Qh$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oK(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||J7(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(N.title.toLowerCase()!==G)continue;if(!qJ6(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Yh$=w(()=>{D8();W_()});var Jh$;var Gh$=w(()=>{Jh$={name:"decocms",version:"4.246.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function VJ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??kJ6}}var Wh$,kJ6="https://ph.studio.decocms.com",Kh$;var Fh$=w(()=>{D8();Bh0();QC();v9();T$();F61();Gh$();Wh$=new H1;Wh$.get("/",($)=>{let Z={version:Jh$.version,theme:Ad1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:sV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Iv$(),posthog:VJ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!TK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Kh$=Wh$});function rh($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function M91($){return(rh($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Nh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(rh($))}&sz=${Z}`}function Hh$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Uh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Hh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Hh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,SJ6,CJ6,_J6,vJ6,Oh$;var Bh$=w(()=>{C_=l0.enum(["good","bad","neutral"]),SJ6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:C_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),CJ6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(SJ6)),_J6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},vJ6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:C_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:C_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:C_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:C_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(CJ6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:C_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:C_.optional()})).min(1)})]),Oh$=l0.object({..._J6,template:vJ6})});function aP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Oh$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var k91=w(()=>{Bh$()});import{join as wh$}from"path";async function bJ6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(fJ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=aP0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||M91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function YG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function xJ6($,Z){let X=rh($),Q=Z?.brand?.trim()||M91(X),Y=Nh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Uh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${YG(W)}</title>`,`<meta name="description" content="${YG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${YG(W)}" />`,`<meta property="og:description" content="${YG(K)}" />`,`<meta property="og:url" content="${YG(J)}" />`,`<meta property="og:image" content="${YG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${YG(W)}" />`,`<meta name="twitter:description" content="${YG(K)}" />`,`<meta name="twitter:image" content="${YG(F)}" />`,`<meta name="twitter:image:alt" content="${YG(H)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
|
|
2833
|
+
`,j=await Z.createBlob(E);await Tg$(Z.owner,Z.repo,j,E);let z=L[0]??`${cP0(Q)}/${O91(B)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let B of $.del)for(let D of j91(K,B))F.push({path:D,mode:"100644",type:"blob",sha:null}),H.delete(D);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Qa(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),O=await Z.createCommit({message:XJ6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=eG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function XJ6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return xd0(Q,$.deps.coAuthor)}var eG6=3,I91;var gg$=w(()=>{kO0();fP0();u4();q_();lP0();I91=new Map});import{createHmac as hg$,randomBytes as QJ6,timingSafeEqual as YJ6}from"crypto";function ug$(){if(tP0)return tP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return tP0=$?Buffer.from($):QJ6(32),tP0}function q91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+GJ6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=hg$("sha256",ug$()).update(Q).digest("base64url");return`${Q}.${Y}`}function cg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(hg$("sha256",ug$()).update(Q).digest("base64url"));if(Y.length!==G.length||!YJ6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var GJ6=21600000,tP0=null;var lg$=w(()=>{T$()});import{z as oh}from"zod";function WJ6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&JJ6.test($)}function mg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function oP0($){let Z=$.get("decofileScope");return _P0($.var.studioContext,Z.organizationId,Z.githubRepo)}function rP0($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function ig$(){let $=new H1;return $.use("/:virtualMcpId/:branch",dg$),$.use("/:virtualMcpId/:branch/*",dg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Rg$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=q91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(mg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return rP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=KJ6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{vP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await oP0(Z),W=await yg$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:dh(Q)},G),K=q91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:mg$(Z)})}catch(J){return rP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof Q6&&W.status===409))throw W;await iP0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return rP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await oP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return rP0(Z,Q)}}),$}var JJ6,KJ6,dg$;var pg$=w(()=>{fP0();D8();X91();CP0();T91();U91();gg$();lg$();P91();q_();lP0();JJ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;KJ6=oh.object({set:oh.record(oh.string(),oh.unknown()).optional(),delete:oh.array(oh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),dg$=SP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!WJ6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!cg$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!bB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let H=W.connections?.map((O)=>O.connection_id)??[],N=Ka(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var ng$=($)=>{let Z=new H1;if(Z.use("*",D_),Z.route("/",nz0()),Z.route("/",Bf$()),Z.route("/",Ly$()),Z.route("/",By$()),Z.route("/",MP0()),Z.route("/tools",Ry$()),Z.route("/",Py$()),Z.route("/",rx$({kvStorage:$.kvStorage})),Z.route("/",tx$()),Z.route("/fs",Wy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",bg$()),Z.route("/decofile",ig$()),Z.route("/",Ny$()),Z.route("/deco-sites",oz0()),Z.route("/sso",cz0()),Z.route("/",kP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Jf$()),$.mountDevAssets)Z.route("/dev-assets",rz0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",lC$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Fy$()),Z.route("/mcp",ZD0()),Z.route("/mcp/self",qP0()),Z.route("/mcp",YD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var tg$=w(()=>{D8();R61();Wf$();k61();az0();Vr();A61();ox$();ax$();Ky$();xn();B61();GD0();o51();Hy$();Uy$();wy$();Ey$();Ay$();a51();Iy$();s51();XD0();xg$();pg$()});function FJ6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var HJ6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},og$=()=>{let $=new H1;return $.use("*",HJ6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:FJ6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var rg$=w(()=>{D8();T$();oj0()});import{z as M1}from"zod";function QF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function zJ6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function PJ6($,Z,X){try{return JSON.parse($)}catch{throw new eg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function AJ6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:PJ6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function TJ6($){let Z=$.map((X)=>{let Q=X.function.parameters?xY(X.function.parameters):xY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function RJ6($){if(!$)return;return{openai:{response_format:$}}}function IJ6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ag$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function sg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var NJ6=256,UJ6,OJ6,BJ6,wJ6,DJ6,LJ6,EJ6,jJ6,eg$,$h$,Zh$;var Xh$=w(()=>{_4();D8();lh();XN();UJ6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),OJ6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),BJ6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(OJ6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),wJ6=M1.object({type:M1.literal("text")}),DJ6=M1.object({type:M1.literal("json_object")}),LJ6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),EJ6=M1.union([wJ6,DJ6,LJ6]),jJ6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(BJ6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(UJ6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:EJ6.optional(),user:M1.string().optional()});eg$=class eg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};$h$=new H1;$h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(QF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=jJ6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=zJ6(G.model);if(!J)return $.json(QF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>VD(j.providerId));if(!E)return $.json(QF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(QF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=AJ6(G.messages),U=G.tools?TJ6(G.tools):void 0,O=RJ6(G.response_format),B=IJ6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=ag$(H,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=NJ6)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:sg$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=ag$(H,N,U,G,O,$.req.raw.signal),E=await dO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:sg$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(QF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QF(Y.message,"server_error"),500)}});Zh$=$h$});function qJ6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Qh$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oK(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||J7(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(N.title.toLowerCase()!==G)continue;if(!qJ6(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Yh$=w(()=>{D8();W_()});var Jh$;var Gh$=w(()=>{Jh$={name:"decocms",version:"4.246.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function VJ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??kJ6}}var Wh$,kJ6="https://ph.studio.decocms.com",Kh$;var Fh$=w(()=>{D8();Bh0();QC();v9();T$();F61();Gh$();Wh$=new H1;Wh$.get("/",($)=>{let Z={version:Jh$.version,theme:Ad1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:sV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Iv$(),posthog:VJ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!TK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Kh$=Wh$});function rh($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function M91($){return(rh($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Nh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(rh($))}&sz=${Z}`}function Hh$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Uh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Hh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Hh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,SJ6,CJ6,_J6,vJ6,Oh$;var Bh$=w(()=>{C_=l0.enum(["good","bad","neutral"]),SJ6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:C_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),CJ6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(SJ6)),_J6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},vJ6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:C_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:C_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:C_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:C_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(CJ6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:C_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:C_.optional()})).min(1)})]),Oh$=l0.object({..._J6,template:vJ6})});function aP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Oh$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var k91=w(()=>{Bh$()});import{join as wh$}from"path";async function bJ6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(fJ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=aP0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||M91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function YG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function xJ6($,Z){let X=rh($),Q=Z?.brand?.trim()||M91(X),Y=Nh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Uh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${YG(W)}</title>`,`<meta name="description" content="${YG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${YG(W)}" />`,`<meta property="og:description" content="${YG(K)}" />`,`<meta property="og:url" content="${YG(J)}" />`,`<meta property="og:image" content="${YG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${YG(W)}" />`,`<meta name="twitter:description" content="${YG(K)}" />`,`<meta name="twitter:image" content="${YG(F)}" />`,`<meta name="twitter:image:alt" content="${YG(H)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
|
|
2834
2834
|
`)}function yJ6($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
|
|
2835
2835
|
</head>`)}function Dh$($){let Z=new H1;return Z.get("/:domain/og.png",async(X)=>{let Q=rh(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(wh$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(gJ6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?wh$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await bJ6(rh(Q)),K=xJ6(Q,W);return X.html(yJ6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var fJ6=2500,gJ6=1e4;var Lh$=w(()=>{D8();k91();vL();T$()});function Ha($,Z){return fetch(`${oW({})}${$}`,Z)}async function hJ6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Ha(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=aP0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var uJ6,IN,Eh$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},jh$;var zh$=w(()=>{D8();_Y();vL();k91();uJ6=new Set(["complete","errored","terminated","unknown"]),IN=new H1;IN.use("*",async($,Z)=>{let X=await F8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});IN.use("/link-token/*",Eh$);IN.use("/suggest",Eh$);IN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await hJ6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});IN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Ha("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${_L({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});IN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ha(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${_L({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:uJ6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});IN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ha(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});IN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ha(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});jh$=IN});import{createHmac as cJ6,timingSafeEqual as lJ6}from"crypto";function Ah$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let N=F.slice(0,H).trim(),U=F.slice(H+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>dJ6)return!1;let W=cJ6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&lJ6(K,H)})}function Th$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=PJ(Z),Q=PJ(PJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:YF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Rh$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function YF($){return typeof $==="string"?$:void 0}function PJ($){return typeof $==="object"&&$!==null?$:void 0}function sP0($){return typeof $==="number"?new Date($*1000):null}function C91($){return YF($)??YF(PJ($)?.id)}function mJ6($){return C91($.subscription)??YF(PJ(PJ($.parent)?.subscription_details)?.subscription)}function iJ6($){let Z=sP0($.current_period_end);if(Z)return Z;let X=PJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=PJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function V91($,Z){let X=sP0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function S91($,Z){let X=sP0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function pJ6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=YF(PJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(YF(PJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(YF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=YF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(PJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:PJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(YF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=C91(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(V91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:C91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:S91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=YF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&V91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Rh$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:iJ6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:S91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=mJ6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(V91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:sP0(X.period_end),lastStripeEventAt:S91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function nJ6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Rh$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Ph$($,Z){let X=nJ6($,Z);if(!X)return;MY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Si1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Ih$($){let Z=new iW(p8().db),X=await pJ6(Z,$);if(!(X.handled&&X.topUp))Ph$($,X);if(X.handled&&X.topUp)await Lw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Ph$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await ma1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof vY&&(Q.status===400||Q.status===404)))throw Q}return X}var dJ6=300;var qh$=w(()=>{_G();M4();U60();lL();ps0()});var tJ6=1048576,_91;var Mh$=w(()=>{D8();BN();T$();qh$();_91=new H1;_91.post("/webhook",M9({maxSize:tJ6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Ah$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Th$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Ih$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as oJ6}from"crypto";function aJ6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return oJ6(Buffer.from(Y),Buffer.from(Q))}var rJ6=5242880,v91;var kh$=w(()=>{D8();BN();vp();v91=new H1;v91.post("/webhook",M9({maxSize:rJ6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!aJ6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Wp0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Vh$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Sh$,sJ6,eJ6,Ch$;var _h$=w(()=>{D8();K3();zy();Lx();Sh$=new H1,sJ6=["range","if-none-match","if-modified-since"],eJ6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Sh$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Rh($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await Fn(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&O3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,F,H]=K,N=Buffer.from(H,"base64"),U=new Headers({"Content-Type":F,"Cache-Control":"private, max-age=86400"});return Vh$(U,F),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of sJ6){let F=$.req.header(K);if(F)G.set(K,F)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of eJ6){let F=J.headers.get(K);if(F)W.set(K,F)}return W.set("Cache-Control","private, max-age=86400"),Vh$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Ch$=Sh$});var Na=_((__)=>{var $36=__&&__.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),Z36=__&&__.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))$36(Z,$,X)};Object.defineProperty(__,"__esModule",{value:!0});Z36(HY(),__)});var bh$=_((vh$)=>{Object.defineProperty(vh$,"__esModule",{value:!0});vh$.version=void 0;vh$.version="3.4.0"});var gh$=_((GF)=>{var X36=GF&&GF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(GF,"__esModule",{value:!0});GF.NodeTransport=GF.VERSION=void 0;GF.nodeResolveHost=K36;var o6=Na(),Q36=z0("net"),f91=z0("tls"),Y36=z0("path"),xh$=z0("fs"),G36=X36(z0("dns")),J36=bh$();GF.VERSION=J36.version;var W36="nats.js";class yh${socket;version;lang;yields=[];signal=(0,o6.deferred)();closedNotification=(0,o6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=W36,this.version=GF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,o6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw o6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new o6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new o6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,o6.deferred)(),X,Q=(0,Q36.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,o6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=o6.DataBuffer.concat(...this.yields),Y=(0,o6.extractProtocolMessage)(Q);if(Y!=="")try{let G=o6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,o6.deferred)();try{if($=(0,Y36.resolve)($),!(0,xh$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,xh$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,o6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new o6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,o6.deferred)();try{let Y=(0,f91.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new o6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,o6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new o6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,o6.deferred)();try{let Q=(0,f91.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new o6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,o6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,o6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof f91.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,o6.render)($)}`);let Z=(0,o6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,o6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,o6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}GF.NodeTransport=yh$;function K36($){let Z=(0,o6.deferred)();return G36.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var dh$=_((lh$)=>{Object.defineProperty(lh$,"__esModule",{value:!0});lh$.connect=F36;var hh$=gh$(),uh$=Na(),ch$=Na();function F36($={}){if((0,ch$.hasWsProtocol)($))return Promise.reject(ch$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,uh$.setTransportFactory)({factory:()=>{return new hh$.NodeTransport},dnsResolveFn:hh$.nodeResolveHost}),uh$.NatsConnectionImpl.connect($)}});var mh$=_((qN)=>{var N36=qN&&qN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),U36=qN&&qN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))N36(Z,$,X)};Object.defineProperty(qN,"__esModule",{value:!0});qN.connect=void 0;var O36=dh$();Object.defineProperty(qN,"connect",{enumerable:!0,get:function(){return O36.connect}});U36(Na(),qN)});function th$($){let Z=$?.connectFn??L36,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function F(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function H(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,F()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:D36,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,H(X),F();return}catch{B++;let D=pZ(w36,B36,B-1,2,0.5);await q$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?ih$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=nh$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function L36($){return ph$.connect($)}var ih$,ph$,nh$,B36=100,w36=3000,D36=3000;var oh$=w(()=>{u4();ih$=V(Pu(),1),ph$=V(mh$(),1),nh$=V(bw(),1)});function b91($,Z){return`${$}.${Z}`}class x91{cache;constructor($){this.cache=Nh({ttlMs:$?.ttlMs??E36,maxSize:$?.maxSize??j36})}async get($,Z){return this.cache.get(b91($,Z))??null}async set($,Z,X){this.cache.set(b91($,Z),X)}async invalidate($,Z){this.cache.delete(b91($,Z))}teardown(){this.cache.clear()}}var E36=600000,j36=5000;var rh$=()=>{};function eP0($,Z){return`${$}:${Z}`}function y91($){let Z=Nh({ttlMs:$?.ttlMs??z36,maxSize:$?.maxSize??P36}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,F){let H=X?.();if(!H)return;try{H.publish(ah$,Y.encode(JSON.stringify({organizationId:K,keyId:F,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,F){return Z.get(eP0(K,F))},set(K,F,H){Z.set(eP0(K,F),H)},invalidate(K,F){Z.delete(eP0(K,F)),W(K,F)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(ah$),(async()=>{for await(let F of J)try{let H=JSON.parse(G.decode(F.data));if(H.originId===Q)continue;Z.delete(eP0(H.organizationId,H.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var ah$="studio.ai-provider-keys.invalidate",z36=30000,P36=5000;var sh$=()=>{};class g91{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=eh$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of eh$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var eh$;var $u$=w(()=>{eh$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Zu$=($)=>{let Z;return()=>Z??=$()},h91,u91;var Xu$=w(()=>{b6();h91=Zu$(()=>S$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),u91=Zu$(()=>S$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function k36(){return{name:mH,subjects:[`${zw0}.>`],storage:GW.StorageType.File,max_age:R36,max_bytes:q36,max_msgs_per_subject:M36,discard:GW.DiscardPolicy.Old,retention:GW.RetentionPolicy.Limits,duplicate_window:I36,num_replicas:1}}class Gu${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function Qu$($){let Z=Yu$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function _36($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,T36().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function v36($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class c91{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=k36(),X=await N9(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await GW.jetstreamManager($);try{await Q.streams.info(mH),await Q.streams.update(mH,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(mH),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:v36});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=_36(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let F=oF$(Z);Y.publish(F.subject,F.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(F)=>{let H=performance.now(),N=mt0(F,{runId:Z}),U=performance.now()-H;if(h91().record(U),u91().add(1,{"org.id":Q??"unknown"}),C36?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?Qu$(O.headers):void 0)};return(async()=>{let F=$.getReader(),H=0,N=0,U;try{while(!0){let{done:O,value:B}=await F.read();if(O)break;if(K(B),N++,++H>=64)H=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(F.releaseLock(),W(),S36)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=mt0(Z,{runId:$,dedup:X});if(h91().record(performance.now()-Y),u91().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:Qu$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=tF$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?GW.DeliverPolicy.New:GW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=MB($),W;try{W=await(await Q.consumers.get(mH,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let H=Iw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Pw0()).pipeThrough(Aw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{H.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),H.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await H.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(mH,{filter:MB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var GW,Yu$,A36=($)=>{let Z;return()=>Z??=$()},T36,R36=86400000000000,I36=120000000000,q36=4294967296,M36=500000,V36,S36,C36;var Ju$=w(()=>{u4();it0();qw0();Tw0();b6();Xu$();GW=V(bw(),1),Yu$=V(Pu(),1),T36=A36(()=>S$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));V36=process.env.STREAM_ENCODE_TRACE==="1",S36=process.env.DECOPILOT_STREAM_TRACE==="1";C36=V36?new Gu$:null});function $A0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,kW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var Wu$=w(()=>{O8()});class l91{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function Ku$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!Ar(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await C6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),H8(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var Fu$=w(()=>{sX();Tr();h5()});function u36($){return $ instanceof n7}function c36($,Z){return Z-$>=g36}class d91{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??f36;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??x36,X=this.options.itemIntervalMs??b36,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-bn0),Mo0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-h36));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Ot0(this.taskBoard,Y,Q),await Bt0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==n8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await iH(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),u36(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+y36)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),H8(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!c36(LH(X),Date.now()))return;await qK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===n8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await by(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await Ku$(J,Q,W.map((K)=>K.merged)))return!0;if(await WN$(J,Q))return!0;if(!Y)return!1;if(!To0(W))return!1;return await _w0(J,Q,{previewMatchesHead:Ro0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var f36=60000,b36=300000,x36=50,y36=60000,g36=900000,h36=120000;var Hu$=w(()=>{E9();wo0();cH();Cn();Fu$();h5();E3();ko0();kK();Rn()});import{readdir as l36,rm as ZA0}from"fs/promises";import{join as XA0}from"path";async function QA0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-d36),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await v_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Nu$($,Y,Z);else if(!Y.startsWith(".")){let G=XA0($,Y),J=await v_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Nu$(G,K,Z)}if((await v_(G)).length===0)await ZA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Nu$($,Z,X){let Q=0,Y=XA0($,Z),G=await v_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=XA0(Y,W),F=await v_(K);for(let N of F){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=XA0(K,N);await ZA0(O,{recursive:!0,force:!0}),Q++}}if((await v_(K)).length===0)await ZA0(K,{recursive:!0,force:!0})}if((await v_(Y)).length===0)await ZA0(Y,{recursive:!0,force:!0});return Q}async function v_($){try{return(await l36($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var d36=30;var m91=()=>{};import{DBOS as i91,SchedulerMode as m36}from"@dbos-inc/dbos-sdk";async function p36(){let $=[qJ(),f_(),FF()],Z=0;for(let X of $)try{Z+=await QA0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function n36($,Z){await i91.runStep(()=>p36(),{name:"monitoringRetention"})}function Ou$(){if(Uu$)return;Uu$=!0;let $=i91.registerWorkflow(n36,{name:"monitoringRetentionWorkflow"});i91.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:i36,mode:m36.ExactlyOncePerIntervalWhenActive})}var i36="23 4 * * *",Uu$=!1;var Bu$=w(()=>{JY();m91()});function wu$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await sG.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await p41($.db,Z,Q.role);return Y.boundAuth=i41({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new wL(X,void 0,Y.boundAuth,Q.role,"self"),AB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Du$=w(()=>{DL();YC()});function t36(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function r36(){for(let $ of o36)$()}function Lu$($){let Z=[...p91.logs,$];p91={...p91,logs:Z.length>500?Z.slice(-500):Z},r36()}function n91(){return a36}var p91,o36,a36=!1;var t91=w(()=>{p91=t36(),o36=new Set});import{EventEmitter as s36}from"events";var o91;var Eu$=w(()=>{t91();o91=new s36;o91.on("request",($)=>{Lu$($)})});function ju$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=ah(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>ah(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${Y5.tool}${O}${Y5.dim}(${L})${Y5.reset}`}else if(U.method)G=`${Y5.dim}${ah(U.method)}${Y5.reset}`}}catch{}}let W=ah(Y);if(Y.startsWith("/mcp/conn_")){let H=Y.split("/")[2]??"";W=`/mcp/${Y5.mcp}${ah(H.slice(0,12))}\u2026${Y5.reset}`}else if(Y==="/mcp")W=`${Y5.mcp}/mcp${Y5.reset}`;else if(Y==="/mcp/registry")W=`${Y5.mcp}/mcp/registry${Y5.reset}`;let K=$W6(Q),F=J?"\u25C0":"\u2190";if(!n91())console.log(`${Y5.dim}${F}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let H=Date.now()-X,N=$.res.status,U=e36(N),O=H<1000?`${H}ms`:`${(H/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!n91())console.log(`${Y5.dim}${B}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""} ${U}${N}${Y5.reset} ${Y5.duration}${O}${Y5.reset}`);o91.emit("request",{method:Q,path:ah(Y),status:N,duration:H,timestamp:new Date})}}}var Y5,e36=($)=>{if($>=500)return Y5.serverError;if($>=400)return Y5.clientError;if($>=300)return Y5.redirect;return Y5.ok},$W6=($)=>{return Y5[$]||Y5.reset},ah=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var zu$=w(()=>{t91();Eu$();Y5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Ru$}from"crypto";import{mkdir as ZW6,readdir as XW6,rm as Pu$,stat as Iu$}from"fs/promises";import{join as a91,relative as QW6}from"path";import{z as z$}from"zod";function Mu$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return a91(YW6,Z)}function ku$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function r91($,Z){let X=Mu$($),Q=ku$(Z);return a91(X,Q)}function GW6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Ru$("sha256",Y).update(G).digest("hex")}function Tu$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=GW6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${ku$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Vu$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Ru$("md5","etag").update(Q).digest("hex")}"`}async function Su$($,Z,X,Q,Y){try{let G=await XW6($,{withFileTypes:!0});for(let J of G){let W=a91($,J.name),F=QW6(Z,W).replace(/\\/g,"/");if(X&&!F.startsWith(X))continue;if(J.isDirectory())if(Q){let H=F+"/";if(!X||H.startsWith(X)){if(!(X?F.slice(X.length):F).includes("/"))Y.commonPrefixes.add(H)}}else await Su$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let H=F.slice(X.length);if(H.includes(Q)){let N=H.indexOf(Q),U=X+H.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let H=await Iu$(W);Y.objects.push({key:F,size:H.size,lastModified:H.mtime.toISOString(),etag:Vu$(W,H.mtime,H.size)})}catch{}}}}catch{}}function Cu$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:z$.object({prefix:z$.string().optional(),maxKeys:z$.number().optional().default(1000),continuationToken:z$.string().optional(),delimiter:z$.string().optional()}),outputSchema:z$.object({objects:z$.array(z$.object({key:z$.string(),size:z$.number(),lastModified:z$.string(),etag:z$.string()})),nextContinuationToken:z$.string().optional(),isTruncated:z$.boolean(),commonPrefixes:z$.array(z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,F=G.continuationToken,H=Mu$(Q);await ZW6(H,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Su$(H,H,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(F){if(U=N.objects.findIndex((L)=>L.key>F),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({contentType:z$.string().optional(),contentLength:z$.number(),lastModified:z$.string(),etag:z$.string(),metadata:z$.record(z$.string(),z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=r91(Q,G.key),W=await Iu$(J);return{contentType:S61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Vu$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:z$.object({key:z$.string(),expiresIn:z$.number().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Au$;return{url:Tu$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:z$.object({key:z$.string(),expiresIn:z$.number().optional(),contentType:z$.string().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Au$;return{url:Tu$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({success:z$.boolean(),key:z$.string()}),handler:async(Y)=>{let G=Y,J=r91(Q,G.key);try{return await Pu$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:z$.object({keys:z$.array(z$.string()).max(1000)}),outputSchema:z$.object({deleted:z$.array(z$.string()),errors:z$.array(z$.object({key:z$.string(),message:z$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let F=r91(Q,K);try{await Pu$(F),J.push(K)}catch(H){W.push({key:K,message:H instanceof Error?H.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function s91($,Z,X){let Q=Cu$(Z,X),Y=new bW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:F5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:z$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:z$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(F)=>{try{let H=await J.handler(F);return{content:[{type:"text",text:JSON.stringify(H)}],structuredContent:H}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}})}let G=new eX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),GJ(Y,G,$,"mcp:dev-assets")}async function _u$($,Z,X,Q){let G=Cu$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var YW6="./data/assets",Au$=3600,qu$,vu$;var fu$=w(()=>{T$();cy();D8();ml();wC();_X();az0();qu$=new H1;qu$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return s91($.req.raw,Z,Q)});vu$=qu$});var bu$={};Y4(bu$,{mountDevRoutes:()=>JW6});function JW6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return s91(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),F=await _u$(W,K,Y,J);if(F.isError)return Q.json(F.content,500);return Q.json(F.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",vu$);let X=new H1;X.use("*",QW({mountPath:"/api/dev-assets"})),X.route("/",rz0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var xu$=w(()=>{D8();T61();az0();fu$()});import{sql as WW6}from"kysely";import{randomUUID as yu$}from"crypto";import{z as KW6}from"zod";async function HW6($){let Z=new Date().toISOString(),X=yu$(),Q=l4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:yu$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await WW6`SELECT
|
|
2836
2836
|
pg_notify('studio_events', ${X}),
|