decocms 4.390.6 → 4.390.8
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-DNjCJaw9.js → AlertCircle-CP9JgRLl.js} +1 -1
- package/dist/client/assets/{AreaChart-BzFjOzko.js → AreaChart-BkWPbkI5.js} +1 -1
- package/dist/client/assets/{ArrowLeft-L61r1krv.js → ArrowLeft-B_SkMaqW.js} +1 -1
- package/dist/client/assets/{ArrowRight-C3E9kVsb.js → ArrowRight-DPsDtHOC.js} +1 -1
- package/dist/client/assets/{ArrowUp-qfzf92nQ.js → ArrowUp-BhTVifvS.js} +1 -1
- package/dist/client/assets/{CartesianChart-Z__3Eceb.js → CartesianChart-Y_GZzxyb.js} +1 -1
- package/dist/client/assets/{Check-DP-CHdI6.js → Check-BQvLvSx4.js} +1 -1
- package/dist/client/assets/{CheckCircle-DpFvGX-5.js → CheckCircle-Bx0zkqyz.js} +1 -1
- package/dist/client/assets/{ChevronUp-Ua6deRg2.js → ChevronUp-C7vOKkro.js} +1 -1
- package/dist/client/assets/{Copy01-BQ3K3O5D.js → Copy01-BExbLkU6.js} +1 -1
- package/dist/client/assets/{CreditCard01-WNRApK4e.js → CreditCard01-DauGJWzN.js} +1 -1
- package/dist/client/assets/{DotsVertical-BItsKK3f.js → DotsVertical-BjnO-uGV.js} +1 -1
- package/dist/client/assets/{Download01-DlkHUmQb.js → Download01-Dve9-wlz.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-0k7f5NHw.js → ErrorBarContext-UjQEGWw0.js} +1 -1
- package/dist/client/assets/{Eye-BnU6ieaC.js → Eye-BdBxFr_Z.js} +1 -1
- package/dist/client/assets/{Globe04-BOSJOQot.js → Globe04-PhwIXaEJ.js} +1 -1
- package/dist/client/assets/{Image01-DfqOyQ0u.js → Image01-DO6tcKBY.js} +1 -1
- package/dist/client/assets/{Key01-1Bl-oF6l.js → Key01-CJoqR1Yq.js} +1 -1
- package/dist/client/assets/{LayoutLeft-CrgY-WKP.js → LayoutLeft-BRSiXdd5.js} +1 -1
- package/dist/client/assets/{Line-z8jFfMWI.js → Line-CIpQWecO.js} +1 -1
- package/dist/client/assets/{Link01-B0-YniQQ.js → Link01-CxkfDa-1.js} +1 -1
- package/dist/client/assets/{LinkExternal01-y5qYgT4b.js → LinkExternal01-CMTyhL31.js} +1 -1
- package/dist/client/assets/{Monitor01-ClW6q7DI.js → Monitor01-DqasPuj8.js} +1 -1
- package/dist/client/assets/{Package-DvkIeVYn.js → Package-DLyxCQXj.js} +1 -1
- package/dist/client/assets/{Palette-CiP5jc-d.js → Palette-CqFXyLO9.js} +1 -1
- package/dist/client/assets/{Plus-CDiVd_em.js → Plus-CByco2Jq.js} +1 -1
- package/dist/client/assets/{SearchLg-BManX7Dp.js → SearchLg-BPLZ4XRa.js} +1 -1
- package/dist/client/assets/{SearchMd-Bx2PwRp_.js → SearchMd-CY4c_olu.js} +1 -1
- package/dist/client/assets/{Sector-D5_AoSNJ.js → Sector-H1oRy7a4.js} +1 -1
- package/dist/client/assets/{Share07-D9dJtUvB.js → Share07-8Bu3FxvR.js} +1 -1
- package/dist/client/assets/{Stars01-DVJooTjR.js → Stars01-VmXpf5Gf.js} +1 -1
- package/dist/client/assets/{Sun-CChz5v1R.js → Sun-BcY2FokS.js} +1 -1
- package/dist/client/assets/{Tool01-DyymdC9X.js → Tool01-YTtPlJpr.js} +1 -1
- package/dist/client/assets/{Trash01-BPbJ_e3R.js → Trash01-qGbofDsQ.js} +1 -1
- package/dist/client/assets/{Upload01-oh36XtxE.js → Upload01-BoLtBJDT.js} +1 -1
- package/dist/client/assets/{User01-C5Oan3g_.js → User01-CkdbGM3q.js} +1 -1
- package/dist/client/assets/{UserSquare-DCQBpNp5.js → UserSquare-CPuIwOyX.js} +1 -1
- package/dist/client/assets/{Users01-Cgt2tOZS.js → Users01-CjU5aK5P.js} +1 -1
- package/dist/client/assets/{X-D8a2dmsp.js → X-D_TKhls1.js} +1 -1
- package/dist/client/assets/{XCircle-8R94lFld.js → XCircle-DnG3orc5.js} +1 -1
- package/dist/client/assets/{XClose-SoQ81CSR.js → XClose-DInCj9Cy.js} +1 -1
- package/dist/client/assets/{Zap-BeJnPrTB.js → Zap-DJQH7YPC.js} +1 -1
- package/dist/client/assets/{ZoomOut-CWR90uz1.js → ZoomOut-DD6JmRn0.js} +1 -1
- package/dist/client/assets/{access-gate-C4Vo3hNz.js → access-gate-DBQ_056X.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-CFR48DDR.js → add-connection-dialog-BT0goOzE.js} +1 -1
- package/dist/client/assets/{agent-analytics-CJ8gb1OJ.js → agent-analytics-DdA6Iw96.js} +1 -1
- package/dist/client/assets/agent-app-CwBWgRRy.js +1 -0
- package/dist/client/assets/{agent-assets-DVeiFVgF.js → agent-assets-BPiXNjQ1.js} +1 -1
- package/dist/client/assets/{agent-automation-CohXntvF.js → agent-automation-B2VibrNi.js} +1 -1
- package/dist/client/assets/{agent-automations-BDk1HnDK.js → agent-automations-Dov3iSsH.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-BnTCbVOO.js → agent-connect-sources-DU2p5i_o.js} +1 -1
- package/dist/client/assets/agent-deck-BS3X6dkU.js +1 -0
- package/dist/client/assets/{agent-e2e-TKxzqu9B.js → agent-e2e-BTnZTmAb.js} +1 -1
- package/dist/client/assets/{agent-experiments-DMu-uiI0.js → agent-experiments-DPD2gn4F.js} +1 -1
- package/dist/client/assets/agent-file-B-TdwD2y.js +1 -0
- package/dist/client/assets/{agent-git-CehzdJXN.js → agent-git-DVfHmEpG.js} +1 -1
- package/dist/client/assets/{agent-hosting-CmG3RmLz.js → agent-hosting-BWs2U0c5.js} +1 -1
- package/dist/client/assets/{agent-icon-C-E2XJuH.js → agent-icon-eR4S-vHt.js} +1 -1
- package/dist/client/assets/agent-library-file-D31vWz40.js +1 -0
- package/dist/client/assets/agent-monitor-DWWk_UZ2.js +1 -0
- package/dist/client/assets/{agent-overview-Dy20mT8q.js → agent-overview-iSlH8Vea.js} +1 -1
- package/dist/client/assets/agent-settings-DDHzLptY.js +1 -0
- package/dist/client/assets/{agent-site-editor-BYkVQPsD.js → agent-site-editor-Bk0hAN0s.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-R7FHWqJF.js +2 -0
- package/dist/client/assets/{agent-site-editor-content-BvVpl5_i.js → agent-site-editor-content-CPaRo8S4.js} +2 -2
- package/dist/client/assets/{agent-site-editor-preview-Bf5M6UpG.js → agent-site-editor-preview-zSI36Igq.js} +3 -3
- package/dist/client/assets/agent-view-Cp-JRi3n.js +1 -0
- package/dist/client/assets/{agent-view-guard-BOygpsSJ.js → agent-view-guard-CkTKo38K.js} +1 -1
- package/dist/client/assets/{agents-list-on-p-iRg.js → agents-list-BSphM7xA.js} +1 -1
- package/dist/client/assets/{ai-providers-BbBZTwaM.js → ai-providers-CiA59k0e.js} +1 -1
- package/dist/client/assets/{alert-C5qncUBI.js → alert-BqHMzn24.js} +1 -1
- package/dist/client/assets/{alert-dialog-C496y9v4.js → alert-dialog-u0z1TiZG.js} +1 -1
- package/dist/client/assets/api-keys-CCinPs-H.js +1 -0
- package/dist/client/assets/{api-keys-VAjZK5A8.js → api-keys-wKveJFVL.js} +1 -1
- package/dist/client/assets/app-editor-CVY3YTO-.js +1 -0
- package/dist/client/assets/{asset-utils-DeFRmW0t.js → asset-utils-uxZvOn4y.js} +1 -1
- package/dist/client/assets/{auth-CLoDRqAO.js → auth-C89T8NXO.js} +1 -1
- package/dist/client/assets/{auth-catchall-QrXVEYkW.js → auth-catchall-4rNNVpfl.js} +1 -1
- package/dist/client/assets/{auth-entry-BNYFml6A.js → auth-entry-BnJz8r4M.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DI7dMRMy.js → auth-split-layout-DMCZjsrj.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DVAXnjYJ.js → authenticate-and-persist-oauth-DEWSviSV.js} +1 -1
- package/dist/client/assets/{automation-list-row-DUM3MHZp.js → automation-list-row-0jYrVmPJ.js} +1 -1
- package/dist/client/assets/{automation-runs-851cFgAP.js → automation-runs-HAnRP6Sy.js} +1 -1
- package/dist/client/assets/{automations-DKhCb18t.js → automations-CSAg00gW.js} +1 -1
- package/dist/client/assets/{autosend-C9pVeWI-.js → autosend-wtYT11Km.js} +1 -1
- package/dist/client/assets/{avatar-Bdx-u6ND.js → avatar-C60FQGEJ.js} +1 -1
- package/dist/client/assets/{badge-CBY-3mig.js → badge-BE7cLoRT.js} +1 -1
- package/dist/client/assets/{block-document-BrwqOTI4.js → block-document-BSX1Ouq1.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-CFVrnGj9.js → blocks-preview-workspace-context-CDyFbP6B.js} +1 -1
- package/dist/client/assets/{breadcrumb-D0PuBCyn.js → breadcrumb-Qzc3vKb7.js} +1 -1
- package/dist/client/assets/{buckets-K9FCAc25.js → buckets-BPZKdCIp.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-DP8VnPde.js → build-improve-prompt-doc-BKia-plb.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-ctjr-pYw.js → bulk-category-panel-dBs-JMtz.js} +1 -1
- package/dist/client/assets/{calendar-DCJgkyKY.js → calendar-BZNPjw6v.js} +1 -1
- package/dist/client/assets/{capability-load-error-BGVrrXln.js → capability-load-error-DuXg1AMq.js} +1 -1
- package/dist/client/assets/{category-editor-DBP8g7zP.js → category-editor-BurM2Dln.js} +1 -1
- package/dist/client/assets/{chart-Bc7OkNpv.js → chart-BDT1iGdR.js} +1 -1
- package/dist/client/assets/{chat-context-C8AQ0cJO.js → chat-context-Bof2-OPH.js} +1 -1
- package/dist/client/assets/{chat-draft-BXceDHjX.js → chat-draft-CZki8tA8.js} +1 -1
- package/dist/client/assets/{checkbox-DjUwOumc.js → checkbox-DOACpmMs.js} +1 -1
- package/dist/client/assets/{choose-editor-B1D6h_MP.js → choose-editor-CjwjLd36.js} +1 -1
- package/dist/client/assets/{claim-phase-copy-YoRceAAq.js → claim-phase-copy-BzFL6kxe.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CsYC8c6j.js → cli-auth-success-BCxybiiC.js} +1 -1
- package/dist/client/assets/{client-icons-YllaTULm.js → client-icons-COgw1euh.js} +1 -1
- package/dist/client/assets/{collapsible-tnhouh9B.js → collapsible-CpAH2Yk8.js} +1 -1
- package/dist/client/assets/{collection-detail-BQH3DFb_.js → collection-detail-JhgzOFfD.js} +1 -1
- package/dist/client/assets/{collection-display-button-DOuRq2z1.js → collection-display-button-Xjx28ptT.js} +1 -1
- package/dist/client/assets/{collection-search-B01d0B-E.js → collection-search-D_O9sBPt.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BrOF-i5G.js → collection-table-wrapper-CrRCBlQs.js} +1 -1
- package/dist/client/assets/{collection-tabs-CuBt_OIS.js → collection-tabs-CqBB4rqK.js} +1 -1
- package/dist/client/assets/{combobox-VxElvmYL.js → combobox-fKcwD3RD.js} +1 -1
- package/dist/client/assets/{command-BOXkt1QJ.js → command-Dmsf7W0B.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-3YcPIAE9.js → companion-mcps-section-DKXS7eZ-.js} +1 -1
- package/dist/client/assets/{connect-layout-Dc51uoNX.js → connect-layout-D5Hkp6OQ.js} +1 -1
- package/dist/client/assets/{connect-CCdPN-vY.js → connect-mIIjsf7e.js} +1 -1
- package/dist/client/assets/{connection-jgr5KSCP.js → connection-Ct9T140O.js} +1 -1
- package/dist/client/assets/{connection-card-hm9RnHlt.js → connection-card-I5CGos8c.js} +1 -1
- package/dist/client/assets/{connection-detail-Bu944DLG.js → connection-detail-CJNDvsEU.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-ksULWpjl.js → connection-form-helpers-BVuosPEE.js} +1 -1
- package/dist/client/assets/{connections-DLNXf9zS.js → connections-D37XglZM.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BW99e0Fl.js → create-organization-dialog-DjWZQwYG.js} +1 -1
- package/dist/client/assets/{decofile-api-C3cU8kxo.js → decofile-api-CT1DHcHY.js} +1 -1
- package/dist/client/assets/{decopilot-Dq22H3oe.js → decopilot-DeATBzPQ.js} +1 -1
- package/dist/client/assets/{dialog-CX8gq7aP.js → dialog-CiHrXHM-.js} +1 -1
- package/dist/client/assets/{discover-FNOZ6TgR.js → discover-1E62aIa8.js} +1 -1
- package/dist/client/assets/{domain-settings-BMuPuIKu.js → domain-settings-D7XJb7bj.js} +1 -1
- package/dist/client/assets/{download-app-dialog-D8D6jmnK.js → download-app-dialog-DbqOhUd7.js} +1 -1
- package/dist/client/assets/{drawer-vtq1SE8Q.js → drawer-BKnQYHl-.js} +1 -1
- package/dist/client/assets/{editor-CScGi5Aq.js → editor-BOBTlmGO.js} +1 -1
- package/dist/client/assets/{empty-state-EwV3yk5U.js → empty-state-BbCHllhr.js} +1 -1
- package/dist/client/assets/{empty-state-CXF1Kacl.js → empty-state-C6UF7gWr.js} +1 -1
- package/dist/client/assets/{extract-connection-data-msqJK0aE.js → extract-connection-data-BZxxe4xA.js} +1 -1
- package/dist/client/assets/{feature-gate-DG4S4fcl.js → feature-gate-CmZwkad-.js} +1 -1
- package/dist/client/assets/{feature-paywall-ChlFFlJ8.js → feature-paywall-PGcy3Imh.js} +1 -1
- package/dist/client/assets/{file-explorer-WyiHV4pN.js → file-explorer-RNfmUDMU.js} +1 -1
- package/dist/client/assets/{file-preview-ZvTm7M8D.js → file-preview-B0VOGpZC.js} +1 -1
- package/dist/client/assets/{file-share-button-B39dCWjS.js → file-share-button-sYGmn9e2.js} +1 -1
- package/dist/client/assets/{file-type-icon-16UnD-zc.js → file-type-icon-BlkPwLMJ.js} +1 -1
- package/dist/client/assets/{folder-icon-CRzfuWJ_.js → folder-icon-CqoXw2qD.js} +1 -1
- package/dist/client/assets/{form-NsDegBgf.js → form-CcxXn-Tc.js} +1 -1
- package/dist/client/assets/{gateway-client-CoIbmfBW.js → gateway-client-nfH5g0H_.js} +1 -1
- package/dist/client/assets/{general-DxxjyU3J.js → general-BTNA9oWk.js} +1 -1
- package/dist/client/assets/{github-icon-DscXbGEI.js → github-icon-jI2JTQPu.js} +1 -1
- package/dist/client/assets/{home-BXX-gF1a.js → home-CN3kgmrg.js} +1 -1
- package/dist/client/assets/{hooks-n0If40j6.js → hooks-oOLSTpp3.js} +1 -1
- package/dist/client/assets/{hooks-BoaYr_vK.js → hooks-zrk6OiMJ.js} +1 -1
- package/dist/client/assets/{icon-button-BkTGLaSn.js → icon-button-CCMxxVjz.js} +1 -1
- package/dist/client/assets/{index-DmugW6Fl.js → index-B0xTyYOe.js} +1 -1
- package/dist/client/assets/{index-dr7RUk1Q.js → index-BSSCbjDP.js} +1 -1
- package/dist/client/assets/{index-B7GL4T3s.js → index-BuZbIm-O.js} +1 -1
- package/dist/client/assets/{index-DuaAuQwW.js → index-Bxmzac8D.js} +1 -1
- package/dist/client/assets/{index-CECVu6kb.js → index-C0SgQmFK.js} +1 -1
- package/dist/client/assets/{index-CEJ2yH5D.js → index-C6mlPDzm.js} +1 -1
- package/dist/client/assets/{index-DDaEFvim.js → index-CJd9x45g.js} +1 -1
- package/dist/client/assets/{index-D4Bkn8tb.js → index-CRFdk6jX.js} +1 -1
- package/dist/client/assets/{index-0KJ3uiRk.js → index-CdxXzdph.js} +1 -1
- package/dist/client/assets/{index-C-yXGRRw.js → index-Cs-SqcVR.js} +1 -1
- package/dist/client/assets/{index-DVQd7bXO.js → index-D25jC1Tf.js} +1 -1
- package/dist/client/assets/{index-BAapFbe2.js → index-DHiJQVCj.js} +4 -4
- package/dist/client/assets/{index-BCXBeKtX.js → index-DwOp9f-h.js} +1 -1
- package/dist/client/assets/{index-B9_Y1NWL.js → index-ZiU-tmVW.js} +1 -1
- package/dist/client/assets/{index-redirect-9Y2NbjVA.js → index-redirect-Cgt8Dwb-.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-CvmljhSu.js → infiniteQueryObserver-CzM3wBRx.js} +1 -1
- package/dist/client/assets/{infra-billing-C_e5c8AV.js → infra-billing-DSQOE4CL.js} +1 -1
- package/dist/client/assets/{input-mqtHslzD.js → input-BLmH1AXJ.js} +1 -1
- package/dist/client/assets/{input-DR7G1WYZ.js → input-BgraHXEL.js} +1 -1
- package/dist/client/assets/{input-E_NCWPwm.js → input-CoV1AHdW.js} +1 -1
- package/dist/client/assets/{integration-icon-D2o9P00_.js → integration-icon-DPy5u_Uz.js} +1 -1
- package/dist/client/assets/{label-C9fQ1xp4.js → label-yqp6QRNf.js} +1 -1
- package/dist/client/assets/{last-preview-page-DGfJxLd7.js → last-preview-page-BaA6QqwE.js} +1 -1
- package/dist/client/assets/{layout-DlmOyrEc.js → layout-BTOjcALm.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-D3KaHmWX.js → legacy-agents-deep-C6032Ip_.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-D1aBFXz1.js → legacy-main-redirect-Be_QAj-O.js} +1 -1
- package/dist/client/assets/{library-CobfIn0Q.js → library-DDK2owGZ.js} +1 -1
- package/dist/client/assets/{login-BqNMbThr.js → login-C6RPw_KP.js} +1 -1
- package/dist/client/assets/{markdown-yufMYCPE.js → markdown-BDrpa4PG.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DCvxs2tp.js → mcp-app-renderer-BXjdyvRZ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-cXrAcbF1.js → mcp-oauth-BUNw8j_Q.js} +1 -1
- package/dist/client/assets/{members-BVf3Y_oB.js → members-Bx3c5_l2.js} +1 -1
- package/dist/client/assets/{message-templates-CNayZz6n.js → message-templates-DGNCP-F4.js} +1 -1
- package/dist/client/assets/{mini-report-page-DdqorkJI.js → mini-report-page-RJSARixv.js} +1 -1
- package/dist/client/assets/{mock-board-ABCONpO3.js → mock-board-BqVZxy7h.js} +3 -3
- package/dist/client/assets/{monaco-editor-AHZSaksT.js → monaco-editor-Gdyqc3oE.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CmEuLscK.js → monitoring-stats-row-CgoazYGR.js} +1 -1
- package/dist/client/assets/{multi-select-PEzYQO0O.js → multi-select-DAul4fMK.js} +1 -1
- package/dist/client/assets/{mustache-DN15Yil7.js → mustache-BNr6uBpy.js} +1 -1
- package/dist/client/assets/{oauth-callback-12-w4OA5.js → oauth-callback-C2kQ5Mic.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-stBi25El.js → oauth-callback-ai-provider-TfhMpmtx.js} +1 -1
- package/dist/client/assets/{onboarding-8yqHCfod.js → onboarding-D9uJ0vUh.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-DY1ezw_N.js → optimistic-project-sidebar-views-CSe-ajUz.js} +1 -1
- package/dist/client/assets/{org-file-open-context-BiqjKxuc.js → org-file-open-context-B9k3RjIE.js} +1 -1
- package/dist/client/assets/{organization-choice-D0HapI59.js → organization-choice-CuLAUs1o.js} +1 -1
- package/dist/client/assets/{orgs-DXfjM_si.js → orgs-C35ALmFN.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bw7uHDGu.js → page-seo-form-Csr0xA_f.js} +1 -1
- package/dist/client/assets/{pair-QCjG3WV2.js → pair-CcwQOHDP.js} +1 -1
- package/dist/client/assets/{plan-ladder-DGQ8D0GR.js → plan-ladder-DNMtdCxt.js} +1 -1
- package/dist/client/assets/{popover-DJaUY8D4.js → popover-C4jg-u3Y.js} +1 -1
- package/dist/client/assets/{post-calendar-BXHBhTCp.js → post-calendar-cKtc-DAO.js} +1 -1
- package/dist/client/assets/{post-editor-BdLosvo4.js → post-editor-BJDmPeag.js} +1 -1
- package/dist/client/assets/{preview-content-CKRAUFS0.js → preview-content-BxJkyMPF.js} +1 -1
- package/dist/client/assets/{preview-dialog-Dcj-8oVy.js → preview-dialog-fq1JAH1r.js} +1 -1
- package/dist/client/assets/{primitives-WOU2reDI.js → primitives-BHUVcjis.js} +1 -1
- package/dist/client/assets/{profile-u4cXra0l.js → profile-DkBPAu0M.js} +1 -1
- package/dist/client/assets/{project-app-view-CHcKPRDA.js → project-app-view-B9BNIogr.js} +1 -1
- package/dist/client/assets/{project-feed-ClSqaxen.js → project-feed-NdWc3eEw.js} +1 -1
- package/dist/client/assets/{project-icon-D1phbtgJ.js → project-icon-Dh6moakT.js} +1 -1
- package/dist/client/assets/project-reports-BD15v6q_.js +1 -0
- package/dist/client/assets/project-tasks-5tdvHUCu.js +1 -0
- package/dist/client/assets/{prompts-bUC8ZKY9.js → prompts-CMXBn5t0.js} +1 -1
- package/dist/client/assets/record-editor-B27q87z9.js +1 -0
- package/dist/client/assets/{redirect-editor-C9C_sP7l.js → redirect-editor-5Q2a-Z1D.js} +1 -1
- package/dist/client/assets/reports-BKkHZcY5.js +1 -0
- package/dist/client/assets/{reports-3W1f-Q53.js → reports-C2wMaDR6.js} +1 -1
- package/dist/client/assets/{reports-onboarding-Crqa7jGd.js → reports-onboarding-UX7icSxY.js} +1 -1
- package/dist/client/assets/{reports-tab-fiRLNk72.js → reports-tab-Dlxktb6V.js} +2 -2
- package/dist/client/assets/{repositories-DRiSiYDI.js → repositories-BxcZO3GI.js} +1 -1
- package/dist/client/assets/{repository-import-picker-62_4jSRa.js → repository-import-picker-BXVf3N4h.js} +1 -1
- package/dist/client/assets/{repository-picker--Ahj5eif.js → repository-picker-FDUplFM0.js} +1 -1
- package/dist/client/assets/{require-capability-ByXQOLAd.js → require-capability-D4b_n0cK.js} +1 -1
- package/dist/client/assets/{required-auth-layout-COnVc4-c.js → required-auth-layout-qT1YB4VR.js} +1 -1
- package/dist/client/assets/{reset-password-CO2ZOTo8.js → reset-password-DXsF-4CI.js} +1 -1
- package/dist/client/assets/{resizable-CmeolPd5.js → resizable-DK9E2mBs.js} +1 -1
- package/dist/client/assets/{review-settings-DDR_bkwZ.js → review-settings-DAUhAi5_.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-DlB0UgiC.js → rich-text-link-control-BUx6Hkfs.js} +1 -1
- package/dist/client/assets/{roles-kdU7ZIRK.js → roles-DkGb9wbQ.js} +1 -1
- package/dist/client/assets/{route-Df2ipSsR.js → route-CIzyoBTU.js} +1 -1
- package/dist/client/assets/{route-gsBoz64f.js → route-CoB2JRsA.js} +1 -1
- package/dist/client/assets/{route-B8a8Yg1R.js → route-OUNhe5Hv.js} +1 -1
- package/dist/client/assets/{route-page-header-Dj9X4r8B.js → route-page-header-BAs-sd1S.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-D-Lb9TfH.js → runnable-block-editor-FxXhQF6a.js} +4 -4
- package/dist/client/assets/{sandbox-lifecycle-context-OfTJZfhC.js → sandbox-lifecycle-context-Cdozsf87.js} +1 -1
- package/dist/client/assets/{schema-Jq5MXk04.js → schema-U3ZS7ZH0.js} +1 -1
- package/dist/client/assets/{scroll-area-Shry09_8.js → scroll-area-B4HHFGHt.js} +1 -1
- package/dist/client/assets/{search-input-Dsjxl8VM.js → search-input-C886G3jT.js} +1 -1
- package/dist/client/assets/{search-toggle-DkXmqM7y.js → search-toggle-BAlhklZ8.js} +1 -1
- package/dist/client/assets/{secret-picker-B9abg7y1.js → secret-picker-wkXHDSWm.js} +1 -1
- package/dist/client/assets/{secrets-Cnbx8a10.js → secrets-B_whyIZE.js} +1 -1
- package/dist/client/assets/{sections-editor-BrjDKepI.js → sections-editor-BE2a49JW.js} +1 -1
- package/dist/client/assets/{select-D1yST9VC.js → select-C1QVBfEg.js} +1 -1
- package/dist/client/assets/{select-model-CJpzseKK.js → select-model-C8neGDEd.js} +1 -1
- package/dist/client/assets/{seo-editor-B_MK4ZbE.js → seo-editor-DNUCS75O.js} +1 -1
- package/dist/client/assets/{separator-EQghd0WN.js → separator-Dh2K6_XL.js} +1 -1
- package/dist/client/assets/{settings-tab-D0e39c65.js → settings-tab-MtcAhX6q.js} +1 -1
- package/dist/client/assets/{sheet-D23AwszF.js → sheet-CsXwSHjb.js} +1 -1
- package/dist/client/assets/{shell-layout-BhvjZZGE.js → shell-layout-CYz2Hice.js} +1 -1
- package/dist/client/assets/{sidebar-BmzAAju0.js → sidebar-CFAvG2Sm.js} +1 -1
- package/dist/client/assets/{skill-preview-CFgCv9mp.js → skill-preview-BdiA5Ruz.js} +1 -1
- package/dist/client/assets/{skills-DGujQTyp.js → skills-DfMfOkhf.js} +1 -1
- package/dist/client/assets/{sso-BMMW7c2C.js → sso-Fhe6pB3Z.js} +1 -1
- package/dist/client/assets/{switch-Dn9HIU8k.js → switch-Dy_-msjN.js} +1 -1
- package/dist/client/assets/{synced-repos-7f8Mi7q8.js → synced-repos-Cey8Ny9n.js} +1 -1
- package/dist/client/assets/{table-D07ipETu.js → table-BMVby7fV.js} +1 -1
- package/dist/client/assets/{tabs-Cln_SlPK.js → tabs-CNJMw2R_.js} +1 -1
- package/dist/client/assets/{task-board-CAjO4bj3.js → task-board-Dvw3mdT_.js} +1 -1
- package/dist/client/assets/{task-route-vKxM5w9g.js → task-route-BtrOrJBS.js} +1 -1
- package/dist/client/assets/{task-status-CqFk6n-l.js → task-status-A5rS6sjW.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-BzClWG-O.js → taskboard-analytics-Da8uJFfo.js} +1 -1
- package/dist/client/assets/{tasks-DYFzzMIJ.js → tasks-rtsmIPsj.js} +1 -1
- package/dist/client/assets/tasks-tIuJ19NC.js +1 -0
- package/dist/client/assets/{textarea-f3zyr9Dp.js → textarea-C--tUJ_G.js} +1 -1
- package/dist/client/assets/{thread-button-CzURbLWN.js → thread-button-D1JHVN7O.js} +1 -1
- package/dist/client/assets/{thread-intent-Dxz11CKL.js → thread-intent-CGfCxQow.js} +1 -1
- package/dist/client/assets/{thread-route-DzikZYAw.js → thread-route-CqFnP4Ht.js} +1 -1
- package/dist/client/assets/{thread-route-DSUvP8DW.js → thread-route-Cz8e3eRf.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-CsYqmOAE.js → thread-sheet-body-jFFCthC7.js} +1 -1
- package/dist/client/assets/{toggle-group-D8Nt5NKT.js → toggle-group-CkgwuTbS.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-D_b-PxZY.js → toolbar-icon-button-DEm4fR8U.js} +1 -1
- package/dist/client/assets/{tooltip-BC1jLEAQ.js → tooltip-Db-MqIhS.js} +1 -1
- package/dist/client/assets/{track-CgL1XxD_.js → track-diSirWvS.js} +1 -1
- package/dist/client/assets/{types-DaQSkWc3.js → types-Br-qV1EK.js} +1 -1
- package/dist/client/assets/{usage-stats-Ba4AxNw-.js → usage-stats-BrP5lfsE.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CUO0KTwa.js → use-ai-providers-CaUKPb57.js} +1 -1
- package/dist/client/assets/{use-automations-BxbBzmJx.js → use-automations-BiCsNBxG.js} +1 -1
- package/dist/client/assets/{use-autosave-xal3wWxY.js → use-autosave-BobxsysX.js} +1 -1
- package/dist/client/assets/{use-connect-companion-Dkv2PZ7n.js → use-connect-companion-CY4OFUoq.js} +1 -1
- package/dist/client/assets/{use-connection-CPL-U4ct.js → use-connection-DleKYV35.js} +1 -1
- package/dist/client/assets/{use-copy-iB5gNgD-.js → use-copy-B0XE7N_c.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BsxPbblw.js → use-create-virtual-mcp-NCMiigGX.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-DaA8rf_h.js → use-date-fns-locale-xxHIM1-y.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Cp5uxLhI.js → use-debounced-autosave-DHn9SJik.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DM50Bn8p.js → use-debounced-value-B7fLAbaQ.js} +1 -1
- package/dist/client/assets/{use-deco-credits-ev_VupAD.js → use-deco-credits-BjBmKdfM.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-C6EF1O89.js → use-decopilot-events-BQ-xtcnL.js} +1 -1
- package/dist/client/assets/{use-delete-connection-loQfJPNo.js → use-delete-connection-D5FluD7T.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BxgREvJm.js → use-deployment-admin-DsrAyCbe.js} +1 -1
- package/dist/client/assets/{use-entitlements-pa-iEQCf.js → use-entitlements-Blg-mtxF.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-sFk17agY.js → use-fast-preview-draft-url-SdfNx52S.js} +1 -1
- package/dist/client/assets/{use-file-configs-Cr5M7ePz.js → use-file-configs-BGxOwpmo.js} +1 -1
- package/dist/client/assets/{use-in-settings-NIJJ8Aja.js → use-in-settings-ClzD6J3m.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-_Tbuniz4.js → use-infinite-scroll-DZCwWzOA.js} +1 -1
- package/dist/client/assets/{use-join-requests-BNvrLE_3.js → use-join-requests-CnuDy-d0.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-BCj7HGhh.js → use-main-panel-tabs-C0qlg31D.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-NrZYrt1V.js → use-mcp-auth-status-mKf0VRJg.js} +1 -1
- package/dist/client/assets/{use-mcp-client-kZnw8HgS.js → use-mcp-client-CVMfVvbs.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-I-RDxz6U.js → use-mcp-prompts-CWmiW2J5.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-NRqClp7g.js → use-mcp-tools-B5j95dn3.js} +1 -1
- package/dist/client/assets/{use-members-BQFDDtun.js → use-members-B11vgkMc.js} +1 -1
- package/dist/client/assets/{use-mobile-DWQkI95Z.js → use-mobile-C1L2M22H.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BJpiYuGZ.js → use-navigate-to-agent-DFDonFjQ.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-Csw4Cio_.js → use-open-billing-url-BE7M48RM.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DUlnY0ve.js → use-org-auth-client-lBZchACL.js} +1 -1
- package/dist/client/assets/{use-org-fs-Dd2WtHbO.js → use-org-fs-DwQVf7Ap.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-D66Zo4WE.js → use-org-repo-syncs-BU7MfnxE.js} +1 -1
- package/dist/client/assets/{use-org-sso-ykn415MO.js → use-org-sso-B8rcYJeC.js} +1 -1
- package/dist/client/assets/{use-organization-roles-RYnqpS_r.js → use-organization-roles-zki296j9.js} +1 -1
- package/dist/client/assets/{use-organization-settings-B49X0qVM.js → use-organization-settings-xU44Qedq.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-Be6EXaPj.js → use-panel-navigate-0SQfqPkD.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-CseOJAsA.js → use-project-native-view-presence-DCIK6I3A.js} +1 -1
- package/dist/client/assets/{use-project-scope-PsXh1A1b.js → use-project-scope-DxQjJRGx.js} +1 -1
- package/dist/client/assets/{use-releases-DCE7odIC.js → use-releases-Bs-aUIi7.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-iIedMYp6.js → use-reports-diagnostic-DcMIIpTX.js} +1 -1
- package/dist/client/assets/{use-route-default-main-CpD6yFxm.js → use-route-default-main-BArLspLV.js} +1 -1
- package/dist/client/assets/{use-secrets-DBywjfaf.js → use-secrets-CiPBE2Qt.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-VVEsXpas.js → use-section-preview-base-B246EdBQ.js} +1 -1
- package/dist/client/assets/{use-session-runtime-CNiorn84.js → use-session-runtime-BcVDqUUJ.js} +1 -1
- package/dist/client/assets/{use-tags-VyPi9cGD.js → use-tags-BB2zUpFy.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-Bnqil_49.js → use-task-board-analytics-DRKtos65.js} +1 -1
- package/dist/client/assets/{use-task-metadata-C1HouM2C.js → use-task-metadata-OhsIALkd.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-ThlLVH9X.js → use-thread-outputs-C4vmXARh.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-czGE7SoH.js → use-virtual-mcp-_fv8ltyn.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BC8vixpL.js +1 -0
- package/dist/client/assets/{useQueries-CjKXpTIH.js → useQueries-BNwHIc_a.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Bcu7W5-E.js +1 -0
- package/dist/client/assets/{users-zjT_Md4l.js → users-0bNfi2vO.js} +1 -1
- package/dist/client/assets/{utils-CJGwkbD3.js → utils-DHt_km_G.js} +1 -1
- package/dist/client/assets/{variant-calendar-Dp-7MDsp.js → variant-calendar-CZ5OPM_a.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-DfrI6Pj7.js → variant-matcher-override-DPwC0YFJ.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CuId7aVv.js → view-mode-toggle-B1luQkKQ.js} +1 -1
- package/dist/client/assets/{virtual-mcp-ONYMJry4.js → virtual-mcp-DGl-popc.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-Bs9Bb7CY.js +0 -1
- package/dist/client/assets/agent-deck-I63jGgVR.js +0 -1
- package/dist/client/assets/agent-file-BSqUZJhv.js +0 -1
- package/dist/client/assets/agent-library-file-2GUZALPm.js +0 -1
- package/dist/client/assets/agent-monitor-0RuGyUPi.js +0 -1
- package/dist/client/assets/agent-settings-CZXvaxXr.js +0 -1
- package/dist/client/assets/agent-site-editor-code-DN9DVXrc.js +0 -2
- package/dist/client/assets/agent-view-DA6alP1y.js +0 -1
- package/dist/client/assets/api-keys-CqMsAmQd.js +0 -1
- package/dist/client/assets/app-editor-Dv5X2I7_.js +0 -1
- package/dist/client/assets/project-reports-BX8b8siI.js +0 -1
- package/dist/client/assets/project-tasks-DaUkSQaN.js +0 -1
- package/dist/client/assets/record-editor-3PeTHUGL.js +0 -1
- package/dist/client/assets/reports-Be7CzooZ.js +0 -1
- package/dist/client/assets/tasks-zpe1SR8s.js +0 -1
- package/dist/client/assets/useInfiniteQuery-DfHEHKh-.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CBeA8oCN.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -3365,7 +3365,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3365
3365
|
${J.join(`
|
|
3366
3366
|
`)}`:Y}function ef6($){let Z=new Set;for(let Q of $)for(let X of Q.split(`
|
|
3367
3367
|
`)){let Y=X.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var h$8=200,df6=12,if6,nf6=300,Hk0=3;var $F1=D(()=>{hZ();D8();Kk0();if6={aheadBy:0,behindBy:0,files:[]}});function Zy6($){if(!$||$.includes(".."))return!1;return $y6.test($)}function l$8($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!Zy6(Z))return null;let{__resolveType:Q,...X}=$;return{resolveType:Z,payload:X}}function c$8($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var $y6;var d$8=D(()=>{$y6=/^[\w./@-]+$/});function M80($,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 i$8($,Z,Q,X){let Y=$.organization?.id;if(!Y)throw new nj(B7);let J=await bw($.storage,Y,X);if(J&&await AB($.storage,J)){let F=await hF($,J,{forceRefresh:!0}).catch((U)=>{throw new nj(U instanceof Error?U.message:B7)});await m$8($,Z,Q,F);return}let G=X.connectionId??J?.legacyConnectionId;if(!G)throw new nj("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await sl({ctx:$,connectionId:G,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:B7;throw new nj(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await uF(G,X.owner,X.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=dF$(F instanceof Error?F.message:String(F));throw U?new nj(N):F});await m$8($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function m$8($,Z,Q,X){let{cloneUrl:Y,gitUserName:J,gitUserEmail:G}=X,W=im($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await Qj(K,Qy6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var Qy6=10485760,nj;var ZF1=D(()=>{t3();eV0();X00();HW0();as();hZ();nj=class nj extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function Yy6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Xy6.test(Z))throw Error(`Invalid branch name: ${$}`)}function gf($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Gy6)])}async function Ky6($,Z){let Q=$.var.studioContext,X=tF(Z.branch),Y=$.req.query("thread")??X,J=Y&&Y===X?Z.branchThread:Y?await Q.storage.threads.get(Y).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Kx(G?.metadata?.runtime);if(W)return W;let K=sA0(Z.virtualMcpMetadata),H=K==="cms"?await bH1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)Y00(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 Hy6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await LY($.var.studioContext)}catch{return null}}function hf($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function rm($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),X=$.var.studioContext,Y=M80(Z,Q);if(!Y)throw new y0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=K0(X);return ol(X,J.id,Y)}function QF1($,Z){let Q=Z instanceof Error?Z.message:String(Z),X=FH$(Z);if(X!==void 0)return $.json({error:Q},429,{...t5,...X===null?{}:{"Retry-After":String(Math.ceil(X/1000))}});if(Z instanceof l6)return $.json({error:Q},409,t5);let Y=e3(Z);if(Y!==null){let J=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},J,t5)}return $.json({error:Q},502,t5)}async function t$8($,Z,Q){let X;try{X=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await X.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:X.status,headers:{"content-type":X.headers.get("content-type")??"application/json"}})}async function o$8($){try{let Z=await rm($),Q=await Fk0(Z,$.get("vmClaim").branch);return $.json(Q,200,t5)}catch(Z){return QF1($,Z)}}function I80($,Z){let X=(Bk0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=X.catch(()=>{});return Bk0.set($,Y),Y.finally(()=>{if(Bk0.get($)===Y)Bk0.delete($)}),X}async function o7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,t5);let X=Q?.runner??hf($);if(X instanceof Response)return X;let{claimName:Y,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 X.proxyDaemonRequest(Y,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await X.adoptLiveClaim({userId:J,projectRef:G},Y))B=await X.proxyDaemonRequest(Y,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",...t5}})}}let O=await B.text(),L=Q?.redactRepoDir?Fy6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...t5}})};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 Fy6($){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 Ok0($,Z,Q,X="GET",Y){let J=await $.proxyDaemonRequest(Z,Q,{method:X,headers:new Headers,body:null});if(J.status===404&&Y){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))J=await $.proxyDaemonRequest(Z,Q,{method:X,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 Uy6($){return r$8.includes($)}var Xy6,p$8=524288,Jy6=65536,Gy6=1e4,n$8=2000,Wy6,Bk0,t5,r$8,a$8=()=>{let $=new X1;$.use("/:virtualMcpId/:branch/*",Wy6),$.post("/:virtualMcpId/:branch/write",(Q)=>o7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>o7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>o7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>o7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>o7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>o7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>o7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:gf(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return o7(Q,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return o7(Q,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>o7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>o7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let X=Q.req.param("step");if(!X||!Uy6(X))return Q.json({error:`step must be one of: ${r$8.join(", ")}`},400);let Y=Q.get("vmClaim"),J=await bH1(Q.var.studioContext,{claimName:Y.claimName})==="gone"?null:await Hy6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,t5);if(X==="start"){let G=K0(Q.var.studioContext),W=bc(Y.virtualMcpMetadata);try{await tA0({ctx:Q.var.studioContext,runner:J,handle:Y.claimName,orgId:G.id,userId:Y.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 o7(Q,`/_sandbox/setup/${X}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let X=Q.get("vmClaim");if(!X.runner)return OO(Q,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return r18(Q,{ctx:Q.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return o$8(Q);return Z(Q)});let Z=(Q)=>o7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(n$8)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return o$8(Q);return o7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(n$8)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")try{let Y=await Q.req.json().catch(()=>({})),J=await rm(Q),G=await Uk0(J,X.branch,Y.base);return Q.json(G,200,t5)}catch(Y){return QF1(Q,Y)}return o7(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,t5);let X=hf(Q);if(X instanceof Response)return X;let{claimName:Y,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return I80(Y,async()=>{try{await xH1(W,X,Y);let K=M80(J,G);if(K)await i$8(W,X,Y,K)}catch(K){if(K instanceof nj)return Q.json({error:K.message},403,t5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,t5)}return o7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return I80(X.claimName,async()=>{let Y=await Q.req.json().catch(()=>({})),J=Array.isArray(Y.filepaths)?Y.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,t5);try{let G=await rm(Q);return await u$8(G,X.branch,J),Q.json({ok:!0},200,t5)}catch(G){let W=e3(G)===409||G instanceof l6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,t5)}});return I80(X.claimName,()=>o7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return I80(X.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await rm(Q),H=W.base??await K.getDefaultBranch();return await Nk0(K,X.branch,H),Q.json({ok:!0},200,t5)}catch(W){return QF1(Q,W)}});let Y=hf(Q);if(Y instanceof Response)return Y;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return I80(J,async()=>{try{await xH1(G,Y,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,t5)}return o7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",H9({maxSize:p$8,onError:(Q)=>Q.json({error:"Payload too large"},413,t5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let H=hf(Q);if(H instanceof Response)return H;Y=H}let{claimName:J,userId:G,projectRef:W}=X,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]=gH1(F)&&N?[F,U]:Y?await Promise.all([Ok0(Y,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),Ok0(Y,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await rm(Q);return Promise.all([Fk0(w,X.branch),Uk0(w,X.branch)])})();await IK(K,K0(K).id,"suggesting a commit message");let L=await Z$8(K,B,O);return Q.json(L,200,t5)}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,t5);return Q.json({error:F},502,t5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",H9({maxSize:p$8,onError:(Q)=>Q.json({error:"Payload too large"},413,t5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let H=hf(Q);if(H instanceof Response)return H;Y=H}let{claimName:J,userId:G,projectRef:W}=X,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]=gH1(F)&&N?[F,U]:Y?await Promise.all([Ok0(Y,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),Ok0(Y,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await rm(Q);return Promise.all([Fk0(w,X.branch),Uk0(w,X.branch)])})();await IK(K,K0(K).id,"judging whether a change needs review");let L=await X$8(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,t5)}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,t5);return Q.json({error:F},502,t5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let X=hf(Q);if(X instanceof Response)return X;let{claimName:Y}=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 X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return t$8(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",H9({maxSize:Jy6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let X=hf(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),J;try{J=await X.getPreviewUrl(Y)}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=l$8(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=c$8(J,W.resolveType);return t$8(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var s$8=D(()=>{X8();FH();mm();vH1();$00();n18();JW();xc();t18();dK();RF();o18();a18();A61();Q00();lH1();Y$8();hZ();U5();$F1();d$8();ZF1();Xy6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Wy6=sV0(async($,Z)=>{let Q=$.var.studioContext;try{Q0(Q)}catch{return $.json({error:"Unauthorized"},401)}let X=p0(Q);if(!X)return $.json({error:"Unauthorized"},401);let Y;try{Y=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{Yy6(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!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Ae({orgId:Y.id,virtualMcpId:J,branch:G}),H=await t81(Q,G),F=o81(H,X),U=p18({userId:F,projectRef:K}),N=W.metadata??null,B=await Ky6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:X,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 LY(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:X,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});Bk0=new Map;t5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};r$8=["clone","install","start"]});function e$8($,Z,Q){let X=XF1.get($);if(!X)X={pending:null,running:!1},XF1.set($,X);if(!X.pending)X.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=X.pending;Y.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))Y.set.set(G,W),Y.del.delete(G);for(let G of Q.delete??[])Y.del.add(G),Y.set.delete(G);let J=new Promise((G,W)=>{Y.resolvers.push(G),Y.rejecters.push(W)});if(!X.running)By6($,X);return J}async function By6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let X=await Oy6(Q);for(let Y of Q.resolvers)Y(X)}catch(X){for(let Y of Q.rejecters)Y(X)}}}finally{if(Z.running=!1,!Z.pending)XF1.delete($)}}async function Oy6($){let{client:Z,branch:Q,packagePath:X}=$.deps,Y=new Map;for(let J=0;;J++){let G=await om(Z,Q),W=await Z.listDecofileEntries(G,X),K=aH1(W,X),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=sH1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3368
|
-
`;await x$8(Z.repo,L);let w=O[0]??`${Wk0(X)}/${mH1(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 sH1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await f$8(Z,F.values(),Y),{decofile:B,skipped:O}=P80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:kK(Z.repo),branch:Q,packagePath:X,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:Dy6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof l6)||J>=Ny6-1)throw N;await c$(a7(2000,200,J,2,0.5))}}}function Dy6($){let Z=(Y)=>{let J=Y.slice(0,3).join(", ");return Y.length>3?`${J} (+${Y.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 X=`chore(decofile): ${Q.join("; ")}`;return E81(X,$.deps.coAuthor)}var Ny6=3,XF1;var $88=D(()=>{fP0();Zk0();w6();D8();hZ();Kk0();XF1=new Map});import{createHmac as Z88,randomBytes as Ly6,timingSafeEqual as wy6}from"crypto";function Q88(){if(Dk0)return Dk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Dk0=$?Buffer.from($):Ly6(32),Dk0}function YF1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+jy6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=Z88("sha256",Q88()).update(X).digest("base64url");return`${X}.${Y}`}function X88($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),J=Buffer.from(Z88("sha256",Q88()).update(X).digest("base64url"));if(Y.length!==J.length||!wy6(Y,J))return!1;let G;try{G=JSON.parse(Buffer.from(X,"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 jy6=21600000,Dk0=null;var Y88=D(()=>{U$()});import{z as am}from"zod";function zy6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ey6.test($)}function H88($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function V80($){let Z=$.get("decofileScope");return ol($.var.studioContext,Z.organizationId,Z.githubRepo)}function k80($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof l6)return $.json({error:Q},409);let X=e3(Z);if(X!==null){let Y=X===404?404:X===409||X===422?409:502;return $.json({error:Q},Y)}return $.json({error:Q},500)}function F88(){let $=new X1;return $.use("/:virtualMcpId/:branch",K88),$.use("/:virtualMcpId/:branch/*",K88),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await y$8(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(Y.decofile,200,{...J,"content-type":"application/json"});let G=YF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(H88(Z))},"decofile":${Y.decofile}}`,200,{...J,"content-type":"application/json"})}catch(X){return k80(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await V80(Z),J=await Y.readFileAtRef(Q.branch,X);if(J===null){let G=await Y.getDefaultBranch();if(G!==Q.branch)J=await Y.readFileAtRef(G,X)}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(Y){return k80(Z,Y)}}),$.patch("/:virtualMcpId/:branch",Ay6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=Ty6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let J=Y.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{$k0(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(dH1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await V80(Z),W=await e$8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:im(X)},J),K=YF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:H88(Z)})}catch(G){return k80(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await X.getDefaultBranch();if(Y===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 X.mergeBranches(Y,Q.branch,J)}catch(W){if(e3(W)!==409)throw W;await Nk0(X,Q.branch,Y),G=await X.mergeBranches(Y,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(e3(G)===409)return Z.json({error:"merge-conflict"},409);if(e3(G)===405){let K=await X.findOpenChangeRequest(Y,Q.branch)??await X.createChangeRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(X){return k80(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranch(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(e3(J)===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(X){return k80(Z,X)}}),$}var Ey6,J88=500,G88=1048576,W88=1024,Py6=8388608,Ay6,Ty6,K88;var U88=D(()=>{T61();Zk0();X8();FH();vH1();eV0();ZF1();hZ();$88();Y88();$F1();Kk0();RF();Ey6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ay6=H9({maxSize:Py6,onError:($)=>$.json({error:"Payload too large"},413)}),Ty6=am.object({set:am.record(am.string(),am.unknown()).optional(),delete:am.array(am.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)<=J88,{message:`Patch cannot touch more than ${J88} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=G88),{message:`Each block must be at most ${G88} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=W88),{message:`Each block key must be at most ${W88} characters`}),K88=sV0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!zy6(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||!X88(B,{organizationId:X.id,virtualMcpId:Y,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await d3(Q,X.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(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!aA0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=M80(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var N88=($)=>{let Z=new X1;if(Z.use("*",Am),Z.use("*",ca$),Z.route("/",WV0()),Z.route("/",Rs$()),Z.route("/",Fs$()),Z.route("/",v18()),Z.route("/",q18()),Z.route("/",C18()),Z.route("/",I18()),Z.route("/",oV0()),Z.route("/tools",u18()),Z.route("/",y18()),Z.route("/",X18({kvStorage:$.kvStorage})),Z.route("/",Z18()),Z.route("/fs",L18({getConnection:$.getNatsConnection})),Z.route("/sandbox",a$8()),Z.route("/decofile",F88()),Z.route("/",A18()),Z.route("/",j18()),Z.route("/deco-sites",HV0()),Z.route("/hosting",ea$()),Z.route("/monitor",Gs$()),Z.route("/sso",QV0()),Z.route("/",rV0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ta$()),$.mountDevAssets)Z.route("/dev-assets",BV0({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("/",st$()),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",z18()),Z.route("/mcp",XR0()),Z.route("/mcp/self",iV0()),Z.route("/mcp",GR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var B88=D(()=>{X8();da$();iI0();oa$();$K1();$s$();Ws$();OV0();Mf();oW1();JK1();Q18();Y18();w18();E18();B10();dW1();WR0();RH1();P18();T18();M18();V18();IH1();b18();g18();VH1();l18();kH1();YR0();s$8();U88()});function Ry6($){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 qy6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},O88=()=>{let $=new X1;return $.use("*",qy6),$.get("/",async(Z)=>{let Q=E0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let J=await CJ(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Ry6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var D88=D(()=>{X8();U$();eM0()});import{z as b1}from"zod";function kU($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function xy6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function fy6($,Z,Q){try{return JSON.parse($)}catch{throw new j88(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function yy6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.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((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:fy6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function gy6($){let Z=$.map((Q)=>{let X=Q.function.parameters?KF(Q.function.parameters):KF({type:"object",properties:{}});return[Q.function.name,u$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function hy6($){if(!$)return;return{openai:{response_format:$}}}function uy6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function L88($,Z,Q,X,Y,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:X.temperature,maxOutputTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:J};return Y?{...G,providerOptions:Y}:G}function w88($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var My6=256,Iy6,Vy6,ky6,Sy6,Cy6,_y6,vy6,by6,j88,E88,z88;var P88=D(()=>{$6();X8();mm();sK();Iy6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Vy6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),ky6=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(Vy6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Sy6=b1.object({type:b1.literal("text")}),Cy6=b1.object({type:b1.literal("json_object")}),_y6=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()})}),vy6=b1.union([Sy6,Cy6,_y6]),by6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(ky6),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(Iy6).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:vy6.optional(),user:b1.string().optional()});j88=class j88 extends Error{constructor($){super($);this.name="MessageConversionError"}};E88=new X1;E88.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(kU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(kU("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(kU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=by6.safeParse(X);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(kU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=Y.data,G=xy6(J.model);if(!G)return $.json(kU("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)=>Kz(E.providerId));if(!j)return $.json(kU("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(kU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=yy6(J.messages),N=J.tools?gy6(J.tools):void 0,B=hy6(J.response_format),O=uy6(),L=Math.floor(Date.now()/1000);if(J.stream)return OO($,async(w)=>{let j=L88(F,U,N,J,B,$.req.raw.signal);try{let E=_c(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>=My6)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:w88(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=L88(F,U,N,J,B,$.req.raw.signal),j=await Cc(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:w88(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(kU("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(kU(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(kU(Y.message,"server_error"),500)}});z88=E88});function ly6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function A88(){let $=new X1;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"),X=p0(Q);if(!X)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!N7(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","=",X).execute(),W=[];for(let H of G){if(!H.slug||w9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(P30(U)!==J)continue;if(!ly6(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 T88=D(()=>{X8();o3()});var q88;var R88=D(()=>{q88={name:"decocms",version:"4.390.6",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 my6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??dy6}}var M88,dy6="https://ph.studio.decocms.com",I88;var V88=D(()=>{X8();yo();Vx();D9();U$();kW1();R88();M88=new X1;M88.get("/",($)=>{let Z={version:q88.version,theme:X1$(),...NK().logo&&{logo:NK().logo},...dB()&&{internalUrl:xl1()},...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:dr$(),posthog:my6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:MO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});I88=M88});function sm($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function JF1($){return(sm($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function S88($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(sm($))}&sz=${Z}`}function k88($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function C88($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,J=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?k88(`${Y.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):k88(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as n0}from"zod";var uf,iy6,py6,ny6,ty6,_88;var v88=D(()=>{uf=n0.enum(["good","bad","neutral"]),iy6=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:uf.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 $})),py6=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(iy6)),ny6={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()},ty6=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:uf.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:uf.optional()}),n0.object({template:n0.literal("stats"),stats:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),tone:uf.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:uf.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(py6).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:uf.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:uf.optional()})).min(1)})]),_88=n0.object({...ny6,template:ty6})});function Lk0($){let Z=[],Q=[...$.sections].sort((Y,J)=>Y.position-J.position).map((Y)=>{let J=_88.safeParse(Y.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),X=Q.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:X},slides:Q},drops:Z}}var GF1=D(()=>{v88()});import{join as b88}from"path";async function ry6($){try{let Z=await fetch(`${qF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(oy6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=Lk0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),J=Y?.template,G=J&&J.template==="cover"?J:void 0;return{brand:X.meta.brand?.trim()||JF1($),score:X.meta.scores?.cover??G?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function aG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function ay6($,Z){let Q=sm($),X=Z?.brand?.trim()||JF1(Q),Y=S88(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=C88({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${X} commerce report by decocms`;return[`<title>${aG(W)}</title>`,`<meta name="description" content="${aG(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="${aG(W)}" />`,`<meta property="og:description" content="${aG(K)}" />`,`<meta property="og:url" content="${aG(G)}" />`,`<meta property="og:image" content="${aG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${aG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${aG(W)}" />`,`<meta name="twitter:description" content="${aG(K)}" />`,`<meta name="twitter:image" content="${aG(H)}" />`,`<meta name="twitter:image:alt" content="${aG(F)}" />`,`<link rel="canonical" href="${aG(G)}" />`,`<link rel="icon" href="${aG(Y)}" sizes="any" />`].join(`
|
|
3368
|
+
`;await x$8(Z.repo,L);let w=O[0]??`${Wk0(X)}/${mH1(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 sH1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await f$8(Z,F.values(),Y),{decofile:B,skipped:O}=P80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:kK(Z.repo),branch:Q,packagePath:X,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:Dy6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof l6)||J>=Ny6-1)throw N;await c$(a7(2000,200,J,2,0.5))}}}function Dy6($){let Z=(Y)=>{let J=Y.slice(0,3).join(", ");return Y.length>3?`${J} (+${Y.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 X=`chore(decofile): ${Q.join("; ")}`;return E81(X,$.deps.coAuthor)}var Ny6=3,XF1;var $88=D(()=>{fP0();Zk0();w6();D8();hZ();Kk0();XF1=new Map});import{createHmac as Z88,randomBytes as Ly6,timingSafeEqual as wy6}from"crypto";function Q88(){if(Dk0)return Dk0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Dk0=$?Buffer.from($):Ly6(32),Dk0}function YF1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+jy6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=Z88("sha256",Q88()).update(X).digest("base64url");return`${X}.${Y}`}function X88($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),J=Buffer.from(Z88("sha256",Q88()).update(X).digest("base64url"));if(Y.length!==J.length||!wy6(Y,J))return!1;let G;try{G=JSON.parse(Buffer.from(X,"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 jy6=21600000,Dk0=null;var Y88=D(()=>{U$()});import{z as am}from"zod";function zy6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ey6.test($)}function H88($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function V80($){let Z=$.get("decofileScope");return ol($.var.studioContext,Z.organizationId,Z.githubRepo)}function k80($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof l6)return $.json({error:Q},409);let X=e3(Z);if(X!==null){let Y=X===404?404:X===409||X===422?409:502;return $.json({error:Q},Y)}return $.json({error:Q},500)}function F88(){let $=new X1;return $.use("/:virtualMcpId/:branch",K88),$.use("/:virtualMcpId/:branch/*",K88),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await y$8(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(Y.decofile,200,{...J,"content-type":"application/json"});let G=YF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(H88(Z))},"decofile":${Y.decofile}}`,200,{...J,"content-type":"application/json"})}catch(X){return k80(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await V80(Z),J=await Y.readFileAtRef(Q.branch,X);if(J===null){let G=await Y.getDefaultBranch();if(G!==Q.branch)J=await Y.readFileAtRef(G,X)}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(Y){return k80(Z,Y)}}),$.patch("/:virtualMcpId/:branch",Ay6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=Ty6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let J=Y.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{$k0(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(dH1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await V80(Z),W=await e$8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:im(X)},J),K=YF1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:H88(Z)})}catch(G){return k80(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await X.getDefaultBranch();if(Y===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 X.mergeBranches(Y,Q.branch,J)}catch(W){if(e3(W)!==409)throw W;await Nk0(X,Q.branch,Y),G=await X.mergeBranches(Y,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(e3(G)===409)return Z.json({error:"merge-conflict"},409);if(e3(G)===405){let K=await X.findOpenChangeRequest(Y,Q.branch)??await X.createChangeRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(X){return k80(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await V80(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranch(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(e3(J)===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(X){return k80(Z,X)}}),$}var Ey6,J88=500,G88=1048576,W88=1024,Py6=8388608,Ay6,Ty6,K88;var U88=D(()=>{T61();Zk0();X8();FH();vH1();eV0();ZF1();hZ();$88();Y88();$F1();Kk0();RF();Ey6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ay6=H9({maxSize:Py6,onError:($)=>$.json({error:"Payload too large"},413)}),Ty6=am.object({set:am.record(am.string(),am.unknown()).optional(),delete:am.array(am.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)<=J88,{message:`Patch cannot touch more than ${J88} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=G88),{message:`Each block must be at most ${G88} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=W88),{message:`Each block key must be at most ${W88} characters`}),K88=sV0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!zy6(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||!X88(B,{organizationId:X.id,virtualMcpId:Y,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await d3(Q,X.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(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!aA0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=M80(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var N88=($)=>{let Z=new X1;if(Z.use("*",Am),Z.use("*",ca$),Z.route("/",WV0()),Z.route("/",Rs$()),Z.route("/",Fs$()),Z.route("/",v18()),Z.route("/",q18()),Z.route("/",C18()),Z.route("/",I18()),Z.route("/",oV0()),Z.route("/tools",u18()),Z.route("/",y18()),Z.route("/",X18({kvStorage:$.kvStorage})),Z.route("/",Z18()),Z.route("/fs",L18({getConnection:$.getNatsConnection})),Z.route("/sandbox",a$8()),Z.route("/decofile",F88()),Z.route("/",A18()),Z.route("/",j18()),Z.route("/deco-sites",HV0()),Z.route("/hosting",ea$()),Z.route("/monitor",Gs$()),Z.route("/sso",QV0()),Z.route("/",rV0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ta$()),$.mountDevAssets)Z.route("/dev-assets",BV0({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("/",st$()),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",z18()),Z.route("/mcp",XR0()),Z.route("/mcp/self",iV0()),Z.route("/mcp",GR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var B88=D(()=>{X8();da$();iI0();oa$();$K1();$s$();Ws$();OV0();Mf();oW1();JK1();Q18();Y18();w18();E18();B10();dW1();WR0();RH1();P18();T18();M18();V18();IH1();b18();g18();VH1();l18();kH1();YR0();s$8();U88()});function Ry6($){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 qy6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},O88=()=>{let $=new X1;return $.use("*",qy6),$.get("/",async(Z)=>{let Q=E0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let J=await CJ(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Ry6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var D88=D(()=>{X8();U$();eM0()});import{z as b1}from"zod";function kU($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function xy6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function fy6($,Z,Q){try{return JSON.parse($)}catch{throw new j88(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function yy6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.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((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:fy6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function gy6($){let Z=$.map((Q)=>{let X=Q.function.parameters?KF(Q.function.parameters):KF({type:"object",properties:{}});return[Q.function.name,u$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function hy6($){if(!$)return;return{openai:{response_format:$}}}function uy6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function L88($,Z,Q,X,Y,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:X.temperature,maxOutputTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:J};return Y?{...G,providerOptions:Y}:G}function w88($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var My6=256,Iy6,Vy6,ky6,Sy6,Cy6,_y6,vy6,by6,j88,E88,z88;var P88=D(()=>{$6();X8();mm();sK();Iy6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Vy6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),ky6=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(Vy6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Sy6=b1.object({type:b1.literal("text")}),Cy6=b1.object({type:b1.literal("json_object")}),_y6=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()})}),vy6=b1.union([Sy6,Cy6,_y6]),by6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(ky6),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(Iy6).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:vy6.optional(),user:b1.string().optional()});j88=class j88 extends Error{constructor($){super($);this.name="MessageConversionError"}};E88=new X1;E88.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(kU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(kU("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(kU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=by6.safeParse(X);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(kU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=Y.data,G=xy6(J.model);if(!G)return $.json(kU("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)=>Kz(E.providerId));if(!j)return $.json(kU("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(kU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=yy6(J.messages),N=J.tools?gy6(J.tools):void 0,B=hy6(J.response_format),O=uy6(),L=Math.floor(Date.now()/1000);if(J.stream)return OO($,async(w)=>{let j=L88(F,U,N,J,B,$.req.raw.signal);try{let E=_c(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>=My6)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:w88(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=L88(F,U,N,J,B,$.req.raw.signal),j=await Cc(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:w88(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(kU("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(kU(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(kU(Y.message,"server_error"),500)}});z88=E88});function ly6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function A88(){let $=new X1;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"),X=p0(Q);if(!X)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!N7(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","=",X).execute(),W=[];for(let H of G){if(!H.slug||w9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(P30(U)!==J)continue;if(!ly6(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 T88=D(()=>{X8();o3()});var q88;var R88=D(()=>{q88={name:"decocms",version:"4.390.8",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 my6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??dy6}}var M88,dy6="https://ph.studio.decocms.com",I88;var V88=D(()=>{X8();yo();Vx();D9();U$();kW1();R88();M88=new X1;M88.get("/",($)=>{let Z={version:q88.version,theme:X1$(),...NK().logo&&{logo:NK().logo},...dB()&&{internalUrl:xl1()},...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:dr$(),posthog:my6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:MO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});I88=M88});function sm($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function JF1($){return(sm($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function S88($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(sm($))}&sz=${Z}`}function k88($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function C88($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,J=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?k88(`${Y.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):k88(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as n0}from"zod";var uf,iy6,py6,ny6,ty6,_88;var v88=D(()=>{uf=n0.enum(["good","bad","neutral"]),iy6=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:uf.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 $})),py6=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(iy6)),ny6={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()},ty6=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:uf.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:uf.optional()}),n0.object({template:n0.literal("stats"),stats:n0.array(n0.object({value:n0.coerce.string(),label:n0.coerce.string(),tone:uf.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:uf.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(py6).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:uf.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:uf.optional()})).min(1)})]),_88=n0.object({...ny6,template:ty6})});function Lk0($){let Z=[],Q=[...$.sections].sort((Y,J)=>Y.position-J.position).map((Y)=>{let J=_88.safeParse(Y.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),X=Q.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:X},slides:Q},drops:Z}}var GF1=D(()=>{v88()});import{join as b88}from"path";async function ry6($){try{let Z=await fetch(`${qF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(oy6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=Lk0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),J=Y?.template,G=J&&J.template==="cover"?J:void 0;return{brand:X.meta.brand?.trim()||JF1($),score:X.meta.scores?.cover??G?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function aG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function ay6($,Z){let Q=sm($),X=Z?.brand?.trim()||JF1(Q),Y=S88(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=C88({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${X} commerce report by decocms`;return[`<title>${aG(W)}</title>`,`<meta name="description" content="${aG(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="${aG(W)}" />`,`<meta property="og:description" content="${aG(K)}" />`,`<meta property="og:url" content="${aG(G)}" />`,`<meta property="og:image" content="${aG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${aG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${aG(W)}" />`,`<meta name="twitter:description" content="${aG(K)}" />`,`<meta name="twitter:image" content="${aG(H)}" />`,`<meta name="twitter:image:alt" content="${aG(F)}" />`,`<link rel="canonical" href="${aG(G)}" />`,`<link rel="icon" href="${aG(Y)}" sizes="any" />`].join(`
|
|
3369
3369
|
`)}function sy6($,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}
|
|
3370
3370
|
</head>`)}function x88($){let Z=new X1;return Z.get("/:domain/og.png",async(Q)=>{let X=sm(Q.req.param("domain")),Y=async()=>{let J=$?Bun.file(b88($,"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(`${qF({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(ey6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return Y();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?b88($,"index.html"):null,J=Y?Bun.file(Y):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await ry6(sm(X)),K=ay6(X,W);return Q.html(sy6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var oy6=2500,ey6=1e4;var f88=D(()=>{X8();GF1();nP();U$()});function S80($,Z){return fetch(`${qF({})}${$}`,Z)}async function $g6($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",J=await S80(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{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}=Lk0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var Zg6,LO,y88=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},g88;var h88=D(()=>{X8();qG();nP();GF1();Zg6=new Set(["complete","errored","terminated","unknown"]),LO=new X1;LO.use("*",async($,Z)=>{let Q=await V8.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});LO.use("/link-token/*",y88);LO.use("/suggest",y88);LO.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let J=await $g6(Z,X,Y);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)}});LO.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=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 ${pP({})}`},body:JSON.stringify({url:X,...Y?{email:Y}:{},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)}});LO.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 ${pP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",J={done:Zg6.has(Y),status:Y};return $.json(J)}catch{return $.json({error:"status failed"},502)}});LO.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)}});LO.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 X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});g88=LO});var Qg6=1048576,WF1;var u88=D(()=>{X8();FH();U$();OW1();WF1=new X1;WF1.post("/webhook",H9({maxSize:Qg6,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(!Qr$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Xr$(Q);if(!Y)return $.json({error:"invalid payload"},400);let J=await Yr$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as Xg6}from"crypto";function Gg6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return Xg6(Buffer.from(Y),Buffer.from(X))}function Wg6($,Z){let Q=Z,X=Q?.repository?.name,Y=Q?.repository?.owner?.login;if(typeof X!=="string"||typeof Y!=="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:Y,repoName:X,number:G}))}function l88($){let Z=new X1;return Z.post("/webhook",H9({maxSize:Yg6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let X=process.env.GITHUB_WEBHOOK_SECRET;if(!X)return Q.json({error:"github webhook not configured"},503);let Y=await Q.req.text();if(!Gg6(Y,Q.req.header("x-hub-signature-256"),X))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!Jg6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(Y)}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 d81())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=Wg6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await Kg6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function Kg6($,Z){let Q=0;for(let X of Z){let Y=$.taskBoard(),J;try{J=await Y.findPrLinks(X)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await Y.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await EI$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var Yg6=5242880,Jg6;var c88=D(()=>{X8();FH();dK();L7();Jg6=new Set(["check_suite","issue_comment"])});function d88($){let Z=new YO($.db,new aJ($.encryptionKey)),Q=new X1;return Q.get("/attachments/:token",async(X)=>{let Y=yq$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(Y.organizationId);if(!J)return X.json({error:"Jira is not connected"},404);let W=await new wY(J.siteUrl,J.email,J.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.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 m88=D(()=>{X8();Gz();o61();Gj()});function i88($){let Z=new YO($.db,new aJ($.encryptionKey));async function Q(Y,J){let G=ri$(J);if(!G)return;let W=await Z.getByWebhookSecret(Y);if(!W?.enabled)return;let K=await HW($.db,W.organizationId);if(!K)return;if(await QI0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let X=new X1;return X.post("/webhook/:secret",H9({maxSize:Hg6}),async(Y)=>{let J=Y.req.param("secret");if(!await Z.getByWebhookSecret(J))return Y.json({error:"Unknown webhook"},404);let W;try{W=await Y.req.json()}catch{return Y.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),Y.body(null,202)}),X}var Hg6=1048576;var p88=D(()=>{X8();FH();Gz();XI0();Ax()});import{DBOS as wk0,SchedulerMode as Fg6}from"@dbos-inc/dbos-sdk";function t88($){HF1=$}function o88(){if(!HF1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return HF1}function r88(){let $=o88();return new YO($.db,new aJ($.encryptionKey))}async function Bg6($,Z){try{let Q=await r88().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let X=await HW(o88().db,Q.organizationId);if(!X)return{integrationId:$,started:0};if((await X.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new wY(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${n88}m"`,K=0,H;for(let F=0;F<Ng6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=ai$(N,N.changelog?.histories??[],Z);for(let O of B)if(await QI0(X,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 Og6($,Z){let Q=new Date($.getTime()-n88*60000),X=await wk0.runStep(()=>r88().listEnabledIds(),{name:"loadJiraIntegrations"});if(X.length===0)return;let Y=await Promise.all(X.map((J)=>wk0.runStep(()=>Bg6(J,Q),{name:`sweepJira:${J}`})));for(let J of Y)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 a88(){if(KF1)return;KF1=wk0.registerWorkflow(Og6,{name:"jiraTriggerSweepWorkflow"}),wk0.registerScheduled(KF1,{name:"jiraTriggerSweepWorkflow",crontab:Ug6,mode:Fg6.ExactlyOncePerIntervalWhenActive})}var Ug6="7-59/10 * * * *",n88=35,Ng6=5,HF1=null,KF1=null;var s88=D(()=>{Gz();Ax();Gj();XI0()});function e88($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var $48,Dg6,Lg6,Z48;var Q48=D(()=>{X8();UK();$d();Vl();$48=new X1,Dg6=["range","if-none-match","if-modified-since"],Lg6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];$48.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Pm($))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 X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new A$(400,{message:"Missing file key"});let Y=await p00(X,Z);if(!Y)throw new A$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&p3()){let K=Y.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 e88(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Dg6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(Y,{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:`,X),new A$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Lg6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),e88(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});Z48=$48});var C80=b((lf)=>{var wg6=lf&&lf.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),jg6=lf&&lf.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))wg6(Z,$,Q)};Object.defineProperty(lf,"__esModule",{value:!0});jg6(lJ(),lf)});var J48=b((X48)=>{Object.defineProperty(X48,"__esModule",{value:!0});X48.version=void 0;X48.version="3.4.0"});var K48=b((SU)=>{var Eg6=SU&&SU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(SU,"__esModule",{value:!0});SU.NodeTransport=SU.VERSION=void 0;SU.nodeResolveHost=qg6;var g5=C80(),zg6=q0("net"),FF1=q0("tls"),Pg6=q0("path"),G48=q0("fs"),Ag6=Eg6(q0("dns")),Tg6=J48();SU.VERSION=Tg6.version;var Rg6="nats.js";class W48{socket;version;lang;yields=[];signal=(0,g5.deferred)();closedNotification=(0,g5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Rg6,this.version=SU.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:X}=Q||{};try{if(X===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,g5.checkOptions)(Y,Z);let{tls_required:J,tls_available:G}=Y,W=G===!0&&Z.tls!==null;if(!X&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw g5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let J=Y;if(!J)J=new g5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new g5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,g5.deferred)(),Q,X=(0,zg6.createConnection)($.port,$.hostname,()=>{Z.resolve(X),X.removeAllListeners()});return X.on("error",(Y)=>{Q=Y}),X.on("close",()=>{X.removeAllListeners(),Z.reject(Q)}),X.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,g5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let X=g5.DataBuffer.concat(...this.yields),Y=(0,g5.extractProtocolMessage)(X);if(Y!=="")try{let J=g5.INFO.exec(Y);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,g5.deferred)();try{if($=(0,Pg6.resolve)($),!(0,G48.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,G48.readFile)($,(Q,X)=>{if(Q)return Z.reject(Q);Z.resolve(X)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:X,ca:Y,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(X){let W=await this.loadFile(X);if(W)$.ca=[W]}else if(Y)$.ca=Y;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 Y=await this.loadClientCerts()||{};Q=(0,g5.extend)(Q,this.options.tls,Y)}catch(Y){return Promise.reject(new g5.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,g5.deferred)();try{let Y=(0,FF1.connect)($.port,$.hostname,Q,()=>{Y.removeAllListeners(),X.resolve(Y)});Y.on("error",(J)=>{Z=J}),Y.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{X.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){X.reject(new g5.errors.ConnectionError(Y.message,{cause:Y}))}return X}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Z=(0,g5.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new g5.errors.ConnectionError(X.message,{cause:X}))}let Q=(0,g5.deferred)();try{let X=(0,FF1.connect)(Z,()=>{X.removeAllListeners(),Q.resolve(X)});X.on("error",(Y)=>{$=Y}),X.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Q.reject($),X.removeAllListeners()})}catch(X){Q.reject(new g5.errors.ConnectionError(X.message,{cause:X}))}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,g5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,g5.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 FF1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,g5.render)($)}`);let Z=(0,g5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,g5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,g5.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}}SU.NodeTransport=W48;function qg6($){let Z=(0,g5.deferred)();return Ag6.default.lookup($,{all:!0},(Q,X)=>{if(Q){Z.reject(Q);return}let Y=[];for(let J of X)Y.push(J.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var B48=b((N48)=>{Object.defineProperty(N48,"__esModule",{value:!0});N48.connect=Mg6;var H48=K48(),F48=C80(),U48=C80();function Mg6($={}){if((0,U48.hasWsProtocol)($))return Promise.reject(U48.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,F48.setTransportFactory)({factory:()=>{return new H48.NodeTransport},dnsResolveFn:H48.nodeResolveHost}),F48.NatsConnectionImpl.connect($)}});var O48=b((wO)=>{var Vg6=wO&&wO.__createBinding||(Object.create?function($,Z,Q,X){if(X===void 0)X=Q;var Y=Object.getOwnPropertyDescriptor(Z,Q);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,X,Y)}:function($,Z,Q,X){if(X===void 0)X=Q;$[X]=Z[Q]}),kg6=wO&&wO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Vg6(Z,$,Q)};Object.defineProperty(wO,"__esModule",{value:!0});wO.connect=void 0;var Sg6=B48();Object.defineProperty(wO,"connect",{enumerable:!0,get:function(){return Sg6.connect}});kg6(C80(),wO)});function j48($){let Z=$?.connectFn??bg6,Q=null,X=null,Y=!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,X=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:vg6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),X=null,G=!1,F(Q),H();return}catch{O++;let L=a7(_g6,Cg6,O-1,2,0.5);await c$(L)}}return{init(N,B){if(Y)return;Y=!0,J=!1;let O=B?.creds?D48.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(!X)X=w48.jetstream(Q);return X},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,Y=!1,X=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function bg6($){return L48.connect($)}var D48,L48,w48,Cg6=100,_g6=3000,vg6=3000;var E48=D(()=>{D8();D48=_(Vi(),1),L48=_(O48(),1),w48=_(mU(),1)});function jk0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,X=$?.updateRecencyOnGet??!1,Y=new Map;function J(){if(Y.size<=Q)return;let G=Date.now();for(let[W,K]of Y)if(K.expiresAt<=G)Y.delete(W);while(Y.size>Q){let W=Y.keys().next().value;if(W===void 0)break;Y.delete(W)}}return{get(G){let W=Y.get(G);if(!W)return;if(W.expiresAt<=Date.now()){Y.delete(G);return}if(X)Y.delete(G),Y.set(G,W);return W.value},set(G,W){Y.delete(G),Y.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){Y.delete(G)},clear(){Y.clear()},size(){return Y.size}}}function Ek0($,Z){return`${$}.${Z}`}class UF1{cache;constructor($){this.cache=jk0({ttlMs:$?.ttlMs??xg6,maxSize:$?.maxSize??fg6})}async get($,Z){return this.cache.get(Ek0($,Z))??null}async set($,Z,Q){this.cache.set(Ek0($,Z),Q)}async invalidate($,Z){this.cache.delete(Ek0($,Z)),this.cache.delete(Ek0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var xg6=600000,fg6=5000;var z48=()=>{};function zk0($,Z){return`${$}:${Z}`}function NF1($){let Z=jk0({ttlMs:$?.ttlMs??yg6,maxSize:$?.maxSize??gg6}),Q=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(P48,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:X})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(zk0(K,H))},set(K,H,F){Z.set(zk0(K,H),F)},invalidate(K,H){Z.delete(zk0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(P48),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===X)continue;Z.delete(zk0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var P48="studio.ai-provider-keys.invalidate",yg6=30000,gg6=5000;var A48=()=>{};class BF1{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,X=Z.subscribe("studio.decopilot.cancel");this.subscription=X,(async()=>{for await(let Y of X)try{let J=JSON.parse(Q.decode(Y.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 T48=($)=>{let Z;return()=>Z??=$()},OF1,DF1;var R48=D(()=>{R6();OF1=T48(()=>z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),DF1=T48(()=>z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function ig6($=I48){return{name:JU,subjects:[`${n91}.>`],storage:BH.StorageType.File,max_age:lg6,max_bytes:dg6,max_msgs_per_subject:mg6,discard:BH.DiscardPolicy.Old,retention:BH.RetentionPolicy.Limits,duplicate_window:cg6,num_replicas:$}}class V48{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 q48($){let Z=M48.headers();for(let[Q,X]of Object.entries($))Z.set(Q,X);return Z}function og6($,Z){let Q=0;return{publish(X,Y,J,G){X.publish(Y,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,ug6().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 rg6($,Z){return $.info?.cluster?Z:1}function ag6($){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 LF1{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(X,Y)=>{let J=ig6(Y);try{await X.streams.info(JU),await X.streams.update(JU,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await X.streams.add(J),await X.streams.update(JU,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await X.streams.delete(JU),await X.streams.add(J);else throw G}},Q=await c8(async()=>{let X=this.options.getJetStreamManager?await this.options.getJetStreamManager():await BH.jetstreamManager($),Y=rg6($,I48);try{await Z(X,Y)}catch(J){if(Y<=1||!ag6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${J.message}); falling back to an unreplicated stream`),await Z(X,1)}return X},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Hd});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,X){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=og6(Z,X),G=!1,W=()=>{if(G)return;G=!0;let H=XS$(Z);Y.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=o91(H,{runId:Z}),N=performance.now()-F;OF1().record(N),DF1().add(1,{"org.id":X??"unknown"}),tg6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(Y,B.subject,B.data,B.headers?q48(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(),ng6)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 c8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:q48(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hd}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let X=this.js;if(!X)return!1;let Y=performance.now(),J=o91(Z,{runId:$,dedup:Q});OF1().record(performance.now()-Y),DF1().add(1);for(let G of J)if(!await this.publishSerialized(X,G))return!1;return!0}async publishDone($,Z,Q){let X=this.js;if(!X)return!1;let Y=QS$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(X,Y)}async createTailStream($,Z,Q){let X=this.js;if(!X)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=Q?.deliverPolicy==="new"?BH.DeliverPolicy.New:BH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=Oj($),W;try{W=await c8(async()=>{return(await X.consumers.get(JU,{filter_subjects:G,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hd})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=V20({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(R20()).pipeThrough(q20()).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(JU,{filter:Oj($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var BH,M48,hg6=($)=>{let Z;return()=>Z??=$()},ug6,lg6=86400000000000,cg6=120000000000,dg6=4294967296,I48,mg6=500000,pg6,ng6,tg6;var k48=D(()=>{D8();r91();k20();M20();R6();R48();BH=_(mU(),1),M48=_(Vi(),1),ug6=hg6(()=>z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),I48=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);pg6=process.env.STREAM_ENCODE_TRACE==="1",ng6=process.env.DECOPILOT_STREAM_TRACE==="1";tg6=pg6?new V48:null});function Pk0($,Z,Q,X){if(!X)return!1;return $.emit(Z,bH(Q,X.status,{title:X.title??void 0,virtualMcpId:X.virtual_mcp_id??void 0,createdBy:X.created_by??void 0,triggerId:X.trigger_id??null,branch:X.branch??null,harnessId:X.harness_id??void 0,createdAt:X.created_at,updatedAt:X.updated_at})),!0}var S48=D(()=>{r8()});class wF1{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 sg6($,Z){let Q=$.startsWith("thread:")?mK($):$;return[...new Set([Z,Q].filter((X)=>!!X))]}async function C48($,Z){let Q=Z.organizationId;try{let X=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let Y of X){let J=await oF($,Y);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(Y),W=await Dc($,{threadId:Y,runBranch:G?.branch}),K=sg6(W,await nP0($,Y)),H=await ns($,Q,w11(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 gG(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(X){console.error("[task-board] PR lookup by branch failed",X)}return!1}var _48=D(()=>{hZ();JW();L7()});async function v48($,Z,Q){let X=Z.organizationId;if(!zJ(Z))return!1;if(!Tx(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,X))return!1;let Y=await $.storage.organizationSettings.get(X),J=fF(Y?.flags),G=await $.storage.taskBoard.update(Z.id,X,{status:J},Z.updatedBy);return await c6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),L8(X,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var b48=D(()=>{V4();PX();nc();oK();R9()});function Jh6($){return $ instanceof HY}function Gh6($,Z){return Z-$>=Xh6}class jF1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,X={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??eg6;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??Zh6,Q=this.options.itemIntervalMs??$h6,X=new Date(Date.now()-Q),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,X),J=Y.at(-1);this.cursor=Y.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of Y)try{if(await this.reconcileItem(G,W,X))$++}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()-d61),Q91);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()-Yh6));for(let{id:Q,organizationId:X,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await e51(this.taskBoard,Y,X),await $91(this.taskBoard,this.billing,Y,X)}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:X,organizationId:Y,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(X,Y,new Date))continue;let G=await this.taskBoard.getById(X,Y);if(!G||G.status!==x$.progress||G.assigneeId!==P8)continue;let W=await this.contextFactory(Y,G.assignedBy??G.createdBy);if(!W)continue;await rK(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${X} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${X} failed`,G),Jh6(G)){await this.returnToTodo(X,Y,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(X,Y,J,new Date(Date.now()+Qh6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${X} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let X=await this.taskBoard.getById($,Z);if(!X||X.status!==x$.progress)return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,X.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),L8(Z,Y)}catch(X){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,X)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!Gh6(OB(Q,Z.reviewCycleStartedAt),Date.now()))return;await QU($,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 X=await this.taskBoard.getById($,Z);if(!X)return!1;if(!zJ(X))return!1;let Y=X.assigneeId===P8,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(J.length===0){if(await C48(G,X))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(Y)await this.handOffReviewWithoutPr(G,X);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await rc(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 v48(G,X,W))return!0;if(await WC$(G,X))return!0;if(await this.resolveConflictFromSweep(G,X,W))return!0;if(!Y)return!1;if(!o51(W))return!1;return await tc(G,X,{previewMatchesHead:r51(W)}),!0}async resolveConflictFromSweep($,Z,Q){let X=Q.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!X)return!1;return await Fj($,Z.organizationId,Z,{pr:{number:X.number,url:X.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var eg6=60000,$h6=300000,Zh6=50,Qh6=60000,Xh6=900000,Yh6=120000;var x48=D(()=>{V4();lT0();_48();XU();X10();oK();b48();R9();s3();X91();L7();k00();oc()});import{readdir as Wh6,rm as Ak0}from"fs/promises";import{join as Tk0}from"path";async function Rk0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-Kh6),Z.setUTCHours(0,0,0,0);let Q=0;try{let X=await cf($);for(let Y of X)if(/^\d{4}$/.test(Y))Q+=await f48($,Y,Z);else if(!Y.startsWith(".")){let J=Tk0($,Y),G=await cf(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await f48(J,K,Z)}if((await cf(J)).length===0)await Ak0(J,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return Q}async function f48($,Z,Q){let X=0,Y=Tk0($,Z),J=await cf(Y);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Tk0(Y,W),H=await cf(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=Tk0(K,U);await Ak0(B,{recursive:!0,force:!0}),X++}}if((await cf(K)).length===0)await Ak0(K,{recursive:!0,force:!0})}if((await cf(Y)).length===0)await Ak0(Y,{recursive:!0,force:!0});return X}async function cf($){try{return(await Wh6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var Kh6=30;var EF1=()=>{};import{DBOS as zF1,SchedulerMode as Hh6}from"@dbos-inc/dbos-sdk";async function Uh6(){let $=[VW(),sf(),yU()],Z=0;for(let Q of $)try{Z+=await Rk0(Q)}catch(X){console.error("[monitoring-retention] cleanup failed:",X)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Nh6($,Z){await zF1.runStep(()=>Uh6(),{name:"monitoringRetention"})}function g48(){if(y48)return;y48=!0;let $=zF1.registerWorkflow(Nh6,{name:"monitoringRetentionWorkflow"});zF1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Fh6,mode:Hh6.ExactlyOncePerIntervalWhenActive})}var Fh6="23 4 * * *",y48=!1;var h48=D(()=>{Z3();EF1()});function u48($){return async(Z,Q)=>{let X=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(!X)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let Y=await IQ.create();Y.auth.user={id:Q,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let J=await XA($.db,Z,X.role);return Y.boundAuth=GW1({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:J,userId:Q}),Y.access=new lz(Q,void 0,Y.boundAuth,X.role,"self"),Hj(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var l48=D(()=>{ZK();vF()});function Bh6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Oh6(){return{services:Bh6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Lh6(){for(let $ of Dh6)$()}function c48($){let Z=[...PF1.logs,$];PF1={...PF1,logs:Z.length>500?Z.slice(-500):Z},Lh6()}function AF1(){return wh6}var PF1,Dh6,wh6=!1;var TF1=D(()=>{PF1=Oh6(),Dh6=new Set});import{EventEmitter as jh6}from"events";var RF1;var d48=D(()=>{TF1();RF1=new jh6;RF1.on("request",($)=>{c48($)})});function m48(){return async($,Z)=>{let Q=Date.now(),X=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let J="",G=!1;if(Y.startsWith("/mcp")&&X==="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=em(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>em(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${o5.tool}${B}${o5.dim}(${w})${o5.reset}`}else if(N.method)J=`${o5.dim}${em(N.method)}${o5.reset}`}}catch{}}let W=em(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${o5.mcp}${em(F.slice(0,12))}\u2026${o5.reset}`}else if(Y==="/mcp")W=`${o5.mcp}/mcp${o5.reset}`;else if(Y==="/mcp/registry")W=`${o5.mcp}/mcp/registry${o5.reset}`;let K=zh6(X),H=G?"\u25C0":"\u2190";if(!AF1())console.log(`${o5.dim}${H}${o5.reset} ${K}${X}${o5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Eh6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!AF1())console.log(`${o5.dim}${O}${o5.reset} ${K}${X}${o5.reset} ${W}${J?` ${J}`:""} ${N}${U}${o5.reset} ${o5.duration}${B}${o5.reset}`);RF1.emit("request",{method:X,path:em(Y),status:U,duration:F,timestamp:new Date})}}}var o5,Eh6=($)=>{if($>=500)return o5.serverError;if($>=400)return o5.clientError;if($>=300)return o5.redirect;return o5.ok},zh6=($)=>{return o5[$]||o5.reset},em=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var i48=D(()=>{TF1();d48();o5={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 o48}from"crypto";import{mkdir as Ph6,readdir as Ah6,rm as p48,stat as r48}from"fs/promises";import{join as MF1,relative as Th6}from"path";import{z as t$}from"zod";function s48($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return MF1(Rh6,Z)}function e48($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function qF1($,Z){let Q=s48($),X=e48(Z);return MF1(Q,X)}function qh6($,Z,Q,X){let Y=E0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${X}`;return o48("sha256",Y).update(J).digest("hex")}function t48($,Z,Q,X,Y){let J=Math.floor(Date.now()/1000)+X,G=qh6(Z,Q,J,Y),W=new URL(`/api/dev-assets/${Z}/${e48(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",Y),W.toString()}function $68($,Z,Q){let X=`${$}:${Z.getTime()}:${Q}`;return`"${o48("md5","etag").update(X).digest("hex")}"`}async function Z68($,Z,Q,X,Y){try{let J=await Ah6($,{withFileTypes:!0});for(let G of J){let W=MF1($,G.name),H=Th6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(X){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Z68(W,Z,Q,X,Y);else if(G.isFile()){if(X&&Q){let F=H.slice(Q.length);if(F.includes(X)){let U=F.indexOf(X),N=Q+F.slice(0,U+1);Y.commonPrefixes.add(N);continue}}try{let F=await r48(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:$68(W,F.mtime,F.size)})}catch{}}}}catch{}}function Q68($,Z){let X=K0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:t$.object({prefix:t$.string().optional(),maxKeys:t$.number().optional().default(1000),continuationToken:t$.string().optional(),delimiter:t$.string().optional()}),outputSchema:t$.object({objects:t$.array(t$.object({key:t$.string(),size:t$.number(),lastModified:t$.string(),etag:t$.string()})),nextContinuationToken:t$.string().optional(),isTruncated:t$.boolean(),commonPrefixes:t$.array(t$.string()).optional()}),handler:async(Y)=>{let J=Y,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=s48(X);await Ph6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Z68(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:t$.object({key:t$.string()}),outputSchema:t$.object({contentType:t$.string().optional(),contentLength:t$.number(),lastModified:t$.string(),etag:t$.string(),metadata:t$.record(t$.string(),t$.string()).optional()}),handler:async(Y)=>{let J=Y,G=qF1(X,J.key),W=await r48(G);return{contentType:XK1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:$68(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:t$.object({key:t$.string(),expiresIn:t$.number().optional()}),outputSchema:t$.object({url:t$.string(),expiresIn:t$.number()}),handler:async(Y)=>{let J=Y,G=J.expiresIn??n48;return{url:t48(Z,X,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:t$.object({key:t$.string(),expiresIn:t$.number().optional(),contentType:t$.string().optional()}),outputSchema:t$.object({url:t$.string(),expiresIn:t$.number()}),handler:async(Y)=>{let J=Y,G=J.expiresIn??n48;return{url:t48(Z,X,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:t$.object({key:t$.string()}),outputSchema:t$.object({success:t$.boolean(),key:t$.string()}),handler:async(Y)=>{let J=Y,G=qF1(X,J.key);try{return await p48(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:t$.object({keys:t$.array(t$.string()).max(1000)}),outputSchema:t$.object({deleted:t$.array(t$.string()),errors:t$.array(t$.object({key:t$.string(),message:t$.string()}))}),handler:async(Y)=>{let J=Y,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=qF1(X,K);try{await p48(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function IF1($,Z,Q){let X=Q68(Z,Q),Y=new GL({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:DZ});for(let G of X){let W="shape"in G.inputSchema?G.inputSchema.shape:t$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:t$.object({}).shape;Y.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 dG({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(J),DW(Y,J,$,"mcp:dev-assets")}async function X68($,Z,Q,X){let J=Q68(Q,X).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 Rh6="./data/assets",n48=3600,a48,Y68;var J68=D(()=>{U$();Ld();X8();OX0();Dd();uY();OV0();a48=new X1;a48.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),X=`${Q.protocol}//${Q.host}`;return IF1($.req.raw,Z,X)});Y68=a48});var G68={};E6(G68,{mountDevRoutes:()=>Mh6});function Mh6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`;return IF1(X.req.raw,Y,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(X)=>{let Y=X.get("studioContext"),J=new URL(X.req.url),G=`${J.protocol}//${J.host}`,W=X.req.param("toolName");if(!W)return X.json({error:"Missing tool name"},400);let K=await X.req.json(),H=await X68(W,K,Y,G);if(H.isError)return X.json(H.content,500);return X.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Y68);let Q=new X1;Q.use("*",UH({mountPath:"/api/dev-assets"})),Q.route("/",BV0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var W68=D(()=>{X8();rW1();OV0();J68()});var w68={};E6(w68,{watchHandler:()=>L68,resolveCorsOrigin:()=>O68,isSsoExemptPath:()=>N68,isAllowedOAuthRedirectUri:()=>D68,createApp:()=>fh6});import{readFileSync as Ih6}from"fs";import{PrometheusSerializer as Vh6}from"@opentelemetry/exporter-prometheus";import{DBOS as jO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as Ch6,oAuthProtectedResourceMetadata as _h6}from"better-auth/plugins";async function kh6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,H68(K68)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),H68(K68)]),Q.release(),!0}catch{return Q.release(!0),!1}}function H68($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function N68($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${eI0}/`)||$.startsWith(`${tI0}/`)}function B68($){return $==="local.studio.decocms.com"}function O68($,{baseUrl:Z,requestOrigin:Q}){let X;try{X=new URL($).hostname}catch{return null}if(X==="localhost"||X==="127.0.0.1")return $;if(B68(X))return $;let Y=Z??Q;try{if(new URL(Y).origin===$)return $}catch{}return null}function D68($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||B68($.hostname)}async function fh6($={}){let Z=$.database??I8(),Q=!1;K9.stop().catch((Z0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Z0)});let X,Y,J,G,W=new UF1,K,H,F,U=null;if($.disableNats)K=NF1(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=null,J=null,G=new N10,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Z0)=>{return(async()=>{let L0=Z0.getReader();try{while(!0){let{done:a}=await L0.read();if(a)break}}catch{}finally{L0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=j48();let Z0=E0().natsCredsPath,L0;if(Z0)try{L0=Ih6(Z0,"utf8")}catch(f0){console.error(`[app] failed to read NATS_CREDS at ${Z0}; connecting anonymously`,f0)}U.init(E0().natsUrls,L0?{creds:L0}:void 0);let a=He0()?new ps0({getJetStream:()=>U.getJetStream()}):null;a?.init().catch(()=>{}),X=a;let i=new Y41({getJetStream:()=>U.getJetStream()});i.init().catch(()=>{}),Y=i;let m0=new qx(d51,{getJetStream:()=>U.getJetStream()}),V0=new qx(S00,{getJetStream:()=>U.getJetStream()});m0.init().catch(()=>{}),V0.init().catch(()=>{}),J={reads:m0,cards:V0};let o0=new z71({getJetStream:()=>U.getJetStream()});o0.init().catch(()=>{}),G=o0,K=NF1({getConnection:()=>U.getConnection()}),H=new BF1({getConnection:()=>U.getConnection()}),F=new LF1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),Rr$(U),U.onReady(()=>{a?.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)}),V0.init().catch((f0)=>{console.error("[PrCardCache] Deferred init failed:",f0)}),o0.init().catch((f0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",f0)}),K.start(),SW$(()=>U.getConnection()),F.init().catch((f0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",f0)})})}if(tj)await tj();ns0(X),G41(Y),m51(J),P71(G);let B={storage:new gg(Z.db),sseHub:K9,onThreadFinished:async(Z0,L0)=>sc(new yG(Z.db),Z0,L0,new QG(Z.db))},O=new QZ1(B),L=new C$0(Z.db),w=new wF1(L);w.start(),JC$(H),H.start((Z0)=>{B20(Z0),O.execute({type:"CANCEL",taskId:Z0}).catch((L0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",L0)})}).catch((Z0)=>{console.error("[Decopilot] CancelBroadcast start failed:",Z0)}),U?.onReady(()=>{H.start().catch((Z0)=>{console.error("[CancelBroadcast] Deferred start failed:",Z0)})});let j=()=>U?.getConnection()??null;pW1(j),U?.onReady(()=>pW1(j)),e71(j),U?.onReady(()=>e71(j)),F.init().catch((Z0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Z0)}),tj=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),xa$(),F.teardown(),X?.teardown(),Y?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),CW$(),G.teardown(),ns0(null),G41(null),m51(null),P71(null)};let E=new X1;if(E.use("*",w71({enabled:(Z0)=>zm(Z0,"debug")==="1"})),E.use("*",pk0),E.use("/*",Er$({origin:(Z0,L0)=>O68(Z0,{baseUrl:E0().baseUrl,requestOrigin:new URL(L0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(Z0,L0)=>{if(await L0(),Z0.req.path.includes("/files/"))return;if(Z0.req.path.includes("/fs/")&&Z0.req.path.endsWith("/read"))return;Z0.header("X-Frame-Options","DENY"),Z0.header("Content-Security-Policy","frame-ancestors 'none'")}),!E0().noTui)E.use("*",m48());E.use("*",async(Z0,L0)=>{if(await L0(),Hi(Z0.req.path))return;if(Z0.res.status>=500){let i=await Z0.res.clone().text();console.error(`[5xx Response] ${Z0.req.method} ${Z0.req.path} - ${Z0.res.status}:`,i)}}),E.get(_X.HEALTH,(Z0)=>{if(Q)return Z0.json({status:"shutting_down"},503);return Z0.json({status:"ok"})}),E.get(_X.HEALTH_LIVE,(Z0)=>{return Z0.json({status:"ok"})}),E.get(_X.HEALTH_READY,async(Z0)=>{if(Q)return Z0.json({status:"shutting_down"},503);let L0={};if(L0.postgres={status:await kh6(Z.pool)?"up":"down"},U)L0.nats=U.isConnected()?{status:"up"}:{status:"down"};else L0.nats={status:"down"};let a=L0.postgres.status==="up",i=a?200:503;return Z0.json({status:a?"ready":"not_ready",services:L0},i)}),E.get(_X.METRICS,async(Z0)=>{try{let L0=await rk0.collect(),a=Sh6.serialize(L0.resourceMetrics);return Z0.text(a,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(L0){return console.error("Failed to collect metrics:",L0),Z0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${_X.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Z0)=>{let L0=Z0.req.param("queueName");if(!vh6.has(L0))return Z0.json({error:`Unknown queue: ${L0}`},404);let[a,i]=await Promise.all([jO.listQueuedWorkflows({queueName:L0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),jO.listQueuedWorkflows({queueName:L0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Z0.json({queue_length:a.length,in_flight:i.length})}),E.route("/api/config",I88),E.route("/api/_reports",g88),E.route("/api/_stripe",WF1),E.route("/api/_github",l88({taskBoard:()=>n,contextFactory:()=>y})),E.route("/api/_git",Vm);let T={db:Z.db,encryptionKey:E0().encryptionKey};E.route("/api/_jira",i88(T)),E.route("/api/_jira",d88(T)),E.route("/report",x88($.clientDir)),E.route("/api/auth/custom",mr$),E.route("/api/auth/desktop",tr$),E.all("/api/auth/admin/*",Pa$),E.all("/api/auth/*",async(Z0)=>{return await V8.handler(Z0.req.raw)});let P=at$();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",i$0),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",i$0),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",I$0),E.route("/",Qo$()),E.use("/oauth-proxy/:connectionId/*",i$0),E.all("/oauth-proxy/:connectionId/*",F68);let A=async(Z0)=>{let a=await bh6()(Z0.req.raw),i=await a.json();return Response.json(i,a)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",i$0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(Z0)=>{let a=await xh6()(Z0.req.raw),i=await a.json();return Response.json(i,a)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let x=Pr$({ttlMs:120000}),C=await po$({db:Z.db,auth:V8,encryption:{key:E0().encryptionKey},observability:{tracer:IO,meter:z$},modelListCache:W,providerKeyCache:K,memberRoleCache:x});IQ.set(C),Rl1({db:Z.db,baseUrl:S5()}),no$({db:Z.db}),ao$({db:Z.db}),Jr$({db:Z.db}),t88({db:Z.db,encryptionKey:E0().encryptionKey}),fM$({db:Z.db}),Ur$({db:Z.db}),JI$({db:Z.db});let V=XQ0(Z.db),g=new ut(Z.db),y=u48({db:Z.db});B71({storage:V,studioContextFactory:y}),NZ1({systemDatabaseUrl:Nt0(E0().databaseUrl,E0().databasePgSsl),studioContextFactory:y,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:K9}}),JZ1({dispatchRunFn:ok$,studioContextFactory:y,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:K9}});let u=new gg(Z.db),n=new yG(Z.db),p=new QG(Z.db),F0=new jF1(n,y,p);if(E0().taskBoardReviewSweeperEnabled){F0.start();let Z0=tj;tj=async()=>{await Z0?.(),F0.dispose()}}LS$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Z0=U?.getConnection();return Z0?await U68.jetstreamManager(Z0):null},messageParts:u.messageParts(),resolveRun:async(Z0)=>{let L0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Z0).executeTakeFirst();return L0?{orgId:L0.organization_id,createdBy:L0.created_by,version:L0.message_storage_version??1,status:L0.status,runFenceToken:L0.run_fence_token,title:L0.title??null}:null},completeRunIfNotCompleted:async(Z0,L0)=>{let a=await u.completeRunIfNotCompleted(Z0,L0);if(Pk0(K9,L0,Z0,a),a)await sc(n,Z0,L0,p);return a},markRunRequiresAction:async(Z0,L0)=>{let a=await u.requiresActionIfInProgress(Z0,L0);return Pk0(K9,L0,Z0,a),a},markRunFailed:async(Z0,L0,a,i)=>{let m0=await u.markRunFailed(Z0,L0,a,i);if(Pk0(K9,L0,Z0,m0),m0)await sc(n,Z0,L0,p);return m0},clearSynthesizedError:async(Z0,L0)=>{await u.messageParts().replaceMessageParts(Z0,Bj(Z0,L0),[])},persistTitle:(Z0,L0,a)=>u.update(Z0,L0,{title:a}),onTitleUpdated:async({runId:Z0,orgId:L0,title:a})=>{let i=await u.get(Z0,L0).catch(()=>null);K9.emit(L0,bH(Z0,i?.status??"in_progress",{title:a,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:Z0,orgId:L0})=>{await u.bumpProgress(Z0,L0)},recordCompleted:async({runId:Z0,orgId:L0,distinctId:a,usage:i})=>{y1.capture({distinctId:a,event:"chat_message_completed",groups:{organization:L0},properties:{organization_id:L0,thread_id:Z0,transport:"projector",input_tokens:i.inputTokens,output_tokens:i.outputTokens,total_tokens:i.totalTokens}})},recordFailed:async({runId:Z0,orgId:L0,distinctId:a,reason:i,kind:m0})=>{y1.capture({distinctId:a,event:"chat_message_failed",groups:{organization:L0},properties:{organization_id:L0,thread_id:Z0,transport:"projector",error_category:m0,error_message:i}})},purgeRun:async(Z0)=>{F.purge(Z0)}}),Pk$({studioContextFactory:y,systemDatabaseUrl:Nt0(E0().databaseUrl,E0().databasePgSsl),streamBuffer:F}),g48(),ql1(),oo$(),eo$(),Wr$(),a88(),lM$(),Br$(),GI$();let I0=async(Z0,L0,a)=>{let i=await V.findById(Z0,L0);if(!i)throw Error("Automation not found");return L71({automationId:i.id,organizationId:i.organization_id,triggerId:null})},G0=new Mm(V,({automation:Z0,trigger:L0,contextMessages:a,idempotencyKey:i})=>U10({automationId:Z0.id,organizationId:Z0.organization_id,triggerId:L0.id,contextMessages:a},{idempotencyKey:i})),H0=[VW(),sf(),yU()];for(let Z0 of H0)Rk0(Z0).then(()=>{}).catch((L0)=>console.error("[monitoring] Retention cleanup failed:",L0));let Y0=()=>V8.api.deleteAllExpiredApiKeys().catch((Z0)=>console.error("[auth] Expired API key cleanup failed:",Z0));Y0(),setInterval(Y0,86400000).unref(),E.use("*",async(Z0,L0)=>{if(mk0(Z0.req.path))return L0();let a={measure:async(m0,V0)=>{OW(Z0,m0);try{return await V0()}finally{mG(Z0,m0)}}},i=await IQ.create(Z0.req.raw,{timings:a});i.automationRunner=I0,Z0.set("studioContext",i);try{await L0()}finally{let m0=i.pendingRevalidations;if(m0.length>0)Promise.race([Promise.allSettled(m0),c$(30000)]).catch((o0)=>console.error("[studio] revalidation cleanup error:",o0))}}),E.use("/api/:org/decopilot/*",Am),E.use("/api/:org/v1/*",Am),E.use("/api/:org/files/*",Am),E.use("*",async(Z0,L0)=>{if(N68(Z0.req.path))return L0();let a=Z0.get("studioContext");if(!a?.organization?.id||!a?.auth?.user?.id)return L0();if(!(await a.storage.orgSsoConfig.getByOrgId(a.organization.id))?.enforced)return L0();if(!await a.storage.orgSsoSessions.isValid(a.auth.user.id,a.organization.id))return Z0.json({error:"SSO authentication required for this organization"},403);return L0()});let $0=new X1;$0.use("*",UH({mountPath:"/api/org-sso"})),$0.route("/",QV0()),E.route("/api/org-sso",$0),E.get("/api/tools/management",(Z0)=>{return Z0.json({tools:nm0,grouped:uz()})}),E.use("/mcp/*",async(Z0,L0)=>{OW(Z0,"mcp");try{return await L0()}finally{mG(Z0,"mcp")}});let X0=async(Z0,L0)=>{let a=Z0.var.studioContext;if(!a.auth.user?.id&&!a.auth.apiKey?.id){let i=new URL(Z0.req.url),m0=Z0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),V0=m0?`${m0}://${i.host}`:i.origin;return Z0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${V0}${i.pathname}/.well-known/oauth-protected-resource"`}})}return await L0()};if(E.use("/mcp/:connectionId?",X0),E.use("/mcp/gateway/:virtualMcpId?",X0),E.use("/mcp/virtual-mcp/:virtualMcpId?",X0),E.use("/mcp/self",X0),p3()){let{mountDevRoutes:Z0}=(W68(),_k0(G68));Z0(E,X0)}let e=new X1;e.use("*",UH({mountPath:"/mcp"})),e.route("/",XR0()),E.route("/mcp",e);let J0=new X1;J0.use("*",UH({mountPath:"/mcp/self"})),J0.route("/",iV0()),E.route("/mcp/self",J0);let d0=new X1;d0.use("*",UH({mountPath:"/mcp"})),d0.route("/",GR0()),E.route("/mcp",d0),E.use("/api/:org/models/*",async(Z0,L0)=>{OW(Z0,"llm_models");try{return await L0()}finally{mG(Z0,"llm_models")}});let k0=ya$({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",k0),E.route("/api",Z48);let E1=new X1;E1.use("*",UH({mountPath:"/api"})),E1.route("/",oV0()),E.route("/api",E1),E.route("/api",z88);let u0=new X1;u0.use("*",UH({mountPath:"/api"})),u0.route("/",rV0({tokenStorage:g,automationEventDispatcher:G0})),E.route("/api",u0);let w0=new ct(Z.db),j0=new X1;j0.use("*",UH({mountPath:"/api"})),j0.route("/",WV0()),E.route("/api",j0),E.route("/api/deco-sites",aa$()),E.route("/api/deco-apps",O88());let e0=new X1;e0.use("*",UH({mountPath:"/api/deco-sites"})),e0.route("/",HV0()),E.route("/api/deco-sites",e0),E.route(eI0,Aa$()),E.route(k18,_18()),E.route("/api/_editor-resolve",A88()),E.route(rr$,ar$()),E.route(tI0,Wa$());let A1=N88({kvStorage:w0,runRegistry:O,streamBuffer:F,sseHub:K9,cancelBroadcast:H,tokenStorage:g,automationEventDispatcher:G0,mountDevAssets:p3(),mcpAuth:X0,oauthProxyHandler:F68,watchHandler:L68,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",A1),E.notFound((Z0)=>{return Z0.json({error:"Not Found",path:Z0.req.path},404)}),E.onError(ua$),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([K9.stop(),tj?Promise.resolve(tj()).finally(()=>{tj=null}):Promise.resolve()]),U)await U.drain().catch((Z0)=>console.error("[shutdown] NATS drain error:",Z0));console.log("[shutdown] Flushing telemetry..."),await RY().catch((Z0)=>console.error("[shutdown] Telemetry flush error:",Z0)),console.log("[shutdown] Closing database..."),await E8$(Z).catch((Z0)=>console.error("[shutdown] Database close error:",Z0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await jO.registerQueue($3,{partitionQueue:!0,concurrency:F71,minPollingIntervalMs:U71}),await jO.registerQueue(eG,{partitionQueue:!0,concurrency:FZ1,priorityEnabled:!0}),await jO.registerQueue(xU,{workerConcurrency:E0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await jO.registerQueue(fU,{workerConcurrency:E0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await jO.registerQueue(qO,{partitionQueue:!0,concurrency:zk$}),await jO.registerQueue(ej,YI$),await aW1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Z0)=>jO.deleteQueue(Z0))),await N71(Z.pool),h5$().catch((Z0)=>{console.error("[studio-pack-backfill] failed:",Z0)}),Ml1().catch((Z0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Z0)})}})}var U68,K68=5000,tj=null,F68=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),X=Q[Q.length-1],Y=$.get("studioContext");if(!Y)Y=await IQ.create($.req.raw),$.set("studioContext",Y);let J=$.req.param("org")?Y.organization?.id:void 0,G=await Y.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(X==="register"&&G.oauth_config?.clientId){let g=await $.req.json().catch(()=>({}));return $.json({...typeof g==="object"&&g!==null?g:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await Lm(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 V$0(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(X==="authorize")O=B.authorization_endpoint;else if(X==="token")O=B.token_endpoint;else if(X==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let L=Zo$(O);if(L)return L;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,X==="authorize"){let g=w.searchParams.get("redirect_uri");if(g){let y=E0().baseUrl??j.origin;try{if(!D68(new URL(g),y))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",g)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(Dr$(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(X==="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 I0=decodeURIComponent(p.slice(0,F0)),G0=decodeURIComponent(p.slice(F0+1));A=I0||null,q=G0||null}}catch{}let g=await $.req.formData();if(g.has("resource"))g.set("resource",U);let y=g.get("client_id"),u=g.get("client_secret");if(typeof y==="string"&&y)A=y;if(typeof u==="string"&&u)q=u;let n=new URLSearchParams;for(let[p,F0]of g.entries())n.append(p,F0.toString());P=n.toString()}else if(X==="register"&&z?.toLowerCase().includes("application/json")){let g=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),y=await $.req.text(),u={};try{u=y?JSON.parse(y):{}}catch{P=y}let n=typeof u==="object"&&u!==null&&!Array.isArray(u);if(P===void 0&&!n)P=y;if(P===void 0){let p=u,F0=p.metadata&&typeof p.metadata==="object"?p.metadata:{};p.metadata={...F0,organization_id:G.organization_id,...g?.slug?{organization_slug:g.slug}:{},...g?.name?{organization_name:g.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"}),C=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[g,y]of x.headers.entries())if(!V.includes(g.toLowerCase()))C.set(g,y);if(X==="token"&&x.ok){let g=await x.text();try{let y=JSON.parse(g);if(typeof y.access_token==="string"&&y.access_token){let u=typeof y.expires_in==="number"?new Date(Date.now()+y.expires_in*1000):null,n=null;try{n=await wm(G.connection_url)??O}catch{n=O}let p={connectionId:Z,accessToken:y.access_token,refreshToken:typeof y.refresh_token==="string"?y.refresh_token:null,scope:typeof y.scope==="string"?y.scope:null,expiresAt:u,clientId:A,clientSecret:q,tokenEndpoint:n};await new Y9(Y.db,Y.vault).upsert(p)}}catch(y){console.error("[oauth-proxy] failed to persist downstream token:",y)}return new Response(g,{status:x.status,statusText:x.statusText,headers:C})}return new Response(x.body,{status:x.status,statusText:x.statusText,headers:C})},L68=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),J=Y?Y.split(",").map((W)=>W.trim()).filter(Boolean):null,G=crypto.randomUUID();return OO($,async(W)=>{if(await W.writeSSE({event:"connected",data:JSON.stringify({listenerId:G,organizationId:X,typePatterns:J,connectedAt:new Date().toISOString()})}),!K9.add({id:G,organizationId:X,typePatterns:J?.length?J:null,push:(F)=>{W.writeSSE({id:F.id,event:F.type,data:JSON.stringify(F)}).catch(()=>{K9.remove(X,G)})}})){await W.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{W.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((F)=>{W.onAbort(()=>{clearInterval(H),K9.remove(X,G),F()})})})},Sh6,vh6,bh6=()=>_h6(V8),xh6=()=>Ch6(V8);var j68=D(()=>{D8();U$();Il1();ro$();$r$();Kr$();w10();M51();Or$();k00();D9();Vl();r8();X8();dI0();zr$();j71();qG();vF();AW1();S3();R6();W6();kW1();or$();sr$();Ka$();xW1();Ta$();dW1();ga$();oW1();_K();MI0();rW1();la$();iI0();B88();$K1();D88();YR0();B10();P88();WR0();kH1();T88();IH1();V88();f88();h88();u88();c88();m88();p88();s88();JK1();Q48();VH1();RH1();n80();E48();XJ();WA0();p51();Fs();Ns();T71();z48();A48();nW1();k48();XZ1();S48();Tn();mt();lB();R9();c31();x48();h48();lY0();EF1();Z3();sW1();uB();$Z1();lY0();T20();xm0();fm0();l48();hh();i48();mm();AW1();Wd();O20();U68=_(mU(),1);Sh6=new Vh6,vh6=new Set([$3,eG,xU,fU,qO,ej])});var A68={};E6(A68,{resolveClientDir:()=>dh6,resolveAssetPathWithTraversalCheck:()=>P68,isPathWithinDirectory:()=>z68,createAssetHandler:()=>mh6});import{resolve as _80,dirname as yh6,join as gh6,extname as hh6,basename as uh6,sep as E68}from"path";function lh6($,Z){if($===Z||uh6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${E68}assets${E68}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function z68($,Z){let Q=_80(Z),X=_80($);return X===Q||X.startsWith(Q+"/")}function P68({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,X=_80(Z,Q);if(!z68(X,Z))return null;return X}function dh6($,Z="../client"){let Q=new URL($),X=yh6(Q.pathname);return _80(X,Z)}function mh6($={}){let{env:Z="production",clientDir:Q=ch6,isServerPath:X=()=>!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(X(W))return null;let K=P68({requestPath:W,clientDir:Q});if(!K)return null;let H=gh6(K,"index.html"),F=_80(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(hh6(K))?[H,F]:[];for(let O of[K,...B])try{let L=Bun.file(O);if(await L.exists())return new Response(L,{headers:lh6(O,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var ch6="./dist/client";var T68=()=>{};var R68={};E6(R68,{tryUpgradePreviewWs:()=>ah6,tryHandlePreviewHttp:()=>rh6,previewWebSocketHandler:()=>sh6,parsePreviewBaseDomain:()=>oh6,isPreviewWsData:()=>qk0,extractHandleFromHost:()=>VF1});function nh6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function th6(){return new Response(ph6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function oh6($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let X=Q.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function VF1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),X=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(J))return null;let G=X.slice(0,X.length-J.length);if(!G||G.includes("."))return null;return G}async function rh6($,Z){let Q=VF1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let X=await Z.getRunner();if(!X)return b80(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(Q,$);if(Y.headers.get(eb)&&nh6($))return th6();return Y.headers.delete(eb),Y}function b80($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function qk0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function ah6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=VF1($.headers.get("host"),Q.baseDomain);if(!X)return null;let Y=await Q.getRunner();if(!Y)return b80(503,"preview proxy not configured");let J=await Y.resolvePreviewUpstreamUrl(X);if(!J)return b80(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return b80(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 b80(426,"upgrade failed");return}function v80($,Z,Q,X){if(Z.closed)return;Z.closed=!0;try{$.close(Q,X)}catch{}try{Z.upstream?.close()}catch{}}var ih6=256,ph6='<!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>',sh6;var q68=D(()=>{g81();sh6={open($){let Z=$.data;if(!qk0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),v80($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)Q.send(X)}}),Q.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),Q.addEventListener("close",(X)=>{v80($,Z,X.code||1000,X.reason||"")}),Q.addEventListener("error",()=>{v80($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!qk0(Q))return;let X=Q.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(Q.pending.length>=ih6){v80($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!qk0(Z))return;v80($,Z,1000,"")}}});var k68={};E6(k68,{printBanner:()=>$u6,bannerLines:()=>V68,BANNER_LINES:()=>M68,BANNER_GRADIENT:()=>I68});function eh6($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function V68($){let Z=M68.map((Q,X)=>{let[Y,J,G]=eh6(I68[X]);return`\x1B[38;2;${Y};${J};${G}m${Q}\x1B[39m`});if($!==void 0)Z.push(`\x1B[2m v${$}\x1B[22m`);return Z}function $u6($){console.log("");for(let Z of V68($))console.log(Z);console.log("")}var M68,I68;var S68=D(()=>{M68=[" \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 "],I68=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});D8();var lF1="13";function cF1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:lF1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}D8();import t68 from"pg";var dF1=8314027461559302n,o68=600000,r68=500;async function mF1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=o68}=$,Y=$.log??((K)=>console.log(K)),J=new t68.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",[dF1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await c$(r68)}let K=Date.now()-G;if(K>1000)Y(`[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)",[dF1.toString()])}catch{}await J.end().catch(()=>{})}}U$();fk0();R6();function t58(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function ek0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function IU1(){let $=t58();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:ek0($,"--cpu-prof-dir")??process.cwd(),name:ek0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(ek0($,"--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.'}))}QS0();var r80;function fU1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=QE();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);X={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,...X}))};return Z().catch(()=>{}),r80=setInterval(()=>void Z().catch(()=>{}),$),r80.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(r80)clearInterval(r80)}}import*as a58 from"bun:jsc";var{startSamplingProfiler:s58,samplingProfilerStackTraces:e58}=a58;function yU1(){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{s58()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let W=[];try{W=e58()?.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(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function gU1(){IU1();let $=[fU1(),xU1(),yU1()];return()=>{for(let Z of $)Z()}}import{existsSync as Ku6}from"fs";var vJ=E0();RU1();var{DBOS:x80,DBOSClient:Zu6}=await import("@dbos-inc/dbos-sdk");function bF1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var Qu6=[$3,eG,xU,fU,qO,ej],Xu6=vJ.dispatchRole==="worker"?Qu6:vJ.dispatchRole==="api"?[]:void 0;x80.setConfig(cF1({systemDatabaseUrl:bF1(vJ.databaseUrl,vJ.databasePgSsl),poolSize:vJ.dbosPoolSize,executorID:vJ.podName,listenQueues:Xu6}));var{createApp:Yu6}=await Promise.resolve().then(() => (j68(),w68)),{isServerPath:Ju6}=await Promise.resolve().then(() => (n80(),WU1)),{createAssetHandler:Gu6,resolveClientDir:x68}=await Promise.resolve().then(() => (T68(),A68)),Wu6=vJ.port,C68=x68(import.meta.url,"../client"),f68=Ku6(C68)?C68:x68(import.meta.url,"../dist/client"),Hu6=Gu6({clientDir:f68,isServerPath:Ju6}),Fu6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function Uu6($){let Z=new Headers($.headers);for(let[Q,X]of Object.entries(Fu6))Z.set(Q,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:Nu6,tryHandlePreviewHttp:Bu6,tryUpgradePreviewWs:Ou6,previewWebSocketHandler:kF1,isPreviewWsData:SF1}=await Promise.resolve().then(() => (q68(),R68)),{getOrInitSharedRunner:y68}=await Promise.resolve().then(() => (dK(),jj$)),g68=Nu6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),_68={baseDomain:g68??"",getRunner:y68};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())y68().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Mk0=await Yu6({clientDir:f68}),CF1=process.env.DBOS_CONDUCTOR_KEY?.trim(),v68=process.env.DBOS_CONDUCTOR_URL?.trim();await mF1({databaseUrl:bF1(vJ.databaseUrl,vJ.databasePgSsl)},()=>x80.launch({...CF1?{conductorKey:CF1}:{},...CF1&&v68?{conductorURL:v68}:{}}));console.log(`[dbos] application version: ${x80.applicationVersion}`);var _F1=5,vF1=0;await c8(async()=>{vF1++;try{return await Mk0.initDbos()}catch($){let Z=vF1>=_F1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${vF1}/${_F1} failed, ${Z}`,$),$}},{maxAttempts:_F1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!vJ.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (S68(),k68));console.log("");for(let Z of $())console.log(Z)}var Du6=Bun.serve({idleTimeout:0,port:Wu6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(g68){let X=await Ou6($,Z,_68);if(X===void 0)return;if(X)return X;let Y=await Bu6($,_68);if(Y)return Y}let Q=await Hu6($);if(Q)return Uu6(Q);return Mk0.fetch($,{server:Z})},websocket:{open($){if(SF1($.data))kF1.open($)},message($,Z){if(SF1($.data))kF1.message($,Z)},close($){if(SF1($.data))kF1.close($)}},development:!1}),Lu6=gU1();if(vJ.localMode)Promise.resolve().then(() => (Vx(),Z20)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let X=await Q();if(X>0)console.log(`[local-mode] cleared ${X} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let Y=await $()}catch(X){console.error("Failed to seed local mode:",X)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Vx(),Z20));Z()}catch{}});var b68=!1;async function wu6($){let Z;try{Z=await Zu6.create({systemDatabaseUrl:bF1(vJ.databaseUrl,vJ.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:eG,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=Q.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:eG}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function Ik0($){if(b68)return;b68=!0,console.log(`
|
|
3371
3371
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),X=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);X.unref?.();let Y=0;try{Lu6(),Mk0.markShuttingDown();let J=pF1(vJ.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await c$(J),await Du6.stop(!0);let G=x80.executorID;await x80.shutdown(),await wu6(G),await Mk0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),Y=1}clearTimeout(X),process.exit(Y)}process.on("SIGTERM",()=>Ik0("SIGTERM"));process.on("SIGINT",()=>Ik0("SIGINT"));process.on("SIGHUP",()=>Ik0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Ik0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,X as u}from"./index-BAapFbe2.js";import{C as f}from"./index-B7GL4T3s.js";import{a as x}from"./thread-route-DzikZYAw.js";import{u as g}from"./use-task-metadata-C1HouM2C.js";import{AppViewContent as h}from"./project-app-view-CHcKPRDA.js";import"./use-mobile-DWQkI95Z.js";import"./thread-button-CzURbLWN.js";import"./sidebar-BmzAAju0.js";import"./LayoutLeft-CrgY-WKP.js";import"./sheet-D23AwszF.js";import"./X-D8a2dmsp.js";import"./tooltip-BC1jLEAQ.js";import"./index-DmugW6Fl.js";import"./use-panel-navigate-Be6EXaPj.js";import"./use-project-scope-PsXh1A1b.js";import"./use-virtual-mcp-czGE7SoH.js";import"./use-mcp-client-kZnw8HgS.js";import"./auth-CLoDRqAO.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-CpD6yFxm.js";import"./hooks-BoaYr_vK.js";import"./backoff-8mStPHYB.js";import"./task-board-CAjO4bj3.js";import"./schema-Jq5MXk04.js";import"./agent-icon-C-E2XJuH.js";import"./AlertCircle-DNjCJaw9.js";import"./Tool01-DyymdC9X.js";import"./ArrowUp-qfzf92nQ.js";import"./ArrowLeft-L61r1krv.js";import"./ArrowRight-C3E9kVsb.js";import"./XCircle-8R94lFld.js";import"./ZoomOut-CWR90uz1.js";import"./Globe04-BOSJOQot.js";import"./CheckCircle-DpFvGX-5.js";import"./Check-DP-CHdI6.js";import"./ChevronUp-Ua6deRg2.js";import"./UserSquare-DCQBpNp5.js";import"./Copy01-BQ3K3O5D.js";import"./CreditCard01-WNRApK4e.js";import"./DotsVertical-BItsKK3f.js";import"./Download01-DlkHUmQb.js";import"./Eye-BnU6ieaC.js";import"./Share07-D9dJtUvB.js";import"./XClose-SoQ81CSR.js";import"./Image01-DfqOyQ0u.js";import"./Key01-1Bl-oF6l.js";import"./Link01-B0-YniQQ.js";import"./LinkExternal01-y5qYgT4b.js";import"./Monitor01-ClW6q7DI.js";import"./Sun-CChz5v1R.js";import"./Package-DvkIeVYn.js";import"./Palette-CiP5jc-d.js";import"./Plus-CDiVd_em.js";import"./SearchLg-BManX7Dp.js";import"./SearchMd-Bx2PwRp_.js";import"./Stars01-DVJooTjR.js";import"./Trash01-BPbJ_e3R.js";import"./Upload01-oh36XtxE.js";import"./User01-C5Oan3g_.js";import"./Users01-Cgt2tOZS.js";import"./Zap-BeJnPrTB.js";import"./toolbar-icon-button-D_b-PxZY.js";import"./use-in-settings-NIJJ8Aja.js";import"./shell-layout-BhvjZZGE.js";import"./avatar-Bdx-u6ND.js";import"./download-app-dialog-D8D6jmnK.js";import"./dialog-CX8gq7aP.js";import"./command-BOXkt1QJ.js";import"./index-CECVu6kb.js";import"./integration-icon-D2o9P00_.js";import"./project-icon-D1phbtgJ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-COnVc4-c.js";import"./autosend-C9pVeWI-.js";import"./use-org-sso-ykn415MO.js";import"./resizable-CmeolPd5.js";import"./route-page-header-Dj9X4r8B.js";import"./gateway-client-CoIbmfBW.js";import"./tool-namespace-DmnQIdtF.js";import"./use-mcp-tools-NRqClp7g.js";import"./sandbox-lifecycle-context-OfTJZfhC.js";import"./use-session-runtime-CNiorn84.js";import"./thread-intent-Dxz11CKL.js";import"./slugify-CEUa2lfQ.js";import"./chat-context-C8AQ0cJO.js";import"./use-entitlements-pa-iEQCf.js";import"./use-ai-providers-CUO0KTwa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-C6EF1O89.js";import"./use-organization-settings-B49X0qVM.js";import"./sandbox-url-D3mC8qhT.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DCvxs2tp.js";import"./types-DaQSkWc3.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-Dkv2PZ7n.js";import"./companions-core-BnuxEm_5.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-C8GSbvaz.js";import"./form-NsDegBgf.js";import"./label-C9fQ1xp4.js";import"./input-DR7G1WYZ.js";import"./use-debounced-value-DM50Bn8p.js";import"./provision-repo-scoped-github-connection-B6zdkC6p.js";import"./useQueries-CjKXpTIH.js";import"./authenticate-and-persist-oauth-DVAXnjYJ.js";import"./mcp-oauth-cXrAcbF1.js";import"./track-CgL1XxD_.js";import"./extract-connection-data-msqJK0aE.js";import"./connection-jgr5KSCP.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-BAapFbe2.js";import{C as j}from"./index-B7GL4T3s.js";import{F as v,H as S}from"./file-share-button-B39dCWjS.js";import{u as k,b as y,e as _}from"./use-org-fs-Dd2WtHbO.js";import{S as w}from"./settings-tab-D0e39c65.js";import{b as M}from"./thread-route-DzikZYAw.js";import"./use-mobile-DWQkI95Z.js";import"./thread-button-CzURbLWN.js";import"./sidebar-BmzAAju0.js";import"./LayoutLeft-CrgY-WKP.js";import"./sheet-D23AwszF.js";import"./X-D8a2dmsp.js";import"./tooltip-BC1jLEAQ.js";import"./index-DmugW6Fl.js";import"./use-panel-navigate-Be6EXaPj.js";import"./use-project-scope-PsXh1A1b.js";import"./use-virtual-mcp-czGE7SoH.js";import"./use-mcp-client-kZnw8HgS.js";import"./auth-CLoDRqAO.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-CpD6yFxm.js";import"./hooks-BoaYr_vK.js";import"./backoff-8mStPHYB.js";import"./task-board-CAjO4bj3.js";import"./schema-Jq5MXk04.js";import"./agent-icon-C-E2XJuH.js";import"./AlertCircle-DNjCJaw9.js";import"./Tool01-DyymdC9X.js";import"./ArrowUp-qfzf92nQ.js";import"./ArrowLeft-L61r1krv.js";import"./ArrowRight-C3E9kVsb.js";import"./XCircle-8R94lFld.js";import"./ZoomOut-CWR90uz1.js";import"./Globe04-BOSJOQot.js";import"./CheckCircle-DpFvGX-5.js";import"./Check-DP-CHdI6.js";import"./ChevronUp-Ua6deRg2.js";import"./UserSquare-DCQBpNp5.js";import"./Copy01-BQ3K3O5D.js";import"./CreditCard01-WNRApK4e.js";import"./DotsVertical-BItsKK3f.js";import"./Download01-DlkHUmQb.js";import"./Eye-BnU6ieaC.js";import"./Share07-D9dJtUvB.js";import"./XClose-SoQ81CSR.js";import"./Image01-DfqOyQ0u.js";import"./Key01-1Bl-oF6l.js";import"./Link01-B0-YniQQ.js";import"./LinkExternal01-y5qYgT4b.js";import"./Monitor01-ClW6q7DI.js";import"./Sun-CChz5v1R.js";import"./Package-DvkIeVYn.js";import"./Palette-CiP5jc-d.js";import"./Plus-CDiVd_em.js";import"./SearchLg-BManX7Dp.js";import"./SearchMd-Bx2PwRp_.js";import"./Stars01-DVJooTjR.js";import"./Trash01-BPbJ_e3R.js";import"./Upload01-oh36XtxE.js";import"./User01-C5Oan3g_.js";import"./Users01-Cgt2tOZS.js";import"./Zap-BeJnPrTB.js";import"./toolbar-icon-button-D_b-PxZY.js";import"./use-in-settings-NIJJ8Aja.js";import"./shell-layout-BhvjZZGE.js";import"./avatar-Bdx-u6ND.js";import"./download-app-dialog-D8D6jmnK.js";import"./dialog-CX8gq7aP.js";import"./command-BOXkt1QJ.js";import"./index-CECVu6kb.js";import"./integration-icon-D2o9P00_.js";import"./project-icon-D1phbtgJ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-COnVc4-c.js";import"./autosend-C9pVeWI-.js";import"./use-org-sso-ykn415MO.js";import"./resizable-CmeolPd5.js";import"./route-page-header-Dj9X4r8B.js";import"./input-DR7G1WYZ.js";import"./popover-DJaUY8D4.js";import"./scroll-area-Shry09_8.js";import"./select-D1yST9VC.js";import"./breadcrumb-D0PuBCyn.js";import"./extract-connection-data-msqJK0aE.js";import"./metadata-D72DunRR.js";import"./connection-jgr5KSCP.js";import"./chat-context-C8AQ0cJO.js";import"./thread-intent-Dxz11CKL.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-pa-iEQCf.js";import"./use-ai-providers-CUO0KTwa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-C6EF1O89.js";import"./use-organization-settings-B49X0qVM.js";import"./build-improve-prompt-doc-DP8VnPde.js";import"./empty-state-EwV3yk5U.js";import"./use-date-fns-locale-DaA8rf_h.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-CPL-U4ct.js";import"./mcp-oauth-cXrAcbF1.js";import"./alert-dialog-C496y9v4.js";import"./textarea-f3zyr9Dp.js";import"./use-debounced-autosave-Cp5uxLhI.js";import"./add-connection-dialog-CFR48DDR.js";import"./collection-search-B01d0B-E.js";import"./connection-card-hm9RnHlt.js";import"./useInfiniteQuery-DfHEHKh-.js";import"./infiniteQueryObserver-CvmljhSu.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-vtq1SE8Q.js";import"./form-NsDegBgf.js";import"./label-C9fQ1xp4.js";import"./connection-form-helpers-ksULWpjl.js";import"./authenticate-and-persist-oauth-DVAXnjYJ.js";import"./collection-tabs-CuBt_OIS.js";import"./badge-CBY-3mig.js";import"./use-infinite-scroll-_Tbuniz4.js";import"./useSuspenseInfiniteQuery-CBeA8oCN.js";import"./file-type-icon-16UnD-zc.js";import"./checkbox-DjUwOumc.js";import"./search-input-Dsjxl8VM.js";import"./use-mcp-auth-status-NrZYrt1V.js";import"./types-DaQSkWc3.js";import"./use-mcp-tools-NRqClp7g.js";import"./use-mcp-prompts-I-RDxz6U.js";import"./utils-CVEq3hMx.js";import"./switch-Dn9HIU8k.js";import"./use-project-native-view-presence-CseOJAsA.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr5M7ePz.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-DY1ezw_N.js";import"./virtual-mcp-ONYMJry4.js";import"./repository-import-picker-62_4jSRa.js";import"./use-navigate-to-agent-BJpiYuGZ.js";import"./repository-picker--Ahj5eif.js";import"./github-icon-DscXbGEI.js";import"./use-debounced-value-DM50Bn8p.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B9abg7y1.js";import"./use-secrets-DBywjfaf.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-BAapFbe2.js";import{C as M}from"./index-B7GL4T3s.js";import{T as R,a as $,c as A}from"./tooltip-BC1jLEAQ.js";import{n as L}from"./Download01-DlkHUmQb.js";import{n as O}from"./LinkExternal01-y5qYgT4b.js";import{s as V}from"./XClose-SoQ81CSR.js";import{F as E}from"./file-type-icon-16UnD-zc.js";import{a as q,F as D,f as G}from"./file-preview-ZvTm7M8D.js";import{a as H}from"./use-thread-outputs-ThlLVH9X.js";import{a as J}from"./use-panel-navigate-Be6EXaPj.js";import{S as Q}from"./settings-tab-D0e39c65.js";import{b as W,a as X}from"./thread-route-DzikZYAw.js";import"./use-mobile-DWQkI95Z.js";import"./thread-button-CzURbLWN.js";import"./sidebar-BmzAAju0.js";import"./LayoutLeft-CrgY-WKP.js";import"./sheet-D23AwszF.js";import"./X-D8a2dmsp.js";import"./use-route-default-main-CpD6yFxm.js";import"./hooks-BoaYr_vK.js";import"./use-mcp-client-kZnw8HgS.js";import"./auth-CLoDRqAO.js";import"./backoff-8mStPHYB.js";import"./task-board-CAjO4bj3.js";import"./schema-Jq5MXk04.js";import"./agent-icon-C-E2XJuH.js";import"./AlertCircle-DNjCJaw9.js";import"./Tool01-DyymdC9X.js";import"./ArrowUp-qfzf92nQ.js";import"./ArrowLeft-L61r1krv.js";import"./ArrowRight-C3E9kVsb.js";import"./XCircle-8R94lFld.js";import"./ZoomOut-CWR90uz1.js";import"./Globe04-BOSJOQot.js";import"./CheckCircle-DpFvGX-5.js";import"./Check-DP-CHdI6.js";import"./ChevronUp-Ua6deRg2.js";import"./UserSquare-DCQBpNp5.js";import"./Copy01-BQ3K3O5D.js";import"./CreditCard01-WNRApK4e.js";import"./DotsVertical-BItsKK3f.js";import"./Eye-BnU6ieaC.js";import"./Share07-D9dJtUvB.js";import"./Image01-DfqOyQ0u.js";import"./Key01-1Bl-oF6l.js";import"./Link01-B0-YniQQ.js";import"./Monitor01-ClW6q7DI.js";import"./Sun-CChz5v1R.js";import"./Package-DvkIeVYn.js";import"./Palette-CiP5jc-d.js";import"./Plus-CDiVd_em.js";import"./SearchLg-BManX7Dp.js";import"./SearchMd-Bx2PwRp_.js";import"./Stars01-DVJooTjR.js";import"./Trash01-BPbJ_e3R.js";import"./Upload01-oh36XtxE.js";import"./User01-C5Oan3g_.js";import"./Users01-Cgt2tOZS.js";import"./Zap-BeJnPrTB.js";import"./toolbar-icon-button-D_b-PxZY.js";import"./use-in-settings-NIJJ8Aja.js";import"./shell-layout-BhvjZZGE.js";import"./avatar-Bdx-u6ND.js";import"./download-app-dialog-D8D6jmnK.js";import"./dialog-CX8gq7aP.js";import"./use-project-scope-PsXh1A1b.js";import"./use-virtual-mcp-czGE7SoH.js";import"./github-repo-BknN0SVI.js";import"./command-BOXkt1QJ.js";import"./index-CECVu6kb.js";import"./integration-icon-D2o9P00_.js";import"./project-icon-D1phbtgJ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-COnVc4-c.js";import"./autosend-C9pVeWI-.js";import"./use-org-sso-ykn415MO.js";import"./resizable-CmeolPd5.js";import"./route-page-header-Dj9X4r8B.js";import"./index-DmugW6Fl.js";import"./use-org-fs-Dd2WtHbO.js";import"./utils-CJGwkbD3.js";import"./editor-CScGi5Aq.js";import"./markdown-yufMYCPE.js";import"./org-file-open-context-BiqjKxuc.js";import"./chat-context-C8AQ0cJO.js";import"./thread-intent-Dxz11CKL.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-pa-iEQCf.js";import"./use-ai-providers-CUO0KTwa.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-C6EF1O89.js";import"./use-organization-settings-B49X0qVM.js";import"./input-DR7G1WYZ.js";import"./popover-DJaUY8D4.js";import"./scroll-area-Shry09_8.js";import"./select-D1yST9VC.js";import"./breadcrumb-D0PuBCyn.js";import"./extract-connection-data-msqJK0aE.js";import"./metadata-D72DunRR.js";import"./connection-jgr5KSCP.js";import"./build-improve-prompt-doc-DP8VnPde.js";import"./empty-state-EwV3yk5U.js";import"./use-date-fns-locale-DaA8rf_h.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-CPL-U4ct.js";import"./mcp-oauth-cXrAcbF1.js";import"./alert-dialog-C496y9v4.js";import"./textarea-f3zyr9Dp.js";import"./use-debounced-autosave-Cp5uxLhI.js";import"./add-connection-dialog-CFR48DDR.js";import"./collection-search-B01d0B-E.js";import"./connection-card-hm9RnHlt.js";import"./useInfiniteQuery-DfHEHKh-.js";import"./infiniteQueryObserver-CvmljhSu.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-vtq1SE8Q.js";import"./form-NsDegBgf.js";import"./label-C9fQ1xp4.js";import"./connection-form-helpers-ksULWpjl.js";import"./authenticate-and-persist-oauth-DVAXnjYJ.js";import"./collection-tabs-CuBt_OIS.js";import"./badge-CBY-3mig.js";import"./use-infinite-scroll-_Tbuniz4.js";import"./useSuspenseInfiniteQuery-CBeA8oCN.js";import"./checkbox-DjUwOumc.js";import"./search-input-Dsjxl8VM.js";import"./use-mcp-auth-status-NrZYrt1V.js";import"./types-DaQSkWc3.js";import"./use-mcp-tools-NRqClp7g.js";import"./use-mcp-prompts-I-RDxz6U.js";import"./utils-CVEq3hMx.js";import"./switch-Dn9HIU8k.js";import"./use-project-native-view-presence-CseOJAsA.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr5M7ePz.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-DY1ezw_N.js";import"./virtual-mcp-ONYMJry4.js";import"./repository-import-picker-62_4jSRa.js";import"./use-navigate-to-agent-BJpiYuGZ.js";import"./repository-picker--Ahj5eif.js";import"./github-icon-DscXbGEI.js";import"./use-debounced-value-DM50Bn8p.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B9abg7y1.js";import"./use-secrets-DBywjfaf.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-BAapFbe2.js";import{C as l}from"./index-B7GL4T3s.js";import{L as c}from"./preview-content-CKRAUFS0.js";import{a as f}from"./use-panel-navigate-Be6EXaPj.js";import{S as u}from"./settings-tab-D0e39c65.js";import{b as h}from"./thread-route-DzikZYAw.js";import"./use-mobile-DWQkI95Z.js";import"./thread-button-CzURbLWN.js";import"./sidebar-BmzAAju0.js";import"./LayoutLeft-CrgY-WKP.js";import"./sheet-D23AwszF.js";import"./X-D8a2dmsp.js";import"./tooltip-BC1jLEAQ.js";import"./index-DmugW6Fl.js";import"./use-route-default-main-CpD6yFxm.js";import"./hooks-BoaYr_vK.js";import"./use-mcp-client-kZnw8HgS.js";import"./auth-CLoDRqAO.js";import"./backoff-8mStPHYB.js";import"./task-board-CAjO4bj3.js";import"./schema-Jq5MXk04.js";import"./agent-icon-C-E2XJuH.js";import"./AlertCircle-DNjCJaw9.js";import"./Tool01-DyymdC9X.js";import"./ArrowUp-qfzf92nQ.js";import"./ArrowLeft-L61r1krv.js";import"./ArrowRight-C3E9kVsb.js";import"./XCircle-8R94lFld.js";import"./ZoomOut-CWR90uz1.js";import"./Globe04-BOSJOQot.js";import"./CheckCircle-DpFvGX-5.js";import"./Check-DP-CHdI6.js";import"./ChevronUp-Ua6deRg2.js";import"./UserSquare-DCQBpNp5.js";import"./Copy01-BQ3K3O5D.js";import"./CreditCard01-WNRApK4e.js";import"./DotsVertical-BItsKK3f.js";import"./Download01-DlkHUmQb.js";import"./Eye-BnU6ieaC.js";import"./Share07-D9dJtUvB.js";import"./XClose-SoQ81CSR.js";import"./Image01-DfqOyQ0u.js";import"./Key01-1Bl-oF6l.js";import"./Link01-B0-YniQQ.js";import"./LinkExternal01-y5qYgT4b.js";import"./Monitor01-ClW6q7DI.js";import"./Sun-CChz5v1R.js";import"./Package-DvkIeVYn.js";import"./Palette-CiP5jc-d.js";import"./Plus-CDiVd_em.js";import"./SearchLg-BManX7Dp.js";import"./SearchMd-Bx2PwRp_.js";import"./Stars01-DVJooTjR.js";import"./Trash01-BPbJ_e3R.js";import"./Upload01-oh36XtxE.js";import"./User01-C5Oan3g_.js";import"./Users01-Cgt2tOZS.js";import"./Zap-BeJnPrTB.js";import"./toolbar-icon-button-D_b-PxZY.js";import"./use-in-settings-NIJJ8Aja.js";import"./shell-layout-BhvjZZGE.js";import"./avatar-Bdx-u6ND.js";import"./download-app-dialog-D8D6jmnK.js";import"./dialog-CX8gq7aP.js";import"./use-project-scope-PsXh1A1b.js";import"./use-virtual-mcp-czGE7SoH.js";import"./github-repo-BknN0SVI.js";import"./command-BOXkt1QJ.js";import"./index-CECVu6kb.js";import"./integration-icon-D2o9P00_.js";import"./project-icon-D1phbtgJ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-COnVc4-c.js";import"./autosend-C9pVeWI-.js";import"./use-org-sso-ykn415MO.js";import"./resizable-CmeolPd5.js";import"./route-page-header-Dj9X4r8B.js";import"./file-preview-ZvTm7M8D.js";import"./use-org-fs-Dd2WtHbO.js";import"./utils-CJGwkbD3.js";import"./editor-CScGi5Aq.js";import"./file-type-icon-16UnD-zc.js";import"./markdown-yufMYCPE.js";import"./org-file-open-context-BiqjKxuc.js";import"./file-share-button-B39dCWjS.js";import"./input-DR7G1WYZ.js";import"./popover-DJaUY8D4.js";import"./location-oTTXFrSF.js";import"./scroll-area-Shry09_8.js";import"./select-D1yST9VC.js";import"./breadcrumb-D0PuBCyn.js";import"./extract-connection-data-msqJK0aE.js";import"./metadata-D72DunRR.js";import"./connection-jgr5KSCP.js";import"./chat-context-C8AQ0cJO.js";import"./thread-intent-Dxz11CKL.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-pa-iEQCf.js";import"./use-ai-providers-CUO0KTwa.js";import"./use-decopilot-events-C6EF1O89.js";import"./use-organization-settings-B49X0qVM.js";import"./build-improve-prompt-doc-DP8VnPde.js";import"./empty-state-EwV3yk5U.js";import"./use-date-fns-locale-DaA8rf_h.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-CPL-U4ct.js";import"./mcp-oauth-cXrAcbF1.js";import"./alert-dialog-C496y9v4.js";import"./textarea-f3zyr9Dp.js";import"./use-debounced-autosave-Cp5uxLhI.js";import"./add-connection-dialog-CFR48DDR.js";import"./collection-search-B01d0B-E.js";import"./connection-card-hm9RnHlt.js";import"./useInfiniteQuery-DfHEHKh-.js";import"./infiniteQueryObserver-CvmljhSu.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-vtq1SE8Q.js";import"./form-NsDegBgf.js";import"./label-C9fQ1xp4.js";import"./connection-form-helpers-ksULWpjl.js";import"./authenticate-and-persist-oauth-DVAXnjYJ.js";import"./collection-tabs-CuBt_OIS.js";import"./badge-CBY-3mig.js";import"./use-infinite-scroll-_Tbuniz4.js";import"./useSuspenseInfiniteQuery-CBeA8oCN.js";import"./checkbox-DjUwOumc.js";import"./search-input-Dsjxl8VM.js";import"./use-mcp-auth-status-NrZYrt1V.js";import"./types-DaQSkWc3.js";import"./use-mcp-tools-NRqClp7g.js";import"./use-mcp-prompts-I-RDxz6U.js";import"./utils-CVEq3hMx.js";import"./switch-Dn9HIU8k.js";import"./use-project-native-view-presence-CseOJAsA.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr5M7ePz.js";import"./site-slug-uya6Wp4-.js";import"./optimistic-project-sidebar-views-DY1ezw_N.js";import"./virtual-mcp-ONYMJry4.js";import"./repository-import-picker-62_4jSRa.js";import"./use-navigate-to-agent-BJpiYuGZ.js";import"./repository-picker--Ahj5eif.js";import"./github-icon-DscXbGEI.js";import"./use-debounced-value-DM50Bn8p.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B9abg7y1.js";import"./use-secrets-DBywjfaf.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};
|