decocms 4.243.1 → 4.243.2
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-8Zp9V4Gf.js → AlertCircle-DUlfht_8.js} +1 -1
- package/dist/client/assets/{AreaChart-DY55BZH7.js → AreaChart-Cb6V67gW.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CV5LnTOD.js → ArrowLeft-xr5VbHB2.js} +1 -1
- package/dist/client/assets/{ArrowUp-30qFHVAn.js → ArrowUp-CsCHH_fH.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-BbZhk1vr.js → ArrowUpRight-M9WAVHfb.js} +1 -1
- package/dist/client/assets/{Check-DybL0ANt.js → Check-BXav60Vy.js} +1 -1
- package/dist/client/assets/{CheckCircle-DRTLKGuF.js → CheckCircle-C2PmPe-o.js} +1 -1
- package/dist/client/assets/{ChevronDown-xX7EiG6D.js → ChevronDown-CauLatdX.js} +1 -1
- package/dist/client/assets/{ChevronRight-ChB7-Qdk.js → ChevronRight-BGcGReEM.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-B1KXM4ba.js → ChevronSelectorVertical-CvdZht1v.js} +1 -1
- package/dist/client/assets/{ChevronUp-BqbI3e8M.js → ChevronUp-D_tIdiJb.js} +1 -1
- package/dist/client/assets/{Copy01-DTWBSnDM.js → Copy01-CV1JugLX.js} +1 -1
- package/dist/client/assets/{CreditCard01-CTZjNSbQ.js → CreditCard01-B_w5eexh.js} +1 -1
- package/dist/client/assets/{DotsVertical-BOtiBqPV.js → DotsVertical-fn24sGZC.js} +1 -1
- package/dist/client/assets/{Download01-D5DovFP1.js → Download01-D3eJDAEO.js} +1 -1
- package/dist/client/assets/{Eye-DZbWTjje.js → Eye-BhHZY2CZ.js} +1 -1
- package/dist/client/assets/{FilterLines-CHaV7Nw9.js → FilterLines-BWjLIxVc.js} +1 -1
- package/dist/client/assets/{Globe01-BNmRPD0F.js → Globe01-DdUoMsv3.js} +1 -1
- package/dist/client/assets/{Globe04-B9LH-CHD.js → Globe04-B-w3WEq9.js} +1 -1
- package/dist/client/assets/{HardDrive-hrMMCqWl.js → HardDrive-BFP4nRun.js} +1 -1
- package/dist/client/assets/{Key01-Bhgh4Ahq.js → Key01-Cfe0Tudx.js} +1 -1
- package/dist/client/assets/{LayoutLeft-Bh-qR188.js → LayoutLeft-BEpfII_o.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BkrsVkBk.js → LinkExternal01-D25gdGqj.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-BhHn_96P.js → LockUnlocked01-P_wfDROK.js} +1 -1
- package/dist/client/assets/{LogOut01-3Vo4riO2.js → LogOut01-DBKmS50y.js} +1 -1
- package/dist/client/assets/{Monitor01-1BlCrc-_.js → Monitor01-BhLjoS2b.js} +1 -1
- package/dist/client/assets/{Palette-D4OaRwH0.js → Palette-aeV8tQ28.js} +1 -1
- package/dist/client/assets/{Play-B148yyee.js → Play-BdOAMmIp.js} +1 -1
- package/dist/client/assets/{Plus-BBoTedez.js → Plus-D1J2FK4h.js} +1 -1
- package/dist/client/assets/{SearchLg-DC1AF4wk.js → SearchLg-BzCLzG8R.js} +1 -1
- package/dist/client/assets/{SearchMd-BQD9siMW.js → SearchMd-xpLLk_pA.js} +1 -1
- package/dist/client/assets/{Settings02-KNp1ZCpy.js → Settings02-DjFkLPe4.js} +1 -1
- package/dist/client/assets/{Share07-D6xjuePS.js → Share07-Caa0Im56.js} +1 -1
- package/dist/client/assets/{Shield01-B1d6QDuN.js → Shield01-D5NbAsUv.js} +1 -1
- package/dist/client/assets/{Stars01-dBQbZtFY.js → Stars01-CCBcRCds.js} +1 -1
- package/dist/client/assets/{Stars02-DJ3XKS_q.js → Stars02-DtoiSIcu.js} +1 -1
- package/dist/client/assets/{Sun-gBtTF4fF.js → Sun-Dpvmek-4.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-YXwPofOJ.js → SwitchHorizontal01-C5wQU73g.js} +1 -1
- package/dist/client/assets/{Tool01-C_sZUPJ-.js → Tool01-XzYGP86W.js} +1 -1
- package/dist/client/assets/{Tool02-ByQz2x4p.js → Tool02-CE2ZdUr1.js} +1 -1
- package/dist/client/assets/{Trash01-Dq61VZ-q.js → Trash01-BnQQflAa.js} +1 -1
- package/dist/client/assets/{TrendUp01-BhBYte7U.js → TrendUp01-BdIQtpYk.js} +1 -1
- package/dist/client/assets/{Upload01-P9cG59fw.js → Upload01-Bhqh3Tbq.js} +1 -1
- package/dist/client/assets/{User01-0XnrIXA7.js → User01-C1NHQ-ZR.js} +1 -1
- package/dist/client/assets/{Users01-SHxHbBOf.js → Users01-CMhcYnus.js} +1 -1
- package/dist/client/assets/{Users03-BWQEkc8q.js → Users03-BNksnLQf.js} +1 -1
- package/dist/client/assets/{X-DCc6F72_.js → X-DY9FeXqi.js} +1 -1
- package/dist/client/assets/{XCircle-nX8NmjEf.js → XCircle-_aQH9vJz.js} +1 -1
- package/dist/client/assets/{XClose-DQG60vKG.js → XClose-DdNRdfWH.js} +1 -1
- package/dist/client/assets/{YAxis-BlgfjaWv.js → YAxis-DLOWdC_A.js} +1 -1
- package/dist/client/assets/{Zap-DWK1mAeA.js → Zap-DDihnv3P.js} +1 -1
- package/dist/client/assets/{ZapSquare-D3-vIRZ1.js → ZapSquare-Bv6t7Fg1.js} +1 -1
- package/dist/client/assets/{access-gate-R3wf6ALF.js → access-gate-wLBW4P-Z.js} +1 -1
- package/dist/client/assets/{agent-icon-D4Q5f1gm.js → agent-icon-5ZYno8Im.js} +1 -1
- package/dist/client/assets/{agents-list-DIN-reB6.js → agents-list-7wqeXOXn.js} +1 -1
- package/dist/client/assets/{ai-providers-BaeTFoyD.js → ai-providers-BJDhlXiK.js} +1 -1
- package/dist/client/assets/{alert-A3FBuGpX.js → alert-B6Fmol8n.js} +1 -1
- package/dist/client/assets/{alert-dialog-Bl3umpCX.js → alert-dialog-BOUVk-xM.js} +1 -1
- package/dist/client/assets/{api-keys-Jr2FvUt-.js → api-keys-DGMyGe_V.js} +1 -1
- package/dist/client/assets/{app-editor-Co97eV0d.js → app-editor-BQTeUJlT.js} +1 -1
- package/dist/client/assets/{auth-D1vEdZed.js → auth-Clf3KXjv.js} +1 -1
- package/dist/client/assets/{auth-catchall-B2JDFzAV.js → auth-catchall-CPPqDGgA.js} +1 -1
- package/dist/client/assets/{auth-entry-oc6-i9fj.js → auth-entry-PFcfNCN7.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CruGhGDV.js → auth-split-layout-5_o-m_dm.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-aq0GBY7a.js → authenticate-and-persist-oauth-BUQ1Xi6C.js} +1 -1
- package/dist/client/assets/{automation-list-row-BJ6ogb3E.js → automation-list-row-DRZedCha.js} +1 -1
- package/dist/client/assets/{automation-runs-Ca7EOakb.js → automation-runs-DaNWyAAB.js} +1 -1
- package/dist/client/assets/{automations-BclsmqkF.js → automations-BBd2nZBY.js} +1 -1
- package/dist/client/assets/{avatar-BtiojN-R.js → avatar-CsESGb5P.js} +1 -1
- package/dist/client/assets/{badge-BuMGJh5B.js → badge-BtBZ1HPJ.js} +1 -1
- package/dist/client/assets/{billing-DzIazHYW.js → billing-Bgr3WIC0.js} +1 -1
- package/dist/client/assets/{block-document-B6U4C9QA.js → block-document-BKnVO5ZG.js} +1 -1
- package/dist/client/assets/{buckets-D2T6_jto.js → buckets-Cg0MlwAj.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-j84BErz2.js → bulk-category-panel-BHhnBX-y.js} +1 -1
- package/dist/client/assets/{capability-load-error-Djm4fhvR.js → capability-load-error-BasK1UyG.js} +1 -1
- package/dist/client/assets/{card-CRmNVgmu.js → card-CKXxuGX6.js} +1 -1
- package/dist/client/assets/{cards-BNsSG5Uz.js → cards-BIJ-5lG1.js} +1 -1
- package/dist/client/assets/{category-editor-hM1sJj-6.js → category-editor-BInGd-ra.js} +1 -1
- package/dist/client/assets/{chart-uaBUCKLk.js → chart-CkOpSzxv.js} +1 -1
- package/dist/client/assets/{chat-context-CYeQN_c_.js → chat-context-DAVuFXb-.js} +1 -1
- package/dist/client/assets/{checkbox-zjf3WVrQ.js → checkbox-BmMgY8o7.js} +1 -1
- package/dist/client/assets/{choose-editor-D2tovMd8.js → choose-editor-BGZ5cx6T.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DhVY0Sbn.js → cli-auth-success-CRaZ-XOY.js} +1 -1
- package/dist/client/assets/{collection-detail-CIsWHDvV.js → collection-detail-CjMlAcj7.js} +1 -1
- package/dist/client/assets/{collection-display-button-1n7vCR9e.js → collection-display-button-C5Ypy8cN.js} +1 -1
- package/dist/client/assets/{collection-search-Bu8uyhh2.js → collection-search-Dc8oos2w.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-JuL67fWJ.js → collection-table-wrapper-BqCUWVdp.js} +1 -1
- package/dist/client/assets/{collection-tabs-BJRs7Thx.js → collection-tabs-DQs6Id7F.js} +1 -1
- package/dist/client/assets/{command-Dp9oDXnR.js → command-CckioSee.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-2oipCRCJ.js → commerce-onboarding-D33mAwVV.js} +1 -1
- package/dist/client/assets/{connect-D3Vk44fr.js → connect-B2Kdp8ut.js} +1 -1
- package/dist/client/assets/{connection-Dg_Y5rHe.js → connection-DawcOkII.js} +1 -1
- package/dist/client/assets/{connection-card-DBM3JGC4.js → connection-card-JINQJoK5.js} +1 -1
- package/dist/client/assets/{connection-detail-B0zMtdpa.js → connection-detail-Db3nTX8u.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B38uYVsR.js → connection-form-helpers-Shqj1MAl.js} +1 -1
- package/dist/client/assets/{connections-3095A4O5.js → connections-BcEtHf8S.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-DhZ037JV.js → decopilot-sse-pool-DLTV1od0.js} +1 -1
- package/dist/client/assets/{dialog-CThPBdlC.js → dialog-U03ZiuXk.js} +1 -1
- package/dist/client/assets/{domain-settings-Dgyux1NA.js → domain-settings-CDI7Fjmq.js} +1 -1
- package/dist/client/assets/{drawer-wwZlxN5E.js → drawer-qjynKTFN.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CLAhqzHU.js → dropdown-menu-BmoCpvnT.js} +1 -1
- package/dist/client/assets/{empty-state-BvDYlB54.js → empty-state-PrJglZio.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BM2bZGj-.js → extract-connection-data-GB3welMi.js} +1 -1
- package/dist/client/assets/{file-explorer-C-kCkJKc.js → file-explorer-BUj_Z3iJ.js} +1 -1
- package/dist/client/assets/{file-type-icon-DY6FwN_P.js → file-type-icon-DNO6EG6W.js} +1 -1
- package/dist/client/assets/{form-BK3EXow7.js → form-BlkhuHf9.js} +1 -1
- package/dist/client/assets/{general-jXuOSV2P.js → general-BSW7_Voe.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DzLD80U9.js → github-repo-picker-D56QHlTy.js} +1 -1
- package/dist/client/assets/{hooks-U6YCxYng.js → hooks-B2woSXLe.js} +1 -1
- package/dist/client/assets/{index-D5A46YHt.js → index-AXIuo6hf.js} +1 -1
- package/dist/client/assets/{index-CdhHOj48.js → index-CToZ4kbL.js} +1 -1
- package/dist/client/assets/{index-_JizC8Pw.js → index-CY3hVAON.js} +1 -1
- package/dist/client/assets/{index-SyAtfjOo.js → index-Chdg8Asw.js} +1 -1
- package/dist/client/assets/{index-CZ7g67Kn.js → index-D-cW_7z2.js} +1 -1
- package/dist/client/assets/{index-CF2fQcn-.js → index-D5A_cbaj.js} +1 -1
- package/dist/client/assets/{index-CocRXnaV.js → index-DLyxjIYw.js} +3 -3
- package/dist/client/assets/{index-Bjo-nmTs.js → index-Djodm3GI.js} +1 -1
- package/dist/client/assets/{index-Dr-JCsMk.js → index-DlSq7kji.js} +1 -1
- package/dist/client/assets/{index-Cuh0Txtd.js → index-j097lZOT.js} +5 -5
- package/dist/client/assets/{index-redirect-DbzqPUaj.js → index-redirect-C__5RhjR.js} +1 -1
- package/dist/client/assets/{infra-billing-C6Ez0D8-.js → infra-billing-CI8pxTWO.js} +1 -1
- package/dist/client/assets/{input-Th45y1Oj.js → input-BH7zyD0i.js} +1 -1
- package/dist/client/assets/{integration-icon-1MrWDyJg.js → integration-icon-BolSFCMJ.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DDaJVH4L.js → invite-member-dialog-Cfb_Sthq.js} +1 -1
- package/dist/client/assets/{label-DBYMSMdt.js → label-Cwuc9phK.js} +1 -1
- package/dist/client/assets/{layout-DZ9hDu51.js → layout-BEPQVUxl.js} +1 -1
- package/dist/client/assets/{login-7RhTJ9dA.js → login-C2AFfDb-.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Bxin9kcZ.js → mcp-oauth-BmzTS1ua.js} +1 -1
- package/dist/client/assets/{members-BQcTT1JU.js → members-D7MXmyE1.js} +1 -1
- package/dist/client/assets/{monaco-editor-DPjO46DP.js → monaco-editor-DBmhJ8Ys.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-D7Wk3JlQ.js → monitoring-stats-row-DfEDCsLl.js} +1 -1
- package/dist/client/assets/{multi-select-BxuvsxEA.js → multi-select-C2Dia25c.js} +1 -1
- package/dist/client/assets/{oauth-callback-CyLwMCev.js → oauth-callback-D_WAqpRo.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-jneR5BMK.js → oauth-callback-ai-provider-BhA1cp1j.js} +1 -1
- package/dist/client/assets/{onboarding-wIaGbrtN.js → onboarding-uuvWd04L.js} +1 -1
- package/dist/client/assets/{org-layout-B7NbwjWG.js → org-layout-D-9MtDux.js} +1 -1
- package/dist/client/assets/{organization-choice-D7XaTjUk.js → organization-choice-YKPoOAc0.js} +1 -1
- package/dist/client/assets/{orgs-BMJupwVV.js → orgs-DgzYCdTa.js} +1 -1
- package/dist/client/assets/{page-seo-form-CRr4N9fu.js → page-seo-form-GRyqYD3q.js} +1 -1
- package/dist/client/assets/{popover-Du9wAhag.js → popover-9hL99Gs4.js} +1 -1
- package/dist/client/assets/{post-editor-Dzjriec9.js → post-editor-B2P499Gv.js} +1 -1
- package/dist/client/assets/{primitives-DuIzbwMK.js → primitives-5VVvVXDP.js} +1 -1
- package/dist/client/assets/{profile-DBHAfJMF.js → profile-CyKGXLmf.js} +1 -1
- package/dist/client/assets/{project-app-view-hDkkHLbP.js → project-app-view-kVyS_ky4.js} +1 -1
- package/dist/client/assets/record-editor-DHsX7f85.js +1 -0
- package/dist/client/assets/{redirect-editor-BXMiNcte.js → redirect-editor-wh6KUQar.js} +1 -1
- package/dist/client/assets/registry-BCU9YbQl.js +2 -0
- package/dist/client/assets/{registry-layout-B6d61YxT.js → registry-layout-BqclQM58.js} +1 -1
- package/dist/client/assets/{reports-YLKjgo7J.js → reports-ezYEoj8-.js} +1 -1
- package/dist/client/assets/{require-capability-Mr1OoF4-.js → require-capability-daZd2Avq.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BCzBM0lT.js → required-auth-layout-tPpYmfR1.js} +1 -1
- package/dist/client/assets/{reset-password-BoJSAGaQ.js → reset-password-B_cu2DBW.js} +1 -1
- package/dist/client/assets/{roles-Do_gzClD.js → roles-CnMuEzXy.js} +1 -1
- package/dist/client/assets/{search-input-BwMDISby.js → search-input-Dlrgn3SA.js} +1 -1
- package/dist/client/assets/{secrets-C11hcvdy.js → secrets-DHhUnvN3.js} +1 -1
- package/dist/client/assets/{sections-editor--u_VmyTC.js → sections-editor-D2V-U5oa.js} +1 -1
- package/dist/client/assets/{select-E-1vIH1D.js → select-BhNhFGIm.js} +1 -1
- package/dist/client/assets/{select-model-CrYKaXss.js → select-model-BbkxZygk.js} +1 -1
- package/dist/client/assets/{self-tool-result-DKndch_o.js → self-tool-result-Bjns9v-D.js} +1 -1
- package/dist/client/assets/{seo-editor-C4XaQOFK.js → seo-editor-_sQ6ViyP.js} +1 -1
- package/dist/client/assets/{settings-layout-CepLX04C.js → settings-layout-CihM6Z5f.js} +1 -1
- package/dist/client/assets/{settings-section-svoIYw5J.js → settings-section-BIT7uWjs.js} +1 -1
- package/dist/client/assets/{settings-subnav-DtC3plyD.js → settings-subnav-DobJGu7Z.js} +1 -1
- package/dist/client/assets/{shell-controls-FOeaa4PN.js → shell-controls-BOR8V5VI.js} +1 -1
- package/dist/client/assets/{shell-layout-DEIeTMRI.js → shell-layout-Dpz4gldn.js} +1 -1
- package/dist/client/assets/{sidebar-C6vNFIX7.js → sidebar-_myHCEzH.js} +1 -1
- package/dist/client/assets/{skeleton-dgWEijLb.js → skeleton-CfDgtd5M.js} +1 -1
- package/dist/client/assets/{spinner-0lt9Wsr0.js → spinner-CgvhsPnS.js} +1 -1
- package/dist/client/assets/{sso-vnN4FYgS.js → sso-CzK_Pk8F.js} +1 -1
- package/dist/client/assets/{store-BkHOJNPR.js → store-Cu4INizs.js} +1 -1
- package/dist/client/assets/store-registry-OC_7xuUK.js +2 -0
- package/dist/client/assets/{studio-tools-Z3_Ho08E.js → studio-tools-ThQ_rcsF.js} +1 -1
- package/dist/client/assets/{switch-DMaQp-KH.js → switch-BCRtcgA0.js} +1 -1
- package/dist/client/assets/{synced-repos-DajRuqiT.js → synced-repos-DkuvF9QR.js} +1 -1
- package/dist/client/assets/{tab-id--OOSvEKL.js → tab-id-DM8k_HA-.js} +1 -1
- package/dist/client/assets/{table-CIn2xzFA.js → table-C5eCsrvC.js} +1 -1
- package/dist/client/assets/{tabs-BaLEcPo0.js → tabs-D-zNditx.js} +1 -1
- package/dist/client/assets/{tasks-Dn9xhCn5.js → tasks-CwCxAFhU.js} +1 -1
- package/dist/client/assets/{textarea-50Odtr43.js → textarea-BfUIS--d.js} +1 -1
- package/dist/client/assets/{toggle-group-DRZ_-Mcx.js → toggle-group-DvojD61A.js} +1 -1
- package/dist/client/assets/{toolbar-g180ZP8I.js → toolbar-C6N7bX1O.js} +1 -1
- package/dist/client/assets/{tooltip-CsaHSAiw.js → tooltip-B-y9isox.js} +1 -1
- package/dist/client/assets/{track-Bs3E_Z0a.js → track-Bwp-FwAP.js} +1 -1
- package/dist/client/assets/{types-Cp4OhzUj.js → types-D6tOWfuo.js} +1 -1
- package/dist/client/assets/{use-ai-providers-MHzwAwom.js → use-ai-providers-Bb772HOL.js} +1 -1
- package/dist/client/assets/{use-api-keys-DWJ8I1ik.js → use-api-keys-CX7vmPa_.js} +1 -1
- package/dist/client/assets/{use-automations-B03uaiym.js → use-automations-DyLBCDVI.js} +1 -1
- package/dist/client/assets/{use-autosave-DJi1cHzK.js → use-autosave-DnhwLkb4.js} +1 -1
- package/dist/client/assets/{use-capability-BVzZ6YO7.js → use-capability-DxO7qy1z.js} +1 -1
- package/dist/client/assets/{use-clock-tick-BG4XX5Ok.js → use-clock-tick-DS1Jl_N9.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-CL_Twf94.js → use-commerce-diagnostic-DtF4_mte.js} +1 -1
- package/dist/client/assets/{use-connection-BUow-BBf.js → use-connection-DmmNo1LM.js} +1 -1
- package/dist/client/assets/{use-copy-D8f2-t2L.js → use-copy-CSIcq8z_.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BFo0K-5k.js → use-create-virtual-mcp-CR_IUdwo.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-uD_wTs7u.js → use-debounced-autosave-DjJh5yYH.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BcMRwR1F.js → use-debounced-value-19BtC7Bb.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Bzb7ko-7.js → use-decopilot-events-Bb_7qSC-.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CPwIsaxw.js → use-delete-connection-keAeE1I9.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-qrivzoFz.js → use-deployment-admin-GvqoWv58.js} +1 -1
- package/dist/client/assets/{use-file-configs-CeV8SIoC.js → use-file-configs-IFt3zoqI.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-THZlE2jL.js → use-infinite-scroll-C1T3wjaO.js} +1 -1
- package/dist/client/assets/{use-join-requests-FtBbYM-P.js → use-join-requests-BeMEoip1.js} +1 -1
- package/dist/client/assets/{use-mcp-client-B0R6KE9j.js → use-mcp-client-_o9o88xf.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-1OMI8U3k.js → use-mcp-tools-CRMPw5o_.js} +1 -1
- package/dist/client/assets/{use-members-D44SqWOd.js → use-members-BeAeYksa.js} +1 -1
- package/dist/client/assets/{use-mobile-CMwVM8Dm.js → use-mobile-H1cEPaVS.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DCU47VEH.js → use-navigate-to-agent-BqMCqmam.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-C3VdIxbn.js → use-open-billing-url-BWzY_VeB.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BJjAWkzK.js → use-org-auth-client-A_fhg4VK.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-17xU239e.js → use-org-repo-syncs-DboNdEwi.js} +1 -1
- package/dist/client/assets/{use-org-sso-BeKN7G5W.js → use-org-sso-D-BEPABI.js} +1 -1
- package/dist/client/assets/{use-organization-roles-C1-TDAKu.js → use-organization-roles-ABd_zIJY.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CeWkbXSU.js → use-organization-settings-DPRJ0ATL.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CNcrUm5j.js → use-registry-connections-Y17SLNHX.js} +1 -1
- package/dist/client/assets/{use-secrets-C8PoL8Jc.js → use-secrets-DH31aTTe.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-Dt8sr8bZ.js → use-section-preview-base-Csrv-VqV.js} +1 -1
- package/dist/client/assets/{use-settings-tabs-CGvlVnxD.js → use-settings-tabs-CGwARRFk.js} +1 -1
- package/dist/client/assets/{use-status-sounds-KOU_LbBE.js → use-status-sounds-BeFWP6sc.js} +1 -1
- package/dist/client/assets/{use-tags-DpurgJWV.js → use-tags-BkefASeN.js} +1 -1
- package/dist/client/assets/{use-view-mode-CPN-uH9Q.js → use-view-mode-BLj18CVK.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CcMn-V_g.js → use-virtual-mcp-B0LtGhD8.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BTBdPVyZ.js +1 -0
- package/dist/client/assets/{useRouterState-DsNBuiFB.js → useRouterState-um8-mtPt.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-C3uzz_IX.js +1 -0
- package/dist/client/assets/{users-CGeCpeZu.js → users-CWvqMFcP.js} +1 -1
- package/dist/client/assets/{variant-calendar-DL8f_Nde.js → variant-calendar-B1xj6WY-.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CWliLrij.js → view-mode-toggle-B1CxI2v1.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/record-editor-SSA45zhH.js +0 -1
- package/dist/client/assets/registry-CPx0bJGL.js +0 -2
- package/dist/client/assets/store-registry-Dh7Jdgi9.js +0 -2
- package/dist/client/assets/useInfiniteQuery-BUh1ggHM.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-B0aALDUm.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -1477,7 +1477,7 @@ ${iW$(Z.content)}
|
|
|
1477
1477
|
`)X--;return $.slice(Z,X)}function XO4($){let Z=[],X=0;while(X<$.length){let Q=QO4($,X),Y=pW$($,X,"{noformat}"),G=pW$($,X,"{quote}"),J=[];if(Q)J.push({type:"code",...Q});if(Y)J.push({type:"code",lang:"",...Y});if(G)J.push({type:"quote",...G});let W=J.sort((K,H)=>K.start-H.start)[0];if(!W){Z.push({type:"text",content:$.slice(X)});break}if(W.start>X)Z.push({type:"text",content:$.slice(X,W.start)});Z.push(W),X=W.end}return Z}function QO4($,Z){for(let X=$.indexOf("{code",Z);X!==-1;){let Q=$.indexOf("}",X);if(Q===-1)return null;let Y=$.slice(X+5,Q);if(Y===""||Y.startsWith(":")){let G=$.indexOf("{code}",Q+1);if(G===-1)return null;let J=Y.startsWith(":")?Y.slice(1).split("|")[0]??"":"";return{start:X,end:G+6,content:$.slice(Q+1,G),lang:J}}X=$.indexOf("{code",X+1)}return null}function pW$($,Z,X){let Q=$.indexOf(X,Z);if(Q===-1)return null;let Y=$.indexOf(X,Q+X.length);if(Y===-1)return null;return{start:Q,end:Y+X.length,content:$.slice(Q+X.length,Y)}}function nW$($){return $.split(`
|
|
1478
1478
|
`).map(GO4).join(`
|
|
1479
1479
|
`)}function nn0($,Z){let X=0;while($[X]===Z)X++;return X}function YO4($){let Z=$.trim();return Z.length>=4&&nn0(Z,"-")===Z.length}function GO4($){let Z=$[1]??"";if($[0]==="h"&&Z>="1"&&Z<="6"&&$[2]===".")return`${"#".repeat(Number(Z))} ${JC($.slice(3).trimStart())}`;if(YO4($))return"---";let X=nn0($,"*");if(X>0&&$[X]===" ")return`${X===1?"*":`${" ".repeat(X-1)}-`} ${JC($.slice(X+1))}`;let Q=nn0($,"#");if(Q>0&&$[Q]===" ")return`${" ".repeat(Q-1)}1. ${JC($.slice(Q+1))}`;let Y=$.trimEnd();if(Y.startsWith("||")&&Y.endsWith("||")&&Y.length>4){let G=Y.slice(2,-2).split("||");return`${`| ${G.map((W)=>JC(W.trim())).join(" | ")} |`}
|
|
1480
|
-
|${G.map(()=>" --- ").join("|")}|`}if(Y.startsWith("|")&&Y.endsWith("|")&&Y.length>2)return`| ${Y.slice(1,-1).split("|").map((J)=>JC(J.trim())).join(" | ")} |`;return JC($)}function pn0($){return($.startsWith("http://")||$.startsWith("https://"))&&!$.includes(" ")}function JC($){let Z="",X=0;while(X<$.length){let Q=$[X]??"";if(Q==="{"){if($.startsWith("{{",X)){let Y=$.indexOf("}}",X+2);if(Y!==-1){Z+=`\`${$.slice(X+2,Y)}\``,X=Y+2;continue}}if($.startsWith("{color",X)){let Y=$.indexOf("}",X);if(Y!==-1){X=Y+1;continue}}}else if(Q==="["){let Y=$.indexOf("]",X);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|");if(J!==-1&&pn0(G.slice(J+1))){Z+=`[${G.slice(0,J)}](${G.slice(J+1)})`,X=Y+1;continue}if(pn0(G)){Z+=G,X=Y+1;continue}}}else if(Q==="!"){let Y=$.indexOf("!",X+1);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|"),W=J===-1?G:G.slice(0,J);if(pn0(W)){Z+=``,X=Y+1;continue}}}else if(Q==="*"||Q==="_"){let Y=KO4($,X,Q,Z.slice(-1)||" ");if(Y){Z+=Y.text,X=Y.next;continue}}Z+=Q,X++}return Z}function KO4($,Z,X,Q){if(!JO4.includes(Q))return null;let Y=$[Z+1];if(!Y||Y===" "||Y===X)return null;for(let G=Z+2;G<$.length;G++){if($[G]!==X||$[G-1]===" ")continue;let J=$[G+1];if(J!==void 0&&!WO4.includes(J))continue;let W=JC($.slice(Z+1,G));return{text:X==="*"?`**${W}**`:`*${W}*`,next:G+1}}return null}var JO4=" ([{>",WO4=` )]}.,:;!?{["'`;function NO4($){let
|
|
1480
|
+
|${G.map(()=>" --- ").join("|")}|`}if(Y.startsWith("|")&&Y.endsWith("|")&&Y.length>2)return`| ${Y.slice(1,-1).split("|").map((J)=>JC(J.trim())).join(" | ")} |`;return JC($)}function pn0($){return($.startsWith("http://")||$.startsWith("https://"))&&!$.includes(" ")}function JC($){let Z="",X=0;while(X<$.length){let Q=$[X]??"";if(Q==="{"){if($.startsWith("{{",X)){let Y=$.indexOf("}}",X+2);if(Y!==-1){Z+=`\`${$.slice(X+2,Y)}\``,X=Y+2;continue}}if($.startsWith("{color",X)){let Y=$.indexOf("}",X);if(Y!==-1){X=Y+1;continue}}}else if(Q==="["){let Y=$.indexOf("]",X);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|");if(J!==-1&&pn0(G.slice(J+1))){Z+=`[${G.slice(0,J)}](${G.slice(J+1)})`,X=Y+1;continue}if(pn0(G)){Z+=G,X=Y+1;continue}}}else if(Q==="!"){let Y=$.indexOf("!",X+1);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|"),W=J===-1?G:G.slice(0,J);if(pn0(W)){Z+=``,X=Y+1;continue}}}else if(Q==="*"||Q==="_"){let Y=KO4($,X,Q,Z.slice(-1)||" ");if(Y){Z+=Y.text,X=Y.next;continue}}Z+=Q,X++}return Z}function KO4($,Z,X,Q){if(!JO4.includes(Q))return null;let Y=$[Z+1];if(!Y||Y===" "||Y===X)return null;for(let G=Z+2;G<$.length;G++){if($[G]!==X||$[G-1]===" ")continue;let J=$[G+1];if(J!==void 0&&!WO4.includes(J))continue;let W=JC($.slice(Z+1,G));return{text:X==="*"?`**${W}**`:`*${W}*`,next:G+1}}return null}var JO4=" ([{>",WO4=` )]}.,:;!?{["'`;function NO4($){let Z=$ instanceof Error?$.message:String($),X=Z.match(/failed \((\d+)\)/);if(X&&X[1]){let Q=parseInt(X[1],10);return Q>=500||Q===429}if(/returned invalid JSON/.test(Z))return!1;return!0}function on0($){let Z=$.trim().replace(/\/+$/,""),X=/^https?:\/\//i.test(Z)?Z:`https://${Z}`,Q;try{Q=new URL(X).hostname.toLowerCase()}catch{throw Error(`Invalid Jira site URL: ${$}`)}if(!UO4.test(Q))throw Error(`Invalid Jira site URL: ${$} \u2014 expected <your-site>.atlassian.net`);return`https://${Q}`}function tn0($){if(!/^\d+$/.test($))throw Error(`Invalid Jira board id: ${$}`);return $}class h3{baseUrl;authHeader;constructor($,Z,X){this.baseUrl=on0($),this.authHeader=`Basic ${Buffer.from(`${Z}:${X}`).toString("base64")}`}async request($,Z,{idempotent:X=!0}={}){let Q=async()=>{let Y=await fetch(`${this.baseUrl}${$}`,{...Z,headers:{Authorization:this.authHeader,Accept:"application/json",...Z?.body?{"Content-Type":"application/json"}:{}},signal:AbortSignal.timeout(HO4)}),G=await Y.text().catch(()=>"");if(!Y.ok)throw Error(`Jira ${$} failed (${Y.status}): ${G.slice(0,300)}`);if(G==="")return;try{return JSON.parse(G)}catch(J){throw Error(`Jira ${$} returned invalid JSON: ${G.slice(0,300)}`,{cause:J})}};if(!X)return Q();return N9(Q,{maxAttempts:3,minTimeout:100,maxTimeout:5000,multiplier:2,jitter:1,isRetriable:NO4})}async myself(){return this.request("/rest/api/3/myself")}async listBoards(){let $=[],Z=0;while($.length<200){let X=await this.request(`/rest/agile/1.0/board?startAt=${Z}&maxResults=50`);if($.push(...X.values.map((Q)=>({id:Q.id,name:Q.name,type:Q.type,projectKey:Q.location?.projectKey,projectName:Q.location?.projectName}))),X.isLast||X.values.length===0)break;Z+=X.values.length}return $}async getBoardColumns($){let Z=await this.request(`/rest/agile/1.0/board/${tn0($)}/configuration`),X=new Map,Q=[];for(let Y of Z.columnConfig?.columns??[]){let G=[];for(let J of Y.statuses??[]){if(!X.has(J.id)){let W=await this.request(`/rest/api/3/status/${encodeURIComponent(J.id)}`);X.set(J.id,W.name)}G.push(X.get(J.id)??J.id)}Q.push({name:Y.name,statuses:G})}return Q}async listBoardIssues($){let Z=new URLSearchParams({startAt:String($.startAt),maxResults:"100",jql:$.jql,fields:FO4}),X=await this.request(`/rest/agile/1.0/board/${tn0($.boardId)}/issue?${Z}`);return{issues:X.issues??[],total:X.total}}async listBacklogIssueIds($){let Z=new Set,X=0;while(Z.size<5000){let Q=await this.request(`/rest/agile/1.0/board/${tn0($)}/backlog?startAt=${X}&maxResults=100&fields=id`);for(let Y of Q.issues??[])Z.add(Y.id);if(X+=Q.issues?.length??0,X>=Q.total||(Q.issues?.length??0)===0)break}return Z}async listTransitions($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`)).transitions??[]}async getStatusName($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}?fields=status`)).fields?.status?.name??null}async transitionIssue($,Z){await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`,{method:"POST",body:JSON.stringify({transition:{id:Z}})},{idempotent:!1})}async listComments($){let Z=[],X=0;while(Z.length<1000){let Q=await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment?startAt=${X}&maxResults=100&orderBy=created`);if(Z.push(...Q.comments),Z.length>=Q.total||Q.comments.length===0)break;X+=Q.comments.length}return Z}async addComment($,Z){return this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment`,{method:"POST",body:JSON.stringify({body:OO4(Z)})},{idempotent:!1})}}function OO4($){let Z=$.split(`
|
|
1481
1481
|
`).filter((X)=>X.trim()!=="");return{type:"doc",version:1,content:Z.length>0?Z.map((X)=>({type:"paragraph",content:[{type:"text",text:X}]})):[{type:"paragraph",content:[]}]}}function uB0($){if(typeof $==="string")return tW$($);if(!$||typeof $!=="object")return"";let Z=$;if(Z.type==="text")return Z.text??"";if(Z.type==="hardBreak")return`
|
|
1482
1482
|
`;let X=(Array.isArray(Z.content)?Z.content:[]).map(uB0);if(Z.type==="doc")return X.filter((Q)=>Q.trim()!=="").join(`
|
|
1483
1483
|
|
|
@@ -2826,7 +2826,7 @@ Respond with the structured verdict and a short reason.`,jy$;var Py$=w(()=>{_4()
|
|
|
2826
2826
|
${G.join(`
|
|
2827
2827
|
`)}`:Y}function XG6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2828
2828
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var oY6=200,rY6=12,aY6=300,N91=3;var U91=w(()=>{q_();bP0()});function YG6($){if(!$||$.includes(".."))return!1;return QG6.test($)}function Jg$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!YG6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Wg$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var QG6;var Kg$=w(()=>{QG6=/^[\w./@-]+$/});function O91($){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 Xa($,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 Hg$($,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_($9);await nO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:$9;throw new k_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await tO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=o8$(F instanceof Error?F.message:String(F));throw N?new k_(U):F}),K=ch($),H=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(!H.ok){let F=await UB(H,GG6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var GG6=10485760,k_;var B91=w(()=>{uG();RP0();xp();yd0();hx();k_=class k_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function WG6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!JG6.test(Z))throw Error(`Invalid branch name: ${$}`)}function V_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(HG6)])}function FG6($,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 ph($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Xa(Z,X);if(!Y)throw new Q6(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return IP0(Q,G.id,Y)}function w91($,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,m5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,m5)}async function Ug$($){try{let Z=await ph($),X=await xP0(Z,$.get("vmClaim").branch);return $.json(X,200,m5)}catch(Z){return w91($,Z)}}function Qa($,Z){let Q=(hP0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return hP0.set($,Y),Y.finally(()=>{if(hP0.get($)===Y)hP0.delete($)}),Q}async function dZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,m5);let Q=S_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},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",...m5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?UG6(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...m5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(F.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 UG6($){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 uP0($,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 OG6($){return Og$.includes($)}var JG6,Fg$=524288,KG6=65536,HG6=1e4,Ng$=2000,NG6,hP0,m5,Og$,Bg$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",NG6),$.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||!OG6(Q))return X.json({error:`step must be one of: ${Og$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Qy(Y.virtualMcpMetadata);try{await CO0({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 Oy$(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 Ug$(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(Ng$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Ug$(X);return dZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Ng$)])})}),$.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 ph(X),J=await yP0(G,Q.branch,Y.base);return X.json(J,200,m5)}catch(Y){return w91(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,m5);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 Qa(Y,async()=>{try{await t51(W,Q,Y);let K=Xa(G,J);if(K)await Hg$(W,Q,Y,K)}catch(K){if(K instanceof k_)return X.json({error:K.message},403,m5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,m5)}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 Qa(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,m5);try{let J=await ph(X);return await Gg$(J,Q.branch,G),X.json({ok:!0},200,m5)}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,m5)}});return Qa(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 Qa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await ph(X),H=W.base??await K.getDefaultBranch();return await gP0(K,Q.branch,H),X.json({ok:!0},200,m5)}catch(W){return w91(X,W)}});let Y=S_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Qa(G,async()=>{try{await t51(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,m5)}return dZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",M9({maxSize:Fg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=S_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=a51(F)&&U?[F,N]:Y?await Promise.all([uP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),uP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([xP0(L,Q.branch),yP0(L,Q.branch)])})(),D=await Ey$(K,O,B);return X.json(D,200,m5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,m5);return X.json({error:F},502,m5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",M9({maxSize:Fg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=S_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=a51(F)&&U?[F,N]:Y?await Promise.all([uP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),uP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([xP0(L,Q.branch),yP0(L,Q.branch)])})(),D=await zy$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,m5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,m5);return X.json({error:F},502,m5)}}),$.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=O91(`${W}${G}`),H;try{H=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let F;try{F=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(F,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",M9({maxSize:KG6,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=Jg$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Wg$(G,W.resolveType),H=O91(K),F;try{F=await fetch(H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await F.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:F.status,headers:{"content-type":F.headers.get("content-type")??"application/json"}})}),$};var wg$=w(()=>{w8();BN();uh();n51();TF();Ny$();S3();dX();U8();CB0();KB();Uy$();By$();Gp0();fp();$91();Py$();Q91();q_();U91();Kg$();B91();JG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;NG6=TP0(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{WG6(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=ai({orgId:Y.id,virtualMcpId:G,branch:J}),H=await vF(X,J,Q),F=Fy$({userId:H,projectRef:K}),N=W.metadata??null;if(NW$(N).fastPreviewCapability&&!FG6(N,H,J))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await oX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});hP0=new Map;m5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Og$=["clone","install","start"]});function Dg$($,Z,X){let Q=D91.get($);if(!Q)Q={pending:null,running:!1},D91.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)wG6($,Q);return G}async function wG6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await DG6(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)D91.delete($)}}async function DG6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Za(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=H91(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=F91(K,B),E=`${JSON.stringify(D,null,2)}
|
|
2829
|
-
`,j=await Z.createBlob(E);await Qg$(Z.owner,Z.repo,j,E);let z=L[0]??`${fP0(Q)}/${Y91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of F91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.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([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=ar(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);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:LG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=BG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function LG6($){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 kd0(Q,$.deps.coAuthor)}var BG6=3,D91;var Lg$=w(()=>{TO0();MP0();u4();q_();bP0();D91=new Map});import{createHmac as Eg$,randomBytes as EG6,timingSafeEqual as jG6}from"crypto";function jg$(){if(cP0)return cP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return cP0=$?Buffer.from($):EG6(32),cP0}function L91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+zG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Eg$("sha256",jg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function zg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Eg$("sha256",jg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!jG6(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 zG6=21600000,cP0=null;var Pg$=w(()=>{T$()});import{z as nh}from"zod";function AG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&PG6.test($)}function Tg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function lP0($){let Z=$.get("decofileScope");return IP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function dP0($,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 Rg$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ag$),$.use("/:virtualMcpId/:branch/*",Ag$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(Z),Y=await Yg$(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=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Tg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return dP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=TG6.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{qP0(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 lP0(Z),W=await Dg$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Tg$(Z)})}catch(J){return dP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(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 gP0(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 dP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(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 dP0(Z,Q)}}),$}var PG6,TG6,Ag$;var Ig$=w(()=>{MP0();w8();n51();RP0();B91();Q91();Lg$();Pg$();U91();q_();bP0();PG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;TG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ag$=TP0(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(!AG6(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||!zg$(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(!SB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=Xa(K,F);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 qg$=($)=>{let Z=new F1;if(Z.use("*",D_),Z.route("/",uz0()),Z.route("/",tv$()),Z.route("/",ax$()),Z.route("/",tx$()),Z.route("/",zP0()),Z.route("/tools",Yy$()),Z.route("/",Zy$()),Z.route("/",Sx$({kvStorage:$.kvStorage})),Z.route("/",kx$()),Z.route("/fs",cx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Bg$()),Z.route("/decofile",Rg$()),Z.route("/",ix$()),Z.route("/deco-sites",lz0()),Z.route("/sso",fz0()),Z.route("/",PP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",uv$()),$.mountDevAssets)Z.route("/dev-assets",dz0({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("/",AC$()),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",dx$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",jP0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Mg$=w(()=>{w8();w61();cv$();j61();mz0();Tr();O61();Vx$();Cx$();lx$();vn();G61();sw0();u51();mx$();px$();ox$();sx$();Xy$();l51();Gy$();d51();ow0();wg$();Ig$()});function RG6($){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 IG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},kg$=()=>{let $=new F1;return $.use("*",IG6),$.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:RG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Vg$=w(()=>{w8();T$();lj0()});import{z as M1}from"zod";function QH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function bG6($){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 xG6($,Z,X){try{return JSON.parse($)}catch{throw new _g$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function yG6($){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:xG6(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 gG6($){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 hG6($){if(!$)return;return{openai:{response_format:$}}}function uG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Sg$($,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 Cg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qG6=256,MG6,kG6,VG6,SG6,CG6,_G6,vG6,fG6,_g$,vg$,fg$;var bg$=w(()=>{_4();w8();uh();XN();MG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),kG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),VG6=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(kG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),SG6=M1.object({type:M1.literal("text")}),CG6=M1.object({type:M1.literal("json_object")}),_G6=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()})}),vG6=M1.union([SG6,CG6,_G6]),fG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(VG6),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(MG6).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:vG6.optional(),user:M1.string().optional()});_g$=class _g$ extends Error{constructor($){super($);this.name="MessageConversionError"}};vg$=new F1;vg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QH("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(QH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=fG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=bG6(G.model);if(!J)return $.json(QH("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(QH("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 H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(QH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=yG6(G.messages),U=G.tools?gG6(G.tools):void 0,O=hG6(G.response_format),B=uG6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=Sg$(F,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.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(q.type==="text-delta"){if(P+=q.text,P.length>=qG6)await M()}else if(q.type==="tool-call"){await M();let k=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:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Cg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),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=Sg$(F,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:Cg$(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(QH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QH(Y.message,"server_error"),500)}});fg$=vg$});function xg$(){let $=new F1;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 H of J){if(!H.slug||J7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(N.title.toLowerCase()!==G)continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var yg$=w(()=>{w8();W_()});var hg$;var gg$=w(()=>{hg$={name:"decocms",version:"4.243.1",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 dG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??lG6}}var ug$,lG6="https://ph.studio.decocms.com",cg$;var lg$=w(()=>{w8();Wh0();QC();v9();T$();$61();gg$();ug$=new F1;ug$.get("/",($)=>{let Z={version:hg$.version,theme:Od1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:dV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Gv$(),posthog:dG6(),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})});cg$=ug$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function E91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function mg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function dg$($,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 ig$($){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()?dg$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):dg$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,mG6,iG6,pG6,nG6,pg$;var ng$=w(()=>{C_=l0.enum(["good","bad","neutral"]),mG6=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 $})),iG6=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(mG6)),pG6={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()},nG6=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(iG6).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)})]),pg$=l0.object({...pG6,template:nG6})});function mP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=pg$.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 j91=w(()=>{ng$()});import{join as tg$}from"path";async function oG6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=mP0(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()||E91($),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 rG6($,Z){let X=th($),Q=Z?.brand?.trim()||E91(X),Y=mg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=ig$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${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(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(F)}" />`,'<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(H)}" />`,`<meta name="twitter:image:alt" content="${YG(F)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
|
|
2829
|
+
`,j=await Z.createBlob(E);await Qg$(Z.owner,Z.repo,j,E);let z=L[0]??`${fP0(Q)}/${Y91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of F91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.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([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=ar(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);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:LG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=BG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function LG6($){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 kd0(Q,$.deps.coAuthor)}var BG6=3,D91;var Lg$=w(()=>{TO0();MP0();u4();q_();bP0();D91=new Map});import{createHmac as Eg$,randomBytes as EG6,timingSafeEqual as jG6}from"crypto";function jg$(){if(cP0)return cP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return cP0=$?Buffer.from($):EG6(32),cP0}function L91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+zG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Eg$("sha256",jg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function zg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Eg$("sha256",jg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!jG6(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 zG6=21600000,cP0=null;var Pg$=w(()=>{T$()});import{z as nh}from"zod";function AG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&PG6.test($)}function Tg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function lP0($){let Z=$.get("decofileScope");return IP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function dP0($,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 Rg$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ag$),$.use("/:virtualMcpId/:branch/*",Ag$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(Z),Y=await Yg$(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=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Tg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return dP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=TG6.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{qP0(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 lP0(Z),W=await Dg$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Tg$(Z)})}catch(J){return dP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(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 gP0(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 dP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await lP0(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 dP0(Z,Q)}}),$}var PG6,TG6,Ag$;var Ig$=w(()=>{MP0();w8();n51();RP0();B91();Q91();Lg$();Pg$();U91();q_();bP0();PG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;TG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ag$=TP0(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(!AG6(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||!zg$(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(!SB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=Xa(K,F);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 qg$=($)=>{let Z=new F1;if(Z.use("*",D_),Z.route("/",uz0()),Z.route("/",tv$()),Z.route("/",ax$()),Z.route("/",tx$()),Z.route("/",zP0()),Z.route("/tools",Yy$()),Z.route("/",Zy$()),Z.route("/",Sx$({kvStorage:$.kvStorage})),Z.route("/",kx$()),Z.route("/fs",cx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Bg$()),Z.route("/decofile",Rg$()),Z.route("/",ix$()),Z.route("/deco-sites",lz0()),Z.route("/sso",fz0()),Z.route("/",PP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",uv$()),$.mountDevAssets)Z.route("/dev-assets",dz0({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("/",AC$()),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",dx$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",jP0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Mg$=w(()=>{w8();w61();cv$();j61();mz0();Tr();O61();Vx$();Cx$();lx$();vn();G61();sw0();u51();mx$();px$();ox$();sx$();Xy$();l51();Gy$();d51();ow0();wg$();Ig$()});function RG6($){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 IG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},kg$=()=>{let $=new F1;return $.use("*",IG6),$.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:RG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Vg$=w(()=>{w8();T$();lj0()});import{z as M1}from"zod";function QH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function bG6($){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 xG6($,Z,X){try{return JSON.parse($)}catch{throw new _g$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function yG6($){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:xG6(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 gG6($){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 hG6($){if(!$)return;return{openai:{response_format:$}}}function uG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Sg$($,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 Cg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qG6=256,MG6,kG6,VG6,SG6,CG6,_G6,vG6,fG6,_g$,vg$,fg$;var bg$=w(()=>{_4();w8();uh();XN();MG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),kG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),VG6=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(kG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),SG6=M1.object({type:M1.literal("text")}),CG6=M1.object({type:M1.literal("json_object")}),_G6=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()})}),vG6=M1.union([SG6,CG6,_G6]),fG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(VG6),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(MG6).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:vG6.optional(),user:M1.string().optional()});_g$=class _g$ extends Error{constructor($){super($);this.name="MessageConversionError"}};vg$=new F1;vg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QH("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(QH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=fG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=bG6(G.model);if(!J)return $.json(QH("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(QH("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 H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(QH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=yG6(G.messages),U=G.tools?gG6(G.tools):void 0,O=hG6(G.response_format),B=uG6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=Sg$(F,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.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(q.type==="text-delta"){if(P+=q.text,P.length>=qG6)await M()}else if(q.type==="tool-call"){await M();let k=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:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Cg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),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=Sg$(F,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:Cg$(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(QH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QH(Y.message,"server_error"),500)}});fg$=vg$});function xg$(){let $=new F1;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 H of J){if(!H.slug||J7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(N.title.toLowerCase()!==G)continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var yg$=w(()=>{w8();W_()});var hg$;var gg$=w(()=>{hg$={name:"decocms",version:"4.243.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 dG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??lG6}}var ug$,lG6="https://ph.studio.decocms.com",cg$;var lg$=w(()=>{w8();Wh0();QC();v9();T$();$61();gg$();ug$=new F1;ug$.get("/",($)=>{let Z={version:hg$.version,theme:Od1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:dV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Gv$(),posthog:dG6(),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})});cg$=ug$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function E91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function mg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function dg$($,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 ig$($){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()?dg$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):dg$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,mG6,iG6,pG6,nG6,pg$;var ng$=w(()=>{C_=l0.enum(["good","bad","neutral"]),mG6=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 $})),iG6=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(mG6)),pG6={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()},nG6=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(iG6).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)})]),pg$=l0.object({...pG6,template:nG6})});function mP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=pg$.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 j91=w(()=>{ng$()});import{join as tg$}from"path";async function oG6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=mP0(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()||E91($),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 rG6($,Z){let X=th($),Q=Z?.brand?.trim()||E91(X),Y=mg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=ig$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${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(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(F)}" />`,'<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(H)}" />`,`<meta name="twitter:image:alt" content="${YG(F)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
|
|
2830
2830
|
`)}function aG6($,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}
|
|
2831
2831
|
</head>`)}function og$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=th(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(tg$($,"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(sG6)}),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=$?tg$($,"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 oG6(th(Q)),K=rG6(Q,W);return X.html(aG6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var tG6=2500,sG6=1e4;var rg$=w(()=>{w8();j91();vL();T$()});function Ya($,Z){return fetch(`${oW({})}${$}`,Z)}async function eG6($,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 Ya(`/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}=mP0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var $J6,IN,ag$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},sg$;var eg$=w(()=>{w8();_Y();vL();j91();$J6=new Set(["complete","errored","terminated","unknown"]),IN=new F1;IN.use("*",async($,Z)=>{let X=await H8.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/*",ag$);IN.use("/suggest",ag$);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 eG6(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 Ya("/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 Ya(`/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:$J6.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 Ya(`/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 Ya(`/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:[]})}});sg$=IN});import{createHmac as ZJ6,timingSafeEqual as XJ6}from"crypto";function Zh$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+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)>QJ6)return!1;let W=ZJ6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&XJ6(K,F)})}function Xh$($){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:YH(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 Qh$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function YH($){return typeof $==="string"?$:void 0}function PJ($){return typeof $==="object"&&$!==null?$:void 0}function iP0($){return typeof $==="number"?new Date($*1000):null}function A91($){return YH($)??YH(PJ($)?.id)}function YJ6($){return A91($.subscription)??YH(PJ(PJ($.parent)?.subscription_details)?.subscription)}function GJ6($){let Z=iP0($.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 z91($,Z){let X=iP0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function P91($,Z){let X=iP0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function JJ6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=YH(PJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(YH(PJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(YH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=YH(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(YH(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=A91(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(z91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:A91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=YH(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&&z91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Qh$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:GJ6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=YJ6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(z91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:iP0(X.period_end),lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function WJ6($,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:Qh$(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 $h$($,Z){let X=WJ6($,Z);if(!X)return;MY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Pi1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Yh$($){let Z=new iW(p8().db),X=await JJ6(Z,$);if(!(X.handled&&X.topUp))$h$($,X);if(X.handled&&X.topUp)await eB$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),$h$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await fa1(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 QJ6=300;var Gh$=w(()=>{_G();M4();J60();lL();ys0()});var KJ6=1048576,T91;var Jh$=w(()=>{w8();BN();T$();Gh$();T91=new F1;T91.post("/webhook",M9({maxSize:KJ6,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(!Zh$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Xh$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Yh$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as HJ6}from"crypto";function NJ6($,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 HJ6(Buffer.from(Y),Buffer.from(Q))}var FJ6=5242880,R91;var Wh$=w(()=>{w8();BN();Cp();R91=new F1;R91.post("/webhook",M9({maxSize:FJ6,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(!NJ6(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 ei0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Kh$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Hh$,UJ6,OJ6,Fh$;var Nh$=w(()=>{w8();K3();jy();Lx();Hh$=new F1,UJ6=["range","if-none-match","if-modified-since"],OJ6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Hh$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ah($))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 Wn(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[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Kh$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of UJ6){let H=$.req.header(K);if(H)G.set(K,H)}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 OJ6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Kh$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Fh$=Hh$});var Ga=_((__)=>{var BJ6=__&&__.__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]}),wJ6=__&&__.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))BJ6(Z,$,X)};Object.defineProperty(__,"__esModule",{value:!0});wJ6(FY(),__)});var Bh$=_((Uh$)=>{Object.defineProperty(Uh$,"__esModule",{value:!0});Uh$.version=void 0;Uh$.version="3.4.0"});var Lh$=_((GH)=>{var DJ6=GH&&GH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(GH,"__esModule",{value:!0});GH.NodeTransport=GH.VERSION=void 0;GH.nodeResolveHost=AJ6;var t6=Ga(),LJ6=z0("net"),I91=z0("tls"),EJ6=z0("path"),wh$=z0("fs"),jJ6=DJ6(z0("dns")),zJ6=Bh$();GH.VERSION=zJ6.version;var PJ6="nats.js";class Dh${socket;version;lang;yields=[];signal=(0,t6.deferred)();closedNotification=(0,t6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=PJ6,this.version=GH.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,t6.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 t6.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 t6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new t6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,t6.deferred)(),X,Q=(0,LJ6.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,t6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=t6.DataBuffer.concat(...this.yields),Y=(0,t6.extractProtocolMessage)(Q);if(Y!=="")try{let G=t6.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,t6.deferred)();try{if($=(0,EJ6.resolve)($),!(0,wh$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,wh$.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,t6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new t6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,t6.deferred)();try{let Y=(0,I91.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 t6.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,t6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new t6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,t6.deferred)();try{let Q=(0,I91.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 t6.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,t6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,t6.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 I91.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,t6.render)($)}`);let Z=(0,t6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,t6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,t6.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}}GH.NodeTransport=Dh$;function AJ6($){let Z=(0,t6.deferred)();return jJ6.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 Ah$=_((Ph$)=>{Object.defineProperty(Ph$,"__esModule",{value:!0});Ph$.connect=TJ6;var Eh$=Lh$(),jh$=Ga(),zh$=Ga();function TJ6($={}){if((0,zh$.hasWsProtocol)($))return Promise.reject(zh$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,jh$.setTransportFactory)({factory:()=>{return new Eh$.NodeTransport},dnsResolveFn:Eh$.nodeResolveHost}),jh$.NatsConnectionImpl.connect($)}});var Th$=_((qN)=>{var IJ6=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]}),qJ6=qN&&qN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))IJ6(Z,$,X)};Object.defineProperty(qN,"__esModule",{value:!0});qN.connect=void 0;var MJ6=Ah$();Object.defineProperty(qN,"connect",{enumerable:!0,get:function(){return MJ6.connect}});qJ6(Ga(),qN)});function Mh$($){let Z=$?.connectFn??CJ6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(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,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:SJ6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let D=pZ(VJ6,kJ6,B-1,2,0.5);await q$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Rh$.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=qh$.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 CJ6($){return Ih$.connect($)}var Rh$,Ih$,qh$,kJ6=100,VJ6=3000,SJ6=3000;var kh$=w(()=>{u4();Rh$=V(ju(),1),Ih$=V(Th$(),1),qh$=V(bw(),1)});function q91($,Z){return`${$}.${Z}`}class M91{cache;constructor($){this.cache=Hh({ttlMs:$?.ttlMs??_J6,maxSize:$?.maxSize??vJ6})}async get($,Z){return this.cache.get(q91($,Z))??null}async set($,Z,X){this.cache.set(q91($,Z),X)}async invalidate($,Z){this.cache.delete(q91($,Z))}teardown(){this.cache.clear()}}var _J6=600000,vJ6=5000;var Vh$=()=>{};function pP0($,Z){return`${$}:${Z}`}function k91($){let Z=Hh({ttlMs:$?.ttlMs??fJ6,maxSize:$?.maxSize??bJ6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(Sh$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(pP0(K,H))},set(K,H,F){Z.set(pP0(K,H),F)},invalidate(K,H){Z.delete(pP0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Sh$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(pP0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Sh$="studio.ai-provider-keys.invalidate",fJ6=30000,bJ6=5000;var Ch$=()=>{};class V91{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=_h$.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 _h$)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 _h$;var vh$=w(()=>{_h$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var fh$=($)=>{let Z;return()=>Z??=$()},S91,C91;var bh$=w(()=>{f6();S91=fh$(()=>S$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),C91=fh$(()=>S$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function lJ6(){return{name:mF,subjects:[`${Ow0}.>`],storage:GW.StorageType.File,max_age:gJ6,max_bytes:uJ6,max_msgs_per_subject:cJ6,discard:GW.DiscardPolicy.Old,retention:GW.RetentionPolicy.Limits,duplicate_window:hJ6,num_replicas:1}}class gh${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 xh$($){let Z=yh$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function pJ6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,yJ6().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 nJ6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class _91{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=lJ6(),X=await N9(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await GW.jetstreamManager($);try{await Q.streams.info(mF),await Q.streams.update(mF,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(mF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:nJ6});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=pJ6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=CH$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=bt0(H,{runId:Z}),U=performance.now()-F;if(S91().record(U),C91().add(1,{"org.id":Q??"unknown"}),iJ6?.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?xh$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=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(H.releaseLock(),W(),mJ6)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=bt0(Z,{runId:$,dedup:X});if(S91().record(performance.now()-Y),C91().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:xh$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=SH$({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(mF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=Ew0({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(Bw0()).pipeThrough(ww0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await F.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(mF,{filter:MB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var GW,yh$,xJ6=($)=>{let Z;return()=>Z??=$()},yJ6,gJ6=86400000000000,hJ6=120000000000,uJ6=4294967296,cJ6=500000,dJ6,mJ6,iJ6;var hh$=w(()=>{u4();xt0();jw0();Dw0();f6();bh$();GW=V(bw(),1),yh$=V(ju(),1),yJ6=xJ6(()=>S$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));dJ6=process.env.STREAM_ENCODE_TRACE==="1",mJ6=process.env.DECOPILOT_STREAM_TRACE==="1";iJ6=dJ6?new gh$:null});function nP0($,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 uh$=w(()=>{U8()});class v91{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}}function $36($){return $ instanceof n7}function Z36($,Z){return Z-$>=sJ6}class f91{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??tJ6;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??rJ6,X=this.options.itemIntervalMs??oJ6,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()-Mn0),Eo0);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()-eJ6));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 Yt0(this.taskBoard,Y,Q),await Gt0(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 iF(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),$36(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()+aJ6)).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(()=>{}),A8(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(!Z36(LF(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}if(await dF$(J,Q))return!0;if(!Y)return!1;let W=await Promise.all(G.map(async(K)=>({...K,...await vy(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(!Bo0(W))return!1;return await Iw0(J,Q,{previewMatchesHead:wo0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var tJ6=60000,oJ6=300000,rJ6=50,aJ6=60000,sJ6=900000,eJ6=120000;var ch$=w(()=>{E9();Jo0();cF();kn();G9();E3();jo0();kK();Pn()});import{readdir as X36,rm as tP0}from"fs/promises";import{join as oP0}from"path";async function rP0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-Q36),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 lh$($,Y,Z);else if(!Y.startsWith(".")){let G=oP0($,Y),J=await v_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await lh$(G,K,Z)}if((await v_(G)).length===0)await tP0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function lh$($,Z,X){let Q=0,Y=oP0($,Z),G=await v_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=oP0(Y,W),H=await v_(K);for(let N of H){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=oP0(K,N);await tP0(O,{recursive:!0,force:!0}),Q++}}if((await v_(K)).length===0)await tP0(K,{recursive:!0,force:!0})}if((await v_(Y)).length===0)await tP0(Y,{recursive:!0,force:!0});return Q}async function v_($){try{return(await X36($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var Q36=30;var b91=()=>{};import{DBOS as x91,SchedulerMode as Y36}from"@dbos-inc/dbos-sdk";async function J36(){let $=[qJ(),f_(),HH()],Z=0;for(let X of $)try{Z+=await rP0(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 W36($,Z){await x91.runStep(()=>J36(),{name:"monitoringRetention"})}function mh$(){if(dh$)return;dh$=!0;let $=x91.registerWorkflow(W36,{name:"monitoringRetentionWorkflow"});x91.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:G36,mode:Y36.ExactlyOncePerIntervalWhenActive})}var G36="23 4 * * *",dh$=!1;var ih$=w(()=>{JY();b91()});function ph$($){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 x41($.db,Z,Q.role);return Y.boundAuth=b41({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 nh$=w(()=>{DL();YC()});function K36(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function F36(){for(let $ of H36)$()}function th$($){let Z=[...y91.logs,$];y91={...y91,logs:Z.length>500?Z.slice(-500):Z},F36()}function g91(){return N36}var y91,H36,N36=!1;var h91=w(()=>{y91=K36(),H36=new Set});import{EventEmitter as U36}from"events";var u91;var oh$=w(()=>{h91();u91=new U36;u91.on("request",($)=>{th$($)})});function rh$(){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=oh(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>oh(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}${oh(U.method)}${Y5.reset}`}}catch{}}let W=oh(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${Y5.mcp}${oh(F.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=B36(Q),H=J?"\u25C0":"\u2190";if(!g91())console.log(`${Y5.dim}${H}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=O36(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!g91())console.log(`${Y5.dim}${B}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""} ${U}${N}${Y5.reset} ${Y5.duration}${O}${Y5.reset}`);u91.emit("request",{method:Q,path:oh(Y),status:N,duration:F,timestamp:new Date})}}}var Y5,O36=($)=>{if($>=500)return Y5.serverError;if($>=400)return Y5.clientError;if($>=300)return Y5.redirect;return Y5.ok},B36=($)=>{return Y5[$]||Y5.reset},oh=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var ah$=w(()=>{h91();oh$();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 Zu$}from"crypto";import{mkdir as w36,readdir as D36,rm as sh$,stat as Xu$}from"fs/promises";import{join as l91,relative as L36}from"path";import{z as z$}from"zod";function Yu$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return l91(E36,Z)}function Gu$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function c91($,Z){let X=Yu$($),Q=Gu$(Z);return l91(X,Q)}function j36($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Zu$("sha256",Y).update(G).digest("hex")}function $u$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=j36(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Gu$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Ju$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Zu$("md5","etag").update(Q).digest("hex")}"`}async function Wu$($,Z,X,Q,Y){try{let G=await D36($,{withFileTypes:!0});for(let J of G){let W=l91($,J.name),H=L36(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Wu$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await Xu$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Ju$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Ku$($,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,H=G.continuationToken,F=Yu$(Q);await w36(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Wu$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),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=c91(Q,G.key),W=await Xu$(J);return{contentType:P61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Ju$(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??eh$;return{url:$u$(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??eh$;return{url:$u$(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=c91(Q,G.key);try{return await sh$(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 H=c91(Q,K);try{await sh$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function d91($,Z,X){let Q=Ku$(Z,X),Y=new bW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:H5});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(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new sX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),GJ(Y,G,$,"mcp:dev-assets")}async function Hu$($,Z,X,Q){let G=Ku$(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 E36="./data/assets",eh$=3600,Qu$,Fu$;var Nu$=w(()=>{T$();hy();w8();ll();wC();_X();mz0();Qu$=new F1;Qu$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return d91($.req.raw,Z,Q)});Fu$=Qu$});var Uu$={};Y4(Uu$,{mountDevRoutes:()=>z36});function z36($,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 d91(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(),H=await Hu$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Fu$);let X=new F1;X.use("*",QW({mountPath:"/api/dev-assets"})),X.route("/",dz0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Ou$=w(()=>{w8();B61();mz0();Nu$()});import{sql as P36}from"kysely";import{randomUUID as Bu$}from"crypto";import{z as A36}from"zod";async function R36($){let Z=new Date().toISOString(),X=Bu$(),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:Bu$(),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 P36`SELECT
|
|
2832
2832
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,b as L,j as r}from"./index-CocRXnaV.js";import{I as A}from"./input-Th45y1Oj.js";import{L as P}from"./label-DBYMSMdt.js";import{S as R,a as V,b as z,c as J,d as O}from"./select-E-1vIH1D.js";import{T as D}from"./textarea-50Odtr43.js";import{F as M,T as _,J as $,V as q,_ as G}from"./index-Cuh0Txtd.js";import{s as F}from"./primitives-DuIzbwMK.js";import{u as H}from"./use-autosave-DJi1cHzK.js";import"./tooltip-CsaHSAiw.js";import"./Check-DybL0ANt.js";import"./ChevronDown-xX7EiG6D.js";import"./ChevronUp-BqbI3e8M.js";import"./ArrowUp-30qFHVAn.js";import"./chat-context-CYeQN_c_.js";import"./tab-id--OOSvEKL.js";import"./dialog-CThPBdlC.js";import"./X-DCc6F72_.js";import"./Copy01-DTWBSnDM.js";import"./Download01-D5DovFP1.js";import"./hooks-U6YCxYng.js";import"./use-mcp-client-B0R6KE9j.js";import"./auth-D1vEdZed.js";import"./decopilot-sse-pool-DhZ037JV.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-CcMn-V_g.js";import"./use-ai-providers-MHzwAwom.js";import"./studio-tools-Z3_Ho08E.js";import"./use-decopilot-events-Bzb7ko-7.js";import"./use-organization-settings-CeWkbXSU.js";import"./automation-runs-Ca7EOakb.js";import"./agent-icon-D4Q5f1gm.js";import"./AlertCircle-8Zp9V4Gf.js";import"./Tool01-C_sZUPJ-.js";import"./ArrowLeft-CV5LnTOD.js";import"./Tool02-ByQz2x4p.js";import"./XCircle-nX8NmjEf.js";import"./ArrowUpRight-BbZhk1vr.js";import"./TrendUp01-BhBYte7U.js";import"./ZapSquare-D3-vIRZ1.js";import"./Users03-BWQEkc8q.js";import"./CheckCircle-DRTLKGuF.js";import"./ChevronRight-ChB7-Qdk.js";import"./ChevronSelectorVertical-B1KXM4ba.js";import"./DotsVertical-BOtiBqPV.js";import"./Stars02-DJ3XKS_q.js";import"./CreditCard01-CTZjNSbQ.js";import"./Settings02-KNp1ZCpy.js";import"./Eye-DZbWTjje.js";import"./FilterLines-CHaV7Nw9.js";import"./Share07-D6xjuePS.js";import"./Globe01-BNmRPD0F.js";import"./Globe04-B9LH-CHD.js";import"./SwitchHorizontal01-YXwPofOJ.js";import"./HardDrive-hrMMCqWl.js";import"./Key01-Bhgh4Ahq.js";import"./LayoutLeft-Bh-qR188.js";import"./LinkExternal01-BkrsVkBk.js";import"./LockUnlocked01-BhHn_96P.js";import"./LogOut01-3Vo4riO2.js";import"./Monitor01-1BlCrc-_.js";import"./Sun-gBtTF4fF.js";import"./Palette-D4OaRwH0.js";import"./Play-B148yyee.js";import"./Plus-BBoTedez.js";import"./SearchLg-DC1AF4wk.js";import"./SearchMd-BQD9siMW.js";import"./Shield01-B1d6QDuN.js";import"./Stars01-dBQbZtFY.js";import"./Trash01-Dq61VZ-q.js";import"./Upload01-P9cG59fw.js";import"./User01-0XnrIXA7.js";import"./Users01-SHxHbBOf.js";import"./XClose-DQG60vKG.js";import"./Zap-DWK1mAeA.js";import"./useInfiniteQuery-BUh1ggHM.js";import"./use-infinite-scroll-THZlE2jL.js";import"./use-connection-BUow-BBf.js";import"./card-CRmNVgmu.js";import"./sidebar-C6vNFIX7.js";import"./use-mobile-CMwVM8Dm.js";import"./table-CIn2xzFA.js";import"./empty-state-BvDYlB54.js";import"./use-members-D44SqWOd.js";import"./use-org-auth-client-BJjAWkzK.js";import"./use-clock-tick-BG4XX5Ok.js";import"./use-automations-B03uaiym.js";import"./useSuspenseInfiniteQuery-B0aALDUm.js";import"./avatar-BtiojN-R.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-D8f2-t2L.js";import"./monaco-editor-DPjO46DP.js";import"./spinner-0lt9Wsr0.js";import"./types-Cp4OhzUj.js";import"./shell-layout-DEIeTMRI.js";import"./required-auth-layout-BCzBM0lT.js";import"./use-org-sso-BeKN7G5W.js";import"./integration-icon-1MrWDyJg.js";import"./use-navigate-to-agent-DCU47VEH.js";import"./reusable-new-chat-CouMjkYR.js";import"./chart-uaBUCKLk.js";import"./index-_JizC8Pw.js";import"./form-BK3EXow7.js";import"./file-type-icon-DY6FwN_P.js";import"./drawer-wwZlxN5E.js";import"./collection-search-Bu8uyhh2.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-BaLEcPo0.js";import"./toggle-group-DRZ_-Mcx.js";import"./use-commerce-diagnostic-CL_Twf94.js";import"./popover-Du9wAhag.js";import"./self-tool-result-DKndch_o.js";import"./alert-dialog-Bl3umpCX.js";import"./extract-connection-data-BM2bZGj-.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-BcMRwR1F.js";import"./authenticate-and-persist-oauth-aq0GBY7a.js";import"./mcp-oauth-Bxin9kcZ.js";import"./track-Bs3E_Z0a.js";import"./toolbar-g180ZP8I.js";import"./skeleton-dgWEijLb.js";import"./github-repo-picker-DzLD80U9.js";import"./use-mcp-tools-1OMI8U3k.js";import"./agent-capabilities-C4tLW0Za.js";import"./connection-card-DBM3JGC4.js";import"./use-registry-connections-CNcrUm5j.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-B38uYVsR.js";import"./collection-tabs-BJRs7Thx.js";import"./badge-BuMGJh5B.js";import"./command-Dp9oDXnR.js";import"./index-D5A46YHt.js";import"./use-open-billing-url-C3VdIxbn.js";import"./select-model-CrYKaXss.js";import"./checkbox-zjf3WVrQ.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-svoIYw5J.js";import"./cards-BNsSG5Uz.js";import"./dropdown-menu-CLAhqzHU.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-KOU_LbBE.js";import"./use-capability-BVzZ6YO7.js";import"./use-file-configs-CeV8SIoC.js";import"./pt-BR-CLy76QW2.js";import"./switch-DMaQp-KH.js";import"./use-debounced-autosave-uD_wTs7u.js";import"./index-CZ7g67Kn.js";import"./search-input-BwMDISby.js";import"./index-CF2fQcn-.js";import"./use-secrets-C8PoL8Jc.js";import"./AreaChart-DY55BZH7.js";import"./use-tags-DpurgJWV.js";import"./get-initials-D-f_fDFw.js";import"./automation-list-row-BJ6ogb3E.js";import"./use-org-repo-syncs-17xU239e.js";const Q={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},U={authors:"sandbox.recordEditor.titleAuthor"};function Qr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=_(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:q(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=H(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,T=U[a];let n;t[14]!==i||t[15]!==T?(n=i(T),t[14]=i,t[15]=T,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx($,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const N=Q[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==N){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(G,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(P,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:F(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(J,{children:(o.options??[]).map(m=>r.jsx(O,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(P,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:F(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:F(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=N.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=N,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Qr as RecordEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-B6d61YxT.js","assets/index-CocRXnaV.js","assets/index-C9I1mQ4O.css","assets/Tool02-ByQz2x4p.js","assets/CheckCircle-DRTLKGuF.js","assets/Settings02-KNp1ZCpy.js","assets/use-mcp-client-B0R6KE9j.js","assets/auth-D1vEdZed.js","assets/useInfiniteQuery-BUh1ggHM.js","assets/use-infinite-scroll-THZlE2jL.js","assets/studio-tools-Z3_Ho08E.js","assets/badge-BuMGJh5B.js","assets/input-Th45y1Oj.js","assets/dropdown-menu-CLAhqzHU.js","assets/Check-DybL0ANt.js","assets/ChevronRight-ChB7-Qdk.js","assets/DotsVertical-BOtiBqPV.js","assets/table-CIn2xzFA.js","assets/toggle-group-DRZ_-Mcx.js","assets/use-view-mode-CPN-uH9Q.js","assets/use-mobile-CMwVM8Dm.js","assets/FilterLines-CHaV7Nw9.js","assets/Globe01-BNmRPD0F.js","assets/SearchMd-BQD9siMW.js","assets/dialog-CThPBdlC.js","assets/X-DCc6F72_.js","assets/AlertCircle-8Zp9V4Gf.js","assets/Download01-D5DovFP1.js","assets/Upload01-P9cG59fw.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-Bl3umpCX.js","assets/card-CRmNVgmu.js","assets/Trash01-Dq61VZ-q.js","assets/label-DBYMSMdt.js","assets/select-E-1vIH1D.js","assets/tooltip-CsaHSAiw.js","assets/ChevronDown-xX7EiG6D.js","assets/ChevronUp-BqbI3e8M.js","assets/switch-DMaQp-KH.js","assets/textarea-50Odtr43.js","assets/ArrowLeft-CV5LnTOD.js","assets/XCircle-nX8NmjEf.js","assets/checkbox-zjf3WVrQ.js","assets/Eye-DZbWTjje.js","assets/LinkExternal01-BkrsVkBk.js","assets/use-copy-D8f2-t2L.js","assets/Copy01-DTWBSnDM.js","assets/Key01-Bhgh4Ahq.js","assets/Plus-BBoTedez.js","assets/mcp-oauth-Bxin9kcZ.js","assets/Play-B148yyee.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as i,j as e,r as s,k as a,aF as o}from"./index-CocRXnaV.js";import{R as m}from"./require-capability-Mr1OoF4-.js";import"./use-capability-BVzZ6YO7.js";import"./access-gate-R3wf6ALF.js";import"./capability-load-error-Djm4fhvR.js";const n=s.lazy(()=>o(()=>import("./registry-layout-B6d61YxT.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50])));function f(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(m,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(n,{})})}),r[0]=t):t=r[0],t}export{f as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-B6d61YxT.js","assets/index-CocRXnaV.js","assets/index-C9I1mQ4O.css","assets/Tool02-ByQz2x4p.js","assets/CheckCircle-DRTLKGuF.js","assets/Settings02-KNp1ZCpy.js","assets/use-mcp-client-B0R6KE9j.js","assets/auth-D1vEdZed.js","assets/useInfiniteQuery-BUh1ggHM.js","assets/use-infinite-scroll-THZlE2jL.js","assets/studio-tools-Z3_Ho08E.js","assets/badge-BuMGJh5B.js","assets/input-Th45y1Oj.js","assets/dropdown-menu-CLAhqzHU.js","assets/Check-DybL0ANt.js","assets/ChevronRight-ChB7-Qdk.js","assets/DotsVertical-BOtiBqPV.js","assets/table-CIn2xzFA.js","assets/toggle-group-DRZ_-Mcx.js","assets/use-view-mode-CPN-uH9Q.js","assets/use-mobile-CMwVM8Dm.js","assets/FilterLines-CHaV7Nw9.js","assets/Globe01-BNmRPD0F.js","assets/SearchMd-BQD9siMW.js","assets/dialog-CThPBdlC.js","assets/X-DCc6F72_.js","assets/AlertCircle-8Zp9V4Gf.js","assets/Download01-D5DovFP1.js","assets/Upload01-P9cG59fw.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-Bl3umpCX.js","assets/card-CRmNVgmu.js","assets/Trash01-Dq61VZ-q.js","assets/label-DBYMSMdt.js","assets/select-E-1vIH1D.js","assets/tooltip-CsaHSAiw.js","assets/ChevronDown-xX7EiG6D.js","assets/ChevronUp-BqbI3e8M.js","assets/switch-DMaQp-KH.js","assets/textarea-50Odtr43.js","assets/ArrowLeft-CV5LnTOD.js","assets/XCircle-nX8NmjEf.js","assets/checkbox-zjf3WVrQ.js","assets/Eye-DZbWTjje.js","assets/LinkExternal01-BkrsVkBk.js","assets/use-copy-D8f2-t2L.js","assets/Copy01-DTWBSnDM.js","assets/Key01-Bhgh4Ahq.js","assets/Plus-BBoTedez.js","assets/mcp-oauth-Bxin9kcZ.js","assets/Play-B148yyee.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as m,d as n,f as c,j as t,k as f,r as l,aF as p}from"./index-CocRXnaV.js";import{R as u}from"./require-capability-Mr1OoF4-.js";import"./use-capability-BVzZ6YO7.js";import"./access-gate-R3wf6ALF.js";import"./capability-load-error-Djm4fhvR.js";const g=l.lazy(()=>p(()=>import("./registry-layout-B6d61YxT.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50])));function j(){const e=m.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=c(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{j as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./use-infinite-scroll-THZlE2jL.js";import{e6 as i}from"./index-CocRXnaV.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./use-infinite-scroll-THZlE2jL.js";import{e6 as u,b3 as n}from"./index-CocRXnaV.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};
|