decocms 4.397.0 → 4.398.0
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-B3LJiQhZ.js → AlertCircle-BQBmepo1.js} +1 -1
- package/dist/client/assets/{AreaChart-C3D5EayI.js → AreaChart-Bnl86Bmb.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DmWma6hW.js → ArrowLeft-DHPtMbTg.js} +1 -1
- package/dist/client/assets/{ArrowRight-540iMVH3.js → ArrowRight-m94XgZ3O.js} +1 -1
- package/dist/client/assets/{ArrowUp-BB5V3348.js → ArrowUp-DBDp30x0.js} +1 -1
- package/dist/client/assets/{CartesianChart-CYHbwjBR.js → CartesianChart-W8IwLG3F.js} +1 -1
- package/dist/client/assets/{Check-CGKF06bT.js → Check-Bcnv-H55.js} +1 -1
- package/dist/client/assets/{CheckCircle-tvGC17Dy.js → CheckCircle-CySwUqst.js} +1 -1
- package/dist/client/assets/{ChevronUp-Du4AWZmG.js → ChevronUp-wyCoS3df.js} +1 -1
- package/dist/client/assets/{Copy01-CYbqJpFZ.js → Copy01-CMEvgxoC.js} +1 -1
- package/dist/client/assets/{CreditCard01-CK4yyvJY.js → CreditCard01-Bi7YfG5v.js} +1 -1
- package/dist/client/assets/{DotsVertical-BQfY36BV.js → DotsVertical-B97QY-fA.js} +1 -1
- package/dist/client/assets/{Download01-C8jubU2p.js → Download01-DokiLBvz.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-DIzox7VI.js → ErrorBarContext-CyEUeczg.js} +1 -1
- package/dist/client/assets/{Eye-CpLoEsen.js → Eye-DlNsmazk.js} +1 -1
- package/dist/client/assets/{Globe04-DnURSsdQ.js → Globe04-CcTw2hMd.js} +1 -1
- package/dist/client/assets/{Image01-DPZCMheY.js → Image01-CGox3JEN.js} +1 -1
- package/dist/client/assets/{Key01-CSyDklFV.js → Key01-MH27mIao.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DgiG6wiH.js → LayoutLeft-CpKRfpdN.js} +1 -1
- package/dist/client/assets/{Line-BzHEfJpl.js → Line-BldjxoIZ.js} +1 -1
- package/dist/client/assets/{Link01-CYG0Mr8Q.js → Link01-BcMSFUIJ.js} +1 -1
- package/dist/client/assets/{LinkExternal01-Div0d_z3.js → LinkExternal01-3Lsw2Z8I.js} +1 -1
- package/dist/client/assets/{Monitor01-BrSZ6zzu.js → Monitor01-FNWg7-7u.js} +1 -1
- package/dist/client/assets/{Package-C5JGfmw5.js → Package-ColnpoOk.js} +1 -1
- package/dist/client/assets/{Palette-Bm4HMPv2.js → Palette-Bb9IRvVj.js} +1 -1
- package/dist/client/assets/{Plus-Do5Wkomw.js → Plus-t4kIBGIE.js} +1 -1
- package/dist/client/assets/{SearchLg-gOfrWgIs.js → SearchLg-DrU6iSmg.js} +1 -1
- package/dist/client/assets/{SearchMd-B9ModJFt.js → SearchMd-Y5wxql57.js} +1 -1
- package/dist/client/assets/{Sector-83Vf-xGJ.js → Sector-DfoxRE0A.js} +1 -1
- package/dist/client/assets/{Share07-DpckpNEB.js → Share07-DxxTtQWb.js} +1 -1
- package/dist/client/assets/{Stars01-B6IfixlN.js → Stars01-Dwmyh59Q.js} +1 -1
- package/dist/client/assets/{Sun-CzonSHrU.js → Sun-mSxdzNTE.js} +1 -1
- package/dist/client/assets/{Tool01-DK_vv6qf.js → Tool01-CaOf6Mu4.js} +1 -1
- package/dist/client/assets/{Trash01-Dw6PLr8l.js → Trash01-DHtEq5nA.js} +1 -1
- package/dist/client/assets/{Upload01-BsQDz7U2.js → Upload01--yrzZIir.js} +1 -1
- package/dist/client/assets/{User01-Bla6DkK3.js → User01-Dn00_JAZ.js} +1 -1
- package/dist/client/assets/{UserSquare-CHvWRyuq.js → UserSquare-BfH7tTry.js} +1 -1
- package/dist/client/assets/{Users01-fXdkObFe.js → Users01-BBUvRTwh.js} +1 -1
- package/dist/client/assets/{X-CLqvixem.js → X-xX_XXXXt.js} +1 -1
- package/dist/client/assets/{XCircle-xC8IFHez.js → XCircle-Bdqr7Csd.js} +1 -1
- package/dist/client/assets/{XClose-1APsw2yP.js → XClose-Cx8dSxYY.js} +1 -1
- package/dist/client/assets/{Zap-SzxRRv0w.js → Zap-Da5qzBL9.js} +1 -1
- package/dist/client/assets/{ZoomOut-DD-ULjJm.js → ZoomOut-C8BTMnO9.js} +1 -1
- package/dist/client/assets/{access-gate-DuyMJbDj.js → access-gate-wTt0hkiV.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-D9j0h-SU.js → add-connection-dialog-C8n1sIiv.js} +1 -1
- package/dist/client/assets/{agent-analytics-BYTMzPFg.js → agent-analytics-BigiGcC3.js} +1 -1
- package/dist/client/assets/agent-app-BynIiQPm.js +1 -0
- package/dist/client/assets/{agent-assets-BvxD5BYD.js → agent-assets-C0cz7g53.js} +1 -1
- package/dist/client/assets/{agent-automation-Ba85XZXF.js → agent-automation-NB5zps7C.js} +1 -1
- package/dist/client/assets/{agent-automations-C3Rb_m0i.js → agent-automations-Dr2TOtVh.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-BAkxw0dJ.js → agent-connect-sources-BP-ePYzm.js} +1 -1
- package/dist/client/assets/agent-deck-B4AuEIZ3.js +1 -0
- package/dist/client/assets/{agent-e2e-DfSc6gB-.js → agent-e2e-7pGygJe1.js} +1 -1
- package/dist/client/assets/{agent-experiments-DYALFaiE.js → agent-experiments-NFpgU_vW.js} +1 -1
- package/dist/client/assets/agent-file-CtFUY5q3.js +1 -0
- package/dist/client/assets/{agent-git-Cx-YU73R.js → agent-git-Dp2pjcq7.js} +1 -1
- package/dist/client/assets/{agent-hosting-BCPfQ2PT.js → agent-hosting-swMJFfI8.js} +1 -1
- package/dist/client/assets/{agent-icon-CVsOY5Om.js → agent-icon-b_XHjZEZ.js} +1 -1
- package/dist/client/assets/agent-library-file-Cs2o3xUR.js +1 -0
- package/dist/client/assets/{agent-monitor-B-yEUTbW.js → agent-monitor-DXml8cXU.js} +1 -1
- package/dist/client/assets/{agent-overview-Cfajc4T9.js → agent-overview-B-8Q_kMe.js} +1 -1
- package/dist/client/assets/agent-settings-D_j9iMnB.js +1 -0
- package/dist/client/assets/{agent-site-editor-CkmomzNE.js → agent-site-editor-C69PUReM.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-DSXPZTZD.js +2 -0
- package/dist/client/assets/agent-site-editor-content-B9j94FVC.js +9 -0
- package/dist/client/assets/{agent-site-editor-preview-DDrBOF0Z.js → agent-site-editor-preview-CKfhefDr.js} +3 -3
- package/dist/client/assets/agent-view-cJkl5h-x.js +1 -0
- package/dist/client/assets/{agent-view-guard-B7Mzpeja.js → agent-view-guard-DH71qayK.js} +1 -1
- package/dist/client/assets/{agents-list-IOt-xE6T.js → agents-list-DqxafIkw.js} +1 -1
- package/dist/client/assets/{ai-providers-tko4xsdH.js → ai-providers-DjYgCZLG.js} +1 -1
- package/dist/client/assets/{alert-CQx6yLHp.js → alert-DJICfxE6.js} +1 -1
- package/dist/client/assets/{alert-dialog-m7PHs13d.js → alert-dialog-DehGSRTj.js} +1 -1
- package/dist/client/assets/{analytics-sections-DsjRpqe8.js → analytics-sections-DAtGnCwB.js} +1 -1
- package/dist/client/assets/{api-keys-BprG_h9e.js → api-keys-BRbJWypK.js} +1 -1
- package/dist/client/assets/api-keys-CRlcHMxs.js +1 -0
- package/dist/client/assets/app-editor-BYU_FtWh.js +1 -0
- package/dist/client/assets/{asset-utils-DvBCIwrI.js → asset-utils-Dc_dFFTI.js} +1 -1
- package/dist/client/assets/{auth-k9t16OOb.js → auth-CxmhwEgd.js} +1 -1
- package/dist/client/assets/{auth-catchall-C7UKh7ij.js → auth-catchall-CJK5Vd3r.js} +1 -1
- package/dist/client/assets/{auth-entry-C6RqohRy.js → auth-entry-XnuRce_W.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BHZF4vyi.js → auth-split-layout-CNTa1r8B.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-8HHvB0nM.js → authenticate-and-persist-oauth-D88bk5XQ.js} +1 -1
- package/dist/client/assets/{automation-list-row-C44HdDvH.js → automation-list-row-CQBHFIqU.js} +1 -1
- package/dist/client/assets/{automation-runs-BCo5l857.js → automation-runs-BNk_SzYI.js} +1 -1
- package/dist/client/assets/{automations-CYGQmasI.js → automations-CzHIfHdu.js} +1 -1
- package/dist/client/assets/{autosend-BKkKn8iq.js → autosend-CR9k38nC.js} +1 -1
- package/dist/client/assets/{avatar-B9CWtHB4.js → avatar-BOPY-KDj.js} +1 -1
- package/dist/client/assets/{badge-DS7xysUQ.js → badge-CN6KFcHa.js} +1 -1
- package/dist/client/assets/{block-document-C4eQcnX0.js → block-document-9qy4_FT6.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-sjVUFVpv.js → blocks-preview-workspace-context-uDXO7VHT.js} +1 -1
- package/dist/client/assets/{breadcrumb-DgDOitTK.js → breadcrumb-BxovhK-E.js} +1 -1
- package/dist/client/assets/{buckets-B9kHwSwC.js → buckets-B83w_wIY.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-lqIM7ao_.js → build-improve-prompt-doc-Z251-hmh.js} +1 -1
- package/dist/client/assets/{calendar-v9y9PDp2.js → calendar-Dd9w8Cda.js} +1 -1
- package/dist/client/assets/{capability-load-error-BByCTECw.js → capability-load-error-DVSWQq85.js} +1 -1
- package/dist/client/assets/{category-editor-BreOyR0b.js → category-editor-Bvuph8Uc.js} +1 -1
- package/dist/client/assets/{chart-BCxri3_D.js → chart-D837siBd.js} +1 -1
- package/dist/client/assets/{chat-context-CIrojUbL.js → chat-context-mOTo9_NI.js} +1 -1
- package/dist/client/assets/{chat-draft-CsL23XeE.js → chat-draft-D14VCCNF.js} +1 -1
- package/dist/client/assets/{checkbox-DXebLGmO.js → checkbox-I2peiheL.js} +1 -1
- package/dist/client/assets/{choose-editor-DTKQtlb0.js → choose-editor-BF24n3Ts.js} +1 -1
- package/dist/client/assets/{claim-phase-copy-Oexgf5gh.js → claim-phase-copy-nu5hupgI.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BnGCv2Bd.js → cli-auth-success-BDtPEboS.js} +1 -1
- package/dist/client/assets/{client-icons-D2WOCZv4.js → client-icons-D_GjDPGl.js} +1 -1
- package/dist/client/assets/{collapsible-Ckib1khq.js → collapsible-gVegBMwF.js} +1 -1
- package/dist/client/assets/{collection-detail-DnoTme22.js → collection-detail-RDK_8DsU.js} +1 -1
- package/dist/client/assets/{collection-display-button-CJrP29Qc.js → collection-display-button-BFbabvmp.js} +1 -1
- package/dist/client/assets/{collection-search-B2Rze4Ue.js → collection-search-4vCvX0QD.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-C4p-UNKT.js → collection-table-wrapper-DxjlDy-5.js} +1 -1
- package/dist/client/assets/{collection-tabs-CrAcGqu0.js → collection-tabs-DS-Im1ic.js} +1 -1
- package/dist/client/assets/{combobox-lelWCr2H.js → combobox-DrUSoNBs.js} +1 -1
- package/dist/client/assets/{command-DZRWMxD5.js → command-gKTxqgCX.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-Di0GvwiM.js → companion-mcps-section-CP9gqcaw.js} +1 -1
- package/dist/client/assets/{connect-DQoon_ei.js → connect-DRelsvjB.js} +1 -1
- package/dist/client/assets/{connect-layout-DxnvLjPI.js → connect-layout-Cqhyb7PV.js} +1 -1
- package/dist/client/assets/{connection-BtvJKuLN.js → connection-C15f5bNS.js} +1 -1
- package/dist/client/assets/{connection-card-CEFIrJY3.js → connection-card-BMeKUGng.js} +1 -1
- package/dist/client/assets/{connection-detail-B-1EXZEm.js → connection-detail-CcO19QVa.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DFcBYAWG.js → connection-form-helpers-CmIBkFb3.js} +1 -1
- package/dist/client/assets/{connections-BDHqljAv.js → connections-kJZ9DqVg.js} +1 -1
- package/dist/client/assets/{context-DWKz0IRn.js → context-waQx2W4V.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-VdEJZP_b.js → create-organization-dialog-DoTSwQvQ.js} +1 -1
- package/dist/client/assets/{decofile-api-DrtvihiV.js → decofile-api-DwohDDOu.js} +1 -1
- package/dist/client/assets/{decopilot-CaIWBpB6.js → decopilot-bLAHPQ8D.js} +1 -1
- package/dist/client/assets/{dialog-DiUlVwD1.js → dialog-Dcra4McE.js} +1 -1
- package/dist/client/assets/{discover-S8lOKkYU.js → discover-srrXvfjV.js} +1 -1
- package/dist/client/assets/{domain-settings-BSPXcrvG.js → domain-settings-CcyamET0.js} +1 -1
- package/dist/client/assets/{download-app-dialog-CwgA8Jar.js → download-app-dialog-Bt9MR0m_.js} +1 -1
- package/dist/client/assets/{drawer-BT08Xqaa.js → drawer-0y_cyI4K.js} +1 -1
- package/dist/client/assets/{editor-S8HMRfnV.js → editor-BCdzptBY.js} +1 -1
- package/dist/client/assets/{empty-state-YhHJ1PAR.js → empty-state-BV17J4rU.js} +1 -1
- package/dist/client/assets/{empty-state-AwoelJY5.js → empty-state-BimfTH5j.js} +1 -1
- package/dist/client/assets/{extract-connection-data-ak1yxd15.js → extract-connection-data-ByvXZO_i.js} +1 -1
- package/dist/client/assets/{feature-gate-DpWu04P_.js → feature-gate-CGTKfO9Z.js} +1 -1
- package/dist/client/assets/{feature-paywall-O1oksi-z.js → feature-paywall-Bl0cYtHt.js} +1 -1
- package/dist/client/assets/{file-explorer-Cml3GhPa.js → file-explorer-76PPVdlw.js} +1 -1
- package/dist/client/assets/{file-preview-DMCP6_DD.js → file-preview-cVqXpH_G.js} +1 -1
- package/dist/client/assets/{file-share-button-DkoS4iJK.js → file-share-button-BuMvzP63.js} +1 -1
- package/dist/client/assets/{file-type-icon-DyGflp6T.js → file-type-icon-DYMR5_m7.js} +1 -1
- package/dist/client/assets/{folder-icon-BDD2uWKR.js → folder-icon-DQB6n2kf.js} +1 -1
- package/dist/client/assets/{form-DDtq3Oeg.js → form-Bn_VlbjB.js} +1 -1
- package/dist/client/assets/{gateway-client-BrPXiQqR.js → gateway-client-DSN8PosO.js} +1 -1
- package/dist/client/assets/{general-DfP98aec.js → general-B-jviDo6.js} +1 -1
- package/dist/client/assets/{github-icon-C3M97Kp1.js → github-icon-8fpS8l__.js} +1 -1
- package/dist/client/assets/{home-xKrXsUuw.js → home-CL83ye26.js} +1 -1
- package/dist/client/assets/{hooks-Dpw_cJTM.js → hooks-V57yclqv.js} +1 -1
- package/dist/client/assets/{icon-button-BA96KFLT.js → icon-button-B2Jd-vIw.js} +1 -1
- package/dist/client/assets/{index-B37137hI.js → index-B9RXO-FB.js} +1 -1
- package/dist/client/assets/{index-Tjbom_M5.js → index-BRVGbtHX.js} +1 -1
- package/dist/client/assets/{index-cT94sQUH.js → index-CFZrnnmD.js} +5 -5
- package/dist/client/assets/{index-Bh23iZvW.js → index-C_YKA6uy.js} +1 -1
- package/dist/client/assets/{index-4NmZWgdA.js → index-CsvWb_z5.js} +1 -1
- package/dist/client/assets/{index-CgGEL4tk.js → index-Cv3P6Wq4.js} +1 -1
- package/dist/client/assets/{index-C9PI5TjH.js → index-Cw3ZmUL2.js} +1 -1
- package/dist/client/assets/{index-ChjHAm_X.js → index-D-R5D9vw.js} +1 -1
- package/dist/client/assets/{index-eJ0UMn-u.js → index-DRFd03i9.js} +1 -1
- package/dist/client/assets/{index-DV_mVnUZ.js → index-DdGk5PPa.js} +1 -1
- package/dist/client/assets/{index-CTQuScgI.js → index-Do9AlR8P.js} +1 -1
- package/dist/client/assets/{index-pU5iRqYT.js → index-Dq-IpwkC.js} +1 -1
- package/dist/client/assets/{index-BBOB34ZQ.js → index-DtZHgx57.js} +1 -1
- package/dist/client/assets/{index-B3naBK-e.js → index-gECsHnHY.js} +1 -1
- package/dist/client/assets/{index-redirect-D4SSam4Y.js → index-redirect-CTTvBSR1.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-Dj3x0ul-.js → infiniteQueryObserver-Gux7qMEO.js} +1 -1
- package/dist/client/assets/{infra-billing-D24Nnoas.js → infra-billing-Cvvw03Dm.js} +1 -1
- package/dist/client/assets/{input-CSdHjp7L.js → input-B_-SnRO5.js} +1 -1
- package/dist/client/assets/{input-q5pG06UZ.js → input-Bwe8NZ5T.js} +1 -1
- package/dist/client/assets/{input-DbR0YCVu.js → input-DmvvEyNC.js} +1 -1
- package/dist/client/assets/{integration-icon-CBv4y2ld.js → integration-icon-C9XaIOHe.js} +1 -1
- package/dist/client/assets/{label-C6sMx1BY.js → label-DSLU6fFz.js} +1 -1
- package/dist/client/assets/{last-preview-page-CcpwTOWp.js → last-preview-page-Bq7holaY.js} +1 -1
- package/dist/client/assets/{layout-E2cSDTGe.js → layout-BKGCgfkN.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-BMTlTde1.js → legacy-agents-deep-T9NXwWHP.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-B68-Adnw.js → legacy-main-redirect-CdjJmBj-.js} +1 -1
- package/dist/client/assets/{library-DI55mv6l.js → library-CDWN3mYj.js} +1 -1
- package/dist/client/assets/{login-DwlqHc1T.js → login-Cx2qLFTf.js} +1 -1
- package/dist/client/assets/{markdown-rYdPNaGa.js → markdown-oeL4d_tN.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DQd4z-tw.js → mcp-app-renderer-CmLIkf6i.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CtDqQIpT.js → mcp-oauth-D1pDEEn0.js} +1 -1
- package/dist/client/assets/{members-CnWBKrrf.js → members-DDvZMbmX.js} +1 -1
- package/dist/client/assets/{message-templates-wovwT2FV.js → message-templates-D-nRIsWk.js} +1 -1
- package/dist/client/assets/{mini-report-page-C71ATA2q.js → mini-report-page-nehi6gd3.js} +1 -1
- package/dist/client/assets/{mock-board-vXXuZ9OB.js → mock-board-BcrW0eEv.js} +3 -3
- package/dist/client/assets/{monaco-editor-BYvrmVl8.js → monaco-editor-rG_ojQtN.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-IkwiQHjH.js → monitoring-stats-row-u_eyyh8S.js} +1 -1
- package/dist/client/assets/{multi-select-CDQWJfyp.js → multi-select-C1vxoOWR.js} +1 -1
- package/dist/client/assets/{mustache-g0W1c9Pz.js → mustache-_05g5fSZ.js} +1 -1
- package/dist/client/assets/{oauth-callback-7N1qrOP1.js → oauth-callback-BParqGue.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-D330wyq5.js → oauth-callback-ai-provider-CFCc4vuY.js} +1 -1
- package/dist/client/assets/{onboarding-DsJ-aRc9.js → onboarding-CefimiY5.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-KtCnoFH8.js → optimistic-project-sidebar-views-Ds7dxAP-.js} +1 -1
- package/dist/client/assets/{org-file-open-context-DjmvTwmC.js → org-file-open-context-DI6t8wtB.js} +1 -1
- package/dist/client/assets/{organization-choice-CZOzYUte.js → organization-choice-DqCYRx3X.js} +1 -1
- package/dist/client/assets/{orgs-CRAWDAbw.js → orgs-B9XC3G_x.js} +1 -1
- package/dist/client/assets/{page-seo-form-DUgQn0jT.js → page-seo-form-Bxx9SwNT.js} +1 -1
- package/dist/client/assets/{pair-knW_lHO5.js → pair-CVurrPq-.js} +1 -1
- package/dist/client/assets/{plan-ladder-CcvRWQzg.js → plan-ladder-BfylXdSz.js} +1 -1
- package/dist/client/assets/{popover-DuPXzrgi.js → popover-Baq0imIs.js} +1 -1
- package/dist/client/assets/post-calendar-Deyu5RSY.js +1 -0
- package/dist/client/assets/{post-editor-BkQnPDqK.js → post-editor-B77-jPfP.js} +1 -1
- package/dist/client/assets/{preview-content-nqp1cQig.js → preview-content-Cb2RYCeo.js} +1 -1
- package/dist/client/assets/{preview-dialog-DGkB30uu.js → preview-dialog-AWoznOua.js} +1 -1
- package/dist/client/assets/{profile-B2S2gmBW.js → profile-Bno_MC0t.js} +1 -1
- package/dist/client/assets/{project-app-view-CJHRV6yL.js → project-app-view-BoEEmEk4.js} +1 -1
- package/dist/client/assets/{project-feed-8Cez5QU8.js → project-feed-DT9rU3wJ.js} +1 -1
- package/dist/client/assets/{project-icon-DW-tv9X7.js → project-icon-CzEj0avy.js} +1 -1
- package/dist/client/assets/project-reports-DYAJh_Wl.js +1 -0
- package/dist/client/assets/project-tasks-CE9Re7Tj.js +1 -0
- package/dist/client/assets/{prompts-B2tfrrMA.js → prompts-BU3lT5yK.js} +1 -1
- package/dist/client/assets/record-editor-BZi1czEu.js +1 -0
- package/dist/client/assets/{redirect-editor-BbBd0UrL.js → redirect-editor-BrsiQdWf.js} +1 -1
- package/dist/client/assets/reports-ARrC7tI6.js +1 -0
- package/dist/client/assets/{reports-2V5MZWdY.js → reports-BWa8EEwC.js} +1 -1
- package/dist/client/assets/{reports-onboarding-DA-l-ocL.js → reports-onboarding-soeZpVO2.js} +1 -1
- package/dist/client/assets/{reports-tab-B6VauTwc.js → reports-tab-DvvKKs9h.js} +2 -2
- package/dist/client/assets/{repositories-CeQWa7JA.js → repositories-DxBiP88Q.js} +1 -1
- package/dist/client/assets/{repository-import-picker-DgpEdzVj.js → repository-import-picker-DmgbIRex.js} +1 -1
- package/dist/client/assets/{repository-picker-B-RVPafI.js → repository-picker-BdbJB8MH.js} +1 -1
- package/dist/client/assets/{require-capability-A2qKaV-G.js → require-capability-CUtBt1bi.js} +1 -1
- package/dist/client/assets/{required-auth-layout-fSuiMVRc.js → required-auth-layout-BlnGUT2q.js} +1 -1
- package/dist/client/assets/{reset-password-B9ys5_ef.js → reset-password-OMiTHFai.js} +1 -1
- package/dist/client/assets/{resizable-CyPCDk7u.js → resizable-Dr5PNlfE.js} +1 -1
- package/dist/client/assets/{review-settings-CiSbDHmD.js → review-settings-84byzwHU.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-CEAa82WB.js → rich-text-link-control-CFnLXxfY.js} +1 -1
- package/dist/client/assets/{roles-slcMFBOI.js → roles-AcbVFhCZ.js} +1 -1
- package/dist/client/assets/{route-D6QVa62m.js → route-73J6vHiy.js} +1 -1
- package/dist/client/assets/{route-Be_JrbZa.js → route-BA_J22E-.js} +1 -1
- package/dist/client/assets/{route-CBjQKRPM.js → route-BHnu0h_N.js} +1 -1
- package/dist/client/assets/{route-page-header-CQ5gYErc.js → route-page-header-CByDrdCZ.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-s0ZqFhOI.js → runnable-block-editor-C-z6sg8d.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-Bt6dDo65.js → sandbox-lifecycle-context-244BQJ78.js} +1 -1
- package/dist/client/assets/{schema-BwpPocS5.js → schema-Du8_zRy7.js} +1 -1
- package/dist/client/assets/{scroll-area-C_IMBr_-.js → scroll-area-DWMWIudU.js} +1 -1
- package/dist/client/assets/{search-input-B12ZEo-u.js → search-input-C7zzo1gV.js} +1 -1
- package/dist/client/assets/{search-toggle-DN5GZHXp.js → search-toggle-CArb_7uo.js} +1 -1
- package/dist/client/assets/{secret-picker-yI9Rfw9t.js → secret-picker-CQN9d587.js} +1 -1
- package/dist/client/assets/{secrets-Dwbmj7Nu.js → secrets-D1CraqxC.js} +1 -1
- package/dist/client/assets/sections-editor-Wq74SyFR.js +1 -0
- package/dist/client/assets/{select-B3V6AARR.js → select-BOM-aKhP.js} +1 -1
- package/dist/client/assets/{select-model-Dgg0QqmD.js → select-model-DpXoMCZH.js} +1 -1
- package/dist/client/assets/{seo-editor-DVhSkr87.js → seo-editor-D1cw49ws.js} +1 -1
- package/dist/client/assets/{separator-B-YTOKXU.js → separator-DW6Prz-B.js} +1 -1
- package/dist/client/assets/{settings-tab-Bqa114IE.js → settings-tab-BlphdJug.js} +1 -1
- package/dist/client/assets/{sheet-908igmnH.js → sheet-Dq13NqY6.js} +1 -1
- package/dist/client/assets/{shell-layout-CkG1W_88.js → shell-layout-DMJ3Gw_b.js} +1 -1
- package/dist/client/assets/{sidebar-BFWjj-3T.js → sidebar-n3X--4aE.js} +1 -1
- package/dist/client/assets/{skill-preview-DCEvyr6I.js → skill-preview-ht8NWRpt.js} +1 -1
- package/dist/client/assets/{skills-Kroh8R0z.js → skills-2dbI_ehN.js} +1 -1
- package/dist/client/assets/{sso-CI5lCnpA.js → sso-D4ClPuk5.js} +1 -1
- package/dist/client/assets/{suggestion-DWARFIlS.js → suggestion-B2gCPjEY.js} +1 -1
- package/dist/client/assets/{switch-BhJ3AZWs.js → switch-BpU_dXOg.js} +1 -1
- package/dist/client/assets/{synced-repos-Dk3VsHpp.js → synced-repos-B4WffdFD.js} +1 -1
- package/dist/client/assets/{table-niYnsTKc.js → table-BK5Bj0BA.js} +1 -1
- package/dist/client/assets/{tabs-BcaB_WSA.js → tabs-DtulKHna.js} +1 -1
- package/dist/client/assets/{task-board-BKlDz2nG.js → task-board-BlCSl7H6.js} +1 -1
- package/dist/client/assets/{task-route-CUZautp3.js → task-route-Buk2mgML.js} +1 -1
- package/dist/client/assets/{task-status-VdIk_CP0.js → task-status-BvbYEbq9.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-CRqfD7UI.js → taskboard-analytics-C4h2ZM5g.js} +1 -1
- package/dist/client/assets/{tasks-d4yimVTu.js → tasks-ClVRdGRp.js} +1 -1
- package/dist/client/assets/tasks-IK2ZoIhQ.js +1 -0
- package/dist/client/assets/{textarea-lt2TXyPT.js → textarea-CDG_4h5K.js} +1 -1
- package/dist/client/assets/{thread-analytics-DHF3uWYQ.js → thread-analytics-CrrAYz-K.js} +1 -1
- package/dist/client/assets/{thread-button-BVgcb5x6.js → thread-button-Bt2nv3eP.js} +1 -1
- package/dist/client/assets/{thread-intent-CHlBhQ4g.js → thread-intent-DfUdqfo1.js} +1 -1
- package/dist/client/assets/{thread-route-fx8YTsf_.js → thread-route-BcHRblub.js} +1 -1
- package/dist/client/assets/{thread-route-C05Rrd8B.js → thread-route-CIar6WIg.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-Do5I-YMq.js → thread-sheet-body-BeD4yJxi.js} +1 -1
- package/dist/client/assets/{toggle-group-D0Pzc72Y.js → toggle-group-CNL0xUW4.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-BXZ727Lv.js → toolbar-icon-button-bv_fQ-aj.js} +1 -1
- package/dist/client/assets/{tooltip-BGTnGCWW.js → tooltip-CPnP6Sjs.js} +1 -1
- package/dist/client/assets/{track-Cl2p3Vuk.js → track-B9PuaPFx.js} +1 -1
- package/dist/client/assets/{types-C2ulVtYx.js → types-d1eRFziw.js} +1 -1
- package/dist/client/assets/{usage-stats-D4BBDmdo.js → usage-stats-DJsI8Eqk.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Cc_CzBZr.js → use-ai-providers-BV_DvH7o.js} +1 -1
- package/dist/client/assets/{use-automations-Bjnctu1x.js → use-automations-BHsMhlO9.js} +1 -1
- package/dist/client/assets/{use-autosave-C6qsU6pa.js → use-autosave-DgwX0mMm.js} +1 -1
- package/dist/client/assets/{use-connect-companion-YiSxQfB7.js → use-connect-companion-BzIs5X88.js} +1 -1
- package/dist/client/assets/{use-connection-BUnGMpfY.js → use-connection-Bi6HLcH4.js} +1 -1
- package/dist/client/assets/{use-copy-Cg8pzMCn.js → use-copy-CDhoRgm3.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DfoENq1A.js → use-create-virtual-mcp-DIHuJhyr.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BxNb5mu8.js → use-date-fns-locale-Cy0bIV3c.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Ds1nUcal.js → use-debounced-autosave-D8Sorx0q.js} +1 -1
- package/dist/client/assets/{use-debounced-value-CylTsY1l.js → use-debounced-value-Bi1oqAau.js} +1 -1
- package/dist/client/assets/{use-deco-credits-BqxUGiz2.js → use-deco-credits-CRBFL3xa.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BT_W0lJl.js → use-decopilot-events-CVfzaSiv.js} +1 -1
- package/dist/client/assets/{use-delete-connection-PzbXJAFK.js → use-delete-connection-CX0v-UqP.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-B1rWnD8o.js → use-deployment-admin-C2loCmMs.js} +1 -1
- package/dist/client/assets/{use-entitlements-Dbhso4ZI.js → use-entitlements-qq0onzk3.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-zcMUpMeA.js → use-fast-preview-draft-url-DUGuDJ0B.js} +1 -1
- package/dist/client/assets/{use-file-configs-Du_BOfea.js → use-file-configs-DI6Asnep.js} +1 -1
- package/dist/client/assets/{use-in-settings-3zEronlT.js → use-in-settings-2EIzhXwd.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DASshMJA.js → use-infinite-scroll-BwJMlu6L.js} +1 -1
- package/dist/client/assets/{use-join-requests-DBEizFwN.js → use-join-requests-752eIkzS.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-CSiN5F_0.js → use-main-panel-tabs-DIxFD1x0.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-JThWl3bk.js → use-mcp-auth-status-Cyg7VElH.js} +1 -1
- package/dist/client/assets/{use-mcp-client-GBv4syMd.js → use-mcp-client-4SfStdvU.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-CrOqkZmO.js → use-mcp-prompts-DNTC-VnG.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BZqzi-qU.js → use-mcp-tools-CmJbGXa2.js} +1 -1
- package/dist/client/assets/{use-members-hKKM8H8F.js → use-members-ChLgHSO3.js} +1 -1
- package/dist/client/assets/{use-mobile-Dv7BcXr5.js → use-mobile-DARHzVZh.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Cp353ZuE.js → use-navigate-to-agent-a1v5JNRv.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-DzWGWKyA.js → use-open-billing-url-CSkUOZcG.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DzE4u5oy.js → use-org-auth-client-BcltMH40.js} +1 -1
- package/dist/client/assets/{use-org-fs-CGr2NA9d.js → use-org-fs-PfmH2IwE.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-6F5S6E3X.js → use-org-repo-syncs-BGgD9fX9.js} +1 -1
- package/dist/client/assets/{use-org-sso-BziwA5dH.js → use-org-sso-BcU16muD.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BpECo09m.js → use-organization-roles-RhvAN6UI.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C55vewZa.js → use-organization-settings-BLvm6CUv.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-BvpNAJeL.js → use-panel-navigate-Ba3IZxfG.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-DYD4cRxj.js → use-project-native-view-presence-CsPNZgcc.js} +1 -1
- package/dist/client/assets/{use-project-scope-CYpIGnJg.js → use-project-scope-BspeH_sq.js} +1 -1
- package/dist/client/assets/{use-releases-w4OvCw5M.js → use-releases-CVzN8uNR.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-DvPUM_ji.js → use-reports-diagnostic-CrvplLbm.js} +1 -1
- package/dist/client/assets/{use-route-default-main-Bux-DW8_.js → use-route-default-main-DSqzyOuP.js} +1 -1
- package/dist/client/assets/{use-secrets-9InRr5Wg.js → use-secrets-DgrFX5xg.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-BbXgFtzl.js → use-section-preview-base-B-Hn9i9b.js} +1 -1
- package/dist/client/assets/{use-session-runtime-CyC7y7Wf.js → use-session-runtime-BVLmSBh6.js} +1 -1
- package/dist/client/assets/{use-tags-B4nQMv-Q.js → use-tags-BOv9arBp.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-CVUteVBr.js → use-task-board-analytics-DPM83CD7.js} +1 -1
- package/dist/client/assets/{use-task-metadata-C-i2MCdn.js → use-task-metadata-CJ-QxfGm.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-CTAY_EQL.js → use-thread-analytics-C0CiMqbi.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-B__J7AZP.js → use-thread-outputs-CTmmbNmM.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CyUsVYwB.js → use-virtual-mcp-B1-yfeBH.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CpVWUzdl.js +1 -0
- package/dist/client/assets/{useQueries-DRE-cCNR.js → useQueries-CrqtqlHM.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CXyd6z14.js +1 -0
- package/dist/client/assets/{users-DBkZe3bO.js → users-mYCEW-vA.js} +1 -1
- package/dist/client/assets/{utils-CHGVrATA.js → utils-D2y8J057.js} +1 -1
- package/dist/client/assets/{variant-calendar-BDMygNPj.js → variant-calendar-7H3LNEKh.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-DefoQYjj.js → variant-matcher-override-4dV3T02L.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CSfYGuhk.js → view-mode-toggle-BQub2iHi.js} +1 -1
- package/dist/client/assets/{virtual-mcp-C_hBI7Rj.js → virtual-mcp-7pXCbTsW.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-WxppwwfV.js +0 -1
- package/dist/client/assets/agent-deck-B70vaH0w.js +0 -1
- package/dist/client/assets/agent-file-D2-O8b6i.js +0 -1
- package/dist/client/assets/agent-library-file-Dfir9Jjz.js +0 -1
- package/dist/client/assets/agent-settings-DgXye6uc.js +0 -1
- package/dist/client/assets/agent-site-editor-code-DjOBYRBJ.js +0 -2
- package/dist/client/assets/agent-site-editor-content-CmJpSlh2.js +0 -9
- package/dist/client/assets/agent-view-BgER_VJ8.js +0 -1
- package/dist/client/assets/api-keys-kPU0tPrf.js +0 -1
- package/dist/client/assets/app-editor-rJdo4lSU.js +0 -1
- package/dist/client/assets/post-calendar-Dm2FZlVO.js +0 -1
- package/dist/client/assets/project-reports-kefrM59s.js +0 -1
- package/dist/client/assets/project-tasks-B7o9qjzH.js +0 -1
- package/dist/client/assets/record-editor-C887zwF7.js +0 -1
- package/dist/client/assets/reports-N7SlvZN1.js +0 -1
- package/dist/client/assets/sections-editor-DWq3wSNS.js +0 -1
- package/dist/client/assets/tasks-CLicx8Qy.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DS8vuz-1.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-D-EjhUK7.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -3696,7 +3696,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3696
3696
|
${J.join(`
|
|
3697
3697
|
`)}`:X}function cg6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
3698
3698
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var Q48=200,_g6=12,bg6,fg6=300,gk0=3;var iF1=D(()=>{dZ();O8();yk0();bg6={aheadBy:0,behindBy:0,files:[]}});function dg6($){if(!$||$.includes(".."))return!1;return mg6.test($)}function X48($){return ig6.includes($)}function pF1($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!dg6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function nF1($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var mg6,ig6;var J48=D(()=>{mg6=/^[\w./@-]+$/;ig6=["vtex/loaders/intelligentSearch/productList.ts","vtex/loaders/categories/tree.ts"]});function t80($,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 W48($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new NE(j7);let J=await aw($.storage,X,Y);if(J&&await yB($.storage,J)){let F=await aF($,J,{forceRefresh:!0}).catch((U)=>{throw new NE(U instanceof Error?U.message:j7)});await G48($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new NE("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await Ec({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:j7;throw new NE(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await sF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=yU$(F instanceof Error?F.message:String(F));throw U?new NE(N):F});await G48($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function G48($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=Oi($),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 zj(K,pg6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var pg6=10485760,NE;var tF1=D(()=>{JW();Vk0();I00();_W0();Pe();dZ();NE=class NE extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function tg6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!ng6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Wy($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(og6)])}async function ag6($,Z){let Q=$.var.studioContext,Y=GU(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=kx(G?.metadata?.runtime);if(W)return W;let K=PT0(Z.virtualMcpMetadata),H=K==="cms"?await qF1(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 sg6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await qX($.var.studioContext)}catch{return null}}function Ky($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Ei($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=t80(Z,Q);if(!X)throw new y0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=K0(Y);return Lc(Y,J.id,X)}function rF1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=XF$(Z);if(Y!==void 0)return $.json({error:Q},429,{...e5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof n6)return $.json({error:Q},409,e5);let X=FW(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,e5)}return $.json({error:Q},502,e5)}async function oF1($,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 U48($){try{let Z=await Ei($),Q=await hk0(Z,$.get("vmClaim").branch);return $.json(Q,200,e5)}catch(Z){return rF1($,Z)}}function o80($,Z){let Y=(ck0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return ck0.set($,X),X.finally(()=>{if(ck0.get($)===X)ck0.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,e5);let Y=Q?.runner??Ky($);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",...e5}})}}let O=await B.text(),L=Q?.redactRepoDir?eg6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...e5}})};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 eg6($){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 mk0($,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 $h6($){return N48.includes($)}var ng6,K48=524288,H48=65536,og6=1e4,F48=2000,rg6,ck0,e5,N48,B48=()=>{let $=new Y1;$.use("/:virtualMcpId/:branch/*",rg6),$.post("/:virtualMcpId/:branch/write",(Q)=>$Q(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>$Q(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>$Q(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>$Q(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>$Q(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>$Q(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:Wy(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>$Q(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:Wy(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||!$h6(Y))return Q.json({error:`step must be one of: ${N48.join(", ")}`},400);let X=Q.get("vmClaim"),J=await qF1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await sg6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,e5);if(Y==="start"){let G=K0(Q.var.studioContext),W=ec(X.virtualMcpMetadata);try{await wT0({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 CO(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 B88(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 U48(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(F48)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return U48(Q);return $Q(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(F48)])})}),$.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 Ei(Q),G=await uk0(J,Y.branch,X.base);return Q.json(G,200,e5)}catch(X){return rF1(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,e5);let Y=Ky(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return o80(X,async()=>{try{await MF1(W,Y,X);let K=t80(J,G);if(K)await W48(W,Y,X,K)}catch(K){if(K instanceof NE)return Q.json({error:K.message},403,e5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,e5)}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 o80(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,e5);try{let G=await Ei(Q);return await Y48(G,Y.branch,J),Q.json({ok:!0},200,e5)}catch(G){let W=FW(G)===409||G instanceof n6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,e5)}});return o80(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 o80(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Ei(Q),H=W.base??await K.getDefaultBranch();return await lk0(K,Y.branch,H),Q.json({ok:!0},200,e5)}catch(W){return rF1(Q,W)}});let X=Ky(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return o80(J,async()=>{try{await MF1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,e5)}return $Q(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",s5({maxSize:K48,onError:(Q)=>Q.json({error:"Payload too large"},413,e5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ky(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]=kF1(F)&&N?[F,U]:X?await Promise.all([mk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),mk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ei(Q);return Promise.all([hk0(w,Y.branch),uk0(w,Y.branch)])})();await gK(K,K0(K).id,"suggesting a commit message");let L=await j88(K,B,O);return Q.json(L,200,e5)}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,e5);return Q.json({error:F},502,e5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",s5({maxSize:K48,onError:(Q)=>Q.json({error:"Payload too large"},413,e5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ky(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]=kF1(F)&&N?[F,U]:X?await Promise.all([mk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),mk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ei(Q);return Promise.all([hk0(w,Y.branch),uk0(w,Y.branch)])})();await gK(K,K0(K).id,"judging whether a change needs review");let L=await z88(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,e5)}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,e5);return Q.json({error:F},502,e5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Ky(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 oF1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",s5({maxSize:H48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Ky(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=pF1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=nF1(J,W.resolveType);return oF1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",s5({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):$m(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=pF1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!X48(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=nF1(G,K.resolveType);return oF1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var O48=D(()=>{J8();AH();Bi();RF1();R00();F88();wW();Zm();U88();$H();fF();N88();O88();a61();M00();_F1();P88();dZ();w5();iF1();J48();zT0();tF1();ng6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;rg6=Ik0(async($,Z)=>{let Q=$.var.studioContext;try{s(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{tg6(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=pe({orgId:X.id,virtualMcpId:J,branch:G}),H=await T41(Q,G),F=R41(H,Y),U=H88({userId:F,projectRef:K}),N=W.metadata??null,B=await ag6($,{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 qX(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()});ck0=new Map;e5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};N48=["clone","install","start"]});function D48($,Z,Q){let Y=aF1.get($);if(!Y)Y={pending:null,running:!1},aF1.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)Qh6($,Y);return J}async function Qh6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await Yh6(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)aF1.delete($)}}async function Yh6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await ji(Z,Q),W=await Z.listDecofileEntries(G,Y),K=cF1(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=mF1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3699
|
-
`;await s88(Z.repo,L);let w=O[0]??`${fk0(Y)}/${xF1(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 mF1(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 e88(Z,F.values(),X),{decofile:B,skipped:O}=m80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:uK(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:Xh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof n6)||J>=Zh6-1)throw N;await d$(QQ(2000,200,J,2,0.5))}}}function Xh6($){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 p81(Y,$.deps.coAuthor)}var Zh6=3,aF1;var L48=D(()=>{XA0();Sk0();z6();O8();dZ();yk0();aF1=new Map});import{createHmac as w48,randomBytes as Jh6,timingSafeEqual as Gh6}from"crypto";function j48(){if(dk0)return dk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dk0=$?Buffer.from($):Jh6(32),dk0}function sF1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Wh6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=w48("sha256",j48()).update(Y).digest("base64url");return`${Y}.${X}`}function E48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(w48("sha256",j48()).update(Y).digest("base64url"));if(X.length!==J.length||!Gh6(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 Wh6=21600000,dk0=null;var z48=D(()=>{U$()});function ik0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Kh6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=ik0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function P48($){let Z;try{Z=ik0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Kh6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=ik0(G),K=W&&ik0(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 zi}from"zod";function Fh6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Hh6.test($)}function M48($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function r80($){let Z=$.get("decofileScope");return Lc($.var.studioContext,Z.organizationId,Z.githubRepo)}function a80($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof n6)return $.json({error:Q},409);let Y=FW(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 I48(){let $=new Y1;return $.use("/:virtualMcpId/:branch",q48),$.use("/:virtualMcpId/:branch/*",q48),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(Z),X=await $48(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(P48(X.decofile),200,{...J,"content-type":"application/json"});let G=sF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(M48(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return a80(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 r80(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 a80(Z,X)}}),$.patch("/:virtualMcpId/:branch",Nh6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Bh6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{kk0(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(bF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await r80(Z),W=await D48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Oi(Y)},J),K=sF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:M48(Z)})}catch(G){return a80(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(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(FW(W)!==409)throw W;await lk0(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(FW(G)===409)return Z.json({error:"merge-conflict"},409);if(FW(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 a80(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(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(FW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return a80(Z,Y)}}),$}var Hh6,A48=500,T48=1048576,R48=1024,Uh6=8388608,Nh6,Bh6,q48;var V48=D(()=>{zT0();Sk0();J8();AH();RF1();Vk0();tF1();dZ();L48();z48();iF1();yk0();fF();Hh6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Nh6=s5({maxSize:Uh6,onError:($)=>$.json({error:"Payload too large"},413)}),Bh6=zi.object({set:zi.record(zi.string(),zi.unknown()).optional(),delete:zi.array(zi.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<=T48),{message:`Each block must be at most ${T48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=R48),{message:`Each block key must be at most ${R48} characters`}),q48=Ik0(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(!Fh6(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||!E48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await $W(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(!$m(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=t80(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 k48=($)=>{let Z=new Y1;if(Z.use("*",id),Z.use("*",Je$),Z.route("/",fV0()),Z.route("/",le$()),Z.route("/",Ie$()),Z.route("/",r$8()),Z.route("/",c$8()),Z.route("/",t$8()),Z.route("/",d$8()),Z.route("/",Rk0()),Z.route("/tools",Y88()),Z.route("/",$88()),Z.route("/",z$8({kvStorage:$.kvStorage})),Z.route("/",j$8()),Z.route("/fs",v$8({getConnection:$.getNatsConnection})),Z.route("/sandbox",B48()),Z.route("/decofile",I48()),Z.route("/",h$8()),Z.route("/",x$8()),Z.route("/deco-sites",gV0()),Z.route("/hosting",Le$()),Z.route("/monitor",Te$()),Z.route("/sso",CV0()),Z.route("/",qk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Ue$()),$.mountDevAssets)Z.route("/dev-assets",cV0({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("/",wr$()),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",y$8()),Z.route("/mcp",kR0()),Z.route("/mcp/self",zk0()),Z.route("/mcp",_R0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var S48=D(()=>{J8();Ge$();zV0();Ne$();iK1();we$();Re$();mV0();of();uK1();rK1();E$8();P$8();b$8();f$8();x10();bK1();vR0();DF1();g$8();u$8();m$8();i$8();jF1();a$8();Z88();EF1();X88();zF1();SR0();O48();V48()});function Oh6($){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 Dh6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},C48=()=>{let $=new Y1;return $.use("*",Dh6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await uJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Oh6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var _48=D(()=>{J8();U$();qI0()});import{z as b1}from"zod";function dU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function qh6($){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 Mh6($,Z,Q){try{return JSON.parse($)}catch{throw new x48(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Ih6($){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:Mh6(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 Vh6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?zF(Q.function.parameters):zF({type:"object",properties:{}});return[Q.function.name,l$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function kh6($){if(!$)return;return{openai:{response_format:$}}}function Sh6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function v48($,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 b48($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Lh6=256,wh6,jh6,Eh6,zh6,Ph6,Ah6,Th6,Rh6,x48,f48,y48;var g48=D(()=>{_4();J8();Bi();FH();wh6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),jh6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Eh6=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(jh6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),zh6=b1.object({type:b1.literal("text")}),Ph6=b1.object({type:b1.literal("json_object")}),Ah6=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()})}),Th6=b1.union([zh6,Ph6,Ah6]),Rh6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Eh6),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(wh6).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:Th6.optional(),user:b1.string().optional()});x48=class x48 extends Error{constructor($){super($);this.name="MessageConversionError"}};f48=new Y1;f48.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(dU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(dU("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(dU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Rh6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(dU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=qh6(J.model);if(!G)return $.json(dU("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)=>Iz(E.providerId));if(!j)return $.json(dU("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(dU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Ih6(J.messages),N=J.tools?Vh6(J.tools):void 0,B=kh6(J.response_format),O=Sh6(),L=Math.floor(Date.now()/1000);if(J.stream)return CO($,async(w)=>{let j=v48(F,U,N,J,B,$.req.raw.signal);try{let E=sc(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>=Lh6)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:b48(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=v48(F,U,N,J,B,$.req.raw.signal),j=await HU(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:b48(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(dU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(dU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(dU(X.message,"server_error"),500)}});y48=f48});function Ch6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function h48(){let $=new Y1;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(!w7(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(d30(U)!==J)continue;if(!Ch6(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 u48=D(()=>{J8();GW()});var c48;var l48=D(()=>{c48={name:"decocms",version:"4.397.0",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 bh6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??vh6}}var m48,vh6="https://ph.studio.decocms.com",d48;var i48=D(()=>{J8();Wr();tx();E9();U$();zK1();l48();m48=new Y1;m48.get("/",($)=>{let Z={version:c48.version,theme:a1$(),...TK().logo&&{logo:TK().logo},...GO()&&{internalUrl:kc1()},...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:Gs$(),posthog:bh6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:mO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});d48=m48});function Pi($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function eF1($){return(Pi($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function n48($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Pi($))}&sz=${Z}`}function p48($,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 t48($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?p48(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):p48(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as n0}from"zod";var Hy,xh6,fh6,yh6,gh6,o48;var r48=D(()=>{Hy=n0.enum(["good","bad","neutral"]),xh6=n0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},n0.object({kind:n0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:n0.coerce.string().optional(),tone:Hy.optional(),muted:n0.boolean().optional(),delta:n0.coerce.string().optional(),deltaDir:n0.enum(["up","down","neutral"]).optional(),points:n0.array(n0.coerce.number()).optional(),label:n0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),fh6=n0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},n0.array(xh6)),yh6={key:n0.coerce.string(),title:n0.coerce.string(),eyebrow:n0.coerce.string().optional(),headline:n0.coerce.string(),annotation:n0.coerce.string().optional(),methodology:n0.coerce.string().optional(),sources:n0.array(n0.object({name:n0.coerce.string(),logoUrl:n0.coerce.string()})).optional()},gh6=n0.discriminatedUnion("template",[n0.object({template:n0.literal("cover"),score:n0.object({value:n0.coerce.number(),max:n0.coerce.number().optional(),grade:n0.coerce.string().optional(),label:n0.coerce.string().optional()}).optional(),brandImage:n0.coerce.string().optional(),screenshot:n0.coerce.string().optional(),mobileScreenshot:n0.coerce.string().optional()}),n0.object({template:n0.literal("cta"),ctaUrl:n0.coerce.string().optional(),ctaLabel:n0.coerce.string().optional(),bullets:n0.array(n0.coerce.string()).optional()}),n0.object({template:n0.literal("series"),points:n0.array(n0.coerce.number()).min(2),xLabels:n0.array(n0.coerce.string()).min(1),unit:n0.coerce.string().optional(),callout:n0.object({index:n0.coerce.number(),value:n0.coerce.string(),tone:Hy.optional()})}),n0.object({template:n0.literal("threshold"),value:n0.coerce.string().default(""),metricLabel:n0.coerce.string().optional(),ratio:n0.coerce.number(),thresholdRatio:n0.coerce.number().optional(),thresholdLabel:n0.coerce.string().default(""),tone:Hy.optional()}),n0.object({template:n0.literal("stats"),stats:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),tone:Hy.optional()})).min(1)}),n0.object({template:n0.literal("bars"),items:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),ratio:n0.coerce.number(),tone:Hy.optional()})).min(1)}),n0.object({template:n0.literal("gauges"),gauges:n0.array(n0.object({label:n0.coerce.string(),value:n0.coerce.string(),status:n0.enum(["good","warn","bad"]).catch("warn"),caption:n0.coerce.string().optional(),ratio:n0.coerce.number().optional()})).min(1)}),n0.object({template:n0.literal("checklist"),checks:n0.array(n0.object({label:n0.coerce.string(),status:n0.enum(["pass","fail","warn"]).catch("fail"),value:n0.coerce.string().optional()})).min(1)}),n0.object({template:n0.literal("table"),columns:n0.array(n0.object({label:n0.coerce.string(),align:n0.enum(["left","right"]).optional()})).min(1),rows:n0.array(fh6).min(1),highlightRow:n0.coerce.number().optional()}),n0.object({template:n0.literal("products"),products:n0.array(n0.object({name:n0.coerce.string(),price:n0.coerce.string().optional(),image:n0.coerce.string().optional(),url:n0.coerce.string().optional()})).min(1)}),n0.object({template:n0.literal("list"),entries:n0.array(n0.object({label:n0.coerce.string(),severity:n0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:n0.coerce.number().optional()}),n0.object({template:n0.literal("keywords"),volumeLabel:n0.coerce.string().optional(),keywords:n0.array(n0.object({term:n0.coerce.string(),volume:n0.coerce.string(),position:n0.coerce.number().catch(0)})).min(1)}),n0.object({template:n0.literal("competitor"),metricLabel:n0.coerce.string().optional(),competitors:n0.array(n0.object({name:n0.coerce.string(),value:n0.coerce.string(),tone:Hy.optional(),isYou:n0.boolean().optional()})).min(1)}),n0.object({template:n0.literal("scorecard"),rivalLabel:n0.coerce.string().optional(),dimensions:n0.array(n0.object({label:n0.coerce.string(),you:n0.coerce.string(),rival:n0.coerce.string().optional(),rivalName:n0.coerce.string().optional(),tone:Hy.optional()})).min(1)})]),o48=n0.object({...yh6,template:gh6})});function pk0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=o48.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var $U1=D(()=>{r48()});import{join as a48}from"path";async function uh6($){try{let Z=await fetch(`${yF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(hh6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=pk0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||eF1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function K3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function lh6($,Z){let Q=Pi($),Y=Z?.brand?.trim()||eF1(Q),X=n48(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=t48({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${K3(W)}</title>`,`<meta name="description" content="${K3(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="${K3(W)}" />`,`<meta property="og:description" content="${K3(K)}" />`,`<meta property="og:url" content="${K3(G)}" />`,`<meta property="og:image" content="${K3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${K3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${K3(W)}" />`,`<meta name="twitter:description" content="${K3(K)}" />`,`<meta name="twitter:image" content="${K3(H)}" />`,`<meta name="twitter:image:alt" content="${K3(F)}" />`,`<link rel="canonical" href="${K3(G)}" />`,`<link rel="icon" href="${K3(X)}" sizes="any" />`].join(`
|
|
3699
|
+
`;await s88(Z.repo,L);let w=O[0]??`${fk0(Y)}/${xF1(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 mF1(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 e88(Z,F.values(),X),{decofile:B,skipped:O}=m80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:uK(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:Xh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof n6)||J>=Zh6-1)throw N;await d$(QQ(2000,200,J,2,0.5))}}}function Xh6($){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 p81(Y,$.deps.coAuthor)}var Zh6=3,aF1;var L48=D(()=>{XA0();Sk0();z6();O8();dZ();yk0();aF1=new Map});import{createHmac as w48,randomBytes as Jh6,timingSafeEqual as Gh6}from"crypto";function j48(){if(dk0)return dk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dk0=$?Buffer.from($):Jh6(32),dk0}function sF1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Wh6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=w48("sha256",j48()).update(Y).digest("base64url");return`${Y}.${X}`}function E48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(w48("sha256",j48()).update(Y).digest("base64url"));if(X.length!==J.length||!Gh6(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 Wh6=21600000,dk0=null;var z48=D(()=>{U$()});function ik0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Kh6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=ik0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function P48($){let Z;try{Z=ik0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Kh6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=ik0(G),K=W&&ik0(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 zi}from"zod";function Fh6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Hh6.test($)}function M48($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function r80($){let Z=$.get("decofileScope");return Lc($.var.studioContext,Z.organizationId,Z.githubRepo)}function a80($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof n6)return $.json({error:Q},409);let Y=FW(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 I48(){let $=new Y1;return $.use("/:virtualMcpId/:branch",q48),$.use("/:virtualMcpId/:branch/*",q48),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(Z),X=await $48(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(P48(X.decofile),200,{...J,"content-type":"application/json"});let G=sF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(M48(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return a80(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 r80(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 a80(Z,X)}}),$.patch("/:virtualMcpId/:branch",Nh6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Bh6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{kk0(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(bF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await r80(Z),W=await D48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Oi(Y)},J),K=sF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:M48(Z)})}catch(G){return a80(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(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(FW(W)!==409)throw W;await lk0(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(FW(G)===409)return Z.json({error:"merge-conflict"},409);if(FW(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 a80(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await r80(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(FW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return a80(Z,Y)}}),$}var Hh6,A48=500,T48=1048576,R48=1024,Uh6=8388608,Nh6,Bh6,q48;var V48=D(()=>{zT0();Sk0();J8();AH();RF1();Vk0();tF1();dZ();L48();z48();iF1();yk0();fF();Hh6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Nh6=s5({maxSize:Uh6,onError:($)=>$.json({error:"Payload too large"},413)}),Bh6=zi.object({set:zi.record(zi.string(),zi.unknown()).optional(),delete:zi.array(zi.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<=T48),{message:`Each block must be at most ${T48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=R48),{message:`Each block key must be at most ${R48} characters`}),q48=Ik0(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(!Fh6(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||!E48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await $W(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(!$m(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=t80(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 k48=($)=>{let Z=new Y1;if(Z.use("*",id),Z.use("*",Je$),Z.route("/",fV0()),Z.route("/",le$()),Z.route("/",Ie$()),Z.route("/",r$8()),Z.route("/",c$8()),Z.route("/",t$8()),Z.route("/",d$8()),Z.route("/",Rk0()),Z.route("/tools",Y88()),Z.route("/",$88()),Z.route("/",z$8({kvStorage:$.kvStorage})),Z.route("/",j$8()),Z.route("/fs",v$8({getConnection:$.getNatsConnection})),Z.route("/sandbox",B48()),Z.route("/decofile",I48()),Z.route("/",h$8()),Z.route("/",x$8()),Z.route("/deco-sites",gV0()),Z.route("/hosting",Le$()),Z.route("/monitor",Te$()),Z.route("/sso",CV0()),Z.route("/",qk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Ue$()),$.mountDevAssets)Z.route("/dev-assets",cV0({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("/",wr$()),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",y$8()),Z.route("/mcp",kR0()),Z.route("/mcp/self",zk0()),Z.route("/mcp",_R0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var S48=D(()=>{J8();Ge$();zV0();Ne$();iK1();we$();Re$();mV0();of();uK1();rK1();E$8();P$8();b$8();f$8();x10();bK1();vR0();DF1();g$8();u$8();m$8();i$8();jF1();a$8();Z88();EF1();X88();zF1();SR0();O48();V48()});function Oh6($){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 Dh6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},C48=()=>{let $=new Y1;return $.use("*",Dh6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await uJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Oh6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var _48=D(()=>{J8();U$();qI0()});import{z as b1}from"zod";function dU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function qh6($){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 Mh6($,Z,Q){try{return JSON.parse($)}catch{throw new x48(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function Ih6($){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:Mh6(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 Vh6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?zF(Q.function.parameters):zF({type:"object",properties:{}});return[Q.function.name,l$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function kh6($){if(!$)return;return{openai:{response_format:$}}}function Sh6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function v48($,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 b48($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Lh6=256,wh6,jh6,Eh6,zh6,Ph6,Ah6,Th6,Rh6,x48,f48,y48;var g48=D(()=>{_4();J8();Bi();FH();wh6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),jh6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Eh6=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(jh6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),zh6=b1.object({type:b1.literal("text")}),Ph6=b1.object({type:b1.literal("json_object")}),Ah6=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()})}),Th6=b1.union([zh6,Ph6,Ah6]),Rh6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Eh6),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(wh6).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:Th6.optional(),user:b1.string().optional()});x48=class x48 extends Error{constructor($){super($);this.name="MessageConversionError"}};f48=new Y1;f48.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(dU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(dU("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(dU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Rh6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(dU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=qh6(J.model);if(!G)return $.json(dU("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)=>Iz(E.providerId));if(!j)return $.json(dU("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(dU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=Ih6(J.messages),N=J.tools?Vh6(J.tools):void 0,B=kh6(J.response_format),O=Sh6(),L=Math.floor(Date.now()/1000);if(J.stream)return CO($,async(w)=>{let j=v48(F,U,N,J,B,$.req.raw.signal);try{let E=sc(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>=Lh6)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:b48(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=v48(F,U,N,J,B,$.req.raw.signal),j=await HU(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:b48(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(dU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(dU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(dU(X.message,"server_error"),500)}});y48=f48});function Ch6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function h48(){let $=new Y1;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(!w7(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(d30(U)!==J)continue;if(!Ch6(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 u48=D(()=>{J8();GW()});var c48;var l48=D(()=>{c48={name:"decocms",version:"4.398.0",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 bh6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??vh6}}var m48,vh6="https://ph.studio.decocms.com",d48;var i48=D(()=>{J8();Wr();tx();E9();U$();zK1();l48();m48=new Y1;m48.get("/",($)=>{let Z={version:c48.version,theme:a1$(),...TK().logo&&{logo:TK().logo},...GO()&&{internalUrl:kc1()},...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:Gs$(),posthog:bh6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:mO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});d48=m48});function Pi($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function eF1($){return(Pi($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function n48($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Pi($))}&sz=${Z}`}function p48($,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 t48($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?p48(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):p48(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as n0}from"zod";var Hy,xh6,fh6,yh6,gh6,o48;var r48=D(()=>{Hy=n0.enum(["good","bad","neutral"]),xh6=n0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},n0.object({kind:n0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:n0.coerce.string().optional(),tone:Hy.optional(),muted:n0.boolean().optional(),delta:n0.coerce.string().optional(),deltaDir:n0.enum(["up","down","neutral"]).optional(),points:n0.array(n0.coerce.number()).optional(),label:n0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),fh6=n0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},n0.array(xh6)),yh6={key:n0.coerce.string(),title:n0.coerce.string(),eyebrow:n0.coerce.string().optional(),headline:n0.coerce.string(),annotation:n0.coerce.string().optional(),methodology:n0.coerce.string().optional(),sources:n0.array(n0.object({name:n0.coerce.string(),logoUrl:n0.coerce.string()})).optional()},gh6=n0.discriminatedUnion("template",[n0.object({template:n0.literal("cover"),score:n0.object({value:n0.coerce.number(),max:n0.coerce.number().optional(),grade:n0.coerce.string().optional(),label:n0.coerce.string().optional()}).optional(),brandImage:n0.coerce.string().optional(),screenshot:n0.coerce.string().optional(),mobileScreenshot:n0.coerce.string().optional()}),n0.object({template:n0.literal("cta"),ctaUrl:n0.coerce.string().optional(),ctaLabel:n0.coerce.string().optional(),bullets:n0.array(n0.coerce.string()).optional()}),n0.object({template:n0.literal("series"),points:n0.array(n0.coerce.number()).min(2),xLabels:n0.array(n0.coerce.string()).min(1),unit:n0.coerce.string().optional(),callout:n0.object({index:n0.coerce.number(),value:n0.coerce.string(),tone:Hy.optional()})}),n0.object({template:n0.literal("threshold"),value:n0.coerce.string().default(""),metricLabel:n0.coerce.string().optional(),ratio:n0.coerce.number(),thresholdRatio:n0.coerce.number().optional(),thresholdLabel:n0.coerce.string().default(""),tone:Hy.optional()}),n0.object({template:n0.literal("stats"),stats:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),tone:Hy.optional()})).min(1)}),n0.object({template:n0.literal("bars"),items:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),ratio:n0.coerce.number(),tone:Hy.optional()})).min(1)}),n0.object({template:n0.literal("gauges"),gauges:n0.array(n0.object({label:n0.coerce.string(),value:n0.coerce.string(),status:n0.enum(["good","warn","bad"]).catch("warn"),caption:n0.coerce.string().optional(),ratio:n0.coerce.number().optional()})).min(1)}),n0.object({template:n0.literal("checklist"),checks:n0.array(n0.object({label:n0.coerce.string(),status:n0.enum(["pass","fail","warn"]).catch("fail"),value:n0.coerce.string().optional()})).min(1)}),n0.object({template:n0.literal("table"),columns:n0.array(n0.object({label:n0.coerce.string(),align:n0.enum(["left","right"]).optional()})).min(1),rows:n0.array(fh6).min(1),highlightRow:n0.coerce.number().optional()}),n0.object({template:n0.literal("products"),products:n0.array(n0.object({name:n0.coerce.string(),price:n0.coerce.string().optional(),image:n0.coerce.string().optional(),url:n0.coerce.string().optional()})).min(1)}),n0.object({template:n0.literal("list"),entries:n0.array(n0.object({label:n0.coerce.string(),severity:n0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:n0.coerce.number().optional()}),n0.object({template:n0.literal("keywords"),volumeLabel:n0.coerce.string().optional(),keywords:n0.array(n0.object({term:n0.coerce.string(),volume:n0.coerce.string(),position:n0.coerce.number().catch(0)})).min(1)}),n0.object({template:n0.literal("competitor"),metricLabel:n0.coerce.string().optional(),competitors:n0.array(n0.object({name:n0.coerce.string(),value:n0.coerce.string(),tone:Hy.optional(),isYou:n0.boolean().optional()})).min(1)}),n0.object({template:n0.literal("scorecard"),rivalLabel:n0.coerce.string().optional(),dimensions:n0.array(n0.object({label:n0.coerce.string(),you:n0.coerce.string(),rival:n0.coerce.string().optional(),rivalName:n0.coerce.string().optional(),tone:Hy.optional()})).min(1)})]),o48=n0.object({...yh6,template:gh6})});function pk0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=o48.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var $U1=D(()=>{r48()});import{join as a48}from"path";async function uh6($){try{let Z=await fetch(`${yF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(hh6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=pk0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||eF1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function K3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function lh6($,Z){let Q=Pi($),Y=Z?.brand?.trim()||eF1(Q),X=n48(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=t48({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${K3(W)}</title>`,`<meta name="description" content="${K3(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="${K3(W)}" />`,`<meta property="og:description" content="${K3(K)}" />`,`<meta property="og:url" content="${K3(G)}" />`,`<meta property="og:image" content="${K3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${K3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${K3(W)}" />`,`<meta name="twitter:description" content="${K3(K)}" />`,`<meta name="twitter:image" content="${K3(H)}" />`,`<meta name="twitter:image:alt" content="${K3(F)}" />`,`<link rel="canonical" href="${K3(G)}" />`,`<link rel="icon" href="${K3(X)}" sizes="any" />`].join(`
|
|
3700
3700
|
`)}function ch6($,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}
|
|
3701
3701
|
</head>`)}function s48($){let Z=new Y1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Pi(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(a48($,"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(`${yF({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(mh6)}),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("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?a48($,"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 uh6(Pi(Y)),K=lh6(Y,W);return Q.html(ch6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var hh6=2500,mh6=1e4;var e48=D(()=>{J8();$U1();NA();U$()});function s80($,Z){return fetch(`${yF({})}${$}`,Z)}async function dh6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await s80(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=pk0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var ih6,vO,$68=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Z68;var Q68=D(()=>{J8();fG();NA();$U1();ih6=new Set(["complete","errored","terminated","unknown"]),vO=new Y1;vO.use("*",async($,Z)=>{let Q=await S8.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});vO.use("/link-token/*",$68);vO.use("/suggest",$68);vO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await dh6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});vO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await s80("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${UA({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});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)}});vO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await s80(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${UA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:ih6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});vO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await s80(`/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)}});vO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await s80(`/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:[]})}});Z68=vO});var ph6=1048576,ZU1;var Y68=D(()=>{J8();AH();U$();JK1();ZU1=new Y1;ZU1.post("/webhook",s5({maxSize:ph6,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(!Ea$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=za$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Pa$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as nh6}from"crypto";function rh6($,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 nh6(Buffer.from(X),Buffer.from(Y))}function ah6($,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 Y1;return Z.post("/webhook",s5({maxSize:th6,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(!rh6(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"&&!oh6.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 j41())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=ah6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await sh6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function sh6($,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 OV$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var th6=5242880,oh6;var J68=D(()=>{J8();AH();$H();z7();oh6=new Set(["check_suite","issue_comment"])});function G68($){let Z=new PO($.db,new KG($.encryptionKey)),Q=new Y1;return Q.get("/attachments/:token",async(Y)=>{let X=_M$(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 MX(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 W68=D(()=>{J8();qz();T51();Rj()});function K68($){let Z=new PO($.db,new KG($.encryptionKey));async function Q(X,J){let G=op$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await zW($.db,W.organizationId);if(!K)return;if(await VI0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new Y1;return Y.post("/webhook/:secret",s5({maxSize:eh6}),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 eh6=1048576;var H68=D(()=>{J8();AH();qz();kI0();cx()});import{DBOS as nk0,SchedulerMode as $u6}from"@dbos-inc/dbos-sdk";function U68($){YU1=$}function N68(){if(!YU1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return YU1}function B68(){let $=N68();return new PO($.db,new KG($.encryptionKey))}async function Yu6($,Z){try{let Q=await B68().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await zW(N68().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 MX(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${F68}m"`,K=0,H;for(let F=0;F<Qu6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=rp$(N,N.changelog?.histories??[],Z);for(let O of B)if(await VI0(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 Xu6($,Z){let Q=new Date($.getTime()-F68*60000),Y=await nk0.runStep(()=>B68().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>nk0.runStep(()=>Yu6(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 O68(){if(QU1)return;QU1=nk0.registerWorkflow(Xu6,{name:"jiraTriggerSweepWorkflow"}),nk0.registerScheduled(QU1,{name:"jiraTriggerSweepWorkflow",crontab:Zu6,mode:$u6.ExactlyOncePerIntervalWhenActive})}var Zu6="7-59/10 * * * *",F68=35,Qu6=5,YU1=null,QU1=null;var D68=D(()=>{qz();cx();Rj();kI0()});function L68($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var w68,Ju6,Gu6,j68;var E68=D(()=>{J8();AK();zm();rl();w68=new Y1,Ju6=["range","if-none-match","if-modified-since"],Gu6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];w68.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(dd($))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 O10(Y,Z);if(!X)throw new A$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&YW()){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 L68(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Ju6){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 Gu6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),L68(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});j68=w68});var e80=b((Fy)=>{var Wu6=Fy&&Fy.__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]}),Ku6=Fy&&Fy.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Wu6(Z,$,Q)};Object.defineProperty(Fy,"__esModule",{value:!0});Ku6(sJ(),Fy)});var A68=b((z68)=>{Object.defineProperty(z68,"__esModule",{value:!0});z68.version=void 0;z68.version="3.4.0"});var q68=b((iU)=>{var Hu6=iU&&iU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(iU,"__esModule",{value:!0});iU.NodeTransport=iU.VERSION=void 0;iU.nodeResolveHost=Du6;var c5=e80(),Fu6=q0("net"),XU1=q0("tls"),Uu6=q0("path"),T68=q0("fs"),Nu6=Hu6(q0("dns")),Bu6=A68();iU.VERSION=Bu6.version;var Ou6="nats.js";class R68{socket;version;lang;yields=[];signal=(0,c5.deferred)();closedNotification=(0,c5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Ou6,this.version=iU.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,c5.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 c5.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 c5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new c5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,c5.deferred)(),Q,Y=(0,Fu6.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,c5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=c5.DataBuffer.concat(...this.yields),X=(0,c5.extractProtocolMessage)(Y);if(X!=="")try{let J=c5.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,c5.deferred)();try{if($=(0,Uu6.resolve)($),!(0,T68.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,T68.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,c5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new c5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,c5.deferred)();try{let X=(0,XU1.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 c5.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,c5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new c5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,c5.deferred)();try{let Y=(0,XU1.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 c5.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,c5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,c5.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 XU1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,c5.render)($)}`);let Z=(0,c5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,c5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,c5.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}}iU.NodeTransport=R68;function Du6($){let Z=(0,c5.deferred)();return Nu6.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 S68=b((k68)=>{Object.defineProperty(k68,"__esModule",{value:!0});k68.connect=Lu6;var M68=q68(),I68=e80(),V68=e80();function Lu6($={}){if((0,V68.hasWsProtocol)($))return Promise.reject(V68.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,I68.setTransportFactory)({factory:()=>{return new M68.NodeTransport},dnsResolveFn:M68.nodeResolveHost}),I68.NatsConnectionImpl.connect($)}});var C68=b((bO)=>{var ju6=bO&&bO.__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]}),Eu6=bO&&bO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))ju6(Z,$,Q)};Object.defineProperty(bO,"__esModule",{value:!0});bO.connect=void 0;var zu6=S68();Object.defineProperty(bO,"connect",{enumerable:!0,get:function(){return zu6.connect}});Eu6(e80(),bO)});function x68($){let Z=$?.connectFn??Ru6,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:Tu6,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(Au6,Pu6,O-1,2,0.5);await d$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?_68.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=b68.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 Ru6($){return v68.connect($)}var _68,v68,b68,Pu6=100,Au6=3000,Tu6=3000;var f68=D(()=>{O8();_68=C(ai(),1),v68=C(C68(),1),b68=C(JN(),1)});function tk0($){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 ok0($,Z){return`${$}.${Z}`}class JU1{cache;constructor($){this.cache=tk0({ttlMs:$?.ttlMs??qu6,maxSize:$?.maxSize??Mu6})}async get($,Z){return this.cache.get(ok0($,Z))??null}async set($,Z,Q){this.cache.set(ok0($,Z),Q)}async invalidate($,Z){this.cache.delete(ok0($,Z)),this.cache.delete(ok0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var qu6=600000,Mu6=5000;var y68=()=>{};function rk0($,Z){return`${$}:${Z}`}function GU1($){let Z=tk0({ttlMs:$?.ttlMs??Iu6,maxSize:$?.maxSize??Vu6}),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(g68,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(rk0(K,H))},set(K,H,F){Z.set(rk0(K,H),F)},invalidate(K,H){Z.delete(rk0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(g68),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(rk0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var g68="studio.ai-provider-keys.invalidate",Iu6=30000,Vu6=5000;var h68=()=>{};class WU1{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 u68=($)=>{let Z;return()=>Z??=$()},KU1,HU1;var l68=D(()=>{S6();KU1=u68(()=>z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),HU1=u68(()=>z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function xu6($=d68){return{name:EU,subjects:[`${PZ1}.>`],storage:qH.StorageType.File,max_age:Cu6,max_bytes:vu6,max_msgs_per_subject:bu6,discard:qH.DiscardPolicy.Old,retention:qH.RetentionPolicy.Limits,duplicate_window:_u6,num_replicas:$}}class i68{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 c68($){let Z=m68.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function hu6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Su6().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 uu6($,Z){return $.info?.cluster?Z:1}function lu6($){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 FU1{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=xu6(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 y8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await qH.jetstreamManager($),X=uu6($,d68);try{await Z(Y,X)}catch(J){if(X<=1||!lu6(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:km});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=hu6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=sS$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=TZ1(H,{runId:Z}),N=performance.now()-F;KU1().record(N),HU1().add(1,{"org.id":Y??"unknown"}),gu6?.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?c68(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(),yu6)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 y8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:c68(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:km}),!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=TZ1(Z,{runId:$,dedup:Q});KU1().record(performance.now()-X),HU1().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=aS$({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"?qH.DeliverPolicy.New:qH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=_j($),W;try{W=await y8(async()=>{return(await Y.consumers.get(EU,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:km})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=s20({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(t20()).pipeThrough(o20()).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:_j($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var qH,m68,ku6=($)=>{let Z;return()=>Z??=$()},Su6,Cu6=86400000000000,_u6=120000000000,vu6=4294967296,d68,bu6=500000,fu6,yu6,gu6;var p68=D(()=>{O8();RZ1();e20();r20();S6();l68();qH=C(JN(),1),m68=C(ai(),1),Su6=ku6(()=>z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),d68=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);fu6=process.env.STREAM_ENCODE_TRACE==="1",yu6=process.env.DECOPILOT_STREAM_TRACE==="1";gu6=fu6?new i68:null});function ak0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,pH(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 n68=D(()=>{s8()});class UU1{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 cu6($,Z){let Q=$.startsWith("thread:")?ZH($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function t68($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await WU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await fc($,{threadId:X,runBranch:G?.branch}),K=cu6(W,await LA0($,X)),H=await we($,Q,p11(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 tG(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 o68=D(()=>{dZ();wW();z7()});async function r68($,Z,Q){let Y=Z.organizationId;if(!kJ(Z))return!1;if(!mx(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=tF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await t6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),j8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var a68=D(()=>{S4();SY();Om();GH();V9()});function ou6($){return $ instanceof jX}function ru6($,Z){return Z-$>=nu6}class NU1{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??mu6;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??iu6,Q=this.options.itemIntervalMs??du6,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)}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()-w51),S91);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()-tu6));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 I91(this.taskBoard,X,Y),await V91(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}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!==f$.progress||G.assigneeId!==T8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await WH(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),ou6(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()+pu6)).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!==f$.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(()=>{}),j8(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(!ru6(kB(Q,Z.reviewCycleStartedAt),Date.now()))return;await LU($,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(!kJ(Y))return!1;let X=Y.assigneeId===T8,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 t68(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 wm(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 r68(G,Y,W))return!0;if(await Q_$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!T91(W))return!1;return await Dm(G,Y,{previewMatchesHead:R91(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Vj($,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 mu6=60000,du6=300000,iu6=50,pu6=60000,nu6=900000,tu6=120000;var s68=D(()=>{S4();F20();o68();wU();q10();GH();a68();V9();HW();C91();z7();a00();Lm()});import{readdir as au6,rm as sk0}from"fs/promises";import{join as ek0}from"path";async function $S0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-su6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Uy($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await e68($,X,Z);else if(!X.startsWith(".")){let J=ek0($,X),G=await Uy(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await e68(J,K,Z)}if((await Uy(J)).length===0)await sk0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function e68($,Z,Q){let Y=0,X=ek0($,Z),J=await Uy(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=ek0(X,W),H=await Uy(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=ek0(K,U);await sk0(B,{recursive:!0,force:!0}),Y++}}if((await Uy(K)).length===0)await sk0(K,{recursive:!0,force:!0})}if((await Uy(X)).length===0)await sk0(X,{recursive:!0,force:!0});return Y}async function Uy($){try{return(await au6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var su6=30;var BU1=()=>{};import{DBOS as OU1,SchedulerMode as eu6}from"@dbos-inc/dbos-sdk";async function Zl6(){let $=[hW(),zy(),sU()],Z=0;for(let Q of $)try{Z+=await $S0(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 Ql6($,Z){await OU1.runStep(()=>Zl6(),{name:"monitoringRetention"})}function Z58(){if($58)return;$58=!0;let $=OU1.registerWorkflow(Ql6,{name:"monitoringRetentionWorkflow"});OU1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:$l6,mode:eu6.ExactlyOncePerIntervalWhenActive})}var $l6="23 4 * * *",$58=!1;var Q58=D(()=>{N3();BU1()});function Y58($){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 _Q.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await AA($.db,Z,Y.role);return X.boundAuth=aW1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new GP(Q,void 0,X.boundAuth,Y.role,"self"),Ij(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var X58=D(()=>{NK();iF()});function Yl6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Xl6(){return{services:Yl6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Gl6(){for(let $ of Jl6)$()}function J58($){let Z=[...DU1.logs,$];DU1={...DU1,logs:Z.length>500?Z.slice(-500):Z},Gl6()}function LU1(){return Wl6}var DU1,Jl6,Wl6=!1;var wU1=D(()=>{DU1=Xl6(),Jl6=new Set});import{EventEmitter as Kl6}from"events";var jU1;var G58=D(()=>{wU1();jU1=new Kl6;jU1.on("request",($)=>{J58($)})});function W58(){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=Ai(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>Ai(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${$9.tool}${B}${$9.dim}(${w})${$9.reset}`}else if(N.method)J=`${$9.dim}${Ai(N.method)}${$9.reset}`}}catch{}}let W=Ai(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${$9.mcp}${Ai(F.slice(0,12))}\u2026${$9.reset}`}else if(X==="/mcp")W=`${$9.mcp}/mcp${$9.reset}`;else if(X==="/mcp/registry")W=`${$9.mcp}/mcp/registry${$9.reset}`;let K=Fl6(Y),H=G?"\u25C0":"\u2190";if(!LU1())console.log(`${$9.dim}${H}${$9.reset} ${K}${Y}${$9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Hl6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!LU1())console.log(`${$9.dim}${O}${$9.reset} ${K}${Y}${$9.reset} ${W}${J?` ${J}`:""} ${N}${U}${$9.reset} ${$9.duration}${B}${$9.reset}`);jU1.emit("request",{method:Y,path:Ai(X),status:U,duration:F,timestamp:new Date})}}}var $9,Hl6=($)=>{if($>=500)return $9.serverError;if($>=400)return $9.clientError;if($>=300)return $9.redirect;return $9.ok},Fl6=($)=>{return $9[$]||$9.reset},Ai=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var K58=D(()=>{wU1();G58();$9={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 N58}from"crypto";import{mkdir as Ul6,readdir as Nl6,rm as H58,stat as B58}from"fs/promises";import{join as zU1,relative as Bl6}from"path";import{z as r$}from"zod";function D58($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return zU1(Ol6,Z)}function L58($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function EU1($,Z){let Q=D58($),Y=L58(Z);return zU1(Q,Y)}function Dl6($,Z,Q,Y){let X=E0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return N58("sha256",X).update(J).digest("hex")}function U58($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=Dl6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${L58(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function w58($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${N58("md5","etag").update(Y).digest("hex")}"`}async function j58($,Z,Q,Y,X){try{let J=await Nl6($,{withFileTypes:!0});for(let G of J){let W=zU1($,G.name),H=Bl6(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 j58(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 B58(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:w58(W,F.mtime,F.size)})}catch{}}}}catch{}}function E58($,Z){let Y=K0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:r$.object({prefix:r$.string().optional(),maxKeys:r$.number().optional().default(1000),continuationToken:r$.string().optional(),delimiter:r$.string().optional()}),outputSchema:r$.object({objects:r$.array(r$.object({key:r$.string(),size:r$.number(),lastModified:r$.string(),etag:r$.string()})),nextContinuationToken:r$.string().optional(),isTruncated:r$.boolean(),commonPrefixes:r$.array(r$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=D58(Y);await Ul6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await j58(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:r$.object({key:r$.string()}),outputSchema:r$.object({contentType:r$.string().optional(),contentLength:r$.number(),lastModified:r$.string(),etag:r$.string(),metadata:r$.record(r$.string(),r$.string()).optional()}),handler:async(X)=>{let J=X,G=EU1(Y,J.key),W=await B58(G);return{contentType:tK1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:w58(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:r$.object({key:r$.string(),expiresIn:r$.number().optional()}),outputSchema:r$.object({url:r$.string(),expiresIn:r$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??F58;return{url:U58(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:r$.object({key:r$.string(),expiresIn:r$.number().optional(),contentType:r$.string().optional()}),outputSchema:r$.object({url:r$.string(),expiresIn:r$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??F58;return{url:U58(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:r$.object({key:r$.string()}),outputSchema:r$.object({success:r$.boolean(),key:r$.string()}),handler:async(X)=>{let J=X,G=EU1(Y,J.key);try{return await H58(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:r$.object({keys:r$.array(r$.string()).max(1000)}),outputSchema:r$.object({deleted:r$.array(r$.string()),errors:r$.array(r$.object({key:r$.string(),message:r$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=EU1(Y,K);try{await H58(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function PU1($,Z,Q){let Y=E58(Z,Q),X=new TL({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:zZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:r$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:r$.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 eG({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MW(X,J,$,"mcp:dev-assets")}async function z58($,Z,Q,Y){let J=E58(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 Ol6="./data/assets",F58=3600,O58,P58;var A58=D(()=>{U$();ym();J8();fY0();fm();rX();mV0();O58=new Y1;O58.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return PU1($.req.raw,Z,Y)});P58=O58});var T58={};R6(T58,{mountDevRoutes:()=>Ll6});function Ll6($,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 PU1(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 z58(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",P58);let Q=new Y1;Q.use("*",TH({mountPath:"/api/dev-assets"})),Q.route("/",cV0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var R58=D(()=>{J8();lK1();mV0();A58()});var b58={};R6(b58,{watchHandler:()=>v58,resolveCorsOrigin:()=>C58,isSsoExemptPath:()=>k58,isAllowedOAuthRedirectUri:()=>_58,createApp:()=>Ml6});import{readFileSync as wl6}from"fs";import{PrometheusSerializer as jl6}from"@opentelemetry/exporter-prometheus";import{DBOS as xO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as Pl6,oAuthProtectedResourceMetadata as Al6}from"better-auth/plugins";async function El6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,M58(q58)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),M58(q58)]),Q.release(),!0}catch{return Q.release(!0),!1}}function M58($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function k58($){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(`${TV0}/`)}function S58($){return $==="local.studio.decocms.com"}function C58($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;if(S58(Y))return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function _58($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||S58($.hostname)}async function Ml6($={}){let Z=$.database??k8(),Q=!1;B9.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let Y,X,J,G,W=new JU1,K,H,F,U=null;if($.disableNats)K=GU1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new b10,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=x68();let Q0=E0().natsCredsPath,w0;if(Q0)try{w0=wl6(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=ge0()?new Pe0({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),Y=e;let i=new v41({getJetStream:()=>U.getJetStream()});i.init().catch(()=>{}),X=i;let m0=new ix(w91,{getJetStream:()=>U.getJetStream()}),I0=new ix(s00,{getJetStream:()=>U.getJetStream()});m0.init().catch(()=>{}),I0.init().catch(()=>{}),J={reads:m0,cards:I0};let o0=new JQ1({getJetStream:()=>U.getJetStream()});o0.init().catch(()=>{}),G=o0,K=GU1({getConnection:()=>U.getConnection()}),H=new WU1({getConnection:()=>U.getConnection()}),F=new FU1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),la$(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)}),o0.init().catch((f0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",f0)}),K.start(),RK$(()=>U.getConnection()),F.init().catch((f0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",f0)})})}if(BE)await BE();Ae0(Y),x41(X),j91(J),GQ1(G);let B={storage:new Gh(Z.db),sseHub:B9,onThreadFinished:async(Q0,w0)=>Em(new nG(Z.db),Q0,w0,new BG(Z.db))},O=new SZ1(B),L=new $80(Z.db),w=new UU1(L);w.start(),$_$(H),H.start((Q0)=>{y20(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;yK1(j),U?.onReady(()=>yK1(j)),gQ1(j),U?.onReady(()=>gQ1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),BE=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),ss$(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),qK$(),G.teardown(),Ae0(null),x41(null),j91(null),GQ1(null)};let E=new Y1;if(E.use("*",QQ1({enabled:(Q0)=>md(Q0,"debug")==="1"})),E.use("*",AS0),E.use("/*",fa$({origin:(Q0,w0)=>C58(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("*",W58());E.use("*",async(Q0,w0)=>{if(await w0(),_i(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(lY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(lY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(lY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let w0={};if(w0.postgres={status:await El6(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(lY.METRICS,async(Q0)=>{try{let w0=await MS0.collect(),e=zl6.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(`${lY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let w0=Q0.req.param("queueName");if(!Tl6.has(w0))return Q0.json({error:`Unknown queue: ${w0}`},404);let[e,i]=await Promise.all([xO.listQueuedWorkflows({queueName:w0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),xO.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",d48),E.route("/api/_reports",Z68),E.route("/api/_stripe",ZU1),E.route("/api/_github",X68({taskBoard:()=>n,contextFactory:()=>g})),E.route("/api/_git",ad);let T={db:Z.db,encryptionKey:E0().encryptionKey};E.route("/api/_jira",K68(T)),E.route("/api/_jira",G68(T)),E.route("/report",s48($.clientDir)),E.route("/api/auth/custom",Ws$),E.route("/api/auth/desktop",Us$),E.all("/api/auth/admin/*",gs$),E.all("/api/auth/*",async(Q0)=>{return await S8.handler(Q0.req.raw)});let P=Lr$();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",B80),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",B80),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",r$0),E.route("/",Pr$()),E.use("/oauth-proxy/:connectionId/*",B80),E.all("/oauth-proxy/:connectionId/*",I58);let A=async(Q0)=>{let e=await Rl6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",B80),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(Q0)=>{let e=await ql6()(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 Ha$({db:Z.db,auth:S8,encryption:{key:E0().encryptionKey},observability:{tracer:dO,meter:z$},modelListCache:W,providerKeyCache:K,memberRoleCache:x});_Q.set(_),jc1({db:Z.db,baseUrl:b5()}),Fa$({db:Z.db}),Oa$({db:Z.db}),Aa$({db:Z.db}),U68({db:Z.db,encryptionKey:E0().encryptionKey}),CI$({db:Z.db}),Va$({db:Z.db}),$V$({db:Z.db});let V=qQ0(Z.db),y=new Ho(Z.db),g=Y58({db:Z.db});s71({storage:V,studioContextFactory:g}),uZ1({systemDatabaseUrl:ct0(E0().databaseUrl,E0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:B9}}),vZ1({dispatchRunFn:dS$,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:B9}});let l=new Gh(Z.db),n=new nG(Z.db),p=new BG(Z.db),F0=new NU1(n,g,p);if(E0().taskBoardReviewSweeperEnabled){F0.start();let Q0=BE;BE=async()=>{await Q0?.(),F0.dispose()}}UC$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await V58.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(ak0(B9,w0,Q0,e),e)await Em(n,Q0,w0,p);return e},markRunRequiresAction:async(Q0,w0)=>{let e=await l.requiresActionIfInProgress(Q0,w0);return ak0(B9,w0,Q0,e),e},markRunFailed:async(Q0,w0,e,i)=>{let m0=await l.markRunFailed(Q0,w0,e,i);if(ak0(B9,w0,Q0,m0),m0)await Em(n,Q0,w0,p);return m0},clearSynthesizedError:async(Q0,w0)=>{await l.messageParts().replaceMessageParts(Q0,Cj(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);B9.emit(w0,pH(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})=>{y1.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})=>{y1.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)}}),LS$({studioContextFactory:g,systemDatabaseUrl:ct0(E0().databaseUrl,E0().databasePgSsl),streamBuffer:F}),Z58(),Ec1(),Na$(),La$(),Ra$(),O68(),fI$(),Sa$(),ZV$();let V0=async(Q0,w0,e)=>{let i=await V.findById(Q0,w0);if(!i)throw Error("Automation not found");return ZQ1({automationId:i.id,organizationId:i.organization_id,triggerId:null})},G0=new od(V,({automation:Q0,trigger:w0,contextMessages:e,idempotencyKey:i})=>v10({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:w0.id,contextMessages:e},{idempotencyKey:i})),H0=[hW(),zy(),sU()];for(let Q0 of H0)$S0(Q0).then(()=>{}).catch((w0)=>console.error("[monitoring] Retention cleanup failed:",w0));let X0=()=>S8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,w0)=>{if(zS0(Q0.req.path))return w0();let e={measure:async(m0,I0)=>{qW(Q0,m0);try{return await I0()}finally{$3(Q0,m0)}}},i=await _Q.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),d$(30000)]).catch((o0)=>console.error("[studio] revalidation cleanup error:",o0))}}),E.use("/api/:org/decopilot/*",id),E.use("/api/:org/v1/*",id),E.use("/api/:org/files/*",id),E.use("*",async(Q0,w0)=>{if(k58(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 Y1;Z0.use("*",TH({mountPath:"/api/org-sso"})),Z0.route("/",CV0()),E.route("/api/org-sso",Z0),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:Ti0,grouped:JP()})}),E.use("/mcp/*",async(Q0,w0)=>{qW(Q0,"mcp");try{return await w0()}finally{$3(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),YW()){let{mountDevRoutes:Q0}=(R58(),KS0(T58));Q0(E,Y0)}let o=new Y1;o.use("*",TH({mountPath:"/mcp"})),o.route("/",kR0()),E.route("/mcp",o);let J0=new Y1;J0.use("*",TH({mountPath:"/mcp/self"})),J0.route("/",zk0()),E.route("/mcp/self",J0);let c0=new Y1;c0.use("*",TH({mountPath:"/mcp"})),c0.route("/",_R0()),E.route("/mcp",c0),E.use("/api/:org/models/*",async(Q0,w0)=>{qW(Q0,"llm_models");try{return await w0()}finally{$3(Q0,"llm_models")}});let k0=$e$({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",k0),E.route("/api",j68);let E1=new Y1;E1.use("*",TH({mountPath:"/api"})),E1.route("/",Rk0()),E.route("/api",E1),E.route("/api",y48);let d0=new Y1;d0.use("*",TH({mountPath:"/api"})),d0.route("/",qk0({tokenStorage:y,automationEventDispatcher:G0})),E.route("/api",d0);let L0=new Uo(Z.db),j0=new Y1;j0.use("*",TH({mountPath:"/api"})),j0.route("/",fV0()),E.route("/api",j0),E.route("/api/deco-sites",Oe$()),E.route("/api/deco-apps",C48());let e0=new Y1;e0.use("*",TH({mountPath:"/api/deco-sites"})),e0.route("/",gV0()),E.route("/api/deco-sites",e0),E.route(VV0,hs$()),E.route(p$8,o$8()),E.route("/api/_editor-resolve",h48()),E.route(Bs$,Os$()),E.route(TV0,Rs$());let A1=k48({kvStorage:L0,runRegistry:O,streamBuffer:F,sseHub:B9,cancelBroadcast:H,tokenStorage:y,automationEventDispatcher:G0,mountDevAssets:YW(),mcpAuth:Y0,oauthProxyHandler:I58,watchHandler:v58,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",A1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(Ye$),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([B9.stop(),BE?Promise.resolve(BE()).finally(()=>{BE=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await bX().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await B4$(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await xO.registerQueue(U3,{partitionQueue:!0,concurrency:o71,minPollingIntervalMs:r71}),await xO.registerQueue(F3,{partitionQueue:!0,concurrency:gZ1,priorityEnabled:!0}),await xO.registerQueue(rU,{workerConcurrency:E0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await xO.registerQueue(aU,{workerConcurrency:E0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await xO.registerQueue(cO,{partitionQueue:!0,concurrency:DS$}),await xO.registerQueue(jE,eI$),await cK1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>xO.deleteQueue(Q0))),await a71(Z.pool),v9$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),zc1().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var V58,q58=5000,BE=null,I58=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 _Q.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 hd(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 a$0(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=zr$(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(!_58(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 ud(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 H9(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:_})},v58=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&&(!OU(Y)||!await DU(Z)))return $.json({error:"forbidden"},403);let W=G?tT0:Y;if(G)YO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return CO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!B9.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(()=>{B9.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)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),B9.remove(W,K),N()})})})},zl6,Tl6,Rl6=()=>Al6(S8),ql6=()=>Pl6(S8);var x58=D(()=>{O8();U$();Pc1();Ba$();wa$();qa$();h10();$91();Ca$();a00();E9();rl();s8();J8();jV0();ya$();YQ1();fG();iF();BK1();l3();S6();F6();zK1();Ns$();Ds$();qs$();MK1();us$();bK1();Ze$();uK1();mK();QV0();lK1();Xe$();zV0();S48();iK1();_48();SR0();x10();g48();vR0();zF1();u48();jF1();i48();e48();Q68();Y68();J68();W68();H68();D68();rK1();E68();EF1();DF1();D40();f68();BJ();SA0();z91();bs();fs();KQ1();y68();h68();gK1();p68();CZ1();n68();nn();Bo();QO();V9();bW1();s68();Q58();HJ0();BU1();N3();mK1();ZO();VZ1();HJ0();n20();Ui0();Ni0();X58();Wu();K58();Bi();BK1();Nm();Im();g20();V58=C(JN(),1);zl6=new jl6,Tl6=new Set([U3,F3,rU,aU,cO,jE])});var h58={};R6(h58,{resolveClientDir:()=>vl6,resolveAssetPathWithTraversalCheck:()=>g58,isPathWithinDirectory:()=>y58,createAssetHandler:()=>bl6});import{resolve as $40,dirname as Il6,join as Vl6,extname as kl6,basename as Sl6,sep as f58}from"path";function Cl6($,Z){if($===Z||Sl6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${f58}assets${f58}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function y58($,Z){let Q=$40(Z),Y=$40($);return Y===Q||Y.startsWith(Q+"/")}function g58({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=$40(Z,Q);if(!y58(Y,Z))return null;return Y}function vl6($,Z="../client"){let Q=new URL($),Y=Il6(Q.pathname);return $40(Y,Z)}function bl6($={}){let{env:Z="production",clientDir:Q=_l6,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=g58({requestPath:W,clientDir:Q});if(!K)return null;let H=Vl6(K,"index.html"),F=$40(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(kl6(K))?[H,F]:[];for(let O of[K,...B])try{let L=Bun.file(O);if(await L.exists())return new Response(L,{headers:Cl6(O,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var _l6="./dist/client";var u58=()=>{};var l58={};R6(l58,{tryUpgradePreviewWs:()=>ll6,tryHandlePreviewHttp:()=>ul6,previewWebSocketHandler:()=>cl6,parsePreviewBaseDomain:()=>hl6,isPreviewWsData:()=>ZS0,extractHandleFromHost:()=>AU1});function yl6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function gl6(){return new Response(fl6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function hl6($){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 AU1($,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 ul6($,Z){let Q=AU1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return Q40(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(zx)&&yl6($))return gl6();return X.headers.delete(zx),X}function Q40($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function ZS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function ll6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=AU1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return Q40(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return Q40(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return Q40(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 Q40(426,"upgrade failed");return}function Z40($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var xl6=256,fl6='<!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>',cl6;var c58=D(()=>{B41();cl6={open($){let Z=$.data;if(!ZS0(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)}`),Z40($,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)=>{Z40($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{Z40($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!ZS0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=xl6){Z40($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!ZS0(Z))return;Z40($,Z,1000,"")}}});var p58={};R6(p58,{printBanner:()=>dl6,bannerLines:()=>i58,BANNER_LINES:()=>m58,BANNER_GRADIENT:()=>d58});function ml6($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function i58($){let Z=m58.map((Q,Y)=>{let[X,J,G]=ml6(d58[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 dl6($){console.log("");for(let Z of i58($))console.log(Z);console.log("")}var m58,d58;var n58=D(()=>{m58=[" \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 "],d58=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});O8();var xU1="13";function fU1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:xU1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}O8();import U98 from"pg";var yU1=8314027461559302n,N98=600000,B98=500;async function gU1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=N98}=$,X=$.log??((K)=>console.log(K)),J=new U98.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",[yU1.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 d$(B98)}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)",[yU1.toString()])}catch{}await J.end().catch(()=>{})}}U$();NS0();S6();function UZ8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function kS0($,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 PN1(){let $=UZ8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:kS0($,"--cpu-prof-dir")??process.cwd(),name:kS0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(kS0($,"--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.'}))}_S0();var j40;function SN1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=PE();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(()=>{}),j40=setInterval(()=>void Z().catch(()=>{}),$),j40.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(j40)clearInterval(j40)}}import*as OZ8 from"bun:jsc";var{startSamplingProfiler:DZ8,samplingProfilerStackTraces:LZ8}=OZ8;function CN1(){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{DZ8()}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=LZ8()?.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 _N1(){PN1();let $=[SN1(),kN1(),CN1()];return()=>{for(let Z of $)Z()}}import{existsSync as sl6}from"fs";var dJ=E0();jN1();var{DBOS:Y40,DBOSClient:il6}=await import("@dbos-inc/dbos-sdk");function VU1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var pl6=[U3,F3,rU,aU,cO,jE],nl6=dJ.dispatchRole==="worker"?pl6:dJ.dispatchRole==="api"?[]:void 0;Y40.setConfig(fU1({systemDatabaseUrl:VU1(dJ.databaseUrl,dJ.databasePgSsl),poolSize:dJ.dbosPoolSize,executorID:dJ.podName,listenQueues:nl6}));var{createApp:tl6}=await Promise.resolve().then(() => (x58(),b58)),{isServerPath:ol6}=await Promise.resolve().then(() => (D40(),ZN1)),{createAssetHandler:rl6,resolveClientDir:s58}=await Promise.resolve().then(() => (u58(),h58)),al6=dJ.port,t58=s58(import.meta.url,"../client"),e58=sl6(t58)?t58:s58(import.meta.url,"../dist/client"),el6=rl6({clientDir:e58,isServerPath:ol6}),$c6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function Zc6($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries($c6))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:Qc6,tryHandlePreviewHttp:Yc6,tryUpgradePreviewWs:Xc6,previewWebSocketHandler:TU1,isPreviewWsData:RU1}=await Promise.resolve().then(() => (c58(),l58)),{getOrInitSharedRunner:$98}=await Promise.resolve().then(() => ($H(),BE$)),Z98=Qc6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),o58={baseDomain:Z98??"",getRunner:$98};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())$98().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var QS0=await tl6({clientDir:e58}),qU1=process.env.DBOS_CONDUCTOR_KEY?.trim(),r58=process.env.DBOS_CONDUCTOR_URL?.trim();await gU1({databaseUrl:VU1(dJ.databaseUrl,dJ.databasePgSsl)},()=>Y40.launch({...qU1?{conductorKey:qU1}:{},...qU1&&r58?{conductorURL:r58}:{}}));console.log(`[dbos] application version: ${Y40.applicationVersion}`);var MU1=5,IU1=0;await y8(async()=>{IU1++;try{return await QS0.initDbos()}catch($){let Z=IU1>=MU1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${IU1}/${MU1} failed, ${Z}`,$),$}},{maxAttempts:MU1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!dJ.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (n58(),p58));console.log("");for(let Z of $())console.log(Z)}var Jc6=Bun.serve({idleTimeout:0,port:al6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(Z98){let Y=await Xc6($,Z,o58);if(Y===void 0)return;if(Y)return Y;let X=await Yc6($,o58);if(X)return X}let Q=await el6($);if(Q)return Zc6(Q);return QS0.fetch($,{server:Z})},websocket:{open($){if(RU1($.data))TU1.open($)},message($,Z){if(RU1($.data))TU1.message($,Z)},close($){if(RU1($.data))TU1.close($)}},development:!1}),Gc6=_N1();if(dJ.localMode)Promise.resolve().then(() => (tx(),q20)).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(() => (tx(),q20));Z()}catch{}});var a58=!1;async function Wc6($){let Z;try{Z=await il6.create({systemDatabaseUrl:VU1(dJ.databaseUrl,dJ.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:F3,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:F3}),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 YS0($){if(a58)return;a58=!0,console.log(`
|
|
3702
3702
|
[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{Gc6(),QS0.markShuttingDown();let J=uU1(dJ.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await d$(J),await Jc6.stop(!0);let G=Y40.executorID;await Y40.shutdown(),await Wc6(G),await QS0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>YS0("SIGTERM"));process.on("SIGINT",()=>YS0("SIGINT"));process.on("SIGHUP",()=>YS0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),YS0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,X as u}from"./index-cT94sQUH.js";import{C as f}from"./index-ChjHAm_X.js";import{a as x}from"./thread-route-C05Rrd8B.js";import{u as g}from"./use-task-metadata-C-i2MCdn.js";import{AppViewContent as h}from"./project-app-view-CJHRV6yL.js";import"./use-mobile-Dv7BcXr5.js";import"./thread-button-BVgcb5x6.js";import"./sidebar-BFWjj-3T.js";import"./LayoutLeft-DgiG6wiH.js";import"./sheet-908igmnH.js";import"./X-CLqvixem.js";import"./tooltip-BGTnGCWW.js";import"./index-CgGEL4tk.js";import"./use-panel-navigate-BvpNAJeL.js";import"./use-project-scope-CYpIGnJg.js";import"./use-virtual-mcp-CyUsVYwB.js";import"./use-mcp-client-GBv4syMd.js";import"./auth-k9t16OOb.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-Bux-DW8_.js";import"./hooks-Dpw_cJTM.js";import"./backoff-8mStPHYB.js";import"./task-board-BKlDz2nG.js";import"./schema-BwpPocS5.js";import"./agent-icon-CVsOY5Om.js";import"./AlertCircle-B3LJiQhZ.js";import"./Tool01-DK_vv6qf.js";import"./ArrowUp-BB5V3348.js";import"./ArrowLeft-DmWma6hW.js";import"./ArrowRight-540iMVH3.js";import"./XCircle-xC8IFHez.js";import"./ZoomOut-DD-ULjJm.js";import"./Globe04-DnURSsdQ.js";import"./CheckCircle-tvGC17Dy.js";import"./Check-CGKF06bT.js";import"./ChevronUp-Du4AWZmG.js";import"./UserSquare-CHvWRyuq.js";import"./Copy01-CYbqJpFZ.js";import"./CreditCard01-CK4yyvJY.js";import"./DotsVertical-BQfY36BV.js";import"./Download01-C8jubU2p.js";import"./Eye-CpLoEsen.js";import"./Share07-DpckpNEB.js";import"./XClose-1APsw2yP.js";import"./Image01-DPZCMheY.js";import"./Key01-CSyDklFV.js";import"./Link01-CYG0Mr8Q.js";import"./LinkExternal01-Div0d_z3.js";import"./Monitor01-BrSZ6zzu.js";import"./Sun-CzonSHrU.js";import"./Package-C5JGfmw5.js";import"./Palette-Bm4HMPv2.js";import"./Plus-Do5Wkomw.js";import"./SearchLg-gOfrWgIs.js";import"./SearchMd-B9ModJFt.js";import"./Stars01-B6IfixlN.js";import"./Trash01-Dw6PLr8l.js";import"./Upload01-BsQDz7U2.js";import"./User01-Bla6DkK3.js";import"./Users01-fXdkObFe.js";import"./Zap-SzxRRv0w.js";import"./toolbar-icon-button-BXZ727Lv.js";import"./use-in-settings-3zEronlT.js";import"./shell-layout-CkG1W_88.js";import"./avatar-B9CWtHB4.js";import"./download-app-dialog-CwgA8Jar.js";import"./dialog-DiUlVwD1.js";import"./command-DZRWMxD5.js";import"./index-C9PI5TjH.js";import"./integration-icon-CBv4y2ld.js";import"./project-icon-DW-tv9X7.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-fSuiMVRc.js";import"./autosend-BKkKn8iq.js";import"./use-org-sso-BziwA5dH.js";import"./resizable-CyPCDk7u.js";import"./route-page-header-CQ5gYErc.js";import"./gateway-client-BrPXiQqR.js";import"./tool-namespace-DmnQIdtF.js";import"./use-mcp-tools-BZqzi-qU.js";import"./sandbox-lifecycle-context-Bt6dDo65.js";import"./use-session-runtime-CyC7y7Wf.js";import"./thread-intent-CHlBhQ4g.js";import"./slugify-CEUa2lfQ.js";import"./chat-context-CIrojUbL.js";import"./use-entitlements-Dbhso4ZI.js";import"./use-ai-providers-Cc_CzBZr.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-BT_W0lJl.js";import"./use-organization-settings-C55vewZa.js";import"./sandbox-url-D3mC8qhT.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DQd4z-tw.js";import"./types-C2ulVtYx.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-YiSxQfB7.js";import"./companions-core-BnuxEm_5.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-C8GSbvaz.js";import"./form-DDtq3Oeg.js";import"./label-C6sMx1BY.js";import"./input-CSdHjp7L.js";import"./use-debounced-value-CylTsY1l.js";import"./provision-repo-scoped-github-connection-B6zdkC6p.js";import"./useQueries-DRE-cCNR.js";import"./authenticate-and-persist-oauth-8HHvB0nM.js";import"./mcp-oauth-CtDqQIpT.js";import"./track-Cl2p3Vuk.js";import"./extract-connection-data-ak1yxd15.js";import"./connection-BtvJKuLN.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,aR as b,u as g}from"./index-cT94sQUH.js";import{C as j}from"./index-ChjHAm_X.js";import{F as v,H as S}from"./file-share-button-DkoS4iJK.js";import{u as k,b as y,e as _}from"./use-org-fs-CGr2NA9d.js";import{S as w}from"./settings-tab-Bqa114IE.js";import{b as M}from"./thread-route-C05Rrd8B.js";import"./use-mobile-Dv7BcXr5.js";import"./thread-button-BVgcb5x6.js";import"./sidebar-BFWjj-3T.js";import"./LayoutLeft-DgiG6wiH.js";import"./sheet-908igmnH.js";import"./X-CLqvixem.js";import"./tooltip-BGTnGCWW.js";import"./index-CgGEL4tk.js";import"./use-panel-navigate-BvpNAJeL.js";import"./use-project-scope-CYpIGnJg.js";import"./use-virtual-mcp-CyUsVYwB.js";import"./use-mcp-client-GBv4syMd.js";import"./auth-k9t16OOb.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-Bux-DW8_.js";import"./hooks-Dpw_cJTM.js";import"./backoff-8mStPHYB.js";import"./task-board-BKlDz2nG.js";import"./schema-BwpPocS5.js";import"./agent-icon-CVsOY5Om.js";import"./AlertCircle-B3LJiQhZ.js";import"./Tool01-DK_vv6qf.js";import"./ArrowUp-BB5V3348.js";import"./ArrowLeft-DmWma6hW.js";import"./ArrowRight-540iMVH3.js";import"./XCircle-xC8IFHez.js";import"./ZoomOut-DD-ULjJm.js";import"./Globe04-DnURSsdQ.js";import"./CheckCircle-tvGC17Dy.js";import"./Check-CGKF06bT.js";import"./ChevronUp-Du4AWZmG.js";import"./UserSquare-CHvWRyuq.js";import"./Copy01-CYbqJpFZ.js";import"./CreditCard01-CK4yyvJY.js";import"./DotsVertical-BQfY36BV.js";import"./Download01-C8jubU2p.js";import"./Eye-CpLoEsen.js";import"./Share07-DpckpNEB.js";import"./XClose-1APsw2yP.js";import"./Image01-DPZCMheY.js";import"./Key01-CSyDklFV.js";import"./Link01-CYG0Mr8Q.js";import"./LinkExternal01-Div0d_z3.js";import"./Monitor01-BrSZ6zzu.js";import"./Sun-CzonSHrU.js";import"./Package-C5JGfmw5.js";import"./Palette-Bm4HMPv2.js";import"./Plus-Do5Wkomw.js";import"./SearchLg-gOfrWgIs.js";import"./SearchMd-B9ModJFt.js";import"./Stars01-B6IfixlN.js";import"./Trash01-Dw6PLr8l.js";import"./Upload01-BsQDz7U2.js";import"./User01-Bla6DkK3.js";import"./Users01-fXdkObFe.js";import"./Zap-SzxRRv0w.js";import"./toolbar-icon-button-BXZ727Lv.js";import"./use-in-settings-3zEronlT.js";import"./shell-layout-CkG1W_88.js";import"./avatar-B9CWtHB4.js";import"./download-app-dialog-CwgA8Jar.js";import"./dialog-DiUlVwD1.js";import"./command-DZRWMxD5.js";import"./index-C9PI5TjH.js";import"./integration-icon-CBv4y2ld.js";import"./project-icon-DW-tv9X7.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-fSuiMVRc.js";import"./autosend-BKkKn8iq.js";import"./use-org-sso-BziwA5dH.js";import"./resizable-CyPCDk7u.js";import"./route-page-header-CQ5gYErc.js";import"./input-CSdHjp7L.js";import"./popover-DuPXzrgi.js";import"./scroll-area-C_IMBr_-.js";import"./select-B3V6AARR.js";import"./breadcrumb-DgDOitTK.js";import"./extract-connection-data-ak1yxd15.js";import"./metadata-D72DunRR.js";import"./connection-BtvJKuLN.js";import"./chat-context-CIrojUbL.js";import"./thread-intent-CHlBhQ4g.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Dbhso4ZI.js";import"./use-ai-providers-Cc_CzBZr.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-BT_W0lJl.js";import"./use-organization-settings-C55vewZa.js";import"./build-improve-prompt-doc-lqIM7ao_.js";import"./empty-state-YhHJ1PAR.js";import"./use-date-fns-locale-BxNb5mu8.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-BUnGMpfY.js";import"./mcp-oauth-CtDqQIpT.js";import"./alert-dialog-m7PHs13d.js";import"./textarea-lt2TXyPT.js";import"./use-debounced-autosave-Ds1nUcal.js";import"./add-connection-dialog-D9j0h-SU.js";import"./collection-search-B2Rze4Ue.js";import"./connection-card-CEFIrJY3.js";import"./useInfiniteQuery-DS8vuz-1.js";import"./infiniteQueryObserver-Dj3x0ul-.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BT08Xqaa.js";import"./form-DDtq3Oeg.js";import"./label-C6sMx1BY.js";import"./connection-form-helpers-DFcBYAWG.js";import"./authenticate-and-persist-oauth-8HHvB0nM.js";import"./collection-tabs-CrAcGqu0.js";import"./badge-DS7xysUQ.js";import"./use-infinite-scroll-DASshMJA.js";import"./useSuspenseInfiniteQuery-D-EjhUK7.js";import"./file-type-icon-DyGflp6T.js";import"./checkbox-DXebLGmO.js";import"./search-input-B12ZEo-u.js";import"./use-mcp-auth-status-JThWl3bk.js";import"./types-C2ulVtYx.js";import"./use-mcp-tools-BZqzi-qU.js";import"./use-mcp-prompts-CrOqkZmO.js";import"./utils-CVEq3hMx.js";import"./switch-BhJ3AZWs.js";import"./use-project-native-view-presence-DYD4cRxj.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Du_BOfea.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-KtCnoFH8.js";import"./virtual-mcp-C_hBI7Rj.js";import"./repository-import-picker-DgpEdzVj.js";import"./use-navigate-to-agent-Cp353ZuE.js";import"./repository-picker-B-RVPafI.js";import"./github-icon-C3M97Kp1.js";import"./use-debounced-value-CylTsY1l.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-yI9Rfw9t.js";import"./use-secrets-9InRr5Wg.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(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(P,{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 R(){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=M(),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(w,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function fr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(R,{})}),i[0]=t):t=i[0],t}export{fr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as U,b as B,j as t,B as I,u as K}from"./index-cT94sQUH.js";import{C as M}from"./index-ChjHAm_X.js";import{T as R,a as $,c as A}from"./tooltip-BGTnGCWW.js";import{n as L}from"./Download01-C8jubU2p.js";import{n as O}from"./LinkExternal01-Div0d_z3.js";import{s as V}from"./XClose-1APsw2yP.js";import{F as E}from"./file-type-icon-DyGflp6T.js";import{a as q,F as D,f as G}from"./file-preview-DMCP6_DD.js";import{a as H}from"./use-thread-outputs-B__J7AZP.js";import{a as J}from"./use-panel-navigate-BvpNAJeL.js";import{S as Q}from"./settings-tab-Bqa114IE.js";import{b as W,a as X}from"./thread-route-C05Rrd8B.js";import"./use-mobile-Dv7BcXr5.js";import"./thread-button-BVgcb5x6.js";import"./sidebar-BFWjj-3T.js";import"./LayoutLeft-DgiG6wiH.js";import"./sheet-908igmnH.js";import"./X-CLqvixem.js";import"./use-route-default-main-Bux-DW8_.js";import"./hooks-Dpw_cJTM.js";import"./use-mcp-client-GBv4syMd.js";import"./auth-k9t16OOb.js";import"./backoff-8mStPHYB.js";import"./task-board-BKlDz2nG.js";import"./schema-BwpPocS5.js";import"./agent-icon-CVsOY5Om.js";import"./AlertCircle-B3LJiQhZ.js";import"./Tool01-DK_vv6qf.js";import"./ArrowUp-BB5V3348.js";import"./ArrowLeft-DmWma6hW.js";import"./ArrowRight-540iMVH3.js";import"./XCircle-xC8IFHez.js";import"./ZoomOut-DD-ULjJm.js";import"./Globe04-DnURSsdQ.js";import"./CheckCircle-tvGC17Dy.js";import"./Check-CGKF06bT.js";import"./ChevronUp-Du4AWZmG.js";import"./UserSquare-CHvWRyuq.js";import"./Copy01-CYbqJpFZ.js";import"./CreditCard01-CK4yyvJY.js";import"./DotsVertical-BQfY36BV.js";import"./Eye-CpLoEsen.js";import"./Share07-DpckpNEB.js";import"./Image01-DPZCMheY.js";import"./Key01-CSyDklFV.js";import"./Link01-CYG0Mr8Q.js";import"./Monitor01-BrSZ6zzu.js";import"./Sun-CzonSHrU.js";import"./Package-C5JGfmw5.js";import"./Palette-Bm4HMPv2.js";import"./Plus-Do5Wkomw.js";import"./SearchLg-gOfrWgIs.js";import"./SearchMd-B9ModJFt.js";import"./Stars01-B6IfixlN.js";import"./Trash01-Dw6PLr8l.js";import"./Upload01-BsQDz7U2.js";import"./User01-Bla6DkK3.js";import"./Users01-fXdkObFe.js";import"./Zap-SzxRRv0w.js";import"./toolbar-icon-button-BXZ727Lv.js";import"./use-in-settings-3zEronlT.js";import"./shell-layout-CkG1W_88.js";import"./avatar-B9CWtHB4.js";import"./download-app-dialog-CwgA8Jar.js";import"./dialog-DiUlVwD1.js";import"./use-project-scope-CYpIGnJg.js";import"./use-virtual-mcp-CyUsVYwB.js";import"./github-repo-BknN0SVI.js";import"./command-DZRWMxD5.js";import"./index-C9PI5TjH.js";import"./integration-icon-CBv4y2ld.js";import"./project-icon-DW-tv9X7.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-fSuiMVRc.js";import"./autosend-BKkKn8iq.js";import"./use-org-sso-BziwA5dH.js";import"./resizable-CyPCDk7u.js";import"./route-page-header-CQ5gYErc.js";import"./index-CgGEL4tk.js";import"./use-org-fs-CGr2NA9d.js";import"./utils-CHGVrATA.js";import"./editor-S8HMRfnV.js";import"./markdown-rYdPNaGa.js";import"./org-file-open-context-DjmvTwmC.js";import"./chat-context-CIrojUbL.js";import"./thread-intent-CHlBhQ4g.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Dbhso4ZI.js";import"./use-ai-providers-Cc_CzBZr.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-BT_W0lJl.js";import"./use-organization-settings-C55vewZa.js";import"./input-CSdHjp7L.js";import"./popover-DuPXzrgi.js";import"./scroll-area-C_IMBr_-.js";import"./select-B3V6AARR.js";import"./breadcrumb-DgDOitTK.js";import"./extract-connection-data-ak1yxd15.js";import"./metadata-D72DunRR.js";import"./connection-BtvJKuLN.js";import"./build-improve-prompt-doc-lqIM7ao_.js";import"./empty-state-YhHJ1PAR.js";import"./use-date-fns-locale-BxNb5mu8.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-BUnGMpfY.js";import"./mcp-oauth-CtDqQIpT.js";import"./alert-dialog-m7PHs13d.js";import"./textarea-lt2TXyPT.js";import"./use-debounced-autosave-Ds1nUcal.js";import"./add-connection-dialog-D9j0h-SU.js";import"./collection-search-B2Rze4Ue.js";import"./connection-card-CEFIrJY3.js";import"./useInfiniteQuery-DS8vuz-1.js";import"./infiniteQueryObserver-Dj3x0ul-.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BT08Xqaa.js";import"./form-DDtq3Oeg.js";import"./label-C6sMx1BY.js";import"./connection-form-helpers-DFcBYAWG.js";import"./authenticate-and-persist-oauth-8HHvB0nM.js";import"./collection-tabs-CrAcGqu0.js";import"./badge-DS7xysUQ.js";import"./use-infinite-scroll-DASshMJA.js";import"./useSuspenseInfiniteQuery-D-EjhUK7.js";import"./checkbox-DXebLGmO.js";import"./search-input-B12ZEo-u.js";import"./use-mcp-auth-status-JThWl3bk.js";import"./types-C2ulVtYx.js";import"./use-mcp-tools-BZqzi-qU.js";import"./use-mcp-prompts-CrOqkZmO.js";import"./utils-CVEq3hMx.js";import"./switch-BhJ3AZWs.js";import"./use-project-native-view-presence-DYD4cRxj.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Du_BOfea.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-KtCnoFH8.js";import"./virtual-mcp-C_hBI7Rj.js";import"./repository-import-picker-DgpEdzVj.js";import"./use-navigate-to-agent-Cp353ZuE.js";import"./repository-picker-B-RVPafI.js";import"./github-icon-C3M97Kp1.js";import"./use-debounced-value-CylTsY1l.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-yI9Rfw9t.js";import"./use-secrets-9InRr5Wg.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function Y(r){const e=U.c(60),{file:o,onClose:v}=r,i=B();let l,m;e[0]!==o.filename?(l=t.jsx(E,{filename:o.filename,className:"h-4.5 w-3.5 shrink-0"}),m=t.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:o.filename}),e[0]=o.filename,e[1]=l,e[2]=m):(l=e[1],m=e[2]);let k;e[3]!==o.size?(k=G(o.size),e[3]=o.size,e[4]=k):k=e[4];let x;e[5]!==k?(x=t.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:k}),e[5]=k,e[6]=x):x=e[6];let p;e[7]!==l||e[8]!==m||e[9]!==x?(p=t.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-2",children:[l,m,x]}),e[7]=l,e[8]=m,e[9]=x,e[10]=p):p=e[10];let u;e[11]!==i?(u=i("mainPanelTabs.fileTab.download"),e[11]=i,e[12]=u):u=e[12];let b;e[13]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(L,{size:14}),e[13]=b):b=e[13];let a;e[14]!==o.downloadUrl||e[15]!==o.filename?(a=t.jsx("a",{href:o.downloadUrl,download:o.filename,children:b}),e[14]=o.downloadUrl,e[15]=o.filename,e[16]=a):a=e[16];let n;e[17]!==u||e[18]!==a?(n=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":u,asChild:!0,children:a})}),e[17]=u,e[18]=a,e[19]=n):n=e[19];let j;e[20]!==i?(j=i("mainPanelTabs.fileTab.download"),e[20]=i,e[21]=j):j=e[21];let s;e[22]!==j?(s=t.jsx($,{side:"bottom",children:j}),e[22]=j,e[23]=s):s=e[23];let f;e[24]!==s||e[25]!==n?(f=t.jsxs(A,{children:[n,s]}),e[24]=s,e[25]=n,e[26]=f):f=e[26];let c;e[27]!==i?(c=i("mainPanelTabs.fileTab.openInNewTab"),e[27]=i,e[28]=c):c=e[28];let d;e[29]!==o.downloadUrl?(d=()=>window.open(o.downloadUrl,"_blank","noopener"),e[29]=o.downloadUrl,e[30]=d):d=e[30];let T;e[31]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx(O,{size:14}),e[31]=T):T=e[31];let h;e[32]!==c||e[33]!==d?(h=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":c,onClick:d,children:T})}),e[32]=c,e[33]=d,e[34]=h):h=e[34];let g;e[35]!==i?(g=i("mainPanelTabs.fileTab.openInNewTab"),e[35]=i,e[36]=g):g=e[36];let w;e[37]!==g?(w=t.jsx($,{side:"bottom",children:g}),e[37]=g,e[38]=w):w=e[38];let y;e[39]!==h||e[40]!==w?(y=t.jsxs(A,{children:[h,w]}),e[39]=h,e[40]=w,e[41]=y):y=e[41];let C;e[42]!==i?(C=i("mainPanelTabs.fileTab.close"),e[42]=i,e[43]=C):C=e[43];let S;e[44]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(V,{size:14}),e[44]=S):S=e[44];let N;e[45]!==v||e[46]!==C?(N=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":C,onClick:v,children:S})}),e[45]=v,e[46]=C,e[47]=N):N=e[47];let P;e[48]!==i?(P=i("mainPanelTabs.fileTab.close"),e[48]=i,e[49]=P):P=e[49];let _;e[50]!==P?(_=t.jsx($,{side:"bottom",children:P}),e[50]=P,e[51]=_):_=e[51];let z;e[52]!==N||e[53]!==_?(z=t.jsxs(A,{children:[N,_]}),e[52]=N,e[53]=_,e[54]=z):z=e[54];let F;return e[55]!==f||e[56]!==y||e[57]!==z||e[58]!==p?(F=t.jsxs("div",{className:"flex h-9 shrink-0 items-center gap-1 border-b border-border/60 px-2",children:[p,f,y,z]}),e[55]=f,e[56]=y,e[57]=z,e[58]=p,e[59]=F):F=e[59],F}function Z(r){const e=U.c(31),{fileKey:o,taskId:v}=r,i=B(),{closePanel:l}=J(),{data:m,isPending:k}=H(v);let x;e[0]!==o||e[1]!==m?(x=m?.find(s=>s.key===o)??null,e[0]=o,e[1]=m,e[2]=x):x=e[2];const p=x;let u;e[3]!==l?(u=()=>l(),e[3]=l,e[4]=u):u=e[4];const b=u;if(!p){if(k){let w;return e[5]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx("div",{className:"h-full w-full bg-background",children:t.jsx(q,{})}),e[5]=w):w=e[5],w}let s;e[6]!==o?(s=o.split("/").pop()??o,e[6]=o,e[7]=s):s=e[7];let f;e[8]!==s?(f=t.jsx(E,{filename:s,className:"h-7.5 w-6"}),e[8]=s,e[9]=f):f=e[9];let c;e[10]!==i?(c=i("mainPanelTabs.fileTab.fileNotAvailable"),e[10]=i,e[11]=c):c=e[11];let d;e[12]!==c?(d=t.jsx("span",{className:"text-sm text-muted-foreground",children:c}),e[12]=c,e[13]=d):d=e[13];let T;e[14]!==i?(T=i("mainPanelTabs.fileTab.close"),e[14]=i,e[15]=T):T=e[15];let h;e[16]!==b||e[17]!==T?(h=t.jsx(I,{variant:"ghost",size:"sm",onClick:b,children:T}),e[16]=b,e[17]=T,e[18]=h):h=e[18];let g;return e[19]!==f||e[20]!==d||e[21]!==h?(g=t.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 bg-background",children:[f,d,h]}),e[19]=f,e[20]=d,e[21]=h,e[22]=g):g=e[22],g}let a;e[23]!==p||e[24]!==b?(a=t.jsx(Y,{file:p,onClose:b}),e[23]=p,e[24]=b,e[25]=a):a=e[25];let n;e[26]!==p?(n=t.jsx("div",{className:"relative min-h-0 flex-1",children:t.jsx(D,{file:p})}),e[26]=p,e[27]=n):n=e[27];let j;return e[28]!==a||e[29]!==n?(j=t.jsxs("div",{className:"flex h-full w-full flex-col bg-background",children:[a,n]}),e[28]=a,e[29]=n,e[30]=j):j=e[30],j}function ee(){const r=U.c(5);let e;r[0]===Symbol.for("react.memo_cache_sentinel")?(e={strict:!1},r[0]=e):e=r[0];const o=K(e),v=W(),i=X(),l="key"in o&&typeof o.key=="string"?o.key:void 0;let m;return r[1]!==i||r[2]!==l||r[3]!==v?(m=l?t.jsx(Z,{fileKey:l,taskId:i},l):t.jsx(Q,{virtualMcpId:v}),r[1]=i,r[2]=l,r[3]=v,r[4]=m):m=r[4],m}function Li(){const r=U.c(1);let e;return r[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(M.Content,{children:t.jsx(ee,{})}),r[0]=e):e=r[0],e}export{Li as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as s,u as n}from"./index-cT94sQUH.js";import{C as l}from"./index-ChjHAm_X.js";import{L as c}from"./preview-content-nqp1cQig.js";import{a as f}from"./use-panel-navigate-BvpNAJeL.js";import{S as u}from"./settings-tab-Bqa114IE.js";import{b as h}from"./thread-route-C05Rrd8B.js";import"./use-mobile-Dv7BcXr5.js";import"./thread-button-BVgcb5x6.js";import"./sidebar-BFWjj-3T.js";import"./LayoutLeft-DgiG6wiH.js";import"./sheet-908igmnH.js";import"./X-CLqvixem.js";import"./tooltip-BGTnGCWW.js";import"./index-CgGEL4tk.js";import"./use-route-default-main-Bux-DW8_.js";import"./hooks-Dpw_cJTM.js";import"./use-mcp-client-GBv4syMd.js";import"./auth-k9t16OOb.js";import"./backoff-8mStPHYB.js";import"./task-board-BKlDz2nG.js";import"./schema-BwpPocS5.js";import"./agent-icon-CVsOY5Om.js";import"./AlertCircle-B3LJiQhZ.js";import"./Tool01-DK_vv6qf.js";import"./ArrowUp-BB5V3348.js";import"./ArrowLeft-DmWma6hW.js";import"./ArrowRight-540iMVH3.js";import"./XCircle-xC8IFHez.js";import"./ZoomOut-DD-ULjJm.js";import"./Globe04-DnURSsdQ.js";import"./CheckCircle-tvGC17Dy.js";import"./Check-CGKF06bT.js";import"./ChevronUp-Du4AWZmG.js";import"./UserSquare-CHvWRyuq.js";import"./Copy01-CYbqJpFZ.js";import"./CreditCard01-CK4yyvJY.js";import"./DotsVertical-BQfY36BV.js";import"./Download01-C8jubU2p.js";import"./Eye-CpLoEsen.js";import"./Share07-DpckpNEB.js";import"./XClose-1APsw2yP.js";import"./Image01-DPZCMheY.js";import"./Key01-CSyDklFV.js";import"./Link01-CYG0Mr8Q.js";import"./LinkExternal01-Div0d_z3.js";import"./Monitor01-BrSZ6zzu.js";import"./Sun-CzonSHrU.js";import"./Package-C5JGfmw5.js";import"./Palette-Bm4HMPv2.js";import"./Plus-Do5Wkomw.js";import"./SearchLg-gOfrWgIs.js";import"./SearchMd-B9ModJFt.js";import"./Stars01-B6IfixlN.js";import"./Trash01-Dw6PLr8l.js";import"./Upload01-BsQDz7U2.js";import"./User01-Bla6DkK3.js";import"./Users01-fXdkObFe.js";import"./Zap-SzxRRv0w.js";import"./toolbar-icon-button-BXZ727Lv.js";import"./use-in-settings-3zEronlT.js";import"./shell-layout-CkG1W_88.js";import"./avatar-B9CWtHB4.js";import"./download-app-dialog-CwgA8Jar.js";import"./dialog-DiUlVwD1.js";import"./use-project-scope-CYpIGnJg.js";import"./use-virtual-mcp-CyUsVYwB.js";import"./github-repo-BknN0SVI.js";import"./command-DZRWMxD5.js";import"./index-C9PI5TjH.js";import"./integration-icon-CBv4y2ld.js";import"./project-icon-DW-tv9X7.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-fSuiMVRc.js";import"./autosend-BKkKn8iq.js";import"./use-org-sso-BziwA5dH.js";import"./resizable-CyPCDk7u.js";import"./route-page-header-CQ5gYErc.js";import"./file-preview-DMCP6_DD.js";import"./use-org-fs-CGr2NA9d.js";import"./utils-CHGVrATA.js";import"./editor-S8HMRfnV.js";import"./file-type-icon-DyGflp6T.js";import"./markdown-rYdPNaGa.js";import"./org-file-open-context-DjmvTwmC.js";import"./file-share-button-DkoS4iJK.js";import"./input-CSdHjp7L.js";import"./popover-DuPXzrgi.js";import"./location-oTTXFrSF.js";import"./scroll-area-C_IMBr_-.js";import"./select-B3V6AARR.js";import"./breadcrumb-DgDOitTK.js";import"./extract-connection-data-ak1yxd15.js";import"./metadata-D72DunRR.js";import"./connection-BtvJKuLN.js";import"./chat-context-CIrojUbL.js";import"./thread-intent-CHlBhQ4g.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Dbhso4ZI.js";import"./use-ai-providers-Cc_CzBZr.js";import"./use-decopilot-events-BT_W0lJl.js";import"./use-organization-settings-C55vewZa.js";import"./build-improve-prompt-doc-lqIM7ao_.js";import"./empty-state-YhHJ1PAR.js";import"./use-date-fns-locale-BxNb5mu8.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-BUnGMpfY.js";import"./mcp-oauth-CtDqQIpT.js";import"./alert-dialog-m7PHs13d.js";import"./textarea-lt2TXyPT.js";import"./use-debounced-autosave-Ds1nUcal.js";import"./add-connection-dialog-D9j0h-SU.js";import"./collection-search-B2Rze4Ue.js";import"./connection-card-CEFIrJY3.js";import"./useInfiniteQuery-DS8vuz-1.js";import"./infiniteQueryObserver-Dj3x0ul-.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-BT08Xqaa.js";import"./form-DDtq3Oeg.js";import"./label-C6sMx1BY.js";import"./connection-form-helpers-DFcBYAWG.js";import"./authenticate-and-persist-oauth-8HHvB0nM.js";import"./collection-tabs-CrAcGqu0.js";import"./badge-DS7xysUQ.js";import"./use-infinite-scroll-DASshMJA.js";import"./useSuspenseInfiniteQuery-D-EjhUK7.js";import"./checkbox-DXebLGmO.js";import"./search-input-B12ZEo-u.js";import"./use-mcp-auth-status-JThWl3bk.js";import"./types-C2ulVtYx.js";import"./use-mcp-tools-BZqzi-qU.js";import"./use-mcp-prompts-CrOqkZmO.js";import"./utils-CVEq3hMx.js";import"./switch-BhJ3AZWs.js";import"./use-project-native-view-presence-DYD4cRxj.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Du_BOfea.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-KtCnoFH8.js";import"./virtual-mcp-C_hBI7Rj.js";import"./repository-import-picker-DgpEdzVj.js";import"./use-navigate-to-agent-Cp353ZuE.js";import"./repository-picker-B-RVPafI.js";import"./github-icon-C3M97Kp1.js";import"./use-debounced-value-CylTsY1l.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-yI9Rfw9t.js";import"./use-secrets-9InRr5Wg.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.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=a.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=a.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=n(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 po(){const r=a.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{po as default};
|