decocms 4.514.4 → 4.514.6
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-nFzQGM_y.js → ActiveShapeUtils-DV40gvcg.js} +1 -1
- package/dist/client/assets/{AlertCircle-BKEHXsE7.js → AlertCircle-Ctbquk5a.js} +1 -1
- package/dist/client/assets/{AreaChart-CW_cA_el.js → AreaChart-C_4ebEom.js} +1 -1
- package/dist/client/assets/{ArrowLeft-D81aL8fM.js → ArrowLeft-DZ0mAFgb.js} +1 -1
- package/dist/client/assets/{ArrowUp-DfLaoCfv.js → ArrowUp-bYg1aEOe.js} +1 -1
- package/dist/client/assets/{BarChart-D0FGQ4Mg.js → BarChart-DfTtCBDv.js} +1 -1
- package/dist/client/assets/{Building02-CfaCzC7T.js → Building02-BHIVlbfK.js} +1 -1
- package/dist/client/assets/{CartesianChart-8wmktLTV.js → CartesianChart-uNdbRuTj.js} +1 -1
- package/dist/client/assets/{CategoricalChart-zXV0drbf.js → CategoricalChart-CRSSpo7X.js} +1 -1
- package/dist/client/assets/{CheckCircle-pswqe0yQ.js → CheckCircle-C2ndOEUO.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-yLR6uZzh.js → ChevronSelectorVertical-DaUdbCWk.js} +1 -1
- package/dist/client/assets/{ChevronUp-DtK5u9ST.js → ChevronUp-C8mqlnDX.js} +1 -1
- package/dist/client/assets/{Copy01-LCHR9m-G.js → Copy01-DC8f0fwU.js} +1 -1
- package/dist/client/assets/{CreditCard01-DDybX_8i.js → CreditCard01-P7j8oDkg.js} +1 -1
- package/dist/client/assets/{DotsVertical-Dl2HDAjP.js → DotsVertical-BvwGTDkC.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-DE4zTG89.js → ErrorBarContext-KwnilJkg.js} +1 -1
- package/dist/client/assets/{Globe04-C3qOiXr7.js → Globe04-D6C-ihBU.js} +1 -1
- package/dist/client/assets/{Image01-t87ZE04W.js → Image01-D7F4wuKx.js} +1 -1
- package/dist/client/assets/{Key01-S4YXCnrO.js → Key01-u4HXXUPa.js} +1 -1
- package/dist/client/assets/{Link01-nrYS0m93.js → Link01-BoUupQbW.js} +1 -1
- package/dist/client/assets/{LinkBroken01-CjyqnNbo.js → LinkBroken01-BJx0R97x.js} +1 -1
- package/dist/client/assets/{Minus-Q9-Po73D.js → Minus-C1PMcNV0.js} +1 -1
- package/dist/client/assets/{Monitor01-BmtAT73A.js → Monitor01-D3VwU2ni.js} +1 -1
- package/dist/client/assets/{Play-B5do76Ow.js → Play-DxsFk4r2.js} +1 -1
- package/dist/client/assets/{Plus-DEIwMEqz.js → Plus-BDveVGJf.js} +1 -1
- package/dist/client/assets/{ReferenceLine-DwjozkX7.js → ReferenceLine-ILm1GG8J.js} +1 -1
- package/dist/client/assets/{SearchMd-UGgqPivi.js → SearchMd-Cuf45jFP.js} +1 -1
- package/dist/client/assets/{Sector-C2CduweT.js → Sector-D2xOkxuc.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-BvYm46M_.js → ShoppingBag01-BMRnsG58.js} +1 -1
- package/dist/client/assets/{Sun-rxG-ROZD.js → Sun-sKGpeIhM.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BUQctc0G.js → SwitchHorizontal01-CshMTQzi.js} +1 -1
- package/dist/client/assets/{Tool01-BjWCTgWh.js → Tool01-BM29_KWq.js} +1 -1
- package/dist/client/assets/{Trash01-CIzl9L8e.js → Trash01-D92WhXf2.js} +1 -1
- package/dist/client/assets/{Upload01-BZdlKO8o.js → Upload01-BSDy4f7m.js} +1 -1
- package/dist/client/assets/{User01-C-yKb_Na.js → User01-Cn3JqTjv.js} +1 -1
- package/dist/client/assets/{UserSquare-BX_UIOch.js → UserSquare-Drp4z0v0.js} +1 -1
- package/dist/client/assets/{Users01-BAB4CQHt.js → Users01-Cxbx87gg.js} +1 -1
- package/dist/client/assets/{XClose-BW8V9Mau.js → XClose-dOW_RI9u.js} +1 -1
- package/dist/client/assets/{ZoomOut-BaK1kO8c.js → ZoomOut-BfQx-fBr.js} +1 -1
- package/dist/client/assets/{access-gate-R9-SDKyD.js → access-gate-BjUA5Gw_.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-bYFWev7Q.js → add-connection-dialog-B0vtW1sl.js} +1 -1
- package/dist/client/assets/{agent-analytics-BgXU0CmI.js → agent-analytics-D74l8HWB.js} +1 -1
- package/dist/client/assets/agent-app-CEBVAZwO.js +1 -0
- package/dist/client/assets/{agent-assets-BJZg8qhR.js → agent-assets-Bwo-LFkg.js} +1 -1
- package/dist/client/assets/{agent-automation--X0QS-Gl.js → agent-automation-Cc45Az0m.js} +1 -1
- package/dist/client/assets/{agent-automations-eEPMDBMc.js → agent-automations-Du82D3qr.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-CRXebciL.js → agent-connect-sources-mK6fw0FS.js} +1 -1
- package/dist/client/assets/agent-deck-BZZHzjdZ.js +1 -0
- package/dist/client/assets/{agent-e2e-DJ0skb34.js → agent-e2e-D6ovLSkg.js} +1 -1
- package/dist/client/assets/{agent-experiments-DjAzPErc.js → agent-experiments-Bf1OqB1m.js} +1 -1
- package/dist/client/assets/agent-file-CzvpBEaK.js +1 -0
- package/dist/client/assets/{agent-hosting-DudPkaIg.js → agent-hosting-6te_9jdz.js} +1 -1
- package/dist/client/assets/{agent-icon-rZeVl9Rl.js → agent-icon-U4gZaLOQ.js} +1 -1
- package/dist/client/assets/agent-library-BOSIxUYz.js +1 -0
- package/dist/client/assets/agent-library-file-C0RqJ45T.js +1 -0
- package/dist/client/assets/{agent-monitor-ayWTyLig.js → agent-monitor-C3Fta9kk.js} +1 -1
- package/dist/client/assets/{agent-overview-BXPfkXp6.js → agent-overview-NPCMkyDB.js} +1 -1
- package/dist/client/assets/{agent-releases-BHf3P0zv.js → agent-releases-COSsnWfe.js} +1 -1
- package/dist/client/assets/agent-settings-DDIl5jyz.js +1 -0
- package/dist/client/assets/{agent-site-editor-BUjwQa1T.js → agent-site-editor-DlN_1OE1.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-ByOIwjcy.js +2 -0
- package/dist/client/assets/agent-site-editor-content-DSEuxkJh.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-pw2RBbYs.js +1 -0
- package/dist/client/assets/agent-view-IbmF6KBh.js +1 -0
- package/dist/client/assets/{agent-view-guard-BpxxI-Li.js → agent-view-guard-Bk4OTT2f.js} +1 -1
- package/dist/client/assets/{agents-list-BqVe9HeB.js → agents-list-B_j46cpj.js} +1 -1
- package/dist/client/assets/{ai-providers-Cbeufjse.js → ai-providers-Cb4AWs2D.js} +1 -1
- package/dist/client/assets/{alert-Ge1PvRkU.js → alert-B29bfkXd.js} +1 -1
- package/dist/client/assets/{alert-dialog-DGPL6Sul.js → alert-dialog-CKDHmJ-l.js} +1 -1
- package/dist/client/assets/{analytics-sections-DfU-HPHE.js → analytics-sections-wgH0NLyS.js} +1 -1
- package/dist/client/assets/api-keys-CiMyiLjo.js +1 -0
- package/dist/client/assets/{api-keys-CGj2gphX.js → api-keys-Xjw7lgqR.js} +1 -1
- package/dist/client/assets/{app-editor-Bnf2IFBn.js → app-editor-DgdEdwhZ.js} +1 -1
- package/dist/client/assets/{asset-utils-BfDmoNac.js → asset-utils-DrTFUoo_.js} +1 -1
- package/dist/client/assets/{auth-catchall-szGfHVda.js → auth-catchall-CIV9IiTJ.js} +1 -1
- package/dist/client/assets/{auth-entry-CfqU_pp2.js → auth-entry-ctrK7teX.js} +1 -1
- package/dist/client/assets/{auth-dECedNaO.js → auth-hgpoCSIS.js} +1 -1
- package/dist/client/assets/{auth-split-layout-zFJVMQW0.js → auth-split-layout-DkyooQGo.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BI5fpBCJ.js → authenticate-and-persist-oauth-jn1R1qId.js} +1 -1
- package/dist/client/assets/{automation-list-row-nTIicn2r.js → automation-list-row-qFFhCtZo.js} +1 -1
- package/dist/client/assets/{automation-runs-C_Fenz8y.js → automation-runs-C367-v6a.js} +1 -1
- package/dist/client/assets/{automations-C3HG2AUA.js → automations-8JKgpNEK.js} +1 -1
- package/dist/client/assets/{autosend-CUbKy0s-.js → autosend-BZOm698U.js} +1 -1
- package/dist/client/assets/{avatar-Bwp-Xc5s.js → avatar-RpIBVCkY.js} +1 -1
- package/dist/client/assets/{badge-dosB_-4a.js → badge-Cnnepvq1.js} +1 -1
- package/dist/client/assets/{block-document-SqlzHipw.js → block-document-baEM6UJG.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-J4LmPADm.js → blocks-preview-workspace-context-Ca46yWEV.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-DKkBL3yJ.js → blocks-tab-states-jGeS9iVz.js} +3 -3
- package/dist/client/assets/{blog-schema-DrvA3-E7.js → blog-schema-CUOOV4a2.js} +1 -1
- package/dist/client/assets/{buckets-MFDKP_DD.js → buckets-p2Fiyc0f.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-CmyFLmXV.js → build-improve-prompt-doc-ClmcYJRa.js} +1 -1
- package/dist/client/assets/{calendar-CS0FMW9V.js → calendar-DqVFnL9A.js} +1 -1
- package/dist/client/assets/{capability-load-error-DwR-XbDb.js → capability-load-error-DdN4o47w.js} +1 -1
- package/dist/client/assets/{category-editor-BH1u-0CE.js → category-editor-Gr46SDP4.js} +1 -1
- package/dist/client/assets/{chart-CK7GPIHE.js → chart-B5vy2nis.js} +1 -1
- package/dist/client/assets/{chat-context-DGKtupvP.js → chat-context-_d3c57p1.js} +1 -1
- package/dist/client/assets/{chat-draft-CR7qKiZW.js → chat-draft-CKcHhXuF.js} +1 -1
- package/dist/client/assets/{checkbox-CSo6M-6b.js → checkbox-CUzk21sc.js} +1 -1
- package/dist/client/assets/{choose-editor-D9oQ3uFZ.js → choose-editor-BFcNvSv4.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DLlz7zNV.js → cli-auth-success-BolfyrKO.js} +1 -1
- package/dist/client/assets/{client-icons-Cu_VeKS2.js → client-icons-50FpZDWK.js} +1 -1
- package/dist/client/assets/cms-settings-editor-CxJ3W3GB.js +1 -0
- package/dist/client/assets/{collapsible-82CZUSRZ.js → collapsible-CeBZpglT.js} +1 -1
- package/dist/client/assets/{collection-detail-DFiz0PNq.js → collection-detail-BXVqh2XU.js} +1 -1
- package/dist/client/assets/{collection-display-button-u8azE1jK.js → collection-display-button-El-xnsaW.js} +1 -1
- package/dist/client/assets/{collection-search-JLOqgXSU.js → collection-search-gW4FCqmq.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-xzcEzLCL.js → collection-table-wrapper-CB0t7kAl.js} +1 -1
- package/dist/client/assets/{collection-tabs-ClvmGOqD.js → collection-tabs-DIFXv7hR.js} +1 -1
- package/dist/client/assets/{column-rules-BuMug1kg.js → column-rules-o-DlIK_-.js} +1 -1
- package/dist/client/assets/{combobox-TZ4RmWfI.js → combobox-DlpsfK7m.js} +1 -1
- package/dist/client/assets/{coming-soon-page-BrWbdSFq.js → coming-soon-page-ZTZUbFgV.js} +1 -1
- package/dist/client/assets/{command-YtmkYLwE.js → command-C7n5qLsN.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-DmfKGx8E.js → companion-mcps-section-C2rDEgkL.js} +1 -1
- package/dist/client/assets/{config-BXEb6qjV.js → config-BCpfsSBB.js} +1 -1
- package/dist/client/assets/{connect-Dk5dqwe8.js → connect-Du_rXIM1.js} +1 -1
- package/dist/client/assets/{connect-layout-CAq5B13E.js → connect-layout-DyGwITyt.js} +1 -1
- package/dist/client/assets/{connection-CU2PwZyg.js → connection-Dik4epzq.js} +1 -1
- package/dist/client/assets/{connection-card-Bf6UkDd9.js → connection-card-DCnmTKpJ.js} +1 -1
- package/dist/client/assets/{connection-detail-CS3q9gzr.js → connection-detail-CaTyUBlA.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B_xUWFll.js → connection-form-helpers-ta2yIvIb.js} +1 -1
- package/dist/client/assets/{connections--l3N3T2i.js → connections-Dy2qa1bG.js} +1 -1
- package/dist/client/assets/{content-tab-tOKm2eMX.js → content-tab-YH7YYY48.js} +3 -3
- package/dist/client/assets/{context-DkeFELTS.js → context-3twD8BEv.js} +1 -1
- package/dist/client/assets/{context-menu-3z4rcXzD.js → context-menu-BUZj1ZG7.js} +1 -1
- package/dist/client/assets/{context-shell-CMaJQRGG.js → context-shell-CWF9i3Vt.js} +3 -3
- package/dist/client/assets/{core.esm-DeTgmZgN.js → core.esm-DNra8pgf.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-CuiwUtLx.js → create-organization-dialog-BkJvAp86.js} +1 -1
- package/dist/client/assets/{daily-pulse-BEmMTzG-.js → daily-pulse-DYjhyf3I.js} +1 -1
- package/dist/client/assets/{discover-G4Np02u5.js → discover-nnC5Qnas.js} +1 -1
- package/dist/client/assets/{domain-settings--EwUJ9iT.js → domain-settings-CpxFWOzU.js} +1 -1
- package/dist/client/assets/{drawer-COuxoIPq.js → drawer-ZlYTI3Z6.js} +1 -1
- package/dist/client/assets/{editor-CT6aDT4h.js → editor-BFHySd1K.js} +1 -1
- package/dist/client/assets/{editor-classes-C5mmUd_p.js → editor-classes-DPi5BWR5.js} +1 -1
- package/dist/client/assets/{empty-state-BJ_BjmBA.js → empty-state-Bok1L2hc.js} +1 -1
- package/dist/client/assets/{empty-state-DjiRKbHi.js → empty-state-Cu20Qj3-.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DCoskE6n.js → extract-connection-data-CNLani4P.js} +1 -1
- package/dist/client/assets/{feature-gate-DZNUWe0P.js → feature-gate-dfnyrtcC.js} +1 -1
- package/dist/client/assets/{feature-paywall-BaUYa8qG.js → feature-paywall-D-GfxA1X.js} +1 -1
- package/dist/client/assets/{file-explorer-DogEkKeq.js → file-explorer-DOlx1A5r.js} +1 -1
- package/dist/client/assets/{file-preview-DI0eRAl3.js → file-preview-DSIiiWjA.js} +1 -1
- package/dist/client/assets/{file-share-button-CcxRIY2R.js → file-share-button-CB7fcIJI.js} +1 -1
- package/dist/client/assets/{file-type-icon-Fh4lxmRD.js → file-type-icon-DPqHd815.js} +1 -1
- package/dist/client/assets/{folder-icon-DucOOoml.js → folder-icon-qexQSaYN.js} +1 -1
- package/dist/client/assets/{form-6kVfawT3.js → form-Dpwt-9St.js} +1 -1
- package/dist/client/assets/{general-DqtTv7tP.js → general-DJuGMWNv.js} +1 -1
- package/dist/client/assets/{home-m8gee_-f.js → home-D9ErGwHG.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-spvj7jCb.js → hosted-publish-feedback-9IsLIhi6.js} +1 -1
- package/dist/client/assets/{icon-button-B0NXCYZw.js → icon-button-CwrVRVUS.js} +1 -1
- package/dist/client/assets/{index-DVLeW6hW.js → index-2uBqLA9S.js} +1 -1
- package/dist/client/assets/{index-DwjOqgVq.js → index-BRzGXE32.js} +1 -1
- package/dist/client/assets/{index-CjiOeyZB.js → index-BWUABroT.js} +1 -1
- package/dist/client/assets/{index-DKt3w3pV.js → index-BpRXpcv4.js} +1 -1
- package/dist/client/assets/index-BqS2UmN9.css +1 -0
- package/dist/client/assets/{index-OmMe1wxV.js → index-C9OgV5Vt.js} +1 -1
- package/dist/client/assets/{index-BDYGqdZJ.js → index-CJu3ft8V.js} +1 -1
- package/dist/client/assets/{index-BpE9ALKU.js → index-CaH7O3hJ.js} +2 -2
- package/dist/client/assets/{index-DTn--46s.js → index-Cd_jqW-G.js} +1 -1
- package/dist/client/assets/{index-CVrQhouC.js → index-DJM5MV7l.js} +1 -1
- package/dist/client/assets/{index-BnQcNfAh.js → index-DK4LlU65.js} +1 -1
- package/dist/client/assets/{index-DpoGKrcE.js → index-DLuP-oy3.js} +1 -1
- package/dist/client/assets/{index-BdqvPq_I.js → index-DPulqOQn.js} +1 -1
- package/dist/client/assets/{index-BeRT15sS.js → index-DUXVtfV1.js} +1 -1
- package/dist/client/assets/{index-4mqxQ_CF.js → index-DzppA2EQ.js} +1 -1
- package/dist/client/assets/{index-DzUJHy5n.js → index-TNsA6rsO.js} +1 -1
- package/dist/client/assets/{index-redirect-B4nMcc4Y.js → index-redirect-CLzDU0fe.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-CUzkqvrD.js → infiniteQueryObserver-u-Zd7Oxq.js} +1 -1
- package/dist/client/assets/{infra-billing-DhxORp3B.js → infra-billing-DkMlIjvS.js} +1 -1
- package/dist/client/assets/{input-Hbd41rUw.js → input-D2sd1bar.js} +3 -3
- package/dist/client/assets/{input-DSXv99TZ.js → input-DN6U5jAj.js} +1 -1
- package/dist/client/assets/{integration-icon-Ilfqyxys.js → integration-icon-DCiBepJw.js} +1 -1
- package/dist/client/assets/{jira-icon-tlwupM6f.js → jira-icon-DoiJbCfx.js} +1 -1
- package/dist/client/assets/{label-Byb6HWZH.js → label-Cnc4HQwP.js} +1 -1
- package/dist/client/assets/{layout-voCKlRfq.js → layout-BVW5q62A.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-DUEMoq7I.js → legacy-agents-deep-DMfsC9-u.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-DCXAudzh.js → legacy-main-redirect-mSx9JMxj.js} +1 -1
- package/dist/client/assets/library-BNARKbpY.js +1 -0
- package/dist/client/assets/{login-HOxtRiGZ.js → login-CN9ueiIT.js} +1 -1
- package/dist/client/assets/{markdown-Dej9RATS.js → markdown-CA3yd3L6.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-CQ1qp5-9.js → mcp-app-renderer-Xaw0krD3.js} +1 -1
- package/dist/client/assets/{mcp-oauth-oGpWuhVi.js → mcp-oauth-3Gakbc_U.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BG-oWBlL.js → mcp-oauth-CxgfM8zh.js} +1 -1
- package/dist/client/assets/{members-B_G0pbYI.js → members-54kLIghY.js} +1 -1
- package/dist/client/assets/{memory-BPjaQ4Kh.js → memory-CQX6dqQP.js} +1 -1
- package/dist/client/assets/{mini-report-page-abzNXw_Q.js → mini-report-page-DCq4FNu-.js} +1 -1
- package/dist/client/assets/{mock-board-CaXwh2tM.js → mock-board-CrlDKQvj.js} +3 -3
- package/dist/client/assets/{monaco-editor-CdL13Ko4.js → monaco-editor-C7rmyhBT.js} +1 -1
- package/dist/client/assets/monitoring-DX0mWeP-.js +1 -0
- package/dist/client/assets/{monitoring-stats-row-CGXhSW6L.js → monitoring-stats-row-Bhxzz0Gz.js} +1 -1
- package/dist/client/assets/{multi-select-Ca36UGU7.js → multi-select-DtSzZ5RJ.js} +1 -1
- package/dist/client/assets/{mustache-HR1Haumz.js → mustache-BxPGtFxk.js} +1 -1
- package/dist/client/assets/{new-project-dialog-Doo7kyhT.js → new-project-dialog-DpHJ0D5s.js} +1 -1
- package/dist/client/assets/{oauth-callback-BDajeWC8.js → oauth-callback-ChXsONZm.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BrXBkfFZ.js → oauth-callback-ai-provider-BnJfOlsF.js} +1 -1
- package/dist/client/assets/{onboarding-BRNk4bDG.js → onboarding-CuSBfoiA.js} +1 -1
- package/dist/client/assets/{openai-conversation-Cp4VzKaN.js → openai-conversation-B0QRsRtq.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-DfS24tBi.js → optimistic-project-sidebar-views-Cgq6MsN2.js} +1 -1
- package/dist/client/assets/{order-monitor-day-BUGNDHbx.js → order-monitor-day-BHpHKh9K.js} +1 -1
- package/dist/client/assets/{organization-choice-vWQUgFdw.js → organization-choice-hoXHHizl.js} +1 -1
- package/dist/client/assets/{orgs-BLAeoNKy.js → orgs-CsgsGgsX.js} +1 -1
- package/dist/client/assets/{page-seo-form-DVnVZHhC.js → page-seo-form-PX_1VQkb.js} +1 -1
- package/dist/client/assets/{pair-nOzQH_7U.js → pair-5gOZrfkD.js} +1 -1
- package/dist/client/assets/plan-BnqYpKp5.js +1 -0
- package/dist/client/assets/{plan-ladder-Bo1QCqxw.js → plan-ladder-BydnH1hR.js} +1 -1
- package/dist/client/assets/{popover-c8imB8ZN.js → popover-DSRFfUdL.js} +1 -1
- package/dist/client/assets/{post-calendar-DFyAd_qH.js → post-calendar-D_8Ms9Cq.js} +1 -1
- package/dist/client/assets/{post-editor-D0lVlOEr.js → post-editor-lU8h7ku9.js} +1 -1
- package/dist/client/assets/{preview-content-Cp2YMUQv.js → preview-content-hWNiqB3L.js} +1 -1
- package/dist/client/assets/{preview-dialog-MFyGLxAK.js → preview-dialog-HJF1l34b.js} +1 -1
- package/dist/client/assets/{preview-panel-D-U4T9gu.js → preview-panel-PigPEt4W.js} +1 -1
- package/dist/client/assets/{preview-tab-CRczEj8G.js → preview-tab-B-uX9H3E.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-ukCeHMzo.js → product-picker-dialog-BUcziHgK.js} +1 -1
- package/dist/client/assets/{profile-CmgN3YJp.js → profile-D-LHzn9e.js} +1 -1
- package/dist/client/assets/{project-app-view-C0zebxGj.js → project-app-view-CGbP48WX.js} +1 -1
- package/dist/client/assets/{project-apps-BAHY134E.js → project-apps-CajNRGrz.js} +1 -1
- package/dist/client/assets/{project-feed-CKWqMBF-.js → project-feed-uKBIzmIi.js} +1 -1
- package/dist/client/assets/{project-icon-xn6KKGaE.js → project-icon-njec1yh1.js} +1 -1
- package/dist/client/assets/project-reports-BwZ6fxIs.js +1 -0
- package/dist/client/assets/project-tasks-zYigtiRn.js +1 -0
- package/dist/client/assets/{projects-BqBJC9d2.js → projects-OJnagyMB.js} +1 -1
- package/dist/client/assets/{projects-empty-state-D55m_jaW.js → projects-empty-state-C9IhB7We.js} +1 -1
- package/dist/client/assets/{prompts-COT0cmpR.js → prompts-B590L6x_.js} +1 -1
- package/dist/client/assets/record-editor-BxllIkC_.js +1 -0
- package/dist/client/assets/{redirect-editor-C0Vt0bpp.js → redirect-editor-CTLxiYxe.js} +1 -1
- package/dist/client/assets/reports-CJqSx9sD.js +1 -0
- package/dist/client/assets/{reports-CeCMlBXV.js → reports-DBL7SnEu.js} +1 -1
- package/dist/client/assets/{reports-onboarding-sIGyoIIM.js → reports-onboarding-Be9p494r.js} +1 -1
- package/dist/client/assets/{reports-tab-B2Gjt8_e.js → reports-tab-B0M7UKAQ.js} +2 -2
- package/dist/client/assets/{repositories-DhflHwKe.js → repositories-BEFfDE3p.js} +1 -1
- package/dist/client/assets/repositories-DceuH_GA.js +1 -0
- package/dist/client/assets/{repository-binding-3oH3TnyD.js → repository-binding-BLgLcT4o.js} +1 -1
- package/dist/client/assets/{repository-import-picker-C-BHOdIZ.js → repository-import-picker-lphgZTGu.js} +1 -1
- package/dist/client/assets/{repository-picker-D2zUBg0A.js → repository-picker-Dadd-3sc.js} +1 -1
- package/dist/client/assets/{require-capability-DGAfsfb0.js → require-capability-D4hkdMxt.js} +1 -1
- package/dist/client/assets/{required-auth-layout-D4q3UHWX.js → required-auth-layout-e3_y0Tns.js} +1 -1
- package/dist/client/assets/{reset-password-CjXG8DCL.js → reset-password-DPAO5WIu.js} +1 -1
- package/dist/client/assets/{resizable-D0sQwLi7.js → resizable-D4wP3vt7.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-Bsy-SAnr.js → resolve-tab-icon-CE5OwNrK.js} +1 -1
- package/dist/client/assets/{review-settings-CqIcqOZz.js → review-settings-BJK_0aY-.js} +1 -1
- package/dist/client/assets/{roles-CwfZN2Zs.js → roles-CJ569tPn.js} +1 -1
- package/dist/client/assets/{route-1Hputyx-.js → route-Bzf1UEGL.js} +1 -1
- package/dist/client/assets/route-CG_vDQP9.js +1 -0
- package/dist/client/assets/{route-BaysvQtq.js → route-Dfqmjwjm.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-BxTbwuaV.js → sandbox-lifecycle-context-v9W7lV1M.js} +1 -1
- package/dist/client/assets/{schema-Cdnttv65.js → schema-BdFq22Hl.js} +1 -1
- package/dist/client/assets/{schema-CrOnn79s.js → schema-Cx9ZLa-H.js} +1 -1
- package/dist/client/assets/{scroll-area-D2nZWmkP.js → scroll-area-Bnrys5oj.js} +1 -1
- package/dist/client/assets/{search-input-CRQ84Rcs.js → search-input-CXQLMhKZ.js} +1 -1
- package/dist/client/assets/{search-toggle-DJe6aOx6.js → search-toggle-DxUZFRWy.js} +1 -1
- package/dist/client/assets/{secret-ciphertext-DFEUxQ2Q.js → secret-ciphertext-DZr2qcb4.js} +1 -1
- package/dist/client/assets/{secret-picker-BLAtxBgC.js → secret-picker-HHgZv9y6.js} +1 -1
- package/dist/client/assets/{secrets-DZqnvevo.js → secrets-Cm2ZaKef.js} +1 -1
- package/dist/client/assets/{sections-QfQgZ0Fk.js → sections-DT5ozPKC.js} +1 -1
- package/dist/client/assets/{sections-editor-Dju5cdx3.js → sections-editor-CkId24Js.js} +1 -1
- package/dist/client/assets/{select-DbboDM2Y.js → select-CSQbGY9x.js} +1 -1
- package/dist/client/assets/{select-model-CkEgdTiU.js → select-model-NUb0C_oX.js} +1 -1
- package/dist/client/assets/{seo-editor-Bgqf8Wvw.js → seo-editor-D886xssW.js} +1 -1
- package/dist/client/assets/{separator-3Nzbh-2_.js → separator-CjiQChVR.js} +1 -1
- package/dist/client/assets/settings-tab-BmEKDSFe.js +1 -0
- package/dist/client/assets/{sheet-IZSv9mMV.js → sheet-C-yunzji.js} +1 -1
- package/dist/client/assets/{shell-layout-o5EDGsgV.js → shell-layout-vQvYndIW.js} +1 -1
- package/dist/client/assets/site-editor-1ZGqBXbh.js +1 -0
- package/dist/client/assets/{site-editor-toast-CMmEyjwn.js → site-editor-toast-BtFL0E4q.js} +1 -1
- package/dist/client/assets/{skills-C1ZfhZ8l.js → skills-9HRxIPqn.js} +1 -1
- package/dist/client/assets/{slider-Da5umJzS.js → slider-DB0IY-tO.js} +1 -1
- package/dist/client/assets/{sortable.esm-DygwBK0K.js → sortable.esm-C1zl1f3P.js} +1 -1
- package/dist/client/assets/{sso-CfMlD7Ei.js → sso-PqsQn3xP.js} +1 -1
- package/dist/client/assets/{suggestion-16V23GET.js → suggestion-Wgq7DDQo.js} +1 -1
- package/dist/client/assets/{switch-B3SL4byd.js → switch-DYA2xfHU.js} +1 -1
- package/dist/client/assets/{symbol-DjFHt_qH.js → symbol-B8wQ7lKk.js} +1 -1
- package/dist/client/assets/{synced-repos-Cq5hQBT3.js → synced-repos-mXhCt1sQ.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-DygpknPW.js → tab-icon-glyph-BpaLtZlY.js} +1 -1
- package/dist/client/assets/{table-B20C_A4l.js → table-BQLxO2Sb.js} +1 -1
- package/dist/client/assets/{tabs-z8w4lUhq.js → tabs-2NCCfhSA.js} +1 -1
- package/dist/client/assets/{task-assignee-avatar-DwrkOT2r.js → task-assignee-avatar-FdiZZP36.js} +1 -1
- package/dist/client/assets/{task-board-BllghPg4.js → task-board-DRNr9Dsj.js} +1 -1
- package/dist/client/assets/{task-route-7R43gp5A.js → task-route-BaANwBST.js} +1 -1
- package/dist/client/assets/{task-status-D5NZV4J9.js → task-status-VcYcBtq_.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-Du8PW_1F.js → taskboard-analytics-RJkelUr8.js} +1 -1
- package/dist/client/assets/{tasks-Dum2n8yE.js → tasks-COZY0QCJ.js} +1 -1
- package/dist/client/assets/tasks-CYZeHeAX.js +1 -0
- package/dist/client/assets/{textarea-DIB5tw4r.js → textarea-CxhXyMKI.js} +1 -1
- package/dist/client/assets/{thread-analytics-DWvPjsmt.js → thread-analytics-BGQNbVS2.js} +1 -1
- package/dist/client/assets/{thread-intent-BZm-EFCO.js → thread-intent-DKuqiaG7.js} +1 -1
- package/dist/client/assets/{thread-route-Cqps-enJ.js → thread-route-CQ0phZyI.js} +1 -1
- package/dist/client/assets/{thread-route-Be_GBqtE.js → thread-route-jNELZX1N.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-owT2bQp5.js → thread-sheet-body-Cdv_wHnA.js} +1 -1
- package/dist/client/assets/{time-range-picker-CMWhorHO.js → time-range-picker-DEciYFPf.js} +1 -1
- package/dist/client/assets/{toggle-group-DwqOZ4MY.js → toggle-group-CtdhsZGp.js} +1 -1
- package/dist/client/assets/{tool-namespace-Cg8zLvjP.js → tool-namespace-DTl3so75.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-B3HvaLAv.js → toolbar-icon-button-BPY5dUh9.js} +1 -1
- package/dist/client/assets/{tooltip-BVI2BtDO.js → tooltip-B5RmO6BW.js} +1 -1
- package/dist/client/assets/{tooltipContext-DWII1oNN.js → tooltipContext-C93Q6WFf.js} +1 -1
- package/dist/client/assets/{track-9VatN5GC.js → track-BBpplM-4.js} +1 -1
- package/dist/client/assets/{types-DGEWLhFA.js → types-Bt5yyj-z.js} +1 -1
- package/dist/client/assets/{url-slug-BxAIS32w.js → url-slug-B41xLFy_.js} +1 -1
- package/dist/client/assets/{usage-stats-RC7HVDz7.js → usage-stats-BkcKNXzu.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CwDx9RGv.js → use-ai-providers-D1TJRnIR.js} +1 -1
- package/dist/client/assets/{use-automations-esI-a9ei.js → use-automations-B9eI7BBQ.js} +1 -1
- package/dist/client/assets/{use-autosave-BlJaWBoS.js → use-autosave-D3uy94Wi.js} +1 -1
- package/dist/client/assets/{use-chat-layout-state-Bp6y46wP.js → use-chat-layout-state-BNudmQ0u.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CcmqI1TT.js → use-clock-tick-D3FoyBXt.js} +1 -1
- package/dist/client/assets/{use-connect-companion-EK_tBR0R.js → use-connect-companion-BLomLbPK.js} +1 -1
- package/dist/client/assets/{use-connection-C5PJp5ki.js → use-connection-BwU_KLSF.js} +1 -1
- package/dist/client/assets/{use-content-sync-CT_R89DD.js → use-content-sync-BgOMBs5q.js} +1 -1
- package/dist/client/assets/{use-copy-CHLOIJ7B.js → use-copy-d7X6hrKI.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CjupUFBL.js → use-create-virtual-mcp-OUIvni0u.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-mo7KqOi2.js → use-date-fns-locale-BuGEMgXR.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B_tNUqHF.js → use-debounced-autosave-KHVF-MyQ.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DRcqPkU3.js → use-debounced-value-DJkh4QSx.js} +1 -1
- package/dist/client/assets/{use-deco-credits-kpB_ljAl.js → use-deco-credits-Dx8wT8P5.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-7DVNLqw5.js → use-decopilot-events-AlKmmETJ.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BJGj8-x3.js → use-delete-connection-BQjQHz64.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CfS1pvxP.js → use-deployment-admin-BIA7CHLS.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-M1Pf_Hev.js → use-fast-preview-draft-url-5oeXM-kY.js} +1 -1
- package/dist/client/assets/{use-file-configs-D_kctJ5n.js → use-file-configs-tsH4be9V.js} +1 -1
- package/dist/client/assets/{use-inbox-feed-VSLuhS60.js → use-inbox-feed-bGge9UaE.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-RN9jGFYf.js → use-infinite-scroll-BO0n6TVn.js} +1 -1
- package/dist/client/assets/{use-join-requests-BCOdXbZZ.js → use-join-requests-DqhkfI-R.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-CXxVz1ce.js → use-main-panel-tabs-BrJK-bL3.js} +1 -1
- package/dist/client/assets/{use-main-schema-v8-B2SCuhcn.js → use-main-schema-v8-CZLsOlEV.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-aacZjJ6n.js → use-mcp-auth-status-DmZSbEuf.js} +1 -1
- package/dist/client/assets/{use-mcp-client-J1ndEcf9.js → use-mcp-client-MRThuZpK.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-DNJWm8dw.js → use-mcp-prompts-DHm-ZTib.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-D4L1wGVI.js → use-mcp-tools-DiCKzhUm.js} +1 -1
- package/dist/client/assets/{use-members-B24eH4jf.js → use-members-h3MYd8gX.js} +1 -1
- package/dist/client/assets/{use-mobile-Tr1QHP7F.js → use-mobile-DCpa1RnA.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DF_GAhPU.js → use-navigate-to-agent-Bt0oZ-ou.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-CRea1MGx.js → use-open-billing-url-B2NuYLXS.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BvXF9uek.js → use-org-auth-client-CL0a2tPL.js} +1 -1
- package/dist/client/assets/{use-org-fs-NBkzIlLN.js → use-org-fs-D_4Q985K.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-DJQ1Emm8.js → use-org-repo-syncs-CC0BNhdO.js} +1 -1
- package/dist/client/assets/{use-org-sso-D6QGk2qX.js → use-org-sso-LC63-uuA.js} +1 -1
- package/dist/client/assets/{use-organization-roles-cAP4d5Qj.js → use-organization-roles-D1Q7317o.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CvNS5uqj.js → use-organization-settings-DhvN44pQ.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-xzho_IdK.js → use-panel-navigate-DoD4Atgz.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-B1sZ244h.js → use-project-native-view-presence-DF_1PP5b.js} +1 -1
- package/dist/client/assets/{use-project-scope-BL_T_B-0.js → use-project-scope-Cq4vb2Sy.js} +1 -1
- package/dist/client/assets/{use-recent-apps-uKwF1ZKT.js → use-recent-apps-CeIVmzp8.js} +1 -1
- package/dist/client/assets/{use-releases-BRWfch3N.js → use-releases-DQ--CsAF.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-PHzF2U7A.js → use-reports-diagnostic-CWir9L_Y.js} +1 -1
- package/dist/client/assets/{use-secrets-Fjq05jIs.js → use-secrets-D6tUoaJC.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-C5Y0tyB9.js → use-section-preview-base-Ca45yoz9.js} +1 -1
- package/dist/client/assets/{use-sidebar-collapsed-DEH_3BJ7.js → use-sidebar-collapsed-DPHQfMII.js} +1 -1
- package/dist/client/assets/{use-tags-B8VFTGb1.js → use-tags-DE48pnzl.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-e_iVjVgI.js → use-task-board-analytics-DlTk43Uu.js} +1 -1
- package/dist/client/assets/{use-task-board-events-Bi71rM-b.js → use-task-board-events-CSRq29Tm.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-CKLjOfFC.js → use-task-board-item-prs-BsxjjcBf.js} +1 -1
- package/dist/client/assets/{use-task-metadata-CJXzsRtm.js → use-task-metadata-ToXrxOCT.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-C4-tdyMf.js → use-thread-analytics-Bu_i1v9r.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-BRyva6jJ.js → use-thread-outputs-jyAHyZHI.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-ZoWXsJcj.js +1 -0
- package/dist/client/assets/{useQueries-CXXzgfBx.js → useQueries-CddGJ3VE.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-D2W70ffp.js +1 -0
- package/dist/client/assets/{users-d19YD92D.js → users-2guAvf9G.js} +1 -1
- package/dist/client/assets/{utils-DZ5cUVcx.js → utils-DzhKsxx8.js} +1 -1
- package/dist/client/assets/{variant-calendar-DF0w82xq.js → variant-calendar-Bdj0O-mA.js} +1 -1
- package/dist/client/assets/{variant-draft-pointer-5TG4p4cZ.js → variant-draft-pointer-_apEPqxm.js} +1 -1
- package/dist/client/assets/{virtual-mcp-BYkH2aU6.js → virtual-mcp-CMZ8dHEU.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-D4CyjfYE.js → watch-sse-pool-DwBbAQ97.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-Caj60l9D.js +0 -1
- package/dist/client/assets/agent-deck-C__HnZM1.js +0 -1
- package/dist/client/assets/agent-file-BeBp8n5C.js +0 -1
- package/dist/client/assets/agent-library-DdVopENE.js +0 -1
- package/dist/client/assets/agent-library-file-uDNgnKii.js +0 -1
- package/dist/client/assets/agent-settings-DU_TfnoX.js +0 -1
- package/dist/client/assets/agent-site-editor-code-C-6QY89K.js +0 -2
- package/dist/client/assets/agent-site-editor-content-BxY50t8F.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-oopH768H.js +0 -1
- package/dist/client/assets/agent-view-BReXQMze.js +0 -1
- package/dist/client/assets/api-keys-N7gnHDXr.js +0 -1
- package/dist/client/assets/cms-settings-editor-Bn9fRyLD.js +0 -1
- package/dist/client/assets/index-CWfwo1z9.css +0 -1
- package/dist/client/assets/library-C4bjd1Q1.js +0 -1
- package/dist/client/assets/monitoring-DplmubBN.js +0 -1
- package/dist/client/assets/plan-UUfA5CZ5.js +0 -1
- package/dist/client/assets/project-reports-a-FYZHJz.js +0 -1
- package/dist/client/assets/project-tasks-Ci9CnGcj.js +0 -1
- package/dist/client/assets/record-editor-BzL4Kfgp.js +0 -1
- package/dist/client/assets/reports-BrsdMCkM.js +0 -1
- package/dist/client/assets/repositories-PPuEUfpS.js +0 -1
- package/dist/client/assets/route-CeQaMp2n.js +0 -1
- package/dist/client/assets/settings-tab-BvyLrsti.js +0 -1
- package/dist/client/assets/site-editor-bo0E_jA0.js +0 -1
- package/dist/client/assets/tasks-jHi238nZ.js +0 -1
- package/dist/client/assets/useInfiniteQuery-B6hNZdP6.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BLScoOeo.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4501,7 +4501,7 @@ ${X}`:`${Y}
|
|
|
4501
4501
|
|
|
4502
4502
|
${X}
|
|
4503
4503
|
${J.slice(Y.length).trimStart()}`}function pj8($){return $?.match(dK5)?.[1]?.toLowerCase()??null}async function tK5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(uK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=uK(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 ij8($,Z){try{return await fQ0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof Vs)return null;throw Q}}async function nj8($,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([ij8($,Z),ij8($,Q)]);return G!==W}async function tj8($,Z){if(!AD0(Z))throw new nu;if(!await jT1($.store,$.site,Z))throw new nu}async function oj8($,Z){await tj8($,Z);let Q=await $9($.client,$.mainBranch);return nj8($,Q,Z)}async function sj8($,Z,Q={},Y={}){await tj8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new nu;let J=await $9($.client,$.mainBranch),G=await tK5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await nj8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await wT1($,J,G,nK5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await zT1($,K,Y),schemaChanged:W}}var nu,gQ0="Reapply: ",mK5,cK5="Reapplied-From",dK5;var RT1=L(()=>{Gn();T5();yF();$B();yQ0();Tg0();nu=class nu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};mK5=/^chore\(decofile\):/,dK5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function rj8($,Z,Q){let[Y,X,J]=await Promise.all([Sj8($.store,$.site),iq$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:sK5,cursor:Q,limit:oK5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>pj8(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 aj8($){let Z=await $9($.client,$.mainBranch),Q=await ET1($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await PT1($,Y),Y}var oK5=50,sK5="1970-01-01T00:00:00Z";var ej8=L(()=>{T5();$B();yQ0();RT1()});function $w8($){return`site-tokens:${$}`}function rK5($){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 Zw8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function aK5($,Z){let Q=(J)=>MT1(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}.${MT1(X)}`}function Qw8($){let Z=async(Q,Y)=>rK5(await $.kv.get(Q,$w8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:MT1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await aK5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,$w8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var MT1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function $H5(){let $=Pp();return $?{store:$,purge:Pg0()}:null}async function Ig0($){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 Yw8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return Qw8({kv:$.var.studioContext.storage.kv,signingKey:()=>Zw8(Z)})}function Ss($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof Vs)return $.json({error:Q},409);if(Z instanceof qg0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=_3(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 Xw8($={}){let Z=new Z1,Q=$.repoClientFor??b3,Y=$.insightsFor??Gq$,X=$.delivery??$H5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",eK5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Ig0(J);if(!G)return J.json(Vg0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await rj8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return Ss(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Ig0(J);if(!G)return J.json(Vg0,503);return J.json({current:await aj8(G)})}catch(G){return Ss(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Ig0(J);if(!G)return J.json(Vg0,503);return J.json({schemaChanged:await oj8(G,J.req.param("sha"))})}catch(G){if(G instanceof nu)return J.json({error:G.message},404);return Ss(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Ig0(J);if(!G)return J.json(Vg0,503);let W=await sj8(G,J.req.param("sha"),{coAuthor:QO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof nu)return J.json({error:G.message},404);if(G instanceof Is)return J.json({error:"main-moved"},409);return Ss(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=Yw8(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=Yw8(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 QR(K,G.packagePath,await K.getDefaultBranch());if(await Tp(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 Ss(J,K)}}),Z}var eK5,Vg0;var Jw8=L(()=>{_F();H8();Xg0();I3();vF();T5();$B();OT1();yQ0();Tg0();ej8();RT1();s60();YR();Ap();u1();bR();eK5=Bs(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 qQ(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(!VQ(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 MD0({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 Ss($,H)}let K=await RD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(zp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:ZB(G),repository:W,metadata:G}),Z()}),Vg0={error:"hosted delivery not configured"}});var Gw8=($)=>{let Z=new Z1;if(Z.use("*",yo),Z.use("*",kU8),Z.route("/",VU8($.voiceSessions)),Z.route("/",Fy0()),Z.route("/",UN8()),Z.route("/",TN8()),Z.route("/",GN8()),Z.route("/",VL8()),Z.route("/",kL8()),Z.route("/",EL8()),Z.route("/",RL8()),Z.route("/",zL8()),Z.route("/",Zg0()),Z.route("/tools",fL8()),Z.route("/",vL8()),Z.route("/",eD8({kvStorage:$.kvStorage})),Z.route("/",rD8()),Z.route("/fs",FL8({getConnection:$.getNatsConnection})),Z.route("/sandbox",Uj8()),Z.route("/decofile",cj8()),Z.route("/hosted",Xw8()),Z.route("/",OL8()),Z.route("/",NL8()),Z.route("/deco-sites",Ny0()),Z.route("/hosting",uU8()),Z.route("/monitor",aU8()),Z.route("/order-monitor",QN8()),Z.route("/sso",Xy0()),Z.route("/",Qg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",xU8()),$.mountDevAssets)Z.route("/dev-assets",Ey0({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 TA1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",tW8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of TA1)Z.route(Q,DL8());return Z.route("/mcp",Xx0()),Z.route("/mcp/self",ry0()),Z.route("/mcp",Wx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Ww8=L(()=>{H8();IU8();CU8();nf0();fU8();sz1();lU8();eU8();YN8();Py0();E2();iz1();NN8();Q21();aD8();$L8();UL8();BL8();$70();fz1();Kx0();AA1();LL8();jL8();PL8();AL8();MA1();IL8();CL8();bL8();VA1();yL8();IA1();Jx0();Nj8();dj8();Jw8()});import{z as tu}from"zod";class VT1{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 Fw8.Kvm(kg0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:kg0.StorageType.Memory,ttl:Uw8.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"?Hw8.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=Kw8.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,Kw8.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"?Hw8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var kg0,Fw8,Uw8,Kw8,Hw8;var Nw8=L(()=>{B3();kB();p$();kg0=_(fH(),1),Fw8=_(vq(),1),Uw8=_(s2(),1),Kw8=new TextEncoder,Hw8=tu.discriminatedUnion("state",[tu.object({state:tu.literal("ready"),agentId:tu.string()}),tu.object({state:tu.literal("creating"),expiresAt:tu.number()})])});import{z as _s}from"zod";function ZH5($){return{model:$.model,instructions:`${ct$}
|
|
4504
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class IT1{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:ZH5({...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:_s.object({session:_s.object({id:_s.string().min(1)}),transport:_s.object({type:_s.literal("webrtc"),sdp:_s.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Bw8=L(()=>{kB()});var Dw8;var Lw8=L(()=>{Dw8=[{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 kT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:lt$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Dw8.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 Ow8=L(()=>{kB();Lw8()});import{z as pJ}from"zod";import{createHash as QH5,createHmac as YH5}from"crypto";class Cg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=QH5("sha256").update(JSON.stringify(kT1($))).digest("hex"),this.conversationKey=YH5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Cg0({...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:$,...kT1(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 jw8=L(()=>{Ow8()});import{createHmac as XH5,timingSafeEqual as JH5}from"crypto";import{z as vs}from"zod";function Ew8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return XH5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Pw8($,Z){let Q=Buffer.from(JSON.stringify(ww8.parse($))).toString("base64url");return`${Q}.${Ew8(Q,Z)}`}function zw8($,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(Ew8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!JH5(W,G))return null;try{let K=ww8.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 ww8;var Aw8=L(()=>{kB();ww8=vs.object({sessionId:vs.string().uuid(),organizationId:vs.string().min(1).max(256),userId:vs.string().min(1).max(256),threadId:vs.string().min(1).max(256),expiresAt:vs.number().int().positive()})});import{z as CT1}from"zod";function Tw8($,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 ST1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var ST1;var qw8=L(()=>{ST1=CT1.object({provider:CT1.enum(["elevenlabs","openai"]),model:CT1.string().trim().min(1).max(128)})});import{createHash as GH5}from"crypto";import{z as bs}from"zod";function xs($){return`user.${GH5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class vT1{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 Rw8.Kvm(_g0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:_g0.StorageType.Memory,ttl:Mw8.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=Tw8(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=Pw8(G,this.deps.secret),K=await this.kv(),H=xs(G),F=await K.get(H),U=F?.operation==="PUT"?Sg0.parse(F.json()):null,N=_T1.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:xs($)});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=zw8(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=xs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Sg0.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,_T1.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=xs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Sg0.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,_T1.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(xs($));if(Q?.operation==="PUT"&&Sg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(xs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var _g0,Rw8,Mw8,Sg0,_T1;var Vw8=L(()=>{B3();kB();Aw8();qw8();_g0=_(fH(),1),Rw8=_(vq(),1),Mw8=_(s2(),1),Sg0=bs.object({sessionId:bs.string().uuid(),expiresAt:bs.number(),connected:bs.boolean().optional(),conversation:ST1.optional(),characters:bs.number().int().nonnegative(),requests:bs.number().int().nonnegative()}),_T1=new TextEncoder});import{z as c1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function OH5($){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 jH5($,Z,Q){try{return JSON.parse($)}catch{throw new Cw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function wH5($){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:jH5(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 EH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RN(Q.function.parameters):RN({type:"object",properties:{}});return[Q.function.name,r$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function PH5($){if(!$)return;return{openai:{response_format:$}}}function zH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Iw8($,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 kw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var WH5=256,KH5,HH5,FH5,UH5,NH5,BH5,DH5,LH5,Cw8,Sw8,_w8;var vw8=L(()=>{l4();H8();Ns();UU();KH5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),HH5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),FH5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(HH5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),UH5=c1.object({type:c1.literal("text")}),NH5=c1.object({type:c1.literal("json_object")}),BH5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),DH5=c1.union([UH5,NH5,BH5]),LH5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(FH5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(KH5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:DH5.optional(),user:c1.string().optional()});Cw8=class Cw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};Sw8=new Z1;Sw8.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=LH5.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=OH5(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=wH5(J.messages),N=J.tools?EH5(J.tools):void 0,B=PH5(J.response_format),D=zH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Iw8(F,U,N,J,B,$.req.raw.signal);try{let E=Nt(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>=WH5)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:kw8(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=Iw8(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:kw8(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)}});_w8=Sw8});function AH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function bw8(){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(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(tA(U)!==J)continue;if(!AH5(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 xw8=L(()=>{H8();$X()});var vg0;var bT1=L(()=>{vg0={name:"decocms",version:"4.514.4",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 RH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??qH5}}var fw8,qH5="https://ph.studio.decocms.com",yw8;var gw8=L(()=>{H8();R10();Qu();H9();u1();wo();Pz1();bT1();fw8=new Z1;fw8.get("/",($)=>{let Z={version:vg0.version,theme:YW$(),...BF().logo&&{logo:BF().logo},...fO()&&{internalUrl:A$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&N2(),plansEnabled:B0().plansEnabled,auth:OF8(),posthog:RH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:RU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yw8=fw8});import{z as R$}from"zod";var MH5,hw8;var uw8=L(()=>{MH5=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())}),hw8=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(MH5)})),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 lw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function bg0($,Z={}){let Q=await fetch(lw8($,"",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 hw8.parse(await Q.json())}async function mw8($,Z={}){let Q=await fetch(lw8($,".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 xT1=L(()=>{uw8();xL()});import{join as cw8}from"path";async function IH5($){try{let Z=await bg0($,{signal:AbortSignal.timeout(VH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||ow1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function JG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function kH5($,Z){let Q=Ru($),Y=Z?.brand?.trim()||ow1(Q),X=m38(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=c38({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${JG(W)}</title>`,`<meta name="description" content="${JG(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="${JG(W)}" />`,`<meta property="og:description" content="${JG(K)}" />`,`<meta property="og:url" content="${JG(G)}" />`,`<meta property="og:image" content="${JG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${JG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${JG(W)}" />`,`<meta name="twitter:description" content="${JG(K)}" />`,`<meta name="twitter:image" content="${JG(H)}" />`,`<meta name="twitter:image:alt" content="${JG(F)}" />`,`<link rel="canonical" href="${JG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${JG(G)}.md" />`,`<link rel="icon" href="${JG(X)}" sizes="any" />`].join(`
|
|
4504
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class IT1{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:ZH5({...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:_s.object({session:_s.object({id:_s.string().min(1)}),transport:_s.object({type:_s.literal("webrtc"),sdp:_s.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var Bw8=L(()=>{kB()});var Dw8;var Lw8=L(()=>{Dw8=[{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 kT1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:lt$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:Dw8.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 Ow8=L(()=>{kB();Lw8()});import{z as pJ}from"zod";import{createHash as QH5,createHmac as YH5}from"crypto";class Cg0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=QH5("sha256").update(JSON.stringify(kT1($))).digest("hex"),this.conversationKey=YH5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Cg0({...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:$,...kT1(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 jw8=L(()=>{Ow8()});import{createHmac as XH5,timingSafeEqual as JH5}from"crypto";import{z as vs}from"zod";function Ew8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return XH5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function Pw8($,Z){let Q=Buffer.from(JSON.stringify(ww8.parse($))).toString("base64url");return`${Q}.${Ew8(Q,Z)}`}function zw8($,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(Ew8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!JH5(W,G))return null;try{let K=ww8.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 ww8;var Aw8=L(()=>{kB();ww8=vs.object({sessionId:vs.string().uuid(),organizationId:vs.string().min(1).max(256),userId:vs.string().min(1).max(256),threadId:vs.string().min(1).max(256),expiresAt:vs.number().int().positive()})});import{z as CT1}from"zod";function Tw8($,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 ST1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var ST1;var qw8=L(()=>{ST1=CT1.object({provider:CT1.enum(["elevenlabs","openai"]),model:CT1.string().trim().min(1).max(128)})});import{createHash as GH5}from"crypto";import{z as bs}from"zod";function xs($){return`user.${GH5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class vT1{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 Rw8.Kvm(_g0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:_g0.StorageType.Memory,ttl:Mw8.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=Tw8(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=Pw8(G,this.deps.secret),K=await this.kv(),H=xs(G),F=await K.get(H),U=F?.operation==="PUT"?Sg0.parse(F.json()):null,N=_T1.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:xs($)});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=zw8(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=xs(Q),J=await Y.get(X),G=J?.operation==="PUT"?Sg0.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,_T1.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=xs(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Sg0.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,_T1.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(xs($));if(Q?.operation==="PUT"&&Sg0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(xs($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var _g0,Rw8,Mw8,Sg0,_T1;var Vw8=L(()=>{B3();kB();Aw8();qw8();_g0=_(fH(),1),Rw8=_(vq(),1),Mw8=_(s2(),1),Sg0=bs.object({sessionId:bs.string().uuid(),expiresAt:bs.number(),connected:bs.boolean().optional(),conversation:ST1.optional(),characters:bs.number().int().nonnegative(),requests:bs.number().int().nonnegative()}),_T1=new TextEncoder});import{z as c1}from"zod";function YD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function OH5($){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 jH5($,Z,Q){try{return JSON.parse($)}catch{throw new Cw8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function wH5($){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:jH5(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 EH5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RN(Q.function.parameters):RN({type:"object",properties:{}});return[Q.function.name,r$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function PH5($){if(!$)return;return{openai:{response_format:$}}}function zH5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Iw8($,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 kw8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var WH5=256,KH5,HH5,FH5,UH5,NH5,BH5,DH5,LH5,Cw8,Sw8,_w8;var vw8=L(()=>{l4();H8();Ns();UU();KH5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),HH5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),FH5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(HH5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),UH5=c1.object({type:c1.literal("text")}),NH5=c1.object({type:c1.literal("json_object")}),BH5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),DH5=c1.union([UH5,NH5,BH5]),LH5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(FH5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(KH5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:DH5.optional(),user:c1.string().optional()});Cw8=class Cw8 extends Error{constructor($){super($);this.name="MessageConversionError"}};Sw8=new Z1;Sw8.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=LH5.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=OH5(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=wH5(J.messages),N=J.tools?EH5(J.tools):void 0,B=PH5(J.response_format),D=zH5(),O=Math.floor(Date.now()/1000);if(J.stream)return Bj($,async(j)=>{let w=Iw8(F,U,N,J,B,$.req.raw.signal);try{let E=Nt(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>=WH5)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:kw8(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=Iw8(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:kw8(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)}});_w8=Sw8});function AH5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function bw8(){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(!_5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(tA(U)!==J)continue;if(!AH5(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 xw8=L(()=>{H8();$X()});var vg0;var bT1=L(()=>{vg0={name:"decocms",version:"4.514.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 RH5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??qH5}}var fw8,qH5="https://ph.studio.decocms.com",yw8;var gw8=L(()=>{H8();R10();Qu();H9();u1();wo();Pz1();bT1();fw8=new Z1;fw8.get("/",($)=>{let Z={version:vg0.version,theme:YW$(),...BF().logo&&{logo:BF().logo},...fO()&&{internalUrl:A$$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&N2(),plansEnabled:B0().plansEnabled,auth:OF8(),posthog:RH5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:RU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yw8=fw8});import{z as R$}from"zod";var MH5,hw8;var uw8=L(()=>{MH5=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())}),hw8=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(MH5)})),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 lw8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${SK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function bg0($,Z={}){let Q=await fetch(lw8($,"",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 hw8.parse(await Q.json())}async function mw8($,Z={}){let Q=await fetch(lw8($,".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 xT1=L(()=>{uw8();xL()});import{join as cw8}from"path";async function IH5($){try{let Z=await bg0($,{signal:AbortSignal.timeout(VH5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||ow1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function JG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function kH5($,Z){let Q=Ru($),Y=Z?.brand?.trim()||ow1(Q),X=m38(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=c38({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${JG(W)}</title>`,`<meta name="description" content="${JG(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="${JG(W)}" />`,`<meta property="og:description" content="${JG(K)}" />`,`<meta property="og:url" content="${JG(G)}" />`,`<meta property="og:image" content="${JG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${JG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${JG(W)}" />`,`<meta name="twitter:description" content="${JG(K)}" />`,`<meta name="twitter:image" content="${JG(H)}" />`,`<meta name="twitter:image:alt" content="${JG(F)}" />`,`<link rel="canonical" href="${JG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${JG(G)}.md" />`,`<link rel="icon" href="${JG(X)}" sizes="any" />`].join(`
|
|
4505
4505
|
`)}function CH5($,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}
|
|
4506
4506
|
</head>`)}function dw8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Ru(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(cw8($,"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(SH5)}),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=Ru(Q.req.param("file").replace(/\.md$/,""));try{let X=await mw8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(_H5)});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=$?cw8($,"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 IH5(Ru(Y)),K=kH5(Y,W);return Q.html(CH5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var VH5=2500,SH5=1e4,_H5=1e4;var iw8=L(()=>{H8();xL();xT1();u1()});function xg0($,Z){return fetch(`${SK({})}${$}`,Z)}async function vH5($,Z){let Q=await bg0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function fH5($){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 bH5,xH5=8192,Lj,pw8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},nw8;var tw8=L(()=>{H8();QG();tK();xL();xT1();bH5=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/*",pw8);Lj.use("/suggest",pw8);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 vH5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Lj.post("/run",C6({maxSize:xH5,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}=fH5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await xg0("/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 xg0(`/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:bH5.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 xg0(`/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 xg0(`/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:[]})}});nw8=Lj});var yH5=1048576,fT1;var ow8=L(()=>{H8();QG();u1();Jz1();fT1=new Z1;fT1.post("/webhook",C6({maxSize:yH5,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(!kH8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=CH8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await SH8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as gH5}from"crypto";function lH5($,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 gH5(Buffer.from(X),Buffer.from(Y))}function mH5($,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 sw8($){let Z=new Z1;return Z.post("/webhook",C6({maxSize:hH5,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(!lH5(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"&&!uH5.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 p50().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=mH5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await cH5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function cH5($,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 U48(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var hH5=5242880,uH5;var rw8=L(()=>{H8();QG();SX();hQ();uH5=new Set(["check_suite","issue_comment"])});import{DBOS as gT1,SchedulerMode as dH5}from"@dbos-inc/dbos-sdk";async function pH5(){try{return await nH5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function nH5(){if(!i50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (XF1(),YF1)),Promise.resolve().then(() => (QF1(),ZF1))]),Q=await p50(),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=Ep$({sandboxes:J,pools:G,records:await Pp$(X,J,G),legacyPools:rC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await zp$(K,Ej0(X,new GJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:$S0}),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 tH5($,Z){let Q=await gT1.runStep(pH5,{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 aw8(){if(yT1)return;if(!B0().agentSandboxEnabled||!i50())return;yT1=gT1.registerWorkflow(tH5,{name:"sandboxCredentialPushWorkflow"}),gT1.registerScheduled(yT1,{name:"sandboxCredentialPushWorkflow",crontab:iH5,mode:dH5.ExactlyOncePerIntervalWhenActive})}var iH5="1,11,21,31,41,51 * * * *",yT1=null;var ew8=L(()=>{SG();Nw();iG1();ZS0();aC0();SX();u1()});function $E8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=L$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 ZE8=L(()=>{H8();Nw();CN1();MO()});function fg0(){try{return B0().jiraSettleSeconds*1000}catch{return $2}}function QE8($,Z){let Q=Z.windowMs??$2,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=oH5($,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 oH5($,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 hT1=L(()=>{gO();u1()});function YE8($){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 uT1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new ZQ(Z.siteUrl,Z.email,Z.apiToken),J=QE8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:fg0()});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:ez(N)})),H=YZ8(K)&&Z.boardId?QZ8(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=ZZ8(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await JH({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 lT1=L(()=>{HU();MO();ot();hT1()});import{DBOS as k2,SchedulerMode as sH5}from"@dbos-inc/dbos-sdk";function XE8($){cT1=$}function iT1(){if(!cT1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return cT1}function pT1(){let $=iT1();return new aO($.db,new GJ($.encryptionKey))}async function ZF5($){try{let Z=await pT1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await hJ(iT1().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 "-${aH5}m"`,W=0,K;for(let H=0;H<eH5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await uT1(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 QF5($,Z){let Q=await k2.runStep(()=>pT1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>k2.runStep(()=>ZF5(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 YF5($,Z){try{let Q=await pT1().getById($);if(!Q?.enabled)return"disabled";let Y=await hJ(iT1().db,Q.organizationId);if(!Y)return"disabled";let X=await uT1(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 XF5($,Z){await k2.sleep(fg0()+$F5),await k2.runStep(()=>YF5($,Z),{name:"settleJiraMove"})}async function JE8($,Z){if(!dT1)throw Error("[jira-trigger] settle workflow is not registered");await k2.startWorkflow(dT1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function GE8(){if(mT1)return;dT1=k2.registerWorkflow(XF5,{name:"jiraSettleWorkflow"}),mT1=k2.registerWorkflow(QF5,{name:"jiraTriggerSweepWorkflow"}),k2.registerScheduled(mT1,{name:"jiraTriggerSweepWorkflow",crontab:rH5,mode:sH5.ExactlyOncePerIntervalWhenActive})}var rH5="*/5 * * * *",aH5=20,eH5=5,$F5=5000,cT1=null,dT1=null,mT1=null;var nT1=L(()=>{Nw();nz();MO();hT1();lT1()});function WE8($){let Z=new aO($.db,new GJ($.encryptionKey)),Q=ZE($.db);async function Y(J,G){let W=YE8(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 JE8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",C6({maxSize:JF5}),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 JF5=1048576;var KE8=L(()=>{H8();QG();Nw();nT1();lT1();V00()});function HE8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var FE8,GF5,WF5,UE8;var NE8=L(()=>{H8();B3();ft();pi();FE8=new Z1,GF5=["range","if-none-match","if-modified-since"],WF5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];FE8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(fo($))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 VZ0(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 HE8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of GF5){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 WF5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),HE8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});UE8=FE8});var hQ0=y((ou)=>{var KF5=ou&&ou.__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]}),HF5=ou&&ou.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))KF5(Z,$,Q)};Object.defineProperty(ou,"__esModule",{value:!0});HF5(BG(),ou)});var LE8=y((BE8)=>{Object.defineProperty(BE8,"__esModule",{value:!0});BE8.version=void 0;BE8.version="3.4.0"});var wE8=y((XD)=>{var FF5=XD&&XD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(XD,"__esModule",{value:!0});XD.NodeTransport=XD.VERSION=void 0;XD.nodeResolveHost=OF5;var J9=hQ0(),UF5=V0("net"),tT1=V0("tls"),NF5=V0("path"),OE8=V0("fs"),BF5=FF5(V0("dns")),DF5=LE8();XD.VERSION=DF5.version;var LF5="nats.js";class jE8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=LF5,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,UF5.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,NF5.resolve)($),!(0,OE8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,OE8.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,tT1.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,tT1.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 tT1.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=jE8;function OF5($){let Z=(0,J9.deferred)();return BF5.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 TE8=y((AE8)=>{Object.defineProperty(AE8,"__esModule",{value:!0});AE8.connect=jF5;var EE8=wE8(),PE8=hQ0(),zE8=hQ0();function jF5($={}){if((0,zE8.hasWsProtocol)($))return Promise.reject(zE8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,PE8.setTransportFactory)({factory:()=>{return new EE8.NodeTransport},dnsResolveFn:EE8.nodeResolveHost}),PE8.NatsConnectionImpl.connect($)}});var qE8=y((Oj)=>{var EF5=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]}),PF5=Oj&&Oj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))EF5(Z,$,Q)};Object.defineProperty(Oj,"__esModule",{value:!0});Oj.connect=void 0;var zF5=TE8();Object.defineProperty(Oj,"connect",{enumerable:!0,get:function(){return zF5.connect}});PF5(hQ0(),Oj)});function VE8($){let Z=$?.connectFn??RF5,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:qF5,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(TF5,AF5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?yg0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?yg0.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=ME8.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 RF5($){return RE8.connect($)}var yg0,RE8,ME8,AF5=100,TF5=3000,qF5=3000;var IE8=L(()=>{p$();yg0=_(s2(),1),RE8=_(qE8(),1),ME8=_(fH(),1)});function gg0($,Z){return`${$}.${Z}`}class oT1{cache;constructor($){this.cache=eN({ttlMs:$?.ttlMs??MF5,maxSize:$?.maxSize??VF5})}async get($,Z){return this.cache.get(gg0($,Z))??null}async set($,Z,Q){this.cache.set(gg0($,Z),Q)}async invalidate($,Z){this.cache.delete(gg0($,Z)),this.cache.delete(gg0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var MF5=600000,VF5=5000;var kE8=()=>{};function hg0($,Z){return`${$}:${Z}`}function sT1($){let Z=eN({ttlMs:$?.ttlMs??IF5,maxSize:$?.maxSize??kF5}),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(CE8,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(hg0(K,H))},set(K,H,F){Z.set(hg0(K,H),F)},invalidate(K,H){Z.delete(hg0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(CE8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(hg0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var CE8="studio.ai-provider-keys.invalidate",IF5=30000,kF5=5000;var SE8=()=>{};class rT1{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 _E8=($)=>{let Z;return()=>Z??=$()},aT1,eT1;var vE8=L(()=>{b6();aT1=_E8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),eT1=_E8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function fF5($=fE8){return{name:hB,subjects:[`${zL1}.>`],storage:AU.StorageType.File,max_age:_F5,max_bytes:bF5,max_msgs_per_subject:xF5,discard:AU.DiscardPolicy.Old,retention:AU.RetentionPolicy.Limits,duplicate_window:vF5,num_replicas:$}}class yE8{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 bE8($){let Z=xE8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function uF5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,SF5().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 lF5($,Z){return $.info?.cluster?Z:1}function mF5($){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 $q1{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=fF5(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 $8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await AU.jetstreamManager($),X=lF5($,fE8);try{await Z(Y,X)}catch(J){if(X<=1||!mF5(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:tt});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=uF5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=C98(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=TL1(H,{runId:Z}),N=performance.now()-F;aT1().record(N),eT1().add(1,{"org.id":Y??"unknown"}),hF5?.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?bE8(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(),gF5)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 $8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:bE8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:tt}),!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=TL1(Z,{runId:$,dedup:Q});aT1().record(performance.now()-X),eT1().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=k98({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"?AU.DeliverPolicy.New:AU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=az($),W;try{W=await $8(async()=>{return(await Y.consumers.get(hB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:tt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Ab0({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(wb0()).pipeThrough(Eb0()).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:az($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var AU,xE8,CF5=($)=>{let Z;return()=>Z??=$()},SF5,_F5=86400000000000,vF5=120000000000,bF5=4294967296,fE8,xF5=500000,yF5,gF5,hF5;var gE8=L(()=>{p$();qL1();Tb0();Pb0();b6();vE8();AU=_(fH(),1),xE8=_(s2(),1),SF5=CF5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),fE8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);yF5=process.env.STREAM_ENCODE_TRACE==="1",gF5=process.env.DECOPILOT_STREAM_TRACE==="1";hF5=yF5?new yE8:null});function ug0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,dU(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 hE8=L(()=>{q8()});class Zq1{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 cF5($,Z,Q={}){let Y=$.startsWith("thread:")?$U($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function Qq1($,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 d40($,Q,HD0(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=cF5(W,await qS0($,X),{flat:Vh(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 uE8=L(()=>{T5();gQ();hQ()});async function lE8($,Z,Q){let Y=Z.organizationId;if(!uJ(Z))return!1;if(!eh(Q))return!1;if(!await hd($,Y,p10))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"}}),J8(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var mE8=L(()=>{j3();v8();fX();It();WU();m5()});function sF5($){return $ instanceof RX}function cE8($,Z){return Z-$>=tF5}class Yq1{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??dF5;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??pF5,Q=this.options.itemIntervalMs??iF5,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.reapAbandonedThreads(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 reapAbandonedThreads($){try{let Z=await this.taskBoard.failAbandonedLinkedThreads($,new Date(Date.now()-TN1),{neverStarted:tB1,stalled:gD1});for(let Q of Z)console.warn(`[task-board-review-sweeper] failed abandoned 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()-oF5));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 pB1(this.taskBoard,X,Y),await nB1(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!==t$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await Qq1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!cE8(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(()=>{}),J8(J,F),await KU(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!==t$)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),sF5(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()+nF5)).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(()=>{}),J8(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(!cE8(BL(Q,Z.reviewCycleStartedAt),Date.now()))return;await KU($,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===t$,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 Qq1(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 St(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 lE8(G,Y,W))return!0;if(!X)return!1;if(await V48(G,Y))return!0;if(!mB1(W))return!1;return await Ct(G,Y,{previewMatchesHead:cB1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var dF5=60000,iF5=300000,pF5=50,nF5=60000,tF5=900000,oF5=120000;var dE8=L(()=>{v8();wv0();uE8();vO();xt();WU();mE8();m5();WW();oB1();hD1();hQ();a90()});async function iE8($,Z,Q=$2){return await nE8($,Z,Q,{})}async function pE8($,Z,Q,Y=$2){return await nE8($,Q,Y,{activityId:Z})}async function nE8($,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-rF5),settledBefore:new Date(Z-Q),limit:aF5,...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 eF5($.taskBoard,K,Q);for(let U of H){if(!JZ8(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 eF5($,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?GZ8(X,Q):Z.from}var rF5=1800000,aF5=200;var tE8=L(()=>{gO()});import{DBOS as C2,DBOSClient as $U5,SchedulerMode as ZU5}from"@dbos-inc/dbos-sdk";function oE8($){jj=$}async function XU5($){if(!jj)return 0;try{return await pE8(jj,$,Date.now(),jj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function JU5(){if(!jj)return 0;try{return await iE8(jj,Date.now(),jj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function GU5($){await C2.sleep((jj?.settleMs??$2)+YU5),await C2.runStep(()=>XU5($),{name:"settleBoardMove"})}async function WU5($,Z){let Q=await C2.runStep(()=>JU5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function rE8($){let Z=jj;if(!Z||!Jq1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!C2.isWithinWorkflow()){await C2.startWorkflow(Jq1,{workflowID:Q,queueName:y2})($.activityId);return}let Y=await $U5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:sE8,queueName:y2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function aE8(){if(Xq1)return;Jq1=C2.registerWorkflow(GU5,{name:sE8}),Xq1=C2.registerWorkflow(WU5,{name:"boardTransitionSweepWorkflow"}),C2.registerScheduled(Xq1,{name:"boardTransitionSweepWorkflow",crontab:QU5,mode:ZU5.ExactlyOncePerIntervalWhenActive})}var QU5="*/5 * * * *",YU5=2000,jj=null,sE8="boardTransitionSettleWorkflow",Jq1=null,Xq1=null;var eE8=L(()=>{gO();tE8()});import{readdir as KU5,rm as lg0}from"fs/promises";import{join as mg0}from"path";async function cg0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-HU5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await su($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await $P8($,X,Z);else if(!X.startsWith(".")){let J=mg0($,X),G=await su(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await $P8(J,K,Z)}if((await su(J)).length===0)await lg0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function $P8($,Z,Q){let Y=0,X=mg0($,Z),J=await su(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=mg0(X,W),H=await su(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=mg0(K,U);await lg0(B,{recursive:!0,force:!0}),Y++}}if((await su(K)).length===0)await lg0(K,{recursive:!0,force:!0})}if((await su(X)).length===0)await lg0(X,{recursive:!0,force:!0});return Y}async function su($){try{return(await KU5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var HU5=30;var Gq1=()=>{};import{DBOS as Wq1,SchedulerMode as FU5}from"@dbos-inc/dbos-sdk";async function NU5(){let $=[IH(),Jl(),ND()],Z=0;for(let Q of $)try{Z+=await cg0(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 BU5($,Z){await Wq1.runStep(()=>NU5(),{name:"monitoringRetention"})}function QP8(){if(ZP8)return;ZP8=!0;let $=Wq1.registerWorkflow(BU5,{name:"monitoringRetentionWorkflow"});Wq1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:UU5,mode:FU5.ExactlyOncePerIntervalWhenActive})}var UU5="23 4 * * *",ZP8=!1;var YP8=L(()=>{mW();Gq1()});function XP8($){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 xY.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=_P1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new MT(Q,void 0,X.boundAuth,Y.role,"self"),tz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var JP8=L(()=>{JX();bF()});function GP8(){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=uQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>uQ0(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}${uQ0(N.method)}${L9.reset}`}}catch{}}let W=uQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${uQ0(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=LU5(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=DU5(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,DU5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},LU5=($)=>{return L9[$]||L9.reset},uQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var WP8=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 UP8}from"crypto";import{mkdir as OU5,readdir as jU5,rm as KP8,stat as NP8}from"fs/promises";import{join as Hq1,relative as wU5}from"path";import{z as G8}from"zod";function DP8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Hq1(EU5,Z)}function LP8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function Kq1($,Z){let Q=DP8($),Y=LP8(Z);return Hq1(Q,Y)}function PU5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return UP8("sha256",X).update(J).digest("hex")}function FP8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=PU5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${LP8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function OP8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${UP8("md5","etag").update(Y).digest("hex")}"`}async function jP8($,Z,Q,Y,X){try{let J=await jU5($,{withFileTypes:!0});for(let G of J){let W=Hq1($,G.name),H=wU5(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 jP8(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 NP8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:OP8(W,F.mtime,F.size)})}catch{}}}}catch{}}function wP8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:G8.object({prefix:G8.string().optional(),maxKeys:G8.number().optional().default(1000),continuationToken:G8.string().optional(),delimiter:G8.string().optional()}),outputSchema:G8.object({objects:G8.array(G8.object({key:G8.string(),size:G8.number(),lastModified:G8.string(),etag:G8.string()})),nextContinuationToken:G8.string().optional(),isTruncated:G8.boolean(),commonPrefixes:G8.array(G8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=DP8(Y);await OU5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await jP8(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:G8.object({key:G8.string()}),outputSchema:G8.object({contentType:G8.string().optional(),contentLength:G8.number(),lastModified:G8.string(),etag:G8.string(),metadata:G8.record(G8.string(),G8.string()).optional()}),handler:async(X)=>{let J=X,G=Kq1(Y,J.key),W=await NP8(G);return{contentType:$21(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:OP8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:G8.object({key:G8.string(),expiresIn:G8.number().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,HP8);return{url:FP8(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:G8.object({key:G8.string(),expiresIn:G8.number().optional(),contentType:G8.string().optional()}),outputSchema:G8.object({url:G8.string(),expiresIn:G8.number()}),handler:async(X)=>{let J=X,G=iO(J.expiresIn,HP8);return{url:FP8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:G8.object({key:G8.string()}),outputSchema:G8.object({success:G8.boolean(),key:G8.string()}),handler:async(X)=>{let J=X,G=Kq1(Y,J.key);try{return await KP8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:G8.object({keys:G8.array(G8.string()).max(1000)}),outputSchema:G8.object({deleted:G8.array(G8.string()),errors:G8.array(G8.object({key:G8.string(),message:G8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=Kq1(Y,K);try{await KP8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function Fq1($,Z,Q){let Y=wP8(Z,Q),X=new OE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:SZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:G8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:G8.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),DH(X,J,$,"mcp:dev-assets")}async function EP8($,Z,Q,Y){let J=wP8(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 EU5="./data/assets",HP8=3600,BP8,PP8;var zP8=L(()=>{u1();Jo();H8();VH0();Xo();NJ();pO();Py0();BP8=new Z1;BP8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return Fq1($.req.raw,Z,Y)});PP8=BP8});var AP8={};O6(AP8,{mountDevRoutes:()=>zU5});function zU5($,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 Fq1(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 EP8(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",PP8);let Q=new Z1;Q.use("*",wU({mountPath:"/api/dev-assets"})),Q.route("/",Ey0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var TP8=L(()=>{H8();pz1();Py0();zP8()});var vP8={};O6(vP8,{watchHandler:()=>_P8,resolveVoiceSigningSecret:()=>kP8,resolveCorsOrigin:()=>CP8,isSsoExemptPath:()=>IP8,isAllowedOAuthRedirectUri:()=>SP8,createApp:()=>_U5});import{readFileSync as AU5}from"fs";import{randomBytes as TU5}from"crypto";import{PrometheusSerializer as qU5}from"@opentelemetry/exporter-prometheus";import{DBOS as JD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as VU5,oAuthProtectedResourceMetadata as IU5}from"better-auth/plugins";async function RU5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,RP8(qP8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),RP8(qP8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function RP8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function IP8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Zy0}/`)||$.startsWith(`${of0}/`)}function kP8($){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)"),TU5(32).toString("base64")}function CP8($,{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 SP8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function _U5($={}){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 oT1,K,H,F,U=null;if($.disableNats)K=sT1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new eZ0,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=VE8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=AU5(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=sZ1()?new bZ1({getJetStream:()=>U.getJetStream(),selfListVersion:vg0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new P71({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let j1=new $u(fB1,{getJetStream:()=>U.getJetStream()}),b$=new $u(e90,{getJetStream:()=>U.getJetStream()});j1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:j1,cards:b$};let a$=new Wj1({getJetStream:()=>U.getJetStream()});a$.init().catch(()=>{}),G=a$,K=sT1({getConnection:()=>U.getConnection()}),H=new rT1({getConnection:()=>U.getConnection()}),F=new $q1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),rH8(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)}),a$.init().catch((B8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",B8)}),K.start(),n2$(()=>U.getConnection()),F.init().catch((B8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",B8)})})}if(S2)await S2();xZ1(Y),A71(X),q71(()=>U?.getConnection()??null),yB1(J),Kj1(G);let B={storage:new tm(Z.db),sseHub:I6,onThreadFinished:async(F0,G0)=>vt(new jW(Z.db),F0,G0,new CG(Z.db))},D=new mD1(B),O=new k70(Z.db),j=new Zq1(O);j.start(),BZ8(H),H.start((F0)=>{Kb0(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;uz1(w),U?.onReady(()=>uz1(w)),mj1(w),U?.onReady(()=>mj1(w)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),S2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),jU8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),t2$(),G.teardown(),xZ1(null),A71(null),q71(null),yB1(null),Kj1(null)};let E=new Z1;if(E.use("*",Xj1({enabled:(F0)=>xo(F0,"debug")==="1"})),E.use("*",Uh0),E.use("/*",pH8({origin:(F0,G0)=>CP8(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("*",GP8());E.use("*",async(F0,G0)=>{if(await G0(),is(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 RU5(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 Lh0.collect(),P0=MU5.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(!kU5.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",yw8),E.route("/api/_reports",nw8),E.route("/api/_stripe",fT1),E.route("/api/_github",sw8({taskBoard:()=>l,contextFactory:()=>b})),E.route("/api/_git",oo);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",WE8(T)),E.route("/api/_jira",$E8(T)),E.route("/report",dw8($.clientDir)),E.route("/api/auth/custom",jF8),E.all("/api/auth/admin/*",XU8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=nW8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",d70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",d70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",R70),E.route("/",aW8()),E.use("/oauth-proxy/:connectionId/*",d70),E.all("/oauth-proxy/:connectionId/*",MP8);let A=async(F0)=>{let P0=await CU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",d70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await SU5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=tH8({ttlMs:120000}),S=await pK8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Rj,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});xY.set(S),H$$({db:Z.db,baseUrl:B5()}),nK8({db:Z.db}),rK8({db:Z.db}),qH8({db:Z.db}),_H8({db:Z.db}),XE8({db:Z.db,encryptionKey:B0().encryptionKey}),E88({db:Z.db}),gH8({db:Z.db}),r88({db:Z.db});let V=ZE(Z.db),v=new I00(Z.db),b=XP8({db:Z.db});eL1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>hJ(Z.db,F0),systemDatabaseUrl:g10(B0().databaseUrl,B0().databasePgSsl)}),fL1({systemDatabaseUrl:g10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}}),CL1({dispatchRunFn:A98,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:I6}});let h=new tm(Z.db),l=new jW(Z.db),d=new CG(Z.db),W0=new Yq1(l,b,d);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=S2;S2=async()=>{await F0?.(),W0.dispose()}}oE8({automations:V,taskBoard:l,fire:JH,systemDatabaseUrl:g10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),I88(rE8),c98({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await VP8.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(ug0(I6,G0,F0,P0),P0)await vt(l,F0,G0,d);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return ug0(I6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let j1=await h.markRunFailed(F0,G0,P0,z0);if(ug0(I6,G0,F0,j1),j1)await vt(l,F0,G0,d);return j1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,rz(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,dU(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})=>{m1.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})=>{m1.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)}}),i58({studioContextFactory:b,systemDatabaseUrl:g10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),QP8(),F$$(),oK8(),eK8(),MH8(),bH8(),GE8(),aE8(),q88(),uH8(),a88(),aw8();let I0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return XO1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new mo(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>JH({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[IH(),Jl(),ND()];for(let F0 of U0)cg0(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(Hh0(F0.req.path))return G0();let P0={measure:async(j1,b$)=>{BH(F0,j1);try{return await b$()}finally{RW(F0,j1)}}},z0=await xY.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((a$)=>console.error("[studio] revalidation cleanup error:",a$))}}),E.use("/api/:org/decopilot/*",yo),E.use("/api/:org/v1/*",yo),E.use("/api/:org/files/*",yo),E.use("*",async(F0,G0)=>{if(IP8(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("*",wU({mountPath:"/api/org-sso"})),t.route("/",Xy0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:v00,grouped:qT()})}),E.use("/mcp/*",async(F0,G0)=>{BH(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}=(TP8(),rg0(AP8));F0(E,r)}let $0=new Z1;$0.use("*",wU({mountPath:"/mcp"})),$0.route("/",Xx0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",wU({mountPath:"/mcp/self"})),X0.route("/",ry0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",wU({mountPath:"/mcp"})),h0.route("/",Wx0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{BH(F0,"llm_models");try{return await G0()}finally{RW(F0,"llm_models")}});let C0=TU8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",C0),E.route("/api",UE8);let H1=new Z1;H1.use("*",wU({mountPath:"/api"})),H1.route("/",Zg0()),E.route("/api",H1),E.route("/api",_w8);let m0=new Z1;m0.use("*",wU({mountPath:"/api"})),m0.route("/",Qg0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",m0);let j0=new k00(Z.db),E0=new Z1;E0.use("*",wU({mountPath:"/api"})),E0.route("/",Fy0()),E.route("/api",E0),E.route("/api/deco-sites",gU8());let n0=new Z1;n0.use("*",wU({mountPath:"/api/deco-sites"})),n0.route("/",Ny0()),E.route("/api/deco-sites",n0),E.route(Zy0,JU8()),E.route(TL8,ML8()),E.route("/api/_editor-resolve",bw8()),E.route(TF8,qF8()),E.route(of0,hF8());let O1=B0(),o0=O1.elevenlabsApiKey?new Cg0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,x0={openai:O1.openaiLiveApiKey?new IT1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new VT1(o0,()=>U?.getConnection()??null):null},d0=new vT1({adapter:o0,conversationAdapters:x0,defaults:O1,secret:kP8(O1),getConnection:()=>U?.getConnection()??null}),i0=Gw8({voiceSessions:d0,kvStorage:j0,runRegistry:D,streamBuffer:F,sseHub:I6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:bK(),mcpAuth:r,oauthProxyHandler:MP8,watchHandler:_P8,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(RU8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([I6.stop(),S2?Promise.resolve(S2()).finally(()=>{S2=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 EH$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await JD.registerQueue(HG,{partitionQueue:!0,concurrency:sL1,minPollingIntervalMs:rL1}),await JD.registerQueue(uW,{partitionQueue:!0,concurrency:bL1,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:d58}),await JD.registerQueue(f2,s88),await JD.registerQueue(y2),await nz1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>JD.deleteQueue(F0))),await aL1(Z.pool),QB$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),gd(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),U$$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var VP8,qP8=5000,S2=null,MP8=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 xY.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 ko(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=$P1(await W.json());if(!K)K=H.origin;let N=await M70(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=rW8(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(!SP8(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(mH8(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 L2(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})},_P8=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?Xv0: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()})})})},MU5,kU5,CU5=()=>IU5(B4),SU5=()=>VU5(B4);var bP8=L(()=>{p$();u1();N$$();sK8();$H8();VH8();xH8();G70();OB1();lH8();a90();H9();pi();q8();H8();if0();nH8();Jj1();tK();bF();Bz1();SG();b6();Q6();Pz1();RF8();uF8();Vz1();GU8();fz1();dz1();iz1();xK();V70();pz1();MU8();nf0();Ww8();Nw8();Bw8();jw8();Vw8();sz1();Jx0();$70();vw8();Kx0();IA1();xw8();MA1();gw8();iw8();tw8();ow8();rw8();ew8();ZE8();KE8();nT1();Q21();NE8();VA1();AA1();ZY0();IE8();bT1();TJ();vB0();B40();hB1();W40();H40();Fj1();kE8();SE8();lz1();gE8();rv0();hE8();He();_00();CO();m5();OP1();dE8();eE8();j3();nz();YP8();eF0();Gq1();mW();tz1();IO();IL1();eF0();bZ0();V00();j01();JP8();QE();WP8();Ns();Bz1();Mt();it();Hb0();VP8=_(fH(),1);MU5=new qU5,kU5=new Set([HG,uW,FD,UD,qj,f2])});var gP8={};O6(gP8,{resolveClientDir:()=>hU5,resolveAssetPathWithTraversalCheck:()=>yP8,isPathWithinDirectory:()=>fP8,createAssetHandler:()=>uU5});import{resolve as lQ0,dirname as vU5,join as bU5,extname as xU5,basename as fU5,sep as xP8}from"path";function yU5($,Z){if($===Z||fU5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${xP8}assets${xP8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function fP8($,Z){let Q=lQ0(Z),Y=lQ0($);return Y===Q||Y.startsWith(Q+"/")}function yP8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=lQ0(Z,Q);if(!fP8(Y,Z))return null;return Y}function hU5($,Z="../client"){let Q=new URL($),Y=vU5(Q.pathname);return lQ0(Y,Z)}function uU5($={}){let{env:Z="production",clientDir:Q=gU5,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=yP8({requestPath:W,clientDir:Q});if(!K)return null;let H=bU5(K,"index.html"),F=lQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(xU5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:yU5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var gU5="./dist/client";var hP8=()=>{};var uP8={};O6(uP8,{tryUpgradePreviewWs:()=>nU5,tryHandlePreviewHttp:()=>pU5,previewWebSocketHandler:()=>tU5,parsePreviewBaseDomain:()=>iU5,isPreviewWsData:()=>dg0,extractHandleFromHost:()=>Uq1});function cU5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function dU5(){return new Response(mU5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function iU5($){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 Uq1($,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 pU5($,Z){let Q=Uq1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return cQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(_n)&&cU5($))return dU5();return X.headers.delete(_n),X}function cQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function dg0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function nU5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=Uq1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return cQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return cQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return cQ0(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 cQ0(426,"upgrade failed");return}function mQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var lU5=256,mU5='<!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>',tU5;var lP8=L(()=>{g50();tU5={open($){let Z=$.data;if(!dg0(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)}`),mQ0($,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)=>{mQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{mQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!dg0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=lU5){mQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!dg0(Z))return;mQ0($,Z,1000,"")}}});p$();var qq1="14";function Rq1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qq1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}p$();import Jz8 from"pg";var Mq1=8314027461559302n,Gz8=600000,Wz8=500;async function Vq1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=Gz8}=$,X=$.log??((K)=>console.log(K)),J=new Jz8.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",[Mq1.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$(Wz8)}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)",[Mq1.toString()])}catch{}await J.end().catch(()=>{})}}u1();Zh0();b6();function J28(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function wh0($,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 HR1(){let $=J28();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:wh0($,"--cpu-prof-dir")??process.cwd(),name:wh0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(wh0($,"--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.'}))}zh0();var XY0;function wR1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=u2();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(()=>{}),XY0=setInterval(()=>void Z().catch(()=>{}),$),XY0.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(XY0)clearInterval(XY0)}}import*as K28 from"bun:jsc";var{startSamplingProfiler:H28,samplingProfilerStackTraces:F28}=K28;function ER1(){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{H28()}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=F28()?.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 PR1(){HR1();let $=[wR1(),jR1(),ER1()];return()=>{for(let Z of $)Z()}}import{existsSync as QN5}from"fs";var gW=B0();GR1();var{DBOS:dQ0,DBOSClient:oU5}=await import("@dbos-inc/dbos-sdk");function jq1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var sU5=[HG,uW,FD,UD,qj,f2,y2],rU5=gW.dispatchRole==="worker"?sU5:gW.dispatchRole==="api"?[]:void 0;dQ0.setConfig(Rq1({systemDatabaseUrl:jq1(gW.databaseUrl,gW.databasePgSsl),poolSize:gW.dbosPoolSize,executorID:gW.podName,listenQueues:rU5}));var{createApp:aU5}=await Promise.resolve().then(() => (bP8(),vP8)),{isServerPath:eU5}=await Promise.resolve().then(() => (ZY0(),cq1)),{createAssetHandler:$N5,resolveClientDir:pP8}=await Promise.resolve().then(() => (hP8(),gP8)),ZN5=gW.port,mP8=pP8(import.meta.url,"../client"),nP8=QN5(mP8)?mP8:pP8(import.meta.url,"../dist/client"),YN5=$N5({clientDir:nP8,isServerPath:eU5}),XN5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function JN5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(XN5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:GN5,tryHandlePreviewHttp:WN5,tryUpgradePreviewWs:KN5,previewWebSocketHandler:Nq1,isPreviewWsData:Bq1}=await Promise.resolve().then(() => (lP8(),uP8)),{getOrInitSharedRunner:tP8}=await Promise.resolve().then(() => (SX(),fn$)),oP8=GN5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),cP8={baseDomain:oP8??"",getRunner:tP8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())tP8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var ig0=await aU5({clientDir:nP8}),Dq1=process.env.DBOS_CONDUCTOR_KEY?.trim(),dP8=process.env.DBOS_CONDUCTOR_URL?.trim();await Vq1({databaseUrl:jq1(gW.databaseUrl,gW.databasePgSsl)},()=>dQ0.launch({...Dq1?{conductorKey:Dq1}:{},...Dq1&&dP8?{conductorURL:dP8}:{}}));console.log(`[dbos] application version: ${dQ0.applicationVersion}`);var Lq1=5,Oq1=0;await $8(async()=>{Oq1++;try{return await ig0.initDbos()}catch($){let Z=Oq1>=Lq1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${Oq1}/${Lq1} failed, ${Z}`,$),$}},{maxAttempts:Lq1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var HN5=Bun.serve({idleTimeout:0,port:ZN5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(oP8){let Y=await KN5($,Z,cP8);if(Y===void 0)return;if(Y)return Y;let X=await WN5($,cP8);if(X)return X}let Q=await YN5($);if(Q)return JN5(Q);return ig0.fetch($,{server:Z})},websocket:{open($){if(Bq1($.data))Nq1.open($)},message($,Z){if(Bq1($.data))Nq1.message($,Z)},close($){if(Bq1($.data))Nq1.close($)}},development:!1}),FN5=PR1();if(gW.localMode)Promise.resolve().then(() => (Qu(),dv0)).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(() => (Qu(),dv0));Z()}catch{}});var iP8=!1;async function UN5($){let Z;try{Z=await oU5.create({systemDatabaseUrl:jq1(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 pg0($){if(iP8)return;iP8=!0,console.log(`
|
|
4507
4507
|
[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{FN5(),ig0.markShuttingDown();let J=Iq1(gW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await HN5.stop(!0);let G=dQ0.executorID;await dQ0.shutdown(),await UN5(G),await ig0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>pg0("SIGTERM"));process.on("SIGINT",()=>pg0("SIGINT"));process.on("SIGHUP",()=>pg0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),pg0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,a0 as u}from"./index-BpE9ALKU.js";import{C as f}from"./index-BeRT15sS.js";import{a as x}from"./thread-route-Cqps-enJ.js";import{u as g}from"./use-task-metadata-CJXzsRtm.js";import{AppViewContent as h}from"./project-app-view-C0zebxGj.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./use-panel-navigate-xzho_IdK.js";import"./use-project-scope-BL_T_B-0.js";import"./repository-binding-3oH3TnyD.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./thread-intent-BZm-EFCO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./ZoomOut-BaK1kO8c.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./XClose-BW8V9Mau.js";import"./tooltip-BVI2BtDO.js";import"./index-OmMe1wxV.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./tool-namespace-Cg8zLvjP.js";import"./use-mcp-tools-D4L1wGVI.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-CQ1qp5-9.js";import"./types-DGEWLhFA.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./location-V0VwTJTt.js";import"./task-route-7R43gp5A.js";import"./task-key-BCHdFiOO.js";import"./core.esm-DeTgmZgN.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-EK_tBR0R.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-6kVfawT3.js";import"./icon-button-B0NXCYZw.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-CXXzgfBx.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./track-9VatN5GC.js";import"./extract-connection-data-DCoskE6n.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function $o(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{$o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,b2 as b,u as g}from"./index-BpE9ALKU.js";import{C as j}from"./index-BeRT15sS.js";import{F as v,H as S}from"./file-share-button-CcxRIY2R.js";import{u as k,b as y,e as _}from"./use-org-fs-NBkzIlLN.js";import{S as w}from"./settings-tab-BvyLrsti.js";import{b as M}from"./thread-route-Cqps-enJ.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./use-panel-navigate-xzho_IdK.js";import"./use-project-scope-BL_T_B-0.js";import"./repository-binding-3oH3TnyD.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./thread-intent-BZm-EFCO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./ZoomOut-BaK1kO8c.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./XClose-BW8V9Mau.js";import"./tooltip-BVI2BtDO.js";import"./index-OmMe1wxV.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./popover-c8imB8ZN.js";import"./index-DwjOqgVq.js";import"./extract-connection-data-DCoskE6n.js";import"./metadata-D72DunRR.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CmyFLmXV.js";import"./empty-state-BJ_BjmBA.js";import"./use-date-fns-locale-mo7KqOi2.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./alert-dialog-DGPL6Sul.js";import"./textarea-DIB5tw4r.js";import"./use-connection-C5PJp5ki.js";import"./use-debounced-autosave-B_tNUqHF.js";import"./add-connection-dialog-bYFWev7Q.js";import"./connection-card-Bf6UkDd9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-COuxoIPq.js";import"./form-6kVfawT3.js";import"./select-DbboDM2Y.js";import"./index-BdQq_4o_.js";import"./schema-CrOnn79s.js";import"./connection-form-helpers-B_xUWFll.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./collection-tabs-ClvmGOqD.js";import"./badge-dosB_-4a.js";import"./use-infinite-scroll-RN9jGFYf.js";import"./useSuspenseInfiniteQuery-BLScoOeo.js";import"./file-type-icon-Fh4lxmRD.js";import"./checkbox-CSo6M-6b.js";import"./search-input-CRQ84Rcs.js";import"./use-mcp-auth-status-aacZjJ6n.js";import"./types-DGEWLhFA.js";import"./use-mcp-tools-D4L1wGVI.js";import"./use-mcp-prompts-DNJWm8dw.js";import"./utils-CVEq3hMx.js";import"./switch-B3SL4byd.js";import"./scroll-area-D2nZWmkP.js";import"./use-main-schema-v8-B2SCuhcn.js";import"./use-project-native-view-presence-B1sZ244h.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-D_kctJ5n.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DfS24tBi.js";import"./sections-QfQgZ0Fk.js";import"./format-time-Cq80KKvY.js";import"./use-copy-CHLOIJ7B.js";import"./virtual-mcp-BYkH2aU6.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLAtxBgC.js";import"./use-secrets-Fjq05jIs.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 er(){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{er as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as U,b as B,j as t,B as I,a5 as K,u as M}from"./index-BpE9ALKU.js";import{C as L}from"./index-BeRT15sS.js";import{T as R,a as $,c as A}from"./tooltip-BVI2BtDO.js";import{n as O}from"./ZoomOut-BaK1kO8c.js";import{s as V}from"./XClose-BW8V9Mau.js";import{F as E}from"./file-type-icon-Fh4lxmRD.js";import{a as q,F as D,f as G}from"./file-preview-DI0eRAl3.js";import{a as H}from"./use-thread-outputs-BRyva6jJ.js";import{a as J}from"./use-panel-navigate-xzho_IdK.js";import{S as Q}from"./settings-tab-BvyLrsti.js";import{b as W,a as X}from"./thread-route-Cqps-enJ.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./thread-intent-BZm-EFCO.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-project-scope-BL_T_B-0.js";import"./repository-binding-3oH3TnyD.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./index-OmMe1wxV.js";import"./use-org-fs-NBkzIlLN.js";import"./utils-DZ5cUVcx.js";import"./editor-CT6aDT4h.js";import"./markdown-Dej9RATS.js";import"./use-copy-CHLOIJ7B.js";import"./location-V0VwTJTt.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./index-DwjOqgVq.js";import"./extract-connection-data-DCoskE6n.js";import"./metadata-D72DunRR.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";import"./build-improve-prompt-doc-CmyFLmXV.js";import"./empty-state-BJ_BjmBA.js";import"./use-date-fns-locale-mo7KqOi2.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./alert-dialog-DGPL6Sul.js";import"./textarea-DIB5tw4r.js";import"./use-connection-C5PJp5ki.js";import"./use-debounced-autosave-B_tNUqHF.js";import"./add-connection-dialog-bYFWev7Q.js";import"./connection-card-Bf6UkDd9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-COuxoIPq.js";import"./form-6kVfawT3.js";import"./select-DbboDM2Y.js";import"./index-BdQq_4o_.js";import"./schema-CrOnn79s.js";import"./connection-form-helpers-B_xUWFll.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./collection-tabs-ClvmGOqD.js";import"./badge-dosB_-4a.js";import"./use-infinite-scroll-RN9jGFYf.js";import"./useSuspenseInfiniteQuery-BLScoOeo.js";import"./checkbox-CSo6M-6b.js";import"./search-input-CRQ84Rcs.js";import"./use-mcp-auth-status-aacZjJ6n.js";import"./types-DGEWLhFA.js";import"./use-mcp-tools-D4L1wGVI.js";import"./use-mcp-prompts-DNJWm8dw.js";import"./utils-CVEq3hMx.js";import"./switch-B3SL4byd.js";import"./popover-c8imB8ZN.js";import"./scroll-area-D2nZWmkP.js";import"./use-main-schema-v8-B2SCuhcn.js";import"./use-project-native-view-presence-B1sZ244h.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-D_kctJ5n.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DfS24tBi.js";import"./sections-QfQgZ0Fk.js";import"./format-time-Cq80KKvY.js";import"./virtual-mcp-BYkH2aU6.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLAtxBgC.js";import"./use-secrets-Fjq05jIs.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function Y(r){const e=U.c(60),{file:o,onClose:v}=r,i=B();let l,m;e[0]!==o.filename?(l=t.jsx(E,{filename:o.filename,className:"h-4.5 w-3.5 shrink-0"}),m=t.jsx("span",{className:"truncate text-xs font-medium text-foreground",children:o.filename}),e[0]=o.filename,e[1]=l,e[2]=m):(l=e[1],m=e[2]);let k;e[3]!==o.size?(k=G(o.size),e[3]=o.size,e[4]=k):k=e[4];let x;e[5]!==k?(x=t.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:k}),e[5]=k,e[6]=x):x=e[6];let a;e[7]!==l||e[8]!==m||e[9]!==x?(a=t.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-2",children:[l,m,x]}),e[7]=l,e[8]=m,e[9]=x,e[10]=a):a=e[10];let u;e[11]!==i?(u=i("mainPanelTabs.fileTab.download"),e[11]=i,e[12]=u):u=e[12];let b;e[13]===Symbol.for("react.memo_cache_sentinel")?(b=t.jsx(O,{size:14}),e[13]=b):b=e[13];let p;e[14]!==o.downloadUrl||e[15]!==o.filename?(p=t.jsx("a",{href:o.downloadUrl,download:o.filename,children:b}),e[14]=o.downloadUrl,e[15]=o.filename,e[16]=p):p=e[16];let n;e[17]!==u||e[18]!==p?(n=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":u,asChild:!0,children:p})}),e[17]=u,e[18]=p,e[19]=n):n=e[19];let j;e[20]!==i?(j=i("mainPanelTabs.fileTab.download"),e[20]=i,e[21]=j):j=e[21];let s;e[22]!==j?(s=t.jsx($,{side:"bottom",children:j}),e[22]=j,e[23]=s):s=e[23];let f;e[24]!==s||e[25]!==n?(f=t.jsxs(A,{children:[n,s]}),e[24]=s,e[25]=n,e[26]=f):f=e[26];let c;e[27]!==i?(c=i("mainPanelTabs.fileTab.openInNewTab"),e[27]=i,e[28]=c):c=e[28];let d;e[29]!==o.downloadUrl?(d=()=>window.open(o.downloadUrl,"_blank","noopener"),e[29]=o.downloadUrl,e[30]=d):d=e[30];let T;e[31]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx(K,{size:14}),e[31]=T):T=e[31];let h;e[32]!==c||e[33]!==d?(h=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":c,onClick:d,children:T})}),e[32]=c,e[33]=d,e[34]=h):h=e[34];let g;e[35]!==i?(g=i("mainPanelTabs.fileTab.openInNewTab"),e[35]=i,e[36]=g):g=e[36];let w;e[37]!==g?(w=t.jsx($,{side:"bottom",children:g}),e[37]=g,e[38]=w):w=e[38];let y;e[39]!==h||e[40]!==w?(y=t.jsxs(A,{children:[h,w]}),e[39]=h,e[40]=w,e[41]=y):y=e[41];let C;e[42]!==i?(C=i("mainPanelTabs.fileTab.close"),e[42]=i,e[43]=C):C=e[43];let S;e[44]===Symbol.for("react.memo_cache_sentinel")?(S=t.jsx(V,{size:14}),e[44]=S):S=e[44];let N;e[45]!==v||e[46]!==C?(N=t.jsx(R,{asChild:!0,children:t.jsx(I,{variant:"ghost",size:"icon","aria-label":C,onClick:v,children:S})}),e[45]=v,e[46]=C,e[47]=N):N=e[47];let P;e[48]!==i?(P=i("mainPanelTabs.fileTab.close"),e[48]=i,e[49]=P):P=e[49];let _;e[50]!==P?(_=t.jsx($,{side:"bottom",children:P}),e[50]=P,e[51]=_):_=e[51];let z;e[52]!==N||e[53]!==_?(z=t.jsxs(A,{children:[N,_]}),e[52]=N,e[53]=_,e[54]=z):z=e[54];let F;return e[55]!==f||e[56]!==y||e[57]!==z||e[58]!==a?(F=t.jsxs("div",{className:"flex h-9 shrink-0 items-center gap-1 border-b border-border/60 px-2",children:[a,f,y,z]}),e[55]=f,e[56]=y,e[57]=z,e[58]=a,e[59]=F):F=e[59],F}function Z(r){const e=U.c(31),{fileKey:o,taskId:v}=r,i=B(),{closePanel:l}=J(),{data:m,isPending:k}=H(v);let x;e[0]!==o||e[1]!==m?(x=m?.find(s=>s.key===o)??null,e[0]=o,e[1]=m,e[2]=x):x=e[2];const a=x;let u;e[3]!==l?(u=()=>l(),e[3]=l,e[4]=u):u=e[4];const b=u;if(!a){if(k){let w;return e[5]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx("div",{className:"h-full w-full bg-background",children:t.jsx(q,{})}),e[5]=w):w=e[5],w}let s;e[6]!==o?(s=o.split("/").pop()??o,e[6]=o,e[7]=s):s=e[7];let f;e[8]!==s?(f=t.jsx(E,{filename:s,className:"h-7.5 w-6"}),e[8]=s,e[9]=f):f=e[9];let c;e[10]!==i?(c=i("mainPanelTabs.fileTab.fileNotAvailable"),e[10]=i,e[11]=c):c=e[11];let d;e[12]!==c?(d=t.jsx("span",{className:"text-sm text-muted-foreground",children:c}),e[12]=c,e[13]=d):d=e[13];let T;e[14]!==i?(T=i("mainPanelTabs.fileTab.close"),e[14]=i,e[15]=T):T=e[15];let h;e[16]!==b||e[17]!==T?(h=t.jsx(I,{variant:"ghost",size:"sm",onClick:b,children:T}),e[16]=b,e[17]=T,e[18]=h):h=e[18];let g;return e[19]!==f||e[20]!==d||e[21]!==h?(g=t.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-2 bg-background",children:[f,d,h]}),e[19]=f,e[20]=d,e[21]=h,e[22]=g):g=e[22],g}let p;e[23]!==a||e[24]!==b?(p=t.jsx(Y,{file:a,onClose:b}),e[23]=a,e[24]=b,e[25]=p):p=e[25];let n;e[26]!==a?(n=t.jsx("div",{className:"relative min-h-0 flex-1",children:t.jsx(D,{file:a})}),e[26]=a,e[27]=n):n=e[27];let j;return e[28]!==p||e[29]!==n?(j=t.jsxs("div",{className:"flex h-full w-full flex-col bg-background",children:[p,n]}),e[28]=p,e[29]=n,e[30]=j):j=e[30],j}function ee(){const r=U.c(5);let e;r[0]===Symbol.for("react.memo_cache_sentinel")?(e={strict:!1},r[0]=e):e=r[0];const o=M(e),v=W(),i=X(),l="key"in o&&typeof o.key=="string"?o.key:void 0;let m;return r[1]!==i||r[2]!==l||r[3]!==v?(m=l?t.jsx(Z,{fileKey:l,taskId:i},l):t.jsx(Q,{virtualMcpId:v}),r[1]=i,r[2]=l,r[3]=v,r[4]=m):m=r[4],m}function Ri(){const r=U.c(1);let e;return r[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(L.Content,{children:t.jsx(ee,{})}),r[0]=e):e=r[0],e}export{Ri as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as E,a2 as F,o as I,K as P,m as N,ap as S,e0 as b,b as v,aa as g,u as _,j as u}from"./index-BpE9ALKU.js";import{C}from"./index-BeRT15sS.js";import{C as h,L as j,p as L}from"./context-shell-CMaJQRGG.js";import{c as O,d as R,H as V,e as M}from"./location-V0VwTJTt.js";import{m as D}from"./use-org-fs-NBkzIlLN.js";import{u as q}from"./use-project-scope-BL_T_B-0.js";import{V as w}from"./index-DwjOqgVq.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./thread-route-Cqps-enJ.js";import"./use-panel-navigate-xzho_IdK.js";import"./thread-intent-BZm-EFCO.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./ZoomOut-BaK1kO8c.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./XClose-BW8V9Mau.js";import"./tooltip-BVI2BtDO.js";import"./index-OmMe1wxV.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-binding-3oH3TnyD.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./icon-button-B0NXCYZw.js";import"./search-input-CRQ84Rcs.js";import"./search-toggle-DJe6aOx6.js";import"./alert-dialog-DGPL6Sul.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./use-org-repo-syncs-DJQ1Emm8.js";import"./textarea-DIB5tw4r.js";import"./markdown-Dej9RATS.js";import"./use-copy-CHLOIJ7B.js";import"./file-share-button-CcxRIY2R.js";import"./popover-c8imB8ZN.js";import"./preview-dialog-MFyGLxAK.js";import"./preview-content-Cp2YMUQv.js";import"./file-preview-DI0eRAl3.js";import"./utils-DZ5cUVcx.js";import"./editor-CT6aDT4h.js";import"./file-type-icon-Fh4lxmRD.js";import"./folder-icon-DucOOoml.js";import"./empty-state-DjiRKbHi.js";import"./toggle-group-DwqOZ4MY.js";import"./active-indicator-CCMhAsc_.js";import"./format-time-Cq80KKvY.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-B20C_A4l.js";import"./use-members-B24eH4jf.js";import"./use-org-auth-client-BvXF9uek.js";import"./require-capability-DGAfsfb0.js";import"./access-gate-R9-SDKyD.js";import"./capability-load-error-DwR-XbDb.js";import"./sections-QfQgZ0Fk.js";import"./empty-state-BJ_BjmBA.js";import"./extract-connection-data-DCoskE6n.js";import"./metadata-D72DunRR.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";import"./build-improve-prompt-doc-CmyFLmXV.js";import"./use-date-fns-locale-mo7KqOi2.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./use-connection-C5PJp5ki.js";import"./use-debounced-autosave-B_tNUqHF.js";import"./add-connection-dialog-bYFWev7Q.js";import"./connection-card-Bf6UkDd9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-COuxoIPq.js";import"./form-6kVfawT3.js";import"./select-DbboDM2Y.js";import"./index-BdQq_4o_.js";import"./schema-CrOnn79s.js";import"./connection-form-helpers-B_xUWFll.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./collection-tabs-ClvmGOqD.js";import"./badge-dosB_-4a.js";import"./use-infinite-scroll-RN9jGFYf.js";import"./useSuspenseInfiniteQuery-BLScoOeo.js";import"./checkbox-CSo6M-6b.js";import"./use-mcp-auth-status-aacZjJ6n.js";import"./types-DGEWLhFA.js";import"./use-mcp-tools-D4L1wGVI.js";import"./use-mcp-prompts-DNJWm8dw.js";import"./utils-CVEq3hMx.js";import"./switch-B3SL4byd.js";import"./scroll-area-D2nZWmkP.js";import"./use-main-schema-v8-B2SCuhcn.js";import"./use-project-native-view-presence-B1sZ244h.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-D_kctJ5n.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DfS24tBi.js";import"./virtual-mcp-BYkH2aU6.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLAtxBgC.js";import"./use-secrets-Fjq05jIs.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function A(t){const i=E.c(14),{org:o}=F(),r=I();let m;i[0]!==o.id||i[1]!==t?(m=P.projectFolderEnsure(o.id,t?.id??"",t?O(t):""),i[0]=o.id,i[1]=t,i[2]=m):m=i[2];let e;i[3]!==o.id||i[4]!==o.slug||i[5]!==t?.id||i[6]!==r?(e=async()=>{const l=await S(o.slug,"PROJECT_FOLDER_ENSURE",{id:t?.id??""});return l.created&&(D(r,o.id,V),b(r,o.id,"VIRTUAL_MCP")),l},i[3]=o.id,i[4]=o.slug,i[5]=t?.id,i[6]=r,i[7]=e):e=i[7];let s;i[8]!==t?(s=!!t&&!R(t),i[8]=t,i[9]=s):s=i[9];let p;i[10]!==m||i[11]!==e||i[12]!==s?(p={queryKey:m,queryFn:e,enabled:s,staleTime:Number.POSITIVE_INFINITY,gcTime:Number.POSITIVE_INFINITY,retry:!1},i[10]=m,i[11]=e,i[12]=s,i[13]=p):p=i[13],N(p)}function Mo(){const t=E.c(24),{project:i}=q(),o=v(),r=g();let m;t[0]===Symbol.for("react.memo_cache_sentinel")?(m={strict:!1},t[0]=m):m=t[0];const{section:e}=_(m);A(i);const s=i?.id??"pending";let p;t[1]!==i?(p=i?M(i):void 0,t[1]=i,t[2]=p):p=t[2];let l;t[3]!==i?.title||t[4]!==r||t[5]!==o?(l=r?o("sidebar.navDestinations.context"):i?.title??void 0,t[3]=i?.title,t[4]=r,t[5]=o,t[6]=l):l=t[6];const y=r?"dialog":void 0;let d;t[7]!==r||t[8]!==s||t[9]!==p||t[10]!==l||t[11]!==y?(d=u.jsx(j,{root:p,rootLabel:l,filePreview:y,context:r},s),t[7]=r,t[8]=s,t[9]=p,t[10]=l,t[11]=y,t[12]=d):d=t[12];const n=d;if(!r){let T;return t[13]!==n?(T=u.jsx(C.Content,{children:n}),t[13]=n,t[14]=T):T=t[14],T}let f;t[15]!==e?(f=L(e),t[15]=e,t[16]=f):f=t[16];const a=f;let c;t[17]!==a||t[18]!==n||t[19]!==i?(c=a==="files"?n:i?u.jsx(w,{virtualMcpId:i.id,contextSection:a}):null,t[17]=a,t[18]=n,t[19]=i,t[20]=c):c=t[20];let x;return t[21]!==a||t[22]!==c?(x=u.jsx(C.Content,{children:u.jsx(h,{scope:"project",section:a,children:c})}),t[21]=a,t[22]=c,t[23]=x):x=t[23],x}export{Mo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as e,u as n}from"./index-BpE9ALKU.js";import{C as c}from"./index-BeRT15sS.js";import{L as l}from"./preview-panel-D-U4T9gu.js";import{a as u}from"./use-panel-navigate-xzho_IdK.js";import{S as f}from"./settings-tab-BvyLrsti.js";import{b as h}from"./thread-route-Cqps-enJ.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./thread-intent-BZm-EFCO.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./ZoomOut-BaK1kO8c.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./XClose-BW8V9Mau.js";import"./tooltip-BVI2BtDO.js";import"./index-OmMe1wxV.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-project-scope-BL_T_B-0.js";import"./repository-binding-3oH3TnyD.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./preview-content-Cp2YMUQv.js";import"./icon-button-B0NXCYZw.js";import"./file-share-button-CcxRIY2R.js";import"./use-org-fs-NBkzIlLN.js";import"./popover-c8imB8ZN.js";import"./file-preview-DI0eRAl3.js";import"./utils-DZ5cUVcx.js";import"./editor-CT6aDT4h.js";import"./file-type-icon-Fh4lxmRD.js";import"./markdown-Dej9RATS.js";import"./use-copy-CHLOIJ7B.js";import"./location-V0VwTJTt.js";import"./index-DwjOqgVq.js";import"./extract-connection-data-DCoskE6n.js";import"./metadata-D72DunRR.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./build-improve-prompt-doc-CmyFLmXV.js";import"./empty-state-BJ_BjmBA.js";import"./use-date-fns-locale-mo7KqOi2.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./alert-dialog-DGPL6Sul.js";import"./textarea-DIB5tw4r.js";import"./use-connection-C5PJp5ki.js";import"./use-debounced-autosave-B_tNUqHF.js";import"./add-connection-dialog-bYFWev7Q.js";import"./connection-card-Bf6UkDd9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-COuxoIPq.js";import"./form-6kVfawT3.js";import"./select-DbboDM2Y.js";import"./index-BdQq_4o_.js";import"./schema-CrOnn79s.js";import"./connection-form-helpers-B_xUWFll.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./collection-tabs-ClvmGOqD.js";import"./badge-dosB_-4a.js";import"./use-infinite-scroll-RN9jGFYf.js";import"./useSuspenseInfiniteQuery-BLScoOeo.js";import"./checkbox-CSo6M-6b.js";import"./search-input-CRQ84Rcs.js";import"./use-mcp-auth-status-aacZjJ6n.js";import"./types-DGEWLhFA.js";import"./use-mcp-tools-D4L1wGVI.js";import"./use-mcp-prompts-DNJWm8dw.js";import"./utils-CVEq3hMx.js";import"./switch-B3SL4byd.js";import"./scroll-area-D2nZWmkP.js";import"./use-main-schema-v8-B2SCuhcn.js";import"./use-project-native-view-presence-B1sZ244h.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-D_kctJ5n.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DfS24tBi.js";import"./sections-QfQgZ0Fk.js";import"./format-time-Cq80KKvY.js";import"./virtual-mcp-BYkH2aU6.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLAtxBgC.js";import"./use-secrets-Fjq05jIs.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 Zr(){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{Zr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as u,aa as g,f as S,u as j,j as f,N as x,Y as h}from"./index-BpE9ALKU.js";import{C as _}from"./index-BeRT15sS.js";import{S as b}from"./settings-tab-BvyLrsti.js";import{b as y}from"./thread-route-Cqps-enJ.js";import{i as R}from"./sections-QfQgZ0Fk.js";import"./use-mobile-Tr1QHP7F.js";import"./use-sidebar-collapsed-DEH_3BJ7.js";import"./use-chat-layout-state-Bp6y46wP.js";import"./use-panel-navigate-xzho_IdK.js";import"./use-project-scope-BL_T_B-0.js";import"./repository-binding-3oH3TnyD.js";import"./use-mcp-client-J1ndEcf9.js";import"./auth-dECedNaO.js";import"./thread-intent-BZm-EFCO.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-D4CyjfYE.js";import"./task-board-BllghPg4.js";import"./schema-Cdnttv65.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-rZeVl9Rl.js";import"./AlertCircle-BKEHXsE7.js";import"./Tool01-BjWCTgWh.js";import"./ArrowUp-DfLaoCfv.js";import"./ArrowLeft-D81aL8fM.js";import"./LinkBroken01-CjyqnNbo.js";import"./ShoppingBag01-BvYm46M_.js";import"./ZoomOut-BaK1kO8c.js";import"./Building02-CfaCzC7T.js";import"./CheckCircle-pswqe0yQ.js";import"./ChevronUp-DtK5u9ST.js";import"./ChevronSelectorVertical-yLR6uZzh.js";import"./UserSquare-BX_UIOch.js";import"./Copy01-LCHR9m-G.js";import"./CreditCard01-DDybX_8i.js";import"./DotsVertical-Dl2HDAjP.js";import"./Image01-t87ZE04W.js";import"./Globe04-C3qOiXr7.js";import"./SwitchHorizontal01-BUQctc0G.js";import"./Key01-S4YXCnrO.js";import"./Link01-nrYS0m93.js";import"./Minus-Q9-Po73D.js";import"./Monitor01-BmtAT73A.js";import"./Sun-rxG-ROZD.js";import"./Play-B5do76Ow.js";import"./Plus-DEIwMEqz.js";import"./SearchMd-UGgqPivi.js";import"./Trash01-CIzl9L8e.js";import"./Upload01-BZdlKO8o.js";import"./User01-C-yKb_Na.js";import"./Users01-BAB4CQHt.js";import"./XClose-BW8V9Mau.js";import"./tooltip-BVI2BtDO.js";import"./index-OmMe1wxV.js";import"./toolbar-icon-button-B3HvaLAv.js";import"./shell-layout-o5EDGsgV.js";import"./avatar-Bwp-Xc5s.js";import"./use-clock-tick-CcmqI1TT.js";import"./command-YtmkYLwE.js";import"./index-BnQcNfAh.js";import"./integration-icon-Ilfqyxys.js";import"./project-icon-xn6KKGaE.js";import"./new-project-dialog-Doo7kyhT.js";import"./label-Byb6HWZH.js";import"./repository-import-picker-C-BHOdIZ.js";import"./use-navigate-to-agent-DF_GAhPU.js";import"./repository-picker-D2zUBg0A.js";import"./useInfiniteQuery-B6hNZdP6.js";import"./infiniteQueryObserver-CUzkqvrD.js";import"./collection-search-JLOqgXSU.js";import"./use-debounced-value-DRcqPkU3.js";import"./use-organization-settings-CvNS5uqj.js";import"./required-auth-layout-D4q3UHWX.js";import"./autosend-CUbKy0s-.js";import"./use-org-sso-D6QGk2qX.js";import"./sheet-IZSv9mMV.js";import"./resizable-D0sQwLi7.js";import"./index-DwjOqgVq.js";import"./extract-connection-data-DCoskE6n.js";import"./metadata-D72DunRR.js";import"./connection-CU2PwZyg.js";import"./url-slug-BxAIS32w.js";import"./chat-context-DGKtupvP.js";import"./use-decopilot-events-7DVNLqw5.js";import"./use-ai-providers-CwDx9RGv.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CmyFLmXV.js";import"./empty-state-BJ_BjmBA.js";import"./use-date-fns-locale-mo7KqOi2.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-oGpWuhVi.js";import"./mcp-oauth-BG-oWBlL.js";import"./alert-dialog-DGPL6Sul.js";import"./textarea-DIB5tw4r.js";import"./use-connection-C5PJp5ki.js";import"./use-debounced-autosave-B_tNUqHF.js";import"./add-connection-dialog-bYFWev7Q.js";import"./connection-card-Bf6UkDd9.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-COuxoIPq.js";import"./form-6kVfawT3.js";import"./select-DbboDM2Y.js";import"./index-BdQq_4o_.js";import"./schema-CrOnn79s.js";import"./connection-form-helpers-B_xUWFll.js";import"./authenticate-and-persist-oauth-BI5fpBCJ.js";import"./collection-tabs-ClvmGOqD.js";import"./badge-dosB_-4a.js";import"./use-infinite-scroll-RN9jGFYf.js";import"./useSuspenseInfiniteQuery-BLScoOeo.js";import"./file-type-icon-Fh4lxmRD.js";import"./use-org-fs-NBkzIlLN.js";import"./checkbox-CSo6M-6b.js";import"./search-input-CRQ84Rcs.js";import"./use-mcp-auth-status-aacZjJ6n.js";import"./types-DGEWLhFA.js";import"./use-mcp-tools-D4L1wGVI.js";import"./use-mcp-prompts-DNJWm8dw.js";import"./utils-CVEq3hMx.js";import"./switch-B3SL4byd.js";import"./popover-c8imB8ZN.js";import"./scroll-area-D2nZWmkP.js";import"./use-main-schema-v8-B2SCuhcn.js";import"./use-project-native-view-presence-B1sZ244h.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-D_kctJ5n.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DfS24tBi.js";import"./format-time-Cq80KKvY.js";import"./use-copy-CHLOIJ7B.js";import"./virtual-mcp-BYkH2aU6.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLAtxBgC.js";import"./use-secrets-Fjq05jIs.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function d(){const t=u.c(2),p=y();let r;return t[0]!==p?(r=f.jsx(b,{virtualMcpId:p}),t[0]=p,t[1]=r):r=t[1],r}function Xr(){const t=u.c(13),p=g();let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={strict:!1},t[0]=r):r=t[0];const{org:e,agentId:s}=S(r);let a;t[1]===Symbol.for("react.memo_cache_sentinel")?(a={strict:!1},t[1]=a):a=t[1];const{section:n}=j(a);if(p&&e&&s){let o;t[2]!==s||t[3]!==e?(o={org:e,agentId:s},t[2]=s,t[3]=e,t[4]=o):o=t[4];let i;t[5]!==n?(i=R(n)?n:"general",t[5]=n,t[6]=i):i=t[6];let m;t[7]!==i?(m={section:i},t[7]=i,t[8]=m):m=t[8];let l;return t[9]!==o||t[10]!==m?(l=f.jsx(x,{to:h.library,params:o,search:m,replace:!0}),t[9]=o,t[10]=m,t[11]=l):l=t[11],l}let c;return t[12]===Symbol.for("react.memo_cache_sentinel")?(c=f.jsx(_.Content,{children:f.jsx(d,{})}),t[12]=c):c=t[12],c}export{Xr as default};
|