decocms 4.403.1 → 4.403.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-BjnxyDOP.js → AlertCircle-C_kXzQ78.js} +1 -1
- package/dist/client/assets/{AreaChart-BgjldTZ3.js → AreaChart-sdUzs9E4.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DQ9UKKAN.js → ArrowLeft-D9zUA1bK.js} +1 -1
- package/dist/client/assets/{ArrowRight-DiT079bV.js → ArrowRight-rURPX3xn.js} +1 -1
- package/dist/client/assets/{ArrowUp-BKoObjW-.js → ArrowUp-BLNkLM3C.js} +1 -1
- package/dist/client/assets/{CartesianChart-E8ZbYInN.js → CartesianChart-D8uFyT0_.js} +1 -1
- package/dist/client/assets/{Check-DAeVWel0.js → Check-dAUWsLQD.js} +1 -1
- package/dist/client/assets/{CheckCircle-i5UWgig8.js → CheckCircle-aUhmD8ev.js} +1 -1
- package/dist/client/assets/{ChevronUp-BZ-l57nk.js → ChevronUp-B5OBs3oS.js} +1 -1
- package/dist/client/assets/{Copy01-DAVjKSIW.js → Copy01-EJ-9UYr1.js} +1 -1
- package/dist/client/assets/{CreditCard01-BdF-cK8s.js → CreditCard01-B_NVIZ6G.js} +1 -1
- package/dist/client/assets/{DotsVertical-Cwch2oVB.js → DotsVertical-y8JWapab.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-BcIn9bAS.js → ErrorBarContext-Xbqw0Kib.js} +1 -1
- package/dist/client/assets/{Eye-DQ7cfCM0.js → Eye-C-l2H4jg.js} +1 -1
- package/dist/client/assets/{Globe04-DKoPzLrY.js → Globe04-BTfSqDHg.js} +1 -1
- package/dist/client/assets/{Image01-DbwBpUqU.js → Image01-UbYmmJNe.js} +1 -1
- package/dist/client/assets/{Key01-zwp6W4d5.js → Key01-DA2msxlD.js} +1 -1
- package/dist/client/assets/{LayoutLeft-C-SKczLZ.js → LayoutLeft-DDgCcOGN.js} +1 -1
- package/dist/client/assets/{Line-Ded98G6Q.js → Line-CcMJZ7N6.js} +1 -1
- package/dist/client/assets/{Link01-zc_yw7bC.js → Link01-bVuJNEJQ.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CXDDMqr6.js → LinkExternal01-BDWkknIJ.js} +1 -1
- package/dist/client/assets/{Monitor01-DWGOwDQg.js → Monitor01-BEy0ymst.js} +1 -1
- package/dist/client/assets/{Palette-DWlnTZiX.js → Palette-CjHZIrhs.js} +1 -1
- package/dist/client/assets/{Plus-qxuO6WDR.js → Plus-DbvfPvv9.js} +1 -1
- package/dist/client/assets/{SearchMd-DX0K-HMy.js → SearchMd-CWmq_58m.js} +1 -1
- package/dist/client/assets/{Sector-B3qdp4tS.js → Sector-D6-3qRoD.js} +1 -1
- package/dist/client/assets/{Share07-BnshXTQj.js → Share07-B4qSsTX4.js} +1 -1
- package/dist/client/assets/{Sun-ANdrraHV.js → Sun-C_pUsRb6.js} +1 -1
- package/dist/client/assets/{Tool01-TjgiGeiC.js → Tool01-CbkB_UGt.js} +1 -1
- package/dist/client/assets/{Trash01-CrHs9whM.js → Trash01-DcygqQWZ.js} +1 -1
- package/dist/client/assets/{Upload01-C5ztKcks.js → Upload01-DBrbIQNO.js} +1 -1
- package/dist/client/assets/{User01-CXM1GVfD.js → User01-BJCr-vTS.js} +1 -1
- package/dist/client/assets/{UserSquare-opUUQIJ1.js → UserSquare-DejD_xtx.js} +1 -1
- package/dist/client/assets/{Users01-5Z8_4Xc4.js → Users01-BSE9ab3Q.js} +1 -1
- package/dist/client/assets/{X-DmIzVIVO.js → X-BjRn5g3c.js} +1 -1
- package/dist/client/assets/{XClose-Ck6U0czU.js → XClose-CmxLmC_O.js} +1 -1
- package/dist/client/assets/{Zap-DA1b9hd1.js → Zap-DgTcmlaw.js} +1 -1
- package/dist/client/assets/{ZoomOut-Dcywub4h.js → ZoomOut-B1L62w9D.js} +1 -1
- package/dist/client/assets/{access-gate-MDdmDxXn.js → access-gate-DKH0kUwV.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-DU7LzF51.js → add-connection-dialog-CXvu0sln.js} +1 -1
- package/dist/client/assets/{agent-analytics-wlF8_i7k.js → agent-analytics-CDyLGFSg.js} +1 -1
- package/dist/client/assets/agent-app-Ckeg466q.js +1 -0
- package/dist/client/assets/{agent-assets-CmfaU4i1.js → agent-assets-6WzmlXYC.js} +1 -1
- package/dist/client/assets/{agent-automation-CaO9571m.js → agent-automation-KzOj_h6i.js} +1 -1
- package/dist/client/assets/{agent-automations-BNHRsCg2.js → agent-automations-BPFZMO8E.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-Dhhwa0F6.js → agent-connect-sources-CzuY9o17.js} +1 -1
- package/dist/client/assets/agent-deck-X4JcoTgo.js +1 -0
- package/dist/client/assets/{agent-e2e-CjqnHGPK.js → agent-e2e-DazbrdT6.js} +1 -1
- package/dist/client/assets/{agent-experiments-BJgr6c6L.js → agent-experiments-Bcpw1zd2.js} +1 -1
- package/dist/client/assets/{agent-file-DTsmPXS9.js → agent-file-G9IVTmKu.js} +1 -1
- package/dist/client/assets/{agent-git-zLHFVqcf.js → agent-git-C3rcuDex.js} +1 -1
- package/dist/client/assets/{agent-hosting-Bd611big.js → agent-hosting-C15fwpgd.js} +1 -1
- package/dist/client/assets/{agent-icon-CPkpuu5N.js → agent-icon-FM5Xd0VK.js} +1 -1
- package/dist/client/assets/agent-library-file-DEFMiuHo.js +1 -0
- package/dist/client/assets/{agent-monitor-NiXXUkxV.js → agent-monitor-BU9ggQ7r.js} +1 -1
- package/dist/client/assets/{agent-overview-Cy5phgJk.js → agent-overview-CYjNUptk.js} +1 -1
- package/dist/client/assets/agent-settings-DMWRPhJZ.js +1 -0
- package/dist/client/assets/{agent-site-editor-xAaHN9ew.js → agent-site-editor-WkSiPa5-.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-cjWKET3w.js +2 -0
- package/dist/client/assets/{agent-site-editor-content-a5TI2r7z.js → agent-site-editor-content-DABMSGR0.js} +3 -3
- package/dist/client/assets/{agent-site-editor-preview-gHcJBdxE.js → agent-site-editor-preview-CrnEsqDx.js} +3 -3
- package/dist/client/assets/agent-view-BKmddyZw.js +1 -0
- package/dist/client/assets/{agent-view-guard-tp4TNcN4.js → agent-view-guard--QhU9w-7.js} +1 -1
- package/dist/client/assets/{agents-list-Iqj0VESU.js → agents-list-tZ6ag2vD.js} +1 -1
- package/dist/client/assets/{ai-providers-BzGiZdMW.js → ai-providers-B0SmqGS2.js} +1 -1
- package/dist/client/assets/{alert-Cs-bStiD.js → alert-CY9y5kov.js} +1 -1
- package/dist/client/assets/{alert-dialog-BqYCADnJ.js → alert-dialog-crlActG5.js} +1 -1
- package/dist/client/assets/{analytics-sections-DTymFcLM.js → analytics-sections-CW1SSmlY.js} +1 -1
- package/dist/client/assets/api-keys-BG_ML2jm.js +1 -0
- package/dist/client/assets/{api-keys-BeBXKTTu.js → api-keys-CJwF_ag6.js} +1 -1
- package/dist/client/assets/app-editor-B6-1AIx6.js +1 -0
- package/dist/client/assets/{asset-utils-CFWp7R-O.js → asset-utils-CHRBnkqM.js} +1 -1
- package/dist/client/assets/{auth-DMDdodew.js → auth-BHw2Kds9.js} +1 -1
- package/dist/client/assets/{auth-catchall-CnzMelD2.js → auth-catchall-D-dlIY9A.js} +1 -1
- package/dist/client/assets/{auth-entry-CB9sp4oM.js → auth-entry-CSvHYg3Y.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CCJSBMY1.js → auth-split-layout-CicPpTBH.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CNlmBCGw.js → authenticate-and-persist-oauth-CekjxRMV.js} +1 -1
- package/dist/client/assets/{automation-list-row-WR8tLDcb.js → automation-list-row-CyE8OxsN.js} +1 -1
- package/dist/client/assets/{automation-runs-CMmjYDxj.js → automation-runs-0MzQ9_TE.js} +1 -1
- package/dist/client/assets/{automations-DjMvE8Jp.js → automations-BW3aEjye.js} +1 -1
- package/dist/client/assets/{autosend-o13Aw1Rn.js → autosend-BQf55oa2.js} +1 -1
- package/dist/client/assets/{avatar-D35e4GmC.js → avatar-CDCcPNVu.js} +1 -1
- package/dist/client/assets/{badge-B194cO51.js → badge-BYQb3KZf.js} +1 -1
- package/dist/client/assets/{block-document-BOCciQCf.js → block-document-Dq-YxMg6.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-CBbcF7mQ.js → blocks-preview-workspace-context-Drdkcek_.js} +1 -1
- package/dist/client/assets/{buckets-CaYRkeTq.js → buckets-D5hiLOzS.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-PevJByNh.js → build-improve-prompt-doc-CQerhNO3.js} +1 -1
- package/dist/client/assets/{calendar-C6nVhblX.js → calendar-25oFX8Nv.js} +1 -1
- package/dist/client/assets/{capability-load-error-Gr2lFmRO.js → capability-load-error-DSGNrwqn.js} +1 -1
- package/dist/client/assets/{cards-gLcUNsCS.js → cards-VWdOgaGr.js} +1 -1
- package/dist/client/assets/{category-editor-BL-y4acD.js → category-editor-BdndGp4t.js} +1 -1
- package/dist/client/assets/{chart-DaTqNVF8.js → chart-BjBVJYiA.js} +1 -1
- package/dist/client/assets/{chat-context-WNSIRKCQ.js → chat-context-PGwkOHvf.js} +1 -1
- package/dist/client/assets/{chat-draft-BcyCtTKR.js → chat-draft-CC4dDsJa.js} +1 -1
- package/dist/client/assets/{checkbox-JdVFVT9j.js → checkbox-CTPSwm_S.js} +1 -1
- package/dist/client/assets/{choose-editor-KLJrpSbS.js → choose-editor-CVHmuTge.js} +1 -1
- package/dist/client/assets/{claim-phase-copy-DWojSJiP.js → claim-phase-copy-DCU_RXjB.js} +1 -1
- package/dist/client/assets/{cli-auth-success-RutxCdeJ.js → cli-auth-success-B8c4OoEo.js} +1 -1
- package/dist/client/assets/{client-icons-iHLtcmNR.js → client-icons-D9T3t2Bp.js} +1 -1
- package/dist/client/assets/{collapsible-Cvuvqexz.js → collapsible-Df_t1rGz.js} +1 -1
- package/dist/client/assets/{collection-detail-BPtNs1k-.js → collection-detail-HLKs6GCt.js} +1 -1
- package/dist/client/assets/{collection-display-button-CfKd9s7o.js → collection-display-button-DLhpOBwe.js} +1 -1
- package/dist/client/assets/{collection-search-Dj-lj2Fa.js → collection-search-DjoVYez-.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DZhdr5fM.js → collection-table-wrapper-Bogz2zyz.js} +1 -1
- package/dist/client/assets/{collection-tabs-glsScWrF.js → collection-tabs-CECmjidp.js} +1 -1
- package/dist/client/assets/{combobox-CRDHNq4d.js → combobox-DWT2Nd1E.js} +1 -1
- package/dist/client/assets/{command-CaZijnVF.js → command-BL0zkwSH.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-BkRhUSqK.js → companion-mcps-section-BLvEkA3R.js} +1 -1
- package/dist/client/assets/{connect-Ciw6e4mA.js → connect-Ki0wTZT8.js} +1 -1
- package/dist/client/assets/{connect-layout-D1t_CVe0.js → connect-layout-BY1cRYP7.js} +1 -1
- package/dist/client/assets/{connection-Bp_V6T8B.js → connection-B1P297GR.js} +1 -1
- package/dist/client/assets/{connection-card-CtvZJL9l.js → connection-card-Da1ylTxs.js} +1 -1
- package/dist/client/assets/{connection-detail-Df_r-qH6.js → connection-detail-B-cHSvBP.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BsreWXIJ.js → connection-form-helpers-15mQKEqB.js} +1 -1
- package/dist/client/assets/{connections-CK-Ua6Mw.js → connections-DNxEAIRb.js} +1 -1
- package/dist/client/assets/{context-BM8vfIaN.js → context-CNtid5FS.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BwjjbQTa.js → create-organization-dialog-dYVdXxQM.js} +1 -1
- package/dist/client/assets/{decofile-api-SdRYqTHk.js → decofile-api-QNgwZ2nW.js} +1 -1
- package/dist/client/assets/{decopilot-CZjF5g1z.js → decopilot-BOK6nkuf.js} +1 -1
- package/dist/client/assets/{dialog-GV2-AWhM.js → dialog-CENFdapR.js} +1 -1
- package/dist/client/assets/{discover-BvsLStXF.js → discover-CjtL2zWe.js} +1 -1
- package/dist/client/assets/{domain-settings-D6Vd7rgv.js → domain-settings-BflzrGO_.js} +1 -1
- package/dist/client/assets/{download-app-dialog-CwDsIUWZ.js → download-app-dialog-DpTycVG6.js} +1 -1
- package/dist/client/assets/{drawer-BpYKYeO-.js → drawer-DjQmNq13.js} +1 -1
- package/dist/client/assets/{editor-D-V05JcK.js → editor-DAgmGL3f.js} +1 -1
- package/dist/client/assets/{empty-state-DD1de6E_.js → empty-state-C_HcuHU6.js} +1 -1
- package/dist/client/assets/{empty-state-BIGrNuvN.js → empty-state-D7Th7GXw.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CDeCZEXj.js → extract-connection-data-Vz2TdjlJ.js} +1 -1
- package/dist/client/assets/{feature-gate-CVihx7r6.js → feature-gate-Cz7xEoGI.js} +1 -1
- package/dist/client/assets/{feature-paywall-BWXzTC8M.js → feature-paywall-D3MVv8tA.js} +1 -1
- package/dist/client/assets/{file-explorer-C8-AkN7L.js → file-explorer-B_xgdusU.js} +1 -1
- package/dist/client/assets/{file-preview-DCDQ1qgJ.js → file-preview-Byy1ZOrf.js} +1 -1
- package/dist/client/assets/{file-share-button-Cty0rZxy.js → file-share-button-CALFcbRE.js} +1 -1
- package/dist/client/assets/{file-type-icon-C06txfjh.js → file-type-icon-Bdeu7ywm.js} +1 -1
- package/dist/client/assets/{folder-icon-D94yBI09.js → folder-icon-DvoUup1J.js} +1 -1
- package/dist/client/assets/{form-CeykBl5J.js → form-B1Wwlzkj.js} +1 -1
- package/dist/client/assets/{gateway-client-Bv7LvgK9.js → gateway-client-D9enDJRc.js} +1 -1
- package/dist/client/assets/{general-D80iGMZp.js → general-DLysl035.js} +1 -1
- package/dist/client/assets/{github-icon-CbIIkcig.js → github-icon-YMvGSlq2.js} +1 -1
- package/dist/client/assets/{home-Ckz9i9hX.js → home-C8mI5nGx.js} +1 -1
- package/dist/client/assets/{hooks-y4FNzMnr.js → hooks-CNOYV2r_.js} +1 -1
- package/dist/client/assets/{icon-button-eT6FWsHz.js → icon-button-UU5k-Lwl.js} +1 -1
- package/dist/client/assets/{index-DjPOBo3H.js → index-0m514agX.js} +1 -1
- package/dist/client/assets/{index-DVEm55Ak.js → index-4DjKHdvg.js} +1 -1
- package/dist/client/assets/{index-CMWq57js.js → index-B2CN3127.js} +1 -1
- package/dist/client/assets/{index-BhpvncYH.js → index-B56UxQlQ.js} +1 -1
- package/dist/client/assets/{index-bkwORM24.js → index-B5ThEMVv.js} +1 -1
- package/dist/client/assets/{index-ClcQkcu8.js → index-BF84lJVg.js} +1 -1
- package/dist/client/assets/{index-CKT6eBt7.js → index-BTzPon2g.js} +1 -1
- package/dist/client/assets/{index-CESNu6n_.js → index-BolBI6We.js} +1 -1
- package/dist/client/assets/{index-sjAGIPtv.js → index-C-8MMckq.js} +1 -1
- package/dist/client/assets/{index-DQZsFtMU.js → index-CgyS8r2N.js} +1 -1
- package/dist/client/assets/{index-CC25Ppah.js → index-DENKcYcS.js} +2 -2
- package/dist/client/assets/{index-DhDOCrMt.js → index-FFwf6GxR.js} +1 -1
- package/dist/client/assets/{index-BawJz1J9.js → index-dgt2x4f0.js} +1 -1
- package/dist/client/assets/{index-Dn2PGa-1.js → index-lKRc-B2A.js} +1 -1
- package/dist/client/assets/{index-redirect-DA2gVoAj.js → index-redirect-Dut_a5dF.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-BKtbJar9.js → infiniteQueryObserver-C7Uln0XD.js} +1 -1
- package/dist/client/assets/{infra-billing-xtFcZesZ.js → infra-billing-Dx8uz0-w.js} +1 -1
- package/dist/client/assets/{input-DwcsciNr.js → input-Bk2HB5O3.js} +1 -1
- package/dist/client/assets/{input-BkFUax8j.js → input-DogQHywC.js} +1 -1
- package/dist/client/assets/{input-mcA88pmm.js → input-tXT-Wox5.js} +1 -1
- package/dist/client/assets/{integration-icon-DzNK1v4_.js → integration-icon-_5MBRgr_.js} +1 -1
- package/dist/client/assets/{label-5K8407_a.js → label-Cs0k-m6j.js} +1 -1
- package/dist/client/assets/{last-preview-page-BFJ4AUvo.js → last-preview-page-CenVYwZ4.js} +1 -1
- package/dist/client/assets/{layout-Cbc-ZMTn.js → layout-DBGRja19.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-CuLGH4ta.js → legacy-agents-deep-uMl26xvK.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-5ChwjO4K.js → legacy-main-redirect-CXuFuPpb.js} +1 -1
- package/dist/client/assets/{library-FuZGXdY7.js → library-DoG5Ie0E.js} +1 -1
- package/dist/client/assets/{login-BESokYtj.js → login-Wpdw88ZW.js} +1 -1
- package/dist/client/assets/{markdown-BU3lUbXy.js → markdown-C9jYeYSi.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DT5aj_bA.js → mcp-app-renderer-Daw_I7q9.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CGCjtFIL.js → mcp-oauth-DS1qelEc.js} +1 -1
- package/dist/client/assets/{members-D6d3YDya.js → members--qvirtrr.js} +1 -1
- package/dist/client/assets/{message-templates-BJgQYm2J.js → message-templates-DBH9vX_2.js} +1 -1
- package/dist/client/assets/{mini-report-page-b1QX6rLb.js → mini-report-page-3br6bU9c.js} +1 -1
- package/dist/client/assets/{mock-board-B8nkK2VT.js → mock-board-Cf_QAn39.js} +3 -3
- package/dist/client/assets/{monaco-editor-BfhKEQLl.js → monaco-editor-CNayaK1F.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BWEDudJY.js → monitoring-stats-row-DFU6tS6O.js} +1 -1
- package/dist/client/assets/{multi-select-Mgyr0yZF.js → multi-select-CDztR0_p.js} +1 -1
- package/dist/client/assets/{mustache-DlIZk22M.js → mustache-Ct1WViP7.js} +1 -1
- package/dist/client/assets/{oauth-callback-C6cn0WJr.js → oauth-callback-DtAPqnFu.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-3cLyFWDl.js → oauth-callback-ai-provider-C6aEQlcO.js} +1 -1
- package/dist/client/assets/{onboarding-6J2rn57y.js → onboarding-DJDE1VnW.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-DN1bS66D.js → optimistic-project-sidebar-views-DlzXAEvt.js} +1 -1
- package/dist/client/assets/{org-file-open-context-CxjyfiTf.js → org-file-open-context-DRCDkoQb.js} +1 -1
- package/dist/client/assets/{organization-choice-Ci76yuJO.js → organization-choice-BE49gcbV.js} +1 -1
- package/dist/client/assets/{orgs-ChszBSbG.js → orgs-CeRtpGah.js} +1 -1
- package/dist/client/assets/{page-seo-form-COrevNmR.js → page-seo-form-D5kh1HRh.js} +1 -1
- package/dist/client/assets/{pair-h-AKbDiX.js → pair-B6Hin7e9.js} +1 -1
- package/dist/client/assets/{plan-ladder-DdvajrNu.js → plan-ladder-Csr6UBjE.js} +1 -1
- package/dist/client/assets/{popover-Ckvyzpb1.js → popover-Cl4cyHKi.js} +1 -1
- package/dist/client/assets/{post-calendar-DK_KPx-Z.js → post-calendar-QJM7RYAN.js} +1 -1
- package/dist/client/assets/{post-editor-BguSWLmG.js → post-editor-CYhn95Yv.js} +1 -1
- package/dist/client/assets/{preview-content-C_A2MJh2.js → preview-content-DBjQBZrG.js} +1 -1
- package/dist/client/assets/{preview-dialog-Bpp6PBmH.js → preview-dialog-Dn_pIRa1.js} +1 -1
- package/dist/client/assets/{profile-COoSSb-C.js → profile-CQx-TmeJ.js} +1 -1
- package/dist/client/assets/{project-app-view-B-CtRlEH.js → project-app-view-jFnYk3eE.js} +1 -1
- package/dist/client/assets/{project-feed-CijFeCZm.js → project-feed-D75nxQcp.js} +1 -1
- package/dist/client/assets/{project-icon-B8aarRYC.js → project-icon-BuqbUr-x.js} +1 -1
- package/dist/client/assets/project-reports-DWm-uWJR.js +1 -0
- package/dist/client/assets/project-tasks-Duc6LSI_.js +1 -0
- package/dist/client/assets/{prompts-DtZMitBK.js → prompts-B5rwZV4c.js} +1 -1
- package/dist/client/assets/record-editor-C-E7zbTM.js +1 -0
- package/dist/client/assets/{redirect-editor-d9lKn-Hk.js → redirect-editor-B84TNvjI.js} +1 -1
- package/dist/client/assets/{reports-w3F-AXn2.js → reports-D-yZ-Wc2.js} +2 -2
- package/dist/client/assets/{reports-aVRaDDaG.css → reports-Dl0n8WK0.css} +1 -1
- package/dist/client/assets/{reports-onboarding-CRlCaHnm.js → reports-onboarding-DGhv8XIz.js} +1 -1
- package/dist/client/assets/{reports-tab-BKjilIxh.js → reports-tab-BVMgFUe2.js} +2 -2
- package/dist/client/assets/reports-v7crByHk.js +1 -0
- package/dist/client/assets/{repositories-CPDrDXOZ.js → repositories-DiGHrL7S.js} +1 -1
- package/dist/client/assets/{repository-import-picker-DgRDvroV.js → repository-import-picker-CWcaqZRA.js} +1 -1
- package/dist/client/assets/{repository-picker-DJ0Bq0Gn.js → repository-picker-CRivKzj4.js} +1 -1
- package/dist/client/assets/{require-capability-LrdDjhZ1.js → require-capability-C7u7jp1-.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DxuleY4O.js → required-auth-layout-CwdBIPoJ.js} +1 -1
- package/dist/client/assets/{reset-password-CviYfK6_.js → reset-password-BHgwES8v.js} +1 -1
- package/dist/client/assets/{resizable-DI9TRgqq.js → resizable-DIEei5Nc.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-DXJnhSrQ.js → resolve-tab-icon-BUARGywX.js} +1 -1
- package/dist/client/assets/{review-settings-B9NDOqi3.js → review-settings-zEeQ7BQa.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-CGgVTmqZ.js → rich-text-link-control-DMdnHqKK.js} +1 -1
- package/dist/client/assets/{roles-DD9S2BWe.js → roles-fEn4faea.js} +1 -1
- package/dist/client/assets/{route-B_khi6wn.js → route-BjIc1ieH.js} +1 -1
- package/dist/client/assets/{route-Cd4OR2Vk.js → route-DvW7i0hq.js} +1 -1
- package/dist/client/assets/{route-C2cWZSDL.js → route-bTDvHjba.js} +1 -1
- package/dist/client/assets/{route-page-header-C3phk_gY.js → route-page-header-Xg5aJJ8E.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-CqnIW6eK.js → runnable-block-editor-DkZlr_sK.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-DQzttex0.js → sandbox-lifecycle-context-BDoJSb72.js} +1 -1
- package/dist/client/assets/{schema-DW2eCFm-.js → schema--kermd7v.js} +1 -1
- package/dist/client/assets/{scroll-area-CRSx-oF3.js → scroll-area-BixZeGr6.js} +1 -1
- package/dist/client/assets/{search-input-DZFOIFWl.js → search-input-CtJ3GoHi.js} +1 -1
- package/dist/client/assets/{search-toggle-C8zsunL3.js → search-toggle-T2SJkj_f.js} +1 -1
- package/dist/client/assets/{secret-picker-BSKOhI0I.js → secret-picker-CgBKoFOW.js} +1 -1
- package/dist/client/assets/{secrets-DBJKBNLw.js → secrets-BZ-0w0FL.js} +1 -1
- package/dist/client/assets/{sections-editor-DZc2rx0-.js → sections-editor-N3f4thFM.js} +1 -1
- package/dist/client/assets/{select-Cfsqli3Z.js → select-h9MChHy3.js} +1 -1
- package/dist/client/assets/{select-model-CyT9vd4S.js → select-model-D1s0B-4a.js} +1 -1
- package/dist/client/assets/{seo-editor-DGGq3jmD.js → seo-editor-CVXbGA0g.js} +1 -1
- package/dist/client/assets/{separator-BSrhq7Cs.js → separator-CaMo_8bZ.js} +1 -1
- package/dist/client/assets/{settings-tab-Jt6e4-NS.js → settings-tab-Cx5LuXK6.js} +1 -1
- package/dist/client/assets/{sheet-BhcdHJA0.js → sheet-Dw1ItaI1.js} +1 -1
- package/dist/client/assets/{shell-layout-Bq2laVk4.js → shell-layout-hfd-Rsky.js} +1 -1
- package/dist/client/assets/{skill-preview-XcnB5GU4.js → skill-preview-kh6jk1N1.js} +1 -1
- package/dist/client/assets/{skills-Bz3eOc9s.js → skills-BQXTPxai.js} +1 -1
- package/dist/client/assets/{sso-w4y2xRSU.js → sso-DFThiQv2.js} +1 -1
- package/dist/client/assets/{suggestion-DpmAiVaO.js → suggestion-C-l_m-Iq.js} +1 -1
- package/dist/client/assets/{switch-EEYQU2u1.js → switch-DDOTcJub.js} +1 -1
- package/dist/client/assets/{synced-repos-DUfGHrhe.js → synced-repos-BiEf25CV.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-CZyIWS8W.js → tab-icon-glyph-CCDSTXNA.js} +1 -1
- package/dist/client/assets/{table-CvgH2_1o.js → table-B9DVZyKq.js} +1 -1
- package/dist/client/assets/{tabs-B6noAKK3.js → tabs-C_iZ_d9V.js} +1 -1
- package/dist/client/assets/{task-board-DQdrQPfw.js → task-board-BobaVaho.js} +1 -1
- package/dist/client/assets/{task-route-CuzZF1yz.js → task-route-Dnr518OS.js} +1 -1
- package/dist/client/assets/{task-status-SfODZErT.js → task-status-D3uvwn5F.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-CerK1Pau.js → taskboard-analytics-CiuUL9ZA.js} +1 -1
- package/dist/client/assets/tasks-CIUu0GeD.js +1 -0
- package/dist/client/assets/{tasks-D-ll0tka.js → tasks-t-DjWmHg.js} +1 -1
- package/dist/client/assets/{textarea-Czh9V7Yz.js → textarea-DFxboHvf.js} +1 -1
- package/dist/client/assets/{thread-analytics-jaTbSvK6.js → thread-analytics-CWflQv2z.js} +1 -1
- package/dist/client/assets/{thread-button-1Q3JXQEU.js → thread-button-PSWdIC9E.js} +1 -1
- package/dist/client/assets/{thread-intent-CEfA_P9I.js → thread-intent-Dt8gew3X.js} +1 -1
- package/dist/client/assets/{thread-route-uijiMPxh.js → thread-route-D-8nn5UF.js} +1 -1
- package/dist/client/assets/{thread-route-Bqw7sU0F.js → thread-route-RSNRkwvI.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-C9l7h07l.js → thread-sheet-body-CH_NXDCT.js} +1 -1
- package/dist/client/assets/{toggle-group-lq2B3qIc.js → toggle-group-DlVPleht.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-DOWuqRsT.js → toolbar-icon-button-1g38Z4nR.js} +1 -1
- package/dist/client/assets/{tooltip-CxCpd2vh.js → tooltip-DIRtUFAS.js} +1 -1
- package/dist/client/assets/{track-Dhm24-m4.js → track-BakI9k8V.js} +1 -1
- package/dist/client/assets/{types-B6rztgnY.js → types-D6O0nIDe.js} +1 -1
- package/dist/client/assets/{usage-stats-BFEJJHEo.js → usage-stats-DXttBGal.js} +1 -1
- package/dist/client/assets/{use-ai-providers-B23SXI_f.js → use-ai-providers-CDQwEgy1.js} +1 -1
- package/dist/client/assets/{use-automations-D-adRU5z.js → use-automations-DreCy0ml.js} +1 -1
- package/dist/client/assets/{use-autosave-Dc8uh5nF.js → use-autosave-DxbcFucd.js} +1 -1
- package/dist/client/assets/{use-connect-companion-JFx8RLXa.js → use-connect-companion-CEulwd_N.js} +1 -1
- package/dist/client/assets/{use-connection-B9c3iEps.js → use-connection-B1oChjwE.js} +1 -1
- package/dist/client/assets/{use-copy-C57femQY.js → use-copy-C2Dqd69S.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Dfs-9sda.js → use-create-virtual-mcp-CvskdWa9.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BFb3ULJS.js → use-date-fns-locale-D-_20LiT.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Dco5Jt9P.js → use-debounced-autosave-DOvdbxcW.js} +1 -1
- package/dist/client/assets/{use-debounced-value-IfXb0kJG.js → use-debounced-value-ftnFbUev.js} +1 -1
- package/dist/client/assets/{use-deco-credits-DNa0dEA5.js → use-deco-credits-Ca9AZth-.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DyDz5Dvh.js → use-decopilot-events-BZXzIc0_.js} +1 -1
- package/dist/client/assets/{use-delete-connection-Du2Nx9s-.js → use-delete-connection-CXR2Hk99.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-D6zDzsS_.js → use-deployment-admin-BIt-gPh7.js} +1 -1
- package/dist/client/assets/{use-entitlements-R7iGGl1k.js → use-entitlements-CkDkMj8V.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-UqkQUKSb.js → use-fast-preview-draft-url-Dzb173Hu.js} +1 -1
- package/dist/client/assets/{use-file-configs-Cdbct8Cf.js → use-file-configs-DcNK_YN2.js} +1 -1
- package/dist/client/assets/{use-in-settings-CH61l7dC.js → use-in-settings-C437t0IU.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CyOQA4SB.js → use-infinite-scroll-DUw2cdzz.js} +1 -1
- package/dist/client/assets/{use-join-requests-CPo5qDn_.js → use-join-requests-CAnj2bpz.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-DT72lles.js → use-main-panel-tabs-CZ5Ai-Nm.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CE4mQood.js → use-mcp-auth-status-ClDyNzTM.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CgA0k7AX.js → use-mcp-client-CU_FCTCe.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts--gNDdjf0.js → use-mcp-prompts-BXny2QK-.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DjC5fBeS.js → use-mcp-tools-oFgxTj8x.js} +1 -1
- package/dist/client/assets/{use-members-i2T2it_v.js → use-members-i7C6Z140.js} +1 -1
- package/dist/client/assets/{use-mobile-DNQy-neC.js → use-mobile-Cbvk9fOz.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BmpybU3_.js → use-navigate-to-agent-DyTF0Lyf.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-jz-QPVzs.js → use-open-billing-url-_aC1zwHG.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-B7ZtWQAU.js → use-org-auth-client-CfKmGrN8.js} +1 -1
- package/dist/client/assets/{use-org-fs-Dax61xWP.js → use-org-fs-d-BnDdhq.js} +1 -1
- package/dist/client/assets/{use-org-sso-0Z0wHR7c.js → use-org-sso-ZTjMpX5r.js} +1 -1
- package/dist/client/assets/{use-organization-roles-OVZBs-M_.js → use-organization-roles-DZlg8Hfp.js} +1 -1
- package/dist/client/assets/{use-organization-settings-dzIa476E.js → use-organization-settings-CMA9ND7U.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-Dl11oG8L.js → use-panel-navigate-BWxDL_y0.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-pXoLbAJi.js → use-project-native-view-presence-B0diskSL.js} +1 -1
- package/dist/client/assets/{use-project-scope-eV1RUVZG.js → use-project-scope-D9Fk-jYc.js} +1 -1
- package/dist/client/assets/{use-releases-D4jayvGP.js → use-releases-BayG0lgk.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-C7fMxKgO.js → use-reports-diagnostic-DUPyvMba.js} +1 -1
- package/dist/client/assets/{use-route-default-main-CXl47PXA.js → use-route-default-main-BiN9W2_-.js} +1 -1
- package/dist/client/assets/{use-secrets-CvGXZI7J.js → use-secrets-BAZmLm_N.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-iip3gtjU.js → use-section-preview-base-C5zOiMA7.js} +1 -1
- package/dist/client/assets/{use-session-runtime-CXsIHSqC.js → use-session-runtime-D80yRYIq.js} +1 -1
- package/dist/client/assets/{use-tags-DaYz9bo1.js → use-tags-BDgIyx9p.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-DEETXgb8.js → use-task-board-analytics-D5ljpbmD.js} +1 -1
- package/dist/client/assets/{use-task-metadata-B50R7YVb.js → use-task-metadata-eDRjASCy.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-B7GKRETB.js → use-thread-analytics-DUillNwT.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-a13sDbFX.js → use-thread-outputs-CYRX7vXz.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CDAUj4PY.js → use-virtual-mcp-DxRgkAmH.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-laZpEz7Z.js +1 -0
- package/dist/client/assets/{useQueries-qsAfW5MY.js → useQueries-C35tOi1p.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CHytIa74.js +1 -0
- package/dist/client/assets/{users-Dg0Pugfo.js → users-Bvd481dh.js} +1 -1
- package/dist/client/assets/{utils-C77-XjSJ.js → utils-DaLEeIqN.js} +1 -1
- package/dist/client/assets/{variant-calendar-Bf5XWw8C.js → variant-calendar-Yxx1thM6.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-W93uDCwe.js → variant-matcher-override-Bd04-QVj.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DceLwxgk.js → view-mode-toggle-CQjVVvAT.js} +1 -1
- package/dist/client/assets/{virtual-mcp-DhabdkeJ.js → virtual-mcp-D5GtCHWU.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-BpLFU4fH.js +0 -1
- package/dist/client/assets/agent-deck-idtinKR_.js +0 -1
- package/dist/client/assets/agent-library-file-MlJkgMqI.js +0 -1
- package/dist/client/assets/agent-settings-CrMnMoYM.js +0 -1
- package/dist/client/assets/agent-site-editor-code-D8cBK_Ux.js +0 -2
- package/dist/client/assets/agent-view-Bohb1wKC.js +0 -1
- package/dist/client/assets/api-keys-CL0QJc9S.js +0 -1
- package/dist/client/assets/app-editor-CR1c2RpF.js +0 -1
- package/dist/client/assets/project-reports-DM8FxeCU.js +0 -1
- package/dist/client/assets/project-tasks-y98lccVT.js +0 -1
- package/dist/client/assets/record-editor-eoqHGqFA.js +0 -1
- package/dist/client/assets/reports-B2pQ333W.js +0 -1
- package/dist/client/assets/tasks-gcF8REwt.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DW7bCHpf.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DF4BukrQ.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -3703,7 +3703,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3703
3703
|
${J.join(`
|
|
3704
3704
|
`)}`:X}function bh6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
3705
3705
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var _48=200,Rh6=12,Mh6,Vh6=300,mk0=3;var QU1=D(()=>{iZ();D8();ck0();Mh6={aheadBy:0,behindBy:0,files:[]}});function fh6($){if(!$||$.includes(".."))return!1;return xh6.test($)}function b48($){return yh6.includes($)}function YU1($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!fh6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function XU1($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var xh6,yh6;var x48=D(()=>{xh6=/^[\w./@-]+$/;yh6=["vtex/loaders/intelligentSearch/productList.ts","vtex/loaders/categories/tree.ts"]});function Z40($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function y48($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new zE(j7);let J=await Zj($.storage,X,Y);if(J&&await gB($.storage,J)){let F=await aF($,J,{forceRefresh:!0}).catch((U)=>{throw new zE(U instanceof Error?U.message:j7)});await f48($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new zE("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await Pc({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:j7;throw new zE(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await eF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=aU$(F instanceof Error?F.message:String(F));throw U?new zE(N):F});await f48($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function f48($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=wi($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await Rj(K,gh6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var gh6=10485760,zE;var JU1=D(()=>{WW();vk0();_00();gW0();qe();iZ();zE=class zE extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function uh6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!hh6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Fy($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(lh6)])}async function mh6($,Z){let Q=$.var.studioContext,Y=WU(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=fx(G?.metadata?.runtime);if(W)return W;let K=M20(Z.virtualMcpMetadata),H=K==="cms"?await fF1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)v00(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function dh6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await IX($.var.studioContext)}catch{return null}}function Uy($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Ai($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=Z40(Z,Q);if(!X)throw new y0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=K0(Y);return jc(Y,J.id,X)}function WU1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=EF$(Z);if(Y!==void 0)return $.json({error:Q},429,{...$9,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof t6)return $.json({error:Q},409,$9);let X=UW(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,$9)}return $.json({error:Q},502,$9)}async function GU1($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function l48($){try{let Z=await Ai($),Q=await dk0(Z,$.get("vmClaim").branch);return $.json(Q,200,$9)}catch(Z){return WU1($,Z)}}function Q40($,Z){let Y=(nk0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return nk0.set($,X),X.finally(()=>{if(nk0.get($)===X)nk0.delete($)}),Y}async function $Q($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,$9);let Y=Q?.runner??Uy($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.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",...$9}})}}let O=await B.text(),L=Q?.redactRepoDir?ih6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...$9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function ih6($){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 tk0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function ph6($){return c48.includes($)}var hh6,g48=524288,h48=65536,lh6=1e4,u48=2000,ch6,nk0,$9,c48,m48=()=>{let $=new Q1;$.use("/:virtualMcpId/:branch/*",ch6),$.post("/:virtualMcpId/:branch/write",(Q)=>$Q(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>$Q(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>$Q(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>$Q(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>$Q(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>$Q(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>$Q(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:Fy(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return $Q(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return $Q(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>$Q(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>$Q(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!ph6(Y))return Q.json({error:`step must be one of: ${c48.join(", ")}`},400);let X=Q.get("vmClaim"),J=await fF1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await dh6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,$9);if(Y==="start"){let G=K0(Q.var.studioContext),W=Zm(X.virtualMcpMetadata);try{await A20({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return $Q(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return bO(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return u88(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return l48(Q);return Z(Q)});let Z=(Q)=>$Q(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(u48)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return l48(Q);return $Q(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(u48)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await Ai(Q),G=await ik0(J,Y.branch,X.base);return Q.json(G,200,$9)}catch(X){return WU1(Q,X)}return $Q(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,$9);let Y=Uy(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return Q40(X,async()=>{try{await yF1(W,Y,X);let K=Z40(J,G);if(K)await y48(W,Y,X,K)}catch(K){if(K instanceof zE)return Q.json({error:K.message},403,$9);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,$9)}return $Q(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,$9);try{let G=await Ai(Q);return await v48(G,Y.branch,J),Q.json({ok:!0},200,$9)}catch(G){let W=UW(G)===409||G instanceof t6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,$9)}});return Q40(Y.claimName,()=>$Q(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Ai(Q),H=W.base??await K.getDefaultBranch();return await pk0(K,Y.branch,H),Q.json({ok:!0},200,$9)}catch(W){return WU1(Q,W)}});let X=Uy(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return Q40(J,async()=>{try{await yF1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,$9)}return $Q(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",I5({maxSize:g48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Uy(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=uF1(F)&&N?[F,U]:X?await Promise.all([tk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),tk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ai(Q);return Promise.all([dk0(w,Y.branch),ik0(w,Y.branch)])})();await hK(K,K0(K).id,"suggesting a commit message");let L=await i88(K,B,O);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",I5({maxSize:g48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Uy(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=uF1(F)&&N?[F,U]:X?await Promise.all([tk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),tk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ai(Q);return Promise.all([dk0(w,Y.branch),ik0(w,Y.branch)])})();await hK(K,K0(K).id,"judging whether a change needs review");let L=await n88(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Uy(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return GU1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",I5({maxSize:h48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Uy(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=YU1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=XU1(J,W.resolveType);return GU1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",I5({maxSize:h48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let{runner:Y,claimName:X,virtualMcpMetadata:J}=Q.get("vmClaim"),G;try{G=Y?await Y.getPreviewUrl(X):Qm(J)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W;try{W=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!W||typeof W!=="object"||Array.isArray(W))return Q.json({error:"Invalid JSON body"},400);let K=YU1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!b48(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=XU1(G,K.resolveType);return GU1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var d48=D(()=>{G8();fW();Li();xF1();k00();y88();jW();Ym();g88();QH();gF();h88();l88();Q51();C00();mF1();t88();iZ();w5();QU1();x48();q20();JU1();hh6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;ch6=_k0(async($,Z)=>{let Q=$.var.studioContext;try{a(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=p0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=K0(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{uh6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=re({orgId:X.id,virtualMcpId:J,branch:G}),H=await V41(Q,G),F=k41(H,Y),U=f88({userId:F,projectRef:K}),N=W.metadata??null,B=await mh6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await IX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});nk0=new Map;$9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};c48=["clone","install","start"]});function i48($,Z,Q){let Y=KU1.get($);if(!Y)Y={pending:null,running:!1},KU1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)th6($,Y);return J}async function th6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await oh6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)KU1.delete($)}}async function oh6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Pi(Z,Q),W=await Z.listDecofileEntries(G,Y),K=eF1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=$U1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3706
|
-
`;await V48(Z.repo,L);let w=O[0]??`${lk0(Y)}/${pF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of $U1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await k48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:rh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=nh6-1)throw N;await i$(QQ(2000,200,J,2,0.5))}}}function rh6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return s81(Y,$.deps.coAuthor)}var nh6=3,KU1;var p48=D(()=>{FA0();xk0();T6();D8();iZ();ck0();KU1=new Map});import{createHmac as n48,randomBytes as sh6,timingSafeEqual as ah6}from"crypto";function t48(){if(ok0)return ok0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ok0=$?Buffer.from($):sh6(32),ok0}function HU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+eh6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=n48("sha256",t48()).update(Y).digest("base64url");return`${Y}.${X}`}function o48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(n48("sha256",t48()).update(Y).digest("base64url"));if(X.length!==J.length||!ah6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var eh6=21600000,ok0=null;var r48=D(()=>{F$()});function rk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function $u6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=rk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function s48($){let Z;try{Z=rk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=$u6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=rk0(G),K=W&&rk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ti}from"zod";function Qu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Zu6.test($)}function Q68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return jc($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Y68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",Z68),$.use("/:virtualMcpId/:branch/*",Z68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await S48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(s48(X.decofile),200,{...J,"content-type":"application/json"});let G=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Q68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Xu6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Ju6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{bk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(iF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await i48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:wi(Y)},J),K=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Q68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await pk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return X40(Z,Y)}}),$}var Zu6,a48=500,e48=1048576,$68=1024,Yu6=8388608,Xu6,Ju6,Z68;var X68=D(()=>{q20();xk0();G8();fW();xF1();vk0();JU1();iZ();p48();r48();QU1();ck0();gF();Zu6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Xu6=I5({maxSize:Yu6,onError:($)=>$.json({error:"Payload too large"},413)}),Ju6=Ti.object({set:Ti.record(Ti.string(),Ti.unknown()).optional(),delete:Ti.array(Ti.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=a48,{message:`Patch cannot touch more than ${a48} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=e48),{message:`Each block must be at most ${e48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=$68),{message:`Each block key must be at most ${$68} characters`}),Z68=_k0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Qu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!o48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Qm(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var J68=($)=>{let Z=new Q1;if(Z.use("*",td),Z.use("*",_e$),Z.route("/",lV0()),Z.route("/",O08()),Z.route("/",$08()),Z.route("/",T88()),Z.route("/",D88()),Z.route("/",P88()),Z.route("/",w88()),Z.route("/",kk0()),Z.route("/tools",S88()),Z.route("/",I88()),Z.route("/",n$8({kvStorage:$.kvStorage})),Z.route("/",i$8()),Z.route("/fs",G88({getConnection:$.getNatsConnection})),Z.route("/sandbox",m48()),Z.route("/decofile",Y68()),Z.route("/",N88()),Z.route("/",K88()),Z.route("/deco-sites",mV0()),Z.route("/hosting",me$()),Z.route("/monitor",re$()),Z.route("/sso",fV0()),Z.route("/",Sk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ge$()),$.mountDevAssets)Z.route("/dev-assets",nV0({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("/",gr$()),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",F88()),Z.route("/mcp",vR0()),Z.route("/mcp/self",qk0()),Z.route("/mcp",fR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var G68=D(()=>{G8();ve$();RV0();he$();QH1();de$();se$();tV0();af();sK1();WH1();p$8();t$8();W88();H88();u10();iK1();yR0();MF1();U88();B88();L88();j88();kF1();R88();V88();SF1();C88();CF1();bR0();d48();X68()});function Gu6($){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 Wu6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},W68=()=>{let $=new Q1;return $.use("*",Wu6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Gu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var K68=D(()=>{G8();F$();kI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function wu6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function ju6($,Z,Q){try{return JSON.parse($)}catch{throw new U68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Eu6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:ju6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function zu6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function Pu6($){if(!$)return;return{openai:{response_format:$}}}function Au6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function H68($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function F68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Ku6=256,Hu6,Fu6,Uu6,Nu6,Bu6,Ou6,Du6,Lu6,U68,N68,B68;var O68=D(()=>{v4();G8();Li();NH();Hu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Fu6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Uu6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Fu6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Nu6=b1.object({type:b1.literal("text")}),Bu6=b1.object({type:b1.literal("json_object")}),Ou6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Du6=b1.union([Nu6,Bu6,Ou6]),Lu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Uu6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Hu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Du6.optional(),user:b1.string().optional()});U68=class U68 extends Error{constructor($){super($);this.name="MessageConversionError"}};N68=new Q1;N68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Lu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=wu6(J.model);if(!G)return $.json(iU("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xz(E.providerId));if(!j)return $.json(iU("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Eu6(J.messages),N=J.tools?zu6(J.tools):void 0,B=Pu6(J.response_format),O=Au6(),L=Math.floor(Date.now()/1000);if(J.stream)return bO($,async(w)=>{let j=H68(F,U,N,J,B,$.req.raw.signal);try{let E=$m(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Ku6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:F68(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 A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=H68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:F68(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});B68=N68});function Tu6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function D68(){let $=new Q1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.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","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(la(U)!==J)continue;if(!Tu6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var L68=D(()=>{G8();fG()});var j68;var w68=D(()=>{j68={name:"decocms",version:"4.403.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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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","@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:"^7.0.107","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 Mu6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??qu6}}var E68,qu6="https://ph.studio.decocms.com",z68;var P68=D(()=>{G8();Fr();Zf();E9();F$();CK1();w68();E68=new Q1;E68.get("/",($)=>{let Z={version:j68.version,theme:H$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:lc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Va$(),posthog:Mu6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:pO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});z68=E68});function Ny($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FU1($){return(Ny($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function A68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Ny($))}&sz=${Z}`}function Iu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function T68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Iu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as L$}from"zod";var Vu6,R68;var q68=D(()=>{Vu6=L$.object({check_id:L$.string(),title:L$.string(),description:L$.string().optional(),impact:L$.string().optional(),why:L$.string().optional(),category:L$.string(),severity:L$.string(),value_band:L$.string().optional(),value_driver:L$.string().optional(),controllability:L$.string().optional(),pages:L$.array(L$.string()),tasks:L$.array(L$.string()),evidence:L$.string(),sample_scope:L$.string().optional(),sources:L$.array(L$.string())}),R68=L$.object({domain:L$.string(),brand:L$.string(),favicon:L$.string().optional(),scanned_at:L$.string().nullable(),lang:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),totals:L$.object({measured:L$.number(),registry_total:L$.number(),passed:L$.number(),failed:L$.number(),blocked:L$.number()}),buckets:L$.array(L$.object({id:L$.enum(["critical","important","worth"]),label:L$.string(),items:L$.array(Vu6)})),passing:L$.object({count:L$.number(),items:L$.array(L$.object({check_id:L$.string(),title:L$.string()}))}),not_measured:L$.object({count:L$.number(),groups:L$.array(L$.object({reason:L$.string(),label:L$.string(),count:L$.number(),checks:L$.array(L$.string())}))}),categories:L$.array(L$.object({key:L$.string(),label:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),pass:L$.number(),fail:L$.number()})),screenshots:L$.array(L$.object({url:L$.string(),page_type:L$.string().optional(),viewport:L$.enum(["desktop","mobile"]),image_url:L$.string()}))})});function M68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function sk0($,Z={}){let Q=await fetch(M68($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return R68.parse(await Q.json())}async function I68($,Z={}){let Q=await fetch(M68($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var UU1=D(()=>{q68();ww()});import{join as V68}from"path";async function Su6($){try{let Z=await sk0($,{signal:AbortSignal.timeout(ku6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||FU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function Cu6($,Z){let Q=Ny($),Y=Z?.brand?.trim()||FU1(Q),X=A68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=T68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
|
|
3706
|
+
`;await V48(Z.repo,L);let w=O[0]??`${lk0(Y)}/${pF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of $U1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await k48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:rh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=nh6-1)throw N;await i$(QQ(2000,200,J,2,0.5))}}}function rh6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return s81(Y,$.deps.coAuthor)}var nh6=3,KU1;var p48=D(()=>{FA0();xk0();T6();D8();iZ();ck0();KU1=new Map});import{createHmac as n48,randomBytes as sh6,timingSafeEqual as ah6}from"crypto";function t48(){if(ok0)return ok0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ok0=$?Buffer.from($):sh6(32),ok0}function HU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+eh6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=n48("sha256",t48()).update(Y).digest("base64url");return`${Y}.${X}`}function o48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(n48("sha256",t48()).update(Y).digest("base64url"));if(X.length!==J.length||!ah6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var eh6=21600000,ok0=null;var r48=D(()=>{F$()});function rk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function $u6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=rk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function s48($){let Z;try{Z=rk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=$u6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=rk0(G),K=W&&rk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ti}from"zod";function Qu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Zu6.test($)}function Q68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return jc($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Y68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",Z68),$.use("/:virtualMcpId/:branch/*",Z68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await S48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(s48(X.decofile),200,{...J,"content-type":"application/json"});let G=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Q68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Xu6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Ju6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{bk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(iF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await i48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:wi(Y)},J),K=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Q68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await pk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return X40(Z,Y)}}),$}var Zu6,a48=500,e48=1048576,$68=1024,Yu6=8388608,Xu6,Ju6,Z68;var X68=D(()=>{q20();xk0();G8();fW();xF1();vk0();JU1();iZ();p48();r48();QU1();ck0();gF();Zu6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Xu6=I5({maxSize:Yu6,onError:($)=>$.json({error:"Payload too large"},413)}),Ju6=Ti.object({set:Ti.record(Ti.string(),Ti.unknown()).optional(),delete:Ti.array(Ti.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=a48,{message:`Patch cannot touch more than ${a48} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=e48),{message:`Each block must be at most ${e48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=$68),{message:`Each block key must be at most ${$68} characters`}),Z68=_k0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Qu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!o48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Qm(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var J68=($)=>{let Z=new Q1;if(Z.use("*",td),Z.use("*",_e$),Z.route("/",lV0()),Z.route("/",O08()),Z.route("/",$08()),Z.route("/",T88()),Z.route("/",D88()),Z.route("/",P88()),Z.route("/",w88()),Z.route("/",kk0()),Z.route("/tools",S88()),Z.route("/",I88()),Z.route("/",n$8({kvStorage:$.kvStorage})),Z.route("/",i$8()),Z.route("/fs",G88({getConnection:$.getNatsConnection})),Z.route("/sandbox",m48()),Z.route("/decofile",Y68()),Z.route("/",N88()),Z.route("/",K88()),Z.route("/deco-sites",mV0()),Z.route("/hosting",me$()),Z.route("/monitor",re$()),Z.route("/sso",fV0()),Z.route("/",Sk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ge$()),$.mountDevAssets)Z.route("/dev-assets",nV0({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("/",gr$()),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",F88()),Z.route("/mcp",vR0()),Z.route("/mcp/self",qk0()),Z.route("/mcp",fR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var G68=D(()=>{G8();ve$();RV0();he$();QH1();de$();se$();tV0();af();sK1();WH1();p$8();t$8();W88();H88();u10();iK1();yR0();MF1();U88();B88();L88();j88();kF1();R88();V88();SF1();C88();CF1();bR0();d48();X68()});function Gu6($){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 Wu6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},W68=()=>{let $=new Q1;return $.use("*",Wu6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Gu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var K68=D(()=>{G8();F$();kI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function wu6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function ju6($,Z,Q){try{return JSON.parse($)}catch{throw new U68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Eu6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:ju6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function zu6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function Pu6($){if(!$)return;return{openai:{response_format:$}}}function Au6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function H68($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function F68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Ku6=256,Hu6,Fu6,Uu6,Nu6,Bu6,Ou6,Du6,Lu6,U68,N68,B68;var O68=D(()=>{v4();G8();Li();NH();Hu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Fu6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Uu6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Fu6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Nu6=b1.object({type:b1.literal("text")}),Bu6=b1.object({type:b1.literal("json_object")}),Ou6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Du6=b1.union([Nu6,Bu6,Ou6]),Lu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Uu6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Hu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Du6.optional(),user:b1.string().optional()});U68=class U68 extends Error{constructor($){super($);this.name="MessageConversionError"}};N68=new Q1;N68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Lu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=wu6(J.model);if(!G)return $.json(iU("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>xz(E.providerId));if(!j)return $.json(iU("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Eu6(J.messages),N=J.tools?zu6(J.tools):void 0,B=Pu6(J.response_format),O=Au6(),L=Math.floor(Date.now()/1000);if(J.stream)return bO($,async(w)=>{let j=H68(F,U,N,J,B,$.req.raw.signal);try{let E=$m(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Ku6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:F68(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 A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=H68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:F68(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});B68=N68});function Tu6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function D68(){let $=new Q1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.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","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(la(U)!==J)continue;if(!Tu6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var L68=D(()=>{G8();fG()});var j68;var w68=D(()=>{j68={name:"decocms",version:"4.403.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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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","@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:"^7.0.107","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 Mu6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??qu6}}var E68,qu6="https://ph.studio.decocms.com",z68;var P68=D(()=>{G8();Fr();Zf();E9();F$();CK1();w68();E68=new Q1;E68.get("/",($)=>{let Z={version:j68.version,theme:H$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:lc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Va$(),posthog:Mu6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:pO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});z68=E68});function Ny($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FU1($){return(Ny($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function A68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Ny($))}&sz=${Z}`}function Iu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function T68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Iu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as L$}from"zod";var Vu6,R68;var q68=D(()=>{Vu6=L$.object({check_id:L$.string(),title:L$.string(),description:L$.string().optional(),impact:L$.string().optional(),why:L$.string().optional(),category:L$.string(),severity:L$.string(),value_band:L$.string().optional(),value_driver:L$.string().optional(),controllability:L$.string().optional(),pages:L$.array(L$.string()),tasks:L$.array(L$.string()),evidence:L$.string(),sample_scope:L$.string().optional(),sources:L$.array(L$.string())}),R68=L$.object({domain:L$.string(),brand:L$.string(),favicon:L$.string().optional(),scanned_at:L$.string().nullable(),lang:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),totals:L$.object({measured:L$.number(),registry_total:L$.number(),passed:L$.number(),failed:L$.number(),blocked:L$.number()}),buckets:L$.array(L$.object({id:L$.enum(["critical","important","worth"]),label:L$.string(),items:L$.array(Vu6)})),passing:L$.object({count:L$.number(),items:L$.array(L$.object({check_id:L$.string(),title:L$.string()}))}),not_measured:L$.object({count:L$.number(),groups:L$.array(L$.object({reason:L$.string(),label:L$.string(),count:L$.number(),checks:L$.array(L$.string())}))}),categories:L$.array(L$.object({key:L$.string(),label:L$.string(),score:L$.number().nullable(),band:L$.string().nullable(),pass:L$.number(),fail:L$.number()})),screenshots:L$.array(L$.object({url:L$.string(),page_type:L$.string().optional(),viewport:L$.enum(["desktop","mobile"]),image_url:L$.string()}))})});function M68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function sk0($,Z={}){let Q=await fetch(M68($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return R68.parse(await Q.json())}async function I68($,Z={}){let Q=await fetch(M68($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var UU1=D(()=>{q68();ww()});import{join as V68}from"path";async function Su6($){try{let Z=await sk0($,{signal:AbortSignal.timeout(ku6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||FU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function Cu6($,Z){let Q=Ny($),Y=Z?.brand?.trim()||FU1(Q),X=A68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=T68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
|
|
3707
3707
|
`)}function _u6($,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}
|
|
3708
3708
|
</head>`)}function k68($){let Z=new Q1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Ny(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(V68($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(vu6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=Ny(Q.req.param("file").replace(/\.md$/,""));try{let X=await I68(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(bu6)});if(X===null)return Q.text("Deco Score not found",404);return Q.body(X,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?V68($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await Su6(Ny(Y)),K=Cu6(Y,W);return Q.html(_u6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var ku6=2500,vu6=1e4,bu6=1e4;var S68=D(()=>{G8();ww();UU1();F$()});function ak0($,Z){return fetch(`${uK({})}${$}`,Z)}async function xu6($,Z){let Q=await sk0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function yu6($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:Y}}var fu6,fO,C68=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},_68;var v68=D(()=>{G8();hG();ww();UU1();fu6=new Set(["complete","errored","terminated","unknown"]);fO=new Q1;fO.use("*",async($,Z)=>{let Q=await C8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});fO.use("/link-token/*",C68);fO.use("/suggest",C68);fO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await xu6(Z,Q))}catch{return $.json({error:"report read failed"},502)}});fO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=yu6(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await ak0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${EA({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.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)}});fO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ak0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${EA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:fu6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});fO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ak0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});fO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ak0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});_68=fO});var gu6=1048576,NU1;var b68=D(()=>{G8();fW();F$();LK1();NU1=new Q1;NU1.post("/webhook",I5({maxSize:gu6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=E0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!ls$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=cs$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await ms$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as hu6}from"crypto";function cu6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return hu6(Buffer.from(X),Buffer.from(Y))}function mu6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function x68($){let Z=new Q1;return Z.post("/webhook",I5({maxSize:uu6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!cu6(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!lu6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await T41())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=mu6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await du6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function du6($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await vV$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var uu6=5242880,lu6;var f68=D(()=>{G8();fW();QH();z7();lu6=new Set(["check_suite","issue_comment"])});function y68($){let Z=new RO($.db,new FG($.encryptionKey)),Q=new Q1;return Q.get("/attachments/:token",async(Y)=>{let X=tM$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new _Q(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var g68=D(()=>{G8();vz();V51();Vj()});function h68($){let Z=new RO($.db,new FG($.encryptionKey));async function Q(X,J){let G=Ln$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await PW($.db,W.organizationId);if(!K)return;if(await _I0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new Q1;return Y.post("/webhook/:secret",I5({maxSize:iu6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var iu6=1048576;var u68=D(()=>{G8();fW();vz();vI0();ox()});import{DBOS as ek0,SchedulerMode as pu6}from"@dbos-inc/dbos-sdk";function c68($){OU1=$}function m68(){if(!OU1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return OU1}function d68(){let $=m68();return new RO($.db,new FG($.encryptionKey))}async function ou6($,Z){try{let Q=await d68().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await PW(m68().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new _Q(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${l68}m"`,K=0,H;for(let F=0;F<tu6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=wn$(N,N.changelog?.histories??[],Z);for(let O of B)if(await _I0(Y,Q,O)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function ru6($,Z){let Q=new Date($.getTime()-l68*60000),Y=await ek0.runStep(()=>d68().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>ek0.runStep(()=>ou6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function i68(){if(BU1)return;BU1=ek0.registerWorkflow(ru6,{name:"jiraTriggerSweepWorkflow"}),ek0.registerScheduled(BU1,{name:"jiraTriggerSweepWorkflow",crontab:nu6,mode:pu6.ExactlyOncePerIntervalWhenActive})}var nu6="7-59/10 * * * *",l68=35,tu6=5,OU1=null,BU1=null;var p68=D(()=>{vz();ox();Vj();vI0()});function n68($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var t68,su6,au6,o68;var r68=D(()=>{G8();TK();Rm();al();t68=new Q1,su6=["range","if-none-match","if-modified-since"],au6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];t68.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(nd($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new A$(401,{message:"Authentication required"})}if(!Q)throw new A$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new A$(400,{message:"Missing file key"});let X=await E10(Y,Z);if(!X)throw new A$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&JW()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new A$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return n68(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of su6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new A$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new A$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of au6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),n68(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});o68=t68});var J40=b((By)=>{var eu6=By&&By.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),$l6=By&&By.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))eu6(Z,$,Q)};Object.defineProperty(By,"__esModule",{value:!0});$l6($G(),By)});var e68=b((s68)=>{Object.defineProperty(s68,"__esModule",{value:!0});s68.version=void 0;s68.version="3.4.0"});var Q58=b((pU)=>{var Zl6=pU&&pU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pU,"__esModule",{value:!0});pU.NodeTransport=pU.VERSION=void 0;pU.nodeResolveHost=Wl6;var m5=J40(),Ql6=q0("net"),DU1=q0("tls"),Yl6=q0("path"),$58=q0("fs"),Xl6=Zl6(q0("dns")),Jl6=e68();pU.VERSION=Jl6.version;var Gl6="nats.js";class Z58{socket;version;lang;yields=[];signal=(0,m5.deferred)();closedNotification=(0,m5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Gl6,this.version=pU.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,m5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw m5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new m5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new m5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,m5.deferred)(),Q,Y=(0,Ql6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,m5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=m5.DataBuffer.concat(...this.yields),X=(0,m5.extractProtocolMessage)(Y);if(X!=="")try{let J=m5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,m5.deferred)();try{if($=(0,Yl6.resolve)($),!(0,$58.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,$58.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,m5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new m5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,m5.deferred)();try{let X=(0,DU1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new m5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,m5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new m5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,m5.deferred)();try{let Y=(0,DU1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new m5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}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,m5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,m5.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 DU1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,m5.render)($)}`);let Z=(0,m5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,m5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,m5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}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(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}pU.NodeTransport=Z58;function Wl6($){let Z=(0,m5.deferred)();return Xl6.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var W58=b((G58)=>{Object.defineProperty(G58,"__esModule",{value:!0});G58.connect=Kl6;var Y58=Q58(),X58=J40(),J58=J40();function Kl6($={}){if((0,J58.hasWsProtocol)($))return Promise.reject(J58.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,X58.setTransportFactory)({factory:()=>{return new Y58.NodeTransport},dnsResolveFn:Y58.nodeResolveHost}),X58.NatsConnectionImpl.connect($)}});var K58=b((yO)=>{var Fl6=yO&&yO.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Ul6=yO&&yO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Fl6(Z,$,Q)};Object.defineProperty(yO,"__esModule",{value:!0});yO.connect=void 0;var Nl6=W58();Object.defineProperty(yO,"connect",{enumerable:!0,get:function(){return Nl6.connect}});Ul6(J40(),yO)});function N58($){let Z=$?.connectFn??Ll6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:Dl6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=QQ(Ol6,Bl6,O-1,2,0.5);await i$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?H58.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=U58.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function Ll6($){return F58.connect($)}var H58,F58,U58,Bl6=100,Ol6=3000,Dl6=3000;var B58=D(()=>{D8();H58=C(ei(),1),F58=C(K58(),1),U58=C(GN(),1)});function $S0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,Y=$?.updateRecencyOnGet??!1,X=new Map;function J(){if(X.size<=Q)return;let G=Date.now();for(let[W,K]of X)if(K.expiresAt<=G)X.delete(W);while(X.size>Q){let W=X.keys().next().value;if(W===void 0)break;X.delete(W)}}return{get(G){let W=X.get(G);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(G);return}if(Y)X.delete(G),X.set(G,W);return W.value},set(G,W){X.delete(G),X.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){X.delete(G)},clear(){X.clear()},size(){return X.size}}}function ZS0($,Z){return`${$}.${Z}`}class LU1{cache;constructor($){this.cache=$S0({ttlMs:$?.ttlMs??wl6,maxSize:$?.maxSize??jl6})}async get($,Z){return this.cache.get(ZS0($,Z))??null}async set($,Z,Q){this.cache.set(ZS0($,Z),Q)}async invalidate($,Z){this.cache.delete(ZS0($,Z)),this.cache.delete(ZS0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var wl6=600000,jl6=5000;var O58=()=>{};function QS0($,Z){return`${$}:${Z}`}function wU1($){let Z=$S0({ttlMs:$?.ttlMs??El6,maxSize:$?.maxSize??zl6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(D58,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(QS0(K,H))},set(K,H,F){Z.set(QS0(K,H),F)},invalidate(K,H){Z.delete(QS0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(D58),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(QS0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var D58="studio.ai-provider-keys.invalidate",El6=30000,zl6=5000;var L58=()=>{};class jU1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.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 Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var w58=($)=>{let Z;return()=>Z??=$()},EU1,zU1;var j58=D(()=>{C6();EU1=w58(()=>z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),zU1=w58(()=>z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Il6($=P58){return{name:EU,subjects:[`${_Z1}.>`],storage:MH.StorageType.File,max_age:Tl6,max_bytes:ql6,max_msgs_per_subject:Ml6,discard:MH.DiscardPolicy.Old,retention:MH.RetentionPolicy.Limits,duplicate_window:Rl6,num_replicas:$}}class A58{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 E58($){let Z=z58.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function Cl6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Al6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function _l6($,Z){return $.info?.cluster?Z:1}function vl6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class PU1{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=async(Y,X)=>{let J=Il6(X);try{await Y.streams.info(EU),await Y.streams.update(EU,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(EU,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(EU),await Y.streams.add(J);else throw G}},Q=await g8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await MH.jetstreamManager($),X=_l6($,P58);try{await Z(Y,X)}catch(J){if(X<=1||!vl6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:vm});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=Cl6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=wC$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=bZ1(H,{runId:Z}),N=performance.now()-F;EU1().record(N),zU1().add(1,{"org.id":Y??"unknown"}),Sl6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?E58(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),kl6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await g8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:E58(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:vm}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=bZ1(Z,{runId:$,dedup:Q});EU1().record(performance.now()-X),zU1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=LC$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?MH.DeliverPolicy.New:MH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=fj($),W;try{W=await g8(async()=>{return(await Y.consumers.get(EU,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:vm})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=QR0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(aT0()).pipeThrough(eT0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){O(),L.close();return}let E=j;if(E.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(EU,{filter:fj($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var MH,z58,Pl6=($)=>{let Z;return()=>Z??=$()},Al6,Tl6=86400000000000,Rl6=120000000000,ql6=4294967296,P58,Ml6=500000,Vl6,kl6,Sl6;var T58=D(()=>{D8();xZ1();YR0();$R0();C6();j58();MH=C(GN(),1),z58=C(ei(),1),Al6=Pl6(()=>z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),P58=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Vl6=process.env.STREAM_ENCODE_TRACE==="1",kl6=process.env.DECOPILOT_STREAM_TRACE==="1";Sl6=Vl6?new A58:null});function YS0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,nH(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var R58=D(()=>{e8()});class AU1{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 bl6($,Z){let Q=$.startsWith("thread:")?YH($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function TU1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await KU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await gc($,{threadId:X,runBranch:G?.branch}),K=bl6(W,await AA0($,X)),H=await Pe($,Q,s11(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await aG(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var q58=D(()=>{iZ();jW();z7()});async function M58($,Z,Q){let Y=Z.organizationId;if(!VX(Z))return!1;if(!rx(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=oF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await o6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),E8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var I58=D(()=>{C4();_Y();jm();WH();V9()});function ll6($){return $ instanceof zX}function V58($,Z){return Z-$>=hl6}class RU1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??xl6;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??yl6,Q=this.options.itemIntervalMs??fl6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}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()-A51),l91);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-ul6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await g91(this.taskBoard,X,Y),await h91(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==T$.progress||VX(W)||W.assigneeId!==j8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await TU1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!V58(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceToReviewIfInProgress(X,J,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:T$.progress,to:T$.review,reason:H}}).catch(()=>{}),E8(J,F),await KH(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==T$.progress||G.assigneeId!==j8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await HH(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),ll6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+gl6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),E8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!V58(SB(Q,Z.reviewCycleStartedAt),Date.now()))return;await KH($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!VX(Y))return!1;let X=Y.assigneeId===j8,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await TU1(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Pm(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await M58(G,Y,W))return!0;if(await P_$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!b91(W))return!1;return await Em(G,Y,{previewMatchesHead:x91(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await _j($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var xl6=60000,fl6=300000,yl6=50,gl6=60000,hl6=900000,ul6=120000;var k58=D(()=>{C4();OT0();q58();wU();S10();WH();I58();V9();FW();c91();z7();Q10();zm()});import{readdir as cl6,rm as XS0}from"fs/promises";import{join as JS0}from"path";async function GS0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ml6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Oy($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await S58($,X,Z);else if(!X.startsWith(".")){let J=JS0($,X),G=await Oy(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await S58(J,K,Z)}if((await Oy(J)).length===0)await XS0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function S58($,Z,Q){let Y=0,X=JS0($,Z),J=await Oy(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=JS0(X,W),H=await Oy(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=JS0(K,U);await XS0(B,{recursive:!0,force:!0}),Y++}}if((await Oy(K)).length===0)await XS0(K,{recursive:!0,force:!0})}if((await Oy(X)).length===0)await XS0(X,{recursive:!0,force:!0});return Y}async function Oy($){try{return(await cl6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var ml6=30;var qU1=()=>{};import{DBOS as MU1,SchedulerMode as dl6}from"@dbos-inc/dbos-sdk";async function pl6(){let $=[uW(),Ty(),eU()],Z=0;for(let Q of $)try{Z+=await GS0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function nl6($,Z){await MU1.runStep(()=>pl6(),{name:"monitoringRetention"})}function _58(){if(C58)return;C58=!0;let $=MU1.registerWorkflow(nl6,{name:"monitoringRetentionWorkflow"});MU1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:il6,mode:dl6.ExactlyOncePerIntervalWhenActive})}var il6="23 4 * * *",C58=!1;var v58=D(()=>{D3();qU1()});function b58($){return async(Z,Q)=>{let Y=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","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await vQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await kA($.db,Z,Y.role);return X.boundAuth=KK1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new OP(Q,void 0,X.boundAuth,Y.role,"self"),Cj(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var x58=D(()=>{BK();pF()});function tl6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ol6(){return{services:tl6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function sl6(){for(let $ of rl6)$()}function f58($){let Z=[...IU1.logs,$];IU1={...IU1,logs:Z.length>500?Z.slice(-500):Z},sl6()}function VU1(){return al6}var IU1,rl6,al6=!1;var kU1=D(()=>{IU1=ol6(),rl6=new Set});import{EventEmitter as el6}from"events";var SU1;var y58=D(()=>{kU1();SU1=new el6;SU1.on("request",($)=>{f58($)})});function g58(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=Ri(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>Ri(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${Z9.tool}${B}${Z9.dim}(${w})${Z9.reset}`}else if(N.method)J=`${Z9.dim}${Ri(N.method)}${Z9.reset}`}}catch{}}let W=Ri(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${Z9.mcp}${Ri(F.slice(0,12))}\u2026${Z9.reset}`}else if(X==="/mcp")W=`${Z9.mcp}/mcp${Z9.reset}`;else if(X==="/mcp/registry")W=`${Z9.mcp}/mcp/registry${Z9.reset}`;let K=Zc6(Y),H=G?"\u25C0":"\u2190";if(!VU1())console.log(`${Z9.dim}${H}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=$c6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!VU1())console.log(`${Z9.dim}${O}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""} ${N}${U}${Z9.reset} ${Z9.duration}${B}${Z9.reset}`);SU1.emit("request",{method:Y,path:Ri(X),status:U,duration:F,timestamp:new Date})}}}var Z9,$c6=($)=>{if($>=500)return Z9.serverError;if($>=400)return Z9.clientError;if($>=300)return Z9.redirect;return Z9.ok},Zc6=($)=>{return Z9[$]||Z9.reset},Ri=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var h58=D(()=>{kU1();y58();Z9={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 m58}from"crypto";import{mkdir as Qc6,readdir as Yc6,rm as u58,stat as d58}from"fs/promises";import{join as _U1,relative as Xc6}from"path";import{z as s$}from"zod";function p58($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return _U1(Jc6,Z)}function n58($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function CU1($,Z){let Q=p58($),Y=n58(Z);return _U1(Q,Y)}function Gc6($,Z,Q,Y){let X=E0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return m58("sha256",X).update(J).digest("hex")}function c58($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=Gc6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${n58(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function t58($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${m58("md5","etag").update(Y).digest("hex")}"`}async function o58($,Z,Q,Y,X){try{let J=await Yc6($,{withFileTypes:!0});for(let G of J){let W=_U1($,G.name),H=Xc6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await o58(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await d58(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:t58(W,F.mtime,F.size)})}catch{}}}}catch{}}function r58($,Z){let Y=K0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:s$.object({prefix:s$.string().optional(),maxKeys:s$.number().optional().default(1000),continuationToken:s$.string().optional(),delimiter:s$.string().optional()}),outputSchema:s$.object({objects:s$.array(s$.object({key:s$.string(),size:s$.number(),lastModified:s$.string(),etag:s$.string()})),nextContinuationToken:s$.string().optional(),isTruncated:s$.boolean(),commonPrefixes:s$.array(s$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=p58(Y);await Qc6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await o58(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({contentType:s$.string().optional(),contentLength:s$.number(),lastModified:s$.string(),etag:s$.string(),metadata:s$.record(s$.string(),s$.string()).optional()}),handler:async(X)=>{let J=X,G=CU1(Y,J.key),W=await d58(G);return{contentType:JH1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:t58(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:s$.object({key:s$.string(),expiresIn:s$.number().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,l58);return{url:c58(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:s$.object({key:s$.string(),expiresIn:s$.number().optional(),contentType:s$.string().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,l58);return{url:c58(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({success:s$.boolean(),key:s$.string()}),handler:async(X)=>{let J=X,G=CU1(Y,J.key);try{return await u58(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:s$.object({keys:s$.array(s$.string()).max(1000)}),outputSchema:s$.object({deleted:s$.array(s$.string()),errors:s$.array(s$.object({key:s$.string(),message:s$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=CU1(Y,K);try{await u58(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function vU1($,Z,Q){let Y=r58(Z,Q),X=new ML({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:PZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:s$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:s$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.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 J=new Y3({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MW(X,J,$,"mcp:dev-assets")}async function s58($,Z,Q,Y){let J=r58(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var Jc6="./data/assets",l58=3600,i58,a58;var e58=D(()=>{F$();um();G8();mY0();hm();aX();PO();tV0();i58=new Q1;i58.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return vU1($.req.raw,Z,Y)});a58=i58});var $98={};M6($98,{mountDevRoutes:()=>Wc6});function Wc6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return vU1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await s58(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",a58);let Q=new Q1;Q.use("*",RH({mountPath:"/api/dev-assets"})),Q.route("/",nV0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Z98=D(()=>{G8();aK1();tV0();e58()});var U98={};M6(U98,{watchHandler:()=>F98,resolveCorsOrigin:()=>K98,isSsoExemptPath:()=>G98,isAllowedOAuthRedirectUri:()=>H98,createApp:()=>wc6});import{readFileSync as Kc6}from"fs";import{PrometheusSerializer as Hc6}from"@opentelemetry/exporter-prometheus";import{DBOS as gO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as Nc6,oAuthProtectedResourceMetadata as Bc6}from"better-auth/plugins";async function Fc6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Y98(Q98)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Y98(Q98)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Y98($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function G98($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${vV0}/`)||$.startsWith(`${IV0}/`)}function W98($){return $==="local.studio.decocms.com"}function K98($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;if(W98(Y))return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function H98($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||W98($.hostname)}async function wc6($={}){let Z=$.database??P8(),Q=!1;e5.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let Y,X,J,G,W=new LU1,K,H,F,U=null;if($.disableNats)K=wU1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new h10,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Q0)=>{return(async()=>{let w0=Q0.getReader();try{while(!0){let{done:e}=await w0.read();if(e)break}}catch{}finally{w0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=N58();let Q0=E0().natsCredsPath,w0;if(Q0)try{w0=Kc6(Q0,"utf8")}catch(f0){console.error(`[app] failed to read NATS_CREDS at ${Q0}; connecting anonymously`,f0)}U.init(E0().natsUrls,w0?{creds:w0}:void 0);let e=me0()?new Me0({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),Y=e;let i=new g41({getJetStream:()=>U.getJetStream()});i.init().catch(()=>{}),X=i;let m0=new ax(V91,{getJetStream:()=>U.getJetStream()}),I0=new ax(Y10,{getJetStream:()=>U.getJetStream()});m0.init().catch(()=>{}),I0.init().catch(()=>{}),J={reads:m0,cards:I0};let t0=new LQ1({getJetStream:()=>U.getJetStream()});t0.init().catch(()=>{}),G=t0,K=wU1({getConnection:()=>U.getConnection()}),H=new jU1({getConnection:()=>U.getConnection()}),F=new PU1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),Ha$(U),U.onReady(()=>{e?.init().catch((f0)=>{console.error("[McpListCache] Deferred init failed:",f0)}),i.init().catch((f0)=>{console.error("[SkillCatalogCache] Deferred init failed:",f0)}),m0.init().catch((f0)=>{console.error("[PrReadCache] Deferred init failed:",f0)}),I0.init().catch((f0)=>{console.error("[PrCardCache] Deferred init failed:",f0)}),t0.init().catch((f0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",f0)}),K.start(),gK$(()=>U.getConnection()),F.init().catch((f0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",f0)})})}if(PE)await PE();Ie0(Y),u41(X),k91(J),wQ1(G);let B={storage:new Hh(Z.db),sseHub:e5,onThreadFinished:async(Q0,w0)=>Tm(new sG(Z.db),Q0,w0,new DG(Z.db))},O=new lZ1(B),L=new J80(Z.db),w=new AU1(L);w.start(),E_$(H),H.start((Q0)=>{lT0(Q0),O.execute({type:"CANCEL",taskId:Q0}).catch((w0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",w0)})}).catch((Q0)=>{console.error("[Decopilot] CancelBroadcast start failed:",Q0)}),U?.onReady(()=>{H.start().catch((Q0)=>{console.error("[CancelBroadcast] Deferred start failed:",Q0)})});let j=()=>U?.getConnection()??null;tK1(j),U?.onReady(()=>tK1(j)),oQ1(j),U?.onReady(()=>oQ1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),PE=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),qe$(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),hK$(),G.teardown(),Ie0(null),u41(null),k91(null),wQ1(null)};let E=new Q1;if(E.use("*",BQ1({enabled:(Q0)=>pd(Q0,"debug")==="1"})),E.use("*",VS0),E.use("/*",Xa$({origin:(Q0,w0)=>K98(Q0,{baseUrl:E0().baseUrl,requestOrigin:new URL(w0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(Q0,w0)=>{if(await w0(),Q0.req.path.includes("/files/"))return;if(Q0.req.path.includes("/fs/")&&Q0.req.path.endsWith("/read"))return;Q0.header("X-Frame-Options","DENY"),Q0.header("Content-Security-Policy","frame-ancestors 'none'")}),!E0().noTui)E.use("*",g58());E.use("*",async(Q0,w0)=>{if(await w0(),bi(Q0.req.path))return;if(Q0.res.status>=500){let i=await Q0.res.clone().text();console.error(`[5xx Response] ${Q0.req.method} ${Q0.req.path} - ${Q0.res.status}:`,i)}}),E.get(mY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(mY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(mY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let w0={};if(w0.postgres={status:await Fc6(Z.pool)?"up":"down"},U)w0.nats=U.isConnected()?{status:"up"}:{status:"down"};else w0.nats={status:"down"};let e=w0.postgres.status==="up",i=e?200:503;return Q0.json({status:e?"ready":"not_ready",services:w0},i)}),E.get(mY.METRICS,async(Q0)=>{try{let w0=await _S0.collect(),e=Uc6.serialize(w0.resourceMetrics);return Q0.text(e,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(w0){return console.error("Failed to collect metrics:",w0),Q0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${mY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let w0=Q0.req.param("queueName");if(!Oc6.has(w0))return Q0.json({error:`Unknown queue: ${w0}`},404);let[e,i]=await Promise.all([gO.listQueuedWorkflows({queueName:w0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),gO.listQueuedWorkflows({queueName:w0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Q0.json({queue_length:e.length,in_flight:i.length})}),E.route("/api/config",z68),E.route("/api/_reports",_68),E.route("/api/_stripe",NU1),E.route("/api/_github",x68({taskBoard:()=>n,contextFactory:()=>g})),E.route("/api/_git",$i);let T={db:Z.db,encryptionKey:E0().encryptionKey};E.route("/api/_jira",h68(T)),E.route("/api/_jira",y68(T)),E.route("/report",k68($.clientDir)),E.route("/api/auth/custom",ka$),E.route("/api/auth/desktop",va$),E.all("/api/auth/admin/*",Ue$),E.all("/api/auth/*",async(Q0)=>{return await C8.handler(Q0.req.raw)});let P=yr$();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",j80),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",j80),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",Z80),E.route("/",cr$()),E.use("/oauth-proxy/:connectionId/*",j80),E.all("/oauth-proxy/:connectionId/*",X98);let A=async(Q0)=>{let e=await Dc6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",j80),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(Q0)=>{let e=await Lc6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let x=Ga$({ttlMs:120000}),_=await Cs$({db:Z.db,auth:C8,encryption:{key:E0().encryptionKey},observability:{tracer:nO,meter:z$},modelListCache:W,providerKeyCache:K,memberRoleCache:x});vQ.set(_),Sc1({db:Z.db,baseUrl:x5()}),_s$({db:Z.db}),fs$({db:Z.db}),ds$({db:Z.db}),c68({db:Z.db,encryptionKey:E0().encryptionKey}),rI$({db:Z.db}),rs$({db:Z.db}),EV$({db:Z.db});let V=_Q0(Z.db),y=new No(Z.db),g=b58({db:Z.db});HQ1({storage:V,studioContextFactory:g}),sZ1({systemDatabaseUrl:nt0(E0().databaseUrl,E0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}}),dZ1({dispatchRunFn:HC$,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}});let l=new Hh(Z.db),n=new sG(Z.db),p=new DG(Z.db),F0=new RU1(n,g,p);if(E0().taskBoardReviewSweeperEnabled){F0.start();let Q0=PE;PE=async()=>{await Q0?.(),F0.dispose()}}SC$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await J98.jetstreamManager(Q0):null},messageParts:l.messageParts(),resolveRun:async(Q0)=>{let w0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Q0).executeTakeFirst();return w0?{orgId:w0.organization_id,createdBy:w0.created_by,version:w0.message_storage_version??1,status:w0.status,runFenceToken:w0.run_fence_token,title:w0.title??null}:null},completeRunIfNotCompleted:async(Q0,w0)=>{let e=await l.completeRunIfNotCompleted(Q0,w0);if(YS0(e5,w0,Q0,e),e)await Tm(n,Q0,w0,p);return e},markRunRequiresAction:async(Q0,w0)=>{let e=await l.requiresActionIfInProgress(Q0,w0);return YS0(e5,w0,Q0,e),e},markRunFailed:async(Q0,w0,e,i)=>{let m0=await l.markRunFailed(Q0,w0,e,i);if(YS0(e5,w0,Q0,m0),m0)await Tm(n,Q0,w0,p);return m0},clearSynthesizedError:async(Q0,w0)=>{await l.messageParts().replaceMessageParts(Q0,xj(Q0,w0),[])},persistTitle:(Q0,w0,e)=>l.update(Q0,w0,{title:e}),onTitleUpdated:async({runId:Q0,orgId:w0,title:e})=>{let i=await l.get(Q0,w0).catch(()=>null);e5.emit(w0,nH(Q0,i?.status??"in_progress",{title:e,virtualMcpId:i?.virtual_mcp_id??void 0,createdBy:i?.created_by,triggerId:i?.trigger_id,branch:i?.branch??null,harnessId:i?.harness_id??void 0,createdAt:i?.created_at,updatedAt:i?.updated_at}))},bumpProgress:async({runId:Q0,orgId:w0})=>{await l.bumpProgress(Q0,w0)},recordCompleted:async({runId:Q0,orgId:w0,distinctId:e,usage:i})=>{v1.capture({distinctId:e,event:"chat_message_completed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",input_tokens:i.inputTokens,output_tokens:i.outputTokens,total_tokens:i.totalTokens}})},recordFailed:async({runId:Q0,orgId:w0,distinctId:e,reason:i,kind:m0})=>{v1.capture({distinctId:e,event:"chat_message_failed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",error_category:m0,error_message:i}})},purgeRun:async(Q0)=>{F.purge(Q0)}}),xS$({studioContextFactory:g,systemDatabaseUrl:nt0(E0().databaseUrl,E0().databasePgSsl),streamBuffer:F}),_58(),Cc1(),bs$(),gs$(),ps$(),i68(),ZV$(),as$(),zV$();let V0=async(Q0,w0,e)=>{let i=await V.findById(Q0,w0);if(!i)throw Error("Automation not found");return NQ1({automationId:i.id,organizationId:i.organization_id,triggerId:null})},G0=new ad(V,({automation:Q0,trigger:w0,contextMessages:e,idempotencyKey:i})=>g10({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:w0.id,contextMessages:e},{idempotencyKey:i})),H0=[uW(),Ty(),eU()];for(let Q0 of H0)GS0(Q0).then(()=>{}).catch((w0)=>console.error("[monitoring] Retention cleanup failed:",w0));let X0=()=>C8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,w0)=>{if(MS0(Q0.req.path))return w0();let e={measure:async(m0,I0)=>{qW(Q0,m0);try{return await I0()}finally{X3(Q0,m0)}}},i=await vQ.create(Q0.req.raw,{timings:e});i.automationRunner=V0,Q0.set("studioContext",i);try{await w0()}finally{let m0=i.pendingRevalidations;if(m0.length>0)Promise.race([Promise.allSettled(m0),i$(30000)]).catch((t0)=>console.error("[studio] revalidation cleanup error:",t0))}}),E.use("/api/:org/decopilot/*",td),E.use("/api/:org/v1/*",td),E.use("/api/:org/files/*",td),E.use("*",async(Q0,w0)=>{if(G98(Q0.req.path))return w0();let e=Q0.get("studioContext");if(!e?.organization?.id||!e?.auth?.user?.id)return w0();if(!(await e.storage.orgSsoConfig.getByOrgId(e.organization.id))?.enforced)return w0();if(!await e.storage.orgSsoSessions.isValid(e.auth.user.id,e.organization.id))return Q0.json({error:"SSO authentication required for this organization"},403);return w0()});let Z0=new Q1;Z0.use("*",RH({mountPath:"/api/org-sso"})),Z0.route("/",fV0()),E.route("/api/org-sso",Z0),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:Vi0,grouped:BP()})}),E.use("/mcp/*",async(Q0,w0)=>{qW(Q0,"mcp");try{return await w0()}finally{X3(Q0,"mcp")}});let Y0=async(Q0,w0)=>{let e=Q0.var.studioContext;if(!e.auth.user?.id&&!e.auth.apiKey?.id){let i=new URL(Q0.req.url),m0=Q0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),I0=m0?`${m0}://${i.host}`:i.origin;return Q0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${I0}${i.pathname}/.well-known/oauth-protected-resource"`}})}return await w0()};if(E.use("/mcp/:connectionId?",Y0),E.use("/mcp/gateway/:virtualMcpId?",Y0),E.use("/mcp/virtual-mcp/:virtualMcpId?",Y0),E.use("/mcp/self",Y0),JW()){let{mountDevRoutes:Q0}=(Z98(),OS0($98));Q0(E,Y0)}let o=new Q1;o.use("*",RH({mountPath:"/mcp"})),o.route("/",vR0()),E.route("/mcp",o);let J0=new Q1;J0.use("*",RH({mountPath:"/mcp/self"})),J0.route("/",qk0()),E.route("/mcp/self",J0);let c0=new Q1;c0.use("*",RH({mountPath:"/mcp"})),c0.route("/",fR0()),E.route("/mcp",c0),E.use("/api/:org/models/*",async(Q0,w0)=>{qW(Q0,"llm_models");try{return await w0()}finally{X3(Q0,"llm_models")}});let k0=Ie$({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",k0),E.route("/api",o68);let j1=new Q1;j1.use("*",RH({mountPath:"/api"})),j1.route("/",kk0()),E.route("/api",j1),E.route("/api",B68);let d0=new Q1;d0.use("*",RH({mountPath:"/api"})),d0.route("/",Sk0({tokenStorage:y,automationEventDispatcher:G0})),E.route("/api",d0);let L0=new Oo(Z.db),j0=new Q1;j0.use("*",RH({mountPath:"/api"})),j0.route("/",lV0()),E.route("/api",j0),E.route("/api/deco-sites",le$()),E.route("/api/deco-apps",W68());let a0=new Q1;a0.use("*",RH({mountPath:"/api/deco-sites"})),a0.route("/",mV0()),E.route("/api/deco-sites",a0),E.route(vV0,Ne$()),E.route(E88,A88()),E.route("/api/_editor-resolve",D68()),E.route(xa$,fa$()),E.route(IV0,pa$());let P1=J68({kvStorage:L0,runRegistry:O,streamBuffer:F,sseHub:e5,cancelBroadcast:H,tokenStorage:y,automationEventDispatcher:G0,mountDevAssets:JW(),mcpAuth:Y0,oauthProxyHandler:X98,watchHandler:F98,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",P1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(Se$),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([e5.stop(),PE?Promise.resolve(PE()).finally(()=>{PE=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await fX().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await q4$(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await gO.registerQueue(O3,{partitionQueue:!0,concurrency:GQ1,minPollingIntervalMs:WQ1}),await gO.registerQueue(B3,{partitionQueue:!0,concurrency:oZ1,priorityEnabled:!0}),await gO.registerQueue(sU,{workerConcurrency:E0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await gO.registerQueue(aU,{workerConcurrency:E0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await gO.registerQueue(iO,{partitionQueue:!0,concurrency:bS$}),await gO.registerQueue(ME,jV$),await eK1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>gO.deleteQueue(Q0))),await KQ1(Z.pool),p9$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),_c1().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var J98,Q98=5000,PE=null,X98=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),Y=Q[Q.length-1],X=$.get("studioContext");if(!X)X=await vQ.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let y=await $.req.json().catch(()=>({}));return $.json({...typeof y==="object"&&y!==null?y:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await cd(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=(await W.json()).authorization_servers?.[0];if(!K)K=H.origin;let N=await Q80(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(Y==="authorize")O=B.authorization_endpoint;else if(Y==="token")O=B.token_endpoint;else if(Y==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let L=lr$(O);if(L)return L;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,Y==="authorize"){let y=w.searchParams.get("redirect_uri");if(y){let g=E0().baseUrl??j.origin;try{if(!H98(new URL(y),g))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}w.searchParams.set("redirect_uri",y)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if($a$(G.connection_url))w.searchParams.set("auto_personal","true"),w.searchParams.set("force_new","true");return $.redirect(w.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let T=$.req.header("Authorization");if(T)E.Authorization=T;let P,A=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&z?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let p=atob(T.slice(6).trim()),F0=p.indexOf(":");if(F0!==-1){let V0=decodeURIComponent(p.slice(0,F0)),G0=decodeURIComponent(p.slice(F0+1));A=V0||null,q=G0||null}}catch{}let y=await $.req.formData();if(y.has("resource"))y.set("resource",U);let g=y.get("client_id"),l=y.get("client_secret");if(typeof g==="string"&&g)A=g;if(typeof l==="string"&&l)q=l;let n=new URLSearchParams;for(let[p,F0]of y.entries())n.append(p,F0.toString());P=n.toString()}else if(Y==="register"&&z?.toLowerCase().includes("application/json")){let y=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),g=await $.req.text(),l={};try{l=g?JSON.parse(g):{}}catch{P=g}let n=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!n)P=g;if(P===void 0){let p=l,F0=p.metadata&&typeof p.metadata==="object"?p.metadata:{};p.metadata={...F0,organization_id:G.organization_id,...y?.slug?{organization_slug:y.slug}:{},...y?.name?{organization_name:y.name}:{}},P=JSON.stringify(p),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let x=await fetch(w.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),_=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,g]of x.headers.entries())if(!V.includes(y.toLowerCase()))_.set(y,g);if(Y==="token"&&x.ok){let y=await x.text();try{let g=JSON.parse(y);if(typeof g.access_token==="string"&&g.access_token){let l=typeof g.expires_in==="number"?new Date(Date.now()+g.expires_in*1000):null,n=null;try{n=await md(G.connection_url)??O}catch{n=O}let p={connectionId:Z,accessToken:g.access_token,refreshToken:typeof g.refresh_token==="string"?g.refresh_token:null,scope:typeof g.scope==="string"?g.scope:null,expiresAt:l,clientId:A,clientSecret:q,tokenEndpoint:n};await new F9(X.db,X.vault).upsert(p)}}catch(g){console.error("[oauth-proxy] failed to persist downstream token:",g)}return new Response(y,{status:x.status,statusText:x.statusText,headers:_})}return new Response(x.body,{status:x.status,statusText:x.statusText,headers:_})},F98=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!DU(Y)||!await LU(Z)))return $.json({error:"forbidden"},403);let W=G?a20:Y;if(G)XO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return bO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!e5.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{e5.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),e5.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),e5.remove(W,K),N()})})})},Uc6,Oc6,Dc6=()=>Bc6(C8),Lc6=()=>Nc6(C8);var N98=D(()=>{D8();F$();vc1();xs$();hs$();ns$();d10();U91();es$();Q10();E9();al();e8();G8();AV0();Ja$();OQ1();hG();pF();RK1();m3();C6();U6();CK1();ba$();ya$();na$();yK1();Be$();iK1();Ve$();sK1();iK();GV0();aK1();Ce$();RV0();G68();QH1();K68();bR0();u10();O68();yR0();CF1();L68();kF1();P68();S68();v68();b68();f68();g68();u68();p68();WH1();r68();SF1();MF1();P40();B58();DJ();xA0();C91();ya();ha();EQ1();O58();L58();oK1();T58();cZ1();R58();on();Lo();YO();V9();iW1();k58();v58();LJ0();qU1();D3();$H1();QO();hZ1();LJ0();sT0();Li0();wi0();x58();Hu();h58();Li();RK1();Lm();Cm();cT0();J98=C(GN(),1);Uc6=new Hc6,Oc6=new Set([O3,B3,sU,aU,iO,ME])});var L98={};M6(L98,{resolveClientDir:()=>Rc6,resolveAssetPathWithTraversalCheck:()=>D98,isPathWithinDirectory:()=>O98,createAssetHandler:()=>qc6});import{resolve as G40,dirname as jc6,join as Ec6,extname as zc6,basename as Pc6,sep as B98}from"path";function Ac6($,Z){if($===Z||Pc6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${B98}assets${B98}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function O98($,Z){let Q=G40(Z),Y=G40($);return Y===Q||Y.startsWith(Q+"/")}function D98({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=G40(Z,Q);if(!O98(Y,Z))return null;return Y}function Rc6($,Z="../client"){let Q=new URL($),Y=jc6(Q.pathname);return G40(Y,Z)}function qc6($={}){let{env:Z="production",clientDir:Q=Tc6,isServerPath:Y=()=>!1}=$;if(Z==="development")return async function(J){return null};return async function(J){if(J.method!=="GET")return null;let G=new URL(J.url),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(Y(W))return null;let K=D98({requestPath:W,clientDir:Q});if(!K)return null;let H=Ec6(K,"index.html"),F=G40(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(zc6(K))?[H,F]:[];for(let O of[K,...B])try{let L=Bun.file(O);if(await L.exists())return new Response(L,{headers:Ac6(O,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var Tc6="./dist/client";var w98=()=>{};var j98={};M6(j98,{tryUpgradePreviewWs:()=>_c6,tryHandlePreviewHttp:()=>Cc6,previewWebSocketHandler:()=>vc6,parsePreviewBaseDomain:()=>Sc6,isPreviewWsData:()=>WS0,extractHandleFromHost:()=>bU1});function Vc6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function kc6(){return new Response(Ic6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function Sc6($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let Y=Q.hostname;if($.includes("{handle}")){let X=Y.indexOf(".");if(X<=0||X===Y.length-1)return null;return Y.slice(X+1)}return Y}function bU1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),Y=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Y.endsWith(J))return null;let G=Y.slice(0,Y.length-J.length);if(!G||G.includes("."))return null;return G}async function Cc6($,Z){let Q=bU1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return K40(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Ix)&&Vc6($))return kc6();return X.headers.delete(Ix),X}function K40($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function WS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function _c6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=bU1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return K40(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return K40(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return K40(404,"not found");let W=`${J.replace(/^http/,"ws")}${G.pathname}${G.search}`,K=$.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],F={kind:"preview",upstreamUrl:W,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:F}))return K40(426,"upgrade failed");return}function W40($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var Mc6=256,Ic6='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',vc6;var E98=D(()=>{j41();vc6={open($){let Z=$.data;if(!WS0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),W40($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let Y=Z.pending.shift();if(Y!==void 0)Q.send(Y)}}),Q.addEventListener("message",(Y)=>{if(Z.closed)return;$.send(Y.data)}),Q.addEventListener("close",(Y)=>{W40($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{W40($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!WS0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=Mc6){W40($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!WS0(Z))return;W40($,Z,1000,"")}}});var T98={};M6(T98,{printBanner:()=>xc6,bannerLines:()=>A98,BANNER_LINES:()=>z98,BANNER_GRADIENT:()=>P98});function bc6($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function A98($){let Z=z98.map((Q,Y)=>{let[X,J,G]=bc6(P98[Y]);return`\x1B[38;2;${X};${J};${G}m${Q}\x1B[39m`});if($!==void 0)Z.push(`\x1B[2m v${$}\x1B[22m`);return Z}function xc6($){console.log("");for(let Z of A98($))console.log(Z);console.log("")}var z98,P98;var R98=D(()=>{z98=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],P98=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});D8();var nU1="13";function tU1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:nU1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}D8();import c98 from"pg";var oU1=8314027461559302n,m98=600000,d98=500;async function rU1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=m98}=$,X=$.log??((K)=>console.log(K)),J=new c98.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[oU1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await i$(d98)}let K=Date.now()-G;if(K>1000)X(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[oU1.toString()])}catch{}await J.end().catch(()=>{})}}F$();jS0();C6();function cZ8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function xS0($,Z){for(let Q=0;Q<$.length;Q++){let Y=$[Q];if(Y===void 0)continue;if(Y===Z)return $[Q+1];if(Y.startsWith(`${Z}=`))return Y.slice(Z.length+1)}return}function vN1(){let $=cZ8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:xS0($,"--cpu-prof-dir")??process.cwd(),name:xS0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(xS0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}gS0();var R40;function cN1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=kE();if(!Q)return;let Y={};try{let{heapStats:X}=await import("bun:jsc"),J=X(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);Y={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...Y}))};return Z().catch(()=>{}),R40=setInterval(()=>void Z().catch(()=>{}),$),R40.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),Y=typeof Q==="string"?Q:JSON.stringify(Q),X=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(X,Y),console.log(JSON.stringify({msg:"heap-snapshot-written",path:X}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(R40)clearInterval(R40)}}import*as iZ8 from"bun:jsc";var{startSamplingProfiler:pZ8,samplingProfilerStackTraces:nZ8}=iZ8;function mN1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{pZ8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=nZ8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function dN1(){vN1();let $=[cN1(),lN1(),mN1()];return()=>{for(let Z of $)Z()}}import{existsSync as mc6}from"fs";var pJ=E0();SN1();var{DBOS:H40,DBOSClient:fc6}=await import("@dbos-inc/dbos-sdk");function uU1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var yc6=[O3,B3,sU,aU,iO,ME],gc6=pJ.dispatchRole==="worker"?yc6:pJ.dispatchRole==="api"?[]:void 0;H40.setConfig(tU1({systemDatabaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl),poolSize:pJ.dbosPoolSize,executorID:pJ.podName,listenQueues:gc6}));var{createApp:hc6}=await Promise.resolve().then(() => (N98(),U98)),{isServerPath:uc6}=await Promise.resolve().then(() => (P40(),BN1)),{createAssetHandler:lc6,resolveClientDir:k98}=await Promise.resolve().then(() => (w98(),L98)),cc6=pJ.port,q98=k98(import.meta.url,"../client"),S98=mc6(q98)?q98:k98(import.meta.url,"../dist/client"),dc6=lc6({clientDir:S98,isServerPath:uc6}),ic6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function pc6($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(ic6))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:nc6,tryHandlePreviewHttp:tc6,tryUpgradePreviewWs:oc6,previewWebSocketHandler:xU1,isPreviewWsData:fU1}=await Promise.resolve().then(() => (E98(),j98)),{getOrInitSharedRunner:C98}=await Promise.resolve().then(() => (QH(),kE$)),_98=nc6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),M98={baseDomain:_98??"",getRunner:C98};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())C98().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var KS0=await hc6({clientDir:S98}),yU1=process.env.DBOS_CONDUCTOR_KEY?.trim(),I98=process.env.DBOS_CONDUCTOR_URL?.trim();await rU1({databaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl)},()=>H40.launch({...yU1?{conductorKey:yU1}:{},...yU1&&I98?{conductorURL:I98}:{}}));console.log(`[dbos] application version: ${H40.applicationVersion}`);var gU1=5,hU1=0;await g8(async()=>{hU1++;try{return await KS0.initDbos()}catch($){let Z=hU1>=gU1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${hU1}/${gU1} failed, ${Z}`,$),$}},{maxAttempts:gU1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!pJ.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (R98(),T98));console.log("");for(let Z of $())console.log(Z)}var rc6=Bun.serve({idleTimeout:0,port:cc6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(_98){let Y=await oc6($,Z,M98);if(Y===void 0)return;if(Y)return Y;let X=await tc6($,M98);if(X)return X}let Q=await dc6($);if(Q)return pc6(Q);return KS0.fetch($,{server:Z})},websocket:{open($){if(fU1($.data))xU1.open($)},message($,Z){if(fU1($.data))xU1.message($,Z)},close($){if(fU1($.data))xU1.close($)}},development:!1}),sc6=dN1();if(pJ.localMode)Promise.resolve().then(() => (Zf(),kT0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Zf(),kT0));Z()}catch{}});var V98=!1;async function ac6($){let Z;try{Z=await fc6.create({systemDatabaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:B3,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Y=Q.map((X)=>X.workflowID);await Z.resumeWorkflows(Y,{queueName:B3}),console.log(`[shutdown] re-enqueued ${Y.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Y)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function HS0($){if(V98)return;V98=!0,console.log(`
|
|
3709
3709
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),Y=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);Y.unref?.();let X=0;try{sc6(),KS0.markShuttingDown();let J=aU1(pJ.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await i$(J),await rc6.stop(!0);let G=H40.executorID;await H40.shutdown(),await ac6(G),await KS0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>HS0("SIGTERM"));process.on("SIGINT",()=>HS0("SIGINT"));process.on("SIGHUP",()=>HS0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),HS0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,M as u}from"./index-CC25Ppah.js";import{ChatLayout as f}from"./index-bkwORM24.js";import{a as x}from"./thread-route-Bqw7sU0F.js";import{u as g}from"./use-task-metadata-B50R7YVb.js";import{AppViewContent as h}from"./project-app-view-B-CtRlEH.js";import"./use-mobile-DNQy-neC.js";import"./thread-button-1Q3JXQEU.js";import"./use-in-settings-CH61l7dC.js";import"./sheet-BhcdHJA0.js";import"./X-DmIzVIVO.js";import"./tooltip-CxCpd2vh.js";import"./index-CESNu6n_.js";import"./use-panel-navigate-Dl11oG8L.js";import"./use-project-scope-eV1RUVZG.js";import"./use-virtual-mcp-CDAUj4PY.js";import"./use-mcp-client-CgA0k7AX.js";import"./auth-DMDdodew.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-CXl47PXA.js";import"./hooks-y4FNzMnr.js";import"./backoff-8mStPHYB.js";import"./task-board-DQdrQPfw.js";import"./schema-DW2eCFm-.js";import"./agent-icon-CPkpuu5N.js";import"./AlertCircle-BjnxyDOP.js";import"./Tool01-TjgiGeiC.js";import"./ArrowUp-BKoObjW-.js";import"./ArrowLeft-DQ9UKKAN.js";import"./ArrowRight-DiT079bV.js";import"./ZoomOut-Dcywub4h.js";import"./Globe04-DKoPzLrY.js";import"./CheckCircle-i5UWgig8.js";import"./Check-DAeVWel0.js";import"./ChevronUp-BZ-l57nk.js";import"./UserSquare-opUUQIJ1.js";import"./Copy01-DAVjKSIW.js";import"./CreditCard01-BdF-cK8s.js";import"./DotsVertical-Cwch2oVB.js";import"./Eye-DQ7cfCM0.js";import"./Share07-BnshXTQj.js";import"./XClose-Ck6U0czU.js";import"./Image01-DbwBpUqU.js";import"./Key01-zwp6W4d5.js";import"./LayoutLeft-C-SKczLZ.js";import"./Link01-zc_yw7bC.js";import"./LinkExternal01-CXDDMqr6.js";import"./Monitor01-DWGOwDQg.js";import"./Sun-ANdrraHV.js";import"./Palette-DWlnTZiX.js";import"./Plus-qxuO6WDR.js";import"./SearchMd-DX0K-HMy.js";import"./Trash01-CrHs9whM.js";import"./Upload01-C5ztKcks.js";import"./User01-CXM1GVfD.js";import"./Users01-5Z8_4Xc4.js";import"./Zap-DA1b9hd1.js";import"./toolbar-icon-button-DOWuqRsT.js";import"./shell-layout-Bq2laVk4.js";import"./avatar-D35e4GmC.js";import"./download-app-dialog-CwDsIUWZ.js";import"./dialog-GV2-AWhM.js";import"./command-CaZijnVF.js";import"./index-Dn2PGa-1.js";import"./integration-icon-DzNK1v4_.js";import"./project-icon-B8aarRYC.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DxuleY4O.js";import"./autosend-o13Aw1Rn.js";import"./use-org-sso-0Z0wHR7c.js";import"./resizable-DI9TRgqq.js";import"./route-page-header-C3phk_gY.js";import"./gateway-client-Bv7LvgK9.js";import"./tool-namespace-DmnQIdtF.js";import"./use-mcp-tools-DjC5fBeS.js";import"./sandbox-lifecycle-context-DQzttex0.js";import"./use-session-runtime-CXsIHSqC.js";import"./thread-intent-CEfA_P9I.js";import"./slugify-CEUa2lfQ.js";import"./chat-context-WNSIRKCQ.js";import"./use-entitlements-R7iGGl1k.js";import"./use-ai-providers-B23SXI_f.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DyDz5Dvh.js";import"./use-organization-settings-dzIa476E.js";import"./sandbox-url-D3mC8qhT.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DT5aj_bA.js";import"./types-B6rztgnY.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-JFx8RLXa.js";import"./companions-core-BnuxEm_5.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-C8GSbvaz.js";import"./form-CeykBl5J.js";import"./label-5K8407_a.js";import"./input-mcA88pmm.js";import"./use-debounced-value-IfXb0kJG.js";import"./provision-repo-scoped-github-connection-B6zdkC6p.js";import"./useQueries-qsAfW5MY.js";import"./authenticate-and-persist-oauth-CNlmBCGw.js";import"./mcp-oauth-CGCjtFIL.js";import"./track-Dhm24-m4.js";import"./extract-connection-data-CDeCZEXj.js";import"./connection-Bp_V6T8B.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function $o(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{$o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,aP as b,u as g}from"./index-CC25Ppah.js";import{ChatLayout as j}from"./index-bkwORM24.js";import{F as v,H as S}from"./file-share-button-Cty0rZxy.js";import{u as k,b as y,e as _}from"./use-org-fs-Dax61xWP.js";import{S as P}from"./settings-tab-Jt6e4-NS.js";import{b as w}from"./thread-route-Bqw7sU0F.js";import"./use-mobile-DNQy-neC.js";import"./thread-button-1Q3JXQEU.js";import"./use-in-settings-CH61l7dC.js";import"./sheet-BhcdHJA0.js";import"./X-DmIzVIVO.js";import"./tooltip-CxCpd2vh.js";import"./index-CESNu6n_.js";import"./use-panel-navigate-Dl11oG8L.js";import"./use-project-scope-eV1RUVZG.js";import"./use-virtual-mcp-CDAUj4PY.js";import"./use-mcp-client-CgA0k7AX.js";import"./auth-DMDdodew.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-CXl47PXA.js";import"./hooks-y4FNzMnr.js";import"./backoff-8mStPHYB.js";import"./task-board-DQdrQPfw.js";import"./schema-DW2eCFm-.js";import"./agent-icon-CPkpuu5N.js";import"./AlertCircle-BjnxyDOP.js";import"./Tool01-TjgiGeiC.js";import"./ArrowUp-BKoObjW-.js";import"./ArrowLeft-DQ9UKKAN.js";import"./ArrowRight-DiT079bV.js";import"./ZoomOut-Dcywub4h.js";import"./Globe04-DKoPzLrY.js";import"./CheckCircle-i5UWgig8.js";import"./Check-DAeVWel0.js";import"./ChevronUp-BZ-l57nk.js";import"./UserSquare-opUUQIJ1.js";import"./Copy01-DAVjKSIW.js";import"./CreditCard01-BdF-cK8s.js";import"./DotsVertical-Cwch2oVB.js";import"./Eye-DQ7cfCM0.js";import"./Share07-BnshXTQj.js";import"./XClose-Ck6U0czU.js";import"./Image01-DbwBpUqU.js";import"./Key01-zwp6W4d5.js";import"./LayoutLeft-C-SKczLZ.js";import"./Link01-zc_yw7bC.js";import"./LinkExternal01-CXDDMqr6.js";import"./Monitor01-DWGOwDQg.js";import"./Sun-ANdrraHV.js";import"./Palette-DWlnTZiX.js";import"./Plus-qxuO6WDR.js";import"./SearchMd-DX0K-HMy.js";import"./Trash01-CrHs9whM.js";import"./Upload01-C5ztKcks.js";import"./User01-CXM1GVfD.js";import"./Users01-5Z8_4Xc4.js";import"./Zap-DA1b9hd1.js";import"./toolbar-icon-button-DOWuqRsT.js";import"./shell-layout-Bq2laVk4.js";import"./avatar-D35e4GmC.js";import"./download-app-dialog-CwDsIUWZ.js";import"./dialog-GV2-AWhM.js";import"./command-CaZijnVF.js";import"./index-Dn2PGa-1.js";import"./integration-icon-DzNK1v4_.js";import"./project-icon-B8aarRYC.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DxuleY4O.js";import"./autosend-o13Aw1Rn.js";import"./use-org-sso-0Z0wHR7c.js";import"./resizable-DI9TRgqq.js";import"./route-page-header-C3phk_gY.js";import"./input-mcA88pmm.js";import"./popover-Ckvyzpb1.js";import"./extract-connection-data-CDeCZEXj.js";import"./metadata-D72DunRR.js";import"./connection-Bp_V6T8B.js";import"./chat-context-WNSIRKCQ.js";import"./thread-intent-CEfA_P9I.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-R7iGGl1k.js";import"./use-ai-providers-B23SXI_f.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DyDz5Dvh.js";import"./use-organization-settings-dzIa476E.js";import"./build-improve-prompt-doc-PevJByNh.js";import"./empty-state-DD1de6E_.js";import"./use-date-fns-locale-BFb3ULJS.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B9c3iEps.js";import"./mcp-oauth-CGCjtFIL.js";import"./alert-dialog-BqYCADnJ.js";import"./textarea-Czh9V7Yz.js";import"./use-debounced-autosave-Dco5Jt9P.js";import"./add-connection-dialog-DU7LzF51.js";import"./collection-search-Dj-lj2Fa.js";import"./connection-card-CtvZJL9l.js";import"./useInfiniteQuery-DW7bCHpf.js";import"./infiniteQueryObserver-BKtbJar9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BpYKYeO-.js";import"./form-CeykBl5J.js";import"./label-5K8407_a.js";import"./select-Cfsqli3Z.js";import"./connection-form-helpers-BsreWXIJ.js";import"./authenticate-and-persist-oauth-CNlmBCGw.js";import"./collection-tabs-glsScWrF.js";import"./badge-B194cO51.js";import"./use-infinite-scroll-CyOQA4SB.js";import"./useSuspenseInfiniteQuery-DF4BukrQ.js";import"./file-type-icon-C06txfjh.js";import"./checkbox-JdVFVT9j.js";import"./search-input-DZFOIFWl.js";import"./use-mcp-auth-status-CE4mQood.js";import"./types-B6rztgnY.js";import"./use-mcp-tools-DjC5fBeS.js";import"./use-mcp-prompts--gNDdjf0.js";import"./utils-CVEq3hMx.js";import"./switch-EEYQU2u1.js";import"./scroll-area-CRSx-oF3.js";import"./use-project-native-view-presence-pXoLbAJi.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cdbct8Cf.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DN1bS66D.js";import"./virtual-mcp-DhabdkeJ.js";import"./repository-import-picker-DgRDvroV.js";import"./use-navigate-to-agent-BmpybU3_.js";import"./repository-picker-DJ0Bq0Gn.js";import"./github-icon-CbIIkcig.js";import"./use-debounced-value-IfXb0kJG.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BSKOhI0I.js";import"./use-secrets-CvGXZI7J.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function M(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(M,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function E(){const i=c.c(4);let t;i[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},i[0]=t):t=i[0];const r=g(t),p=w(),o="path"in r&&typeof r.path=="string"?r.path:void 0;let m;return i[1]!==o||i[2]!==p?(m=o?e.jsx(D,{path:o},o):e.jsx(P,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function pr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(E,{})}),i[0]=t):t=i[0],t}export{pr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as n,j as s,u as a}from"./index-CC25Ppah.js";import{ChatLayout as l}from"./index-bkwORM24.js";import{L as c}from"./preview-content-C_A2MJh2.js";import{a as f}from"./use-panel-navigate-Dl11oG8L.js";import{S as u}from"./settings-tab-Jt6e4-NS.js";import{b as h}from"./thread-route-Bqw7sU0F.js";import"./use-mobile-DNQy-neC.js";import"./thread-button-1Q3JXQEU.js";import"./use-in-settings-CH61l7dC.js";import"./sheet-BhcdHJA0.js";import"./X-DmIzVIVO.js";import"./tooltip-CxCpd2vh.js";import"./index-CESNu6n_.js";import"./use-route-default-main-CXl47PXA.js";import"./hooks-y4FNzMnr.js";import"./use-mcp-client-CgA0k7AX.js";import"./auth-DMDdodew.js";import"./backoff-8mStPHYB.js";import"./task-board-DQdrQPfw.js";import"./schema-DW2eCFm-.js";import"./agent-icon-CPkpuu5N.js";import"./AlertCircle-BjnxyDOP.js";import"./Tool01-TjgiGeiC.js";import"./ArrowUp-BKoObjW-.js";import"./ArrowLeft-DQ9UKKAN.js";import"./ArrowRight-DiT079bV.js";import"./ZoomOut-Dcywub4h.js";import"./Globe04-DKoPzLrY.js";import"./CheckCircle-i5UWgig8.js";import"./Check-DAeVWel0.js";import"./ChevronUp-BZ-l57nk.js";import"./UserSquare-opUUQIJ1.js";import"./Copy01-DAVjKSIW.js";import"./CreditCard01-BdF-cK8s.js";import"./DotsVertical-Cwch2oVB.js";import"./Eye-DQ7cfCM0.js";import"./Share07-BnshXTQj.js";import"./XClose-Ck6U0czU.js";import"./Image01-DbwBpUqU.js";import"./Key01-zwp6W4d5.js";import"./LayoutLeft-C-SKczLZ.js";import"./Link01-zc_yw7bC.js";import"./LinkExternal01-CXDDMqr6.js";import"./Monitor01-DWGOwDQg.js";import"./Sun-ANdrraHV.js";import"./Palette-DWlnTZiX.js";import"./Plus-qxuO6WDR.js";import"./SearchMd-DX0K-HMy.js";import"./Trash01-CrHs9whM.js";import"./Upload01-C5ztKcks.js";import"./User01-CXM1GVfD.js";import"./Users01-5Z8_4Xc4.js";import"./Zap-DA1b9hd1.js";import"./toolbar-icon-button-DOWuqRsT.js";import"./shell-layout-Bq2laVk4.js";import"./avatar-D35e4GmC.js";import"./download-app-dialog-CwDsIUWZ.js";import"./dialog-GV2-AWhM.js";import"./use-project-scope-eV1RUVZG.js";import"./use-virtual-mcp-CDAUj4PY.js";import"./github-repo-BknN0SVI.js";import"./command-CaZijnVF.js";import"./index-Dn2PGa-1.js";import"./integration-icon-DzNK1v4_.js";import"./project-icon-B8aarRYC.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DxuleY4O.js";import"./autosend-o13Aw1Rn.js";import"./use-org-sso-0Z0wHR7c.js";import"./resizable-DI9TRgqq.js";import"./route-page-header-C3phk_gY.js";import"./file-preview-DCDQ1qgJ.js";import"./use-org-fs-Dax61xWP.js";import"./utils-C77-XjSJ.js";import"./editor-D-V05JcK.js";import"./file-type-icon-C06txfjh.js";import"./markdown-BU3lUbXy.js";import"./org-file-open-context-CxjyfiTf.js";import"./file-share-button-Cty0rZxy.js";import"./input-mcA88pmm.js";import"./popover-Ckvyzpb1.js";import"./location-oTTXFrSF.js";import"./extract-connection-data-CDeCZEXj.js";import"./metadata-D72DunRR.js";import"./connection-Bp_V6T8B.js";import"./chat-context-WNSIRKCQ.js";import"./thread-intent-CEfA_P9I.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-R7iGGl1k.js";import"./use-ai-providers-B23SXI_f.js";import"./use-decopilot-events-DyDz5Dvh.js";import"./use-organization-settings-dzIa476E.js";import"./build-improve-prompt-doc-PevJByNh.js";import"./empty-state-DD1de6E_.js";import"./use-date-fns-locale-BFb3ULJS.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B9c3iEps.js";import"./mcp-oauth-CGCjtFIL.js";import"./alert-dialog-BqYCADnJ.js";import"./textarea-Czh9V7Yz.js";import"./use-debounced-autosave-Dco5Jt9P.js";import"./add-connection-dialog-DU7LzF51.js";import"./collection-search-Dj-lj2Fa.js";import"./connection-card-CtvZJL9l.js";import"./useInfiniteQuery-DW7bCHpf.js";import"./infiniteQueryObserver-BKtbJar9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BpYKYeO-.js";import"./form-CeykBl5J.js";import"./label-5K8407_a.js";import"./select-Cfsqli3Z.js";import"./connection-form-helpers-BsreWXIJ.js";import"./authenticate-and-persist-oauth-CNlmBCGw.js";import"./collection-tabs-glsScWrF.js";import"./badge-B194cO51.js";import"./use-infinite-scroll-CyOQA4SB.js";import"./useSuspenseInfiniteQuery-DF4BukrQ.js";import"./checkbox-JdVFVT9j.js";import"./search-input-DZFOIFWl.js";import"./use-mcp-auth-status-CE4mQood.js";import"./types-B6rztgnY.js";import"./use-mcp-tools-DjC5fBeS.js";import"./use-mcp-prompts--gNDdjf0.js";import"./utils-CVEq3hMx.js";import"./switch-EEYQU2u1.js";import"./scroll-area-CRSx-oF3.js";import"./use-project-native-view-presence-pXoLbAJi.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cdbct8Cf.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DN1bS66D.js";import"./virtual-mcp-DhabdkeJ.js";import"./repository-import-picker-DgRDvroV.js";import"./use-navigate-to-agent-BmpybU3_.js";import"./repository-picker-DJ0Bq0Gn.js";import"./github-icon-CbIIkcig.js";import"./use-debounced-value-IfXb0kJG.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BSKOhI0I.js";import"./use-secrets-CvGXZI7J.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=n.c(4),{previewPath:m,onClose:p,showSeeInLibrary:o}=r,i=o===void 0?!1:o;let e;return t[0]!==p||t[1]!==m||t[2]!==i?(e=s.jsx("div",{className:"flex h-full w-full flex-col bg-background",children:s.jsx(c,{previewPath:m,onClose:p,showSeeInLibrary:i,variant:"panel"})}),t[0]=p,t[1]=m,t[2]=i,t[3]=e):e=t[3],e}function x(r){const t=n.c(5),{path:m}=r,{closePanel:p}=f();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let e;return t[2]!==i||t[3]!==m?(e=s.jsx(b,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=e):e=t[4],e}function y(){const r=n.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=a(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?s.jsx(x,{path:o},o):s.jsx(u,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Yr(){const r=n.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx(l.Content,{children:s.jsx(y,{})}),r[0]=t):t=r[0],t}export{Yr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-CC25Ppah.js";import{ChatLayout as p}from"./index-bkwORM24.js";import{S as e}from"./settings-tab-Jt6e4-NS.js";import{b as n}from"./thread-route-Bqw7sU0F.js";import"./use-mobile-DNQy-neC.js";import"./thread-button-1Q3JXQEU.js";import"./use-in-settings-CH61l7dC.js";import"./sheet-BhcdHJA0.js";import"./X-DmIzVIVO.js";import"./tooltip-CxCpd2vh.js";import"./index-CESNu6n_.js";import"./use-panel-navigate-Dl11oG8L.js";import"./use-project-scope-eV1RUVZG.js";import"./use-virtual-mcp-CDAUj4PY.js";import"./use-mcp-client-CgA0k7AX.js";import"./auth-DMDdodew.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-CXl47PXA.js";import"./hooks-y4FNzMnr.js";import"./backoff-8mStPHYB.js";import"./task-board-DQdrQPfw.js";import"./schema-DW2eCFm-.js";import"./agent-icon-CPkpuu5N.js";import"./AlertCircle-BjnxyDOP.js";import"./Tool01-TjgiGeiC.js";import"./ArrowUp-BKoObjW-.js";import"./ArrowLeft-DQ9UKKAN.js";import"./ArrowRight-DiT079bV.js";import"./ZoomOut-Dcywub4h.js";import"./Globe04-DKoPzLrY.js";import"./CheckCircle-i5UWgig8.js";import"./Check-DAeVWel0.js";import"./ChevronUp-BZ-l57nk.js";import"./UserSquare-opUUQIJ1.js";import"./Copy01-DAVjKSIW.js";import"./CreditCard01-BdF-cK8s.js";import"./DotsVertical-Cwch2oVB.js";import"./Eye-DQ7cfCM0.js";import"./Share07-BnshXTQj.js";import"./XClose-Ck6U0czU.js";import"./Image01-DbwBpUqU.js";import"./Key01-zwp6W4d5.js";import"./LayoutLeft-C-SKczLZ.js";import"./Link01-zc_yw7bC.js";import"./LinkExternal01-CXDDMqr6.js";import"./Monitor01-DWGOwDQg.js";import"./Sun-ANdrraHV.js";import"./Palette-DWlnTZiX.js";import"./Plus-qxuO6WDR.js";import"./SearchMd-DX0K-HMy.js";import"./Trash01-CrHs9whM.js";import"./Upload01-C5ztKcks.js";import"./User01-CXM1GVfD.js";import"./Users01-5Z8_4Xc4.js";import"./Zap-DA1b9hd1.js";import"./toolbar-icon-button-DOWuqRsT.js";import"./shell-layout-Bq2laVk4.js";import"./avatar-D35e4GmC.js";import"./download-app-dialog-CwDsIUWZ.js";import"./dialog-GV2-AWhM.js";import"./command-CaZijnVF.js";import"./index-Dn2PGa-1.js";import"./integration-icon-DzNK1v4_.js";import"./project-icon-B8aarRYC.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DxuleY4O.js";import"./autosend-o13Aw1Rn.js";import"./use-org-sso-0Z0wHR7c.js";import"./resizable-DI9TRgqq.js";import"./route-page-header-C3phk_gY.js";import"./extract-connection-data-CDeCZEXj.js";import"./metadata-D72DunRR.js";import"./connection-Bp_V6T8B.js";import"./chat-context-WNSIRKCQ.js";import"./thread-intent-CEfA_P9I.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-R7iGGl1k.js";import"./use-ai-providers-B23SXI_f.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DyDz5Dvh.js";import"./use-organization-settings-dzIa476E.js";import"./build-improve-prompt-doc-PevJByNh.js";import"./empty-state-DD1de6E_.js";import"./use-date-fns-locale-BFb3ULJS.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-B9c3iEps.js";import"./mcp-oauth-CGCjtFIL.js";import"./alert-dialog-BqYCADnJ.js";import"./textarea-Czh9V7Yz.js";import"./use-debounced-autosave-Dco5Jt9P.js";import"./add-connection-dialog-DU7LzF51.js";import"./collection-search-Dj-lj2Fa.js";import"./connection-card-CtvZJL9l.js";import"./useInfiniteQuery-DW7bCHpf.js";import"./infiniteQueryObserver-BKtbJar9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BpYKYeO-.js";import"./form-CeykBl5J.js";import"./label-5K8407_a.js";import"./input-mcA88pmm.js";import"./select-Cfsqli3Z.js";import"./connection-form-helpers-BsreWXIJ.js";import"./authenticate-and-persist-oauth-CNlmBCGw.js";import"./collection-tabs-glsScWrF.js";import"./badge-B194cO51.js";import"./use-infinite-scroll-CyOQA4SB.js";import"./useSuspenseInfiniteQuery-DF4BukrQ.js";import"./file-type-icon-C06txfjh.js";import"./use-org-fs-Dax61xWP.js";import"./checkbox-JdVFVT9j.js";import"./search-input-DZFOIFWl.js";import"./use-mcp-auth-status-CE4mQood.js";import"./types-B6rztgnY.js";import"./use-mcp-tools-DjC5fBeS.js";import"./use-mcp-prompts--gNDdjf0.js";import"./utils-CVEq3hMx.js";import"./switch-EEYQU2u1.js";import"./popover-Ckvyzpb1.js";import"./scroll-area-CRSx-oF3.js";import"./use-project-native-view-presence-pXoLbAJi.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cdbct8Cf.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DN1bS66D.js";import"./virtual-mcp-DhabdkeJ.js";import"./repository-import-picker-DgRDvroV.js";import"./use-navigate-to-agent-BmpybU3_.js";import"./repository-picker-DJ0Bq0Gn.js";import"./github-icon-CbIIkcig.js";import"./use-debounced-value-IfXb0kJG.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BSKOhI0I.js";import"./use-secrets-CvGXZI7J.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function zo(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{zo as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-C8-AkN7L.js","assets/index-CC25Ppah.js","assets/index-DFsKuQKl.css","assets/agent-icon-CPkpuu5N.js","assets/AlertCircle-BjnxyDOP.js","assets/Tool01-TjgiGeiC.js","assets/ArrowUp-BKoObjW-.js","assets/ArrowLeft-DQ9UKKAN.js","assets/ArrowRight-DiT079bV.js","assets/ZoomOut-Dcywub4h.js","assets/Globe04-DKoPzLrY.js","assets/CheckCircle-i5UWgig8.js","assets/Check-DAeVWel0.js","assets/ChevronUp-BZ-l57nk.js","assets/UserSquare-opUUQIJ1.js","assets/Copy01-DAVjKSIW.js","assets/CreditCard01-BdF-cK8s.js","assets/DotsVertical-Cwch2oVB.js","assets/Eye-DQ7cfCM0.js","assets/Share07-BnshXTQj.js","assets/XClose-Ck6U0czU.js","assets/Image01-DbwBpUqU.js","assets/Key01-zwp6W4d5.js","assets/LayoutLeft-C-SKczLZ.js","assets/Link01-zc_yw7bC.js","assets/LinkExternal01-CXDDMqr6.js","assets/Monitor01-DWGOwDQg.js","assets/Sun-ANdrraHV.js","assets/Palette-DWlnTZiX.js","assets/Plus-qxuO6WDR.js","assets/SearchMd-DX0K-HMy.js","assets/Trash01-CrHs9whM.js","assets/Upload01-C5ztKcks.js","assets/User01-CXM1GVfD.js","assets/Users01-5Z8_4Xc4.js","assets/X-DmIzVIVO.js","assets/Zap-DA1b9hd1.js","assets/scroll-area-CRSx-oF3.js","assets/select-Cfsqli3Z.js","assets/index-CESNu6n_.js","assets/tooltip-CxCpd2vh.js","assets/chat-context-WNSIRKCQ.js","assets/use-panel-navigate-Dl11oG8L.js","assets/thread-route-Bqw7sU0F.js","assets/use-project-scope-eV1RUVZG.js","assets/use-virtual-mcp-CDAUj4PY.js","assets/use-mcp-client-CgA0k7AX.js","assets/auth-DMDdodew.js","assets/github-repo-BknN0SVI.js","assets/autosend-o13Aw1Rn.js","assets/thread-intent-CEfA_P9I.js","assets/slugify-CEUa2lfQ.js","assets/hooks-y4FNzMnr.js","assets/backoff-8mStPHYB.js","assets/task-board-DQdrQPfw.js","assets/schema-DW2eCFm-.js","assets/use-is-desktop-app-BNujXJc_.js","assets/use-entitlements-R7iGGl1k.js","assets/use-ai-providers-B23SXI_f.js","assets/location-oTTXFrSF.js","assets/use-decopilot-events-DyDz5Dvh.js","assets/use-organization-settings-dzIa476E.js","assets/editor-D-V05JcK.js","assets/shell-layout-Bq2laVk4.js","assets/avatar-D35e4GmC.js","assets/download-app-dialog-CwDsIUWZ.js","assets/dialog-GV2-AWhM.js","assets/command-CaZijnVF.js","assets/index-Dn2PGa-1.js","assets/integration-icon-DzNK1v4_.js","assets/project-icon-B8aarRYC.js","assets/required-auth-layout-DxuleY4O.js","assets/use-org-sso-0Z0wHR7c.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-B1R0585s.js","assets/sandbox-url-D3mC8qhT.js","assets/input-mcA88pmm.js","assets/alert-dialog-BqYCADnJ.js","assets/utils-C77-XjSJ.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as _,m as w,K as P,b as F,X as R,j as p,r as k,aF as A,h as N,u as q}from"./index-CC25Ppah.js";import{A as C}from"./agent-view-guard-tp4TNcN4.js";import{F as B}from"./feature-gate-CVihx7r6.js";import{b as K}from"./chat-context-WNSIRKCQ.js";import{d as M,c as $}from"./sandbox-lifecycle-context-DQzttex0.js";import{b as z}from"./sandbox-url-D3mC8qhT.js";import{E as G}from"./empty-state-DD1de6E_.js";import{u as L}from"./use-is-desktop-app-BNujXJc_.js";import"./use-main-panel-tabs-DT72lles.js";import"./use-route-default-main-CXl47PXA.js";import"./Share07-BnshXTQj.js";import"./Monitor01-DWGOwDQg.js";import"./use-connection-B9c3iEps.js";import"./use-mcp-client-CgA0k7AX.js";import"./auth-DMDdodew.js";import"./use-mcp-tools-DjC5fBeS.js";import"./use-virtual-mcp-CDAUj4PY.js";import"./types-B6rztgnY.js";import"./utils-CVEq3hMx.js";import"./use-project-scope-eV1RUVZG.js";import"./github-repo-BknN0SVI.js";import"./index-DQZsFtMU.js";import"./ArrowUp-BKoObjW-.js";import"./gateway-client-Bv7LvgK9.js";import"./tooltip-CxCpd2vh.js";import"./index-CESNu6n_.js";import"./dialog-GV2-AWhM.js";import"./X-DmIzVIVO.js";import"./drawer-BpYKYeO-.js";import"./collection-search-Dj-lj2Fa.js";import"./SearchMd-DX0K-HMy.js";import"./use-mobile-DNQy-neC.js";import"./use-mcp-prompts--gNDdjf0.js";import"./index-DVEm55Ak.js";import"./form-CeykBl5J.js";import"./label-5K8407_a.js";import"./input-mcA88pmm.js";import"./org-file-open-context-CxjyfiTf.js";import"./use-panel-navigate-Dl11oG8L.js";import"./thread-route-Bqw7sU0F.js";import"./input-BkFUax8j.js";import"./shell-layout-Bq2laVk4.js";import"./avatar-D35e4GmC.js";import"./User01-CXM1GVfD.js";import"./Globe04-DKoPzLrY.js";import"./UserSquare-opUUQIJ1.js";import"./agent-icon-CPkpuu5N.js";import"./AlertCircle-BjnxyDOP.js";import"./Tool01-TjgiGeiC.js";import"./ArrowLeft-DQ9UKKAN.js";import"./ArrowRight-DiT079bV.js";import"./ZoomOut-Dcywub4h.js";import"./CheckCircle-i5UWgig8.js";import"./Check-DAeVWel0.js";import"./ChevronUp-BZ-l57nk.js";import"./Copy01-DAVjKSIW.js";import"./CreditCard01-BdF-cK8s.js";import"./DotsVertical-Cwch2oVB.js";import"./Eye-DQ7cfCM0.js";import"./XClose-Ck6U0czU.js";import"./Image01-DbwBpUqU.js";import"./Key01-zwp6W4d5.js";import"./LayoutLeft-C-SKczLZ.js";import"./Link01-zc_yw7bC.js";import"./LinkExternal01-CXDDMqr6.js";import"./Sun-ANdrraHV.js";import"./Palette-DWlnTZiX.js";import"./Plus-qxuO6WDR.js";import"./Trash01-CrHs9whM.js";import"./Upload01-C5ztKcks.js";import"./Users01-5Z8_4Xc4.js";import"./Zap-DA1b9hd1.js";import"./download-app-dialog-CwDsIUWZ.js";import"./command-CaZijnVF.js";import"./index-Dn2PGa-1.js";import"./integration-icon-DzNK1v4_.js";import"./project-icon-B8aarRYC.js";import"./hooks-y4FNzMnr.js";import"./backoff-8mStPHYB.js";import"./task-board-DQdrQPfw.js";import"./schema-DW2eCFm-.js";import"./required-auth-layout-DxuleY4O.js";import"./autosend-o13Aw1Rn.js";import"./use-org-sso-0Z0wHR7c.js";import"./chat-draft-BcyCtTKR.js";import"./use-session-runtime-CXsIHSqC.js";import"./thread-intent-CEfA_P9I.js";import"./slugify-CEUa2lfQ.js";import"./select-Cfsqli3Z.js";import"./usage-stats-BFEJJHEo.js";import"./use-copy-C57femQY.js";import"./markdown-BU3lUbXy.js";import"./format-time-BtXRrtv4.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-entitlements-R7iGGl1k.js";import"./tabs-B6noAKK3.js";import"./use-deco-credits-DNa0dEA5.js";import"./use-ai-providers-B23SXI_f.js";import"./toggle-group-lq2B3qIc.js";import"./tool-namespace-DmnQIdtF.js";import"./use-open-billing-url-jz-QPVzs.js";import"./decopilot-CZjF5g1z.js";import"./checkbox-JdVFVT9j.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-Ckvyzpb1.js";import"./use-organization-settings-dzIa476E.js";import"./index-ClcQkcu8.js";import"./input-DwcsciNr.js";import"./suggestion-DpmAiVaO.js";import"./use-org-fs-Dax61xWP.js";import"./question-004-sINsf4GQ.js";import"./use-members-i2T2it_v.js";import"./use-org-auth-client-B7ZtWQAU.js";import"./feature-paywall-BWXzTC8M.js";import"./plan-ladder-DdvajrNu.js";import"./add-connection-dialog-DU7LzF51.js";import"./extract-connection-data-CDeCZEXj.js";import"./metadata-D72DunRR.js";import"./connection-Bp_V6T8B.js";import"./connection-card-CtvZJL9l.js";import"./useInfiniteQuery-DW7bCHpf.js";import"./infiniteQueryObserver-BKtbJar9.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-Czh9V7Yz.js";import"./connection-form-helpers-BsreWXIJ.js";import"./authenticate-and-persist-oauth-CNlmBCGw.js";import"./mcp-oauth-CGCjtFIL.js";import"./collection-tabs-glsScWrF.js";import"./badge-B194cO51.js";import"./use-infinite-scroll-CyOQA4SB.js";import"./useSuspenseInfiniteQuery-DF4BukrQ.js";import"./pair-h-AKbDiX.js";import"./collapsible-Cvuvqexz.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DT5aj_bA.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-BhcdHJA0.js";import"./use-navigate-to-agent-BmpybU3_.js";import"./use-thread-outputs-a13sDbFX.js";import"./file-type-icon-C06txfjh.js";import"./resolve-tab-icon-DXJnhSrQ.js";import"./use-task-metadata-B50R7YVb.js";import"./use-project-native-view-presence-pXoLbAJi.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cdbct8Cf.js";import"./site-slug-DebpOoQq.js";import"./virtual-mcp-DhabdkeJ.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DyDz5Dvh.js";import"./sandbox-start-errors-BK_aDCyt.js";function V(e){const t=_.c(14),{orgSlug:m,virtualMcpId:i,branch:o,threadId:r,enabled:b}=e,s=b===void 0?!0:b;let l;t[0]!==o||t[1]!==m||t[2]!==r||t[3]!==i?(l=P.sandboxRepoDir(m,i,o,r),t[0]=o,t[1]=m,t[2]=r,t[3]=i,t[4]=l):l=t[4];let n;t[5]!==o||t[6]!==m||t[7]!==r||t[8]!==i?(n=async()=>{const h=z({orgSlug:m,virtualMcpId:i,branch:o,threadId:r},"config"),c=await fetch(h);return c.ok?(await c.json()).repoDir??null:null},t[5]=o,t[6]=m,t[7]=r,t[8]=i,t[9]=n):n=t[9];let a;return t[10]!==s||t[11]!==l||t[12]!==n?(a={queryKey:l,queryFn:n,enabled:s,staleTime:1/0},t[10]=s,t[11]=l,t[12]=n,t[13]=a):a=t[13],w(a).data??null}const O=k.lazy(()=>A(()=>import("./file-explorer-C8-AkN7L.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,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79])).then(e=>({default:e.FileExplorer})));function Q(e){const t=_.c(26),{openPath:m}=e,i=F(),{org:o}=R(),{currentBranch:r,taskId:b,virtualMcpId:s}=K(),l=L(),n=M(),a=$();n.vmEntry,a.lifecycle.phase;const D=l,h=s??"",c=r??"",g=b??null,E=D;let y;t[0]!==o.slug||t[1]!==h||t[2]!==c||t[3]!==g||t[4]!==E?(y={orgSlug:o.slug,virtualMcpId:h,branch:c,threadId:g,enabled:E},t[0]=o.slug,t[1]=h,t[2]=c,t[3]=g,t[4]=E,t[5]=y):y=t[5],V(y);const I=null;if(!s||!r){let d;t[6]!==i?(d=i("mainPanelTabs.codeTab.noSandboxToBrowse"),t[6]=i,t[7]=d):d=t[7];let x;t[8]!==i?(x=i("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[8]=i,t[9]=x):x=t[9];let j;return t[10]!==d||t[11]!==x?(j=p.jsx(G,{className:"h-full",title:d,description:x}),t[10]=d,t[11]=x,t[12]=j):j=t[12],j}let u;t[13]!==I||t[14]!==i?(u=I,t[13]=I,t[14]=i,t[15]=u):u=t[15];let S;t[16]===Symbol.for("react.memo_cache_sentinel")?(S=p.jsx("div",{className:"h-full flex items-center justify-center",children:p.jsx(N,{className:"size-5 text-muted-foreground"})}),t[16]=S):S=t[16];const T=b??null;let f;t[17]!==r||t[18]!==m||t[19]!==o.slug||t[20]!==T||t[21]!==s?(f=p.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:p.jsx(k.Suspense,{fallback:S,children:p.jsx(O,{orgSlug:o.slug,virtualMcpId:s,branch:r,threadId:T,openPath:m})})}),t[17]=r,t[18]=m,t[19]=o.slug,t[20]=T,t[21]=s,t[22]=f):f=t[22];let v;return t[23]!==u||t[24]!==f?(v=p.jsxs("div",{className:"flex flex-col w-full h-full",children:[u,f]}),t[23]=u,t[24]=f,t[25]=v):v=t[25],v}function Cr(){const e=_.c(3);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},e[0]=t):t=e[0];const m=q(t),o=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let r;return e[1]!==o?(r=p.jsx(C,{tabId:"code",children:p.jsx(B,{feature:"cms",children:p.jsx(Q,{openPath:o})})}),e[1]=o,e[2]=r):r=e[2],r}export{Cr as default};
|