decocms 4.508.6 → 4.509.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{ActiveShapeUtils-CXGs1ybB.js → ActiveShapeUtils-BXDRD_Kb.js} +1 -1
- package/dist/client/assets/{AlertCircle-nHeJKNy4.js → AlertCircle-DahXyAVP.js} +1 -1
- package/dist/client/assets/{AreaChart-B6yMRy7a.js → AreaChart-Ck3zIQtR.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CHEDMPAc.js → ArrowLeft-DhEv8Brb.js} +1 -1
- package/dist/client/assets/{ArrowUp-BVp23ZAQ.js → ArrowUp-BtwUXzUq.js} +1 -1
- package/dist/client/assets/{BarChart-BHoZXyXg.js → BarChart-DABQXmtk.js} +1 -1
- package/dist/client/assets/{Building02-DWirrkdX.js → Building02-BXXzFFFu.js} +1 -1
- package/dist/client/assets/{CategoricalChart-BerVVRZe.js → CategoricalChart-IWO4IrBB.js} +1 -1
- package/dist/client/assets/{CheckCircle-BvDM7Gbz.js → CheckCircle-DQWHbSdB.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-BaD6LBfC.js → ChevronSelectorVertical-fr0U0iWC.js} +1 -1
- package/dist/client/assets/{ChevronUp-rdJNO77l.js → ChevronUp-BDGWe90X.js} +1 -1
- package/dist/client/assets/{Copy01-DW-Q4EY1.js → Copy01--nUw7Bkt.js} +1 -1
- package/dist/client/assets/{CreditCard01-S7w1ujzT.js → CreditCard01-DucLeUqU.js} +1 -1
- package/dist/client/assets/{DotsVertical-CTjrKuIM.js → DotsVertical-CbSs5p_8.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-BqepYqUC.js → ErrorBarContext-WH7XJfon.js} +1 -1
- package/dist/client/assets/{Globe04-DVzQc_Ov.js → Globe04-D97qZmfR.js} +1 -1
- package/dist/client/assets/{Image01-CQ_P4S8k.js → Image01-CnYFBoF2.js} +1 -1
- package/dist/client/assets/{Key01-8PXeeGF4.js → Key01-De3w1Z8c.js} +1 -1
- package/dist/client/assets/{Link01-NOdJQFFA.js → Link01-D8741jKt.js} +1 -1
- package/dist/client/assets/{LinkBroken01-BW3cxIjJ.js → LinkBroken01-Td7XUgIR.js} +1 -1
- package/dist/client/assets/{Monitor01-zjrI3I7-.js → Monitor01-iXRq_BRo.js} +1 -1
- package/dist/client/assets/{Play-CNcpK8hU.js → Play-D33JURoh.js} +1 -1
- package/dist/client/assets/{Plus-BhbZ8PLh.js → Plus-DGYbX9gS.js} +1 -1
- package/dist/client/assets/{SearchMd-CQI4JQwx.js → SearchMd-COO_vo_G.js} +1 -1
- package/dist/client/assets/{Sector-XiUygTHd.js → Sector-DyJZXvkl.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-B36zG7aI.js → ShoppingBag01-77wosjDB.js} +1 -1
- package/dist/client/assets/{Sun-DQEAsW-9.js → Sun-DeoRX0vn.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CijW67Kk.js → SwitchHorizontal01-BkM0p0t8.js} +1 -1
- package/dist/client/assets/{Tool01-CVNOqQY_.js → Tool01-DDJCqOS5.js} +1 -1
- package/dist/client/assets/{Trash01-CivEfR7i.js → Trash01-mIeseU4c.js} +1 -1
- package/dist/client/assets/{Upload01-e15BnHYG.js → Upload01-Qu0NG2Hb.js} +1 -1
- package/dist/client/assets/{User01-CGXYvem6.js → User01-CaKkJjqE.js} +1 -1
- package/dist/client/assets/{UserSquare-C2V1n_Ih.js → UserSquare-BnEG1vAj.js} +1 -1
- package/dist/client/assets/{Users01-Dvv9XL6s.js → Users01-D_oPvcgd.js} +1 -1
- package/dist/client/assets/{XAxis-CkAJzV8x.js → XAxis-dPLaQ_s-.js} +1 -1
- package/dist/client/assets/{XClose-CKZO43ap.js → XClose-Cwc6SpBI.js} +1 -1
- package/dist/client/assets/{ZoomOut-KwNGJU2x.js → ZoomOut-D9qcy1LI.js} +1 -1
- package/dist/client/assets/{access-gate-D3-Vc_Kx.js → access-gate-CPPlMbo5.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-a2Hk6Nkx.js → add-connection-dialog-DRWjeuc5.js} +1 -1
- package/dist/client/assets/{agent-analytics-CYgw4Jp5.js → agent-analytics-Nb0HrH5Z.js} +1 -1
- package/dist/client/assets/agent-app-B2qSL9oc.js +1 -0
- package/dist/client/assets/{agent-assets-CYbpL5CK.js → agent-assets-C6w2i-hY.js} +1 -1
- package/dist/client/assets/{agent-automation-Cg-oGUCW.js → agent-automation-bHzv4XqG.js} +1 -1
- package/dist/client/assets/{agent-automations-DkqBE0Bf.js → agent-automations-D9UDzD1A.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-rCYvPO4b.js → agent-connect-sources-D7aP2elw.js} +1 -1
- package/dist/client/assets/agent-deck-DDotN0AT.js +1 -0
- package/dist/client/assets/{agent-e2e-BwpE4R4S.js → agent-e2e-DtqeqzHL.js} +1 -1
- package/dist/client/assets/{agent-experiments-7eofxXfm.js → agent-experiments-BR5nrOOp.js} +1 -1
- package/dist/client/assets/{agent-file-Md1Nay_R.js → agent-file-_7o0XBSa.js} +1 -1
- package/dist/client/assets/{agent-hosting-BoaTMTJx.js → agent-hosting-0ei8QAsk.js} +1 -1
- package/dist/client/assets/{agent-icon-DS9NdRcy.js → agent-icon-BoeBuKNE.js} +1 -1
- package/dist/client/assets/agent-library-C27Vz_hh.js +1 -0
- package/dist/client/assets/agent-library-file-CYLUWoyo.js +1 -0
- package/dist/client/assets/{agent-monitor-Cqj9t8Ub.js → agent-monitor-BuJjWZ4Q.js} +1 -1
- package/dist/client/assets/{agent-overview-BWLk2lMN.js → agent-overview-Cv7ZnB3O.js} +1 -1
- package/dist/client/assets/{agent-releases-mNhRis4A.js → agent-releases-D7f8eR_p.js} +1 -1
- package/dist/client/assets/agent-settings-mQZHtZBC.js +1 -0
- package/dist/client/assets/{agent-site-editor-I2hfbF3s.js → agent-site-editor-CM-uyUVN.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-5LnggK5j.js +2 -0
- package/dist/client/assets/agent-site-editor-content-Bii6lvtx.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-D3Z1UwWS.js +1 -0
- package/dist/client/assets/agent-view-CwhdhHZO.js +1 -0
- package/dist/client/assets/{agent-view-guard-etTxsEf4.js → agent-view-guard-mT_xWeY_.js} +1 -1
- package/dist/client/assets/{agents-list-CgFBvdaP.js → agents-list-CWC6MInt.js} +1 -1
- package/dist/client/assets/{ai-providers-BLpToiB7.js → ai-providers-C19LEVID.js} +1 -1
- package/dist/client/assets/{alert-CPY2kXCU.js → alert-CDan7S6Z.js} +1 -1
- package/dist/client/assets/{alert-dialog-a2FJnDzI.js → alert-dialog-DYJD4QnY.js} +1 -1
- package/dist/client/assets/{analytics-sections-RUtjdCyd.js → analytics-sections-BfRzRbCg.js} +1 -1
- package/dist/client/assets/{api-keys-BS4nKV3S.js → api-keys-D2UISU63.js} +1 -1
- package/dist/client/assets/api-keys-Di5U5myY.js +1 -0
- package/dist/client/assets/{app-editor-CyiwP4V6.js → app-editor-DIZmBZpP.js} +1 -1
- package/dist/client/assets/{asset-utils-CIiLT20x.js → asset-utils-DS09SEqB.js} +1 -1
- package/dist/client/assets/{auth-D5vlr6Xs.js → auth-BmkbjTIT.js} +1 -1
- package/dist/client/assets/{auth-catchall-CnJQOFyT.js → auth-catchall-Bzvb9awD.js} +1 -1
- package/dist/client/assets/{auth-entry-BmE4zOPv.js → auth-entry-BwdGUEFH.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CTupgg-r.js → auth-split-layout-DAgFhymt.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-DZnBnOkQ.js → authenticate-and-persist-oauth-Ze4JtB7Z.js} +1 -1
- package/dist/client/assets/{automation-list-row-CgAhgT7p.js → automation-list-row-Bg4MdgHM.js} +1 -1
- package/dist/client/assets/{automation-runs-BJoCqkuB.js → automation-runs-svq9BzA3.js} +1 -1
- package/dist/client/assets/{automations-BFsz2FLV.js → automations-jZo-B4sp.js} +1 -1
- package/dist/client/assets/{autosend-w20J7vUz.js → autosend-CnbTsArw.js} +1 -1
- package/dist/client/assets/{avatar-BcMEJNkO.js → avatar-Dmj5HWBE.js} +1 -1
- package/dist/client/assets/{badge-fITx4C7X.js → badge-immHUAWH.js} +1 -1
- package/dist/client/assets/{block-document-bxGc1MiD.js → block-document-D6gKano6.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-Ctd3nOTF.js → blocks-preview-workspace-context-Cezj7GYR.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-D88WAum-.js → blocks-tab-states-DCHA2WOp.js} +3 -3
- package/dist/client/assets/{blog-schema-BtWo-n2b.js → blog-schema-BIiCcoze.js} +1 -1
- package/dist/client/assets/{board-analytics-C6dHQiTq.js → board-analytics-B8p782R5.js} +1 -1
- package/dist/client/assets/{buckets-D8KuWGPI.js → buckets-BI0ldLX0.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-DL0Lm9Jq.js → build-improve-prompt-doc-BoaUmUhj.js} +1 -1
- package/dist/client/assets/{calendar-CRxnQOaS.js → calendar-CRF7p67d.js} +1 -1
- package/dist/client/assets/{capability-load-error-UQ_Bzld7.js → capability-load-error-DO7kCx-s.js} +1 -1
- package/dist/client/assets/{category-editor-BhgwKHt4.js → category-editor-C6bBb5Vn.js} +1 -1
- package/dist/client/assets/{chart-Bp3Wp6d1.js → chart-K4c5R1FG.js} +1 -1
- package/dist/client/assets/{chat-context-CEkukqBY.js → chat-context-rrAFSxTj.js} +1 -1
- package/dist/client/assets/{chat-draft-CLPZV4X0.js → chat-draft-Bwa3MWgo.js} +1 -1
- package/dist/client/assets/{checkbox-_7EuJ1ZF.js → checkbox-uF4YjfhT.js} +1 -1
- package/dist/client/assets/{choose-editor-DILEx_7S.js → choose-editor-DYw4ub5x.js} +1 -1
- package/dist/client/assets/{cli-auth-success-6dCHBE3D.js → cli-auth-success-V1WPEpuO.js} +1 -1
- package/dist/client/assets/{client-icons-G-HrHlDm.js → client-icons-DNIlaWXl.js} +1 -1
- package/dist/client/assets/cms-settings-editor-Bz3KyZn7.js +1 -0
- package/dist/client/assets/{collapsible-BhjP_6g9.js → collapsible--AfpE5go.js} +1 -1
- package/dist/client/assets/{collection-detail-B49U_IBm.js → collection-detail-9UHByug3.js} +1 -1
- package/dist/client/assets/{collection-display-button-BMc_CGF_.js → collection-display-button-LMAfjLFG.js} +1 -1
- package/dist/client/assets/{collection-search-D_gP7n8V.js → collection-search-CPxmcakk.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BnR7BTiF.js → collection-table-wrapper-o2xqaLhj.js} +1 -1
- package/dist/client/assets/{collection-tabs-wtiz1pOY.js → collection-tabs-DegnmUnF.js} +1 -1
- package/dist/client/assets/{column-rules-Dr2fKF7u.js → column-rules-CKnNbyhE.js} +1 -1
- package/dist/client/assets/{combobox-CvtIDWLR.js → combobox-BpeKD1mn.js} +1 -1
- package/dist/client/assets/{command-BW-GQQXC.js → command-Chzo6Cke.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-C0SAuX1W.js → companion-mcps-section-Bddc-iNh.js} +1 -1
- package/dist/client/assets/config-CRQVbMEt.js +1 -0
- package/dist/client/assets/{connect-CBTyw8WL.js → connect-D9lRnIuC.js} +1 -1
- package/dist/client/assets/{connect-layout-GJaJ0zUB.js → connect-layout-BVB4H_8u.js} +1 -1
- package/dist/client/assets/{connection-CzWPdAsU.js → connection-DTZxpsQt.js} +1 -1
- package/dist/client/assets/{connection-card-CAbEC6HU.js → connection-card-0mJkScEF.js} +1 -1
- package/dist/client/assets/{connection-detail-BflVNAPz.js → connection-detail-D7-yp5Ev.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-Dbfkfa_y.js → connection-form-helpers-i14UVHFH.js} +1 -1
- package/dist/client/assets/{connections-CCWuXsGU.js → connections-DdTsKfHq.js} +1 -1
- package/dist/client/assets/{content-tab-D4ep_a8J.js → content-tab-7vnFy3YT.js} +3 -3
- package/dist/client/assets/{context-C1UoLkfc.js → context-D6nhNoNB.js} +1 -1
- package/dist/client/assets/{context-menu-DH1w2c9q.js → context-menu-4j4tHFq_.js} +1 -1
- package/dist/client/assets/{core.esm-kALIESxY.js → core.esm-DRhkSXSs.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-CHYUxhE-.js → create-organization-dialog-CYelX0XL.js} +1 -1
- package/dist/client/assets/{daily-pulse-Ctl7ItnB.js → daily-pulse-YX7XoVIO.js} +1 -1
- package/dist/client/assets/{discover-B0poHHpj.js → discover-BEidOuNM.js} +1 -1
- package/dist/client/assets/{domain-settings-Dgp6uDMY.js → domain-settings-CFX7bt8N.js} +1 -1
- package/dist/client/assets/{drawer-arZY1xqV.js → drawer-E-YtUU5Z.js} +1 -1
- package/dist/client/assets/{editor-CDuCgYu3.js → editor-RC0haEQH.js} +1 -1
- package/dist/client/assets/{editor-classes-BnDHR9dJ.js → editor-classes-yn_rxE9_.js} +1 -1
- package/dist/client/assets/{empty-state-jCWAQBLO.js → empty-state-DuFAzlGV.js} +1 -1
- package/dist/client/assets/{empty-state-DlslJePg.js → empty-state-KyjcIuIc.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DrPVx0tt.js → extract-connection-data-BTyrbYGa.js} +1 -1
- package/dist/client/assets/{feature-gate-Dapoh_dm.js → feature-gate-B_1YF4S7.js} +1 -1
- package/dist/client/assets/{feature-paywall-Cq38J0kg.js → feature-paywall-Dt-F60U6.js} +1 -1
- package/dist/client/assets/{file-explorer-CNPQFTJw.js → file-explorer-DncbYvHY.js} +1 -1
- package/dist/client/assets/{file-preview-XcXbDvBh.js → file-preview-C4f2If4C.js} +1 -1
- package/dist/client/assets/{file-share-button-_GG604s_.js → file-share-button-BfwFwrIq.js} +1 -1
- package/dist/client/assets/{file-type-icon-CtwlFA8d.js → file-type-icon-BLPYW-jR.js} +1 -1
- package/dist/client/assets/flat-project--v2Mbmfa.js +1 -0
- package/dist/client/assets/{folder-icon-G5oFirfg.js → folder-icon-Owh7PMLU.js} +1 -1
- package/dist/client/assets/{form-CaD_iGng.js → form-CGraaEAE.js} +1 -1
- package/dist/client/assets/{general-sIY7tdsC.js → general-B8kjKLNB.js} +1 -1
- package/dist/client/assets/{home-96ieG4Zb.js → home-Dx1t2Khy.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-DqF1lCTn.js → hosted-publish-feedback-Cwu2Dq_h.js} +1 -1
- package/dist/client/assets/{icon-button-Bik9eCHY.js → icon-button-DzQcGwuH.js} +1 -1
- package/dist/client/assets/{index-BM0HCe8D.js → index-6ugH9LLC.js} +1 -1
- package/dist/client/assets/{index-DupZqtJS.js → index-B0kSzh8i.js} +1 -1
- package/dist/client/assets/{index-Cqqlk7XX.js → index-B8bjocUj.js} +1 -1
- package/dist/client/assets/{index-nAE8nFTs.js → index-C0hkRsN1.js} +1 -1
- package/dist/client/assets/{index-CoXSkt-d.js → index-Cm1qyBQK.js} +1 -1
- package/dist/client/assets/index-Cyt4kGm3.js +81 -0
- package/dist/client/assets/{index-DNpGZZSs.js → index-D1wK1rEb.js} +1 -1
- package/dist/client/assets/{index-S2HrH4Zk.js → index-DjeyX30Y.js} +31 -31
- package/dist/client/assets/{index-CORKrMTl.js → index-Dq2Ct6xz.js} +1 -1
- package/dist/client/assets/{index-BXcyv6PD.js → index-DzRPrtcp.js} +1 -1
- package/dist/client/assets/{index-BXbkk71c.js → index-JzMEORR7.js} +1 -1
- package/dist/client/assets/{index-BP0w9uvv.js → index-OKHpYAkN.js} +1 -1
- package/dist/client/assets/{index-lbuv06_c.js → index-g2Ln0Y-8.js} +1 -1
- package/dist/client/assets/{index-B2Fyvo7h.js → index-kYoyh7tP.js} +1 -1
- package/dist/client/assets/{index-BVifsRNJ.js → index-pzoXR2-o.js} +1 -1
- package/dist/client/assets/{index-redirect-MsuzYsBP.js → index-redirect-qrvoNgUJ.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-Dfr1g1Vv.js → infiniteQueryObserver-xRaoCF8T.js} +1 -1
- package/dist/client/assets/{infra-billing-D6xHTR8Q.js → infra-billing-OlN7szns.js} +1 -1
- package/dist/client/assets/{input-BNtucuwb.js → input-Cy31fgjy.js} +3 -3
- package/dist/client/assets/{input-D-BLRmFH.js → input-bijwqhpk.js} +1 -1
- package/dist/client/assets/{integration-icon-CWPbfMpw.js → integration-icon-D_TcwvU-.js} +1 -1
- package/dist/client/assets/{jira-icon-Ct9dTMeZ.js → jira-icon-BGjUPAaC.js} +1 -1
- package/dist/client/assets/{label-BS9IArvo.js → label-CYvkczUc.js} +1 -1
- package/dist/client/assets/{layout-DWBu-LGA.js → layout-DFmoYAPP.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-Cwrg3iI9.js → legacy-agents-deep-B1uAmBP6.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-DVMIaS6w.js → legacy-main-redirect-BJIaLbHQ.js} +1 -1
- package/dist/client/assets/library-D4ZRZPVd.js +1 -0
- package/dist/client/assets/{library-tab-CVA9v6jj.js → library-tab-BOLOjdKv.js} +1 -1
- package/dist/client/assets/{login-D2l33p2B.js → login-aAtYURyn.js} +1 -1
- package/dist/client/assets/{markdown-DzuMiPHd.js → markdown-c54w-PBR.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-De74lxEm.js → mcp-app-renderer-DzUa0fqQ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CvuoEz0O.js → mcp-oauth-BJIzp1EQ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CYD7UUIz.js → mcp-oauth-l-3wO0u2.js} +1 -1
- package/dist/client/assets/{members-Dpq_4Eq9.js → members-Bm_dXN3q.js} +1 -1
- package/dist/client/assets/{memory-Pua_cxhk.js → memory-CTLW_5ha.js} +1 -1
- package/dist/client/assets/{mini-report-page-BiuAv3ZO.js → mini-report-page-DgZoblky.js} +1 -1
- package/dist/client/assets/{mock-board-BCYTeCqM.js → mock-board-wZ9eyEn0.js} +1 -1
- package/dist/client/assets/{monaco-editor-NerlSFJk.js → monaco-editor-AjJjPJFH.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-D_5NtGON.js → monitoring-stats-row-C1FgUwoY.js} +1 -1
- package/dist/client/assets/{multi-select-Dr8OUdJ-.js → multi-select-CeQsu_AX.js} +1 -1
- package/dist/client/assets/{mustache-CJFhAhy9.js → mustache-C3q0PlLG.js} +1 -1
- package/dist/client/assets/{new-project-dialog-RUFPj3jS.js → new-project-dialog-CzCoTy3M.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Qqa8lmPk.js → oauth-callback-ai-provider-CavLmaDk.js} +1 -1
- package/dist/client/assets/{oauth-callback-B4Vp5ciQ.js → oauth-callback-faM6kHoM.js} +1 -1
- package/dist/client/assets/{onboarding-BdvXe6mY.js → onboarding--HTHFBjf.js} +1 -1
- package/dist/client/assets/{openai-conversation-uTE1B1S_.js → openai-conversation-IjaByevn.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-BNi3TW0W.js → optimistic-project-sidebar-views-BLXripGn.js} +1 -1
- package/dist/client/assets/{order-monitor-day-k7ZlOFk5.js → order-monitor-day-0QgbwowT.js} +1 -1
- package/dist/client/assets/{organization-choice-xxc-49dQ.js → organization-choice-BH8z7D14.js} +1 -1
- package/dist/client/assets/{orgs-Bfu9D3mC.js → orgs-Cd8IzfNg.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bx214AXX.js → page-seo-form-Blbhh5CI.js} +1 -1
- package/dist/client/assets/{pair-DzIFSvmn.js → pair-B6zSQFD4.js} +1 -1
- package/dist/client/assets/{plan-ladder-kRRISZu_.js → plan-ladder-CJm-5l4g.js} +1 -1
- package/dist/client/assets/{popover-CNf5xMWd.js → popover-DkAu8oBQ.js} +1 -1
- package/dist/client/assets/{post-calendar-BI4LFk3C.js → post-calendar-DtI-lv3J.js} +1 -1
- package/dist/client/assets/{post-editor-CVhGoVqC.js → post-editor-DsYvI5UU.js} +1 -1
- package/dist/client/assets/{preview-content-qLWV61FJ.js → preview-content-D72q-FTE.js} +1 -1
- package/dist/client/assets/{preview-dialog-BJxkSwUM.js → preview-dialog-DvZXsyEM.js} +1 -1
- package/dist/client/assets/{preview-panel-CCLqhyyG.js → preview-panel-Ds2TdctL.js} +1 -1
- package/dist/client/assets/{preview-tab-B2DMf90b.js → preview-tab-C5lDvsj-.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-BcmSpeFs.js → product-picker-dialog-Cq4kY83j.js} +1 -1
- package/dist/client/assets/{profile-DRXbFK_Q.js → profile-Cd1NVkWe.js} +1 -1
- package/dist/client/assets/{project-app-view-BL9BIoFw.js → project-app-view-C0FjKFlG.js} +1 -1
- package/dist/client/assets/{project-feed-BUmoLrbC.js → project-feed-DyssmNVT.js} +1 -1
- package/dist/client/assets/{project-icon-B9lmpDmN.js → project-icon-BTJptOhj.js} +1 -1
- package/dist/client/assets/project-reports-PoqU8cmr.js +1 -0
- package/dist/client/assets/project-tasks--h66ZBfo.js +1 -0
- package/dist/client/assets/{projects-Dmu9brRz.js → projects-23Pc0s1a.js} +1 -1
- package/dist/client/assets/{projects-empty-state-CkhK55Je.js → projects-empty-state-V728nY_w.js} +1 -1
- package/dist/client/assets/{prompts-e6FkVTsU.js → prompts-nWEdazrj.js} +1 -1
- package/dist/client/assets/record-editor-tRleK8Fx.js +1 -0
- package/dist/client/assets/{redirect-editor-BWAsWp76.js → redirect-editor-Bkhc0Rz5.js} +1 -1
- package/dist/client/assets/reports-B0yI1lG7.js +1 -0
- package/dist/client/assets/{reports-DicYgTQv.js → reports-BXtM5enn.js} +1 -1
- package/dist/client/assets/{reports-onboarding-DZc2VSTT.js → reports-onboarding-CX0lDqiN.js} +1 -1
- package/dist/client/assets/{reports-tab-CcYqGToh.js → reports-tab-DXqCM1YP.js} +2 -2
- package/dist/client/assets/{repositories-BHRhoXEn.js → repositories-C7pC7wW7.js} +1 -1
- package/dist/client/assets/{repository-binding-CzQ1nQ8q.js → repository-binding-CxxK4zqI.js} +1 -1
- package/dist/client/assets/{repository-import-picker-E7Pppx7U.js → repository-import-picker-B9K3XzJv.js} +1 -1
- package/dist/client/assets/{repository-picker-BzHKIgTj.js → repository-picker-6S2RKx3o.js} +1 -1
- package/dist/client/assets/{require-capability-DJe1vIL-.js → require-capability-Zm5W4hin.js} +1 -1
- package/dist/client/assets/{required-auth-layout-AtAqW5LI.js → required-auth-layout-CpqRIzPD.js} +1 -1
- package/dist/client/assets/{reset-password-IzWhdzEr.js → reset-password-CTeQx-lW.js} +1 -1
- package/dist/client/assets/{resizable-CHI2gbLE.js → resizable-xAkYm4i8.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-BCBzxE3t.js → resolve-tab-icon-C9wuMh4a.js} +1 -1
- package/dist/client/assets/{review-settings-By8ZdrMk.js → review-settings-BWiN3Jk9.js} +1 -1
- package/dist/client/assets/{roles-BbdTN4WL.js → roles-Znh7kobn.js} +1 -1
- package/dist/client/assets/{route-B7u13aNp.js → route-BRm2VDLI.js} +1 -1
- package/dist/client/assets/route-DW1jw329.js +1 -0
- package/dist/client/assets/{route-bMsTC3r2.js → route-DtXNF5Gy.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-DpHdDXk6.js → sandbox-lifecycle-context-CfQP3IMz.js} +1 -1
- package/dist/client/assets/{schema-ChcAfIj0.js → schema-B__wWe94.js} +1 -1
- package/dist/client/assets/{schema-B_Wflcyp.js → schema-C33Vhfks.js} +1 -1
- package/dist/client/assets/{scroll-area-DycmVFDZ.js → scroll-area-D_8jILgS.js} +1 -1
- package/dist/client/assets/{search-input-DKSQj9gf.js → search-input-R3ZKEGlG.js} +1 -1
- package/dist/client/assets/{search-toggle-aBYXmyNS.js → search-toggle-K246naLM.js} +1 -1
- package/dist/client/assets/{secret-ciphertext-DrGrgfkA.js → secret-ciphertext-PmXQgPBi.js} +1 -1
- package/dist/client/assets/{secret-picker-B0gLr68w.js → secret-picker-BuxCGGBU.js} +1 -1
- package/dist/client/assets/{secrets-BBAHMuLy.js → secrets-B2fnexCs.js} +1 -1
- package/dist/client/assets/{sections-editor-BI_v5CFg.js → sections-editor-B0hoUxCL.js} +1 -1
- package/dist/client/assets/{select-fodDbKBd.js → select-DB9aGezp.js} +1 -1
- package/dist/client/assets/{select-model-Ax4-NGQ_.js → select-model-BJFqJs1C.js} +1 -1
- package/dist/client/assets/{seo-editor-C0rqsIGS.js → seo-editor-CP-xh6fI.js} +1 -1
- package/dist/client/assets/{separator-Ds5NYqaJ.js → separator-YjrrgHOt.js} +1 -1
- package/dist/client/assets/{settings-tab-aEeUpMuv.js → settings-tab-CksnDewe.js} +1 -1
- package/dist/client/assets/{sheet-CmjVGFzk.js → sheet-CZLBR4F9.js} +1 -1
- package/dist/client/assets/{shell-layout-BHLXKp6D.js → shell-layout-D1m8Ud7v.js} +1 -1
- package/dist/client/assets/site-editor-CL_bu0T5.js +1 -0
- package/dist/client/assets/{site-editor-toast-C7gsNtsA.js → site-editor-toast-BQ9NvsaW.js} +1 -1
- package/dist/client/assets/{skills-CAjXUjBe.js → skills-DyZsyfj2.js} +1 -1
- package/dist/client/assets/{slider-Qbqvi6YZ.js → slider-DdPswVEW.js} +1 -1
- package/dist/client/assets/{sortable.esm-8GoMwe3S.js → sortable.esm-Isyn3z-p.js} +1 -1
- package/dist/client/assets/{sso-qv8fKGF8.js → sso-Cvd6woaA.js} +1 -1
- package/dist/client/assets/{suggestion-C3JOAIFg.js → suggestion-DE6bI3IJ.js} +1 -1
- package/dist/client/assets/{switch-B-N8df6o.js → switch-D2ouDY9l.js} +1 -1
- package/dist/client/assets/{symbol-ChDU-_ly.js → symbol-B2Jv7pNm.js} +1 -1
- package/dist/client/assets/{synced-repos-CQXUaNYb.js → synced-repos-KFK4TBEs.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-BrlRs4-o.js → tab-icon-glyph-DOxVWCXX.js} +1 -1
- package/dist/client/assets/{table-DoqKhaeH.js → table-Bz_X_DZW.js} +1 -1
- package/dist/client/assets/{tabs-xkmOuT-4.js → tabs-B1JWlBeb.js} +1 -1
- package/dist/client/assets/task-board-By-HtbvB.js +1 -0
- package/dist/client/assets/{task-route-C1rix0g6.js → task-route-DzEedpiF.js} +1 -1
- package/dist/client/assets/{task-status-e40p5Enh.js → task-status-Br0QwLu4.js} +1 -1
- package/dist/client/assets/taskboard-analytics-CzdeI0TB.js +1 -0
- package/dist/client/assets/{tasks-BIAIJ6Rd.js → tasks-Cg5BZBqa.js} +3 -3
- package/dist/client/assets/tasks-q6DdylR5.js +1 -0
- package/dist/client/assets/{textarea-CgwvzOPm.js → textarea-Bi1WfesL.js} +1 -1
- package/dist/client/assets/{thread-analytics-DwX73oUa.js → thread-analytics-CFe--CHd.js} +1 -1
- package/dist/client/assets/{thread-intent-lc5eUADU.js → thread-intent-BOV3kZsu.js} +1 -1
- package/dist/client/assets/{thread-route-Bv66u3El.js → thread-route-JnLnAmDR.js} +1 -1
- package/dist/client/assets/{thread-route-Di_L_xPl.js → thread-route-sK6jRpGi.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-C8enZgyP.js → thread-sheet-body-CeK8x29F.js} +1 -1
- package/dist/client/assets/{time-range-picker-BpE5IYeC.js → time-range-picker-DyaWyYvU.js} +1 -1
- package/dist/client/assets/{toggle-group-D-VKYoG7.js → toggle-group-BJrK4ohL.js} +1 -1
- package/dist/client/assets/{tool-namespace-CAIy2rBU.js → tool-namespace-WGvCHGNT.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-CbjP7ed9.js → toolbar-icon-button-B-Am6G4N.js} +1 -1
- package/dist/client/assets/{tooltip-DkdSXKza.js → tooltip-BjOKp_yY.js} +1 -1
- package/dist/client/assets/{tooltipContext-DimiFpI6.js → tooltipContext-ECoG_0bD.js} +1 -1
- package/dist/client/assets/{track-BIsG5hPy.js → track-DMHTeO-g.js} +1 -1
- package/dist/client/assets/{types-BqZau8Hd.js → types-B38bkUuB.js} +1 -1
- package/dist/client/assets/{url-slug-DxiiVVNC.js → url-slug-B9BgQNZP.js} +1 -1
- package/dist/client/assets/{usage-stats-D9rnjt3m.js → usage-stats-Moh6ZFcL.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BR88k3VX.js → use-ai-providers-BvJFsA-n.js} +1 -1
- package/dist/client/assets/{use-app-takeover-Ch2wb6yt.js → use-app-takeover-B8WKIuje.js} +1 -1
- package/dist/client/assets/{use-automations-CRdHw8RA.js → use-automations-BubilfJF.js} +1 -1
- package/dist/client/assets/{use-autosave-BXG8lzGf.js → use-autosave-DQrtP9Mp.js} +1 -1
- package/dist/client/assets/{use-chat-navigation-CouOTXBi.js → use-chat-navigation-CiTJZYhQ.js} +1 -1
- package/dist/client/assets/{use-clock-tick-C4h7TV0_.js → use-clock-tick-B9hlRyLN.js} +1 -1
- package/dist/client/assets/{use-connect-companion-DchTRMM2.js → use-connect-companion-CXJy1zaK.js} +1 -1
- package/dist/client/assets/{use-connection-DceoJXcX.js → use-connection-UjMngEYa.js} +1 -1
- package/dist/client/assets/{use-content-sync-DqzHBq4O.js → use-content-sync-BUixoW2Z.js} +1 -1
- package/dist/client/assets/{use-copy-iY6KVzYy.js → use-copy-CiztYm1v.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CbP1NhGS.js → use-create-virtual-mcp-VpFuCKnd.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-CMveGtuM.js → use-date-fns-locale-CylZqXHz.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-BVlge430.js → use-debounced-autosave-m7eQVRqS.js} +1 -1
- package/dist/client/assets/{use-debounced-value-VWV6vguR.js → use-debounced-value-Bhl_Rv5_.js} +1 -1
- package/dist/client/assets/{use-deco-credits-n0_VB3Yj.js → use-deco-credits-FY205R6D.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BDFf0mdn.js → use-decopilot-events-CPfnofl0.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CJ8E5lJF.js → use-delete-connection-DvVJpeEf.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DDyTYm2Q.js → use-deployment-admin-BzV2yqA3.js} +1 -1
- package/dist/client/assets/{use-ensure-project-folder-8-A-krsd.js → use-ensure-project-folder-BgUOAmYE.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-Ds-PHtsv.js → use-fast-preview-draft-url-CrL4FQJ6.js} +1 -1
- package/dist/client/assets/{use-file-configs-fZDk4Xxs.js → use-file-configs-jGTNrkK9.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Ciyxx1IX.js → use-infinite-scroll-DlTIfPFo.js} +1 -1
- package/dist/client/assets/{use-join-requests-2QC-9NBj.js → use-join-requests-C4TcA439.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-DdKHeuHP.js → use-main-panel-tabs-CN3dklj2.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-B_xS6PxQ.js → use-mcp-auth-status-DM-ErC_Q.js} +1 -1
- package/dist/client/assets/{use-mcp-client-fij6bnkk.js → use-mcp-client-mxUa3Lsm.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-nVSs2yBU.js → use-mcp-prompts-CX-ziSXI.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BTx6zN3k.js → use-mcp-tools-D1zqQRh2.js} +1 -1
- package/dist/client/assets/{use-members-CWbXkme1.js → use-members-C1a4SbHs.js} +1 -1
- package/dist/client/assets/{use-mobile-B4_3C8q4.js → use-mobile-BIczRvEw.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DbRUaGfg.js → use-navigate-to-agent-B9ba7keg.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-CeOdX9ob.js → use-open-billing-url-BVUCpaHN.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CZGMEzLB.js → use-org-auth-client-DLu7wwJ8.js} +1 -1
- package/dist/client/assets/{use-org-fs-DF73hTWJ.js → use-org-fs-BPZLK6VF.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-Cr8kprD2.js → use-org-repo-syncs-DmycgZxS.js} +1 -1
- package/dist/client/assets/{use-org-sso-989hwFZD.js → use-org-sso-B42vh3r9.js} +1 -1
- package/dist/client/assets/{use-organization-roles-uqmQaLz5.js → use-organization-roles-DbvmpvPK.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C8GBvgGb.js → use-organization-settings-BzX4Hzqv.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-CoDOXIMG.js → use-panel-navigate-BfsxK4kz.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-YylhnML_.js → use-project-native-view-presence-CR46zKPn.js} +1 -1
- package/dist/client/assets/{use-project-scope-DlrgPE-R.js → use-project-scope-DgHI5Sbx.js} +1 -1
- package/dist/client/assets/{use-recent-apps-DJ8gzGYl.js → use-recent-apps-n8Amcz5l.js} +1 -1
- package/dist/client/assets/{use-releases-BQ6bvf6e.js → use-releases-BVZsPPMC.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-DCcQn6p6.js → use-reports-diagnostic-CevaUKdb.js} +1 -1
- package/dist/client/assets/{use-secrets-G5jwJCeF.js → use-secrets-BDWaWfBZ.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-B7oI8IS3.js → use-section-preview-base-L5lcG5Wr.js} +1 -1
- package/dist/client/assets/{use-tags-BZ_9WRd5.js → use-tags-CswC4qUA.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-DS78-VKz.js → use-task-board-analytics-C545b4DS.js} +1 -1
- package/dist/client/assets/{use-task-board-events-CFaY2XFK.js → use-task-board-events-BX2b5wi0.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-B3DGj9HT.js → use-task-board-item-prs-BLXk8Qod.js} +1 -1
- package/dist/client/assets/{use-task-board-items-CKlunvVp.js → use-task-board-items-l56DZZX-.js} +1 -1
- package/dist/client/assets/{use-task-metadata-CAqf5YMW.js → use-task-metadata-DIMUC10R.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-Dy6RzET3.js → use-thread-analytics-Dtf6wTh1.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-C_yh8Aef.js → use-thread-outputs-Dcvv4FKQ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DtOl_zc5.js +1 -0
- package/dist/client/assets/{useQueries-B6o_NICe.js → useQueries-2wm2Ardx.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CgXIqx6r.js +1 -0
- package/dist/client/assets/{users-DrdTb2FX.js → users-CwwQJETL.js} +1 -1
- package/dist/client/assets/{utils-C_HFfslm.js → utils-BnDAp2xW.js} +1 -1
- package/dist/client/assets/{variant-calendar-DVbuK0EP.js → variant-calendar-NVbPJ00u.js} +1 -1
- package/dist/client/assets/{variant-draft-pointer-DTHxmTxg.js → variant-draft-pointer-CDHruVa9.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CMAMcUVF.js → view-mode-toggle-S2UksSN5.js} +1 -1
- package/dist/client/assets/{virtual-mcp-CQuSXNh3.js → virtual-mcp-DugkGZOU.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-BoIAnVGT.js → watch-sse-pool-DuKj9dUB.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-C81_g70v.js +0 -1
- package/dist/client/assets/agent-deck-cNh6hx0y.js +0 -1
- package/dist/client/assets/agent-library-Cy1jDsXi.js +0 -1
- package/dist/client/assets/agent-library-file-BB4EXNcD.js +0 -1
- package/dist/client/assets/agent-settings-BqgW0cZY.js +0 -1
- package/dist/client/assets/agent-site-editor-code-CGmEjd0H.js +0 -2
- package/dist/client/assets/agent-site-editor-content-BpciuKCb.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-Disp1VsU.js +0 -1
- package/dist/client/assets/agent-view-BrFr_ylt.js +0 -1
- package/dist/client/assets/api-keys-CVALCq-j.js +0 -1
- package/dist/client/assets/cms-settings-editor-BzmSVE26.js +0 -1
- package/dist/client/assets/config-546ku1Fs.js +0 -1
- package/dist/client/assets/flat-project-Cbh2X7LO.js +0 -1
- package/dist/client/assets/index-BGPLlqgD.js +0 -81
- package/dist/client/assets/library-7auJHR7m.js +0 -1
- package/dist/client/assets/project-reports-DJEz1-EW.js +0 -1
- package/dist/client/assets/project-tasks-DdOZ122W.js +0 -1
- package/dist/client/assets/record-editor-Dm_2-gvd.js +0 -1
- package/dist/client/assets/reports-CUQJGxVQ.js +0 -1
- package/dist/client/assets/route-ByHZekYF.js +0 -1
- package/dist/client/assets/site-editor-C4Pxa3rd.js +0 -1
- package/dist/client/assets/task-board-BORnxlSz.js +0 -1
- package/dist/client/assets/taskboard-analytics-C-hScwU_.js +0 -1
- package/dist/client/assets/tasks-9Z-ueqGU.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BrF8BU9H.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-C2A9_AqO.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4491,7 +4491,7 @@ ${X}`:`${Y}
|
|
|
4491
4491
|
|
|
4492
4492
|
${X}
|
|
4493
4493
|
${J.slice(Y.length).trimStart()}`}function Sj8($){return $?.match(xK5)?.[1]?.toLowerCase()??null}async function hK5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(gK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=gK(X,$.packagePath),W=new Set(G.map((H)=>H.path)),K=[];for(let H of G){if(J.get(H.path)===H.sha)continue;K.push({path:H.path,copyFromRef:Q})}for(let H of J.keys())if(!W.has(H))K.push({path:H,deleted:!0});return{changes:K,tree:Y,next:G.map((H)=>({stem:H.stem,sha:H.sha}))}}async function Cj8($,Z){try{return await bQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof Rs)return null;throw Q}}async function _j8($,Z,Q){let Y=PP($.packagePath),[X,J]=await Promise.all([$.client.getEntriesAtPaths(Z,[Y]),$.client.getEntriesAtPaths(Q,[Y])]);if(X.get(Y)?.sha===J.get(Y)?.sha)return!1;let[G,W]=await Promise.all([Cj8($,Z),Cj8($,Q)]);return G!==W}async function vj8($,Z){if(!zD0(Z))throw new pu;if(!await FT1($.store,$.site,Z))throw new pu}async function bj8($,Z){await vj8($,Z);let Q=await $9($.client,$.mainBranch);return _j8($,Q,Z)}async function xj8($,Z,Q={},Y={}){await vj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new pu;let J=await $9($.client,$.mainBranch),G=await hK5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await _j8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await UT1($,J,G,gK5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await DT1($,K,Y),schemaChanged:W}}var pu,fQ0="Reapply: ",vK5,bK5="Reapplied-From",xK5;var wT1=L(()=>{Jn();A5();xF();$B();xQ0();zg0();pu=class pu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};vK5=/^chore\(decofile\):/,xK5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function fj8($,Z,Q){let[Y,X,J]=await Promise.all([Oj8($.store,$.site),xq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:lK5,cursor:Q,limit:uK5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>Sj8(H.body));await Promise.all([...new Set(W)].filter((H)=>H!==null&&!G.has(H)).map(async(H)=>{let F=await $.client.readCommit(H).catch(()=>null);if(F)G.set(H,F.date)}));let K=J.items.map((H,F)=>{let U=W[F];return{sha:H.sha,date:H.date,message:H.message,author:H.author.name??H.author.login,hasRelease:X.has(H.sha),reapplyOf:U?{sha:U,date:G.get(U)??null}:null}});return{current:Y,commits:K,nextCursor:J.nextCursor}}async function yj8($){let Z=await $9($.client,$.mainBranch),Q=await NT1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await BT1($,Y),Y}var uK5=50,lK5="1970-01-01T00:00:00Z";var gj8=L(()=>{A5();$B();xQ0();wT1()});function hj8($){return`site-tokens:${$}`}function cK5($){let Z=$?.tokens;if(!Array.isArray(Z))return[];return Z.filter((Q)=>typeof Q==="object"&&Q!==null&&typeof Q.kid==="string"&&typeof Q.iat==="number")}function uj8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function mK5($,Z){let Q=(J)=>ET1(new TextEncoder().encode(JSON.stringify(J))),Y=`${Q({alg:"EdDSA",typ:"JWT"})}.${Q({site:Z.site,kid:Z.kid,iat:Z.iat})}`,X=await crypto.subtle.sign({name:"Ed25519"},$,new TextEncoder().encode(Y));return`${Y}.${ET1(X)}`}function lj8($){let Z=async(Q,Y)=>cK5(await $.kv.get(Q,hj8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:ET1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await mK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,hj8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var ET1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function iK5(){let $=Ep();return $?{store:$,purge:wg0()}:null}async function Mg0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site}}function cj8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return lj8({kv:$.var.studioContext.storage.kv,signingKey:()=>uj8(Z)})}function ks($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof Rs)return $.json({error:Q},409);if(Z instanceof Ag0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=_G(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function mj8($={}){let Z=new Z1,Q=$.repoClientFor??bG,Y=$.insightsFor??sT$,X=$.delivery??iK5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",dK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Mg0(J);if(!G)return J.json(Rg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await fj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ks(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Mg0(J);if(!G)return J.json(Rg0,503);return J.json({current:await yj8(G)})}catch(G){return ks(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Mg0(J);if(!G)return J.json(Rg0,503);return J.json({schemaChanged:await bj8(G,J.req.param("sha"))})}catch(G){if(G instanceof pu)return J.json({error:G.message},404);return ks(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Mg0(J);if(!G)return J.json(Rg0,503);let W=await xj8(G,J.req.param("sha"),{coAuthor:QO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof pu)return J.json({error:G.message},404);if(G instanceof Ms)return J.json({error:"main-moved"},409);return ks(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=cj8(J);if(!W)return J.json({error:"site tokens not configured"},503);return J.json({site:G.site,tokens:await W.list(G.organizationId,G.site)})}),Z.post("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=cj8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await ZR(K,G.packagePath,await K.getDefaultBranch());if(await Ap(J.var.studioContext.storage.virtualMcps,{id:G.virtualMcpId,organizationId:G.organizationId,metadata:G.metadata},H,J.var.studioContext.auth?.user?.id??"system"),!H)return J.json({error:"not a Blocks v8 site"},409);return J.json(await W.issue(G.organizationId,G.site))}catch(K){return ks(J,K)}}),Z}var dK5,Rg0;var dj8=L(()=>{CF();K8();Qg0();IG();SF();A5();$B();HT1();xQ0();zg0();gj8();wT1();n60();QR();zp();u1();vR();dK5=Us(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await TQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!MQ(await r7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=JW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await RD0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return ks($,H)}let K=await qD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Pp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:ZB(G),repository:W,metadata:G}),Z()}),Rg0={error:"hosted delivery not configured"}});var ij8=($)=>{let Z=new Z1;if(Z.use("*",fo),Z.use("*",DU8),Z.route("/",NU8($.voiceSessions)),Z.route("/",Ky0()),Z.route("/",sU8()),Z.route("/",KN8()),Z.route("/",iU8()),Z.route("/",NL8()),Z.route("/",DL8()),Z.route("/",XL8()),Z.route("/",FL8()),Z.route("/",GL8()),Z.route("/",ey0()),Z.route("/tools",zL8()),Z.route("/",wL8()),Z.route("/",gD8({kvStorage:$.kvStorage})),Z.route("/",fD8()),Z.route("/fs",oD8({getConnection:$.getNatsConnection})),Z.route("/sandbox",sO8()),Z.route("/decofile",Ij8()),Z.route("/hosted",mj8()),Z.route("/",ZL8()),Z.route("/",rD8()),Z.route("/deco-sites",Fy0()),Z.route("/hosting",RU8()),Z.route("/monitor",yU8()),Z.route("/order-monitor",lU8()),Z.route("/sso",Qy0()),Z.route("/",$g0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",PU8()),$.mountDevAssets)Z.route("/dev-assets",jy0({orgFromPath:!0}));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);for(let Q of OA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",gW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of OA1)Z.route(Q,eD8());return Z.route("/mcp",Qx0()),Z.route("/mcp/self",oy0()),Z.route("/mcp",Jx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var pj8=L(()=>{K8();BU8();LU8();if0();zU8();mz1();MU8();gU8();cU8();wy0();w2();gz1();rU8();oz1();yD8();hD8();sD8();aD8();rZ0();kz1();Gx0();LA1();$L8();QL8();JL8();WL8();EA1();BL8();LL8();EL8();PA1();AL8();zA1();Yx0();rO8();kj8();dj8()});import{z as nu}from"zod";class PT1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new oj8.Kvm(Vg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Vg0.StorageType.Memory,ttl:sj8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?tj8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await J$(200);continue}let G=nj8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await J$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,nj8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new R1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(Y){let X=await this.kv(),J=`agent.${Z.conversationKey}`,G=await X.get(J),W=G?.operation==="PUT"?tj8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Vg0,oj8,sj8,nj8,tj8;var rj8=L(()=>{BG();kB();p$();Vg0=_(bH(),1),oj8=_(_q(),1),sj8=_(o2(),1),nj8=new TextEncoder,tj8=nu.discriminatedUnion("state",[nu.object({state:nu.literal("ready"),agentId:nu.string()}),nu.object({state:nu.literal("creating"),expiresAt:nu.number()})])});import{z as Cs}from"zod";function pK5($){return{model:$.model,instructions:`${vt$}
|
|
4494
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class zT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:pK5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var aj8=L(()=>{kB()});var ej8;var $w8=L(()=>{ej8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function AT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:ej8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:zO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var Zw8=L(()=>{kB();$w8()});import{z as pJ}from"zod";import{createHash as nK5,createHmac as tK5}from"crypto";class Ig0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=nK5("sha256").update(JSON.stringify(AT1($))).digest("hex"),this.conversationKey=tK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Ig0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...AT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var Qw8=L(()=>{Zw8()});import{createHmac as oK5,timingSafeEqual as sK5}from"crypto";import{z as Ss}from"zod";function Xw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return oK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Jw8($,Z){let Q=Buffer.from(JSON.stringify(Yw8.parse($))).toString("base64url");return`${Q}.${Xw8(Q,Z)}`}function Gw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(Xw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!sK5(W,G))return null;try{let K=Yw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Yw8;var Ww8=L(()=>{kB();Yw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as TT1}from"zod";function Kw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return qT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var qT1;var Hw8=L(()=>{qT1=TT1.object({provider:TT1.enum(["elevenlabs","openai"]),model:TT1.string().trim().min(1).max(128)})});import{createHash as rK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${rK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class MT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new Fw8.Kvm(Cg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Cg0.StorageType.Memory,ttl:Uw8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=Kw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+zO},W=Jw8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?kg0.parse(F.json()):null,N=RT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:vs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=Gw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?kg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,RT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?kg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,RT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(vs($));if(Q?.operation==="PUT"&&kg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Cg0,Fw8,Uw8,kg0,RT1;var Nw8=L(()=>{BG();kB();Ww8();Hw8();Cg0=_(bH(),1),Fw8=_(_q(),1),Uw8=_(o2(),1),kg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:qT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),RT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function WH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function KH5($,Z,Q){try{return JSON.parse($)}catch{throw new Lw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function HH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:KH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function FH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?TN(Q.function.parameters):TN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function UH5($){if(!$)return;return{openai:{response_format:$}}}function NH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Bw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Dw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var aK5=256,eK5,$H5,ZH5,QH5,YH5,XH5,JH5,GH5,Lw8,Ow8,jw8;var ww8=L(()=>{l4();K8();Fs();HU();eK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),$H5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),ZH5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array($H5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),QH5=m1.object({type:m1.literal("text")}),YH5=m1.object({type:m1.literal("json_object")}),XH5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),JH5=m1.union([QH5,YH5,XH5]),GH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(ZH5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(eK5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:JH5.optional(),user:m1.string().optional()});Lw8=class Lw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};Ow8=new Z1;Ow8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("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(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=GH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=WH5(J.model);if(!G)return $.json(YD("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 w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>cA(E.providerId));if(!w)return $.json(YD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=HH5(J.messages),N=J.tools?FH5(J.tools):void 0,B=UH5(J.response_format),D=NH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Bw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=aK5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:Dw8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=Bw8(F,U,N,J,B,$.req.raw.signal),w=await RO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:Dw8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});jw8=Ow8});function BH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function Ew8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!S5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!BH5(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 Pw8=L(()=>{K8();eY()});var Sg0;var VT1=L(()=>{Sg0={name:"decocms",version:"4.508.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 dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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","@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",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@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 OH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??LH5}}var zw8,LH5="https://ph.studio.decocms.com",Aw8;var Tw8=L(()=>{K8();A10();Zu();H9();u1();jo();Lz1();VT1();zw8=new Z1;zw8.get("/",($)=>{let Z={version:Sg0.version,theme:n3$(),...UF().logo&&{logo:UF().logo},...fO()&&{internalUrl:L$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:XF8(),posthog:OH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:TU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Aw8=zw8});import{z as R$}from"zod";var jH5,qw8;var Rw8=L(()=>{jH5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),qw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(jH5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Mw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function _g0($,Z={}){let Q=await fetch(Mw8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return qw8.parse(await Q.json())}async function Vw8($,Z={}){let Q=await fetch(Mw8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var IT1=L(()=>{Rw8();xL()});import{join as Iw8}from"path";async function EH5($){try{let Z=await _g0($,{signal:AbortSignal.timeout(wH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||mw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function PH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||mw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
|
|
4494
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class zT1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:pK5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:Cs.object({session:Cs.object({id:Cs.string().min(1)}),transport:Cs.object({type:Cs.literal("webrtc"),sdp:Cs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var aj8=L(()=>{kB()});var ej8;var $w8=L(()=>{ej8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function AT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:St$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:ej8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:zO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var Zw8=L(()=>{kB();$w8()});import{z as pJ}from"zod";import{createHash as nK5,createHmac as tK5}from"crypto";class Ig0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=nK5("sha256").update(JSON.stringify(AT1($))).digest("hex"),this.conversationKey=tK5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Ig0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=pJ.object({agents:pJ.array(pJ.object({agent_id:pJ.string(),name:pJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return pJ.object({platform_settings:pJ.object({auth:pJ.object({enable_auth:pJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...AT1(this.config)},AbortSignal.timeout(15000));return pJ.object({agent_id:pJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return pJ.object({token:pJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var Qw8=L(()=>{Zw8()});import{createHmac as oK5,timingSafeEqual as sK5}from"crypto";import{z as Ss}from"zod";function Xw8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return oK5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Jw8($,Z){let Q=Buffer.from(JSON.stringify(Yw8.parse($))).toString("base64url");return`${Q}.${Xw8(Q,Z)}`}function Gw8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(Xw8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!sK5(W,G))return null;try{let K=Yw8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+zO)return null;return K.data}catch{return null}}var Yw8;var Ww8=L(()=>{kB();Yw8=Ss.object({sessionId:Ss.string().uuid(),organizationId:Ss.string().min(1).max(256),userId:Ss.string().min(1).max(256),threadId:Ss.string().min(1).max(256),expiresAt:Ss.number().int().positive()})});import{z as TT1}from"zod";function Kw8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return qT1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var qT1;var Hw8=L(()=>{qT1=TT1.object({provider:TT1.enum(["elevenlabs","openai"]),model:TT1.string().trim().min(1).max(128)})});import{createHash as rK5}from"crypto";import{z as _s}from"zod";function vs($){return`user.${rK5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class MT1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new Fw8.Kvm(Cg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Cg0.StorageType.Memory,ttl:Uw8.nanos(zO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=Kw8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+zO},W=Jw8(G,this.deps.secret),K=await this.kv(),H=vs(G),F=await K.get(H),U=F?.operation==="PUT"?kg0.parse(F.json()):null,N=RT1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:vs($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=Gw8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=vs(Q),J=await Y.get(X),G=J?.operation==="PUT"?kg0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,RT1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=vs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?kg0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,RT1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(vs($));if(Q?.operation==="PUT"&&kg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(vs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Cg0,Fw8,Uw8,kg0,RT1;var Nw8=L(()=>{BG();kB();Ww8();Hw8();Cg0=_(bH(),1),Fw8=_(_q(),1),Uw8=_(o2(),1),kg0=_s.object({sessionId:_s.string().uuid(),expiresAt:_s.number(),connected:_s.boolean().optional(),conversation:qT1.optional(),characters:_s.number().int().nonnegative(),requests:_s.number().int().nonnegative()}),RT1=new TextEncoder});import{z as m1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function WH5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function KH5($,Z,Q){try{return JSON.parse($)}catch{throw new Lw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function HH5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:KH5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function FH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?TN(Q.function.parameters):TN({type:"object",properties:{}});return[Q.function.name,s$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function UH5($){if(!$)return;return{openai:{response_format:$}}}function NH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Bw8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Dw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var aK5=256,eK5,$H5,ZH5,QH5,YH5,XH5,JH5,GH5,Lw8,Ow8,jw8;var ww8=L(()=>{l4();K8();Fs();HU();eK5=m1.object({type:m1.literal("function"),function:m1.object({name:m1.string(),description:m1.string().optional(),parameters:m1.record(m1.string(),m1.unknown()).optional()})}),$H5=m1.object({id:m1.string(),type:m1.literal("function"),function:m1.object({name:m1.string(),arguments:m1.string()})}),ZH5=m1.discriminatedUnion("role",[m1.object({role:m1.literal("system"),content:m1.string(),name:m1.string().optional()}),m1.object({role:m1.literal("user"),content:m1.union([m1.string(),m1.array(m1.union([m1.object({type:m1.literal("text"),text:m1.string()}),m1.object({type:m1.literal("image_url"),image_url:m1.object({url:m1.string(),detail:m1.string().optional()})})]))]),name:m1.string().optional()}),m1.object({role:m1.literal("assistant"),content:m1.string().nullable().optional(),name:m1.string().optional(),tool_calls:m1.array($H5).optional()}),m1.object({role:m1.literal("tool"),content:m1.string(),tool_call_id:m1.string()})]),QH5=m1.object({type:m1.literal("text")}),YH5=m1.object({type:m1.literal("json_object")}),XH5=m1.object({type:m1.literal("json_schema"),json_schema:m1.object({name:m1.string(),description:m1.string().optional(),schema:m1.record(m1.string(),m1.unknown()),strict:m1.boolean().optional()})}),JH5=m1.union([QH5,YH5,XH5]),GH5=m1.object({model:m1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:m1.array(ZH5),stream:m1.boolean().optional().default(!1),temperature:m1.number().min(0).max(2).optional(),max_tokens:m1.number().positive().optional(),top_p:m1.number().min(0).max(1).optional(),frequency_penalty:m1.number().min(-2).max(2).optional(),presence_penalty:m1.number().min(-2).max(2).optional(),stop:m1.union([m1.string(),m1.array(m1.string())]).optional(),tools:m1.array(eK5).optional(),tool_choice:m1.union([m1.literal("auto"),m1.literal("none"),m1.literal("required"),m1.object({type:m1.literal("function"),function:m1.object({name:m1.string()})})]).optional(),response_format:JH5.optional(),user:m1.string().optional()});Lw8=class Lw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};Ow8=new Z1;Ow8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(YD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(YD("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(YD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=GH5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(YD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=WH5(J.model);if(!G)return $.json(YD("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 w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>cA(E.providerId));if(!w)return $.json(YD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(YD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=HH5(J.messages),N=J.tools?FH5(J.tools):void 0,B=UH5(J.response_format),D=NH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Bw8(F,U,N,J,B,$.req.raw.signal);try{let E=Ut(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:R},finish_reason:null}]})})};for await(let R of E.stream){if(!P&&(R.type==="text-delta"||R.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(R.type==="text-delta"){if(z+=R.text,z.length>=aK5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:R.toolCallId,type:"function",function:{name:R.toolName,arguments:JSON.stringify(R.input)}}]},finish_reason:null}]})})}else if(R.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:Dw8(R.finishReason)}],usage:R.totalUsage?{prompt_tokens:R.totalUsage.inputTokens??0,completion_tokens:R.totalUsage.outputTokens??0,total_tokens:R.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=Bw8(F,U,N,J,B,$.req.raw.signal),w=await RO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:Dw8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(YD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(YD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(YD(X.message,"server_error"),500)}});jw8=Ow8});function BH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function Ew8(){let $=new Z1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=S0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!S5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(nA(U)!==J)continue;if(!BH5(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 Pw8=L(()=>{K8();eY()});var Sg0;var VT1=L(()=>{Sg0={name:"decocms",version:"4.509.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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","@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",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.5.1","@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 OH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??LH5}}var zw8,LH5="https://ph.studio.decocms.com",Aw8;var Tw8=L(()=>{K8();A10();Zu();H9();u1();jo();Lz1();VT1();zw8=new Z1;zw8.get("/",($)=>{let Z={version:Sg0.version,theme:n3$(),...UF().logo&&{logo:UF().logo},...fO()&&{internalUrl:L$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&U2(),plansEnabled:B0().plansEnabled,auth:XF8(),posthog:OH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:TU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Aw8=zw8});import{z as R$}from"zod";var jH5,qw8;var Rw8=L(()=>{jH5=R$.object({check_id:R$.string(),title:R$.string(),description:R$.string().optional(),impact:R$.string().optional(),why:R$.string().optional(),category:R$.string(),severity:R$.string(),value_band:R$.string().optional(),value_driver:R$.string().optional(),controllability:R$.string().optional(),pages:R$.array(R$.string()),tasks:R$.array(R$.string()),evidence:R$.string(),sample_scope:R$.string().optional(),sources:R$.array(R$.string())}),qw8=R$.object({domain:R$.string(),brand:R$.string(),favicon:R$.string().optional(),scanned_at:R$.string().nullable(),lang:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),totals:R$.object({measured:R$.number(),registry_total:R$.number(),passed:R$.number(),failed:R$.number(),blocked:R$.number()}),buckets:R$.array(R$.object({id:R$.enum(["critical","important","worth"]),label:R$.string(),items:R$.array(jH5)})),passing:R$.object({count:R$.number(),items:R$.array(R$.object({check_id:R$.string(),title:R$.string()}))}),not_measured:R$.object({count:R$.number(),groups:R$.array(R$.object({reason:R$.string(),label:R$.string(),count:R$.number(),checks:R$.array(R$.string())}))}),categories:R$.array(R$.object({key:R$.string(),label:R$.string(),score:R$.number().nullable(),band:R$.string().nullable(),pass:R$.number(),fail:R$.number()})),screenshots:R$.array(R$.object({url:R$.string(),page_type:R$.string().optional(),viewport:R$.enum(["desktop","mobile"]),image_url:R$.string()}))})});function Mw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function _g0($,Z={}){let Q=await fetch(Mw8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return qw8.parse(await Q.json())}async function Vw8($,Z={}){let Q=await fetch(Mw8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var IT1=L(()=>{Rw8();xL()});import{join as Iw8}from"path";async function EH5($){try{let Z=await _g0($,{signal:AbortSignal.timeout(wH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||mw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function J3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function PH5($,Z){let Q=qu($),Y=Z?.brand?.trim()||mw1(Q),X=_G8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=vG8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${J3(W)}</title>`,`<meta name="description" content="${J3(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="${J3(W)}" />`,`<meta property="og:description" content="${J3(K)}" />`,`<meta property="og:url" content="${J3(G)}" />`,`<meta property="og:image" content="${J3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${J3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${J3(W)}" />`,`<meta name="twitter:description" content="${J3(K)}" />`,`<meta name="twitter:image" content="${J3(H)}" />`,`<meta name="twitter:image:alt" content="${J3(F)}" />`,`<link rel="canonical" href="${J3(G)}" />`,`<link rel="alternate" type="text/markdown" href="${J3(G)}.md" />`,`<link rel="icon" href="${J3(X)}" sizes="any" />`].join(`
|
|
4495
4495
|
`)}function zH5($,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}
|
|
4496
4496
|
</head>`)}function kw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=qu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(Iw8($,"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(`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(AH5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=qu(Q.req.param("file").replace(/\.md$/,""));try{let X=await Vw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(TH5)});if(X===null)return Q.text("Deco Score not found",404);return Q.body(X,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?Iw8($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await EH5(qu(Y)),K=PH5(Y,W);return Q.html(zH5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var wH5=2500,AH5=1e4,TH5=1e4;var Cw8=L(()=>{K8();xL();IT1();u1()});function vg0($,Z){return fetch(`${SK({})}${$}`,Z)}async function qH5($,Z){let Q=await _g0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function VH5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:Y}}var RH5,MH5=8192,Lj,Sw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},_w8;var vw8=L(()=>{K8();Q3();pK();xL();IT1();RH5=new Set(["complete","errored","terminated","unknown"]);Lj=new Z1;Lj.use("*",async($,Z)=>{let Q=await B4.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});Lj.use("/link-token/*",Sw8);Lj.use("/suggest",Sw8);Lj.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await qH5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Lj.post("/run",C6({maxSize:MH5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=VH5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await vg0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${HP({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});Lj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await vg0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${HP({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:RH5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Lj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await vg0(`/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)}});Lj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await vg0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});_w8=Lj});var IH5=1048576,kT1;var bw8=L(()=>{K8();Q3();u1();$z1();kT1=new Z1;kT1.post("/webhook",C6({maxSize:IH5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=B0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!jH8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=wH8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await EH8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as kH5}from"crypto";function _H5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return kH5(Buffer.from(X),Buffer.from(Y))}function vH5($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function xw8($){let Z=new Z1;return Z.post("/webhook",C6({maxSize:CH5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!_H5(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!SH5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});return m50().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=vH5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await bH5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function bH5($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await $48(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var CH5=5242880,SH5;var fw8=L(()=>{K8();Q3();CX();gQ();SH5=new Set(["check_suite","issue_comment"])});import{DBOS as ST1,SchedulerMode as xH5}from"@dbos-inc/dbos-sdk";async function yH5(){try{return await gH5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function gH5(){if(!c50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (ZF1(),$F1)),Promise.resolve().then(() => (eH1(),aH1))]),Q=await m50(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=Fp$({sandboxes:J,pools:G,records:await Up$(X,J,G),legacyPools:oC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await Np$(K,jj0(X,new GJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:aC0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function hH5($,Z){let Q=await ST1.runStep(yH5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function yw8(){if(CT1)return;if(!B0().agentSandboxEnabled||!c50())return;CT1=ST1.registerWorkflow(hH5,{name:"sandboxCredentialPushWorkflow"}),ST1.registerScheduled(CT1,{name:"sandboxCredentialPushWorkflow",crontab:fH5,mode:xH5.ExactlyOncePerIntervalWhenActive})}var fH5="1,11,21,31,41,51 * * * *",CT1=null;var gw8=L(()=>{S3();Nw();l31();eC0();sC0();CX();u1()});function hw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=J$8(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new ZQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var uw8=L(()=>{K8();Nw();VN1();MO()});function bg0(){try{return B0().jiraSettleSeconds*1000}catch{return ez}}function lw8($,Z){let Q=Z.windowMs??ez,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=uH5($,Q);if((X.id&&Y.toId?X.id===Y.toId:!1)||!X.id&&X.name===Y.to)return{kind:"returned",change:Y};return{kind:"moved",change:Y,from:X}}function uH5($,Z){for(let Y=$.length-2;Y>=0;Y--){let X=$[Y],J=$[Y+1];if(X&&J&&J.at-X.at>=Z)return{id:X.toId,name:X.to}}let Q=$[0];return{id:Q?.fromId??null,name:Q?.from??null}}var _T1=L(()=>{gO();u1()});function cw8($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,Y=Z.issue?.key,X=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof Y!=="string"||typeof X!=="string"&&typeof X!=="number")return null;let J=Z.changelog?.items?.find((G)=>G.field==="status");if(!J||typeof J.toString!=="string")return null;return{issueId:String(Q),issueKey:Y,toStatus:J.toString,changelogId:String(X)}}async function vT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=lw8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:bg0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:az(N)})),H=n98(K)&&Z.boardId?p98(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=i98(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await YH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var bT1=L(()=>{WU();MO();tt();_T1()});import{DBOS as I2,SchedulerMode as lH5}from"@dbos-inc/dbos-sdk";function mw8($){fT1=$}function gT1(){if(!fT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return fT1}function hT1(){let $=gT1();return new aO($.db,new GJ($.encryptionKey))}async function pH5($){try{let Z=await hT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(gT1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${mH5}m"`,W=0,K;for(let H=0;H<dH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await vT1(Q,Z,{issueId:U.id,now:Date.now()})==="fired")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,fired:W}}catch(Z){return{integrationId:$,fired:0,error:Z instanceof Error?Z.message:String(Z)}}}async function nH5($,Z){let Q=await I2.runStep(()=>hT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>I2.runStep(()=>pH5(X),{name:`sweepJira:${X}`})));for(let X of Y)if(X.error)console.warn(`[jira-trigger] integration ${X.integrationId} failed: ${X.error}`);else if(X.fired>0)console.log(`[jira-trigger] integration ${X.integrationId} fired ${X.fired} automation(s) the webhook missed`)}async function tH5($,Z){try{let Q=await hT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(gT1().db,Q.organizationId);if(!Y)return"disabled";let X=await vT1(Y,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(X==="fired")console.log(`[jira-trigger] fired an automation for ${Z.issueKey} after it settled`);else if(X==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no fire`);return X}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function oH5($,Z){await I2.sleep(bg0()+iH5),await I2.runStep(()=>tH5($,Z),{name:"settleJiraMove"})}async function dw8($,Z){if(!yT1)throw Error("[jira-trigger] settle workflow is not registered");await I2.startWorkflow(yT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function iw8(){if(xT1)return;yT1=I2.registerWorkflow(oH5,{name:"jiraSettleWorkflow"}),xT1=I2.registerWorkflow(nH5,{name:"jiraTriggerSweepWorkflow"}),I2.registerScheduled(xT1,{name:"jiraTriggerSweepWorkflow",crontab:cH5,mode:lH5.ExactlyOncePerIntervalWhenActive})}var cH5="*/5 * * * *",mH5=20,dH5=5,iH5=5000,fT1=null,yT1=null,xT1=null;var uT1=L(()=>{Nw();pz();MO();_T1();bT1()});function pw8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=ZE($.db);async function Y(J,G){let W=cw8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await dw8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",C6({maxSize:sH5}),async(J)=>{let G=J.req.param("secret");if(!await Z.getByWebhookSecret(G))return J.json({error:"Unknown webhook"},404);let K;try{K=await J.req.json()}catch{return J.json({error:"Body must be JSON"},400)}return Y(G,K).catch((H)=>{console.error("[jira-webhook] trigger failed",H)}),J.body(null,202)}),X}var sH5=1048576;var nw8=L(()=>{K8();Q3();Nw();uT1();bT1();q00()});function tw8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var ow8,rH5,aH5,sw8;var rw8=L(()=>{K8();BG();xt();ii();ow8=new Z1,rH5=["range","if-none-match","if-modified-since"],aH5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];ow8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(xo($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new R1(401,{message:"Authentication required"})}if(!Q)throw new R1(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new R1(400,{message:"Missing file key"});let X=await qZ0(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&bK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(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 tw8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of rH5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new R1(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new R1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of aH5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),tw8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});sw8=ow8});var yQ0=y((tu)=>{var eH5=tu&&tu.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),$F5=tu&&tu.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))eH5(Z,$,Q)};Object.defineProperty(tu,"__esModule",{value:!0});$F5(B3(),tu)});var $E8=y((aw8)=>{Object.defineProperty(aw8,"__esModule",{value:!0});aw8.version=void 0;aw8.version="3.4.0"});var YE8=y((XD)=>{var ZF5=XD&&XD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(XD,"__esModule",{value:!0});XD.NodeTransport=XD.VERSION=void 0;XD.nodeResolveHost=WF5;var J9=yQ0(),QF5=V0("net"),lT1=V0("tls"),YF5=V0("path"),ZE8=V0("fs"),XF5=ZF5(V0("dns")),JF5=$E8();XD.VERSION=JF5.version;var GF5="nats.js";class QE8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=GF5,this.version=XD.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,J9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw J9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new J9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new J9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,J9.deferred)(),Q,Y=(0,QF5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,J9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=J9.DataBuffer.concat(...this.yields),X=(0,J9.extractProtocolMessage)(Y);if(X!=="")try{let J=J9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,J9.deferred)();try{if($=(0,YF5.resolve)($),!(0,ZE8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,ZE8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,J9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,J9.deferred)();try{let X=(0,lT1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new J9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,J9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,J9.deferred)();try{let Y=(0,lT1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new J9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,J9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,J9.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 lT1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,J9.render)($)}`);let Z=(0,J9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,J9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,J9.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}}XD.NodeTransport=QE8;function WF5($){let Z=(0,J9.deferred)();return XF5.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var KE8=y((WE8)=>{Object.defineProperty(WE8,"__esModule",{value:!0});WE8.connect=KF5;var XE8=YE8(),JE8=yQ0(),GE8=yQ0();function KF5($={}){if((0,GE8.hasWsProtocol)($))return Promise.reject(GE8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,JE8.setTransportFactory)({factory:()=>{return new XE8.NodeTransport},dnsResolveFn:XE8.nodeResolveHost}),JE8.NatsConnectionImpl.connect($)}});var HE8=y((Oj)=>{var FF5=Oj&&Oj.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),UF5=Oj&&Oj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))FF5(Z,$,Q)};Object.defineProperty(Oj,"__esModule",{value:!0});Oj.connect=void 0;var NF5=KE8();Object.defineProperty(Oj,"connect",{enumerable:!0,get:function(){return NF5.connect}});UF5(yQ0(),Oj)});function NE8($){let Z=$?.connectFn??OF5,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:LF5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=k7(DF5,BF5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?xg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?xg0.usernamePasswordAuthenticator(B.user,B.password):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=UE8.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function OF5($){return FE8.connect($)}var xg0,FE8,UE8,BF5=100,DF5=3000,LF5=3000;var BE8=L(()=>{p$();xg0=_(o2(),1),FE8=_(HE8(),1),UE8=_(bH(),1)});function fg0($,Z){return`${$}.${Z}`}class cT1{cache;constructor($){this.cache=eN({ttlMs:$?.ttlMs??jF5,maxSize:$?.maxSize??wF5})}async get($,Z){return this.cache.get(fg0($,Z))??null}async set($,Z,Q){this.cache.set(fg0($,Z),Q)}async invalidate($,Z){this.cache.delete(fg0($,Z)),this.cache.delete(fg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var jF5=600000,wF5=5000;var DE8=()=>{};function yg0($,Z){return`${$}:${Z}`}function mT1($){let Z=eN({ttlMs:$?.ttlMs??EF5,maxSize:$?.maxSize??PF5}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(LE8,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(yg0(K,H))},set(K,H,F){Z.set(yg0(K,H),F)},invalidate(K,H){Z.delete(yg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(LE8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(yg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var LE8="studio.ai-provider-keys.invalidate",EF5=30000,PF5=5000;var OE8=()=>{};class dT1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var jE8=($)=>{let Z;return()=>Z??=$()},iT1,pT1;var wE8=L(()=>{b6();iT1=jE8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),pT1=jE8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function VF5($=zE8){return{name:hB,subjects:[`${OL1}.>`],storage:PU.StorageType.File,max_age:TF5,max_bytes:RF5,max_msgs_per_subject:MF5,discard:PU.DiscardPolicy.Old,retention:PU.RetentionPolicy.Limits,duplicate_window:qF5,num_replicas:$}}class AE8{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 EE8($){let Z=PE8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function SF5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,AF5().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 _F5($,Z){return $.info?.cluster?Z:1}function vF5($){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 nT1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=VF5(X);try{await Y.streams.info(hB),await Y.streams.update(hB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(hB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(hB),await Y.streams.add(J);else throw G}},Q=await e$(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await PU.jetstreamManager($),X=_F5($,zE8);try{await Z(Y,X)}catch(J){if(X<=1||!vF5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:nt});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=SF5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=P98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=wL1(H,{runId:Z}),N=performance.now()-F;iT1().record(N),pT1().add(1,{"org.id":Y??"unknown"}),CF5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?EE8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),kF5)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 e$(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:EE8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=wL1(Z,{runId:$,dedup:Q});iT1().record(performance.now()-X),pT1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=E98({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?PU.DeliverPolicy.New:PU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=rz($),W;try{W=await e$(async()=>{return(await Y.consumers.get(hB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:nt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Pb0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Ob0()).pipeThrough(jb0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(hB,{filter:rz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var PU,PE8,zF5=($)=>{let Z;return()=>Z??=$()},AF5,TF5=86400000000000,qF5=120000000000,RF5=4294967296,zE8,MF5=500000,IF5,kF5,CF5;var TE8=L(()=>{p$();EL1();zb0();wb0();b6();wE8();PU=_(bH(),1),PE8=_(o2(),1),AF5=zF5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),zE8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);IF5=process.env.STREAM_ENCODE_TRACE==="1",kF5=process.env.DECOPILOT_STREAM_TRACE==="1";CF5=IF5?new AE8:null});function gg0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,cU(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var qE8=L(()=>{q8()});class tT1{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 bF5($,Z,Q={}){let Y=$.startsWith("thread:")?aF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function oT1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await VB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await IB($,{threadId:X,runBranch:G?.branch}),K=await l40($,Q,KD0(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=bF5(W,await AS0($,X),{flat:Mh(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await wW(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var RE8=L(()=>{A5();yQ();gQ()});async function ME8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!ah(Q))return!1;if(!await gd($,Y,m10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=K1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Q9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),H8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var VE8=L(()=>{jG();v8();xX();Vt();JU();c5()});function lF5($){return $ instanceof qX}function IE8($,Z){return Z-$>=hF5}class sT1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??xF5;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??yF5,Q=this.options.itemIntervalMs??fF5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-PN1),iB1);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()-uF5));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await mB1(this.taskBoard,X,Y),await dB1(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==K1.progress||uJ(W)||W.assigneeId!==o$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await oT1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!IE8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceFromProgress(X,J,K1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.review,reason:H}}).catch(()=>{}),H8(J,F),await GU(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==K1.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await _O(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),lF5(G)){await this.returnToBacklog(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+gF5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToBacklog($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==K1.progress)return;let X=await this.taskBoard.returnToBacklogAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:K1.progress,to:K1.intake,reason:Q,retriesSpent:Y.retryAttempts}}).catch(()=>{}),H8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to backlog failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!IE8(BL(Q,Z.reviewCycleStartedAt),Date.now()))return;await GU($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!uJ(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await oT1(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await Ct(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 ME8(G,Y,W))return!0;if(!X)return!1;if(await O48(G,Y))return!0;if(!hB1(W))return!1;return await kt(G,Y,{previewMatchesHead:uB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var xF5=60000,fF5=300000,yF5=50,gF5=60000,hF5=900000,uF5=120000;var kE8=L(()=>{v8();Ov0();RE8();vO();bt();JU();VE8();c5();WW();pB1();gQ();o90()});async function CE8($,Z,Q=ez){return await _E8($,Z,Q,{})}async function SE8($,Z,Q,Y=ez){return await _E8($,Q,Y,{activityId:Z})}async function _E8($,Z,Q,Y){let X=await $.automations.findActiveBoardColumnTriggers();if(X.length===0)return 0;let J=new Map;for(let K of X){let H=K.automation.organization_id;J.set(H,[...J.get(H)??[],K])}let G=await $.taskBoard.listSettledTransitions({organizationIds:[...J.keys()],since:new Date(Z-cF5),settledBefore:new Date(Z-Q),limit:mF5,...Y}),W=0;for(let K of G)try{let H=(J.get(K.organizationId)??[]).filter((U)=>U.column_key===K.to&&Date.parse(U.created_at)<Date.parse(K.occurredAt));if(H.length===0)continue;let F=await dF5($.taskBoard,K,Q);for(let U of H){if(!o98(U,{from:F,to:K.to}))continue;if(!await $.automations.claimTriggerFire(U.id,K.activityId))continue;await $.fire({automationId:U.automation_id,organizationId:K.organizationId,triggerId:U.id,target:{kind:"card",itemId:K.itemId,columnKey:K.to,eventKey:K.activityId,movedBy:K.actorId}},{idempotencyKey:`board:${U.id}:${K.activityId}`}),W++}}catch(H){console.error(`[automations] board transition ${K.activityId} failed`,H)}return W}async function dF5($,Z,Q){let X=(await $.listActivity(Z.itemId,Z.organizationId)).flatMap((J)=>{let G=J.data;if(J.action!=="status_changed"||typeof G?.to!=="string")return[];let W=typeof G.from==="string"?G.from:null;return W===G.to?[]:[{from:W,to:G.to,occurredAt:J.occurredAt}]});return X.length>0?s98(X,Q):Z.from}var cF5=1800000,mF5=200;var vE8=L(()=>{gO()});import{DBOS as k2,DBOSClient as iF5,SchedulerMode as pF5}from"@dbos-inc/dbos-sdk";function bE8($){jj=$}async function oF5($){if(!jj)return 0;try{return await SE8(jj,$,Date.now(),jj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function sF5(){if(!jj)return 0;try{return await CE8(jj,Date.now(),jj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function rF5($){await k2.sleep((jj?.settleMs??ez)+tF5),await k2.runStep(()=>oF5($),{name:"settleBoardMove"})}async function aF5($,Z){let Q=await k2.runStep(()=>sF5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function fE8($){let Z=jj;if(!Z||!aT1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!k2.isWithinWorkflow()){await k2.startWorkflow(aT1,{workflowID:Q,queueName:f2})($.activityId);return}let Y=await iF5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:xE8,queueName:f2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function yE8(){if(rT1)return;aT1=k2.registerWorkflow(rF5,{name:xE8}),rT1=k2.registerWorkflow(aF5,{name:"boardTransitionSweepWorkflow"}),k2.registerScheduled(rT1,{name:"boardTransitionSweepWorkflow",crontab:nF5,mode:pF5.ExactlyOncePerIntervalWhenActive})}var nF5="*/5 * * * *",tF5=2000,jj=null,xE8="boardTransitionSettleWorkflow",aT1=null,rT1=null;var gE8=L(()=>{gO();vE8()});import{readdir as eF5,rm as hg0}from"fs/promises";import{join as ug0}from"path";async function lg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-$U5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await ou($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await hE8($,X,Z);else if(!X.startsWith(".")){let J=ug0($,X),G=await ou(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await hE8(J,K,Z)}if((await ou(J)).length===0)await hg0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function hE8($,Z,Q){let Y=0,X=ug0($,Z),J=await ou(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=ug0(X,W),H=await ou(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=ug0(K,U);await hg0(B,{recursive:!0,force:!0}),Y++}}if((await ou(K)).length===0)await hg0(K,{recursive:!0,force:!0})}if((await ou(X)).length===0)await hg0(X,{recursive:!0,force:!0});return Y}async function ou($){try{return(await eF5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var $U5=30;var eT1=()=>{};import{DBOS as $q1,SchedulerMode as ZU5}from"@dbos-inc/dbos-sdk";async function YU5(){let $=[MH(),Xl(),ND()],Z=0;for(let Q of $)try{Z+=await lg0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function XU5($,Z){await $q1.runStep(()=>YU5(),{name:"monitoringRetention"})}function lE8(){if(uE8)return;uE8=!0;let $=$q1.registerWorkflow(XU5,{name:"monitoringRetentionWorkflow"});$q1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:QU5,mode:ZU5.ExactlyOncePerIntervalWhenActive})}var QU5="23 4 * * *",uE8=!1;var cE8=L(()=>{cW();eT1()});function mE8($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await vY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await EP($.db,Z,Y.role);return X.boundAuth=MP1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new RT(Q,void 0,X.boundAuth,Y.role,"self"),nz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var dE8=L(()=>{XX();_F()});function iE8(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=gQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>gQ0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${L9.tool}${B}${L9.dim}(${j})${L9.reset}`}else if(N.method)J=`${L9.dim}${gQ0(N.method)}${L9.reset}`}}catch{}}let W=gQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${gQ0(F.slice(0,12))}\u2026${L9.reset}`}else if(X==="/mcp")W=`${L9.mcp}/mcp${L9.reset}`;else if(X==="/mcp/registry")W=`${L9.mcp}/mcp/registry${L9.reset}`;let K=GU5(Y),H=G?"\u25C0":"\u2190";console.log(`${L9.dim}${H}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=JU5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${L9.dim}${D}${L9.reset} ${K}${Y}${L9.reset} ${W}${J?` ${J}`:""} ${N}${U}${L9.reset} ${L9.duration}${B}${L9.reset}`)}}}var L9,JU5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},GU5=($)=>{return L9[$]||L9.reset},gQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var pE8=L(()=>{L9={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 sE8}from"crypto";import{mkdir as WU5,readdir as KU5,rm as nE8,stat as rE8}from"fs/promises";import{join as Qq1,relative as HU5}from"path";import{z as J8}from"zod";function eE8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Qq1(FU5,Z)}function $P8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function Zq1($,Z){let Q=eE8($),Y=$P8(Z);return Qq1(Q,Y)}function UU5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return sE8("sha256",X).update(J).digest("hex")}function oE8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=UU5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${$P8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function ZP8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${sE8("md5","etag").update(Y).digest("hex")}"`}async function QP8($,Z,Q,Y,X){try{let J=await KU5($,{withFileTypes:!0});for(let G of J){let W=Qq1($,G.name),H=HU5(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await QP8(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await rE8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:ZP8(W,F.mtime,F.size)})}catch{}}}}catch{}}function YP8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:J8.object({prefix:J8.string().optional(),maxKeys:J8.number().optional().default(1000),continuationToken:J8.string().optional(),delimiter:J8.string().optional()}),outputSchema:J8.object({objects:J8.array(J8.object({key:J8.string(),size:J8.number(),lastModified:J8.string(),etag:J8.string()})),nextContinuationToken:J8.string().optional(),isTruncated:J8.boolean(),commonPrefixes:J8.array(J8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=eE8(Y);await WU5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await QP8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({contentType:J8.string().optional(),contentLength:J8.number(),lastModified:J8.string(),etag:J8.string(),metadata:J8.record(J8.string(),J8.string()).optional()}),handler:async(X)=>{let J=X,G=Zq1(Y,J.key),W=await rE8(G);return{contentType:nz1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:ZP8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,tE8);return{url:oE8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:J8.object({key:J8.string(),expiresIn:J8.number().optional(),contentType:J8.string().optional()}),outputSchema:J8.object({url:J8.string(),expiresIn:J8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,tE8);return{url:oE8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:J8.object({key:J8.string()}),outputSchema:J8.object({success:J8.boolean(),key:J8.string()}),handler:async(X)=>{let J=X,G=Zq1(Y,J.key);try{return await nE8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:J8.object({keys:J8.array(J8.string()).max(1000)}),outputSchema:J8.object({deleted:J8.array(J8.string()),errors:J8.array(J8.object({key:J8.string(),message:J8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=Zq1(Y,K);try{await nE8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function Yq1($,Z,Q){let Y=YP8(Z,Q),X=new OE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:CZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:J8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:J8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new qW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),NH(X,J,$,"mcp:dev-assets")}async function XP8($,Z,Q,Y){let J=YP8(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var FU5="./data/assets",tE8=3600,aE8,JP8;var GP8=L(()=>{u1();Xo();K8();MH0();Yo();NJ();pO();wy0();aE8=new Z1;aE8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return Yq1($.req.raw,Z,Y)});JP8=aE8});var WP8={};O6(WP8,{mountDevRoutes:()=>NU5});function NU5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return Yq1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await XP8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",JP8);let Q=new Z1;Q.use("*",OU({mountPath:"/api/dev-assets"})),Q.route("/",jy0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var KP8=L(()=>{K8();hz1();wy0();GP8()});var wP8={};O6(wP8,{watchHandler:()=>jP8,resolveVoiceSigningSecret:()=>DP8,resolveCorsOrigin:()=>LP8,isSsoExemptPath:()=>BP8,isAllowedOAuthRedirectUri:()=>OP8,createApp:()=>TU5});import{readFileSync as BU5}from"fs";import{randomBytes as DU5}from"crypto";import{PrometheusSerializer as LU5}from"@opentelemetry/exporter-prometheus";import{DBOS as JD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as wU5,oAuthProtectedResourceMetadata as EU5}from"better-auth/plugins";async function OU5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,FP8(HP8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),FP8(HP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function FP8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function BP8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${ef0}/`)||$.startsWith(`${nf0}/`)}function DP8($){let Z=$.studioJwtSecret||$.betterAuthSecret;if(Z)return Z;return console.warn("STUDIO_JWT_SECRET/BETTER_AUTH_SECRET not set - generating a random secret for voice sessions (not persistent across restarts)"),DU5(32).toString("base64")}function LP8($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function OP8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function TU5($={}){let Z=$.database??E8(),Q=!1;I6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new cT1,K,H,F,U=null;if($.disableNats)K=mT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new sZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(F0)=>{return(async()=>{let G0=F0.getReader();try{while(!0){let{done:P0}=await G0.read();if(P0)break}}catch{}finally{G0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=NE8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=BU5(F0,"utf8")}catch(B8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,B8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=nZ1()?new SZ1({getJetStream:()=>U.getJetStream(),selfListVersion:Sg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new j71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new eh(vB1,{getJetStream:()=>U.getJetStream()}),b$=new eh(s90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let r$=new Qj1({getJetStream:()=>U.getJetStream()});r$.init().catch(()=>{}),G=r$,K=mT1({getConnection:()=>U.getConnection()}),H=new dT1({getConnection:()=>U.getConnection()}),F=new nT1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),hH8(U),U.onReady(()=>{P0?.init().catch((B8)=>{console.error("[McpListCache] Deferred init failed:",B8)}),z0.init().catch((B8)=>{console.error("[SkillCatalogCache] Deferred init failed:",B8)}),j1.init().catch((B8)=>{console.error("[PrReadCache] Deferred init failed:",B8)}),b$.init().catch((B8)=>{console.error("[PrCardCache] Deferred init failed:",B8)}),r$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),y2$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(C2)await C2();_Z1(Y),E71(X),z71(()=>U?.getConnection()??null),bB1(J),Yj1(G);let B={storage:new nc(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>_t(new jW(Z.db),F0,G0,new C3(Z.db))},D=new yD1(B),O=new M70(Z.db),j=new tT1(O);j.start(),YZ8(H),H.start((F0)=>{Gb0(F0),D.execute({type:"CANCEL",taskId:F0}).catch((G0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",G0)})}).catch((F0)=>{console.error("[Decopilot] CancelBroadcast start failed:",F0)}),U?.onReady(()=>{H.start().catch((F0)=>{console.error("[CancelBroadcast] Deferred start failed:",F0)})});let w=()=>U?.getConnection()??null;vz1(w),U?.onReady(()=>vz1(w)),yj1(w),U?.onReady(()=>yj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),C2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),QU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),g2$(),G.teardown(),_Z1(null),E71(null),z71(null),bB1(null),Yj1(null)};let E=new Z1;if(E.use("*",eO1({enabled:(F0)=>bo(F0,"debug")==="1"})),E.use("*",Hh0),E.use("/*",bH8({origin:(F0,G0)=>LP8(F0,{baseUrl:B0().baseUrl,requestOrigin:new URL(G0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(F0,G0)=>{if(await G0(),F0.req.path.includes("/files/"))return;if(F0.req.path.includes("/fs/")&&F0.req.path.endsWith("/read"))return;F0.header("X-Frame-Options","DENY"),F0.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",iE8());E.use("*",async(F0,G0)=>{if(await G0(),ms(F0.req.path))return;if(F0.res.status>=500){let z0=await F0.res.clone().text();console.error(`[5xx Response] ${F0.req.method} ${F0.req.path} - ${F0.res.status}:`,z0)}}),E.get(tX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(tX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(tX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await OU5(Z.pool)?"up":"down"},U)G0.nats=U.isConnected()?{status:"up"}:{status:"down"};else G0.nats={status:"down"};let P0=G0.postgres.status==="up",z0=P0?200:503;return F0.json({status:P0?"ready":"not_ready",services:G0},z0)}),E.get(tX.METRICS,async(F0)=>{try{let G0=await Bh0.collect(),P0=jU5.serialize(G0.resourceMetrics);return F0.text(P0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(G0){return console.error("Failed to collect metrics:",G0),F0.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${tX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!PU5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([JD.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),JD.listQueuedWorkflows({queueName:G0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return F0.json({queue_length:P0.length,in_flight:z0.length})}),E.route("/api/config",Aw8),E.route("/api/_reports",_w8),E.route("/api/_stripe",kT1),E.route("/api/_github",xw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",no);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",pw8(T)),E.route("/api/_jira",hw8(T)),E.route("/report",kw8($.clientDir)),E.route("/api/auth/custom",JF8),E.all("/api/auth/admin/*",mF8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=yW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",c70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",c70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",A70),E.route("/",cW8()),E.use("/oauth-proxy/:connectionId/*",c70),E.all("/oauth-proxy/:connectionId/*",UP8);let A=async(F0)=>{let P0=await zU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",c70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await AU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=fH8({ttlMs:120000}),S=await fK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Rj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});vY.set(S),Q$$({db:Z.db,baseUrl:B5()}),yK8({db:Z.db}),lK8({db:Z.db}),NH8({db:Z.db}),PH8({db:Z.db}),mw8({db:Z.db,encryptionKey:B0().encryptionKey}),H88({db:Z.db}),MH8({db:Z.db}),u88({db:Z.db});let V=ZE(Z.db),v=new R00(Z.db),b=mE8({db:Z.db});tL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl)}),SL1({systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),RL1({dispatchRunFn:N98,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new nc(Z.db),l=new jW(Z.db),d=new C3(Z.db),W0=new sT1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=C2;C2=async()=>{await F0?.(),W0.dispose()}}bE8({automations:V,taskBoard:l,fire:YH,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),w88(fE8),v98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await NP8.jetstreamManager(F0):null},messageParts:h.messageParts(),resolveRun:async(F0)=>{let G0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",F0).executeTakeFirst();return G0?{orgId:G0.organization_id,createdBy:G0.created_by,version:G0.message_storage_version??1,status:G0.status,runFenceToken:G0.run_fence_token,title:G0.title??null}:null},completeRunIfNotCompleted:async(F0,G0)=>{let P0=await h.completeRunIfNotCompleted(F0,G0);if(gg0(I6,G0,F0,P0),P0)await _t(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return gg0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(gg0(I6,G0,F0,j1),j1)await _t(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,sz(F0,G0),[])},persistTitle:(F0,G0,P0)=>h.update(F0,G0,{title:P0}),onTitleUpdated:async({runId:F0,orgId:G0,title:P0})=>{let z0=await h.get(F0,G0).catch(()=>null);I6.emit(G0,cU(F0,z0?.status??"in_progress",{title:P0,virtualMcpId:z0?.virtual_mcp_id??void 0,createdBy:z0?.created_by,triggerId:z0?.trigger_id,branch:z0?.branch??null,harnessId:z0?.harness_id??void 0,createdAt:z0?.created_at,updatedAt:z0?.updated_at}))},bumpProgress:async({runId:F0,orgId:G0})=>{await h.bumpProgress(F0,G0)},recordCompleted:async({runId:F0,orgId:G0,distinctId:P0,usage:z0})=>{c1.capture({distinctId:P0,event:"chat_message_completed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",input_tokens:z0.inputTokens,output_tokens:z0.outputTokens,total_tokens:z0.totalTokens}})},recordFailed:async({runId:F0,orgId:G0,distinctId:P0,reason:z0,kind:j1})=>{c1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:j1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),x58({studioContextFactory:b,systemDatabaseUrl:x10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),lE8(),Y$$(),hK8(),mK8(),DH8(),AH8(),iw8(),yE8(),D88(),IH8(),l88(),yw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return eL1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new uo(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>YH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[MH(),Xl(),ND()];for(let F0 of U0)lg0(F0).then(()=>{}).catch((G0)=>console.error("[monitoring] Retention cleanup failed:",G0));let o=()=>B4.api.deleteAllExpiredApiKeys().catch((F0)=>console.error("[auth] Expired API key cleanup failed:",F0));o(),setInterval(o,86400000).unref(),E.use("*",async(F0,G0)=>{if(Wh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{UH(F0,j1);try{return await b$()}finally{RW(F0,j1)}}},z0=await vY.create(F0.req.raw,{timings:P0});z0.automationRunner=I0,F0.set("studioContext",z0);try{await G0()}finally{let j1=z0.pendingRevalidations;if(j1.length>0)Promise.race([Promise.allSettled(j1),J$(30000)]).catch((r$)=>console.error("[studio] revalidation cleanup error:",r$))}}),E.use("/api/:org/decopilot/*",fo),E.use("/api/:org/v1/*",fo),E.use("/api/:org/files/*",fo),E.use("*",async(F0,G0)=>{if(BP8(F0.req.path))return G0();let P0=F0.get("studioContext");if(!P0?.organization?.id||!P0?.auth?.user?.id)return G0();if(!(await P0.storage.orgSsoConfig.getByOrgId(P0.organization.id))?.enforced)return G0();if(!await P0.storage.orgSsoSessions.isValid(P0.auth.user.id,P0.organization.id))return F0.json({error:"SSO authentication required for this organization"},403);return G0()});let t=new Z1;t.use("*",OU({mountPath:"/api/org-sso"})),t.route("/",Qy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:C00,grouped:TT()})}),E.use("/mcp/*",async(F0,G0)=>{UH(F0,"mcp");try{return await G0()}finally{RW(F0,"mcp")}});let r=async(F0,G0)=>{let P0=F0.var.studioContext;if(!P0.auth.user?.id&&!P0.auth.apiKey?.id){let z0=new URL(F0.req.url),j1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=j1?`${j1}://${z0.host}`:z0.origin;return F0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b$}${z0.pathname}/.well-known/oauth-protected-resource"`}})}return await G0()};if(E.use("/mcp/:connectionId?",r),E.use("/mcp/gateway/:virtualMcpId?",r),E.use("/mcp/virtual-mcp/:virtualMcpId?",r),E.use("/mcp/self",r),bK()){let{mountDevRoutes:F0}=(KP8(),og0(WP8));F0(E,r)}let $0=new Z1;$0.use("*",OU({mountPath:"/mcp"})),$0.route("/",Qx0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",OU({mountPath:"/mcp/self"})),X0.route("/",oy0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",OU({mountPath:"/mcp"})),h0.route("/",Jx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{UH(F0,"llm_models");try{return await G0()}finally{RW(F0,"llm_models")}});let C0=KU8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",sw8);let H1=new Z1;H1.use("*",OU({mountPath:"/api"})),H1.route("/",ey0()),E.route("/api",H1),E.route("/api",jw8);let c0=new Z1;c0.use("*",OU({mountPath:"/api"})),c0.route("/",$g0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let j0=new M00(Z.db),E0=new Z1;E0.use("*",OU({mountPath:"/api"})),E0.route("/",Ky0()),E.route("/api",E0),E.route("/api/deco-sites",TU8());let n0=new Z1;n0.use("*",OU({mountPath:"/api/deco-sites"})),n0.route("/",Fy0()),E.route("/api/deco-sites",n0),E.route(ef0,dF8()),E.route(KL8,UL8()),E.route("/api/_editor-resolve",Ew8()),E.route(KF8,HF8()),E.route(nf0,qF8());let O1=B0(),o0=O1.elevenlabsApiKey?new Ig0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new zT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new PT1(o0,()=>U?.getConnection()??null):null},d0=new MT1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:DP8(O1),getConnection:()=>U?.getConnection()??null}),i0=ij8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:bK(),mcpAuth:r,oauthProxyHandler:UP8,watchHandler:jP8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",i0),E.notFound((F0)=>{return F0.json({error:"Not Found",path:F0.req.path},404)}),E.onError(FU8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),C2?Promise.resolve(C2()).finally(()=>{C2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await tJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await HH$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await JD.registerQueue(H3,{partitionQueue:!0,concurrency:iL1,minPollingIntervalMs:pL1}),await JD.registerQueue(uW,{partitionQueue:!0,concurrency:kL1,priorityEnabled:!0}),await JD.registerQueue(FD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(UD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await JD.registerQueue(qj,{partitionQueue:!0,concurrency:b58}),await JD.registerQueue(x2,h88),await JD.registerQueue(f2),await uz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>JD.deleteQueue(F0))),await nL1(Z.pool),pN$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),yd(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),X$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var NP8,HP8=5000,C2=null,UP8=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),Y=Q[Q.length-1],X=$.get("studioContext");if(!X)X=await vY.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let v=await $.req.json().catch(()=>({}));return $.json({...typeof v==="object"&&v!==null?v:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await Io(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=tE1(await W.json());if(!K)K=H.origin;let N=await T70(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=lW8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!OP8(new URL(v),b))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)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(CH8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,R=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let d=atob(T.slice(6).trim()),W0=d.indexOf(":");if(W0!==-1){let I0=decodeURIComponent(d.slice(0,W0)),J0=decodeURIComponent(d.slice(W0+1));A=I0||null,R=J0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),h=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof h==="string"&&h)R=h;let l=new URLSearchParams;for(let[d,W0]of v.entries())l.append(d,W0.toString());z=l.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),h={};try{h=b?JSON.parse(b):{}}catch{z=b}let l=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!l)z=b;if(z===void 0){let d=h,W0=d.metadata&&typeof d.metadata==="object"?d.metadata:{};d.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(d),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let h=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,l=null;try{l=await D2(G.connection_url)??D}catch{l=D}let d={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:h,clientId:A,clientSecret:R,tokenEndpoint:l};await new e5(X.db,X.vault).upsert(d)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},jP8=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!xB(Y)||!await fB(Z)))return $.json({error:"forbidden"},403);let W=G?Qv0:Y;if(G)SO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Bj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!I6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{I6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),I6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),I6.remove(W,K),N()})})})},jU5,PU5,zU5=()=>EU5(B4),AU5=()=>wU5(B4);var EP8=L(()=>{p$();u1();J$$();uK8();dK8();LH8();TH8();Y70();BB1();kH8();o90();H9();ii();q8();K8();mf0();xH8();$j1();pK();_F();Kz1();S3();b6();Q6();Lz1();FF8();RF8();Pz1();iF8();kz1();yz1();gz1();xK();q70();hz1();UU8();if0();pj8();rj8();aj8();Qw8();Nw8();mz1();Yx0();rZ0();ww8();Gx0();zA1();Pw8();EA1();Tw8();Cw8();vw8();bw8();fw8();gw8();uw8();nw8();uT1();oz1();rw8();PA1();LA1();eQ0();BE8();VT1();TJ();_B0();F40();fB1();X40();G40();Jj1();DE8();OE8();bz1();TE8();ov0();qE8();We();k00();CO();c5();FP1();kE8();gE8();jG();pz();cE8();aF0();eT1();cW();lz1();IO();TL1();aF0();SZ0();q00();D01();dE8();QE();pE8();Fs();Kz1();Rt();dt();Wb0();NP8=_(bH(),1);jU5=new LU5,PU5=new Set([H3,uW,FD,UD,qj,x2])});var TP8={};O6(TP8,{resolveClientDir:()=>CU5,resolveAssetPathWithTraversalCheck:()=>AP8,isPathWithinDirectory:()=>zP8,createAssetHandler:()=>SU5});import{resolve as hQ0,dirname as qU5,join as RU5,extname as MU5,basename as VU5,sep as PP8}from"path";function IU5($,Z){if($===Z||VU5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${PP8}assets${PP8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function zP8($,Z){let Q=hQ0(Z),Y=hQ0($);return Y===Q||Y.startsWith(Q+"/")}function AP8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=hQ0(Z,Q);if(!zP8(Y,Z))return null;return Y}function CU5($,Z="../client"){let Q=new URL($),Y=qU5(Q.pathname);return hQ0(Y,Z)}function SU5($={}){let{env:Z="production",clientDir:Q=kU5,isServerPath:Y=()=>!1}=$;if(Z==="development")return async function(J){return null};return async function(J){if(J.method!=="GET")return null;let G=new URL(J.url),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(Y(W))return null;let K=AP8({requestPath:W,clientDir:Q});if(!K)return null;let H=RU5(K,"index.html"),F=hQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(MU5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:IU5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var kU5="./dist/client";var qP8=()=>{};var RP8={};O6(RP8,{tryUpgradePreviewWs:()=>gU5,tryHandlePreviewHttp:()=>yU5,previewWebSocketHandler:()=>hU5,parsePreviewBaseDomain:()=>fU5,isPreviewWsData:()=>cg0,extractHandleFromHost:()=>Xq1});function bU5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function xU5(){return new Response(vU5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function fU5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let Y=Q.hostname;if($.includes("{handle}")){let X=Y.indexOf(".");if(X<=0||X===Y.length-1)return null;return Y.slice(X+1)}return Y}function Xq1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),Y=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Y.endsWith(J))return null;let G=Y.slice(0,Y.length-J.length);if(!G||G.includes("."))return null;return G}async function yU5($,Z){let Q=Xq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return lQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Sn)&&bU5($))return xU5();return X.headers.delete(Sn),X}function lQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function cg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function gU5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=Xq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return lQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return lQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return lQ0(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 lQ0(426,"upgrade failed");return}function uQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var _U5=256,vU5='<!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>',hU5;var MP8=L(()=>{x50();hU5={open($){let Z=$.data;if(!cg0(Z))return;let Q;try{Q=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),uQ0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let Y=Z.pending.shift();if(Y!==void 0)Q.send(Y)}}),Q.addEventListener("message",(Y)=>{if(Z.closed)return;$.send(Y.data)}),Q.addEventListener("close",(Y)=>{uQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{uQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!cg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=_U5){uQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!cg0(Z))return;uQ0($,Z,1000,"")}}});p$();var jq1="14";function wq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:jq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}p$();import dP8 from"pg";var Eq1=8314027461559302n,iP8=600000,pP8=500;async function Pq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=iP8}=$,X=$.log??((K)=>console.log(K)),J=new dP8.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",[Eq1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await J$(pP8)}let K=Date.now()-G;if(K>1000)X(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[Eq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();eg0();b6();function dz8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Oh0($,Z){for(let Q=0;Q<$.length;Q++){let Y=$[Q];if(Y===void 0)continue;if(Y===Z)return $[Q+1];if(Y.startsWith(`${Z}=`))return Y.slice(Z.length+1)}return}function QR1(){let $=dz8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Oh0($,"--cpu-prof-dir")??process.cwd(),name:Oh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Oh0($,"--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.'}))}Eh0();var QY0;function UR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=h2();if(!Q)return;let Y={};try{let{heapStats:X}=await import("bun:jsc"),J=X(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);Y={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...Y}))};return Z().catch(()=>{}),QY0=setInterval(()=>void Z().catch(()=>{}),$),QY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),Y=typeof Q==="string"?Q:JSON.stringify(Q),X=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(X,Y),console.log(JSON.stringify({msg:"heap-snapshot-written",path:X}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(QY0)clearInterval(QY0)}}import*as nz8 from"bun:jsc";var{startSamplingProfiler:tz8,samplingProfilerStackTraces:oz8}=nz8;function NR1(){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{tz8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=oz8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function BR1(){QR1();let $=[UR1(),FR1(),NR1()];return()=>{for(let Z of $)Z()}}import{existsSync as nU5}from"fs";var gW=B0();eq1();var{DBOS:cQ0,DBOSClient:uU5}=await import("@dbos-inc/dbos-sdk");function Fq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var lU5=[H3,uW,FD,UD,qj,x2,f2],cU5=gW.dispatchRole==="worker"?lU5:gW.dispatchRole==="api"?[]:void 0;cQ0.setConfig(wq1({systemDatabaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl),poolSize:gW.dbosPoolSize,executorID:gW.podName,listenQueues:cU5}));var{createApp:mU5}=await Promise.resolve().then(() => (EP8(),wP8)),{isServerPath:dU5}=await Promise.resolve().then(() => (eQ0(),fq1)),{createAssetHandler:iU5,resolveClientDir:SP8}=await Promise.resolve().then(() => (qP8(),TP8)),pU5=gW.port,VP8=SP8(import.meta.url,"../client"),_P8=nU5(VP8)?VP8:SP8(import.meta.url,"../dist/client"),tU5=iU5({clientDir:_P8,isServerPath:dU5}),oU5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function sU5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(oU5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:rU5,tryHandlePreviewHttp:aU5,tryUpgradePreviewWs:eU5,previewWebSocketHandler:Jq1,isPreviewWsData:Gq1}=await Promise.resolve().then(() => (MP8(),RP8)),{getOrInitSharedRunner:vP8}=await Promise.resolve().then(() => (CX(),Mn$)),bP8=rU5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),IP8={baseDomain:bP8??"",getRunner:vP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())vP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var mg0=await mU5({clientDir:_P8}),Wq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),kP8=process.env.DBOS_CONDUCTOR_URL?.trim();await Pq1({databaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl)},()=>cQ0.launch({...Wq1?{conductorKey:Wq1}:{},...Wq1&&kP8?{conductorURL:kP8}:{}}));console.log(`[dbos] application version: ${cQ0.applicationVersion}`);var Kq1=5,Hq1=0;await e$(async()=>{Hq1++;try{return await mg0.initDbos()}catch($){let Z=Hq1>=Kq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${Hq1}/${Kq1} failed, ${Z}`,$),$}},{maxAttempts:Kq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var $N5=Bun.serve({idleTimeout:0,port:pU5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(bP8){let Y=await eU5($,Z,IP8);if(Y===void 0)return;if(Y)return Y;let X=await aU5($,IP8);if(X)return X}let Q=await tU5($);if(Q)return sU5(Q);return mg0.fetch($,{server:Z})},websocket:{open($){if(Gq1($.data))Jq1.open($)},message($,Z){if(Gq1($.data))Jq1.message($,Z)},close($){if(Gq1($.data))Jq1.close($)}},development:!1}),ZN5=BR1();if(gW.localMode)Promise.resolve().then(() => (Zu(),cv0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (Zu(),cv0));Z()}catch{}});var CP8=!1;async function QN5($){let Z;try{Z=await uU5.create({systemDatabaseUrl:Fq1(gW.databaseUrl,gW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:uW,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Y=Q.map((X)=>X.workflowID);await Z.resumeWorkflows(Y,{queueName:uW}),console.log(`[shutdown] re-enqueued ${Y.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Y)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function dg0($){if(CP8)return;CP8=!0,console.log(`
|
|
4497
4497
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),Y=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);Y.unref?.();let X=0;try{ZN5(),mg0.markShuttingDown();let J=zq1(gW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await $N5.stop(!0);let G=cQ0.executorID;await cQ0.shutdown(),await QN5(G),await mg0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>dg0("SIGTERM"));process.on("SIGINT",()=>dg0("SIGINT"));process.on("SIGHUP",()=>dg0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),dg0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,a0 as u}from"./index-S2HrH4Zk.js";import{C as f}from"./index-BXcyv6PD.js";import{a as x}from"./thread-route-Di_L_xPl.js";import{u as g}from"./use-task-metadata-CAqf5YMW.js";import{AppViewContent as h}from"./project-app-view-BL9BIoFw.js";import"./use-mobile-B4_3C8q4.js";import"./use-app-takeover-Ch2wb6yt.js";import"./sheet-CmjVGFzk.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./use-project-native-view-presence-YylhnML_.js";import"./use-panel-navigate-CoDOXIMG.js";import"./use-project-scope-DlrgPE-R.js";import"./repository-binding-CzQ1nQ8q.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./thread-intent-lc5eUADU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./toolbar-icon-button-CbjP7ed9.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./label-BS9IArvo.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./collection-search-D_gP7n8V.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./autosend-w20J7vUz.js";import"./use-org-sso-989hwFZD.js";import"./resizable-CHI2gbLE.js";import"./icon-button-Bik9eCHY.js";import"./tool-namespace-CAIy2rBU.js";import"./use-mcp-tools-BTx6zN3k.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-De74lxEm.js";import"./types-BqZau8Hd.js";import"./chat-context-CEkukqBY.js";import"./use-decopilot-events-BDFf0mdn.js";import"./use-ai-providers-BR88k3VX.js";import"./use-chat-navigation-CouOTXBi.js";import"./location-BjlyegC2.js";import"./task-route-C1rix0g6.js";import"./task-key-BCHdFiOO.js";import"./core.esm-kALIESxY.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-DchTRMM2.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-CaD_iGng.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-B6o_NICe.js";import"./authenticate-and-persist-oauth-DZnBnOkQ.js";import"./mcp-oauth-CvuoEz0O.js";import"./mcp-oauth-CYD7UUIz.js";import"./track-BIsG5hPy.js";import"./extract-connection-data-DrPVx0tt.js";import"./connection-CzWPdAsU.js";import"./url-slug-DxiiVVNC.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 Ao(){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{Ao as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,b1 as b,u as g}from"./index-S2HrH4Zk.js";import{C as j}from"./index-BXcyv6PD.js";import{F as v,H as S}from"./file-share-button-_GG604s_.js";import{u as k,b as y,e as _}from"./use-org-fs-DF73hTWJ.js";import{S as w}from"./settings-tab-aEeUpMuv.js";import{b as M}from"./thread-route-Di_L_xPl.js";import"./use-mobile-B4_3C8q4.js";import"./use-app-takeover-Ch2wb6yt.js";import"./sheet-CmjVGFzk.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./use-project-native-view-presence-YylhnML_.js";import"./use-panel-navigate-CoDOXIMG.js";import"./use-project-scope-DlrgPE-R.js";import"./repository-binding-CzQ1nQ8q.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./thread-intent-lc5eUADU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./toolbar-icon-button-CbjP7ed9.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./label-BS9IArvo.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./collection-search-D_gP7n8V.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./autosend-w20J7vUz.js";import"./use-org-sso-989hwFZD.js";import"./resizable-CHI2gbLE.js";import"./icon-button-Bik9eCHY.js";import"./popover-CNf5xMWd.js";import"./extract-connection-data-DrPVx0tt.js";import"./metadata-D72DunRR.js";import"./connection-CzWPdAsU.js";import"./url-slug-DxiiVVNC.js";import"./chat-context-CEkukqBY.js";import"./use-decopilot-events-BDFf0mdn.js";import"./use-ai-providers-BR88k3VX.js";import"./use-chat-navigation-CouOTXBi.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-DL0Lm9Jq.js";import"./empty-state-jCWAQBLO.js";import"./use-date-fns-locale-CMveGtuM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CvuoEz0O.js";import"./mcp-oauth-CYD7UUIz.js";import"./alert-dialog-a2FJnDzI.js";import"./textarea-CgwvzOPm.js";import"./use-connection-DceoJXcX.js";import"./use-debounced-autosave-BVlge430.js";import"./add-connection-dialog-a2Hk6Nkx.js";import"./connection-card-CAbEC6HU.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-arZY1xqV.js";import"./form-CaD_iGng.js";import"./select-fodDbKBd.js";import"./index-BdQq_4o_.js";import"./schema-B_Wflcyp.js";import"./connection-form-helpers-Dbfkfa_y.js";import"./authenticate-and-persist-oauth-DZnBnOkQ.js";import"./collection-tabs-wtiz1pOY.js";import"./badge-fITx4C7X.js";import"./use-infinite-scroll-Ciyxx1IX.js";import"./useSuspenseInfiniteQuery-C2A9_AqO.js";import"./file-type-icon-CtwlFA8d.js";import"./checkbox-_7EuJ1ZF.js";import"./search-input-DKSQj9gf.js";import"./use-mcp-auth-status-B_xS6PxQ.js";import"./types-BqZau8Hd.js";import"./use-mcp-tools-BTx6zN3k.js";import"./use-mcp-prompts-nVSs2yBU.js";import"./utils-CVEq3hMx.js";import"./switch-B-N8df6o.js";import"./scroll-area-DycmVFDZ.js";import"./optimistic-project-sidebar-views-BNi3TW0W.js";import"./format-time-CAj8AQXM.js";import"./use-copy-iY6KVzYy.js";import"./virtual-mcp-CQuSXNh3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B0gLr68w.js";import"./use-secrets-G5jwJCeF.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 C(){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 rr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(C,{})}),i[0]=t):t=i[0],t}export{rr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as s,j as e}from"./index-S2HrH4Zk.js";import{C as a}from"./index-BXcyv6PD.js";import{L as n}from"./library-tab-CVA9v6jj.js";import{u as c}from"./use-ensure-project-folder-8-A-krsd.js";import{u}from"./use-project-scope-DlrgPE-R.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-B4_3C8q4.js";import"./use-app-takeover-Ch2wb6yt.js";import"./sheet-CmjVGFzk.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./use-project-native-view-presence-YylhnML_.js";import"./thread-route-Di_L_xPl.js";import"./use-panel-navigate-CoDOXIMG.js";import"./thread-intent-lc5eUADU.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./repository-binding-CzQ1nQ8q.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./toolbar-icon-button-CbjP7ed9.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./label-BS9IArvo.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./collection-search-D_gP7n8V.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./autosend-w20J7vUz.js";import"./use-org-sso-989hwFZD.js";import"./resizable-CHI2gbLE.js";import"./icon-button-Bik9eCHY.js";import"./search-toggle-aBYXmyNS.js";import"./alert-dialog-a2FJnDzI.js";import"./use-chat-navigation-CouOTXBi.js";import"./use-org-fs-DF73hTWJ.js";import"./use-org-repo-syncs-Cr8kprD2.js";import"./textarea-CgwvzOPm.js";import"./markdown-DzuMiPHd.js";import"./use-copy-iY6KVzYy.js";import"./file-share-button-_GG604s_.js";import"./popover-CNf5xMWd.js";import"./preview-dialog-BJxkSwUM.js";import"./preview-content-qLWV61FJ.js";import"./file-preview-XcXbDvBh.js";import"./utils-C_HFfslm.js";import"./editor-CDuCgYu3.js";import"./file-type-icon-CtwlFA8d.js";import"./folder-icon-G5oFirfg.js";import"./empty-state-DlslJePg.js";import"./view-mode-toggle-CMAMcUVF.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-DoqKhaeH.js";import"./use-members-CWbXkme1.js";import"./use-org-auth-client-CZGMEzLB.js";function no(){const t=s.c(6),{project:o}=u();c(o);const m=o?.id??"pending";let r;t[0]!==o?(r=o?l(o):void 0,t[0]=o,t[1]=r):r=t[1];const p=o?.title??void 0;let i;return t[2]!==m||t[3]!==r||t[4]!==p?(i=e.jsx(a.Content,{children:e.jsx(n,{root:r,rootLabel:p},m)}),t[2]=m,t[3]=r,t[4]=p,t[5]=i):i=t[5],i}export{no as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as e,u as n}from"./index-S2HrH4Zk.js";import{C as c}from"./index-BXcyv6PD.js";import{L as l}from"./preview-panel-CCLqhyyG.js";import{a as u}from"./use-panel-navigate-CoDOXIMG.js";import{S as f}from"./settings-tab-aEeUpMuv.js";import{b as h}from"./thread-route-Di_L_xPl.js";import"./use-mobile-B4_3C8q4.js";import"./use-app-takeover-Ch2wb6yt.js";import"./sheet-CmjVGFzk.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./use-project-native-view-presence-YylhnML_.js";import"./thread-intent-lc5eUADU.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./repository-binding-CzQ1nQ8q.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./toolbar-icon-button-CbjP7ed9.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-project-scope-DlrgPE-R.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./label-BS9IArvo.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./collection-search-D_gP7n8V.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./autosend-w20J7vUz.js";import"./use-org-sso-989hwFZD.js";import"./resizable-CHI2gbLE.js";import"./icon-button-Bik9eCHY.js";import"./preview-content-qLWV61FJ.js";import"./file-share-button-_GG604s_.js";import"./use-org-fs-DF73hTWJ.js";import"./popover-CNf5xMWd.js";import"./file-preview-XcXbDvBh.js";import"./utils-C_HFfslm.js";import"./editor-CDuCgYu3.js";import"./file-type-icon-CtwlFA8d.js";import"./markdown-DzuMiPHd.js";import"./use-copy-iY6KVzYy.js";import"./location-BjlyegC2.js";import"./extract-connection-data-DrPVx0tt.js";import"./metadata-D72DunRR.js";import"./connection-CzWPdAsU.js";import"./url-slug-DxiiVVNC.js";import"./chat-context-CEkukqBY.js";import"./use-decopilot-events-BDFf0mdn.js";import"./use-ai-providers-BR88k3VX.js";import"./use-chat-navigation-CouOTXBi.js";import"./build-improve-prompt-doc-DL0Lm9Jq.js";import"./empty-state-jCWAQBLO.js";import"./use-date-fns-locale-CMveGtuM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CvuoEz0O.js";import"./mcp-oauth-CYD7UUIz.js";import"./alert-dialog-a2FJnDzI.js";import"./textarea-CgwvzOPm.js";import"./use-connection-DceoJXcX.js";import"./use-debounced-autosave-BVlge430.js";import"./add-connection-dialog-a2Hk6Nkx.js";import"./connection-card-CAbEC6HU.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-arZY1xqV.js";import"./form-CaD_iGng.js";import"./select-fodDbKBd.js";import"./index-BdQq_4o_.js";import"./schema-B_Wflcyp.js";import"./connection-form-helpers-Dbfkfa_y.js";import"./authenticate-and-persist-oauth-DZnBnOkQ.js";import"./collection-tabs-wtiz1pOY.js";import"./badge-fITx4C7X.js";import"./use-infinite-scroll-Ciyxx1IX.js";import"./useSuspenseInfiniteQuery-C2A9_AqO.js";import"./checkbox-_7EuJ1ZF.js";import"./search-input-DKSQj9gf.js";import"./use-mcp-auth-status-B_xS6PxQ.js";import"./types-BqZau8Hd.js";import"./use-mcp-tools-BTx6zN3k.js";import"./use-mcp-prompts-nVSs2yBU.js";import"./utils-CVEq3hMx.js";import"./switch-B-N8df6o.js";import"./scroll-area-DycmVFDZ.js";import"./optimistic-project-sidebar-views-BNi3TW0W.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-CQuSXNh3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B0gLr68w.js";import"./use-secrets-G5jwJCeF.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.c(5),{path:m}=r,{closePanel:p}=u();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let s;return t[2]!==i||t[3]!==m?(s=e.jsx(l,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=s):s=t[4],s}function x(){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?e.jsx(b,{path:o},o):e.jsx(f,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Qr(){const r=a.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c.Content,{children:e.jsx(x,{})}),r[0]=t):t=r[0],t}export{Qr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-S2HrH4Zk.js";import{C as p}from"./index-BXcyv6PD.js";import{S as e}from"./settings-tab-aEeUpMuv.js";import{b as n}from"./thread-route-Di_L_xPl.js";import"./use-mobile-B4_3C8q4.js";import"./use-app-takeover-Ch2wb6yt.js";import"./sheet-CmjVGFzk.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./use-project-native-view-presence-YylhnML_.js";import"./use-panel-navigate-CoDOXIMG.js";import"./use-project-scope-DlrgPE-R.js";import"./repository-binding-CzQ1nQ8q.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./thread-intent-lc5eUADU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./toolbar-icon-button-CbjP7ed9.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./label-BS9IArvo.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./collection-search-D_gP7n8V.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./autosend-w20J7vUz.js";import"./use-org-sso-989hwFZD.js";import"./resizable-CHI2gbLE.js";import"./icon-button-Bik9eCHY.js";import"./extract-connection-data-DrPVx0tt.js";import"./metadata-D72DunRR.js";import"./connection-CzWPdAsU.js";import"./url-slug-DxiiVVNC.js";import"./chat-context-CEkukqBY.js";import"./use-decopilot-events-BDFf0mdn.js";import"./use-ai-providers-BR88k3VX.js";import"./use-chat-navigation-CouOTXBi.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-DL0Lm9Jq.js";import"./empty-state-jCWAQBLO.js";import"./use-date-fns-locale-CMveGtuM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-CvuoEz0O.js";import"./mcp-oauth-CYD7UUIz.js";import"./alert-dialog-a2FJnDzI.js";import"./textarea-CgwvzOPm.js";import"./use-connection-DceoJXcX.js";import"./use-debounced-autosave-BVlge430.js";import"./add-connection-dialog-a2Hk6Nkx.js";import"./connection-card-CAbEC6HU.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-arZY1xqV.js";import"./form-CaD_iGng.js";import"./select-fodDbKBd.js";import"./index-BdQq_4o_.js";import"./schema-B_Wflcyp.js";import"./connection-form-helpers-Dbfkfa_y.js";import"./authenticate-and-persist-oauth-DZnBnOkQ.js";import"./collection-tabs-wtiz1pOY.js";import"./badge-fITx4C7X.js";import"./use-infinite-scroll-Ciyxx1IX.js";import"./useSuspenseInfiniteQuery-C2A9_AqO.js";import"./file-type-icon-CtwlFA8d.js";import"./use-org-fs-DF73hTWJ.js";import"./checkbox-_7EuJ1ZF.js";import"./search-input-DKSQj9gf.js";import"./use-mcp-auth-status-B_xS6PxQ.js";import"./types-BqZau8Hd.js";import"./use-mcp-tools-BTx6zN3k.js";import"./use-mcp-prompts-nVSs2yBU.js";import"./utils-CVEq3hMx.js";import"./switch-B-N8df6o.js";import"./popover-CNf5xMWd.js";import"./scroll-area-DycmVFDZ.js";import"./optimistic-project-sidebar-views-BNi3TW0W.js";import"./format-time-CAj8AQXM.js";import"./use-copy-iY6KVzYy.js";import"./virtual-mcp-CQuSXNh3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B0gLr68w.js";import"./use-secrets-G5jwJCeF.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function ko(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{ko as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-CNPQFTJw.js","assets/index-S2HrH4Zk.js","assets/index-s7bCSMKE.css","assets/agent-icon-DS9NdRcy.js","assets/AlertCircle-nHeJKNy4.js","assets/Tool01-CVNOqQY_.js","assets/ArrowUp-BVp23ZAQ.js","assets/ArrowLeft-CHEDMPAc.js","assets/LinkBroken01-BW3cxIjJ.js","assets/ShoppingBag01-B36zG7aI.js","assets/ZoomOut-KwNGJU2x.js","assets/Building02-DWirrkdX.js","assets/CheckCircle-BvDM7Gbz.js","assets/ChevronUp-rdJNO77l.js","assets/ChevronSelectorVertical-BaD6LBfC.js","assets/UserSquare-C2V1n_Ih.js","assets/Copy01-DW-Q4EY1.js","assets/CreditCard01-S7w1ujzT.js","assets/DotsVertical-CTjrKuIM.js","assets/Image01-CQ_P4S8k.js","assets/Globe04-DVzQc_Ov.js","assets/SwitchHorizontal01-CijW67Kk.js","assets/Key01-8PXeeGF4.js","assets/Link01-NOdJQFFA.js","assets/Monitor01-zjrI3I7-.js","assets/Sun-DQEAsW-9.js","assets/Play-CNcpK8hU.js","assets/Plus-BhbZ8PLh.js","assets/SearchMd-CQI4JQwx.js","assets/Trash01-CivEfR7i.js","assets/Upload01-e15BnHYG.js","assets/User01-CGXYvem6.js","assets/Users01-Dvv9XL6s.js","assets/XClose-CKZO43ap.js","assets/scroll-area-DycmVFDZ.js","assets/index-BdQq_4o_.js","assets/tooltip-DkdSXKza.js","assets/index-BVifsRNJ.js","assets/chat-context-CEkukqBY.js","assets/use-panel-navigate-CoDOXIMG.js","assets/thread-route-Di_L_xPl.js","assets/use-project-scope-DlrgPE-R.js","assets/repository-binding-CzQ1nQ8q.js","assets/use-mcp-client-fij6bnkk.js","assets/auth-D5vlr6Xs.js","assets/autosend-w20J7vUz.js","assets/thread-intent-lc5eUADU.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-BoIAnVGT.js","assets/task-board-BORnxlSz.js","assets/schema-ChcAfIj0.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-BDFf0mdn.js","assets/use-ai-providers-BR88k3VX.js","assets/use-chat-navigation-CouOTXBi.js","assets/location-BjlyegC2.js","assets/use-organization-settings-C8GBvgGb.js","assets/editor-CDuCgYu3.js","assets/shell-layout-BHLXKp6D.js","assets/avatar-BcMEJNkO.js","assets/use-clock-tick-C4h7TV0_.js","assets/command-BW-GQQXC.js","assets/index-DupZqtJS.js","assets/integration-icon-CWPbfMpw.js","assets/project-icon-B9lmpDmN.js","assets/new-project-dialog-RUFPj3jS.js","assets/label-BS9IArvo.js","assets/repository-import-picker-E7Pppx7U.js","assets/use-navigate-to-agent-DbRUaGfg.js","assets/repository-picker-BzHKIgTj.js","assets/useInfiniteQuery-BrF8BU9H.js","assets/infiniteQueryObserver-Dfr1g1Vv.js","assets/collection-search-D_gP7n8V.js","assets/use-debounced-value-VWV6vguR.js","assets/required-auth-layout-AtAqW5LI.js","assets/use-org-sso-989hwFZD.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-CRxdlhrN.js","assets/sandbox-url-D3mC8qhT.js","assets/alert-dialog-a2FJnDzI.js","assets/context-menu-DH1w2c9q.js","assets/utils-C_HFfslm.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as d,b,a2 as j,j as r,r as x,aZ as g,h as _,u as T}from"./index-S2HrH4Zk.js";import{A as v}from"./agent-view-guard-etTxsEf4.js";import{F as E}from"./feature-gate-Dapoh_dm.js";import{c as S}from"./chat-context-CEkukqBY.js";import{E as P}from"./empty-state-jCWAQBLO.js";import"./use-main-panel-tabs-DdKHeuHP.js";import"./use-project-native-view-presence-YylhnML_.js";import"./thread-route-Di_L_xPl.js";import"./use-panel-navigate-CoDOXIMG.js";import"./use-project-scope-DlrgPE-R.js";import"./repository-binding-CzQ1nQ8q.js";import"./use-mcp-client-fij6bnkk.js";import"./auth-D5vlr6Xs.js";import"./thread-intent-lc5eUADU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-BoIAnVGT.js";import"./task-board-BORnxlSz.js";import"./schema-ChcAfIj0.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-fZDk4Xxs.js";import"./use-organization-settings-C8GBvgGb.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-DS9NdRcy.js";import"./AlertCircle-nHeJKNy4.js";import"./Tool01-CVNOqQY_.js";import"./ArrowUp-BVp23ZAQ.js";import"./ArrowLeft-CHEDMPAc.js";import"./LinkBroken01-BW3cxIjJ.js";import"./ShoppingBag01-B36zG7aI.js";import"./ZoomOut-KwNGJU2x.js";import"./Building02-DWirrkdX.js";import"./CheckCircle-BvDM7Gbz.js";import"./ChevronUp-rdJNO77l.js";import"./ChevronSelectorVertical-BaD6LBfC.js";import"./UserSquare-C2V1n_Ih.js";import"./Copy01-DW-Q4EY1.js";import"./CreditCard01-S7w1ujzT.js";import"./DotsVertical-CTjrKuIM.js";import"./Image01-CQ_P4S8k.js";import"./Globe04-DVzQc_Ov.js";import"./SwitchHorizontal01-CijW67Kk.js";import"./Key01-8PXeeGF4.js";import"./Link01-NOdJQFFA.js";import"./Monitor01-zjrI3I7-.js";import"./Sun-DQEAsW-9.js";import"./Play-CNcpK8hU.js";import"./Plus-BhbZ8PLh.js";import"./SearchMd-CQI4JQwx.js";import"./Trash01-CivEfR7i.js";import"./Upload01-e15BnHYG.js";import"./User01-CGXYvem6.js";import"./Users01-Dvv9XL6s.js";import"./XClose-CKZO43ap.js";import"./use-connection-DceoJXcX.js";import"./use-mcp-tools-BTx6zN3k.js";import"./types-BqZau8Hd.js";import"./utils-CVEq3hMx.js";import"./index-BP0w9uvv.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-CAIy2rBU.js";import"./tooltip-DkdSXKza.js";import"./index-BVifsRNJ.js";import"./drawer-arZY1xqV.js";import"./collection-search-D_gP7n8V.js";import"./use-mobile-B4_3C8q4.js";import"./use-mcp-prompts-nVSs2yBU.js";import"./usage-stats-D9rnjt3m.js";import"./form-CaD_iGng.js";import"./label-BS9IArvo.js";import"./markdown-DzuMiPHd.js";import"./use-copy-iY6KVzYy.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-BDFf0mdn.js";import"./input-BNtucuwb.js";import"./icon-button-Bik9eCHY.js";import"./file-type-icon-CtwlFA8d.js";import"./use-chat-navigation-CouOTXBi.js";import"./autosend-w20J7vUz.js";import"./shell-layout-BHLXKp6D.js";import"./avatar-BcMEJNkO.js";import"./use-clock-tick-C4h7TV0_.js";import"./command-BW-GQQXC.js";import"./index-DupZqtJS.js";import"./integration-icon-CWPbfMpw.js";import"./project-icon-B9lmpDmN.js";import"./new-project-dialog-RUFPj3jS.js";import"./repository-import-picker-E7Pppx7U.js";import"./use-navigate-to-agent-DbRUaGfg.js";import"./repository-picker-BzHKIgTj.js";import"./useInfiniteQuery-BrF8BU9H.js";import"./infiniteQueryObserver-Dfr1g1Vv.js";import"./use-debounced-value-VWV6vguR.js";import"./required-auth-layout-AtAqW5LI.js";import"./use-org-sso-989hwFZD.js";import"./chat-draft-CLPZV4X0.js";import"./select-fodDbKBd.js";import"./index-BdQq_4o_.js";import"./tabs-xkmOuT-4.js";import"./use-deco-credits-n0_VB3Yj.js";import"./use-ai-providers-BR88k3VX.js";import"./toggle-group-D-VKYoG7.js";import"./use-open-billing-url-CeOdX9ob.js";import"./index-CoXSkt-d.js";import"./checkbox-_7EuJ1ZF.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-CNf5xMWd.js";import"./input-D-BLRmFH.js";import"./suggestion-C3JOAIFg.js";import"./use-org-fs-DF73hTWJ.js";import"./question-004-sINsf4GQ.js";import"./use-members-CWbXkme1.js";import"./use-org-auth-client-CZGMEzLB.js";import"./feature-paywall-Cq38J0kg.js";import"./plan-ladder-kRRISZu_.js";import"./add-connection-dialog-a2Hk6Nkx.js";import"./extract-connection-data-DrPVx0tt.js";import"./metadata-D72DunRR.js";import"./connection-CzWPdAsU.js";import"./url-slug-DxiiVVNC.js";import"./connection-card-CAbEC6HU.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-CgwvzOPm.js";import"./schema-B_Wflcyp.js";import"./connection-form-helpers-Dbfkfa_y.js";import"./authenticate-and-persist-oauth-DZnBnOkQ.js";import"./mcp-oauth-CvuoEz0O.js";import"./mcp-oauth-CYD7UUIz.js";import"./collection-tabs-wtiz1pOY.js";import"./badge-fITx4C7X.js";import"./use-infinite-scroll-Ciyxx1IX.js";import"./useSuspenseInfiniteQuery-C2A9_AqO.js";import"./use-task-board-events-CFaY2XFK.js";import"./pair-DzIFSvmn.js";import"./collapsible-BhjP_6g9.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-De74lxEm.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-CmjVGFzk.js";import"./use-thread-outputs-C_yh8Aef.js";import"./resolve-tab-icon-BCBzxE3t.js";import"./use-task-metadata-CAqf5YMW.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-CQuSXNh3.js";const y=x.lazy(()=>g(()=>import("./file-explorer-CNPQFTJw.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])).then(o=>({default:o.FileExplorer})));function w(o){const t=d.c(14),{openPath:m}=o,p=b(),{org:e}=j(),{currentBranch:i,taskId:h,virtualMcpId:a}=S();if(!a||!i){let s;t[0]!==p?(s=p("mainPanelTabs.codeTab.noSandboxToBrowse"),t[0]=p,t[1]=s):s=t[1];let l;t[2]!==p?(l=p("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[2]=p,t[3]=l):l=t[3];let f;return t[4]!==s||t[5]!==l?(f=r.jsx(P,{className:"h-full",title:s,description:l}),t[4]=s,t[5]=l,t[6]=f):f=t[6],f}let n;t[7]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(_,{className:"size-5 text-muted-foreground"})}),t[7]=n):n=t[7];const u=h??null;let c;return t[8]!==i||t[9]!==m||t[10]!==e.slug||t[11]!==u||t[12]!==a?(c=r.jsx("div",{className:"flex flex-col w-full h-full",children:r.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:r.jsx(x.Suspense,{fallback:n,children:r.jsx(y,{orgSlug:e.slug,virtualMcpId:a,branch:i,threadId:u,openPath:m})})})}),t[8]=i,t[9]=m,t[10]=e.slug,t[11]=u,t[12]=a,t[13]=c):c=t[13],c}function ur(){const o=d.c(3);let t;o[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},o[0]=t):t=o[0];const m=T(t),e=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let i;return o[1]!==e?(i=r.jsx(v,{tabId:"code",children:r.jsx(E,{feature:"cms",children:r.jsx(w,{openPath:e})})}),o[1]=e,o[2]=i):i=o[2],i}export{ur as default};
|